summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflorian <florian@openbsd.org>2020-12-11 12:21:40 +0000
committerflorian <florian@openbsd.org>2020-12-11 12:21:40 +0000
commit853e076fc65da54682755bceb6978e3c5a7302b2 (patch)
tree4d39e7f8d078f6119ef080cd192278f191ddc365
parentMake the timer code independent of struct peer this way it can be used (diff)
downloadwireguard-openbsd-853e076fc65da54682755bceb6978e3c5a7302b2.tar.xz
wireguard-openbsd-853e076fc65da54682755bceb6978e3c5a7302b2.zip
sync to libunbound 1.13.0
Support for channel reuse of TCP and TLS (DoT) streams should improve latency when the DoT strategy is used in unwind.
-rw-r--r--sbin/unwind/libunbound/config.h6
-rw-r--r--sbin/unwind/libunbound/libunbound/context.c2
-rw-r--r--sbin/unwind/libunbound/libunbound/libunbound.c10
-rw-r--r--sbin/unwind/libunbound/libunbound/libworker.c2
-rw-r--r--sbin/unwind/libunbound/respip/respip.c6
-rw-r--r--sbin/unwind/libunbound/services/authzone.c2
-rw-r--r--sbin/unwind/libunbound/services/cache/infra.c28
-rw-r--r--sbin/unwind/libunbound/services/cache/infra.h2
-rw-r--r--sbin/unwind/libunbound/services/listen_dnsport.c54
-rw-r--r--sbin/unwind/libunbound/services/listen_dnsport.h6
-rw-r--r--sbin/unwind/libunbound/services/localzone.c2
-rw-r--r--sbin/unwind/libunbound/services/mesh.c59
-rw-r--r--sbin/unwind/libunbound/services/outside_network.c1089
-rw-r--r--sbin/unwind/libunbound/services/outside_network.h145
-rw-r--r--sbin/unwind/libunbound/services/rpz.c2
-rw-r--r--sbin/unwind/libunbound/util/config_file.c26
-rw-r--r--sbin/unwind/libunbound/util/config_file.h14
-rw-r--r--sbin/unwind/libunbound/util/configlexer.c5328
-rw-r--r--sbin/unwind/libunbound/util/configlexer.lex7
-rw-r--r--sbin/unwind/libunbound/util/configparser.h307
-rw-r--r--sbin/unwind/libunbound/util/configparser.y68
-rw-r--r--sbin/unwind/libunbound/util/data/msgencode.c3
-rw-r--r--sbin/unwind/libunbound/util/data/msgreply.h2
-rw-r--r--sbin/unwind/libunbound/util/edns.c73
-rw-r--r--sbin/unwind/libunbound/util/edns.h52
-rw-r--r--sbin/unwind/libunbound/util/fptr_wlist.c2
-rw-r--r--sbin/unwind/libunbound/util/iana_ports.inc1
-rw-r--r--sbin/unwind/libunbound/util/module.h4
-rw-r--r--sbin/unwind/libunbound/util/netevent.c537
-rw-r--r--sbin/unwind/libunbound/util/netevent.h44
-rw-r--r--sbin/unwind/libunbound/util/regional.c31
-rw-r--r--sbin/unwind/libunbound/util/regional.h13
-rw-r--r--sbin/unwind/libunbound/validator/val_secalgo.c2
33 files changed, 4712 insertions, 3217 deletions
diff --git a/sbin/unwind/libunbound/config.h b/sbin/unwind/libunbound/config.h
index 32998352bf5..5d9a6f43591 100644
--- a/sbin/unwind/libunbound/config.h
+++ b/sbin/unwind/libunbound/config.h
@@ -730,7 +730,7 @@
#define PACKAGE_NAME "unbound"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "unbound 1.12.0"
+#define PACKAGE_STRING "unbound 1.13.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "unbound"
@@ -739,7 +739,7 @@
#define PACKAGE_URL ""
/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.12.0"
+#define PACKAGE_VERSION "1.13.0"
/* default pidfile location */
#define PIDFILE ""
@@ -761,7 +761,7 @@
#define ROOT_CERT_FILE "/var/unbound/etc/icannbundle.pem"
/* version number for resource files */
-#define RSRC_PACKAGE_VERSION 1,12,0,0
+#define RSRC_PACKAGE_VERSION 1,13,0,0
/* Directory to chdir to */
#define RUN_DIR "/var/unbound/etc"
diff --git a/sbin/unwind/libunbound/libunbound/context.c b/sbin/unwind/libunbound/libunbound/context.c
index 713259c718c..cff2831a77c 100644
--- a/sbin/unwind/libunbound/libunbound/context.c
+++ b/sbin/unwind/libunbound/libunbound/context.c
@@ -80,7 +80,7 @@ context_finalize(struct ub_ctx* ctx)
return UB_INITFAIL;
if(!auth_zones_apply_cfg(ctx->env->auth_zones, cfg, 1, &is_rpz))
return UB_INITFAIL;
- if(!edns_tags_apply_cfg(ctx->env->edns_tags, cfg))
+ if(!edns_strings_apply_cfg(ctx->env->edns_strings, cfg))
return UB_INITFAIL;
if(!slabhash_is_size(ctx->env->msg_cache, cfg->msg_cache_size,
cfg->msg_cache_slabs)) {
diff --git a/sbin/unwind/libunbound/libunbound/libunbound.c b/sbin/unwind/libunbound/libunbound/libunbound.c
index 3922eb0417f..c9e24ba8d8f 100644
--- a/sbin/unwind/libunbound/libunbound/libunbound.c
+++ b/sbin/unwind/libunbound/libunbound/libunbound.c
@@ -154,8 +154,8 @@ static struct ub_ctx* ub_ctx_create_nopipe(void)
errno = ENOMEM;
return NULL;
}
- ctx->env->edns_tags = edns_tags_create();
- if(!ctx->env->edns_tags) {
+ ctx->env->edns_strings = edns_strings_create();
+ if(!ctx->env->edns_strings) {
auth_zones_delete(ctx->env->auth_zones);
edns_known_options_delete(ctx->env);
config_delete(ctx->env->cfg);
@@ -186,7 +186,7 @@ ub_ctx_create(void)
config_delete(ctx->env->cfg);
modstack_desetup(&ctx->mods, ctx->env);
edns_known_options_delete(ctx->env);
- edns_tags_delete(ctx->env->edns_tags);
+ edns_strings_delete(ctx->env->edns_strings);
free(ctx->env);
free(ctx);
errno = e;
@@ -199,7 +199,7 @@ ub_ctx_create(void)
config_delete(ctx->env->cfg);
modstack_desetup(&ctx->mods, ctx->env);
edns_known_options_delete(ctx->env);
- edns_tags_delete(ctx->env->edns_tags);
+ edns_strings_delete(ctx->env->edns_strings);
free(ctx->env);
free(ctx);
errno = e;
@@ -338,7 +338,7 @@ ub_ctx_delete(struct ub_ctx* ctx)
infra_delete(ctx->env->infra_cache);
config_delete(ctx->env->cfg);
edns_known_options_delete(ctx->env);
- edns_tags_delete(ctx->env->edns_tags);
+ edns_strings_delete(ctx->env->edns_strings);
auth_zones_delete(ctx->env->auth_zones);
free(ctx->env);
}
diff --git a/sbin/unwind/libunbound/libunbound/libworker.c b/sbin/unwind/libunbound/libunbound/libworker.c
index bd42462e1be..06cbb8869f6 100644
--- a/sbin/unwind/libunbound/libunbound/libworker.c
+++ b/sbin/unwind/libunbound/libunbound/libworker.c
@@ -238,7 +238,7 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb)
ports, numports, cfg->unwanted_threshold,
cfg->outgoing_tcp_mss, &libworker_alloc_cleanup, w,
cfg->do_udp || cfg->udp_upstream_without_downstream, w->sslctx,
- cfg->delay_close, cfg->tls_use_sni, NULL);
+ cfg->delay_close, cfg->tls_use_sni, NULL, cfg->udp_connect);
w->env->outnet = w->back;
if(!w->is_bg || w->is_bg_thread) {
lock_basic_unlock(&ctx->cfglock);
diff --git a/sbin/unwind/libunbound/respip/respip.c b/sbin/unwind/libunbound/respip/respip.c
index 6fa4f18851f..9ee098def82 100644
--- a/sbin/unwind/libunbound/respip/respip.c
+++ b/sbin/unwind/libunbound/respip/respip.c
@@ -914,7 +914,7 @@ respip_rewrite_reply(const struct query_info* qinfo,
int ret = 1;
struct ub_packed_rrset_key* redirect_rrset = NULL;
struct rpz* r;
- struct auth_zone* a;
+ struct auth_zone* a = NULL;
struct ub_packed_rrset_key* data = NULL;
int rpz_used = 0;
int rpz_log = 0;
@@ -1109,7 +1109,7 @@ respip_operate(struct module_qstate* qstate, enum module_ev event, int id,
qstate->return_msg && qstate->return_msg->rep) {
struct reply_info* new_rep = qstate->return_msg->rep;
struct ub_packed_rrset_key* alias_rrset = NULL;
- struct respip_action_info actinfo = {0};
+ struct respip_action_info actinfo = {0, 0, 0, 0, NULL, 0, NULL};
actinfo.action = respip_none;
if(!respip_rewrite_reply(&qstate->qinfo,
@@ -1170,7 +1170,7 @@ respip_merge_cname(struct reply_info* base_rep,
struct ub_packed_rrset_key* alias_rrset = NULL; /* ditto */
uint16_t tgt_rcode;
size_t i, j;
- struct respip_action_info actinfo = {0};
+ struct respip_action_info actinfo = {0, 0, 0, 0, NULL, 0, NULL};
actinfo.action = respip_none;
/* If the query for the CNAME target would result in an unusual rcode,
diff --git a/sbin/unwind/libunbound/services/authzone.c b/sbin/unwind/libunbound/services/authzone.c
index a26d1003abe..15be5d60c65 100644
--- a/sbin/unwind/libunbound/services/authzone.c
+++ b/sbin/unwind/libunbound/services/authzone.c
@@ -5387,6 +5387,7 @@ void auth_xfer_transfer_lookup_callback(void* arg, int rcode, sldns_buffer* buf,
verbose(VERB_ALGO, "auth zone %s host %s type %s transfer lookup has no answer", zname, xfr->task_transfer->lookup_target->host, (xfr->task_transfer->lookup_aaaa?"AAAA":"A"));
}
}
+ regional_free_all(temp);
} else {
if(verbosity >= VERB_ALGO) {
char zname[255+1];
@@ -6444,6 +6445,7 @@ void auth_xfer_probe_lookup_callback(void* arg, int rcode, sldns_buffer* buf,
verbose(VERB_ALGO, "auth zone %s host %s type %s probe lookup has no address", zname, xfr->task_probe->lookup_target->host, (xfr->task_probe->lookup_aaaa?"AAAA":"A"));
}
}
+ regional_free_all(temp);
} else {
if(verbosity >= VERB_ALGO) {
char zname[255+1];
diff --git a/sbin/unwind/libunbound/services/cache/infra.c b/sbin/unwind/libunbound/services/cache/infra.c
index c2484a9f1aa..2d16bcd6e40 100644
--- a/sbin/unwind/libunbound/services/cache/infra.c
+++ b/sbin/unwind/libunbound/services/cache/infra.c
@@ -244,6 +244,7 @@ infra_create(struct config_file* cfg)
return NULL;
}
infra->host_ttl = cfg->host_ttl;
+ infra->infra_keep_probing = cfg->infra_keep_probing;
infra_dp_ratelimit = cfg->ratelimit;
infra->domain_rates = slabhash_create(cfg->ratelimit_slabs,
INFRA_HOST_STARTSIZE, cfg->ratelimit_size,
@@ -297,6 +298,7 @@ infra_adjust(struct infra_cache* infra, struct config_file* cfg)
if(!infra)
return infra_create(cfg);
infra->host_ttl = cfg->host_ttl;
+ infra->infra_keep_probing = cfg->infra_keep_probing;
infra_dp_ratelimit = cfg->ratelimit;
infra_ip_ratelimit = cfg->ip_ratelimit;
maxmem = cfg->infra_cache_numhosts * (sizeof(struct infra_key)+
@@ -445,6 +447,7 @@ infra_host(struct infra_cache* infra, struct sockaddr_storage* addr,
if(e && ((struct infra_data*)e->data)->ttl < timenow) {
/* it expired, try to reuse existing entry */
int old = ((struct infra_data*)e->data)->rtt.rto;
+ time_t tprobe = ((struct infra_data*)e->data)->probedelay;
uint8_t tA = ((struct infra_data*)e->data)->timeout_A;
uint8_t tAAAA = ((struct infra_data*)e->data)->timeout_AAAA;
uint8_t tother = ((struct infra_data*)e->data)->timeout_other;
@@ -460,6 +463,7 @@ infra_host(struct infra_cache* infra, struct sockaddr_storage* addr,
if(old >= USEFUL_SERVER_TOP_TIMEOUT) {
((struct infra_data*)e->data)->rtt.rto
= USEFUL_SERVER_TOP_TIMEOUT;
+ ((struct infra_data*)e->data)->probedelay = tprobe;
((struct infra_data*)e->data)->timeout_A = tA;
((struct infra_data*)e->data)->timeout_AAAA = tAAAA;
((struct infra_data*)e->data)->timeout_other = tother;
@@ -482,7 +486,8 @@ infra_host(struct infra_cache* infra, struct sockaddr_storage* addr,
*edns_vs = data->edns_version;
*edns_lame_known = data->edns_lame_known;
*to = rtt_timeout(&data->rtt);
- if(*to >= PROBE_MAXRTO && rtt_notimeout(&data->rtt)*4 <= *to) {
+ if(*to >= PROBE_MAXRTO && (infra->infra_keep_probing ||
+ rtt_notimeout(&data->rtt)*4 <= *to)) {
/* delay other queries, this is the probe query */
if(!wr) {
lock_rw_unlock(&e->lock);
@@ -566,18 +571,27 @@ infra_rtt_update(struct infra_cache* infra, struct sockaddr_storage* addr,
struct lruhash_entry* e = infra_lookup_nottl(infra, addr, addrlen,
nm, nmlen, 1);
struct infra_data* data;
- int needtoinsert = 0;
+ int needtoinsert = 0, expired = 0;
int rto = 1;
+ time_t oldprobedelay = 0;
if(!e) {
if(!(e = new_entry(infra, addr, addrlen, nm, nmlen, timenow)))
return 0;
needtoinsert = 1;
} else if(((struct infra_data*)e->data)->ttl < timenow) {
+ oldprobedelay = ((struct infra_data*)e->data)->probedelay;
data_entry_init(infra, e, timenow);
+ expired = 1;
}
/* have an entry, update the rtt */
data = (struct infra_data*)e->data;
if(roundtrip == -1) {
+ if(needtoinsert || expired) {
+ /* timeout on entry that has expired before the timer
+ * keep old timeout from the function caller */
+ data->rtt.rto = orig_rtt;
+ data->probedelay = oldprobedelay;
+ }
rtt_lost(&data->rtt, orig_rtt);
if(qtype == LDNS_RR_TYPE_A) {
if(data->timeout_A < TIMEOUT_COUNT_MAX)
@@ -681,7 +695,12 @@ infra_get_lame_rtt(struct infra_cache* infra,
return 0;
host = (struct infra_data*)e->data;
*rtt = rtt_unclamped(&host->rtt);
- if(host->rtt.rto >= PROBE_MAXRTO && timenow < host->probedelay
+ if(host->rtt.rto >= PROBE_MAXRTO && timenow >= host->probedelay
+ && infra->infra_keep_probing) {
+ /* single probe, keep probing */
+ if(*rtt >= USEFUL_SERVER_TOP_TIMEOUT)
+ *rtt = USEFUL_SERVER_TOP_TIMEOUT-1000;
+ } else if(host->rtt.rto >= PROBE_MAXRTO && timenow < host->probedelay
&& rtt_notimeout(&host->rtt)*4 <= host->rtt.rto) {
/* single probe for this domain, and we are not probing */
/* unless the query type allows a probe to happen */
@@ -704,7 +723,8 @@ infra_get_lame_rtt(struct infra_cache* infra,
/* see if this can be a re-probe of an unresponsive server */
/* minus 1000 because that is outside of the RTTBAND, so
* blacklisted servers stay blacklisted if this is chosen */
- if(host->rtt.rto >= USEFUL_SERVER_TOP_TIMEOUT) {
+ if(host->rtt.rto >= USEFUL_SERVER_TOP_TIMEOUT ||
+ infra->infra_keep_probing) {
lock_rw_unlock(&e->lock);
*rtt = USEFUL_SERVER_TOP_TIMEOUT-1000;
*lame = 0;
diff --git a/sbin/unwind/libunbound/services/cache/infra.h b/sbin/unwind/libunbound/services/cache/infra.h
index e33f2a6c04e..14f97c4c64d 100644
--- a/sbin/unwind/libunbound/services/cache/infra.h
+++ b/sbin/unwind/libunbound/services/cache/infra.h
@@ -114,6 +114,8 @@ struct infra_cache {
struct slabhash* hosts;
/** TTL value for host information, in seconds */
int host_ttl;
+ /** the hosts that are down are kept probed for recovery */
+ int infra_keep_probing;
/** hash table with query rates per name: rate_key, rate_data */
struct slabhash* domain_rates;
/** ratelimit settings for domains, struct domain_limit_data */
diff --git a/sbin/unwind/libunbound/services/listen_dnsport.c b/sbin/unwind/libunbound/services/listen_dnsport.c
index 3a98c264297..d63c0e0aab0 100644
--- a/sbin/unwind/libunbound/services/listen_dnsport.c
+++ b/sbin/unwind/libunbound/services/listen_dnsport.c
@@ -43,6 +43,7 @@
# include <sys/types.h>
#endif
#include <sys/time.h>
+#include <limits.h>
#ifdef USE_TCP_FASTOPEN
#include <netinet/tcp.h>
#endif
@@ -81,9 +82,6 @@
/** number of queued TCP connections for listen() */
#define TCP_BACKLOG 256
-/** number of simultaneous requests a client can have */
-#define TCP_MAX_REQ_SIMULTANEOUS 32
-
#ifndef THREADS_DISABLED
/** lock on the counter of stream buffer memory */
static lock_basic_type stream_wait_count_lock;
@@ -533,7 +531,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
return -1;
}
}
-# elif defined(IP_DONTFRAG)
+# elif defined(IP_DONTFRAG) && !defined(__APPLE__)
+ /* the IP_DONTFRAG option if defined in the 11.0 OSX headers,
+ * but does not work on that version, so we exclude it */
int off = 0;
if (setsockopt(s, IPPROTO_IP, IP_DONTFRAG,
&off, (socklen_t)sizeof(off)) < 0) {
@@ -1244,8 +1244,9 @@ struct listen_dnsport*
listen_create(struct comm_base* base, struct listen_port* ports,
size_t bufsize, int tcp_accept_count, int tcp_idle_timeout,
int harden_large_queries, uint32_t http_max_streams,
- char* http_endpoint, struct tcl_list* tcp_conn_limit, void* sslctx,
- struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg)
+ char* http_endpoint, int http_notls, struct tcl_list* tcp_conn_limit,
+ void* sslctx, struct dt_env* dtenv, comm_point_callback_type* cb,
+ void *cb_arg)
{
struct listen_dnsport* front = (struct listen_dnsport*)
malloc(sizeof(struct listen_dnsport));
@@ -1295,15 +1296,19 @@ listen_create(struct comm_base* base, struct listen_port* ports,
http_max_streams, http_endpoint,
tcp_conn_limit, bufsize, front->udp_buff,
ports->ftype, cb, cb_arg);
- cp->ssl = sslctx;
+ if(http_notls && ports->ftype == listen_type_http)
+ cp->ssl = NULL;
+ else
+ cp->ssl = sslctx;
if(ports->ftype == listen_type_http) {
- if(!sslctx) {
- log_warn("HTTPS port configured, but no TLS "
+ if(!sslctx && !http_notls) {
+ log_warn("HTTPS port configured, but no TLS "
"tls-service-key or tls-service-pem "
"set");
}
#ifndef HAVE_SSL_CTX_SET_ALPN_SELECT_CB
- log_warn("Unbound is not compiled with an "
+ if(!http_notls)
+ log_warn("Unbound is not compiled with an "
"OpenSSL version supporting ALPN "
" (OpenSSL >= 1.0.2). This is required "
"to use DNS-over-HTTPS");
@@ -1402,6 +1407,7 @@ static int
resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addresses, int *ip_addresses_size)
{
struct ifaddrs *ifa;
+ void *tmpbuf;
int last_ip_addresses_size = *ip_addresses_size;
for(ifa = ifas; ifa != NULL; ifa = ifa->ifa_next) {
@@ -1466,10 +1472,12 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres
}
verbose(4, "interface %s has address %s", search_ifa, addr_buf);
- *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1));
- if(!*ip_addresses) {
+ tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1));
+ if(!tmpbuf) {
log_err("realloc failed: out of memory");
return 0;
+ } else {
+ *ip_addresses = tmpbuf;
}
(*ip_addresses)[*ip_addresses_size] = strdup(addr_buf);
if(!(*ip_addresses)[*ip_addresses_size]) {
@@ -1480,10 +1488,12 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres
}
if (*ip_addresses_size == last_ip_addresses_size) {
- *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1));
- if(!*ip_addresses) {
+ tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1));
+ if(!tmpbuf) {
log_err("realloc failed: out of memory");
return 0;
+ } else {
+ *ip_addresses = tmpbuf;
}
(*ip_addresses)[*ip_addresses_size] = strdup(search_ifa);
if(!(*ip_addresses)[*ip_addresses_size]) {
@@ -1804,8 +1814,7 @@ tcp_req_info_setup_listen(struct tcp_req_info* req)
if(!req->cp->tcp_is_reading)
wr = 1;
- if(req->num_open_req + req->num_done_req < TCP_MAX_REQ_SIMULTANEOUS &&
- !req->read_is_closed)
+ if(!req->read_is_closed)
rd = 1;
if(wr) {
@@ -2177,9 +2186,10 @@ int http2_submit_dns_response(struct http2_session* h2_session)
int ret;
nghttp2_data_provider data_prd;
char status[4];
- nghttp2_nv headers[2];
+ nghttp2_nv headers[3];
struct http2_stream* h2_stream = h2_session->c->h2_stream;
size_t rlen;
+ char rlen_str[32];
if(h2_stream->rbuffer) {
log_err("http2 submit response error: rbuffer already "
@@ -2198,6 +2208,8 @@ int http2_submit_dns_response(struct http2_session* h2_session)
}
rlen = sldns_buffer_remaining(h2_session->c->buffer);
+ snprintf(rlen_str, sizeof(rlen_str), "%u", (unsigned)rlen);
+
lock_basic_lock(&http2_response_buffer_count_lock);
if(http2_response_buffer_count + rlen > http2_response_buffer_max) {
lock_basic_unlock(&http2_response_buffer_count_lock);
@@ -2228,13 +2240,11 @@ int http2_submit_dns_response(struct http2_session* h2_session)
headers[1].valuelen = 23;
headers[1].flags = NGHTTP2_NV_FLAG_NONE;
- /*TODO be nice and add the content-length header
headers[2].name = (uint8_t*)"content-length";
headers[2].namelen = 14;
- headers[2].value =
- headers[2].valuelen =
+ headers[2].value = (uint8_t*)rlen_str;
+ headers[2].valuelen = strlen(rlen_str);
headers[2].flags = NGHTTP2_NV_FLAG_NONE;
- */
sldns_buffer_write(h2_stream->rbuffer,
sldns_buffer_current(h2_session->c->buffer),
@@ -2244,7 +2254,7 @@ int http2_submit_dns_response(struct http2_session* h2_session)
data_prd.source.ptr = h2_session;
data_prd.read_callback = http2_submit_response_read_callback;
ret = nghttp2_submit_response(h2_session->session, h2_stream->stream_id,
- headers, 2, &data_prd);
+ headers, 3, &data_prd);
if(ret) {
verbose(VERB_QUERY, "http2: set_stream_user_data failed, "
"error: %s", nghttp2_strerror(ret));
diff --git a/sbin/unwind/libunbound/services/listen_dnsport.h b/sbin/unwind/libunbound/services/listen_dnsport.h
index 4bbde0691fe..9d6ea2c33ad 100644
--- a/sbin/unwind/libunbound/services/listen_dnsport.h
+++ b/sbin/unwind/libunbound/services/listen_dnsport.h
@@ -159,6 +159,7 @@ int resolve_interface_names(struct config_file* cfg, char*** resif,
* @param harden_large_queries: whether query size should be limited.
* @param http_max_streams: maximum number of HTTP/2 streams per connection.
* @param http_endpoint: HTTP endpoint to service queries on
+ * @param http_notls: no TLS for http downstream
* @param tcp_conn_limit: TCP connection limit info.
* @param sslctx: nonNULL if ssl context.
* @param dtenv: nonNULL if dnstap enabled.
@@ -171,8 +172,9 @@ struct listen_dnsport*
listen_create(struct comm_base* base, struct listen_port* ports,
size_t bufsize, int tcp_accept_count, int tcp_idle_timeout,
int harden_large_queries, uint32_t http_max_streams,
- char* http_endpoint, struct tcl_list* tcp_conn_limit, void* sslctx,
- struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg);
+ char* http_endpoint, int http_notls, struct tcl_list* tcp_conn_limit,
+ void* sslctx, struct dt_env* dtenv, comm_point_callback_type* cb,
+ void *cb_arg);
/**
* delete the listening structure
diff --git a/sbin/unwind/libunbound/services/localzone.c b/sbin/unwind/libunbound/services/localzone.c
index 6aaf0c05518..cad46066334 100644
--- a/sbin/unwind/libunbound/services/localzone.c
+++ b/sbin/unwind/libunbound/services/localzone.c
@@ -157,7 +157,7 @@ local_zone_create(uint8_t* nm, size_t len, int labs,
z->namelen = len;
z->namelabs = labs;
lock_rw_init(&z->lock);
- z->region = regional_create_custom(sizeof(struct regional));
+ z->region = regional_create_nochunk(sizeof(struct regional));
if(!z->region) {
free(z);
return NULL;
diff --git a/sbin/unwind/libunbound/services/mesh.c b/sbin/unwind/libunbound/services/mesh.c
index 52ff97e4a2e..cd90509366f 100644
--- a/sbin/unwind/libunbound/services/mesh.c
+++ b/sbin/unwind/libunbound/services/mesh.c
@@ -1196,6 +1196,12 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
/* Copy the client's EDNS for later restore, to make sure the edns
* compare is with the correct edns options. */
struct edns_data edns_bak = r->edns;
+ /* briefly set the replylist to null in case the
+ * meshsendreply calls tcpreqinfo sendreply that
+ * comm_point_drops because of size, and then the
+ * null stops the mesh state remove and thus
+ * reply_list modification and accounting */
+ struct mesh_reply* rlist = m->reply_list;
/* examine security status */
if(m->s.env->need_to_validate && (!(r->qflags&BIT_CD) ||
m->s.env->cfg->ignore_cd) && rep &&
@@ -1218,15 +1224,21 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
r->h2_stream->mesh_state = NULL;
}
/* send the reply */
- /* We don't reuse the encoded answer if either the previous or current
- * response has a local alias. We could compare the alias records
- * and still reuse the previous answer if they are the same, but that
- * would be complicated and error prone for the relatively minor case.
- * So we err on the side of safety. */
- if(prev && prev_buffer && prev->qflags == r->qflags &&
+ /* We don't reuse the encoded answer if:
+ * - either the previous or current response has a local alias. We could
+ * compare the alias records and still reuse the previous answer if they
+ * are the same, but that would be complicated and error prone for the
+ * relatively minor case. So we err on the side of safety.
+ * - there are registered callback functions for the given rcode, as these
+ * need to be called for each reply. */
+ if(((rcode != LDNS_RCODE_SERVFAIL &&
+ !m->s.env->inplace_cb_lists[inplace_cb_reply]) ||
+ (rcode == LDNS_RCODE_SERVFAIL &&
+ !m->s.env->inplace_cb_lists[inplace_cb_reply_servfail])) &&
+ prev && prev_buffer && prev->qflags == r->qflags &&
!prev->local_alias && !r->local_alias &&
- prev->edns.edns_present == r->edns.edns_present &&
- prev->edns.bits == r->edns.bits &&
+ prev->edns.edns_present == r->edns.edns_present &&
+ prev->edns.bits == r->edns.bits &&
prev->edns.udp_size == r->edns.udp_size &&
edns_opt_list_compare(prev->edns.opt_list, r->edns.opt_list)
== 0) {
@@ -1236,22 +1248,26 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
sldns_buffer_write_at(r_buffer, 0, &r->qid, sizeof(uint16_t));
sldns_buffer_write_at(r_buffer, 12, r->qname,
m->s.qinfo.qname_len);
+ m->reply_list = NULL;
comm_point_send_reply(&r->query_reply);
+ m->reply_list = rlist;
} else if(rcode) {
m->s.qinfo.qname = r->qname;
m->s.qinfo.local_alias = r->local_alias;
if(rcode == LDNS_RCODE_SERVFAIL) {
if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s,
- rep, rcode, &r->edns, NULL, m->s.region))
+ rep, rcode, &r->edns, &r->query_reply, m->s.region))
r->edns.opt_list = NULL;
} else {
if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode,
- &r->edns, NULL, m->s.region))
+ &r->edns, &r->query_reply, m->s.region))
r->edns.opt_list = NULL;
}
error_encode(r_buffer, rcode, &m->s.qinfo, r->qid,
r->qflags, &r->edns);
+ m->reply_list = NULL;
comm_point_send_reply(&r->query_reply);
+ m->reply_list = rlist;
} else {
size_t udp_size = r->edns.udp_size;
r->edns.edns_version = EDNS_ADVERTISED_VERSION;
@@ -1261,7 +1277,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
m->s.qinfo.qname = r->qname;
m->s.qinfo.local_alias = r->local_alias;
if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep,
- LDNS_RCODE_NOERROR, &r->edns, NULL, m->s.region) ||
+ LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region) ||
!apply_edns_options(&r->edns, &edns_bak,
m->s.env->cfg, r->query_reply.c,
m->s.region) ||
@@ -1271,13 +1287,15 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
secure))
{
if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s,
- rep, LDNS_RCODE_SERVFAIL, &r->edns, NULL, m->s.region))
+ rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region))
r->edns.opt_list = NULL;
error_encode(r_buffer, LDNS_RCODE_SERVFAIL,
&m->s.qinfo, r->qid, r->qflags, &r->edns);
}
r->edns = edns_bak;
+ m->reply_list = NULL;
comm_point_send_reply(&r->query_reply);
+ m->reply_list = rlist;
}
/* account */
log_assert(m->s.env->mesh->num_reply_addrs > 0);
@@ -1365,20 +1383,12 @@ void mesh_query_done(struct mesh_state* mstate)
mstate->reply_list = reply_list;
} else {
struct sldns_buffer* r_buffer = r->query_reply.c->buffer;
- struct mesh_reply* rlist = mstate->reply_list;
if(r->query_reply.c->tcp_req_info) {
r_buffer = r->query_reply.c->tcp_req_info->spool_buffer;
prev_buffer = NULL;
}
- /* briefly set the replylist to null in case the
- * meshsendreply calls tcpreqinfo sendreply that
- * comm_point_drops because of size, and then the
- * null stops the mesh state remove and thus
- * reply_list modification and accounting */
- mstate->reply_list = NULL;
mesh_send_reply(mstate, mstate->s.return_rcode, rep,
r, r_buffer, prev, prev_buffer);
- mstate->reply_list = rlist;
if(r->query_reply.c->tcp_req_info) {
tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate);
r_buffer = NULL;
@@ -1894,7 +1904,7 @@ mesh_serve_expired_callback(void* arg)
{
struct mesh_state* mstate = (struct mesh_state*) arg;
struct module_qstate* qstate = &mstate->s;
- struct mesh_reply* r, *rlist;
+ struct mesh_reply* r;
struct mesh_area* mesh = qstate->env->mesh;
struct dns_msg* msg;
struct mesh_cb* c;
@@ -1999,15 +2009,8 @@ mesh_serve_expired_callback(void* arg)
r_buffer = r->query_reply.c->buffer;
if(r->query_reply.c->tcp_req_info)
r_buffer = r->query_reply.c->tcp_req_info->spool_buffer;
- /* briefly set the replylist to null in case the meshsendreply
- * calls tcpreqinfo sendreply that comm_point_drops because
- * of size, and then the null stops the mesh state remove and
- * thus reply_list modification and accounting */
- rlist = mstate->reply_list;
- mstate->reply_list = NULL;
mesh_send_reply(mstate, LDNS_RCODE_NOERROR, msg->rep,
r, r_buffer, prev, prev_buffer);
- mstate->reply_list = rlist;
if(r->query_reply.c->tcp_req_info)
tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate);
prev = r;
diff --git a/sbin/unwind/libunbound/services/outside_network.c b/sbin/unwind/libunbound/services/outside_network.c
index 41a1d83f145..11951adea7b 100644
--- a/sbin/unwind/libunbound/services/outside_network.c
+++ b/sbin/unwind/libunbound/services/outside_network.c
@@ -132,6 +132,52 @@ serviced_cmp(const void* key1, const void* key2)
return sockaddr_cmp(&q1->addr, q1->addrlen, &q2->addr, q2->addrlen);
}
+/** compare if the reuse element has the same address, port and same ssl-is
+ * used-for-it characteristic */
+static int
+reuse_cmp_addrportssl(const void* key1, const void* key2)
+{
+ struct reuse_tcp* r1 = (struct reuse_tcp*)key1;
+ struct reuse_tcp* r2 = (struct reuse_tcp*)key2;
+ int r;
+ /* compare address and port */
+ r = sockaddr_cmp(&r1->addr, r1->addrlen, &r2->addr, r2->addrlen);
+ if(r != 0)
+ return r;
+
+ /* compare if SSL-enabled */
+ if(r1->is_ssl && !r2->is_ssl)
+ return 1;
+ if(!r1->is_ssl && r2->is_ssl)
+ return -1;
+ return 0;
+}
+
+int
+reuse_cmp(const void* key1, const void* key2)
+{
+ int r;
+ r = reuse_cmp_addrportssl(key1, key2);
+ if(r != 0)
+ return r;
+
+ /* compare ptr value */
+ if(key1 < key2) return -1;
+ if(key1 > key2) return 1;
+ return 0;
+}
+
+int reuse_id_cmp(const void* key1, const void* key2)
+{
+ struct waiting_tcp* w1 = (struct waiting_tcp*)key1;
+ struct waiting_tcp* w2 = (struct waiting_tcp*)key2;
+ if(w1->id < w2->id)
+ return -1;
+ if(w1->id > w2->id)
+ return 1;
+ return 0;
+}
+
/** delete waiting_tcp entry. Does not unlink from waiting list.
* @param w: to delete.
*/
@@ -280,15 +326,234 @@ outnet_tcp_connect(int s, struct sockaddr_storage* addr, socklen_t addrlen)
return 1;
}
+/** log reuse item addr and ptr with message */
+static void
+log_reuse_tcp(enum verbosity_value v, const char* msg, struct reuse_tcp* reuse)
+{
+ uint16_t port;
+ char addrbuf[128];
+ if(verbosity < v) return;
+ addr_to_str(&reuse->addr, reuse->addrlen, addrbuf, sizeof(addrbuf));
+ port = ntohs(((struct sockaddr_in*)&reuse->addr)->sin_port);
+ verbose(v, "%s %s#%u fd %d", msg, addrbuf, (unsigned)port,
+ reuse->pending->c->fd);
+}
+
+/** pop the first element from the writewait list */
+static struct waiting_tcp* reuse_write_wait_pop(struct reuse_tcp* reuse)
+{
+ struct waiting_tcp* w = reuse->write_wait_first;
+ if(!w)
+ return NULL;
+ log_assert(w->write_wait_queued);
+ log_assert(!w->write_wait_prev);
+ reuse->write_wait_first = w->write_wait_next;
+ if(w->write_wait_next)
+ w->write_wait_next->write_wait_prev = NULL;
+ else reuse->write_wait_last = NULL;
+ w->write_wait_queued = 0;
+ return w;
+}
+
+/** remove the element from the writewait list */
+static void reuse_write_wait_remove(struct reuse_tcp* reuse,
+ struct waiting_tcp* w)
+{
+ if(!w)
+ return;
+ if(!w->write_wait_queued)
+ return;
+ if(w->write_wait_prev)
+ w->write_wait_prev->write_wait_next = w->write_wait_next;
+ else reuse->write_wait_first = w->write_wait_next;
+ if(w->write_wait_next)
+ w->write_wait_next->write_wait_prev = w->write_wait_prev;
+ else reuse->write_wait_last = w->write_wait_prev;
+ w->write_wait_queued = 0;
+}
+
+/** push the element after the last on the writewait list */
+static void reuse_write_wait_push_back(struct reuse_tcp* reuse,
+ struct waiting_tcp* w)
+{
+ if(!w) return;
+ log_assert(!w->write_wait_queued);
+ if(reuse->write_wait_last) {
+ reuse->write_wait_last->write_wait_next = w;
+ w->write_wait_prev = reuse->write_wait_last;
+ } else {
+ reuse->write_wait_first = w;
+ }
+ reuse->write_wait_last = w;
+ w->write_wait_queued = 1;
+}
+
+/** insert element in tree by id */
+void
+reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w)
+{
+ log_assert(w->id_node.key == NULL);
+ w->id_node.key = w;
+ rbtree_insert(&reuse->tree_by_id, &w->id_node);
+}
+
+/** find element in tree by id */
+struct waiting_tcp*
+reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id)
+{
+ struct waiting_tcp key_w;
+ rbnode_type* n;
+ memset(&key_w, 0, sizeof(key_w));
+ key_w.id_node.key = &key_w;
+ key_w.id = id;
+ n = rbtree_search(&reuse->tree_by_id, &key_w);
+ if(!n) return NULL;
+ return (struct waiting_tcp*)n->key;
+}
+
+/** return ID value of rbnode in tree_by_id */
+static uint16_t
+tree_by_id_get_id(rbnode_type* node)
+{
+ struct waiting_tcp* w = (struct waiting_tcp*)node->key;
+ return w->id;
+}
+
+/** insert into reuse tcp tree and LRU, false on failure (duplicate) */
+static int
+reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp)
+{
+ log_reuse_tcp(VERB_CLIENT, "reuse_tcp_insert", &pend_tcp->reuse);
+ if(pend_tcp->reuse.item_on_lru_list)
+ return 1;
+ pend_tcp->reuse.node.key = &pend_tcp->reuse;
+ pend_tcp->reuse.pending = pend_tcp;
+ if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) {
+ /* this is a duplicate connection, close this one */
+ verbose(VERB_CLIENT, "reuse_tcp_insert: duplicate connection");
+ pend_tcp->reuse.node.key = NULL;
+ return 0;
+ }
+ /* insert into LRU, first is newest */
+ pend_tcp->reuse.lru_prev = NULL;
+ if(outnet->tcp_reuse_first) {
+ pend_tcp->reuse.lru_next = outnet->tcp_reuse_first;
+ outnet->tcp_reuse_first->lru_prev = &pend_tcp->reuse;
+ } else {
+ pend_tcp->reuse.lru_next = NULL;
+ outnet->tcp_reuse_last = &pend_tcp->reuse;
+ }
+ outnet->tcp_reuse_first = &pend_tcp->reuse;
+ pend_tcp->reuse.item_on_lru_list = 1;
+ return 1;
+}
+
+/** find reuse tcp stream to destination for query, or NULL if none */
+static struct reuse_tcp*
+reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr,
+ socklen_t addrlen, int use_ssl)
+{
+ struct waiting_tcp key_w;
+ struct pending_tcp key_p;
+ struct comm_point c;
+ rbnode_type* result = NULL, *prev;
+ verbose(VERB_CLIENT, "reuse_tcp_find");
+ memset(&key_w, 0, sizeof(key_w));
+ memset(&key_p, 0, sizeof(key_p));
+ memset(&c, 0, sizeof(c));
+ key_p.query = &key_w;
+ key_p.c = &c;
+ key_p.reuse.pending = &key_p;
+ key_p.reuse.node.key = &key_p.reuse;
+ if(use_ssl)
+ key_p.reuse.is_ssl = 1;
+ if(addrlen > (socklen_t)sizeof(key_p.reuse.addr))
+ return NULL;
+ memmove(&key_p.reuse.addr, addr, addrlen);
+ key_p.reuse.addrlen = addrlen;
+
+ verbose(VERB_CLIENT, "reuse_tcp_find: num reuse streams %u",
+ (unsigned)outnet->tcp_reuse.count);
+ if(outnet->tcp_reuse.root == NULL ||
+ outnet->tcp_reuse.root == RBTREE_NULL)
+ return NULL;
+ if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse.node,
+ &result)) {
+ /* exact match */
+ /* but the key is on stack, and ptr is compared, impossible */
+ log_assert(&key_p.reuse != (struct reuse_tcp*)result);
+ log_assert(&key_p != ((struct reuse_tcp*)result)->pending);
+ }
+ /* not found, return null */
+ if(!result || result == RBTREE_NULL)
+ return NULL;
+ verbose(VERB_CLIENT, "reuse_tcp_find check inexact match");
+ /* inexact match, find one of possibly several connections to the
+ * same destination address, with the correct port, ssl, and
+ * also less than max number of open queries, or else, fail to open
+ * a new one */
+ /* rewind to start of sequence of same address,port,ssl */
+ prev = rbtree_previous(result);
+ while(prev && prev != RBTREE_NULL &&
+ reuse_cmp_addrportssl(prev->key, &key_p.reuse) == 0) {
+ result = prev;
+ prev = rbtree_previous(result);
+ }
+
+ /* loop to find first one that has correct characteristics */
+ while(result && result != RBTREE_NULL &&
+ reuse_cmp_addrportssl(result->key, &key_p.reuse) == 0) {
+ if(((struct reuse_tcp*)result)->tree_by_id.count <
+ MAX_REUSE_TCP_QUERIES) {
+ /* same address, port, ssl-yes-or-no, and has
+ * space for another query */
+ return (struct reuse_tcp*)result;
+ }
+ result = rbtree_next(result);
+ }
+ return NULL;
+}
+
+/** use the buffer to setup writing the query */
+static void
+outnet_tcp_take_query_setup(int s, struct pending_tcp* pend,
+ struct waiting_tcp* w)
+{
+ struct timeval tv;
+ verbose(VERB_CLIENT, "outnet_tcp_take_query_setup: setup packet to write "
+ "len %d timeout %d msec",
+ (int)w->pkt_len, w->timeout);
+ pend->c->tcp_write_pkt = w->pkt;
+ pend->c->tcp_write_pkt_len = w->pkt_len;
+ pend->c->tcp_write_and_read = 1;
+ pend->c->tcp_write_byte_count = 0;
+ pend->c->tcp_is_reading = 0;
+ comm_point_start_listening(pend->c, s, -1);
+ /* set timer on the waiting_tcp entry, this is the write timeout
+ * for the written packet. The timer on pend->c is the timer
+ * for when there is no written packet and we have readtimeouts */
+#ifndef S_SPLINT_S
+ tv.tv_sec = w->timeout/1000;
+ tv.tv_usec = (w->timeout%1000)*1000;
+#endif
+ /* if the waiting_tcp was previously waiting for a buffer in the
+ * outside_network.tcpwaitlist, then the timer is reset now that
+ * we start writing it */
+ comm_timer_set(w->timer, &tv);
+}
+
/** use next free buffer to service a tcp query */
static int
-outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len)
+outnet_tcp_take_into_use(struct waiting_tcp* w)
{
struct pending_tcp* pend = w->outnet->tcp_free;
int s;
log_assert(pend);
- log_assert(pkt);
+ log_assert(w->pkt);
+ log_assert(w->pkt_len > 0);
log_assert(w->addrlen > 0);
+ pend->c->tcp_do_toggle_rw = 0;
+ pend->c->tcp_do_close = 0;
/* open socket */
s = outnet_get_tcp_fd(&w->addr, w->addrlen, w->outnet->tcp_mss, w->outnet->ip_dscp);
@@ -383,24 +648,65 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len)
return 0;
}
}
- w->pkt = NULL;
w->next_waiting = (void*)pend;
- pend->id = LDNS_ID_WIRE(pkt);
w->outnet->num_tcp_outgoing++;
w->outnet->tcp_free = pend->next_free;
pend->next_free = NULL;
pend->query = w;
+ pend->reuse.outnet = w->outnet;
pend->c->repinfo.addrlen = w->addrlen;
+ pend->c->tcp_more_read_again = &pend->reuse.cp_more_read_again;
+ pend->c->tcp_more_write_again = &pend->reuse.cp_more_write_again;
+ pend->reuse.cp_more_read_again = 0;
+ pend->reuse.cp_more_write_again = 0;
memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen);
- sldns_buffer_clear(pend->c->buffer);
- sldns_buffer_write(pend->c->buffer, pkt, pkt_len);
- sldns_buffer_flip(pend->c->buffer);
- pend->c->tcp_is_reading = 0;
- pend->c->tcp_byte_count = 0;
- comm_point_start_listening(pend->c, s, -1);
+ pend->reuse.pending = pend;
+ if(pend->c->ssl)
+ pend->reuse.is_ssl = 1;
+ else pend->reuse.is_ssl = 0;
+ /* insert in reuse by address tree if not already inserted there */
+ (void)reuse_tcp_insert(w->outnet, pend);
+ reuse_tree_by_id_insert(&pend->reuse, w);
+ outnet_tcp_take_query_setup(s, pend, w);
return 1;
}
+/** Touch the lru of a reuse_tcp element, it is in use.
+ * This moves it to the front of the list, where it is not likely to
+ * be closed. Items at the back of the list are closed to make space. */
+static void
+reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp* reuse)
+{
+ if(!reuse->item_on_lru_list)
+ return; /* not on the list, no lru to modify */
+ if(!reuse->lru_prev)
+ return; /* already first in the list */
+ /* remove at current position */
+ /* since it is not first, there is a previous element */
+ reuse->lru_prev->lru_next = reuse->lru_next;
+ if(reuse->lru_next)
+ reuse->lru_next->lru_prev = reuse->lru_prev;
+ else outnet->tcp_reuse_last = reuse->lru_prev;
+ /* insert at the front */
+ reuse->lru_prev = NULL;
+ reuse->lru_next = outnet->tcp_reuse_first;
+ /* since it is not first, it is not the only element and
+ * lru_next is thus not NULL and thus reuse is now not the last in
+ * the list, so outnet->tcp_reuse_last does not need to be modified */
+ outnet->tcp_reuse_first = reuse;
+}
+
+/** call callback on waiting_tcp, if not NULL */
+static void
+waiting_tcp_callback(struct waiting_tcp* w, struct comm_point* c, int error,
+ struct comm_reply* reply_info)
+{
+ if(w->cb) {
+ fptr_ok(fptr_whitelist_pending_tcp(w->cb));
+ (void)(*w->cb)(c, w->cb_arg, error, reply_info);
+ }
+}
+
/** see if buffers can be used to service TCP queries */
static void
use_free_buffer(struct outside_network* outnet)
@@ -408,25 +714,198 @@ use_free_buffer(struct outside_network* outnet)
struct waiting_tcp* w;
while(outnet->tcp_free && outnet->tcp_wait_first
&& !outnet->want_to_quit) {
+ struct reuse_tcp* reuse = NULL;
w = outnet->tcp_wait_first;
outnet->tcp_wait_first = w->next_waiting;
if(outnet->tcp_wait_last == w)
outnet->tcp_wait_last = NULL;
- if(!outnet_tcp_take_into_use(w, w->pkt, w->pkt_len)) {
- comm_point_callback_type* cb = w->cb;
- void* cb_arg = w->cb_arg;
- waiting_tcp_delete(w);
- fptr_ok(fptr_whitelist_pending_tcp(cb));
- (void)(*cb)(NULL, cb_arg, NETEVENT_CLOSED, NULL);
+ w->on_tcp_waiting_list = 0;
+ reuse = reuse_tcp_find(outnet, &w->addr, w->addrlen,
+ w->ssl_upstream);
+ if(reuse) {
+ log_reuse_tcp(VERB_CLIENT, "use free buffer for waiting tcp: "
+ "found reuse", reuse);
+ reuse_tcp_lru_touch(outnet, reuse);
+ comm_timer_disable(w->timer);
+ w->next_waiting = (void*)reuse->pending;
+ reuse_tree_by_id_insert(reuse, w);
+ if(reuse->pending->query) {
+ /* on the write wait list */
+ reuse_write_wait_push_back(reuse, w);
+ } else {
+ /* write straight away */
+ /* stop the timer on read of the fd */
+ comm_point_stop_listening(reuse->pending->c);
+ reuse->pending->query = w;
+ outnet_tcp_take_query_setup(
+ reuse->pending->c->fd, reuse->pending,
+ w);
+ }
+ } else {
+ struct pending_tcp* pend = w->outnet->tcp_free;
+ rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp);
+ pend->reuse.pending = pend;
+ memcpy(&pend->reuse.addr, &w->addr, w->addrlen);
+ pend->reuse.addrlen = w->addrlen;
+ if(!outnet_tcp_take_into_use(w)) {
+ waiting_tcp_callback(w, NULL, NETEVENT_CLOSED,
+ NULL);
+ waiting_tcp_delete(w);
+ }
}
}
}
+/** add waiting_tcp element to the outnet tcp waiting list */
+static void
+outnet_add_tcp_waiting(struct outside_network* outnet, struct waiting_tcp* w)
+{
+ struct timeval tv;
+ if(w->on_tcp_waiting_list)
+ return;
+ w->next_waiting = NULL;
+ if(outnet->tcp_wait_last)
+ outnet->tcp_wait_last->next_waiting = w;
+ else outnet->tcp_wait_first = w;
+ outnet->tcp_wait_last = w;
+ w->on_tcp_waiting_list = 1;
+#ifndef S_SPLINT_S
+ tv.tv_sec = w->timeout/1000;
+ tv.tv_usec = (w->timeout%1000)*1000;
+#endif
+ comm_timer_set(w->timer, &tv);
+}
+
+/** delete element from tree by id */
+static void
+reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w)
+{
+ log_assert(w->id_node.key != NULL);
+ rbtree_delete(&reuse->tree_by_id, w);
+ w->id_node.key = NULL;
+}
+
+/** move writewait list to go for another connection. */
+static void
+reuse_move_writewait_away(struct outside_network* outnet,
+ struct pending_tcp* pend)
+{
+ /* the writewait list has not been written yet, so if the
+ * stream was closed, they have not actually been failed, only
+ * the queries written. Other queries can get written to another
+ * stream. For upstreams that do not support multiple queries
+ * and answers, the stream can get closed, and then the queries
+ * can get written on a new socket */
+ struct waiting_tcp* w;
+ if(pend->query && pend->query->error_count == 0 &&
+ pend->c->tcp_write_pkt == pend->query->pkt &&
+ pend->c->tcp_write_pkt_len == pend->query->pkt_len) {
+ /* since the current query is not written, it can also
+ * move to a free buffer */
+ if(verbosity >= VERB_CLIENT && pend->query->pkt_len > 12+2+2 &&
+ LDNS_QDCOUNT(pend->query->pkt) > 0 &&
+ dname_valid(pend->query->pkt+12, pend->query->pkt_len-12)) {
+ char buf[LDNS_MAX_DOMAINLEN+1];
+ dname_str(pend->query->pkt+12, buf);
+ verbose(VERB_CLIENT, "reuse_move_writewait_away current %s %d bytes were written",
+ buf, (int)pend->c->tcp_write_byte_count);
+ }
+ pend->c->tcp_write_pkt = NULL;
+ pend->c->tcp_write_pkt_len = 0;
+ pend->c->tcp_write_and_read = 0;
+ pend->reuse.cp_more_read_again = 0;
+ pend->reuse.cp_more_write_again = 0;
+ pend->c->tcp_is_reading = 1;
+ w = pend->query;
+ pend->query = NULL;
+ /* increase error count, so that if the next socket fails too
+ * the server selection is run again with this query failed
+ * and it can select a different server (if possible), or
+ * fail the query */
+ w->error_count ++;
+ reuse_tree_by_id_delete(&pend->reuse, w);
+ outnet_add_tcp_waiting(outnet, w);
+ }
+ while((w = reuse_write_wait_pop(&pend->reuse)) != NULL) {
+ if(verbosity >= VERB_CLIENT && w->pkt_len > 12+2+2 &&
+ LDNS_QDCOUNT(w->pkt) > 0 &&
+ dname_valid(w->pkt+12, w->pkt_len-12)) {
+ char buf[LDNS_MAX_DOMAINLEN+1];
+ dname_str(w->pkt+12, buf);
+ verbose(VERB_CLIENT, "reuse_move_writewait_away item %s", buf);
+ }
+ reuse_tree_by_id_delete(&pend->reuse, w);
+ outnet_add_tcp_waiting(outnet, w);
+ }
+}
+
+/** remove reused element from tree and lru list */
+static void
+reuse_tcp_remove_tree_list(struct outside_network* outnet,
+ struct reuse_tcp* reuse)
+{
+ verbose(VERB_CLIENT, "reuse_tcp_remove_tree_list");
+ if(reuse->node.key) {
+ /* delete it from reuse tree */
+ (void)rbtree_delete(&outnet->tcp_reuse, &reuse->node);
+ reuse->node.key = NULL;
+ }
+ /* delete from reuse list */
+ if(reuse->item_on_lru_list) {
+ if(reuse->lru_prev) {
+ /* assert that members of the lru list are waiting
+ * and thus have a pending pointer to the struct */
+ log_assert(reuse->lru_prev->pending);
+ reuse->lru_prev->lru_next = reuse->lru_next;
+ } else {
+ log_assert(!reuse->lru_next || reuse->lru_next->pending);
+ outnet->tcp_reuse_first = reuse->lru_next;
+ }
+ if(reuse->lru_next) {
+ /* assert that members of the lru list are waiting
+ * and thus have a pending pointer to the struct */
+ log_assert(reuse->lru_next->pending);
+ reuse->lru_next->lru_prev = reuse->lru_prev;
+ } else {
+ log_assert(!reuse->lru_prev || reuse->lru_prev->pending);
+ outnet->tcp_reuse_last = reuse->lru_prev;
+ }
+ reuse->item_on_lru_list = 0;
+ }
+}
+
+/** helper function that deletes an element from the tree of readwait
+ * elements in tcp reuse structure */
+static void reuse_del_readwait_elem(rbnode_type* node, void* ATTR_UNUSED(arg))
+{
+ struct waiting_tcp* w = (struct waiting_tcp*)node->key;
+ waiting_tcp_delete(w);
+}
+
+/** delete readwait waiting_tcp elements, deletes the elements in the list */
+void reuse_del_readwait(rbtree_type* tree_by_id)
+{
+ if(tree_by_id->root == NULL ||
+ tree_by_id->root == RBTREE_NULL)
+ return;
+ traverse_postorder(tree_by_id, &reuse_del_readwait_elem, NULL);
+ rbtree_init(tree_by_id, reuse_id_cmp);
+}
+
/** decommission a tcp buffer, closes commpoint and frees waiting_tcp entry */
static void
decommission_pending_tcp(struct outside_network* outnet,
struct pending_tcp* pend)
{
+ verbose(VERB_CLIENT, "decommission_pending_tcp");
+ pend->next_free = outnet->tcp_free;
+ outnet->tcp_free = pend;
+ if(pend->reuse.node.key) {
+ /* needs unlink from the reuse tree to get deleted */
+ reuse_tcp_remove_tree_list(outnet, &pend->reuse);
+ }
+ /* free SSL structure after remove from outnet tcp reuse tree,
+ * because the c->ssl null or not is used for sorting in the tree */
if(pend->c->ssl) {
#ifdef HAVE_SSL
SSL_shutdown(pend->c->ssl);
@@ -435,11 +914,68 @@ decommission_pending_tcp(struct outside_network* outnet,
#endif
}
comm_point_close(pend->c);
- pend->next_free = outnet->tcp_free;
- outnet->tcp_free = pend;
- waiting_tcp_delete(pend->query);
+ pend->reuse.cp_more_read_again = 0;
+ pend->reuse.cp_more_write_again = 0;
+ /* unlink the query and writewait list, it is part of the tree
+ * nodes and is deleted */
pend->query = NULL;
- use_free_buffer(outnet);
+ pend->reuse.write_wait_first = NULL;
+ pend->reuse.write_wait_last = NULL;
+ reuse_del_readwait(&pend->reuse.tree_by_id);
+}
+
+/** perform failure callbacks for waiting queries in reuse read rbtree */
+static void reuse_cb_readwait_for_failure(rbtree_type* tree_by_id, int err)
+{
+ rbnode_type* node;
+ if(tree_by_id->root == NULL ||
+ tree_by_id->root == RBTREE_NULL)
+ return;
+ node = rbtree_first(tree_by_id);
+ while(node && node != RBTREE_NULL) {
+ struct waiting_tcp* w = (struct waiting_tcp*)node->key;
+ waiting_tcp_callback(w, NULL, err, NULL);
+ node = rbtree_next(node);
+ }
+}
+
+/** perform callbacks for failure and also decommission pending tcp.
+ * the callbacks remove references in sq->pending to the waiting_tcp
+ * members of the tree_by_id in the pending tcp. The pending_tcp is
+ * removed before the callbacks, so that the callbacks do not modify
+ * the pending_tcp due to its reference in the outside_network reuse tree */
+static void reuse_cb_and_decommission(struct outside_network* outnet,
+ struct pending_tcp* pend, int error)
+{
+ rbtree_type store;
+ store = pend->reuse.tree_by_id;
+ pend->query = NULL;
+ rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp);
+ pend->reuse.write_wait_first = NULL;
+ pend->reuse.write_wait_last = NULL;
+ decommission_pending_tcp(outnet, pend);
+ reuse_cb_readwait_for_failure(&store, error);
+ reuse_del_readwait(&store);
+}
+
+/** set timeout on tcp fd and setup read event to catch incoming dns msgs */
+static void
+reuse_tcp_setup_timeout(struct pending_tcp* pend_tcp)
+{
+ log_reuse_tcp(VERB_CLIENT, "reuse_tcp_setup_timeout", &pend_tcp->reuse);
+ comm_point_start_listening(pend_tcp->c, -1, REUSE_TIMEOUT);
+}
+
+/** set timeout on tcp fd and setup read event to catch incoming dns msgs */
+static void
+reuse_tcp_setup_read_and_timeout(struct pending_tcp* pend_tcp)
+{
+ log_reuse_tcp(VERB_CLIENT, "reuse_tcp_setup_readtimeout", &pend_tcp->reuse);
+ sldns_buffer_clear(pend_tcp->c->buffer);
+ pend_tcp->c->tcp_is_reading = 1;
+ pend_tcp->c->tcp_byte_count = 0;
+ comm_point_stop_listening(pend_tcp->c);
+ comm_point_start_listening(pend_tcp->c, -1, REUSE_TIMEOUT);
}
int
@@ -447,24 +983,116 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error,
struct comm_reply *reply_info)
{
struct pending_tcp* pend = (struct pending_tcp*)arg;
- struct outside_network* outnet = pend->query->outnet;
+ struct outside_network* outnet = pend->reuse.outnet;
+ struct waiting_tcp* w = NULL;
verbose(VERB_ALGO, "outnettcp cb");
- if(error != NETEVENT_NOERROR) {
+ if(error == NETEVENT_TIMEOUT) {
+ if(pend->c->tcp_write_and_read) {
+ verbose(VERB_QUERY, "outnettcp got tcp timeout "
+ "for read, ignored because write underway");
+ /* if we are writing, ignore readtimer, wait for write timer
+ * or write is done */
+ return 0;
+ } else {
+ verbose(VERB_QUERY, "outnettcp got tcp timeout %s",
+ (pend->reuse.tree_by_id.count?"for reading pkt":
+ "for keepalive for reuse"));
+ }
+ /* must be timeout for reading or keepalive reuse,
+ * close it. */
+ reuse_tcp_remove_tree_list(outnet, &pend->reuse);
+ } else if(error == NETEVENT_PKT_WRITTEN) {
+ /* the packet we want to write has been written. */
+ verbose(VERB_ALGO, "outnet tcp pkt was written event");
+ log_assert(c == pend->c);
+ log_assert(pend->query->pkt == pend->c->tcp_write_pkt);
+ log_assert(pend->query->pkt_len == pend->c->tcp_write_pkt_len);
+ pend->c->tcp_write_pkt = NULL;
+ pend->c->tcp_write_pkt_len = 0;
+ /* the pend.query is already in tree_by_id */
+ log_assert(pend->query->id_node.key);
+ pend->query = NULL;
+ /* setup to write next packet or setup read timeout */
+ if(pend->reuse.write_wait_first) {
+ verbose(VERB_ALGO, "outnet tcp setup next pkt");
+ /* we can write it straight away perhaps, set flag
+ * because this callback called after a tcp write
+ * succeeded and likely more buffer space is available
+ * and we can write some more. */
+ pend->reuse.cp_more_write_again = 1;
+ pend->query = reuse_write_wait_pop(&pend->reuse);
+ comm_point_stop_listening(pend->c);
+ outnet_tcp_take_query_setup(pend->c->fd, pend,
+ pend->query);
+ } else {
+ verbose(VERB_ALGO, "outnet tcp writes done, wait");
+ pend->c->tcp_write_and_read = 0;
+ pend->reuse.cp_more_read_again = 0;
+ pend->reuse.cp_more_write_again = 0;
+ pend->c->tcp_is_reading = 1;
+ comm_point_stop_listening(pend->c);
+ reuse_tcp_setup_timeout(pend);
+ }
+ return 0;
+ } else if(error != NETEVENT_NOERROR) {
verbose(VERB_QUERY, "outnettcp got tcp error %d", error);
+ reuse_move_writewait_away(outnet, pend);
/* pass error below and exit */
} else {
/* check ID */
- if(sldns_buffer_limit(c->buffer) < sizeof(uint16_t) ||
- LDNS_ID_WIRE(sldns_buffer_begin(c->buffer))!=pend->id) {
+ if(sldns_buffer_limit(c->buffer) < sizeof(uint16_t)) {
log_addr(VERB_QUERY,
- "outnettcp: bad ID in reply, from:",
- &pend->query->addr, pend->query->addrlen);
+ "outnettcp: bad ID in reply, too short, from:",
+ &pend->reuse.addr, pend->reuse.addrlen);
error = NETEVENT_CLOSED;
- }
+ } else {
+ uint16_t id = LDNS_ID_WIRE(sldns_buffer_begin(
+ c->buffer));
+ /* find the query the reply is for */
+ w = reuse_tcp_by_id_find(&pend->reuse, id);
+ }
+ }
+ if(error == NETEVENT_NOERROR && !w) {
+ /* no struct waiting found in tree, no reply to call */
+ log_addr(VERB_QUERY, "outnettcp: bad ID in reply, from:",
+ &pend->reuse.addr, pend->reuse.addrlen);
+ error = NETEVENT_CLOSED;
+ }
+ if(error == NETEVENT_NOERROR) {
+ /* add to reuse tree so it can be reused, if not a failure.
+ * This is possible if the state machine wants to make a tcp
+ * query again to the same destination. */
+ if(outnet->tcp_reuse.count < outnet->tcp_reuse_max) {
+ (void)reuse_tcp_insert(outnet, pend);
+ }
+ }
+ if(w) {
+ reuse_tree_by_id_delete(&pend->reuse, w);
+ verbose(VERB_CLIENT, "outnet tcp callback query err %d buflen %d",
+ error, (int)sldns_buffer_limit(c->buffer));
+ waiting_tcp_callback(w, c, error, reply_info);
+ waiting_tcp_delete(w);
+ }
+ verbose(VERB_CLIENT, "outnet_tcp_cb reuse after cb");
+ if(error == NETEVENT_NOERROR && pend->reuse.node.key) {
+ verbose(VERB_CLIENT, "outnet_tcp_cb reuse after cb: keep it");
+ /* it is in the reuse_tcp tree, with other queries, or
+ * on the empty list. do not decommission it */
+ /* if there are more outstanding queries, we could try to
+ * read again, to see if it is on the input,
+ * because this callback called after a successful read
+ * and there could be more bytes to read on the input */
+ if(pend->reuse.tree_by_id.count != 0)
+ pend->reuse.cp_more_read_again = 1;
+ reuse_tcp_setup_read_and_timeout(pend);
+ return 0;
}
- fptr_ok(fptr_whitelist_pending_tcp(pend->query->cb));
- (void)(*pend->query->cb)(c, pend->query->cb_arg, error, reply_info);
- decommission_pending_tcp(outnet, pend);
+ verbose(VERB_CLIENT, "outnet_tcp_cb reuse after cb: decommission it");
+ /* no queries on it, no space to keep it. or timeout or closed due
+ * to error. Close it */
+ reuse_cb_and_decommission(outnet, pend, (error==NETEVENT_TIMEOUT?
+ NETEVENT_TIMEOUT:NETEVENT_CLOSED));
+ use_free_buffer(outnet);
return 0;
}
@@ -723,7 +1351,8 @@ outside_network_create(struct comm_base *base, size_t bufsize,
struct ub_randstate* rnd, int use_caps_for_id, int* availports,
int numavailports, size_t unwanted_threshold, int tcp_mss,
void (*unwanted_action)(void*), void* unwanted_param, int do_udp,
- void* sslctx, int delayclose, int tls_use_sni, struct dt_env* dtenv)
+ void* sslctx, int delayclose, int tls_use_sni, struct dt_env* dtenv,
+ int udp_connect)
{
struct outside_network* outnet = (struct outside_network*)
calloc(1, sizeof(struct outside_network));
@@ -761,6 +1390,9 @@ outside_network_create(struct comm_base *base, size_t bufsize,
outnet->delay_tv.tv_usec = (delayclose%1000)*1000;
}
#endif
+ if(udp_connect) {
+ outnet->udp_connect = 1;
+ }
if(numavailports == 0 || num_ports == 0) {
log_err("no outgoing ports available");
outside_network_delete(outnet);
@@ -795,6 +1427,8 @@ outside_network_create(struct comm_base *base, size_t bufsize,
outside_network_delete(outnet);
return NULL;
}
+ rbtree_init(&outnet->tcp_reuse, reuse_cmp);
+ outnet->tcp_reuse_max = num_tcp;
/* allocate commpoints */
for(k=0; k<num_ports; k++) {
@@ -958,6 +1592,17 @@ outside_network_delete(struct outside_network* outnet)
size_t i;
for(i=0; i<outnet->num_tcp; i++)
if(outnet->tcp_conns[i]) {
+ if(outnet->tcp_conns[i]->query &&
+ !outnet->tcp_conns[i]->query->
+ on_tcp_waiting_list) {
+ /* delete waiting_tcp elements that
+ * the tcp conn is working on */
+ struct pending_tcp* pend =
+ (struct pending_tcp*)outnet->
+ tcp_conns[i]->query->
+ next_waiting;
+ decommission_pending_tcp(outnet, pend);
+ }
comm_point_delete(outnet->tcp_conns[i]->c);
waiting_tcp_delete(outnet->tcp_conns[i]->query);
free(outnet->tcp_conns[i]);
@@ -972,6 +1617,10 @@ outside_network_delete(struct outside_network* outnet)
p = np;
}
}
+ /* was allocated in struct pending that was deleted above */
+ rbtree_init(&outnet->tcp_reuse, reuse_cmp);
+ outnet->tcp_reuse_first = NULL;
+ outnet->tcp_reuse_last = NULL;
if(outnet->udp_wait_first) {
struct pending* p = outnet->udp_wait_first, *np;
while(p) {
@@ -1115,13 +1764,26 @@ select_ifport(struct outside_network* outnet, struct pending* pend,
my_if = ub_random_max(outnet->rnd, num_if);
pif = &ifs[my_if];
#ifndef DISABLE_EXPLICIT_PORT_RANDOMISATION
- my_port = ub_random_max(outnet->rnd, pif->avail_total);
- if(my_port < pif->inuse) {
- /* port already open */
- pend->pc = pif->out[my_port];
- verbose(VERB_ALGO, "using UDP if=%d port=%d",
- my_if, pend->pc->number);
- break;
+ if(outnet->udp_connect) {
+ /* if we connect() we cannot reuse fds for a port */
+ if(pif->inuse >= pif->avail_total) {
+ tries++;
+ if(tries < MAX_PORT_RETRY)
+ continue;
+ log_err("failed to find an open port, drop msg");
+ return 0;
+ }
+ my_port = pif->inuse + ub_random_max(outnet->rnd,
+ pif->avail_total - pif->inuse);
+ } else {
+ my_port = ub_random_max(outnet->rnd, pif->avail_total);
+ if(my_port < pif->inuse) {
+ /* port already open */
+ pend->pc = pif->out[my_port];
+ verbose(VERB_ALGO, "using UDP if=%d port=%d",
+ my_if, pend->pc->number);
+ break;
+ }
}
/* try to open new port, if fails, loop to try again */
log_assert(pif->inuse < pif->maxout);
@@ -1138,6 +1800,17 @@ select_ifport(struct outside_network* outnet, struct pending* pend,
if(fd != -1) {
verbose(VERB_ALGO, "opened UDP if=%d port=%d",
my_if, portno);
+ if(outnet->udp_connect) {
+ /* connect() to the destination */
+ if(connect(fd, (struct sockaddr*)&pend->addr,
+ pend->addrlen) < 0) {
+ log_err_addr("udp connect failed",
+ strerror(errno), &pend->addr,
+ pend->addrlen);
+ sock_close(fd);
+ return 0;
+ }
+ }
/* grab fd */
pend->pc = outnet->unused_fds;
outnet->unused_fds = pend->pc->next;
@@ -1197,10 +1870,17 @@ randomize_and_send_udp(struct pending* pend, sldns_buffer* packet, int timeout)
log_assert(pend->pc && pend->pc->cp);
/* send it over the commlink */
- if(!comm_point_send_udp_msg(pend->pc->cp, packet,
- (struct sockaddr*)&pend->addr, pend->addrlen)) {
- portcomm_loweruse(outnet, pend->pc);
- return 0;
+ if(outnet->udp_connect) {
+ if(!comm_point_send_udp_msg(pend->pc->cp, packet, NULL, 0)) {
+ portcomm_loweruse(outnet, pend->pc);
+ return 0;
+ }
+ } else {
+ if(!comm_point_send_udp_msg(pend->pc->cp, packet,
+ (struct sockaddr*)&pend->addr, pend->addrlen)) {
+ portcomm_loweruse(outnet, pend->pc);
+ return 0;
+ }
}
/* system calls to set timeout after sending UDP to make roundtrip
@@ -1273,45 +1953,152 @@ outnet_tcptimer(void* arg)
{
struct waiting_tcp* w = (struct waiting_tcp*)arg;
struct outside_network* outnet = w->outnet;
- comm_point_callback_type* cb;
- void* cb_arg;
- if(w->pkt) {
+ verbose(VERB_CLIENT, "outnet_tcptimer");
+ if(w->on_tcp_waiting_list) {
/* it is on the waiting list */
waiting_list_remove(outnet, w);
+ waiting_tcp_callback(w, NULL, NETEVENT_TIMEOUT, NULL);
+ waiting_tcp_delete(w);
} else {
/* it was in use */
struct pending_tcp* pend=(struct pending_tcp*)w->next_waiting;
- if(pend->c->ssl) {
-#ifdef HAVE_SSL
- SSL_shutdown(pend->c->ssl);
- SSL_free(pend->c->ssl);
- pend->c->ssl = NULL;
-#endif
- }
- comm_point_close(pend->c);
- pend->query = NULL;
- pend->next_free = outnet->tcp_free;
- outnet->tcp_free = pend;
+ reuse_cb_and_decommission(outnet, pend, NETEVENT_TIMEOUT);
}
- cb = w->cb;
- cb_arg = w->cb_arg;
- waiting_tcp_delete(w);
- fptr_ok(fptr_whitelist_pending_tcp(cb));
- (void)(*cb)(NULL, cb_arg, NETEVENT_TIMEOUT, NULL);
use_free_buffer(outnet);
}
+/** close the oldest reuse_tcp connection to make a fd and struct pend
+ * available for a new stream connection */
+static void
+reuse_tcp_close_oldest(struct outside_network* outnet)
+{
+ struct pending_tcp* pend;
+ verbose(VERB_CLIENT, "reuse_tcp_close_oldest");
+ if(!outnet->tcp_reuse_last) return;
+ pend = outnet->tcp_reuse_last->pending;
+
+ /* snip off of LRU */
+ log_assert(pend->reuse.lru_next == NULL);
+ if(pend->reuse.lru_prev) {
+ outnet->tcp_reuse_last = pend->reuse.lru_prev;
+ pend->reuse.lru_prev->lru_next = NULL;
+ } else {
+ outnet->tcp_reuse_last = NULL;
+ outnet->tcp_reuse_first = NULL;
+ }
+ pend->reuse.item_on_lru_list = 0;
+
+ /* free up */
+ reuse_cb_and_decommission(outnet, pend, NETEVENT_CLOSED);
+}
+
+/** find spare ID value for reuse tcp stream. That is random and also does
+ * not collide with an existing query ID that is in use or waiting */
+uint16_t
+reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet)
+{
+ uint16_t id = 0, curid, nextid;
+ const int try_random = 2000;
+ int i;
+ unsigned select, count, space;
+ rbnode_type* node;
+
+ /* make really sure the tree is not empty */
+ if(reuse->tree_by_id.count == 0) {
+ id = ((unsigned)ub_random(outnet->rnd)>>8) & 0xffff;
+ return id;
+ }
+
+ /* try to find random empty spots by picking them */
+ for(i = 0; i<try_random; i++) {
+ id = ((unsigned)ub_random(outnet->rnd)>>8) & 0xffff;
+ if(!reuse_tcp_by_id_find(reuse, id)) {
+ return id;
+ }
+ }
+
+ /* equally pick a random unused element from the tree that is
+ * not in use. Pick a the n-th index of an ununused number,
+ * then loop over the empty spaces in the tree and find it */
+ log_assert(reuse->tree_by_id.count < 0xffff);
+ select = ub_random_max(outnet->rnd, 0xffff - reuse->tree_by_id.count);
+ /* select value now in 0 .. num free - 1 */
+
+ count = 0; /* number of free spaces passed by */
+ node = rbtree_first(&reuse->tree_by_id);
+ log_assert(node && node != RBTREE_NULL); /* tree not empty */
+ /* see if select is before first node */
+ if(select < tree_by_id_get_id(node))
+ return select;
+ count += tree_by_id_get_id(node);
+ /* perhaps select is between nodes */
+ while(node && node != RBTREE_NULL) {
+ rbnode_type* next = rbtree_next(node);
+ if(next && next != RBTREE_NULL) {
+ curid = tree_by_id_get_id(node);
+ nextid = tree_by_id_get_id(next);
+ log_assert(curid < nextid);
+ if(curid != 0xffff && curid + 1 < nextid) {
+ /* space between nodes */
+ space = nextid - curid - 1;
+ log_assert(select >= count);
+ if(select < count + space) {
+ /* here it is */
+ return curid + 1 + (select - count);
+ }
+ count += space;
+ }
+ }
+ node = next;
+ }
+
+ /* select is after the last node */
+ /* count is the number of free positions before the nodes in the
+ * tree */
+ node = rbtree_last(&reuse->tree_by_id);
+ log_assert(node && node != RBTREE_NULL); /* tree not empty */
+ curid = tree_by_id_get_id(node);
+ log_assert(count + (0xffff-curid) + reuse->tree_by_id.count == 0xffff);
+ return curid + 1 + (select - count);
+}
+
struct waiting_tcp*
pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet,
int timeout, comm_point_callback_type* callback, void* callback_arg)
{
struct pending_tcp* pend = sq->outnet->tcp_free;
+ struct reuse_tcp* reuse = NULL;
struct waiting_tcp* w;
- struct timeval tv;
- uint16_t id;
- /* if no buffer is free allocate space to store query */
+
+ verbose(VERB_CLIENT, "pending_tcp_query");
+ if(sldns_buffer_limit(packet) < sizeof(uint16_t)) {
+ verbose(VERB_ALGO, "pending tcp query with too short buffer < 2");
+ return NULL;
+ }
+
+ /* find out if a reused stream to the target exists */
+ /* if so, take it into use */
+ reuse = reuse_tcp_find(sq->outnet, &sq->addr, sq->addrlen,
+ sq->ssl_upstream);
+ if(reuse) {
+ log_reuse_tcp(VERB_CLIENT, "pending_tcp_query: found reuse", reuse);
+ log_assert(reuse->pending);
+ pend = reuse->pending;
+ reuse_tcp_lru_touch(sq->outnet, reuse);
+ }
+
+ /* if !pend but we have reuse streams, close a reuse stream
+ * to be able to open a new one to this target, no use waiting
+ * to reuse a file descriptor while another query needs to use
+ * that buffer and file descriptor now. */
+ if(!pend) {
+ reuse_tcp_close_oldest(sq->outnet);
+ pend = sq->outnet->tcp_free;
+ }
+
+ /* allocate space to store query */
w = (struct waiting_tcp*)malloc(sizeof(struct waiting_tcp)
- + (pend?0:sldns_buffer_limit(packet)));
+ + sldns_buffer_limit(packet));
if(!w) {
return NULL;
}
@@ -1319,47 +2106,76 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet,
free(w);
return NULL;
}
- w->pkt = NULL;
- w->pkt_len = 0;
- id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff;
- LDNS_ID_SET(sldns_buffer_begin(packet), id);
+ w->pkt = (uint8_t*)w + sizeof(struct waiting_tcp);
+ w->pkt_len = sldns_buffer_limit(packet);
+ memmove(w->pkt, sldns_buffer_begin(packet), w->pkt_len);
+ if(reuse)
+ w->id = reuse_tcp_select_id(reuse, sq->outnet);
+ else w->id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff;
+ LDNS_ID_SET(w->pkt, w->id);
memcpy(&w->addr, &sq->addr, sq->addrlen);
w->addrlen = sq->addrlen;
w->outnet = sq->outnet;
+ w->on_tcp_waiting_list = 0;
+ w->next_waiting = NULL;
w->cb = callback;
w->cb_arg = callback_arg;
w->ssl_upstream = sq->ssl_upstream;
w->tls_auth_name = sq->tls_auth_name;
-#ifndef S_SPLINT_S
- tv.tv_sec = timeout/1000;
- tv.tv_usec = (timeout%1000)*1000;
-#endif
- comm_timer_set(w->timer, &tv);
+ w->timeout = timeout;
+ w->id_node.key = NULL;
+ w->write_wait_prev = NULL;
+ w->write_wait_next = NULL;
+ w->write_wait_queued = 0;
+ w->error_count = 0;
if(pend) {
/* we have a buffer available right now */
- if(!outnet_tcp_take_into_use(w, sldns_buffer_begin(packet),
- sldns_buffer_limit(packet))) {
- waiting_tcp_delete(w);
- return NULL;
+ if(reuse) {
+ /* reuse existing fd, write query and continue */
+ /* store query in tree by id */
+ verbose(VERB_CLIENT, "pending_tcp_query: reuse, store");
+ w->next_waiting = (void*)pend;
+ reuse_tree_by_id_insert(&pend->reuse, w);
+ /* can we write right now? */
+ if(pend->query == NULL) {
+ /* write straight away */
+ /* stop the timer on read of the fd */
+ comm_point_stop_listening(pend->c);
+ pend->query = w;
+ outnet_tcp_take_query_setup(pend->c->fd, pend,
+ w);
+ } else {
+ /* put it in the waiting list for
+ * this stream */
+ reuse_write_wait_push_back(&pend->reuse, w);
+ }
+ } else {
+ /* create new fd and connect to addr, setup to
+ * write query */
+ verbose(VERB_CLIENT, "pending_tcp_query: new fd, connect");
+ rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp);
+ pend->reuse.pending = pend;
+ memcpy(&pend->reuse.addr, &sq->addr, sq->addrlen);
+ pend->reuse.addrlen = sq->addrlen;
+ if(!outnet_tcp_take_into_use(w)) {
+ waiting_tcp_delete(w);
+ return NULL;
+ }
}
-#ifdef USE_DNSTAP
- if(sq->outnet->dtenv &&
- (sq->outnet->dtenv->log_resolver_query_messages ||
- sq->outnet->dtenv->log_forwarder_query_messages))
- dt_msg_send_outside_query(sq->outnet->dtenv, &sq->addr,
- comm_tcp, sq->zone, sq->zonelen, packet);
-#endif
} else {
/* queue up */
- w->pkt = (uint8_t*)w + sizeof(struct waiting_tcp);
- w->pkt_len = sldns_buffer_limit(packet);
- memmove(w->pkt, sldns_buffer_begin(packet), w->pkt_len);
- w->next_waiting = NULL;
- if(sq->outnet->tcp_wait_last)
- sq->outnet->tcp_wait_last->next_waiting = w;
- else sq->outnet->tcp_wait_first = w;
- sq->outnet->tcp_wait_last = w;
+ /* waiting for a buffer on the outside network buffer wait
+ * list */
+ verbose(VERB_CLIENT, "pending_tcp_query: queue to wait");
+ outnet_add_tcp_waiting(sq->outnet, w);
}
+#ifdef USE_DNSTAP
+ if(sq->outnet->dtenv &&
+ (sq->outnet->dtenv->log_resolver_query_messages ||
+ sq->outnet->dtenv->log_forwarder_query_messages))
+ dt_msg_send_outside_query(sq->outnet->dtenv, &sq->addr,
+ comm_tcp, sq->zone, sq->zonelen, packet);
+#endif
return w;
}
@@ -1477,6 +2293,7 @@ static void
waiting_list_remove(struct outside_network* outnet, struct waiting_tcp* w)
{
struct waiting_tcp* p = outnet->tcp_wait_first, *prev = NULL;
+ w->on_tcp_waiting_list = 0;
while(p) {
if(p == w) {
/* remove w */
@@ -1492,10 +2309,53 @@ waiting_list_remove(struct outside_network* outnet, struct waiting_tcp* w)
}
}
+/** reuse tcp stream, remove serviced query from stream,
+ * return true if the stream is kept, false if it is to be closed */
+static int
+reuse_tcp_remove_serviced_keep(struct waiting_tcp* w,
+ struct serviced_query* sq)
+{
+ struct pending_tcp* pend_tcp = (struct pending_tcp*)w->next_waiting;
+ verbose(VERB_CLIENT, "reuse_tcp_remove_serviced_keep");
+ /* remove the callback. let query continue to write to not cancel
+ * the stream itself. also keep it as an entry in the tree_by_id,
+ * in case the answer returns (that we no longer want), but we cannot
+ * pick the same ID number meanwhile */
+ w->cb = NULL;
+ /* see if can be entered in reuse tree
+ * for that the FD has to be non-1 */
+ if(pend_tcp->c->fd == -1) {
+ verbose(VERB_CLIENT, "reuse_tcp_remove_serviced_keep: -1 fd");
+ return 0;
+ }
+ /* if in tree and used by other queries */
+ if(pend_tcp->reuse.node.key) {
+ verbose(VERB_CLIENT, "reuse_tcp_remove_serviced_keep: in use by other queries");
+ /* do not reset the keepalive timer, for that
+ * we'd need traffic, and this is where the serviced is
+ * removed due to state machine internal reasons,
+ * eg. iterator no longer interested in this query */
+ return 1;
+ }
+ /* if still open and want to keep it open */
+ if(pend_tcp->c->fd != -1 && sq->outnet->tcp_reuse.count <
+ sq->outnet->tcp_reuse_max) {
+ verbose(VERB_CLIENT, "reuse_tcp_remove_serviced_keep: keep open");
+ /* set a keepalive timer on it */
+ if(!reuse_tcp_insert(sq->outnet, pend_tcp)) {
+ return 0;
+ }
+ reuse_tcp_setup_timeout(pend_tcp);
+ return 1;
+ }
+ return 0;
+}
+
/** cleanup serviced query entry */
static void
serviced_delete(struct serviced_query* sq)
{
+ verbose(VERB_CLIENT, "serviced_delete");
if(sq->pending) {
/* clear up the pending query */
if(sq->status == serviced_query_UDP_EDNS ||
@@ -1503,6 +2363,7 @@ serviced_delete(struct serviced_query* sq)
sq->status == serviced_query_UDP_EDNS_FRAG ||
sq->status == serviced_query_UDP_EDNS_fallback) {
struct pending* p = (struct pending*)sq->pending;
+ verbose(VERB_CLIENT, "serviced_delete: UDP");
if(p->pc)
portcomm_loweruse(sq->outnet, p->pc);
pending_delete(sq->outnet, p);
@@ -1510,14 +2371,32 @@ serviced_delete(struct serviced_query* sq)
* mesh */
outnet_send_wait_udp(sq->outnet);
} else {
- struct waiting_tcp* p = (struct waiting_tcp*)
+ struct waiting_tcp* w = (struct waiting_tcp*)
sq->pending;
- if(p->pkt == NULL) {
- decommission_pending_tcp(sq->outnet,
- (struct pending_tcp*)p->next_waiting);
+ verbose(VERB_CLIENT, "serviced_delete: TCP");
+ /* if on stream-write-waiting list then
+ * remove from waiting list and waiting_tcp_delete */
+ if(w->write_wait_queued) {
+ struct pending_tcp* pend =
+ (struct pending_tcp*)w->next_waiting;
+ verbose(VERB_CLIENT, "serviced_delete: writewait");
+ reuse_tree_by_id_delete(&pend->reuse, w);
+ reuse_write_wait_remove(&pend->reuse, w);
+ waiting_tcp_delete(w);
+ } else if(!w->on_tcp_waiting_list) {
+ struct pending_tcp* pend =
+ (struct pending_tcp*)w->next_waiting;
+ verbose(VERB_CLIENT, "serviced_delete: tcpreusekeep");
+ if(!reuse_tcp_remove_serviced_keep(w, sq)) {
+ reuse_cb_and_decommission(sq->outnet,
+ pend, NETEVENT_CLOSED);
+ use_free_buffer(sq->outnet);
+ }
+ sq->pending = NULL;
} else {
- waiting_list_remove(sq->outnet, p);
- waiting_tcp_delete(p);
+ verbose(VERB_CLIENT, "serviced_delete: tcpwait");
+ waiting_list_remove(sq->outnet, w);
+ waiting_tcp_delete(w);
}
}
}
@@ -2097,18 +2976,18 @@ outnet_serviced_query(struct outside_network* outnet,
{
struct serviced_query* sq;
struct service_callback* cb;
- struct edns_tag_addr* client_tag_addr;
+ struct edns_string_addr* client_string_addr;
if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen,
qstate, qstate->region))
return NULL;
- if((client_tag_addr = edns_tag_addr_lookup(&env->edns_tags->client_tags,
- addr, addrlen))) {
- uint16_t client_tag = htons(client_tag_addr->tag_data);
+ if((client_string_addr = edns_string_addr_lookup(
+ &env->edns_strings->client_strings, addr, addrlen))) {
edns_opt_list_append(&qstate->edns_opts_back_out,
- env->edns_tags->client_tag_opcode, 2,
- (uint8_t*)&client_tag, qstate->region);
+ env->edns_strings->client_string_opcode,
+ client_string_addr->string_len,
+ client_string_addr->string, qstate->region);
}
serviced_gen_query(buff, qinfo->qname, qinfo->qname_len, qinfo->qtype,
diff --git a/sbin/unwind/libunbound/services/outside_network.h b/sbin/unwind/libunbound/services/outside_network.h
index c8f6d5724a8..2fe97fa6c5c 100644
--- a/sbin/unwind/libunbound/services/outside_network.h
+++ b/sbin/unwind/libunbound/services/outside_network.h
@@ -52,6 +52,7 @@ struct ub_randstate;
struct pending_tcp;
struct waiting_tcp;
struct waiting_udp;
+struct reuse_tcp;
struct infra_cache;
struct port_comm;
struct port_if;
@@ -106,6 +107,9 @@ struct outside_network {
int delayclose;
/** timeout for delayclose */
struct timeval delay_tv;
+ /** if we perform udp-connect, connect() for UDP socket to mitigate
+ * ICMP side channel leakage */
+ int udp_connect;
/** array of outgoing IP4 interfaces */
struct port_if* ip4_ifs;
@@ -154,6 +158,21 @@ struct outside_network {
size_t num_tcp;
/** number of tcp communication points in use. */
size_t num_tcp_outgoing;
+ /**
+ * tree of still-open and waiting tcp connections for reuse.
+ * can be closed and reopened to get a new tcp connection.
+ * or reused to the same destination again. with timeout to close.
+ * Entries are of type struct reuse_tcp.
+ * The entries are both active and empty connections.
+ */
+ rbtree_type tcp_reuse;
+ /** max number of tcp_reuse entries we want to keep open */
+ size_t tcp_reuse_max;
+ /** first and last(oldest) in lru list of reuse connections.
+ * the oldest can be closed to get a new free pending_tcp if needed
+ * The list contains empty connections, that wait for timeout or
+ * a new query that can use the existing connection. */
+ struct reuse_tcp* tcp_reuse_first, *tcp_reuse_last;
/** list of tcp comm points that are free for use */
struct pending_tcp* tcp_free;
/** list of tcp queries waiting for a buffer */
@@ -212,6 +231,76 @@ struct port_comm {
};
/**
+ * Reuse TCP connection, still open can be used again.
+ */
+struct reuse_tcp {
+ /** rbtree node with links in tcp_reuse tree. key is NULL when not
+ * in tree. Both active and empty connections are in the tree.
+ * key is a pointer to this structure, the members used to compare
+ * are the sockaddr and and then is-ssl bool, and then ptr value is
+ * used in case the same address exists several times in the tree
+ * when there are multiple connections to the same destination to
+ * make the rbtree items unique. */
+ rbnode_type node;
+ /** the key for the tcp_reuse tree. address of peer, ip4 or ip6,
+ * and port number of peer */
+ struct sockaddr_storage addr;
+ /** length of addr */
+ socklen_t addrlen;
+ /** also key for tcp_reuse tree, if ssl is used */
+ int is_ssl;
+ /** lru chain, so that the oldest can be removed to get a new
+ * connection when all are in (re)use. oldest is last in list.
+ * The lru only contains empty connections waiting for reuse,
+ * the ones with active queries are not on the list because they
+ * do not need to be closed to make space for others. They already
+ * service a query so the close for another query does not help
+ * service a larger number of queries. */
+ struct reuse_tcp* lru_next, *lru_prev;
+ /** true if the reuse_tcp item is on the lru list with empty items */
+ int item_on_lru_list;
+ /** the connection to reuse, the fd is non-1 and is open.
+ * the addr and port determine where the connection is going,
+ * and is key to the rbtree. The SSL ptr determines if it is
+ * a TLS connection or a plain TCP connection there. And TLS
+ * or not is also part of the key to the rbtree.
+ * There is a timeout and read event on the fd, to close it. */
+ struct pending_tcp* pending;
+ /**
+ * The more read again value pointed to by the commpoint
+ * tcp_more_read_again pointer, so that it exists after commpoint
+ * delete
+ */
+ int cp_more_read_again;
+ /**
+ * The more write again value pointed to by the commpoint
+ * tcp_more_write_again pointer, so that it exists after commpoint
+ * delete
+ */
+ int cp_more_write_again;
+ /** rbtree with other queries waiting on the connection, by ID number,
+ * of type struct waiting_tcp. It is for looking up received
+ * answers to the structure for callback. And also to see if ID
+ * numbers are unused and can be used for a new query.
+ * The write_wait elements are also in the tree, so that ID numbers
+ * can be looked up also for them. They are bool write_wait_queued. */
+ rbtree_type tree_by_id;
+ /** list of queries waiting to be written on the channel,
+ * if NULL no queries are waiting to be written and the pending->query
+ * is the query currently serviced. The first is the next in line.
+ * They are also in the tree_by_id. Once written, the are removed
+ * from this list, but stay in the tree. */
+ struct waiting_tcp* write_wait_first, *write_wait_last;
+ /** the outside network it is part of */
+ struct outside_network* outnet;
+};
+
+/** max number of queries on a reuse connection */
+#define MAX_REUSE_TCP_QUERIES 200
+/** timeout for REUSE entries in milliseconds. */
+#define REUSE_TIMEOUT 60000
+
+/**
* A query that has an answer pending for it.
*/
struct pending {
@@ -255,12 +344,15 @@ struct pending {
struct pending_tcp {
/** next in list of free tcp comm points, or NULL. */
struct pending_tcp* next_free;
- /** the ID for the query; checked in reply */
- uint16_t id;
/** tcp comm point it was sent on (and reply must come back on). */
struct comm_point* c;
/** the query being serviced, NULL if the pending_tcp is unused. */
struct waiting_tcp* query;
+ /** the pre-allocated reuse tcp structure. if ->pending is nonNULL
+ * it is in use and the connection is waiting for reuse.
+ * It is here for memory pre-allocation, and used to make this
+ * pending_tcp wait for reuse. */
+ struct reuse_tcp reuse;
};
/**
@@ -269,12 +361,27 @@ struct pending_tcp {
struct waiting_tcp {
/**
* next in waiting list.
- * if pkt==0, this points to the pending_tcp structure.
+ * if on_tcp_waiting_list==0, this points to the pending_tcp structure.
*/
struct waiting_tcp* next_waiting;
+ /** if true the item is on the tcp waiting list and next_waiting
+ * is used for that. If false, the next_waiting points to the
+ * pending_tcp */
+ int on_tcp_waiting_list;
+ /** next and prev in query waiting list for stream connection */
+ struct waiting_tcp* write_wait_prev, *write_wait_next;
+ /** true if the waiting_tcp structure is on the write_wait queue */
+ int write_wait_queued;
+ /** entry in reuse.tree_by_id, if key is NULL, not in tree, otherwise,
+ * this struct is key and sorted by ID (from waiting_tcp.id). */
+ rbnode_type id_node;
+ /** the ID for the query; checked in reply */
+ uint16_t id;
/** timeout event; timer keeps running whether the query is
* waiting for a buffer or the tcp reply is pending */
struct comm_timer* timer;
+ /** timeout in msec */
+ int timeout;
/** the outside network it is part of */
struct outside_network* outnet;
/** remote address. */
@@ -284,13 +391,14 @@ struct waiting_tcp {
/**
* The query itself, the query packet to send.
* allocated after the waiting_tcp structure.
- * set to NULL when the query is serviced and it part of pending_tcp.
- * if this is NULL, the next_waiting points to the pending_tcp.
*/
uint8_t* pkt;
/** length of query packet. */
size_t pkt_len;
- /** callback for the timeout, error or reply to the message */
+ /** callback for the timeout, error or reply to the message,
+ * or NULL if no user is waiting. the entry uses an ID number.
+ * a query that was written is no longer needed, but the ID number
+ * and a reply will come back and can be ignored if NULL */
comm_point_callback_type* cb;
/** callback user argument */
void* cb_arg;
@@ -298,6 +406,8 @@ struct waiting_tcp {
int ssl_upstream;
/** ref to the tls_auth_name from the serviced_query */
char* tls_auth_name;
+ /** the packet was involved in an error, to stop looping errors */
+ int error_count;
};
/**
@@ -421,6 +531,7 @@ struct serviced_query {
* msec to wait on timeouted udp sockets.
* @param tls_use_sni: if SNI is used for TLS connections.
* @param dtenv: environment to send dnstap events with (if enabled).
+ * @param udp_connect: if the udp_connect option is enabled.
* @return: the new structure (with no pending answers) or NULL on error.
*/
struct outside_network* outside_network_create(struct comm_base* base,
@@ -429,7 +540,8 @@ struct outside_network* outside_network_create(struct comm_base* base,
struct ub_randstate* rnd, int use_caps_for_id, int* availports,
int numavailports, size_t unwanted_threshold, int tcp_mss,
void (*unwanted_action)(void*), void* unwanted_param, int do_udp,
- void* sslctx, int delayclose, int tls_use_sni, struct dt_env *dtenv);
+ void* sslctx, int delayclose, int tls_use_sni, struct dt_env *dtenv,
+ int udp_connect);
/**
* Delete outside_network structure.
@@ -546,6 +658,19 @@ size_t outnet_get_mem(struct outside_network* outnet);
*/
size_t serviced_get_mem(struct serviced_query* sq);
+/** Pick random ID value for a tcp stream, avoids existing IDs. */
+uint16_t reuse_tcp_select_id(struct reuse_tcp* reuse,
+ struct outside_network* outnet);
+
+/** find element in tree by id */
+struct waiting_tcp* reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id);
+
+/** insert element in tree by id */
+void reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w);
+
+/** delete readwait waiting_tcp elements, deletes the elements in the list */
+void reuse_del_readwait(rbtree_type* tree_by_id);
+
/** get TCP file descriptor for address, returns -1 on failure,
* tcp_mss is 0 or maxseg size to set for TCP packets. */
int outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, int dscp);
@@ -643,4 +768,10 @@ int pending_cmp(const void* key1, const void* key2);
/** compare function of serviced query rbtree */
int serviced_cmp(const void* key1, const void* key2);
+/** compare function of reuse_tcp rbtree in outside_network struct */
+int reuse_cmp(const void* key1, const void* key2);
+
+/** compare function of reuse_tcp tree_by_id rbtree */
+int reuse_id_cmp(const void* key1, const void* key2);
+
#endif /* OUTSIDE_NETWORK_H */
diff --git a/sbin/unwind/libunbound/services/rpz.c b/sbin/unwind/libunbound/services/rpz.c
index ba5dd186daa..13304652cc0 100644
--- a/sbin/unwind/libunbound/services/rpz.c
+++ b/sbin/unwind/libunbound/services/rpz.c
@@ -440,6 +440,8 @@ err:
respip_set_delete(r->respip_set);
if(r->taglist)
free(r->taglist);
+ if(r->region)
+ regional_destroy(r->region);
free(r);
}
return NULL;
diff --git a/sbin/unwind/libunbound/util/config_file.c b/sbin/unwind/libunbound/util/config_file.c
index fb3a8bc5683..bec1e5503f5 100644
--- a/sbin/unwind/libunbound/util/config_file.c
+++ b/sbin/unwind/libunbound/util/config_file.c
@@ -170,7 +170,9 @@ config_create(void)
cfg->infra_cache_slabs = 4;
cfg->infra_cache_numhosts = 10000;
cfg->infra_cache_min_rtt = 50;
+ cfg->infra_keep_probing = 0;
cfg->delay_close = 0;
+ cfg->udp_connect = 1;
if(!(cfg->outgoing_avail_ports = (int*)calloc(65536, sizeof(int))))
goto error_exit;
init_outgoing_availports(cfg->outgoing_avail_ports, 65536);
@@ -321,8 +323,8 @@ config_create(void)
cfg->qname_minimisation_strict = 0;
cfg->shm_enable = 0;
cfg->shm_key = 11777;
- cfg->edns_client_tags = NULL;
- cfg->edns_client_tag_opcode = LDNS_EDNS_CLIENT_TAG;
+ cfg->edns_client_strings = NULL;
+ cfg->edns_client_string_opcode = 65001;
cfg->dnscrypt = 0;
cfg->dnscrypt_port = 0;
cfg->dnscrypt_provider = NULL;
@@ -522,11 +524,12 @@ int config_set_option(struct config_file* cfg, const char* opt,
else S_STR("tls-ciphersuites:", tls_ciphersuites)
else S_YNO("tls-use-sni:", tls_use_sni)
else S_NUMBER_NONZERO("https-port:", https_port)
- else S_STR("http-endpoint", http_endpoint)
- else S_NUMBER_NONZERO("http-max-streams", http_max_streams)
- else S_MEMSIZE("http-query-buffer-size", http_query_buffer_size)
- else S_MEMSIZE("http-response-buffer-size", http_response_buffer_size)
- else S_YNO("http-nodelay", http_nodelay)
+ else S_STR("http-endpoint:", http_endpoint)
+ else S_NUMBER_NONZERO("http-max-streams:", http_max_streams)
+ else S_MEMSIZE("http-query-buffer-size:", http_query_buffer_size)
+ else S_MEMSIZE("http-response-buffer-size:", http_response_buffer_size)
+ else S_YNO("http-nodelay:", http_nodelay)
+ else S_YNO("http-notls-downstream:", http_notls_downstream)
else S_YNO("interface-automatic:", if_automatic)
else S_YNO("use-systemd:", use_systemd)
else S_YNO("do-daemonize:", do_daemonize)
@@ -562,10 +565,12 @@ int config_set_option(struct config_file* cfg, const char* opt,
IS_NUMBER_OR_ZERO; cfg->infra_cache_min_rtt = atoi(val);
RTT_MIN_TIMEOUT=cfg->infra_cache_min_rtt;
}
+ else S_YNO("infra-keep-probing:", infra_keep_probing)
else S_NUMBER_OR_ZERO("infra-host-ttl:", host_ttl)
else S_POW2("infra-cache-slabs:", infra_cache_slabs)
else S_SIZET_NONZERO("infra-cache-numhosts:", infra_cache_numhosts)
else S_NUMBER_OR_ZERO("delay-close:", delay_close)
+ else S_YNO("udp-connect:", udp_connect)
else S_STR("chroot:", chrootdir)
else S_STR("username:", username)
else S_STR("directory:", directory)
@@ -958,8 +963,10 @@ config_get_option(struct config_file* cfg, const char* opt,
else O_DEC(opt, "infra-host-ttl", host_ttl)
else O_DEC(opt, "infra-cache-slabs", infra_cache_slabs)
else O_DEC(opt, "infra-cache-min-rtt", infra_cache_min_rtt)
+ else O_YNO(opt, "infra-keep-probing", infra_keep_probing)
else O_MEM(opt, "infra-cache-numhosts", infra_cache_numhosts)
else O_UNS(opt, "delay-close", delay_close)
+ else O_YNO(opt, "udp-connect", udp_connect)
else O_YNO(opt, "do-ip4", do_ip4)
else O_YNO(opt, "do-ip6", do_ip6)
else O_YNO(opt, "do-udp", do_udp)
@@ -990,6 +997,7 @@ config_get_option(struct config_file* cfg, const char* opt,
else O_MEM(opt, "http-query-buffer-size", http_query_buffer_size)
else O_MEM(opt, "http-response-buffer-size", http_response_buffer_size)
else O_YNO(opt, "http-nodelay", http_nodelay)
+ else O_YNO(opt, "http-notls-downstream", http_notls_downstream)
else O_YNO(opt, "use-systemd", use_systemd)
else O_YNO(opt, "do-daemonize", do_daemonize)
else O_STR(opt, "chroot", chrootdir)
@@ -1150,7 +1158,7 @@ config_get_option(struct config_file* cfg, const char* opt,
else O_LS3(opt, "access-control-tag-action", acl_tag_actions)
else O_LS3(opt, "access-control-tag-data", acl_tag_datas)
else O_LS2(opt, "access-control-view", acl_view)
- else O_LS2(opt, "edns-client-tags", edns_client_tags)
+ else O_LS2(opt, "edns-client-strings", edns_client_strings)
#ifdef USE_IPSECMOD
else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled)
else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus)
@@ -1519,7 +1527,7 @@ config_delete(struct config_file* cfg)
config_deldblstrlist(cfg->ratelimit_below_domain);
config_delstrlist(cfg->python_script);
config_delstrlist(cfg->dynlib_file);
- config_deldblstrlist(cfg->edns_client_tags);
+ config_deldblstrlist(cfg->edns_client_strings);
#ifdef USE_IPSECMOD
free(cfg->ipsecmod_hook);
config_delstrlist(cfg->ipsecmod_whitelist);
diff --git a/sbin/unwind/libunbound/util/config_file.h b/sbin/unwind/libunbound/util/config_file.h
index 7750eaa0e6b..55654402153 100644
--- a/sbin/unwind/libunbound/util/config_file.h
+++ b/sbin/unwind/libunbound/util/config_file.h
@@ -143,6 +143,8 @@ struct config_file {
size_t http_response_buffer_size;
/** set TCP_NODELAY option for http sockets */
int http_nodelay;
+ /** Disable TLS for http sockets downstream */
+ int http_notls_downstream;
/** outgoing port range number of ports (per thread) */
int outgoing_num_ports;
@@ -179,8 +181,12 @@ struct config_file {
size_t infra_cache_numhosts;
/** min value for infra cache rtt */
int infra_cache_min_rtt;
+ /** keep probing hosts that are down */
+ int infra_keep_probing;
/** delay close of udp-timeouted ports, if 0 no delayclose. in msec */
int delay_close;
+ /** udp_connect enable uses UDP connect to mitigate ICMP side channel */
+ int udp_connect;
/** the target fetch policy for the iterator */
char* target_fetch_policy;
@@ -562,10 +568,10 @@ struct config_file {
/** SHM data - key for the shm */
int shm_key;
- /** list of EDNS client tag entries, linked list */
- struct config_str2list* edns_client_tags;
- /** EDNS opcode to use for EDNS client tags */
- uint16_t edns_client_tag_opcode;
+ /** list of EDNS client string entries, linked list */
+ struct config_str2list* edns_client_strings;
+ /** EDNS opcode to use for EDNS client strings */
+ uint16_t edns_client_string_opcode;
/** DNSCrypt */
/** true to enable dnscrypt */
diff --git a/sbin/unwind/libunbound/util/configlexer.c b/sbin/unwind/libunbound/util/configlexer.c
index 18480f2b46b..d4969aca81d 100644
--- a/sbin/unwind/libunbound/util/configlexer.c
+++ b/sbin/unwind/libunbound/util/configlexer.c
@@ -5,7 +5,7 @@
#define YY_INT_ALIGNED short int
-/* $OpenBSD: configlexer.c,v 1.8 2020/10/28 14:26:59 florian Exp $ */
+/* $OpenBSD: configlexer.c,v 1.9 2020/12/11 12:21:40 florian Exp $ */
/* A lexical scanner generated by flex */
@@ -27,7 +27,7 @@
/* end standard C headers. */
-/* $OpenBSD: configlexer.c,v 1.8 2020/10/28 14:26:59 florian Exp $ */
+/* $OpenBSD: configlexer.c,v 1.9 2020/12/11 12:21:40 florian Exp $ */
/* flex integer type definitions */
@@ -368,8 +368,8 @@ static void yy_fatal_error (yyconst char msg[] );
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 334
-#define YY_END_OF_BUFFER 335
+#define YY_NUM_RULES 337
+#define YY_END_OF_BUFFER 338
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -377,366 +377,371 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[3253] =
+static yyconst flex_int16_t yy_accept[3292] =
{ 0,
- 1, 1, 308, 308, 312, 312, 316, 316, 320, 320,
- 1, 1, 324, 324, 328, 328, 335, 332, 1, 306,
- 306, 333, 2, 333, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 308, 309, 309, 310,
- 333, 312, 313, 313, 314, 333, 319, 316, 317, 317,
- 318, 333, 320, 321, 321, 322, 333, 331, 307, 2,
- 311, 333, 331, 327, 324, 325, 325, 326, 333, 328,
- 329, 329, 330, 333, 332, 0, 1, 2, 2, 2,
- 2, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 308, 0, 312,
- 0, 319, 0, 316, 320, 0, 331, 0, 2, 2,
- 331, 327, 0, 324, 328, 0, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 331, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 122, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 131, 332, 332, 332, 332, 332, 332,
- 332, 331, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 106, 332, 332, 332, 332, 332, 332, 8, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 123, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 136, 332, 331,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 299, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 331,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 63, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 235, 332, 14,
- 15, 332, 19, 18, 332, 332, 219, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 129, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 217,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 3, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 331, 332, 332, 332, 332, 332, 332, 332,
- 293, 332, 332, 292, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 315, 332, 332, 332, 332, 332, 332, 332, 62, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 66, 332, 266, 332, 332,
- 332, 332, 332, 332, 332, 332, 300, 301, 332, 332,
- 332, 332, 332, 67, 332, 332, 130, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 126, 332, 332, 332, 332, 332, 332, 332, 332,
- 206, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 21, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 155, 332, 332, 331, 315, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 104, 332, 332, 332,
-
- 332, 332, 332, 332, 274, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 178, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 154, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 103, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 32, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 33, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 64, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 128, 331, 332, 332,
- 332, 332, 332, 121, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 65,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 239, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 179, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 53, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 257, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 57, 332, 58, 332, 332, 332, 332, 332,
- 107, 332, 108, 332, 332, 332, 332, 105, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 7, 332, 331, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 228, 332, 332,
- 332, 332, 157, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 240,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 45, 332, 332, 332, 332,
- 332, 332, 332, 332, 54, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 198,
- 332, 197, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 16, 17,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 68, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 205, 332, 332, 332, 332,
- 332, 332, 110, 332, 109, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 189, 332, 332, 332,
- 332, 332, 332, 332, 332, 137, 331, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 98, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 87, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 218, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 91, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 61, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 192, 193, 332, 332, 332, 268, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 6,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 272, 332, 332, 332, 332, 332, 332, 294, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 42,
- 332, 332, 332, 332, 44, 332, 332, 332, 332, 332,
- 332, 332, 332, 51, 332, 332, 332, 332, 332, 332,
- 332, 331, 332, 185, 332, 332, 332, 132, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 210, 332,
- 186, 332, 332, 332, 225, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 52, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 134, 115, 332, 116,
- 332, 332, 332, 114, 332, 332, 332, 332, 332, 332,
- 332, 332, 152, 332, 332, 50, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 256, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 187, 332, 332, 332, 332, 332, 190, 332, 196, 332,
- 332, 332, 332, 332, 224, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 102,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 127, 332,
- 332, 332, 332, 332, 332, 59, 332, 332, 332, 26,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 20,
- 332, 332, 332, 332, 332, 332, 27, 36, 332, 162,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 331, 332, 332, 332, 332, 332, 332,
- 76, 78, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 276, 332, 332, 332, 332,
- 236, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 117, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 151, 332, 46, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 287, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 156, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 216, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 297, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 173, 332, 332, 332, 332, 332, 332, 332, 332, 111,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 168,
- 332, 180, 332, 332, 332, 332, 331, 332, 140, 332,
- 332, 332, 332, 332, 97, 332, 332, 332, 332, 208,
- 332, 332, 332, 332, 332, 332, 226, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 248, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 133, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 172, 332,
- 332, 332, 332, 332, 332, 79, 80, 332, 332, 332,
-
- 332, 332, 60, 290, 332, 332, 332, 332, 332, 86,
- 181, 332, 199, 332, 229, 332, 332, 191, 269, 332,
- 332, 332, 332, 332, 72, 332, 183, 332, 332, 332,
- 332, 332, 9, 332, 332, 332, 101, 332, 332, 332,
- 332, 261, 332, 332, 332, 332, 207, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 331, 332, 332, 332, 332, 171, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 158, 332,
- 275, 332, 332, 332, 332, 332, 247, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 220, 332,
- 332, 304, 332, 332, 332, 267, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 291, 332, 182, 332, 332, 332,
- 332, 332, 332, 332, 71, 73, 332, 332, 332, 332,
- 332, 332, 332, 100, 332, 332, 332, 332, 259, 332,
- 332, 332, 332, 271, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 212, 34, 28, 30, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 35, 332,
- 29, 31, 332, 332, 332, 332, 332, 332, 332, 332,
- 96, 332, 332, 332, 332, 332, 332, 331, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 214,
- 211, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 70,
- 332, 332, 332, 135, 332, 118, 332, 332, 332, 332,
- 332, 332, 332, 332, 153, 47, 332, 332, 323, 13,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 285,
-
- 332, 288, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 12, 332, 332, 22, 332, 332, 332, 265,
- 332, 332, 332, 332, 273, 332, 332, 332, 74, 332,
- 222, 332, 332, 332, 332, 213, 332, 332, 69, 332,
- 332, 332, 332, 23, 332, 43, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 167, 166,
- 323, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 215, 209, 332, 227, 332, 332, 277, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 81, 332,
- 332, 332, 260, 332, 332, 332, 332, 195, 332, 332,
- 332, 332, 221, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 295, 296, 164, 332, 332, 75, 332, 332,
- 332, 332, 174, 332, 332, 112, 113, 332, 332, 332,
- 332, 159, 332, 161, 332, 200, 332, 332, 332, 332,
- 165, 332, 332, 230, 332, 332, 332, 332, 332, 332,
- 332, 142, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 238, 332, 332, 332, 332, 332,
- 332, 332, 332, 24, 332, 270, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 201,
- 332, 332, 258, 332, 289, 332, 194, 332, 332, 332,
- 332, 55, 332, 332, 332, 332, 4, 332, 332, 332,
- 332, 125, 141, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 233, 37, 38, 332, 332, 332, 332, 332, 332,
- 332, 278, 332, 332, 332, 332, 332, 332, 332, 246,
- 332, 332, 332, 332, 332, 332, 332, 332, 204, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 84, 332, 56, 264, 332, 234, 332, 332, 332, 332,
-
- 11, 332, 332, 332, 332, 332, 332, 124, 332, 332,
- 332, 332, 202, 88, 332, 40, 332, 332, 332, 332,
- 332, 332, 332, 332, 170, 332, 332, 332, 332, 332,
- 144, 332, 332, 332, 332, 237, 332, 332, 332, 332,
- 332, 245, 332, 332, 332, 332, 138, 332, 332, 332,
- 119, 120, 332, 332, 332, 90, 94, 89, 332, 332,
- 332, 82, 332, 332, 332, 332, 332, 10, 332, 332,
- 332, 262, 298, 332, 332, 332, 332, 303, 39, 332,
- 332, 332, 332, 332, 169, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 332, 332, 332, 332, 332, 332, 95, 93,
- 332, 332, 332, 83, 286, 332, 332, 332, 332, 332,
- 332, 332, 188, 332, 332, 332, 332, 332, 203, 332,
- 332, 332, 332, 332, 332, 332, 332, 160, 77, 332,
- 332, 332, 332, 332, 279, 332, 332, 332, 332, 332,
- 332, 332, 242, 332, 332, 241, 139, 305, 332, 92,
- 48, 332, 145, 146, 149, 150, 147, 148, 85, 332,
- 263, 332, 332, 332, 332, 163, 332, 332, 332, 332,
- 332, 232, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
-
- 176, 175, 41, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 99, 332,
- 231, 332, 255, 283, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 49, 5, 332, 332,
- 223, 332, 332, 284, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 243, 25, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 244, 332, 332,
- 332, 143, 332, 332, 332, 332, 332, 332, 332, 332,
- 177, 332, 184, 332, 332, 332, 332, 332, 332, 332,
-
- 332, 332, 280, 332, 332, 332, 332, 332, 332, 332,
- 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
- 302, 332, 332, 251, 332, 332, 332, 332, 332, 281,
- 332, 332, 332, 332, 332, 332, 282, 332, 332, 332,
- 249, 332, 252, 253, 332, 332, 332, 332, 332, 250,
- 254, 0
+ 1, 1, 311, 311, 315, 315, 319, 319, 323, 323,
+ 1, 1, 327, 327, 331, 331, 338, 335, 1, 309,
+ 309, 336, 2, 336, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 311, 312, 312, 313,
+ 336, 315, 316, 316, 317, 336, 322, 319, 320, 320,
+ 321, 336, 323, 324, 324, 325, 336, 334, 310, 2,
+ 314, 336, 334, 330, 327, 328, 328, 329, 336, 331,
+ 332, 332, 333, 336, 335, 0, 1, 2, 2, 2,
+ 2, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 311, 0, 315,
+ 0, 322, 0, 319, 323, 0, 334, 0, 2, 2,
+ 334, 330, 0, 327, 331, 0, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 334, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 125, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 134, 335, 335, 335, 335, 335, 335,
+ 335, 334, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 109, 335, 335, 335, 335, 335, 335, 8, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 126, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 139, 335,
+ 334, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 302, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 334, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 64, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 238,
+ 335, 14, 15, 335, 19, 18, 335, 335, 222, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 132, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 220, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 3, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 334, 335, 335, 335,
+ 335, 335, 335, 335, 296, 335, 335, 295, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 318, 335, 335, 335, 335,
+ 335, 335, 335, 335, 63, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 67, 335, 269, 335, 335, 335, 335, 335, 335,
+ 335, 335, 303, 304, 335, 335, 335, 335, 335, 68,
+
+ 335, 335, 133, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 129, 335, 335,
+ 335, 335, 335, 335, 335, 335, 209, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 21, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 158, 335, 335,
+ 334, 318, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 107, 335, 335, 335, 335, 335, 335,
+ 335, 277, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 181,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 157,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 106, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 32, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 33, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 65, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 131, 334, 335, 335,
+ 335, 335, 335, 124, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 66,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 242, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 182, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 54, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 260, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 58, 335, 59, 335, 335, 335,
+ 335, 335, 110, 335, 111, 335, 335, 335, 335, 108,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 7,
+ 335, 334, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 231, 335, 335, 335, 335, 160, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 243, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 45,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 55,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 201, 335, 200, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 16, 17, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 69, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 208, 335, 335, 335, 335, 335, 335, 113, 335, 112,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 192, 335, 335, 335, 335, 335, 335, 335,
+ 335, 140, 334, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 101, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 89, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 221,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 94, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 62, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 195,
+ 196, 335, 335, 335, 271, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 6, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 275,
+ 335, 335, 335, 335, 335, 335, 297, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 42, 335, 335,
+ 335, 335, 44, 335, 335, 335, 90, 335, 335, 335,
+ 335, 335, 52, 335, 335, 335, 335, 335, 335, 335,
+ 334, 335, 188, 335, 335, 335, 135, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 213, 335, 189,
+
+ 335, 335, 335, 228, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 53, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 137, 118, 335, 119, 335,
+ 335, 335, 117, 335, 335, 335, 335, 335, 335, 335,
+ 335, 155, 335, 335, 50, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 259, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 190, 335, 335, 335, 335, 335, 193, 335, 199,
+ 335, 335, 335, 335, 335, 227, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 105, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 130,
+ 335, 335, 335, 335, 335, 335, 60, 335, 335, 335,
+ 26, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 20, 335, 335, 335, 335, 335, 335, 27, 36, 335,
+ 165, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 334, 335, 335, 335, 335, 335,
+ 335, 77, 79, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 279, 335, 335, 335,
+
+ 335, 239, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 120, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 154, 335, 46, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 290, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 159, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 219, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 300, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 176, 335, 335, 335, 335, 335, 335,
+ 335, 335, 114, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 171, 335, 183, 335, 335, 335, 335, 334,
+ 335, 143, 335, 335, 335, 335, 335, 100, 335, 335,
+ 335, 335, 211, 335, 335, 335, 335, 335, 335, 229,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 251, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 136, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 175, 335, 335, 335, 335, 335, 335, 80,
+ 335, 81, 335, 335, 335, 335, 335, 61, 293, 335,
+ 335, 335, 335, 335, 88, 184, 335, 202, 335, 232,
+ 335, 335, 194, 272, 335, 335, 335, 335, 335, 73,
+ 335, 186, 335, 335, 335, 335, 335, 9, 335, 335,
+ 335, 104, 335, 335, 335, 335, 264, 335, 335, 335,
+ 335, 210, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 334, 335, 335,
+ 335, 335, 174, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 161, 335, 278, 335, 335, 335, 335,
+ 335, 250, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 223, 335, 335, 335, 335, 335, 270,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 294, 335, 185, 335, 335, 335, 335, 335, 335, 335,
+
+ 72, 74, 335, 335, 335, 335, 335, 335, 335, 103,
+ 335, 335, 335, 335, 262, 335, 335, 335, 335, 274,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 215, 34, 28, 30, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 35, 335, 29, 31, 335, 335,
+ 335, 335, 335, 335, 335, 335, 99, 335, 335, 335,
+ 335, 335, 335, 334, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 217, 214, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 71, 335, 335, 335, 138,
+
+ 335, 121, 335, 335, 335, 335, 335, 335, 335, 335,
+ 156, 47, 335, 335, 335, 326, 13, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 288, 335, 291,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 12, 335, 335, 22, 335, 335, 335, 268, 335, 335,
+ 335, 335, 276, 335, 335, 335, 75, 335, 225, 335,
+ 335, 335, 335, 216, 335, 335, 70, 335, 335, 335,
+ 335, 23, 335, 43, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 170, 169, 326, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 218, 212,
+
+ 335, 230, 335, 335, 280, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 82, 335, 335,
+ 335, 335, 263, 335, 335, 335, 335, 198, 335, 335,
+ 335, 335, 224, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 298, 299, 167, 335, 335, 76, 335, 335,
+ 335, 335, 177, 335, 335, 115, 116, 335, 335, 335,
+ 335, 162, 335, 164, 335, 203, 335, 335, 335, 335,
+ 168, 335, 335, 233, 335, 335, 335, 335, 335, 335,
+
+ 335, 145, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 241, 335, 335, 335, 335, 335,
+ 335, 335, 307, 335, 24, 335, 273, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 86, 204, 335, 335, 261, 335, 292, 335, 197,
+ 335, 335, 335, 335, 56, 335, 335, 335, 335, 4,
+ 335, 335, 335, 335, 128, 144, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 236, 37, 38, 335, 335, 335,
+ 335, 335, 335, 335, 281, 335, 335, 335, 335, 335,
+
+ 335, 335, 249, 335, 335, 335, 335, 335, 335, 335,
+ 335, 207, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 85, 335, 57, 267, 335, 237,
+ 335, 335, 335, 335, 11, 335, 335, 335, 335, 335,
+ 335, 127, 335, 335, 335, 335, 205, 91, 335, 40,
+ 335, 335, 335, 335, 335, 335, 335, 335, 173, 335,
+ 335, 335, 335, 335, 147, 335, 335, 335, 335, 240,
+ 335, 335, 335, 335, 335, 248, 335, 335, 335, 335,
+ 141, 335, 335, 335, 122, 123, 335, 335, 335, 93,
+ 97, 92, 335, 335, 335, 335, 83, 335, 335, 335,
+
+ 335, 335, 10, 335, 335, 335, 265, 301, 335, 335,
+ 335, 335, 306, 39, 335, 335, 335, 335, 335, 172,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 98, 96, 335, 51, 335, 335, 84,
+ 289, 335, 335, 335, 335, 335, 335, 335, 191, 335,
+ 335, 335, 335, 335, 206, 335, 335, 335, 335, 335,
+ 335, 335, 335, 163, 78, 335, 335, 335, 335, 335,
+ 282, 335, 335, 335, 335, 335, 335, 335, 245, 335,
+ 335, 244, 142, 335, 335, 95, 48, 335, 148, 149,
+
+ 152, 153, 150, 151, 87, 335, 266, 335, 335, 335,
+ 335, 166, 335, 335, 335, 335, 335, 235, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 179, 178, 41,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 102, 335, 234, 335,
+ 258, 286, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 308, 335, 49, 5, 335, 335, 226,
+ 335, 335, 287, 335, 335, 335, 335, 335, 335, 335,
+
+ 335, 335, 246, 25, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 247, 335, 335, 335,
+ 146, 335, 335, 335, 335, 335, 335, 335, 335, 180,
+ 335, 187, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 283, 335, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 335, 335, 335, 335, 335, 335, 335, 305,
+ 335, 335, 254, 335, 335, 335, 335, 335, 284, 335,
+ 335, 335, 335, 335, 335, 285, 335, 335, 335, 252,
+ 335, 255, 256, 335, 335, 335, 335, 335, 253, 257,
+ 0
+
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -779,17 +784,17 @@ static yyconst flex_int32_t yy_meta[41] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1
} ;
-static yyconst flex_int16_t yy_base[3271] =
+static yyconst flex_int16_t yy_base[3310] =
{ 0,
0, 0, 38, 41, 44, 46, 59, 65, 71, 77,
- 90, 112, 96, 118, 124, 136, 3165, 3121, 81, 6365,
- 6365, 6365, 129, 52, 130, 63, 131, 152, 70, 140,
+ 90, 112, 96, 118, 124, 136, 3493, 3402, 81, 6426,
+ 6426, 6426, 129, 52, 130, 63, 131, 152, 70, 140,
149, 156, 57, 88, 76, 173, 175, 95, 184, 145,
- 185, 205, 194, 204, 178, 123, 3093, 6365, 6365, 6365,
- 107, 2724, 6365, 6365, 6365, 154, 2535, 2515, 6365, 6365,
- 6365, 226, 2454, 6365, 6365, 6365, 163, 2353, 6365, 238,
- 6365, 242, 148, 2067, 1986, 6365, 6365, 6365, 246, 1743,
- 6365, 6365, 6365, 250, 1651, 254, 219, 0, 258, 0,
+ 185, 205, 194, 204, 178, 123, 3176, 6426, 6426, 6426,
+ 107, 2960, 6426, 6426, 6426, 154, 2373, 2342, 6426, 6426,
+ 6426, 226, 2208, 6426, 6426, 6426, 163, 2071, 6426, 238,
+ 6426, 242, 148, 1858, 1710, 6426, 6426, 6426, 246, 1553,
+ 6426, 6426, 6426, 250, 1440, 254, 219, 0, 258, 0,
0, 165, 250, 191, 215, 243, 252, 256, 92, 260,
261, 262, 264, 265, 266, 273, 270, 277, 278, 281,
@@ -797,8 +802,8 @@ static yyconst flex_int16_t yy_base[3271] =
313, 314, 307, 323, 317, 312, 328, 326, 330, 334,
337, 340, 342, 343, 344, 346, 349, 354, 348, 356,
364, 357, 361, 359, 372, 376, 365, 360, 377, 380,
- 384, 385, 387, 388, 391, 399, 389, 1400, 411, 1203,
- 415, 1088, 422, 1027, 689, 426, 406, 430, 434, 0,
+ 384, 385, 387, 388, 391, 399, 389, 1400, 411, 1086,
+ 415, 984, 422, 871, 689, 426, 406, 430, 434, 0,
411, 280, 438, 233, 181, 442, 430, 442, 419, 438,
439, 441, 440, 443, 444, 445, 446, 449, 463, 455,
456, 467, 471, 472, 469, 476, 474, 460, 482, 488,
@@ -819,693 +824,703 @@ static yyconst flex_int16_t yy_base[3271] =
745, 743, 747, 749, 750, 766, 754, 739, 759, 767,
758, 760, 768, 774, 793, 779, 781, 789, 790, 791,
795, 797, 805, 807, 796, 809, 803, 810, 812, 813,
- 822, 818, 6365, 817, 820, 833, 826, 834, 835, 836,
- 841, 842, 823, 849, 847, 848, 852, 874, 856, 858,
- 854, 863, 866, 6365, 864, 868, 898, 870, 872, 892,
- 888, 884, 887, 889, 899, 896, 909, 902, 907, 911,
- 922, 918, 919, 920, 921, 924, 930, 937, 932, 934,
-
- 859, 935, 944, 942, 943, 946, 950, 952, 953, 955,
- 956, 769, 958, 962, 964, 973, 957, 965, 963, 975,
- 977, 981, 982, 992, 985, 984, 998, 988, 1010, 1005,
- 1006, 1007, 1013, 1009, 1008, 1017, 1019, 1021, 1022, 1023,
- 1024, 1035, 1030, 1031, 1033, 1037, 1038, 1039, 1041, 1044,
- 1045, 1047, 1049, 1051, 1050, 1056, 1060, 1058, 1066, 1061,
- 6365, 1068, 1070, 1072, 1073, 1074, 1075, 6365, 1077, 1071,
- 1076, 1078, 1090, 1093, 1104, 1081, 1085, 1100, 1103, 1101,
- 1105, 1113, 1109, 1114, 1116, 1112, 1118, 1119, 1121, 1124,
- 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6365, 1136, 1139,
-
- 1144, 1138, 1143, 1145, 1164, 1150, 1162, 1161, 1170, 1181,
- 1174, 1182, 1176, 1163, 1187, 1184, 1191, 1189, 1193, 1195,
- 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6365, 1208, 1211,
- 1220, 1221, 1222, 1223, 1224, 1225, 1137, 1226, 1228, 1227,
- 1231, 1235, 1245, 1252, 1236, 1253, 1239, 1254, 1249, 1250,
- 1256, 1259, 1258, 1260, 1270, 1266, 1272, 1281, 1284, 1283,
- 1286, 1293, 1295, 1275, 1288, 1298, 1268, 1290, 1291, 1302,
- 1292, 1303, 1304, 1306, 1313, 1308, 1311, 1314, 1316, 1317,
- 1320, 1315, 1322, 1321, 1324, 1331, 1328, 1332, 1339, 1334,
- 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6365, 1361, 1357,
-
- 1362, 1360, 1367, 1368, 1370, 1358, 1373, 1376, 1377, 1379,
- 1378, 1381, 1385, 1382, 1387, 1388, 1392, 1395, 1393, 1402,
- 1409, 1408, 1410, 1396, 1412, 1419, 1416, 1423, 1422, 1418,
- 1424, 1433, 1428, 1431, 1430, 1440, 1420, 1436, 1437, 1438,
- 1446, 1448, 1451, 1459, 1452, 1456, 1463, 1465, 1460, 1232,
- 1467, 1468, 1471, 1472, 1473, 1474, 1475, 1482, 1477, 1478,
- 1479, 1483, 1484, 1480, 1488, 1492, 1503, 1496, 1501, 1504,
- 1505, 1508, 1509, 1506, 1511, 1514, 1515, 1516, 1517, 1518,
- 1526, 1520, 1525, 1528, 1535, 1537, 1538, 1541, 1543, 1544,
- 1545, 1546, 1555, 1547, 1556, 1558, 1548, 1559, 1561, 1564,
-
- 1571, 1566, 1572, 1575, 1576, 1578, 1577, 1580, 1581, 1588,
- 1589, 1593, 6365, 1585, 1601, 1583, 1596, 1597, 1599, 1605,
- 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6365, 1614, 6365,
- 6365, 315, 6365, 6365, 1616, 1621, 6365, 1622, 1631, 1618,
- 1641, 1619, 1643, 1647, 1630, 1638, 1635, 1660, 1661, 1664,
- 1632, 1666, 1667, 1650, 1672, 1670, 1677, 1678, 1681, 1682,
- 1689, 1687, 1690, 1686, 1697, 1695, 1699, 1703, 1705, 1707,
- 1710, 1692, 1712, 1713, 1715, 1717, 1718, 1714, 1721, 1723,
- 1720, 1727, 1726, 1736, 1732, 1741, 1750, 6365, 1742, 1751,
- 1752, 1753, 1760, 1728, 1755, 1756, 1763, 1766, 1759, 1757,
-
- 1768, 1769, 1770, 1772, 1774, 1777, 1779, 1786, 1781, 6365,
- 1782, 1784, 1787, 1790, 1788, 1796, 1798, 1792, 1794, 1801,
- 1802, 1813, 1804, 1808, 1809, 1816, 1814, 1818, 6365, 1820,
- 1827, 1824, 1830, 1831, 1817, 1833, 1832, 1836, 1834, 1839,
- 1840, 1841, 1842, 1855, 1848, 1846, 1847, 1850, 1863, 1851,
- 1867, 1871, 1860, 1868, 1873, 1874, 1875, 1876, 1878, 1879,
- 1887, 1889, 1886, 1890, 1885, 1894, 1902, 1903, 1891, 1892,
- 1901, 1908, 1913, 1915, 1916, 1917, 1911, 1926, 1918, 1922,
- 1923, 1925, 1933, 1928, 1936, 1944, 1931, 1934, 1937, 1939,
- 6365, 1946, 1947, 6365, 1949, 1948, 1950, 1972, 1951, 1955,
-
- 1963, 1957, 1960, 1965, 1964, 1966, 1982, 1976, 1992, 1989,
- 1994, 1995, 1997, 2000, 1984, 2001, 2002, 2003, 2004, 2010,
- 1967, 2009, 2013, 2023, 2021, 2027, 2031, 2026, 2028, 2032,
- 2051, 2029, 2030, 2039, 2033, 2036, 2038, 2034, 2040, 2044,
- 2049, 2046, 2061, 2064, 2056, 2060, 2066, 2073, 2075, 2058,
- 6365, 2086, 2082, 2081, 2083, 2093, 2089, 2088, 6365, 2090,
- 2092, 2095, 2097, 2103, 2098, 2104, 2102, 2105, 2106, 2108,
- 2114, 2115, 2110, 2113, 2127, 6365, 2118, 6365, 2125, 2128,
- 2131, 2129, 2133, 2132, 2135, 2136, 6365, 6365, 2137, 2144,
- 2145, 2155, 2152, 6365, 2138, 2162, 6365, 2159, 2164, 2157,
-
- 2158, 2166, 2168, 2170, 2169, 2179, 2172, 2180, 2175, 2176,
- 2177, 6365, 2185, 2187, 2189, 2193, 2195, 2196, 2197, 2200,
- 6365, 2199, 2203, 2204, 2213, 2215, 2209, 2206, 2217, 2221,
- 2216, 2223, 2225, 2226, 2227, 2236, 2237, 2228, 2238, 2239,
- 2241, 6365, 2232, 2246, 2253, 2249, 2252, 2248, 2255, 2256,
- 2258, 2259, 2260, 2261, 2265, 2267, 2268, 2275, 2276, 2271,
- 2273, 2281, 2282, 2284, 2285, 2292, 2289, 2290, 2291, 2293,
- 6365, 2294, 2296, 2300, 171, 2302, 2304, 2303, 2306, 2305,
- 2309, 2312, 2323, 2327, 2322, 2324, 2326, 2325, 2331, 2333,
- 2334, 2335, 2336, 2337, 2341, 2340, 6365, 2343, 2346, 2348,
-
- 2349, 2351, 2352, 2362, 6365, 2354, 2368, 2365, 2374, 2375,
- 2363, 2380, 2371, 2361, 2384, 2386, 2385, 2387, 2389, 2388,
- 2392, 2395, 6365, 2397, 2400, 2401, 2398, 2407, 2409, 2408,
- 2410, 2411, 2415, 2416, 2420, 2422, 2419, 2421, 2423, 2424,
- 2427, 2430, 2432, 2436, 2437, 2438, 2439, 2443, 2441, 2447,
- 2448, 6365, 2457, 2449, 2459, 2461, 2450, 2460, 2463, 2477,
- 2467, 2474, 2472, 2478, 2489, 2480, 2482, 2487, 2483, 2495,
- 2492, 2505, 2504, 2506, 2513, 2496, 2515, 2518, 2507, 2510,
- 2520, 2519, 2525, 2522, 2524, 2532, 2537, 2533, 2540, 2534,
- 2545, 2558, 2549, 6365, 2547, 2553, 2541, 2557, 2570, 2562,
-
- 2561, 2567, 2563, 2565, 2573, 2575, 2576, 2584, 2579, 2581,
- 2582, 2586, 2585, 2588, 2587, 2593, 2595, 2602, 2598, 2604,
- 2606, 6365, 2607, 2609, 2611, 2612, 2616, 2617, 2620, 2622,
- 2624, 2625, 2626, 2628, 2631, 2632, 2633, 2634, 2636, 2638,
- 2641, 6365, 2649, 2642, 2643, 2644, 2650, 2654, 2656, 2660,
- 2663, 2666, 2667, 2668, 2669, 2670, 6365, 2678, 2679, 2675,
- 2687, 2677, 2682, 2684, 2689, 2690, 6365, 2691, 2692, 2693,
- 2700, 2702, 2697, 6365, 2704, 2699, 2705, 2707, 2708, 2709,
- 2711, 2714, 2717, 2718, 2721, 2726, 2733, 2722, 2730, 6365,
- 2728, 2742, 2734, 2740, 2738, 2744, 2748, 2750, 2751, 2753,
-
- 2755, 2760, 6365, 2767, 2766, 2764, 2777, 2754, 2769, 2772,
- 2778, 2779, 2780, 2781, 2782, 2785, 6365, 2786, 2788, 2789,
- 2791, 2793, 2794, 2796, 2808, 2799, 2803, 2804, 2809, 2810,
- 2813, 2814, 2816, 2821, 2817, 2820, 2827, 2830, 2831, 2833,
- 2836, 2844, 2834, 2842, 2843, 2839, 2846, 2847, 2856, 2857,
- 2858, 2860, 6365, 2863, 2864, 2865, 2854, 2866, 2869, 2870,
- 2873, 2875, 2871, 2879, 2877, 2881, 2884, 2894, 2898, 2886,
- 2889, 2896, 2899, 2900, 2902, 2901, 2904, 2905, 2914, 2911,
- 2910, 2919, 2912, 2921, 2928, 2925, 2926, 2929, 2930, 2932,
- 2917, 2935, 2933, 2937, 2939, 2942, 2953, 2954, 2943, 2955,
-
- 2956, 2957, 2958, 6365, 2961, 2962, 2963, 2966, 2969, 2972,
- 2975, 2982, 2973, 2974, 2984, 2990, 2991, 2981, 2992, 2983,
- 2999, 2997, 6365, 2998, 6365, 3000, 3002, 3004, 3012, 3008,
- 6365, 3014, 6365, 3015, 3020, 3009, 3011, 6365, 3023, 3017,
- 3022, 3029, 3024, 3032, 3033, 3035, 3034, 3041, 3036, 3038,
- 3043, 3044, 3046, 3049, 3050, 3054, 3051, 3061, 3067, 3055,
- 3064, 3057, 3062, 3070, 3072, 3076, 6365, 3078, 3080, 3082,
- 3083, 3084, 3085, 3086, 3087, 3089, 3090, 3092, 3102, 3098,
- 3108, 3095, 3114, 3117, 3124, 3105, 3126, 6365, 3109, 3128,
- 3119, 3129, 6365, 3131, 3106, 3132, 3139, 3134, 3137, 3141,
-
- 3142, 3143, 3146, 3147, 3149, 3154, 3158, 3161, 3162, 6365,
- 3167, 3163, 3150, 3170, 3178, 3180, 3185, 3182, 3183, 3188,
- 3192, 3190, 3191, 3153, 3193, 3194, 3196, 3203, 3206, 3202,
- 3211, 3198, 3208, 3210, 3215, 3201, 3216, 3217, 3218, 3224,
- 3225, 3222, 3223, 3226, 3227, 6365, 3229, 3230, 3231, 3249,
- 3233, 3234, 3245, 3235, 6365, 3251, 3247, 3252, 3258, 3260,
- 3262, 3255, 3263, 3264, 3265, 3266, 3268, 3271, 3272, 6365,
- 3276, 6365, 3273, 3286, 3279, 3285, 3290, 3292, 3294, 3300,
- 3293, 3295, 3303, 3304, 3301, 3305, 3307, 3311, 3313, 3315,
- 3318, 3327, 3317, 3319, 3323, 3328, 3329, 3331, 6365, 6365,
-
- 3333, 3334, 3335, 3338, 3339, 3344, 3346, 3350, 3351, 3353,
- 3355, 3357, 3366, 6365, 3363, 3364, 3367, 3368, 3378, 3369,
- 3381, 3388, 3385, 3392, 3391, 6365, 3374, 3370, 3399, 3383,
- 3395, 3406, 6365, 3401, 6365, 3402, 3403, 3405, 3407, 3410,
- 3411, 3412, 3414, 3418, 3425, 3433, 3429, 3431, 3415, 3420,
- 3432, 3434, 3443, 3436, 3440, 3441, 6365, 3445, 3446, 3448,
- 3449, 3450, 3457, 3460, 3453, 6365, 3461, 3463, 3465, 3467,
- 3468, 3470, 3472, 3474, 3475, 3479, 3481, 6365, 3477, 3483,
- 3490, 3485, 3487, 3492, 3495, 3499, 3501, 6365, 3504, 3506,
- 3513, 3511, 3508, 3512, 3516, 3517, 3518, 3521, 3523, 3522,
-
- 3524, 3525, 3526, 3528, 3530, 3533, 3531, 3544, 3545, 3532,
- 3553, 3554, 3536, 6365, 3546, 3558, 3559, 3560, 3561, 3567,
- 3568, 3571, 3573, 3562, 3577, 3584, 3566, 3574, 3589, 3586,
- 3597, 3593, 6365, 3598, 3594, 3605, 3579, 3600, 3602, 3606,
- 3608, 3610, 3607, 3611, 3614, 3617, 3624, 3619, 3620, 3621,
- 3629, 3625, 6365, 3636, 3634, 3627, 3637, 3643, 3644, 3652,
- 3647, 3649, 3650, 3658, 3651, 3660, 3653, 3662, 3663, 3666,
- 3655, 6365, 6365, 3668, 3670, 3672, 6365, 3674, 3676, 3685,
- 3687, 3678, 3688, 3682, 3691, 3680, 3692, 3690, 3694, 6365,
- 3696, 3704, 3702, 3705, 3713, 3714, 3718, 3715, 3719, 3709,
-
- 3711, 3721, 3723, 3724, 3725, 3731, 3740, 3741, 3727, 3737,
- 3739, 6365, 3736, 3738, 3744, 3746, 3748, 3750, 6365, 3753,
- 3754, 3755, 3757, 3763, 3764, 3769, 3771, 3773, 3774, 3776,
- 3777, 3778, 3779, 3781, 3786, 3784, 3791, 3792, 3783, 6365,
- 3796, 3797, 3800, 3803, 6365, 3807, 3810, 3817, 3818, 3814,
- 3816, 3815, 3825, 6365, 3822, 3824, 3823, 3826, 3836, 3831,
- 3838, 3837, 3829, 6365, 3833, 3839, 3843, 6365, 3844, 3849,
- 3855, 3857, 3846, 3865, 3861, 3863, 3864, 3860, 6365, 3871,
- 6365, 3872, 3862, 3877, 6365, 3873, 3879, 3881, 3883, 3880,
- 3887, 3888, 3894, 3896, 3884, 3890, 3898, 3900, 3901, 3902,
-
- 3909, 3906, 3908, 3910, 3911, 6365, 3914, 3912, 3913, 3920,
- 3931, 3918, 3923, 3929, 3933, 3934, 6365, 6365, 3937, 6365,
- 3939, 3940, 3941, 6365, 3943, 3945, 3952, 3944, 3948, 3951,
- 3955, 3960, 6365, 3963, 3964, 6365, 3966, 3973, 3969, 3970,
- 3971, 3974, 3977, 3978, 3981, 3982, 3983, 3979, 3985, 3984,
- 6365, 3987, 3988, 3989, 3997, 3980, 4002, 4006, 4008, 4004,
- 6365, 4010, 4012, 4016, 4018, 4019, 6365, 4020, 6365, 4017,
- 4021, 4025, 4031, 4027, 6365, 4036, 4028, 4040, 4032, 4043,
- 4045, 4044, 4050, 4041, 4051, 4060, 4052, 4053, 4056, 6365,
- 4061, 4062, 4068, 4069, 4063, 4065, 4079, 4072, 4081, 4074,
-
- 4082, 4087, 4084, 4088, 4093, 4091, 4097, 4095, 6365, 4099,
- 4101, 4104, 4115, 4107, 4105, 6365, 4106, 4119, 4121, 6365,
- 4110, 4112, 4120, 4128, 4122, 4130, 4131, 4135, 4136, 6365,
- 4133, 4134, 4137, 4138, 4139, 4141, 6365, 6365, 4152, 6365,
- 4153, 4142, 4154, 4155, 4156, 4161, 4163, 4166, 4168, 4160,
- 4172, 4177, 4174, 4164, 4184, 4191, 4194, 4189, 4190, 4180,
- 6365, 6365, 4196, 4201, 4197, 4204, 4207, 4193, 4199, 4215,
- 4213, 4210, 4220, 4221, 4228, 6365, 4225, 4212, 4230, 4223,
- 6365, 4214, 4231, 4224, 4233, 4235, 4237, 4238, 4241, 4244,
- 4242, 4246, 4252, 4250, 4253, 4251, 4259, 4257, 4260, 4262,
-
- 4263, 4268, 4271, 6365, 4272, 4273, 4274, 4275, 4278, 4281,
- 4282, 4283, 4284, 6365, 4289, 6365, 4288, 4285, 4294, 4307,
- 4308, 4287, 4297, 4309, 4299, 4314, 4317, 4319, 4311, 4320,
- 4321, 4325, 4328, 4330, 4331, 6365, 4335, 4324, 4332, 4338,
- 4342, 4346, 4339, 4348, 4343, 4354, 4349, 4351, 4360, 4363,
- 4355, 4357, 4365, 4367, 6365, 4368, 4371, 4372, 4375, 4376,
- 4377, 4378, 4384, 4388, 4380, 4382, 4389, 4393, 6365, 4390,
- 4395, 4396, 4398, 4404, 4401, 4407, 4406, 4409, 6365, 4414,
- 4405, 4415, 4416, 4417, 4419, 4423, 4426, 4429, 4431, 4436,
- 6365, 4428, 4441, 4442, 4432, 4445, 4434, 4443, 4444, 6365,
-
- 4459, 4460, 4451, 4467, 4450, 4468, 4469, 4472, 4453, 4463,
- 4479, 4475, 4480, 4481, 4483, 4473, 4491, 4494, 4493, 6365,
- 4486, 6365, 4495, 4498, 4502, 4500, 4503, 4505, 6365, 4507,
- 4510, 4512, 4513, 4515, 6365, 4517, 4514, 4516, 4520, 6365,
- 4518, 4533, 4519, 4522, 4536, 4540, 6365, 4543, 4544, 4545,
- 4552, 4554, 4549, 4556, 4537, 4559, 4553, 4557, 4561, 4562,
- 4570, 4567, 4568, 6365, 4572, 4566, 4575, 4577, 4584, 4579,
- 4585, 4586, 4592, 4587, 6365, 4589, 4593, 4595, 4596, 4597,
- 4598, 4599, 4608, 4603, 4606, 4607, 4611, 4612, 6365, 4617,
- 4614, 4620, 4627, 4623, 4632, 6365, 6365, 4622, 4637, 4639,
-
- 4619, 4640, 6365, 6365, 4643, 4650, 4646, 4649, 4651, 6365,
- 6365, 4653, 6365, 4654, 6365, 4655, 4657, 6365, 6365, 4656,
- 4659, 4662, 4663, 4665, 6365, 4671, 6365, 4680, 4675, 4666,
- 4677, 4678, 6365, 4679, 4681, 4687, 6365, 4688, 4690, 4689,
- 4691, 6365, 4695, 4700, 4692, 4696, 6365, 4701, 4705, 4708,
- 4709, 4710, 4712, 4716, 4715, 4720, 4721, 4723, 4722, 4725,
- 4732, 4736, 4738, 4740, 4741, 4726, 4743, 4745, 4749, 4747,
- 4751, 4752, 4754, 4756, 4757, 4761, 4765, 4758, 4762, 4628,
- 4766, 4767, 4768, 4771, 4775, 4780, 4777, 4781, 4782, 4783,
- 4784, 4785, 4788, 4789, 4792, 4794, 4797, 6365, 4793, 4798,
-
- 4803, 4810, 4804, 4814, 4816, 4806, 4823, 4824, 6365, 4827,
- 6365, 4829, 4815, 4831, 4817, 4832, 6365, 4834, 4835, 4837,
- 4838, 4839, 4840, 4841, 4844, 4845, 4849, 4850, 6365, 4856,
- 4846, 6365, 4852, 4857, 4869, 6365, 4862, 4873, 4865, 4870,
- 4875, 4876, 4877, 4878, 4881, 4879, 4885, 4887, 4889, 4893,
- 4901, 4903, 4910, 4890, 4894, 4892, 4912, 4905, 4906, 4913,
- 4914, 4920, 4921, 4928, 6365, 4915, 6365, 4922, 4924, 4929,
- 4930, 4932, 4933, 4935, 6365, 6365, 4936, 4939, 4945, 4940,
- 4946, 4948, 4957, 6365, 4951, 4958, 4960, 4952, 6365, 4963,
- 4949, 4967, 4971, 6365, 4968, 4972, 4973, 4975, 4976, 4983,
-
- 4979, 4985, 4986, 4988, 4990, 6365, 6365, 6365, 6365, 4991,
- 4993, 4997, 4998, 4999, 5001, 5004, 5006, 5003, 6365, 5008,
- 6365, 6365, 5009, 5016, 5017, 5019, 5020, 5022, 5023, 5025,
- 6365, 5027, 5029, 5030, 5036, 5038, 5040, 5044, 5045, 5048,
- 5046, 5047, 5055, 5054, 5056, 5058, 5061, 5063, 5068, 6365,
- 6365, 5069, 5071, 5072, 5080, 5076, 5078, 5077, 5090, 5085,
- 5087, 5086, 5088, 5093, 5094, 5102, 5104, 5100, 5097, 6365,
- 5106, 5107, 5108, 6365, 5113, 6365, 5114, 5116, 5099, 5110,
- 5118, 5120, 5130, 5124, 6365, 6365, 5132, 5128, 6365, 6365,
- 5135, 5136, 5138, 5140, 5141, 5137, 5143, 5145, 5142, 6365,
-
- 5147, 6365, 5148, 5149, 5151, 5152, 5165, 5169, 5170, 5167,
- 5171, 5173, 6365, 5172, 5174, 6365, 5176, 5175, 5182, 6365,
- 5183, 5185, 5191, 5193, 6365, 5195, 5196, 5199, 6365, 5202,
- 6365, 5186, 5205, 5207, 5214, 6365, 5198, 5211, 6365, 5216,
- 5221, 5222, 5217, 6365, 5209, 6365, 5223, 5229, 5231, 5234,
- 5224, 5236, 5237, 5226, 5238, 5246, 5242, 5245, 6365, 6365,
- 135, 5254, 5247, 5251, 5255, 5256, 5263, 5258, 5260, 5266,
- 6365, 6365, 5267, 6365, 5261, 5273, 6365, 5259, 5274, 5278,
- 5268, 5282, 5280, 5281, 5288, 5290, 5291, 5292, 5293, 5294,
- 5296, 5297, 5312, 5299, 5309, 5314, 5316, 5319, 5321, 5310,
-
- 5323, 5324, 5325, 5327, 5329, 5330, 5332, 5333, 6365, 5336,
- 5337, 5331, 6365, 5342, 5338, 5348, 5350, 6365, 5357, 5354,
- 5358, 5359, 6365, 5343, 5365, 5362, 5360, 5370, 5377, 5373,
- 5372, 5374, 6365, 6365, 6365, 5375, 5383, 6365, 5388, 5379,
- 5384, 5389, 6365, 5390, 5391, 6365, 6365, 5392, 5395, 5394,
- 5402, 6365, 5398, 6365, 5397, 6365, 5400, 5401, 5411, 5413,
- 6365, 5415, 5423, 6365, 5426, 5429, 5431, 5432, 5416, 5419,
- 5434, 6365, 5443, 5435, 5442, 5445, 5433, 5446, 5448, 5449,
- 5450, 5459, 5452, 5456, 6365, 5457, 5460, 5462, 5463, 5466,
- 5471, 5472, 5470, 6365, 5474, 6365, 5408, 5475, 5476, 5482,
-
- 5478, 5479, 5481, 5492, 5484, 5483, 5495, 5500, 5496, 6365,
- 5503, 5505, 6365, 5506, 6365, 5508, 6365, 5509, 5510, 5512,
- 5511, 6365, 5514, 5517, 5518, 5519, 6365, 5522, 5520, 5524,
- 5530, 6365, 6365, 5531, 5539, 5535, 5532, 5545, 5547, 5536,
- 5549, 5542, 5550, 5552, 5561, 5557, 5558, 5560, 5563, 5564,
- 5565, 6365, 6365, 6365, 5569, 5571, 5579, 5575, 5582, 5583,
- 5578, 6365, 5584, 5587, 5588, 5590, 5598, 5594, 5600, 6365,
- 5595, 5597, 5601, 5603, 5605, 5602, 5606, 5608, 6365, 5614,
- 5619, 5620, 5622, 5623, 5630, 5632, 5634, 5624, 5641, 5637,
- 6365, 5639, 6365, 6365, 5627, 6365, 5640, 5643, 5644, 5647,
-
- 6365, 5652, 5645, 5649, 5654, 5656, 5658, 6365, 5667, 5653,
- 5660, 5670, 6365, 6365, 5672, 6365, 5677, 5678, 5668, 5680,
- 5681, 5684, 5686, 5689, 6365, 5687, 5688, 5690, 5691, 5696,
- 6365, 5697, 5698, 5699, 5700, 6365, 5704, 5709, 5706, 5710,
- 5711, 6365, 5713, 5701, 5732, 5728, 6365, 5714, 5730, 5727,
- 6365, 6365, 5737, 5739, 5741, 6365, 6365, 6365, 5742, 5729,
- 5744, 6365, 5750, 5754, 5758, 5762, 5753, 6365, 5764, 5761,
- 5766, 6365, 6365, 5765, 5767, 5768, 5770, 6365, 6365, 5746,
- 5774, 5772, 5775, 5777, 6365, 5778, 5782, 5788, 5794, 5798,
- 5786, 5790, 5799, 5806, 5809, 5802, 5804, 5807, 5810, 5812,
-
- 5813, 5821, 5822, 5818, 5826, 5830, 5834, 5831, 6365, 6365,
- 5838, 5840, 5814, 6365, 6365, 5842, 5844, 5846, 5848, 5850,
- 5852, 5854, 6365, 5855, 5857, 5858, 5859, 5860, 6365, 5862,
- 5866, 5861, 5869, 5863, 5872, 5868, 5878, 6365, 6365, 5870,
- 5712, 5874, 5884, 5879, 6365, 5886, 5893, 5890, 5891, 5892,
- 5894, 5898, 6365, 5895, 5899, 6365, 6365, 6365, 5902, 6365,
- 6365, 5903, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 5906,
- 6365, 5905, 5916, 5920, 5922, 6365, 5907, 5923, 5924, 5913,
- 5925, 6365, 5926, 5927, 5931, 5935, 5940, 5941, 5934, 5943,
- 5945, 5944, 5946, 5950, 5948, 5952, 5951, 5953, 5954, 5956,
-
- 6365, 6365, 6365, 5959, 5966, 5968, 5969, 5976, 5979, 5982,
- 5984, 5970, 5977, 5985, 5987, 5990, 5991, 5993, 6000, 5996,
- 5999, 5998, 6001, 6005, 6007, 6002, 6009, 6013, 6365, 6014,
- 6365, 6015, 6365, 6365, 6019, 6022, 6024, 6020, 6031, 6036,
- 6026, 6034, 6027, 6037, 6044, 6049, 6365, 6365, 6035, 6038,
- 6365, 6041, 6050, 6365, 6045, 6052, 6051, 6053, 6059, 6060,
- 6062, 6063, 6074, 6365, 6365, 6061, 6064, 6069, 6076, 6078,
- 6077, 6084, 6086, 6087, 6089, 6080, 6096, 6365, 6098, 6095,
- 6102, 6365, 6103, 6093, 6104, 6105, 6106, 6114, 6109, 6110,
- 6365, 6115, 6365, 6118, 6120, 6121, 6119, 6122, 6127, 6130,
-
- 6134, 6133, 6365, 6135, 6136, 6143, 6144, 6147, 6149, 6150,
- 6151, 6153, 6155, 6156, 6164, 6159, 6165, 6167, 6168, 6169,
- 6365, 6175, 6171, 6365, 6176, 6177, 6178, 6179, 6183, 6365,
- 6192, 6180, 6185, 6193, 6196, 6200, 6365, 6202, 6206, 6203,
- 6365, 6208, 6365, 6365, 6209, 6211, 6212, 6216, 6218, 6365,
- 6365, 6365, 6245, 6252, 6259, 6266, 6273, 6280, 6287, 88,
- 6294, 6301, 6308, 6315, 6322, 6329, 6336, 6343, 6350, 6357
+ 822, 818, 6426, 817, 820, 833, 826, 834, 835, 836,
+ 841, 842, 823, 849, 847, 848, 852, 874, 856, 863,
+ 854, 864, 858, 6426, 867, 868, 898, 881, 871, 889,
+ 885, 878, 887, 892, 894, 902, 911, 904, 908, 909,
+ 922, 915, 919, 924, 918, 927, 925, 935, 936, 931,
+
+ 934, 941, 948, 943, 945, 947, 956, 949, 950, 957,
+ 958, 769, 960, 967, 970, 964, 959, 975, 976, 977,
+ 979, 982, 983, 987, 985, 998, 1005, 999, 1012, 986,
+ 1010, 1011, 1014, 1013, 1019, 1020, 1022, 1024, 1025, 1027,
+ 1028, 1032, 1033, 1031, 1034, 1036, 1038, 1044, 1042, 1047,
+ 1048, 1049, 1056, 1058, 1051, 1064, 1052, 1050, 1068, 1060,
+ 6426, 1072, 1070, 1075, 1076, 1074, 1077, 6426, 1078, 1079,
+ 1080, 1081, 1090, 1092, 1093, 1099, 1088, 1103, 1105, 1106,
+ 1107, 1115, 1110, 1113, 1118, 1117, 1119, 1121, 1123, 1125,
+ 1127, 1126, 1128, 1134, 1135, 1138, 1155, 6426, 1137, 1145,
+
+ 1142, 1139, 1148, 1149, 1167, 1147, 1165, 1166, 1159, 1179,
+ 1177, 1178, 1180, 1186, 1187, 1188, 1190, 1195, 1191, 1140,
+ 1193, 1197, 1198, 1199, 1201, 1200, 1202, 1205, 6426, 1203,
+ 1214, 1227, 1213, 1222, 1223, 1224, 1226, 1228, 1229, 1230,
+ 1232, 1231, 1236, 1240, 1251, 1235, 1254, 1249, 1250, 1252,
+ 1256, 1257, 1260, 1258, 1259, 1270, 1265, 1273, 1280, 1282,
+ 1284, 1286, 1287, 1294, 1268, 1290, 1292, 1291, 1297, 1298,
+ 1300, 1299, 1301, 1307, 1305, 1314, 1311, 1310, 1312, 1313,
+ 1318, 1320, 1321, 1325, 1322, 1323, 1337, 1329, 1332, 1333,
+ 1339, 1347, 1340, 1349, 1350, 1351, 1352, 1353, 6426, 1360,
+
+ 1361, 1359, 1363, 1364, 1371, 1372, 1375, 1376, 1373, 1379,
+ 1378, 1381, 1385, 1386, 1387, 1382, 1388, 1390, 1399, 1403,
+ 1404, 1413, 1405, 1412, 1396, 1415, 1422, 1418, 1425, 1421,
+ 1420, 1426, 1433, 1428, 1430, 1434, 1442, 1437, 1435, 1446,
+ 1438, 1447, 1450, 1449, 1461, 1459, 1460, 1469, 1472, 1462,
+ 1464, 1470, 1474, 1475, 1477, 1478, 1479, 1480, 1488, 1481,
+ 1483, 1484, 1486, 1490, 1491, 1494, 1497, 1509, 1502, 1505,
+ 1504, 1507, 1511, 1513, 1514, 1518, 1519, 1520, 1522, 1521,
+ 1524, 1528, 1529, 1533, 1534, 1540, 1541, 1542, 1544, 1547,
+ 1548, 1551, 1550, 1559, 1561, 1549, 1562, 1565, 1568, 1570,
+
+ 1571, 1572, 1573, 1580, 1575, 1578, 1581, 1585, 1586, 1591,
+ 1592, 1595, 1597, 1600, 6426, 1598, 1610, 1588, 1611, 1606,
+ 1603, 1605, 1619, 1612, 1614, 1616, 1622, 1624, 1648, 6426,
+ 1625, 6426, 6426, 315, 6426, 6426, 1626, 1627, 6426, 1630,
+ 1629, 1639, 1637, 1631, 1642, 1645, 1646, 1649, 1651, 1658,
+ 1672, 1654, 1661, 1662, 1665, 1675, 1677, 1678, 1666, 1686,
+ 1687, 1689, 1694, 1695, 1703, 1696, 1700, 1706, 1708, 1714,
+ 1710, 1719, 1720, 1709, 1716, 1723, 1724, 1726, 1725, 1728,
+ 1731, 1734, 1736, 1732, 1730, 1738, 1747, 1749, 1740, 1757,
+ 6426, 1753, 1761, 1765, 1762, 1769, 1768, 1764, 1766, 1773,
+
+ 1776, 1777, 1778, 1779, 1780, 1781, 1783, 1743, 1786, 1789,
+ 1797, 1790, 6426, 1792, 1793, 1795, 1798, 1799, 1804, 1805,
+ 1806, 1811, 1812, 1813, 1823, 1814, 1816, 1818, 1824, 1825,
+ 1827, 6426, 1832, 1829, 1835, 1839, 1840, 1842, 1843, 1845,
+ 1846, 1841, 1847, 1848, 1851, 1853, 1860, 1855, 1859, 1857,
+ 1865, 1868, 1873, 1875, 1878, 1881, 1882, 1883, 1884, 1885,
+ 1886, 1888, 1889, 1896, 1899, 1897, 1900, 1898, 1895, 1910,
+ 1919, 1902, 1914, 1916, 1917, 1918, 1920, 1929, 1924, 1925,
+ 1931, 1932, 1930, 1935, 1937, 1940, 1947, 1938, 1948, 1956,
+ 1942, 1949, 1954, 1951, 6426, 1958, 1960, 6426, 1962, 1961,
+
+ 1963, 1985, 1965, 1967, 1968, 1973, 1977, 1976, 1978, 1986,
+ 1987, 1989, 2005, 1998, 1995, 2008, 2010, 2011, 1979, 2013,
+ 2014, 2015, 2017, 2020, 2021, 2030, 2038, 2039, 2023, 2042,
+ 2040, 1997, 2041, 2043, 2062, 2044, 2045, 2051, 2046, 2047,
+ 2049, 2059, 2052, 2053, 2055, 2057, 2075, 2078, 2077, 2079,
+ 2064, 2084, 2086, 2087, 2090, 6426, 2098, 2093, 2094, 2095,
+ 2099, 2107, 2103, 2104, 6426, 2105, 2106, 2109, 2117, 2118,
+ 2116, 2119, 2120, 2122, 2121, 2126, 2128, 2130, 2142, 2129,
+ 2149, 6426, 2131, 6426, 2144, 2132, 2134, 2145, 2133, 2150,
+ 2155, 2156, 6426, 6426, 2157, 2154, 2166, 2170, 2168, 6426,
+
+ 2169, 2177, 6426, 2174, 2179, 2172, 2173, 2180, 2183, 2184,
+ 2187, 2194, 2189, 2198, 2190, 2195, 2199, 6426, 2203, 2191,
+ 2210, 2211, 2204, 2214, 2217, 2218, 6426, 2221, 2207, 2225,
+ 2232, 2229, 2224, 2234, 2235, 2236, 2239, 2240, 2241, 2242,
+ 2243, 2250, 2253, 2246, 2249, 2255, 2264, 6426, 2248, 2262,
+ 2269, 2265, 2268, 2271, 2272, 2273, 2274, 2275, 2276, 2277,
+ 2284, 2283, 2285, 2286, 2296, 2298, 2287, 2294, 2304, 2295,
+ 2306, 2300, 2311, 2308, 2309, 2310, 2313, 6426, 2315, 2317,
+ 2319, 171, 2321, 2322, 2324, 2323, 2331, 2333, 2325, 2347,
+ 2348, 2327, 2344, 2350, 2346, 2353, 2354, 2355, 2356, 2357,
+
+ 2358, 2359, 2361, 6426, 2363, 2364, 2366, 2370, 2369, 2372,
+ 2377, 6426, 2379, 2386, 2389, 2398, 2381, 2390, 2399, 2395,
+ 2400, 2401, 2403, 2405, 2407, 2406, 2409, 2415, 2412, 6426,
+ 2417, 2420, 2422, 2413, 2429, 2428, 2421, 2435, 2436, 2437,
+ 2440, 2438, 2439, 2442, 2441, 2443, 2444, 2449, 2448, 2445,
+ 2447, 2457, 2458, 2459, 2468, 2469, 2461, 2470, 2471, 6426,
+ 2481, 2472, 2476, 2474, 2477, 2479, 2484, 2492, 2499, 2483,
+ 2494, 2496, 2500, 2510, 2503, 2505, 2512, 2520, 2517, 2525,
+ 2513, 2526, 2527, 2535, 2524, 2537, 2539, 2528, 2540, 2541,
+ 2543, 2546, 2547, 2549, 2559, 2560, 2552, 2562, 2555, 2576,
+
+ 2581, 2572, 6426, 2570, 2565, 2568, 2582, 2590, 2585, 2587,
+ 2588, 2592, 2595, 2596, 2597, 2598, 2605, 2600, 2602, 2603,
+ 2608, 2607, 2611, 2614, 2618, 2619, 2623, 2625, 2627, 2628,
+ 6426, 2631, 2633, 2629, 2635, 2637, 2639, 2642, 2645, 2647,
+ 2649, 2650, 2654, 2655, 2657, 2656, 2658, 2664, 2665, 2651,
+ 6426, 2674, 2666, 2678, 2668, 2679, 2672, 2685, 2686, 2687,
+ 2661, 2688, 2691, 2694, 2695, 2697, 6426, 2704, 2705, 2696,
+ 2712, 2707, 2703, 2708, 2714, 2711, 6426, 2715, 2717, 2718,
+ 2726, 2727, 2723, 6426, 2734, 2724, 2725, 2732, 2735, 2736,
+ 2733, 2739, 2742, 2743, 2746, 2748, 2755, 2749, 2756, 6426,
+
+ 2757, 2766, 2759, 2758, 2763, 2769, 2770, 2773, 2774, 2775,
+ 2778, 2781, 6426, 2792, 2789, 2787, 2800, 2790, 2530, 2796,
+ 2797, 2801, 2803, 2804, 2805, 2807, 6426, 2808, 2811, 2812,
+ 2815, 2813, 2818, 2819, 2826, 2823, 2825, 2828, 2831, 2832,
+ 2833, 2834, 2841, 2840, 2837, 2849, 2850, 2853, 2854, 2856,
+ 2859, 2867, 2870, 2843, 2866, 2869, 2862, 2871, 2872, 2879,
+ 2880, 2887, 2882, 2884, 6426, 2889, 2886, 2891, 2893, 2894,
+ 2895, 2897, 2896, 2898, 2901, 2902, 2908, 2904, 2905, 2920,
+ 2923, 2907, 2915, 2925, 2926, 2928, 2929, 2930, 2931, 2932,
+ 2939, 2935, 2936, 2947, 2938, 2942, 2952, 2953, 2954, 2955,
+
+ 2956, 2963, 2943, 2961, 2958, 2965, 2966, 2970, 2980, 2981,
+ 2967, 2982, 2983, 2984, 2985, 6426, 2988, 2989, 2990, 2993,
+ 2996, 2999, 3002, 3009, 3000, 3001, 3011, 3017, 3018, 3008,
+ 3019, 3010, 3026, 3024, 6426, 3025, 6426, 3027, 3029, 3031,
+ 3039, 3035, 6426, 3041, 6426, 3042, 3047, 3036, 3038, 6426,
+ 3050, 3044, 3049, 3056, 3051, 3059, 3060, 3062, 3061, 3068,
+ 3063, 3065, 3070, 3071, 3073, 3076, 3074, 3081, 3082, 3086,
+ 3090, 3091, 3078, 3102, 3084, 3094, 3100, 3092, 3107, 6426,
+ 3109, 3097, 3110, 3115, 3114, 3116, 3117, 3118, 3120, 3121,
+ 3123, 3127, 3122, 3132, 3124, 3136, 3135, 3145, 3146, 3153,
+
+ 6426, 3148, 3150, 3151, 3152, 6426, 3154, 3155, 3156, 3160,
+ 3163, 3164, 3165, 3168, 3172, 3167, 3169, 3174, 3183, 3184,
+ 3187, 3188, 6426, 3190, 3193, 3175, 3202, 3196, 3203, 3210,
+ 3206, 3208, 3212, 3220, 3216, 3215, 3217, 3218, 3219, 3222,
+ 3229, 3230, 3226, 3233, 3232, 3236, 3243, 3240, 3234, 3238,
+ 3244, 3246, 3247, 3248, 3249, 3250, 3253, 3254, 3251, 6426,
+ 3259, 3265, 3263, 3272, 3268, 3269, 3273, 3278, 3274, 6426,
+ 3280, 3281, 3282, 3284, 3289, 3283, 3286, 3291, 3294, 3297,
+ 3299, 3302, 3304, 3303, 6426, 3305, 6426, 3307, 3308, 3318,
+ 3322, 3323, 3310, 3324, 3330, 3326, 3331, 3333, 3336, 3334,
+
+ 3340, 3337, 3342, 3343, 3345, 3357, 3348, 3344, 3349, 3358,
+ 3359, 3363, 3360, 6426, 6426, 3365, 3366, 3367, 3369, 3371,
+ 3370, 3377, 3374, 3382, 3381, 3388, 3389, 3397, 6426, 3394,
+ 3395, 3393, 3398, 3406, 3401, 3405, 3417, 3413, 3420, 3416,
+ 6426, 3412, 3421, 3429, 3424, 3425, 3433, 6426, 3430, 6426,
+ 3426, 3431, 3436, 3439, 3440, 3441, 3442, 3443, 3447, 3455,
+ 3458, 3451, 3460, 3461, 3462, 3463, 3466, 3470, 3473, 3469,
+ 3471, 3472, 6426, 3475, 3476, 3484, 3489, 3492, 3493, 3477,
+ 3478, 6426, 3495, 3485, 3503, 3499, 3504, 3505, 3509, 3506,
+ 3510, 3511, 3513, 6426, 3512, 3514, 3521, 3526, 3519, 3522,
+
+ 3530, 3532, 3540, 6426, 3536, 3533, 3549, 3545, 3546, 3548,
+ 3551, 3527, 3552, 3553, 3555, 3556, 3557, 3559, 3560, 3563,
+ 3564, 3566, 3565, 3577, 3576, 3579, 3584, 3586, 3570, 6426,
+ 3587, 3590, 3592, 3593, 3595, 3596, 3598, 3601, 3603, 3604,
+ 3615, 3616, 3605, 3607, 3619, 3621, 3629, 3627, 6426, 3637,
+ 3620, 3639, 3611, 3632, 3641, 3622, 3643, 3645, 3634, 3646,
+ 3647, 3650, 3653, 3660, 3656, 3657, 3655, 3659, 3671, 3661,
+ 6426, 3684, 3662, 3672, 3664, 3663, 3680, 3688, 3685, 3686,
+ 3689, 3691, 3692, 3696, 3693, 3698, 3699, 3702, 3703, 6426,
+ 6426, 3705, 3707, 3708, 6426, 3712, 3709, 3722, 3715, 3719,
+
+ 3711, 3724, 3725, 3727, 3728, 3733, 3735, 6426, 3736, 3743,
+ 3738, 3739, 3748, 3750, 3755, 3747, 3756, 3749, 3745, 3760,
+ 3763, 3757, 3761, 3767, 3776, 3777, 3762, 3773, 3774, 6426,
+ 3779, 3780, 3781, 3784, 3785, 3790, 6426, 3789, 3791, 3792,
+ 3797, 3801, 3803, 3809, 3811, 3793, 3812, 3796, 3813, 3816,
+ 3817, 3827, 3819, 3823, 3830, 3831, 3835, 6426, 3824, 3838,
+ 3822, 3841, 6426, 3844, 3851, 3852, 6426, 3853, 3848, 3855,
+ 3856, 3863, 6426, 3858, 3861, 3859, 3862, 3872, 3864, 3873,
+ 3875, 3869, 6426, 3876, 3877, 3878, 6426, 3879, 3884, 3890,
+ 3892, 3893, 3900, 3895, 3897, 3898, 3899, 6426, 3905, 6426,
+
+ 3903, 3907, 3911, 6426, 3909, 3914, 3915, 3917, 3918, 3923,
+ 3924, 3922, 3931, 3932, 3933, 3935, 3936, 3934, 3939, 3943,
+ 3940, 3941, 3945, 3946, 6426, 3947, 3949, 3956, 3951, 3961,
+ 3957, 3964, 3954, 3968, 3969, 6426, 6426, 3978, 6426, 3980,
+ 3970, 3972, 6426, 3974, 3979, 3987, 3984, 3990, 3992, 3996,
+ 3997, 6426, 3999, 4002, 6426, 3985, 4000, 4010, 4007, 4009,
+ 4012, 4015, 4011, 4013, 4017, 4018, 4021, 4023, 4019, 4022,
+ 4027, 6426, 4024, 4025, 4026, 4040, 4041, 4042, 4047, 4049,
+ 4043, 6426, 4051, 4053, 4052, 4060, 4057, 6426, 4058, 6426,
+ 4061, 4066, 4068, 4069, 4072, 6426, 4074, 4073, 4078, 4081,
+
+ 4083, 4082, 4085, 4089, 4086, 4092, 4099, 4095, 4096, 4097,
+ 6426, 4098, 4101, 4103, 4110, 4106, 4108, 4119, 4118, 4114,
+ 4120, 4124, 4126, 4122, 4129, 4135, 4133, 4139, 4127, 6426,
+ 4137, 4141, 4131, 4154, 4147, 4150, 6426, 4151, 4155, 4159,
+ 6426, 4157, 4158, 4165, 4167, 4161, 4168, 4169, 4173, 4175,
+ 6426, 4171, 4172, 4176, 4177, 4188, 4180, 6426, 6426, 4191,
+ 6426, 4192, 4181, 4194, 4195, 4199, 4202, 4201, 4203, 4206,
+ 4207, 4214, 4215, 4208, 4216, 4223, 4225, 4233, 4228, 4229,
+ 4230, 6426, 6426, 4235, 4239, 4232, 4243, 4244, 4236, 4246,
+ 4253, 4251, 4257, 4260, 4261, 4255, 6426, 4263, 4252, 4269,
+
+ 4262, 6426, 4268, 4270, 4271, 4274, 4276, 4277, 4280, 4278,
+ 4279, 4283, 4286, 4287, 4288, 4292, 4290, 4299, 4300, 4301,
+ 4302, 4306, 4304, 4309, 6426, 4310, 4311, 4313, 4314, 4315,
+ 4321, 4323, 4324, 4325, 6426, 4326, 6426, 4329, 4331, 4327,
+ 4347, 4335, 4338, 4348, 4350, 4352, 4354, 4355, 4358, 4359,
+ 4365, 4353, 4360, 4369, 4362, 4376, 4378, 4379, 6426, 4380,
+ 4372, 4381, 4382, 4387, 4389, 4383, 4391, 4393, 4396, 4397,
+ 4398, 4400, 4405, 4406, 4407, 4408, 4409, 6426, 4410, 4414,
+ 4417, 4419, 4421, 4423, 4424, 4425, 4431, 4432, 4433, 4434,
+ 4438, 6426, 4435, 4440, 4442, 4443, 4445, 4446, 4449, 4452,
+
+ 4456, 6426, 4459, 4450, 4461, 4460, 4462, 4464, 4466, 4472,
+ 4469, 4475, 4476, 6426, 4481, 4483, 4484, 4485, 4486, 4487,
+ 4490, 4491, 6426, 4497, 4498, 4500, 4507, 4504, 4511, 4509,
+ 4513, 4506, 4516, 4519, 4512, 4523, 4524, 4526, 4520, 4536,
+ 4543, 4538, 6426, 4527, 6426, 4539, 4540, 4550, 4545, 4551,
+ 4549, 6426, 4552, 4557, 4559, 4555, 4553, 6426, 4560, 4561,
+ 4563, 4564, 6426, 4579, 4575, 4565, 4574, 4567, 4583, 6426,
+ 4588, 4589, 4590, 4597, 4599, 4594, 4601, 4596, 4604, 4602,
+ 4598, 4606, 4607, 4615, 4613, 4611, 6426, 4617, 4619, 4624,
+ 4626, 4620, 4628, 4618, 4630, 4633, 4635, 6426, 4636, 4639,
+
+ 4640, 4642, 4643, 4644, 4645, 4652, 4649, 4651, 4653, 4654,
+ 4657, 4658, 6426, 4663, 4661, 4665, 4674, 4676, 4678, 6426,
+ 4681, 6426, 4671, 4666, 4683, 4682, 4687, 6426, 6426, 4689,
+ 4697, 4692, 4695, 4696, 6426, 6426, 4699, 6426, 4700, 6426,
+ 4701, 4703, 6426, 6426, 4702, 4706, 4709, 4711, 4713, 6426,
+ 4721, 6426, 4723, 4724, 4710, 4722, 4728, 6426, 4727, 4729,
+ 4731, 6426, 4734, 4742, 4735, 4737, 6426, 4739, 4745, 4740,
+ 4747, 6426, 4749, 4755, 4751, 4757, 4758, 4761, 4760, 4763,
+ 4764, 4768, 4769, 4770, 4771, 4773, 4782, 4784, 4786, 4779,
+ 4787, 4788, 4794, 4796, 4789, 4792, 4798, 4799, 4803, 4800,
+
+ 4807, 4809, 4810, 4811, 4813, 4812, 4814, 4817, 4816, 4825,
+ 4827, 4828, 4829, 4830, 4831, 4832, 4833, 4839, 4840, 4843,
+ 4838, 4842, 6426, 4846, 4848, 4835, 4859, 4849, 4860, 4861,
+ 4868, 4872, 4873, 6426, 4875, 6426, 4877, 4869, 4879, 4880,
+ 4881, 6426, 4882, 4883, 4884, 4885, 4886, 4888, 4889, 4892,
+ 4893, 4897, 4903, 6426, 4910, 4900, 4894, 4898, 4918, 6426,
+ 4913, 4920, 4921, 4923, 4924, 4925, 4926, 4927, 4930, 4928,
+ 4933, 4935, 4929, 4936, 4937, 4951, 4953, 4948, 4938, 4955,
+ 4957, 4958, 4959, 4960, 4961, 4962, 4963, 4969, 4971, 4975,
+ 6426, 4966, 6426, 4977, 4978, 4979, 4982, 4983, 4984, 4987,
+
+ 6426, 6426, 4989, 4990, 4995, 4992, 4996, 4999, 5001, 6426,
+ 5000, 5008, 5011, 5003, 6426, 5013, 5017, 5018, 5020, 6426,
+ 5021, 5022, 5023, 5025, 5026, 5030, 5034, 5032, 5035, 5036,
+ 5043, 6426, 6426, 6426, 6426, 5046, 5040, 5050, 5044, 5052,
+ 5054, 5055, 5059, 5053, 6426, 5061, 6426, 6426, 5066, 5067,
+ 5056, 5069, 5073, 5075, 5076, 5078, 6426, 5077, 5079, 5082,
+ 5080, 5089, 5091, 5097, 5093, 5098, 5083, 5099, 5108, 5104,
+ 5105, 5107, 5110, 5112, 5114, 6426, 6426, 5116, 5119, 5120,
+ 5127, 5125, 5128, 5124, 5137, 5132, 5134, 5135, 5140, 5141,
+ 5142, 5151, 5152, 5143, 5147, 6426, 5150, 5153, 5161, 6426,
+
+ 5154, 6426, 5160, 5162, 5156, 5168, 5169, 5170, 5171, 5173,
+ 6426, 6426, 5175, 5183, 5180, 6426, 6426, 5176, 5184, 5187,
+ 5189, 5185, 5190, 5191, 5196, 5198, 5194, 6426, 5199, 6426,
+ 5201, 5203, 5216, 5202, 5218, 5223, 5225, 5229, 5222, 5205,
+ 6426, 5224, 5226, 6426, 5231, 5220, 5232, 6426, 5236, 5238,
+ 5241, 5243, 6426, 5245, 5246, 5248, 6426, 5252, 6426, 5249,
+ 5254, 5255, 5263, 6426, 5258, 5260, 6426, 5265, 5271, 5272,
+ 5266, 6426, 5268, 6426, 5273, 5277, 5280, 5283, 5274, 5285,
+ 5287, 5288, 5290, 5297, 5295, 5292, 6426, 6426, 135, 5308,
+ 5298, 5299, 5303, 5305, 5315, 5301, 5310, 5313, 6426, 6426,
+
+ 5317, 6426, 5316, 5325, 6426, 5318, 5327, 5331, 5320, 5329,
+ 5333, 5335, 5336, 5340, 5342, 5341, 5345, 5346, 5349, 5354,
+ 5364, 5347, 5361, 5367, 5369, 5371, 5373, 5362, 5375, 5376,
+ 5377, 5379, 5381, 5382, 5383, 5385, 5386, 6426, 5389, 5391,
+ 5394, 5393, 6426, 5399, 5395, 5408, 5404, 6426, 5413, 5401,
+ 5414, 5415, 6426, 5416, 5418, 5421, 5419, 5420, 5432, 5427,
+ 5429, 5433, 6426, 6426, 6426, 5436, 5443, 6426, 5445, 5439,
+ 5422, 5430, 6426, 5446, 5449, 6426, 6426, 5450, 5451, 5452,
+ 5462, 6426, 5454, 6426, 5457, 6426, 5458, 5459, 5467, 5465,
+ 6426, 5471, 5469, 6426, 5480, 5482, 5484, 5477, 5485, 5487,
+
+ 5488, 6426, 5495, 5491, 5492, 5499, 5490, 5500, 5494, 5502,
+ 5501, 5509, 5504, 5511, 6426, 5513, 5516, 5518, 5524, 5514,
+ 5520, 5522, 6426, 5526, 6426, 5528, 6426, 5530, 5531, 5532,
+ 5538, 5534, 5539, 5540, 5549, 5541, 5551, 5545, 5552, 5556,
+ 5553, 6426, 6426, 5562, 5565, 6426, 5559, 6426, 5567, 6426,
+ 5557, 5568, 5569, 5570, 6426, 5577, 5571, 5574, 5579, 6426,
+ 5581, 5586, 5583, 5588, 6426, 6426, 5589, 5596, 5594, 5592,
+ 5604, 5606, 5593, 5608, 5601, 5610, 5595, 5617, 5616, 5618,
+ 5620, 5622, 5623, 5624, 6426, 6426, 6426, 5629, 5628, 5637,
+ 5633, 5636, 5644, 5634, 6426, 5642, 5646, 5649, 5643, 5656,
+
+ 5651, 5658, 6426, 5653, 5655, 5659, 5661, 5664, 5660, 5666,
+ 5667, 6426, 5671, 5678, 5675, 5672, 5683, 5690, 5692, 5694,
+ 5685, 5681, 5701, 5697, 6426, 5700, 6426, 6426, 5687, 6426,
+ 5696, 5703, 5704, 5708, 6426, 5711, 5705, 5712, 5713, 5715,
+ 5717, 6426, 5727, 5720, 5723, 5724, 6426, 6426, 5731, 6426,
+ 5734, 5736, 5735, 5743, 5738, 5739, 5745, 5746, 6426, 5728,
+ 5752, 5753, 5754, 5755, 6426, 5756, 5757, 5759, 5760, 6426,
+ 5763, 5762, 5765, 5767, 5768, 6426, 5769, 5770, 5777, 5784,
+ 6426, 5775, 5791, 5785, 6426, 6426, 5787, 5793, 5796, 6426,
+ 6426, 6426, 5802, 5799, 5797, 5806, 6426, 5808, 5812, 5817,
+
+ 5821, 5820, 6426, 5823, 5811, 5813, 6426, 6426, 5825, 5826,
+ 5828, 5831, 6426, 6426, 5832, 5834, 5835, 5838, 5836, 6426,
+ 5837, 5840, 5842, 5853, 5859, 5848, 5856, 5860, 5868, 5850,
+ 5854, 5865, 5864, 5866, 5870, 5873, 5877, 5884, 5881, 5883,
+ 5889, 5886, 5890, 6426, 6426, 5894, 6426, 5897, 5891, 6426,
+ 6426, 5899, 5903, 5905, 5907, 5909, 5911, 5913, 6426, 5914,
+ 5916, 5917, 5918, 5919, 6426, 5921, 5925, 5920, 5928, 5922,
+ 5931, 5927, 5937, 6426, 6426, 5929, 5943, 5933, 5944, 5938,
+ 6426, 5948, 5955, 5950, 5952, 5953, 5958, 5954, 6426, 5960,
+ 5962, 6426, 6426, 5961, 5963, 6426, 6426, 5967, 6426, 6426,
+
+ 6426, 6426, 6426, 6426, 6426, 5974, 6426, 5968, 5980, 5983,
+ 5985, 6426, 5969, 5986, 5987, 5988, 5975, 6426, 5973, 5990,
+ 5994, 5998, 5997, 6002, 6004, 6005, 6007, 6006, 6009, 6011,
+ 6010, 6015, 6013, 6014, 6016, 6020, 6023, 6426, 6426, 6426,
+ 6029, 6030, 6032, 6033, 6037, 6038, 6045, 6047, 6041, 6048,
+ 6049, 6051, 6053, 6054, 6055, 6063, 6059, 6062, 6061, 6065,
+ 6067, 6072, 6076, 6069, 6077, 6081, 6426, 6078, 6426, 6082,
+ 6426, 6426, 6086, 6088, 6083, 6090, 6098, 6101, 6094, 6097,
+ 6099, 6102, 6104, 6426, 6106, 6426, 6426, 6111, 6113, 6426,
+ 6112, 6115, 6426, 6114, 6116, 6117, 6122, 6124, 6120, 6123,
+
+ 6125, 6141, 6426, 6426, 6127, 6131, 6129, 6143, 6145, 6144,
+ 6151, 6153, 6154, 6155, 6146, 6162, 6426, 6164, 6161, 6168,
+ 6426, 6169, 6157, 6170, 6171, 6172, 6180, 6175, 6179, 6426,
+ 6181, 6426, 6184, 6186, 6188, 6178, 6185, 6187, 6201, 6203,
+ 6196, 6426, 6189, 6205, 6199, 6210, 6212, 6214, 6216, 6207,
+ 6221, 6217, 6225, 6229, 6224, 6230, 6232, 6233, 6234, 6426,
+ 6236, 6239, 6426, 6240, 6241, 6242, 6243, 6247, 6426, 6250,
+ 6244, 6252, 6254, 6257, 6259, 6426, 6265, 6268, 6269, 6426,
+ 6270, 6426, 6426, 6272, 6260, 6273, 6281, 6283, 6426, 6426,
+ 6426, 6306, 6313, 6320, 6327, 6334, 6341, 6348, 88, 6355,
+
+ 6362, 6369, 6376, 6383, 6390, 6397, 6404, 6411, 6418
} ;
-static yyconst flex_int16_t yy_def[3271] =
+static yyconst flex_int16_t yy_def[3310] =
{ 0,
- 3252, 1, 3253, 3253, 3254, 3254, 3255, 3255, 3256, 3256,
- 3257, 3257, 3258, 3258, 3259, 3259, 3252, 3260, 3252, 3252,
- 3252, 3252, 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3252, 3252, 3252,
- 3262, 3263, 3252, 3252, 3252, 3263, 3264, 3252, 3252, 3252,
- 3252, 3264, 3265, 3252, 3252, 3252, 3265, 3266, 3252, 3267,
- 3252, 3266, 3266, 3268, 3252, 3252, 3252, 3252, 3268, 3269,
- 3252, 3252, 3252, 3269, 3260, 3260, 3252, 3270, 3261, 3270,
- 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3262, 3263,
- 3263, 3264, 3264, 3252, 3265, 3265, 3266, 3266, 3267, 3267,
- 3266, 3268, 3268, 3252, 3269, 3269, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252,
- 3252, 3260, 3252, 3252, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3266, 3266, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3266, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3252, 3260, 3260, 3260, 3260, 3266, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260,
-
- 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252,
- 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3252, 3252, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3252, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3252, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
-
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260,
- 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252,
- 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3252, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3252, 3252, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3260, 3260, 3260,
- 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260,
-
- 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3252, 3252, 3260, 3260, 3260, 3252, 3252, 3252, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3252, 3252, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252,
- 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260,
- 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3252, 3260, 3252,
- 3252, 3260, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3260,
- 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260,
- 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260,
- 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260,
- 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
-
- 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260,
- 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252,
- 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260,
- 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252,
- 3252, 0, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252,
- 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252
+ 3291, 1, 3292, 3292, 3293, 3293, 3294, 3294, 3295, 3295,
+ 3296, 3296, 3297, 3297, 3298, 3298, 3291, 3299, 3291, 3291,
+ 3291, 3291, 3300, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3301, 3291, 3291, 3291,
+ 3301, 3302, 3291, 3291, 3291, 3302, 3303, 3291, 3291, 3291,
+ 3291, 3303, 3304, 3291, 3291, 3291, 3304, 3305, 3291, 3306,
+ 3291, 3305, 3305, 3307, 3291, 3291, 3291, 3291, 3307, 3308,
+ 3291, 3291, 3291, 3308, 3299, 3299, 3291, 3309, 3300, 3309,
+ 3300, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3301, 3301, 3302,
+ 3302, 3303, 3303, 3291, 3304, 3304, 3305, 3305, 3306, 3306,
+ 3305, 3307, 3307, 3291, 3308, 3308, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3305, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299,
+ 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3291, 3291, 3299, 3291, 3291, 3299, 3299, 3291, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3305, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3291, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291,
+
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3305, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3305, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3291, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3305, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291,
+
+ 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3291, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3305, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3305,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3291, 3299, 3291,
+ 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3305, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3291, 3291, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3291, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3291,
+
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3291, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3291, 3299,
+ 3299, 3299, 3299, 3291, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3305, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291,
+
+ 3299, 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3291, 3291, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3299, 3291, 3291, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3291, 3299, 3291, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3291, 3299, 3299, 3291, 3299, 3291, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3291, 3291, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3291, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3291,
+ 3291, 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+
+ 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3291, 3299, 3299,
+ 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3291, 3299, 3291, 3299, 3299, 3291,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299,
+ 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299,
+ 3299, 3291, 3291, 3299, 3299, 3291, 3291, 3299, 3291, 3291,
+
+ 3291, 3291, 3291, 3291, 3291, 3299, 3291, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3291,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299,
+ 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3291, 3299, 3291, 3291, 3299, 3299, 3291,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+
+ 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299,
+ 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291,
+ 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299,
+ 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3291,
+ 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3291,
+ 0, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
+
+ 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291
} ;
-static yyconst flex_int16_t yy_nxt[6406] =
+static yyconst flex_int16_t yy_nxt[6467] =
{ 0,
18, 19, 20, 21, 22, 23, 22, 18, 18, 18,
18, 18, 22, 24, 25, 26, 27, 28, 29, 30,
@@ -1544,7 +1559,7 @@ static yyconst flex_int16_t yy_nxt[6406] =
204, 199, 86, 202, 207, 209, 86, 213, 210, 86,
86, 206, 208, 86, 216, 86, 86, 86, 86, 218,
86, 211, 212, 219, 223, 215, 86, 225, 226, 86,
- 224, 86, 214, 86, 217, 918, 221, 86, 227, 220,
+ 224, 86, 214, 86, 217, 922, 221, 86, 227, 220,
86, 222, 228, 86, 231, 86, 86, 86, 236, 86,
233, 86, 86, 229, 234, 230, 238, 86, 248, 86,
86, 232, 86, 86, 86, 239, 235, 86, 86, 237,
@@ -1592,7 +1607,7 @@ static yyconst flex_int16_t yy_nxt[6406] =
435, 86, 86, 426, 440, 431, 86, 427, 86, 424,
86, 437, 86, 86, 433, 441, 434, 86, 439, 436,
450, 86, 86, 86, 455, 442, 449, 451, 438, 86,
- 86, 86, 86, 452, 563, 453, 456, 86, 443, 458,
+ 86, 86, 86, 452, 564, 453, 456, 86, 443, 458,
459, 444, 86, 457, 86, 462, 445, 446, 447, 448,
460, 454, 86, 86, 86, 461, 86, 468, 86, 86,
@@ -1602,619 +1617,625 @@ static yyconst flex_int16_t yy_nxt[6406] =
484, 477, 475, 481, 485, 476, 86, 86, 86, 86,
482, 488, 486, 489, 86, 86, 497, 491, 487, 498,
86, 86, 86, 490, 495, 86, 499, 86, 500, 86,
- 492, 86, 86, 493, 501, 494, 86, 86, 502, 86,
- 515, 86, 512, 86, 551, 86, 503, 86, 504, 510,
- 505, 513, 511, 514, 526, 517, 516, 168, 525, 527,
-
- 86, 86, 86, 506, 528, 86, 507, 529, 508, 86,
- 509, 86, 86, 518, 519, 86, 535, 532, 530, 531,
- 86, 533, 86, 520, 86, 521, 522, 523, 534, 539,
- 524, 86, 86, 86, 86, 86, 541, 86, 538, 540,
- 537, 536, 546, 86, 548, 86, 549, 86, 86, 545,
- 86, 553, 543, 544, 542, 86, 86, 86, 547, 86,
- 557, 558, 552, 86, 556, 86, 86, 550, 86, 86,
- 86, 86, 555, 564, 565, 86, 86, 86, 86, 567,
- 554, 568, 560, 562, 561, 559, 86, 570, 86, 571,
- 86, 566, 573, 572, 86, 86, 569, 86, 86, 584,
-
- 579, 86, 586, 576, 575, 86, 574, 585, 580, 581,
- 588, 86, 582, 583, 577, 587, 578, 589, 86, 86,
- 86, 86, 86, 86, 592, 591, 86, 594, 164, 593,
- 86, 596, 86, 598, 86, 86, 86, 86, 601, 590,
- 599, 595, 602, 86, 86, 597, 86, 603, 86, 600,
- 86, 86, 86, 608, 86, 606, 607, 86, 86, 604,
- 86, 609, 86, 86, 86, 614, 610, 605, 615, 86,
- 617, 86, 613, 86, 86, 616, 612, 611, 618, 86,
- 620, 86, 622, 86, 86, 86, 86, 86, 86, 86,
- 86, 86, 619, 624, 86, 625, 621, 633, 86, 636,
-
- 627, 163, 630, 86, 623, 632, 86, 626, 628, 631,
- 629, 635, 637, 86, 86, 634, 86, 86, 86, 640,
- 643, 638, 86, 646, 639, 86, 86, 86, 641, 86,
- 645, 86, 86, 642, 86, 86, 649, 86, 86, 648,
- 653, 652, 644, 86, 86, 86, 86, 647, 655, 86,
- 86, 86, 86, 654, 650, 651, 86, 86, 86, 658,
- 656, 669, 672, 86, 657, 86, 659, 668, 707, 667,
- 670, 660, 671, 661, 86, 86, 86, 86, 675, 662,
- 676, 663, 673, 86, 664, 665, 674, 86, 680, 86,
- 677, 666, 679, 678, 86, 86, 685, 86, 683, 681,
-
- 86, 686, 86, 682, 86, 688, 86, 86, 86, 86,
- 86, 86, 684, 86, 86, 694, 161, 689, 690, 86,
- 695, 86, 687, 691, 168, 698, 692, 701, 700, 697,
- 699, 693, 696, 86, 86, 86, 86, 86, 86, 86,
- 86, 86, 710, 708, 86, 86, 702, 832, 86, 86,
- 703, 705, 86, 706, 709, 704, 712, 713, 86, 714,
- 716, 715, 86, 86, 717, 86, 86, 86, 711, 86,
- 718, 86, 86, 86, 721, 722, 719, 727, 720, 86,
- 723, 86, 728, 86, 730, 86, 741, 724, 86, 726,
- 725, 732, 729, 731, 86, 733, 86, 86, 734, 86,
-
- 735, 86, 736, 86, 86, 86, 86, 737, 86, 738,
- 745, 86, 743, 739, 740, 86, 86, 86, 744, 86,
- 749, 86, 742, 748, 86, 750, 86, 86, 86, 86,
- 86, 754, 752, 86, 86, 86, 747, 86, 760, 746,
- 757, 86, 751, 753, 86, 86, 761, 86, 755, 756,
- 758, 86, 86, 86, 767, 763, 86, 759, 86, 762,
- 764, 86, 86, 770, 765, 766, 771, 86, 774, 768,
- 86, 86, 769, 86, 86, 86, 772, 777, 776, 775,
- 86, 86, 773, 86, 780, 779, 86, 782, 781, 86,
- 86, 86, 86, 788, 86, 86, 784, 786, 86, 778,
-
- 86, 86, 794, 785, 783, 86, 86, 789, 86, 86,
- 792, 787, 795, 159, 790, 86, 791, 793, 796, 797,
- 798, 86, 86, 86, 799, 86, 803, 801, 800, 86,
- 805, 86, 86, 86, 804, 86, 86, 86, 806, 802,
- 809, 86, 808, 86, 86, 810, 86, 816, 813, 86,
- 86, 86, 817, 86, 811, 819, 807, 812, 818, 86,
- 821, 86, 814, 815, 86, 86, 825, 823, 822, 86,
- 828, 820, 86, 86, 827, 829, 86, 826, 86, 830,
- 86, 86, 824, 834, 86, 86, 86, 86, 86, 840,
- 86, 86, 86, 86, 841, 86, 86, 86, 831, 833,
-
- 842, 86, 835, 836, 837, 86, 838, 843, 839, 86,
- 849, 844, 846, 847, 86, 845, 86, 86, 86, 86,
- 848, 86, 86, 850, 86, 854, 851, 86, 86, 86,
- 86, 86, 863, 86, 861, 856, 852, 853, 86, 86,
- 855, 86, 857, 864, 862, 858, 859, 860, 86, 866,
- 86, 86, 865, 868, 86, 867, 86, 86, 86, 86,
- 86, 86, 873, 872, 875, 874, 869, 871, 86, 86,
- 870, 86, 86, 876, 86, 880, 878, 168, 877, 86,
- 879, 881, 883, 885, 86, 86, 882, 884, 86, 86,
- 86, 86, 891, 86, 86, 892, 86, 887, 86, 886,
-
- 894, 86, 86, 893, 888, 889, 86, 895, 898, 86,
- 86, 890, 86, 900, 86, 896, 899, 897, 86, 904,
- 86, 86, 901, 86, 86, 86, 86, 86, 905, 86,
- 906, 86, 86, 925, 86, 86, 903, 902, 919, 907,
- 920, 921, 917, 86, 86, 86, 909, 923, 86, 908,
- 86, 86, 910, 922, 86, 911, 86, 926, 924, 912,
- 86, 928, 913, 86, 86, 929, 940, 931, 930, 914,
- 915, 927, 916, 86, 86, 932, 933, 86, 934, 86,
- 86, 935, 939, 86, 942, 86, 936, 943, 945, 944,
- 86, 86, 937, 938, 86, 86, 950, 941, 949, 86,
-
- 86, 951, 86, 86, 953, 86, 947, 952, 86, 946,
- 86, 955, 86, 956, 954, 957, 86, 959, 86, 948,
- 86, 958, 960, 86, 962, 86, 86, 86, 86, 963,
- 86, 86, 967, 86, 86, 961, 86, 970, 966, 86,
- 86, 86, 968, 974, 984, 86, 964, 965, 969, 86,
- 975, 971, 972, 976, 86, 86, 176, 977, 980, 981,
- 979, 973, 978, 86, 86, 86, 86, 983, 86, 86,
- 86, 982, 86, 86, 985, 987, 86, 986, 988, 86,
- 989, 86, 86, 86, 994, 86, 991, 86, 990, 992,
- 86, 997, 86, 998, 86, 86, 995, 86, 996, 86,
-
- 86, 86, 993, 86, 1000, 86, 1001, 86, 1003, 86,
- 1004, 86, 1005, 999, 86, 86, 1006, 86, 1013, 1007,
- 1011, 86, 86, 1009, 1002, 1012, 86, 86, 1010, 86,
- 86, 86, 1008, 86, 1018, 1020, 1014, 86, 1016, 1021,
- 86, 1015, 1019, 86, 86, 86, 86, 86, 1023, 86,
- 1025, 1017, 86, 86, 86, 86, 1029, 1031, 1022, 86,
- 86, 86, 1034, 86, 86, 1024, 1026, 1027, 86, 1028,
- 1035, 1036, 1032, 86, 1033, 1030, 86, 1038, 1040, 1037,
- 86, 86, 1039, 1042, 86, 1041, 86, 86, 86, 86,
- 1044, 86, 86, 1043, 1051, 1046, 1052, 1054, 86, 86,
-
- 86, 1056, 86, 86, 86, 86, 1045, 86, 1047, 1057,
- 1049, 1048, 1050, 1053, 86, 86, 86, 1060, 1055, 1062,
- 1058, 86, 1065, 1059, 86, 1061, 86, 1064, 86, 86,
- 86, 86, 1066, 1069, 1071, 86, 86, 1068, 86, 86,
- 1074, 86, 1063, 1073, 86, 1075, 168, 86, 1067, 86,
- 86, 1070, 86, 1077, 1072, 1081, 1076, 86, 1078, 86,
- 86, 86, 86, 86, 86, 1094, 1079, 1080, 86, 1097,
- 86, 1082, 1095, 86, 1084, 1085, 86, 86, 86, 86,
- 86, 1086, 1099, 1083, 1087, 86, 1119, 174, 1088, 86,
- 1089, 1096, 1100, 1101, 1090, 86, 1091, 86, 1098, 1104,
-
- 1102, 1092, 86, 1103, 1105, 86, 1093, 86, 86, 1113,
- 86, 1106, 1108, 86, 86, 86, 86, 86, 1111, 1114,
- 1121, 1107, 86, 86, 1109, 1110, 86, 1120, 1112, 1115,
- 1122, 1117, 1118, 1123, 86, 1124, 86, 1116, 1125, 86,
- 86, 86, 86, 86, 86, 86, 86, 86, 1137, 86,
- 1140, 86, 86, 86, 1136, 1142, 1141, 86, 1139, 86,
- 1127, 1126, 86, 1128, 86, 1129, 1138, 1143, 1147, 86,
- 1130, 86, 1131, 86, 86, 1146, 1144, 86, 1132, 86,
- 173, 1145, 1148, 1133, 1134, 1152, 86, 1149, 86, 1150,
- 1135, 1154, 1153, 1155, 86, 86, 86, 1151, 1156, 86,
-
- 1159, 86, 86, 86, 1165, 86, 86, 1160, 86, 1158,
- 86, 86, 1162, 1157, 1163, 86, 86, 86, 86, 86,
- 1161, 86, 1168, 86, 1164, 1166, 86, 86, 86, 1175,
- 1167, 86, 1170, 1172, 1177, 1169, 1173, 1174, 86, 1171,
- 86, 86, 86, 1176, 86, 86, 86, 1178, 86, 86,
- 86, 86, 1179, 1185, 1186, 1187, 1182, 86, 86, 1189,
- 1184, 1180, 1190, 1181, 1183, 86, 1188, 1192, 86, 1193,
- 86, 86, 86, 1195, 1194, 86, 1196, 86, 1191, 86,
- 1197, 86, 86, 86, 1198, 86, 1204, 1206, 86, 86,
- 86, 1199, 86, 86, 1208, 1200, 1202, 1203, 86, 1201,
-
- 86, 1210, 86, 1207, 1209, 1205, 86, 1212, 86, 86,
- 86, 1213, 86, 86, 1215, 1216, 86, 86, 1218, 86,
- 1221, 1211, 86, 1220, 1214, 1217, 86, 1222, 86, 86,
- 86, 1223, 1219, 1225, 86, 1226, 86, 1224, 86, 86,
- 86, 86, 1230, 1232, 1233, 86, 1234, 1227, 1237, 86,
- 86, 86, 86, 1231, 86, 1228, 1235, 1236, 1229, 86,
- 1240, 86, 86, 1238, 1242, 86, 86, 1241, 86, 86,
- 1243, 86, 86, 86, 86, 1247, 1248, 1244, 86, 1239,
- 86, 86, 1253, 1254, 86, 1249, 86, 1245, 86, 86,
- 1246, 1256, 1251, 1257, 86, 86, 1250, 86, 86, 1255,
-
- 1252, 1261, 86, 86, 86, 86, 86, 86, 1267, 86,
- 1260, 1259, 1263, 168, 1258, 86, 86, 86, 86, 86,
- 1262, 1274, 86, 1264, 1272, 86, 1266, 1273, 1271, 1269,
- 1276, 1265, 1270, 1268, 1277, 86, 86, 86, 86, 86,
- 86, 1280, 1279, 1281, 86, 1275, 86, 86, 86, 86,
- 86, 1278, 1284, 86, 86, 1290, 86, 1287, 1282, 86,
- 1283, 86, 86, 1285, 86, 86, 168, 86, 1286, 1288,
- 1294, 1300, 1289, 1291, 86, 86, 86, 1293, 86, 1292,
- 1296, 86, 1301, 1302, 86, 1295, 1303, 86, 86, 1297,
- 1305, 1298, 1308, 86, 1299, 1304, 1306, 86, 86, 86,
-
- 86, 86, 86, 1307, 1310, 86, 1309, 1313, 86, 1317,
- 86, 86, 1312, 86, 86, 1314, 1315, 1311, 1318, 1319,
- 86, 86, 86, 86, 86, 1321, 1322, 1316, 86, 86,
- 1323, 1320, 86, 86, 86, 86, 86, 86, 1324, 1325,
- 86, 1327, 1329, 86, 1330, 86, 1334, 1326, 1328, 86,
- 86, 86, 86, 1331, 86, 1333, 86, 1332, 1335, 1338,
- 86, 86, 86, 86, 1345, 1336, 1339, 166, 1341, 1337,
- 86, 1340, 86, 86, 86, 1343, 86, 1346, 1350, 1342,
- 86, 1344, 1348, 1349, 1352, 86, 1347, 86, 1351, 1353,
- 86, 86, 1357, 86, 1367, 86, 86, 1368, 1356, 1354,
-
- 86, 1355, 86, 1358, 1366, 86, 1365, 1359, 86, 86,
- 1360, 1361, 1371, 1369, 1370, 1362, 164, 86, 86, 86,
- 86, 1363, 1372, 86, 1373, 1364, 86, 1374, 86, 1376,
- 1375, 86, 86, 86, 1377, 86, 1378, 86, 86, 1386,
- 1379, 1380, 1381, 1383, 1387, 86, 86, 86, 163, 1384,
- 86, 1388, 1382, 86, 86, 1385, 1390, 1389, 86, 1395,
- 86, 1391, 86, 1392, 1399, 1393, 86, 1394, 1396, 1397,
- 86, 86, 1401, 1398, 86, 86, 86, 1403, 86, 1402,
- 86, 1400, 1404, 86, 1405, 1407, 86, 1409, 86, 86,
- 1408, 1413, 86, 1414, 86, 86, 1406, 86, 86, 86,
-
- 86, 86, 1415, 1412, 1417, 1410, 86, 1411, 86, 1416,
- 1419, 86, 1418, 1422, 1423, 86, 1425, 86, 1420, 86,
- 86, 1426, 86, 1427, 86, 86, 1424, 1428, 1431, 86,
- 86, 1421, 1433, 86, 1430, 86, 1434, 86, 86, 86,
- 1438, 86, 1435, 1429, 86, 86, 86, 86, 1440, 86,
- 1432, 86, 1442, 1444, 86, 86, 86, 86, 1443, 1436,
- 1437, 1448, 86, 86, 1439, 1446, 1441, 86, 1450, 86,
- 1447, 1449, 1445, 86, 1452, 1451, 86, 1454, 1453, 86,
- 86, 86, 86, 86, 1455, 1460, 1461, 1457, 86, 1458,
- 86, 86, 86, 1462, 1463, 86, 1459, 86, 1456, 1464,
-
- 86, 1467, 86, 86, 168, 86, 86, 1472, 1466, 1473,
- 86, 1475, 86, 86, 1465, 86, 1474, 86, 86, 1469,
- 86, 86, 86, 1468, 86, 1470, 1476, 86, 1483, 1471,
- 86, 86, 1477, 1480, 86, 86, 1481, 161, 1478, 86,
- 1479, 86, 1482, 86, 1487, 1488, 86, 86, 1490, 1492,
- 1484, 86, 1486, 86, 1493, 86, 1485, 86, 1489, 1496,
- 1491, 86, 1495, 86, 86, 1494, 86, 86, 86, 1501,
- 1504, 1497, 1502, 86, 1506, 1503, 1498, 86, 1499, 86,
- 86, 1500, 86, 1507, 1509, 86, 1511, 1505, 1508, 1510,
- 86, 86, 86, 86, 86, 86, 1514, 1515, 86, 86,
-
- 1518, 86, 86, 1513, 86, 1523, 86, 86, 1512, 86,
- 1524, 1516, 86, 1520, 1517, 1527, 86, 86, 1519, 1521,
- 1522, 86, 86, 86, 1528, 1525, 86, 86, 1526, 86,
- 86, 1530, 1534, 86, 86, 1529, 1535, 1531, 1532, 1536,
- 86, 1539, 1538, 86, 86, 1533, 86, 86, 1537, 86,
- 1543, 1544, 86, 1541, 1546, 86, 86, 86, 1540, 86,
- 86, 1545, 1547, 1551, 1552, 1550, 1542, 86, 1548, 86,
- 86, 86, 1553, 86, 1554, 1555, 86, 86, 86, 86,
- 1549, 1556, 86, 86, 86, 1558, 86, 1557, 86, 1563,
- 86, 1559, 86, 1562, 86, 1566, 1560, 86, 1561, 86,
-
- 1565, 1569, 86, 1574, 1564, 1571, 1570, 86, 1567, 86,
- 1572, 86, 86, 86, 86, 86, 1568, 86, 86, 1573,
- 1578, 1582, 1577, 86, 86, 86, 1585, 86, 1575, 1583,
- 86, 1576, 86, 1579, 86, 1588, 1581, 1580, 86, 86,
- 1587, 86, 86, 86, 1586, 86, 86, 1596, 86, 1584,
- 86, 1594, 86, 1597, 1599, 86, 86, 1589, 1590, 1593,
- 1602, 1591, 1592, 1595, 1598, 1600, 86, 86, 86, 86,
- 86, 86, 1601, 1606, 86, 86, 86, 1607, 1604, 86,
- 1610, 1603, 86, 1605, 1614, 86, 86, 86, 86, 1616,
- 1608, 1611, 1609, 1615, 86, 86, 86, 86, 1613, 1612,
-
- 1618, 1617, 1619, 86, 86, 86, 1625, 1620, 1621, 1626,
- 86, 86, 86, 86, 1622, 86, 1624, 86, 1630, 1631,
- 1629, 86, 86, 1623, 86, 86, 1633, 86, 86, 1627,
- 86, 1634, 1635, 86, 1628, 86, 86, 86, 1636, 1638,
- 1637, 1632, 86, 1641, 1640, 86, 86, 86, 86, 86,
- 1639, 86, 1642, 1645, 86, 1647, 86, 86, 1648, 86,
- 1652, 1646, 86, 86, 86, 1644, 1643, 86, 86, 1649,
- 86, 1650, 1655, 1657, 86, 86, 1653, 86, 1660, 1656,
- 86, 1654, 1651, 86, 1658, 86, 1662, 1663, 1659, 86,
- 1666, 86, 1661, 168, 1665, 86, 86, 86, 86, 86,
-
- 86, 1674, 86, 86, 1664, 86, 159, 1675, 86, 1667,
- 1669, 86, 1672, 1668, 1678, 86, 1670, 1671, 86, 86,
- 1679, 86, 86, 1676, 1673, 1677, 1680, 86, 1681, 1682,
- 86, 1684, 86, 1686, 86, 1683, 1687, 86, 1685, 86,
- 1688, 86, 86, 1692, 86, 86, 1693, 86, 1690, 1691,
- 86, 1689, 86, 1694, 86, 86, 86, 1699, 1698, 86,
- 86, 1695, 86, 86, 3252, 1706, 86, 86, 1696, 1697,
- 1703, 86, 1701, 1704, 86, 86, 86, 1700, 1708, 1707,
- 86, 1711, 1702, 86, 1723, 1705, 1713, 1715, 1712, 1710,
- 1714, 86, 1716, 86, 1709, 86, 86, 1718, 86, 1720,
-
- 1717, 86, 1719, 86, 86, 86, 86, 86, 1721, 86,
- 1727, 86, 1726, 1728, 86, 86, 86, 1722, 1730, 86,
- 1729, 86, 1733, 86, 86, 1724, 1732, 1725, 86, 86,
- 86, 86, 1735, 1734, 1731, 86, 86, 86, 86, 86,
- 86, 1743, 86, 86, 86, 1738, 86, 86, 86, 1736,
- 1737, 1739, 1740, 1741, 1745, 1746, 1748, 1747, 86, 1744,
- 86, 1742, 86, 1753, 86, 86, 1749, 1750, 86, 1752,
- 1755, 86, 1751, 86, 1757, 86, 86, 86, 86, 86,
- 1754, 86, 1759, 1756, 86, 86, 86, 1762, 1764, 86,
- 1758, 1772, 86, 1765, 1763, 1761, 1766, 1773, 86, 86,
-
- 1760, 1767, 1771, 86, 1768, 86, 86, 86, 86, 1769,
- 1776, 1770, 1777, 86, 86, 1774, 86, 86, 86, 1778,
- 86, 1780, 1781, 1775, 86, 1789, 86, 1779, 86, 1784,
- 86, 86, 86, 1782, 1783, 1786, 86, 1788, 1787, 1790,
- 86, 86, 86, 1785, 86, 1792, 86, 86, 86, 1799,
- 1791, 86, 86, 3252, 1793, 1794, 1796, 86, 1795, 86,
- 1803, 1801, 1802, 86, 86, 1798, 86, 1800, 86, 1807,
- 86, 1797, 1805, 1811, 1804, 1806, 86, 86, 1812, 86,
- 86, 86, 86, 86, 1808, 1817, 1816, 86, 1810, 1809,
- 1813, 86, 1814, 1819, 86, 1820, 86, 1825, 86, 1822,
-
- 1818, 86, 1815, 1821, 86, 86, 1826, 1824, 86, 1827,
- 1823, 1828, 86, 1830, 86, 86, 86, 1829, 86, 86,
- 86, 3252, 1831, 86, 86, 86, 1834, 86, 86, 1835,
- 1840, 86, 1842, 86, 1832, 1833, 1836, 1837, 86, 1838,
- 1843, 1839, 86, 1845, 86, 86, 86, 86, 1846, 86,
- 1850, 1847, 1841, 86, 86, 1844, 86, 1854, 86, 86,
- 1849, 86, 86, 86, 1848, 1856, 86, 1857, 1858, 1852,
- 86, 1851, 1853, 86, 168, 1859, 86, 1864, 86, 1855,
- 86, 86, 1860, 86, 1868, 86, 1862, 86, 86, 1861,
- 86, 1863, 86, 1866, 86, 1870, 86, 1875, 86, 1865,
-
- 86, 1869, 1867, 86, 1871, 86, 1872, 1879, 86, 1873,
- 1876, 1878, 86, 1881, 86, 1880, 1874, 86, 1877, 86,
- 1884, 86, 1882, 1885, 86, 86, 86, 1887, 1883, 86,
- 86, 86, 1888, 1886, 86, 86, 86, 86, 86, 86,
- 1893, 86, 1894, 86, 86, 86, 86, 1895, 1898, 86,
- 1889, 1896, 1891, 1890, 1892, 1899, 1897, 86, 86, 86,
- 1905, 1907, 1902, 1904, 1901, 1906, 86, 86, 1900, 1903,
- 1908, 86, 86, 86, 86, 86, 1913, 3252, 1909, 86,
- 86, 86, 1916, 1917, 86, 1918, 86, 86, 1911, 1920,
- 86, 1910, 86, 1912, 1914, 1919, 1915, 86, 1921, 86,
-
- 1922, 1924, 86, 1925, 1926, 1928, 86, 86, 1923, 1927,
- 86, 86, 1930, 86, 1933, 86, 1932, 1931, 86, 86,
- 86, 86, 1936, 86, 86, 1929, 1935, 86, 1939, 1938,
- 86, 1941, 86, 86, 86, 1940, 1948, 86, 86, 1934,
- 86, 1937, 86, 1950, 1942, 1943, 1944, 86, 1951, 86,
- 86, 1945, 1954, 1946, 1947, 1953, 86, 86, 1949, 1957,
- 86, 1952, 86, 86, 86, 86, 86, 1955, 86, 1958,
- 1961, 86, 1956, 86, 1963, 86, 86, 1966, 1967, 86,
- 1969, 86, 1959, 86, 1960, 86, 1964, 86, 1968, 86,
- 1962, 86, 1974, 86, 1971, 86, 1972, 1965, 86, 1975,
-
- 86, 86, 1978, 86, 86, 86, 1981, 86, 1970, 86,
- 1973, 1985, 1976, 1979, 1984, 86, 1977, 86, 86, 1980,
- 1988, 1989, 86, 1983, 86, 1987, 86, 86, 86, 1982,
- 1990, 86, 86, 1991, 86, 1986, 86, 86, 86, 1996,
- 86, 1992, 1993, 1994, 86, 1999, 1995, 2000, 2001, 86,
- 86, 86, 86, 86, 86, 1997, 2004, 86, 2009, 86,
- 2002, 86, 2008, 86, 1998, 2003, 86, 86, 86, 2006,
- 86, 2013, 2005, 2007, 2014, 2016, 86, 86, 2011, 2015,
- 2010, 2017, 86, 2020, 86, 2012, 86, 86, 2027, 86,
- 86, 86, 86, 2018, 86, 2024, 86, 86, 2019, 86,
-
- 2032, 2022, 2029, 2030, 86, 86, 2031, 2021, 2023, 86,
- 86, 2025, 2026, 86, 2028, 2037, 86, 2039, 2033, 2038,
- 86, 2034, 2040, 86, 2041, 2042, 2035, 86, 86, 86,
- 86, 86, 2046, 2036, 2044, 86, 86, 86, 86, 86,
- 2045, 2048, 86, 2051, 86, 2053, 86, 2047, 2049, 86,
- 168, 86, 86, 2043, 2055, 2054, 86, 86, 2056, 86,
- 2059, 2058, 86, 2060, 2050, 3252, 2052, 2061, 86, 2062,
- 86, 2057, 2064, 86, 86, 86, 86, 86, 86, 2063,
- 2065, 2066, 2068, 2067, 86, 86, 86, 2071, 2070, 2069,
- 86, 2072, 86, 86, 86, 2076, 86, 86, 2073, 2075,
-
- 86, 86, 2077, 86, 2074, 2078, 2079, 86, 2081, 86,
- 2080, 86, 2083, 86, 86, 86, 2088, 2082, 2086, 86,
- 2087, 86, 86, 86, 86, 86, 86, 86, 2093, 2084,
- 2090, 86, 2085, 86, 2097, 2096, 86, 2089, 2092, 2094,
- 2099, 2091, 86, 2095, 86, 2098, 86, 86, 2100, 2104,
- 86, 2102, 86, 86, 86, 2105, 86, 86, 86, 2110,
- 2103, 86, 2112, 2101, 86, 86, 2113, 2114, 86, 2106,
- 2107, 2108, 2109, 86, 2111, 2116, 86, 86, 2117, 86,
- 2119, 2115, 86, 86, 86, 2118, 86, 86, 2123, 2120,
- 86, 86, 86, 86, 86, 86, 86, 86, 86, 2124,
-
- 86, 86, 86, 2131, 2122, 2121, 2126, 2127, 2128, 2136,
- 86, 2137, 2125, 2130, 2135, 86, 2132, 86, 2129, 86,
- 2133, 86, 2139, 86, 2134, 86, 2140, 2143, 2142, 86,
- 86, 86, 86, 86, 86, 2138, 2145, 2141, 86, 2146,
- 86, 86, 2147, 2149, 86, 86, 2151, 2144, 2148, 86,
- 2150, 2153, 2155, 86, 86, 2154, 86, 86, 86, 2152,
- 2158, 2157, 2159, 86, 86, 86, 86, 2163, 2160, 86,
- 2164, 2156, 2161, 86, 86, 86, 86, 2166, 86, 2165,
- 2169, 86, 86, 2170, 2162, 86, 2173, 86, 3252, 2168,
- 2174, 2171, 86, 2167, 86, 86, 2175, 86, 2172, 2179,
-
- 86, 86, 2181, 2177, 86, 2176, 86, 2182, 86, 2180,
- 86, 2178, 86, 2183, 86, 2184, 2188, 86, 86, 86,
- 86, 2186, 2190, 86, 2187, 86, 2185, 2191, 86, 2192,
- 2193, 2194, 86, 86, 86, 86, 2197, 2195, 2189, 2196,
- 2200, 86, 2199, 86, 86, 2198, 86, 86, 86, 86,
- 86, 86, 86, 2201, 86, 86, 2209, 2210, 2206, 2207,
- 2203, 2202, 2204, 2211, 2205, 86, 86, 86, 86, 86,
- 2208, 2212, 2214, 86, 86, 2220, 86, 168, 2215, 86,
- 2222, 86, 2216, 2219, 2213, 86, 2217, 86, 2221, 2224,
- 86, 2228, 2223, 86, 2218, 2225, 2229, 86, 2230, 2227,
-
- 2226, 2231, 86, 86, 86, 2232, 86, 86, 2235, 86,
- 86, 2233, 86, 2234, 86, 2236, 2240, 86, 2242, 2239,
- 86, 2241, 2244, 86, 2246, 86, 86, 86, 86, 2237,
- 2243, 2245, 2247, 86, 86, 2249, 86, 86, 86, 2248,
- 2238, 86, 2250, 86, 86, 2251, 86, 2252, 86, 2255,
- 86, 86, 2254, 2258, 86, 86, 2253, 86, 2264, 86,
- 2256, 2257, 2262, 86, 86, 86, 86, 2260, 2259, 2265,
- 86, 2267, 86, 86, 2261, 86, 86, 2263, 2266, 2269,
- 2272, 86, 2270, 2275, 86, 86, 86, 86, 86, 2273,
- 2268, 86, 2271, 2276, 86, 86, 86, 86, 86, 2274,
-
- 86, 86, 86, 2291, 2287, 2277, 2278, 86, 2283, 2288,
- 86, 2279, 86, 2281, 2286, 2280, 2282, 2285, 2284, 2289,
- 86, 86, 86, 2292, 86, 2294, 2290, 86, 2295, 2296,
- 86, 2297, 86, 86, 86, 2300, 2293, 86, 86, 2298,
- 2303, 86, 2304, 86, 86, 86, 2299, 2301, 86, 2305,
- 2302, 86, 86, 2306, 2310, 86, 86, 2307, 2311, 86,
- 2313, 86, 86, 2309, 86, 2308, 2315, 86, 86, 2317,
- 86, 2312, 2318, 86, 2314, 2319, 86, 2316, 86, 2321,
- 86, 86, 2320, 2325, 86, 86, 2324, 2327, 86, 86,
- 86, 86, 2322, 86, 2330, 86, 2329, 86, 2331, 2323,
-
- 2333, 86, 86, 86, 2326, 2337, 86, 2328, 86, 86,
- 2335, 86, 2334, 2332, 86, 2341, 2342, 86, 86, 86,
- 86, 2336, 86, 2338, 2340, 2344, 2347, 86, 86, 86,
- 86, 2339, 86, 2343, 2345, 2349, 86, 2346, 2348, 86,
- 2354, 86, 86, 2350, 86, 86, 2356, 86, 2351, 86,
- 2352, 2355, 2357, 2360, 86, 86, 86, 86, 86, 2361,
- 2362, 2366, 2353, 86, 86, 3252, 86, 2358, 2365, 2359,
- 2363, 2364, 86, 86, 2371, 2373, 86, 2368, 2369, 2370,
- 86, 86, 86, 2367, 2372, 86, 86, 2374, 86, 2377,
- 2375, 2376, 86, 86, 86, 2378, 86, 2379, 2384, 86,
-
- 2383, 2385, 2380, 2381, 86, 2382, 86, 86, 86, 2390,
- 2386, 86, 2389, 86, 2391, 86, 168, 2388, 86, 2387,
- 86, 2393, 2392, 86, 2398, 86, 86, 86, 86, 86,
- 86, 86, 86, 86, 2405, 86, 2396, 2400, 2394, 2397,
- 2395, 2399, 2401, 2402, 2403, 2404, 86, 2408, 2409, 86,
- 86, 2406, 2407, 86, 2410, 2411, 86, 86, 86, 2414,
- 2412, 2415, 86, 2413, 2418, 86, 86, 86, 2417, 86,
- 86, 2416, 86, 2419, 86, 86, 2423, 2424, 2420, 86,
- 86, 86, 2428, 86, 2421, 86, 2426, 2429, 86, 2427,
- 86, 2431, 86, 2422, 2425, 2430, 2432, 86, 86, 86,
-
- 86, 2433, 86, 2435, 2436, 86, 86, 2438, 86, 86,
- 86, 86, 86, 2437, 2442, 2445, 86, 2444, 2434, 86,
- 86, 86, 2446, 2441, 86, 86, 2439, 86, 2440, 2449,
- 86, 2443, 86, 86, 2454, 86, 86, 2447, 2453, 2448,
- 86, 86, 2451, 2452, 2455, 86, 2450, 2456, 2525, 2457,
- 86, 2458, 86, 86, 2461, 2459, 86, 2463, 2460, 86,
- 2462, 2465, 86, 86, 86, 2467, 86, 86, 86, 86,
- 86, 2464, 86, 2466, 2471, 86, 86, 2475, 86, 86,
- 2473, 2474, 2469, 2476, 86, 2468, 2470, 2477, 86, 2478,
- 86, 86, 86, 86, 86, 2479, 2481, 2486, 2472, 2484,
-
- 86, 86, 86, 86, 86, 86, 2483, 2489, 86, 86,
- 2485, 2482, 2480, 86, 86, 2493, 2490, 2494, 86, 2488,
- 2487, 86, 86, 86, 2491, 86, 2495, 2492, 86, 86,
- 2498, 2499, 2497, 86, 86, 86, 86, 3252, 86, 86,
- 2496, 2503, 2500, 2505, 2506, 86, 2502, 2501, 2507, 86,
- 2508, 86, 2509, 86, 86, 2504, 86, 2511, 86, 2513,
- 86, 2512, 86, 2514, 86, 86, 2510, 86, 2519, 86,
- 86, 86, 2515, 2521, 86, 86, 2516, 2522, 86, 86,
- 86, 86, 2523, 2518, 86, 2517, 2528, 2524, 86, 2520,
- 86, 2526, 2531, 86, 86, 86, 86, 86, 86, 2532,
-
- 2527, 168, 86, 2539, 2529, 86, 86, 86, 2530, 2535,
- 86, 86, 2537, 2538, 2540, 2534, 86, 86, 2550, 86,
- 2533, 2536, 2541, 86, 2543, 2542, 2546, 86, 86, 86,
- 86, 2547, 2548, 2544, 2549, 2551, 86, 86, 2552, 2545,
- 86, 2553, 86, 2554, 86, 86, 2555, 86, 86, 2557,
- 86, 86, 86, 86, 86, 2556, 2565, 86, 86, 86,
- 2558, 2563, 86, 86, 2569, 86, 2560, 2559, 2570, 86,
- 86, 2562, 2561, 2564, 2571, 86, 2567, 2566, 86, 2573,
- 2568, 2574, 86, 86, 2575, 2576, 86, 2572, 86, 86,
- 86, 86, 86, 3252, 86, 2579, 2577, 2585, 86, 2586,
-
- 86, 2578, 86, 86, 2580, 86, 86, 86, 2581, 2582,
- 2583, 2584, 2588, 2589, 86, 2590, 86, 2591, 86, 86,
- 2587, 2592, 2593, 86, 2594, 86, 86, 86, 86, 2599,
- 2595, 2598, 2600, 86, 86, 86, 2601, 86, 2596, 2597,
- 2602, 86, 86, 86, 2604, 86, 86, 2603, 86, 86,
- 2608, 3252, 86, 86, 2606, 2612, 2605, 2613, 86, 86,
- 2616, 86, 86, 2607, 86, 86, 2609, 2610, 2614, 2611,
- 86, 86, 2620, 86, 2617, 2619, 86, 2615, 2621, 2618,
- 86, 86, 2623, 2625, 86, 86, 86, 2629, 86, 86,
- 2628, 2622, 86, 2626, 2627, 2631, 86, 2632, 86, 86,
-
- 2624, 86, 2636, 86, 86, 2637, 86, 2633, 2630, 2639,
- 86, 86, 86, 2635, 86, 2634, 86, 86, 2644, 86,
- 2646, 86, 86, 2642, 2640, 2641, 2643, 2647, 2638, 86,
- 86, 2645, 86, 86, 2648, 86, 86, 2650, 86, 3252,
- 86, 2651, 86, 86, 2649, 2653, 2654, 2656, 2657, 86,
- 2659, 86, 2660, 86, 2652, 2655, 2661, 168, 86, 86,
- 86, 86, 2666, 3252, 2658, 2662, 2663, 86, 86, 86,
- 2668, 86, 2667, 3252, 86, 2671, 86, 2664, 2665, 2670,
- 2672, 86, 86, 2674, 86, 86, 2669, 2676, 2675, 86,
- 86, 86, 2677, 86, 2678, 2673, 2679, 2681, 86, 86,
-
- 86, 86, 2682, 86, 2680, 2683, 86, 86, 2684, 2688,
- 86, 2689, 86, 86, 2686, 86, 2685, 86, 2690, 86,
- 86, 86, 2691, 86, 2694, 2693, 86, 86, 2687, 86,
- 2698, 86, 2696, 86, 2697, 2692, 2699, 86, 2695, 2704,
- 2700, 86, 2701, 86, 2702, 86, 2703, 2705, 86, 86,
- 86, 86, 2709, 86, 86, 86, 86, 2713, 86, 2711,
- 86, 86, 86, 2718, 86, 86, 2717, 2706, 3252, 2707,
- 2708, 2712, 2720, 2710, 2714, 2715, 2721, 2722, 86, 2723,
- 86, 2716, 86, 86, 86, 86, 86, 86, 86, 86,
- 2719, 2725, 2724, 2728, 2726, 86, 86, 2731, 86, 86,
-
- 2727, 3252, 2729, 2733, 86, 2734, 86, 2735, 86, 86,
- 2730, 86, 86, 2736, 2738, 86, 2732, 2737, 86, 2739,
- 86, 2742, 86, 2740, 86, 2745, 2743, 86, 2746, 86,
- 86, 2744, 2741, 2747, 86, 86, 86, 86, 2748, 86,
- 2750, 2752, 86, 2749, 86, 2753, 2754, 86, 2756, 86,
- 86, 86, 2755, 2760, 2761, 86, 2751, 2758, 86, 86,
- 86, 2763, 2762, 2757, 86, 2759, 2764, 86, 86, 86,
- 2769, 86, 86, 86, 86, 2768, 86, 2771, 2772, 86,
- 86, 86, 2774, 2765, 2766, 2773, 86, 86, 2767, 2775,
- 2777, 86, 2778, 86, 86, 86, 2770, 2776, 2779, 2780,
-
- 2781, 86, 2785, 86, 86, 86, 86, 86, 2787, 86,
- 86, 2782, 86, 2792, 2783, 2784, 2788, 2791, 2786, 2793,
- 2789, 2796, 86, 86, 2794, 86, 2790, 86, 2797, 86,
- 2798, 2795, 86, 2799, 86, 2800, 86, 86, 86, 2801,
- 86, 2802, 86, 86, 86, 86, 86, 2806, 2810, 86,
- 86, 86, 2807, 2811, 2813, 86, 86, 2803, 2814, 2805,
- 2815, 86, 2812, 86, 2804, 2808, 2809, 86, 2816, 2817,
- 86, 86, 86, 86, 2821, 86, 2818, 2822, 86, 2823,
- 2819, 2820, 2824, 86, 2826, 86, 86, 86, 86, 2827,
- 86, 2830, 86, 2831, 2829, 2832, 86, 86, 2825, 2828,
-
- 2833, 86, 86, 86, 86, 86, 2834, 86, 86, 2842,
- 86, 86, 2837, 86, 86, 86, 2838, 2840, 2845, 2846,
- 2836, 86, 2835, 2843, 86, 2847, 86, 2841, 86, 86,
- 2839, 2844, 86, 2849, 2880, 2848, 86, 2850, 2852, 86,
- 2851, 2853, 86, 2854, 86, 86, 86, 86, 86, 2856,
- 2859, 2857, 2858, 2860, 2855, 86, 86, 2862, 86, 86,
- 2861, 86, 86, 86, 2863, 86, 2868, 2866, 2870, 86,
- 86, 2864, 86, 86, 2871, 86, 86, 2874, 2872, 86,
- 2873, 2867, 2865, 86, 86, 86, 2879, 86, 86, 86,
- 2869, 86, 86, 2882, 86, 86, 86, 86, 2875, 2876,
-
- 2877, 2881, 2886, 2878, 2883, 86, 2888, 2884, 86, 86,
- 2887, 2885, 2891, 86, 2889, 2893, 86, 2894, 86, 86,
- 2896, 86, 86, 86, 86, 86, 2901, 86, 2892, 2900,
- 86, 86, 86, 86, 2890, 86, 2905, 86, 2897, 2898,
- 2895, 2899, 2908, 86, 86, 86, 2910, 2906, 86, 86,
- 2902, 2904, 86, 2911, 2903, 86, 2907, 2913, 86, 2914,
- 86, 2916, 86, 86, 2909, 86, 2918, 2912, 2921, 2915,
- 86, 86, 2919, 86, 86, 2925, 86, 86, 86, 2927,
- 2926, 2917, 86, 2923, 86, 2920, 2930, 2931, 86, 2922,
- 2933, 86, 86, 2924, 2928, 86, 86, 86, 2932, 2936,
-
- 86, 86, 2935, 86, 2929, 2939, 2937, 86, 86, 2934,
- 86, 86, 2942, 86, 86, 86, 86, 2947, 86, 86,
- 2943, 86, 2938, 2949, 2940, 2941, 2951, 86, 2944, 2946,
- 2950, 2952, 86, 86, 2948, 86, 86, 86, 2953, 2945,
- 86, 2955, 2956, 86, 2957, 86, 2958, 86, 2960, 2954,
- 86, 2962, 86, 86, 86, 2961, 86, 86, 86, 2963,
- 86, 2967, 86, 2959, 2968, 86, 86, 86, 2972, 86,
- 2973, 86, 2969, 86, 2974, 2964, 2971, 3252, 2965, 2966,
- 86, 86, 2970, 86, 2978, 86, 2975, 2982, 2977, 2979,
- 86, 86, 2976, 86, 86, 2981, 2980, 86, 2985, 86,
-
- 86, 86, 86, 86, 86, 2984, 2983, 2986, 2989, 86,
- 86, 86, 86, 86, 86, 2991, 2990, 86, 2992, 86,
- 2987, 2988, 86, 86, 86, 86, 86, 86, 3084, 3001,
- 2993, 3002, 2994, 2995, 3003, 2996, 2998, 2999, 2997, 3004,
- 86, 86, 86, 86, 3000, 86, 3005, 3006, 3007, 3009,
- 86, 3010, 86, 3008, 86, 86, 3014, 86, 3011, 86,
- 3012, 3013, 3015, 86, 3016, 3017, 86, 86, 3018, 3019,
- 3022, 86, 3020, 3021, 86, 86, 3023, 86, 86, 86,
- 86, 86, 3029, 86, 3030, 86, 3028, 86, 86, 3032,
- 86, 86, 3024, 3025, 3031, 86, 3252, 3033, 3026, 86,
-
- 3027, 86, 3037, 86, 3036, 3034, 3038, 86, 3041, 3035,
- 3039, 86, 86, 3044, 3040, 86, 3046, 86, 3045, 86,
- 86, 3042, 86, 86, 3043, 86, 86, 86, 3050, 3054,
- 3051, 86, 3048, 3053, 86, 86, 3062, 3055, 3056, 86,
- 3047, 3049, 3057, 86, 86, 3052, 3058, 86, 3252, 3059,
- 3060, 86, 3061, 86, 3063, 86, 3064, 86, 3065, 86,
- 3066, 86, 3067, 86, 3068, 86, 3069, 86, 86, 3071,
- 86, 86, 86, 86, 86, 86, 86, 3070, 3076, 86,
- 3072, 86, 86, 86, 3073, 86, 3080, 86, 3079, 3077,
- 3082, 86, 86, 3074, 3075, 3078, 3081, 86, 3086, 86,
-
- 3089, 3083, 3088, 86, 86, 86, 86, 86, 86, 3091,
- 3087, 86, 86, 3085, 3095, 86, 86, 3090, 86, 86,
- 86, 3096, 3099, 3252, 3092, 3093, 86, 3094, 3101, 86,
- 3097, 3100, 3102, 86, 3103, 86, 86, 86, 86, 86,
- 86, 3106, 3098, 3104, 86, 3105, 3107, 86, 86, 3111,
- 3112, 3110, 3108, 86, 86, 3114, 86, 86, 86, 86,
- 3115, 86, 3109, 86, 86, 86, 86, 86, 3113, 86,
- 3121, 3124, 86, 3118, 3126, 3116, 3117, 3122, 3120, 86,
- 3129, 86, 86, 86, 3119, 3123, 3127, 3125, 3131, 86,
- 86, 3130, 86, 3132, 3133, 86, 3134, 86, 86, 3128,
-
- 86, 3137, 3135, 86, 86, 3138, 86, 3142, 3139, 86,
- 3136, 86, 86, 86, 86, 86, 3145, 3147, 86, 3148,
- 86, 3141, 86, 3143, 3144, 3151, 86, 86, 86, 3140,
- 3149, 3154, 86, 86, 3146, 86, 3155, 86, 3158, 86,
- 86, 3150, 3152, 3159, 86, 3156, 3153, 86, 86, 86,
- 86, 86, 3157, 3160, 86, 3163, 3164, 86, 86, 3162,
- 3161, 3165, 86, 86, 86, 86, 86, 3169, 3168, 3166,
- 3171, 3167, 86, 86, 86, 86, 86, 86, 3170, 3173,
- 3176, 3177, 86, 3172, 3184, 3174, 3178, 86, 3182, 86,
- 86, 86, 3175, 86, 3179, 3180, 3183, 86, 3185, 86,
-
- 86, 3181, 86, 3190, 3186, 3187, 86, 3188, 86, 86,
- 3191, 86, 3189, 3192, 3193, 86, 86, 86, 86, 86,
- 3194, 3199, 86, 86, 3196, 3195, 3252, 86, 86, 3202,
- 3203, 86, 86, 86, 86, 86, 3201, 3197, 3198, 3206,
- 86, 3200, 3204, 86, 3210, 3205, 86, 86, 86, 86,
- 3214, 3207, 3211, 3209, 3208, 3252, 86, 86, 3216, 3212,
- 86, 3217, 86, 86, 86, 3221, 86, 3218, 86, 86,
- 3219, 3223, 86, 3222, 3213, 3215, 3224, 86, 86, 3225,
- 86, 86, 86, 3220, 86, 3226, 3228, 3230, 86, 86,
- 86, 86, 86, 86, 3232, 3233, 86, 3236, 86, 3227,
-
- 3252, 3229, 3252, 3231, 3237, 86, 86, 3240, 3241, 86,
- 3234, 3235, 3238, 86, 3243, 86, 86, 3239, 3244, 86,
- 3242, 86, 86, 3245, 86, 86, 3246, 3247, 3250, 86,
- 3251, 86, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252,
- 3252, 3252, 3252, 3248, 3249, 47, 47, 47, 47, 47,
- 47, 47, 52, 52, 52, 52, 52, 52, 52, 57,
- 57, 57, 57, 57, 57, 57, 63, 63, 63, 63,
- 63, 63, 63, 68, 68, 68, 68, 68, 68, 68,
- 74, 74, 74, 74, 74, 74, 74, 80, 80, 80,
- 80, 80, 80, 80, 89, 89, 3252, 89, 89, 89,
-
- 89, 158, 158, 3252, 3252, 3252, 158, 158, 160, 160,
- 3252, 3252, 160, 3252, 160, 162, 3252, 3252, 3252, 3252,
- 3252, 162, 165, 165, 3252, 3252, 3252, 165, 165, 167,
- 3252, 3252, 3252, 3252, 3252, 167, 169, 169, 3252, 169,
- 169, 169, 169, 172, 3252, 3252, 3252, 3252, 3252, 172,
- 175, 175, 3252, 3252, 3252, 175, 175, 90, 90, 3252,
- 90, 90, 90, 90, 17, 3252, 3252, 3252, 3252, 3252,
- 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252,
- 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252,
- 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252,
-
- 3252, 3252, 3252, 3252, 3252
+ 492, 86, 164, 493, 501, 494, 86, 86, 502, 511,
+ 86, 86, 513, 516, 86, 515, 503, 86, 504, 510,
+ 505, 168, 514, 527, 86, 518, 528, 512, 86, 517,
+
+ 86, 529, 86, 506, 530, 86, 507, 86, 508, 526,
+ 509, 86, 531, 519, 520, 86, 534, 86, 536, 532,
+ 533, 86, 86, 521, 86, 522, 523, 524, 86, 540,
+ 525, 86, 86, 542, 535, 86, 539, 86, 86, 541,
+ 86, 538, 549, 537, 86, 547, 546, 86, 86, 86,
+ 550, 543, 544, 548, 86, 554, 86, 545, 86, 552,
+ 86, 86, 86, 86, 551, 557, 558, 559, 553, 86,
+ 86, 86, 86, 86, 556, 565, 566, 86, 571, 561,
+ 86, 555, 560, 86, 568, 563, 562, 569, 86, 86,
+ 86, 572, 86, 567, 585, 86, 86, 163, 86, 86,
+
+ 86, 580, 570, 573, 577, 574, 576, 586, 575, 581,
+ 582, 86, 86, 583, 584, 578, 587, 579, 86, 590,
+ 591, 589, 588, 86, 86, 86, 86, 86, 593, 592,
+ 594, 595, 86, 86, 597, 86, 599, 86, 86, 603,
+ 86, 86, 602, 600, 86, 86, 86, 86, 598, 86,
+ 604, 86, 596, 601, 607, 86, 608, 86, 609, 605,
+ 86, 86, 86, 86, 86, 86, 610, 611, 606, 86,
+ 619, 86, 615, 86, 614, 616, 617, 86, 618, 613,
+ 612, 86, 621, 86, 620, 86, 623, 86, 86, 86,
+ 86, 86, 86, 86, 86, 622, 625, 634, 626, 161,
+
+ 636, 86, 628, 86, 624, 86, 86, 627, 633, 629,
+ 631, 630, 86, 632, 635, 638, 86, 637, 86, 86,
+ 86, 641, 644, 86, 639, 647, 86, 640, 86, 646,
+ 86, 86, 86, 642, 86, 643, 86, 650, 86, 86,
+ 86, 86, 653, 645, 649, 654, 656, 86, 86, 648,
+ 86, 86, 86, 86, 655, 86, 651, 652, 86, 670,
+ 86, 86, 86, 657, 659, 692, 673, 658, 86, 660,
+ 668, 671, 86, 669, 661, 676, 662, 672, 86, 86,
+ 86, 680, 663, 677, 664, 674, 681, 665, 666, 675,
+ 86, 86, 86, 86, 667, 678, 685, 682, 679, 86,
+
+ 86, 86, 688, 86, 86, 683, 86, 684, 86, 690,
+ 86, 86, 86, 86, 86, 86, 86, 696, 86, 691,
+ 687, 693, 686, 697, 700, 701, 86, 168, 689, 694,
+ 699, 702, 698, 695, 703, 86, 86, 86, 704, 86,
+ 86, 86, 86, 86, 86, 86, 710, 712, 86, 86,
+ 705, 707, 715, 86, 708, 706, 711, 714, 716, 709,
+ 717, 718, 86, 86, 86, 86, 720, 86, 713, 86,
+ 86, 86, 86, 86, 719, 723, 724, 729, 86, 721,
+ 725, 86, 730, 86, 722, 732, 86, 726, 728, 734,
+ 727, 731, 733, 86, 737, 86, 735, 86, 736, 86,
+
+ 86, 738, 740, 86, 86, 86, 739, 86, 742, 743,
+ 86, 86, 86, 86, 86, 741, 746, 747, 86, 745,
+ 86, 751, 750, 86, 86, 86, 86, 86, 752, 744,
+ 754, 86, 756, 86, 86, 86, 86, 748, 86, 749,
+ 755, 753, 86, 759, 762, 86, 86, 763, 757, 765,
+ 86, 760, 86, 86, 766, 758, 761, 767, 768, 764,
+ 86, 770, 86, 86, 86, 86, 86, 777, 773, 774,
+ 769, 771, 86, 86, 86, 779, 86, 86, 772, 775,
+ 780, 776, 782, 778, 86, 86, 86, 783, 86, 86,
+ 784, 86, 86, 787, 86, 86, 789, 791, 86, 86,
+
+ 86, 86, 781, 86, 785, 788, 797, 786, 792, 86,
+ 795, 794, 86, 159, 790, 796, 86, 86, 86, 793,
+ 799, 802, 798, 800, 801, 86, 86, 804, 86, 806,
+ 803, 86, 808, 86, 86, 86, 807, 809, 86, 86,
+ 812, 86, 805, 86, 811, 813, 86, 86, 86, 819,
+ 86, 86, 816, 86, 814, 86, 815, 821, 810, 86,
+ 86, 824, 86, 86, 822, 826, 817, 818, 828, 820,
+ 825, 823, 86, 86, 86, 86, 831, 86, 830, 835,
+ 827, 832, 86, 86, 829, 86, 833, 86, 86, 837,
+ 86, 86, 86, 86, 86, 843, 86, 86, 844, 86,
+
+ 834, 86, 836, 86, 86, 845, 838, 86, 839, 840,
+ 86, 841, 846, 842, 847, 86, 852, 86, 86, 850,
+ 86, 848, 86, 849, 86, 851, 86, 86, 857, 853,
+ 854, 86, 86, 86, 86, 86, 855, 86, 866, 856,
+ 864, 86, 86, 859, 858, 867, 86, 86, 865, 860,
+ 861, 862, 863, 86, 86, 86, 868, 86, 870, 872,
+ 86, 86, 86, 86, 86, 869, 176, 871, 876, 877,
+ 878, 873, 86, 875, 86, 86, 874, 879, 86, 880,
+ 881, 86, 882, 86, 86, 168, 86, 883, 86, 888,
+ 887, 86, 885, 86, 86, 884, 886, 889, 86, 86,
+
+ 891, 86, 890, 895, 86, 86, 896, 898, 86, 892,
+ 86, 86, 893, 86, 897, 899, 86, 902, 86, 86,
+ 894, 903, 900, 86, 86, 86, 908, 86, 904, 86,
+ 901, 905, 86, 909, 910, 86, 907, 86, 86, 86,
+ 86, 906, 86, 86, 86, 929, 924, 911, 923, 925,
+ 86, 926, 86, 921, 928, 86, 930, 913, 86, 86,
+ 912, 86, 86, 914, 86, 935, 915, 86, 927, 931,
+ 916, 86, 943, 917, 86, 86, 933, 932, 86, 86,
+ 918, 919, 946, 920, 934, 86, 936, 937, 86, 938,
+ 86, 86, 939, 945, 948, 944, 950, 940, 951, 86,
+
+ 86, 955, 86, 941, 942, 954, 956, 86, 86, 86,
+ 949, 174, 947, 86, 952, 957, 86, 958, 960, 86,
+ 961, 86, 86, 86, 959, 953, 962, 86, 964, 86,
+ 963, 965, 86, 86, 967, 966, 86, 86, 86, 86,
+ 969, 86, 973, 86, 86, 86, 972, 86, 968, 86,
+ 976, 86, 982, 86, 980, 978, 86, 970, 971, 974,
+ 86, 975, 86, 977, 983, 1001, 86, 981, 986, 984,
+ 86, 985, 987, 979, 86, 86, 989, 86, 86, 86,
+ 988, 86, 86, 991, 990, 993, 86, 992, 994, 86,
+ 86, 86, 86, 86, 86, 1000, 86, 997, 995, 86,
+
+ 998, 1003, 86, 86, 1004, 86, 86, 1002, 86, 996,
+ 86, 86, 86, 999, 1006, 1007, 1009, 86, 86, 86,
+ 1011, 1010, 1005, 1012, 86, 86, 86, 86, 1019, 86,
+ 1017, 86, 1008, 1013, 1015, 1018, 86, 86, 86, 1016,
+ 86, 1027, 86, 1024, 1020, 86, 1022, 1026, 86, 1014,
+ 1021, 1025, 86, 86, 86, 86, 86, 1029, 86, 86,
+ 86, 86, 1023, 1035, 86, 1037, 86, 1040, 86, 1028,
+ 86, 173, 86, 86, 1030, 1031, 1032, 1041, 86, 1034,
+ 1033, 86, 1038, 1036, 1042, 1039, 86, 1045, 86, 1043,
+ 1048, 86, 1044, 1047, 86, 86, 86, 86, 86, 86,
+
+ 1046, 86, 86, 1057, 1050, 1052, 1058, 1060, 86, 86,
+ 86, 86, 86, 86, 1049, 86, 1051, 1063, 1053, 1065,
+ 1055, 1054, 1056, 86, 1059, 1061, 1064, 86, 1062, 86,
+ 86, 86, 86, 86, 1071, 1069, 1072, 86, 86, 1076,
+ 1073, 1067, 86, 86, 86, 86, 1066, 1078, 86, 1068,
+ 86, 86, 1070, 86, 1081, 86, 1074, 1075, 1080, 1082,
+ 168, 86, 86, 1077, 86, 1084, 1083, 86, 1079, 86,
+ 1085, 86, 1088, 86, 86, 86, 86, 1086, 86, 1101,
+ 86, 86, 1087, 1089, 1102, 1104, 86, 1091, 1092, 86,
+ 86, 86, 86, 1106, 1093, 1090, 1103, 1094, 86, 86,
+
+ 86, 1095, 86, 1096, 1120, 1109, 1107, 1097, 86, 1098,
+ 86, 86, 1111, 1108, 1099, 1105, 1110, 1112, 86, 1100,
+ 1113, 86, 1114, 86, 86, 1115, 86, 86, 86, 1118,
+ 86, 1121, 1133, 86, 86, 1130, 86, 1116, 1117, 1119,
+ 1126, 1122, 1125, 86, 1124, 1128, 1129, 1132, 1127, 1123,
+ 1131, 86, 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 1147, 86, 1144, 86, 86, 86, 1148, 86, 1143,
+ 86, 1146, 86, 1134, 1135, 86, 1136, 86, 1145, 1150,
+ 1149, 1137, 1154, 1138, 168, 1151, 1153, 1152, 86, 1139,
+ 86, 86, 86, 1158, 1140, 1141, 1155, 86, 1160, 86,
+
+ 86, 1142, 1156, 86, 1161, 1163, 86, 86, 86, 1164,
+ 1157, 86, 86, 1166, 1168, 1159, 86, 86, 86, 86,
+ 86, 1169, 86, 1162, 1174, 1167, 1165, 1171, 1172, 86,
+ 86, 86, 86, 86, 86, 86, 1170, 1177, 1173, 86,
+ 1175, 86, 86, 86, 86, 86, 86, 86, 1176, 1179,
+ 1182, 1181, 1183, 1178, 1180, 86, 1186, 86, 86, 1185,
+ 1187, 1184, 86, 86, 1192, 1189, 1190, 86, 86, 86,
+ 86, 1188, 1191, 1194, 1195, 1196, 1197, 1199, 1193, 86,
+ 1198, 86, 86, 86, 1202, 86, 86, 86, 1204, 1203,
+ 86, 1205, 86, 86, 1200, 1206, 86, 86, 1201, 1207,
+
+ 86, 1213, 86, 86, 86, 1215, 1208, 86, 86, 1209,
+ 1211, 86, 86, 1217, 1210, 1212, 86, 86, 1216, 1219,
+ 86, 166, 1214, 86, 86, 1220, 1218, 86, 1221, 1222,
+ 86, 86, 1224, 1223, 86, 1225, 1228, 86, 86, 1230,
+ 1227, 1231, 86, 1226, 1229, 86, 1232, 86, 86, 86,
+ 1235, 1234, 86, 86, 86, 86, 86, 1241, 1239, 86,
+ 1242, 86, 86, 86, 1243, 1233, 86, 1244, 86, 1240,
+ 1236, 1246, 1237, 1245, 1238, 86, 1249, 86, 86, 1247,
+ 1251, 86, 86, 1250, 86, 86, 86, 86, 86, 86,
+ 86, 1256, 1257, 1252, 1253, 1248, 86, 86, 86, 86,
+
+ 86, 1258, 1259, 1263, 1254, 1264, 1255, 86, 86, 86,
+ 1261, 86, 1266, 86, 1260, 1265, 1267, 86, 1262, 86,
+ 1271, 86, 86, 86, 86, 1270, 86, 1268, 86, 1277,
+ 86, 1273, 168, 1269, 86, 86, 86, 86, 86, 1272,
+ 86, 1282, 1274, 164, 86, 1284, 86, 1276, 1279, 1281,
+ 1280, 1275, 1278, 1283, 1286, 1287, 1288, 86, 1285, 86,
+ 86, 86, 1289, 86, 1291, 1290, 86, 86, 86, 86,
+ 86, 86, 86, 1294, 86, 1300, 86, 86, 1297, 86,
+ 1292, 1293, 86, 86, 1295, 86, 163, 1298, 1304, 1296,
+ 86, 1301, 86, 1299, 86, 1306, 1310, 1302, 1303, 86,
+
+ 1311, 1314, 86, 86, 1307, 1305, 1308, 1312, 86, 1309,
+ 1313, 86, 86, 86, 86, 1316, 86, 1315, 86, 86,
+ 86, 1320, 86, 1319, 1323, 86, 86, 1317, 86, 1327,
+ 86, 1318, 1322, 86, 86, 86, 1324, 1321, 1328, 1325,
+ 1329, 86, 86, 1333, 1326, 1332, 1330, 1331, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 1339,
+ 86, 86, 86, 1334, 1335, 1337, 1338, 1340, 1344, 1336,
+ 86, 86, 86, 1341, 86, 1343, 1345, 1342, 1346, 1348,
+ 1347, 86, 86, 86, 86, 86, 1349, 86, 1356, 86,
+ 86, 1350, 86, 1351, 86, 1359, 86, 86, 1354, 1353,
+
+ 1357, 1352, 1362, 1358, 1355, 86, 1364, 86, 1361, 86,
+ 1360, 1365, 86, 86, 1369, 1366, 86, 1363, 86, 1379,
+ 1383, 1367, 1368, 86, 1370, 86, 86, 1378, 1371, 1377,
+ 86, 1372, 1373, 86, 1380, 1381, 1374, 86, 86, 86,
+ 86, 86, 1375, 86, 1384, 1385, 1376, 1382, 86, 1386,
+ 86, 1388, 86, 86, 86, 1389, 86, 1390, 1387, 86,
+ 86, 1391, 86, 1393, 1395, 86, 1398, 1399, 86, 1525,
+ 1400, 1392, 86, 86, 1396, 86, 1394, 1402, 86, 1401,
+ 1397, 86, 1403, 86, 1404, 86, 1405, 1411, 1406, 86,
+ 1407, 1408, 1409, 1412, 86, 86, 1410, 1415, 86, 1413,
+
+ 86, 86, 1416, 86, 1414, 86, 1419, 1417, 86, 86,
+ 86, 86, 1425, 86, 1426, 86, 86, 1421, 86, 1420,
+ 86, 86, 1418, 1427, 86, 1424, 1429, 86, 1422, 1423,
+ 1428, 86, 86, 1431, 1430, 1435, 86, 1434, 86, 1437,
+ 86, 86, 86, 1438, 86, 1432, 86, 1439, 86, 1443,
+ 86, 1440, 86, 1436, 1445, 86, 1433, 1442, 86, 1446,
+ 86, 1441, 86, 86, 86, 1447, 1450, 86, 86, 86,
+ 86, 86, 1444, 1452, 86, 1467, 1454, 86, 86, 86,
+ 1456, 86, 1457, 1448, 1449, 86, 1455, 86, 1451, 1453,
+ 1458, 86, 86, 1463, 1459, 1461, 1460, 1462, 86, 86,
+
+ 86, 86, 1465, 1464, 86, 1466, 1468, 86, 86, 86,
+ 86, 1473, 1474, 1470, 1475, 1471, 86, 86, 86, 1476,
+ 86, 86, 1469, 1472, 86, 86, 1480, 86, 168, 1477,
+ 86, 86, 1479, 1485, 1486, 1478, 86, 86, 86, 86,
+ 86, 1488, 1487, 1482, 1481, 86, 86, 86, 86, 86,
+ 1483, 1489, 86, 1496, 1484, 86, 86, 1490, 1491, 86,
+ 1493, 86, 86, 1494, 1495, 1492, 1500, 1501, 86, 86,
+ 86, 86, 86, 1505, 1503, 1497, 86, 1499, 1506, 86,
+ 1508, 1498, 86, 86, 1509, 1502, 86, 86, 86, 1504,
+ 1507, 86, 1514, 1517, 86, 1515, 1510, 1516, 1511, 1519,
+
+ 86, 1512, 86, 86, 1513, 86, 1520, 1522, 1518, 86,
+ 86, 1521, 1523, 86, 86, 1527, 86, 86, 86, 1528,
+ 86, 86, 1524, 1531, 86, 86, 86, 1526, 86, 1536,
+ 1537, 86, 86, 1540, 1529, 1533, 86, 1530, 86, 86,
+ 1532, 86, 1534, 1535, 86, 86, 86, 86, 1541, 1538,
+ 86, 1539, 1547, 86, 86, 1543, 86, 1542, 1549, 1544,
+ 1545, 1548, 86, 86, 1552, 1546, 86, 86, 1550, 86,
+ 1559, 1551, 86, 1556, 1557, 86, 1554, 1558, 1560, 86,
+ 86, 1553, 86, 86, 86, 86, 1565, 1566, 1561, 1555,
+ 1564, 1562, 86, 86, 1567, 86, 1568, 86, 1569, 86,
+
+ 86, 1570, 86, 1571, 86, 1563, 86, 86, 86, 86,
+ 86, 86, 1578, 1572, 86, 86, 1577, 86, 86, 1574,
+ 86, 86, 1575, 1580, 1573, 1576, 1581, 1584, 86, 1589,
+ 1586, 1582, 1585, 86, 1579, 1587, 86, 1583, 86, 86,
+ 1588, 86, 86, 86, 86, 86, 1597, 1593, 86, 86,
+ 1592, 86, 86, 1598, 1600, 86, 86, 1590, 1591, 1603,
+ 86, 1602, 1594, 1596, 1595, 86, 86, 86, 86, 86,
+ 1601, 86, 1611, 161, 86, 1599, 86, 1609, 86, 86,
+ 86, 1612, 1614, 86, 1617, 1604, 1605, 1606, 1607, 1610,
+ 1608, 1613, 1615, 86, 86, 86, 86, 86, 86, 1616,
+
+ 1621, 86, 86, 86, 1622, 1619, 86, 1625, 1618, 86,
+ 1620, 1629, 86, 86, 86, 86, 1631, 1623, 1626, 1624,
+ 1630, 86, 86, 86, 86, 1628, 1627, 1633, 1632, 1634,
+ 86, 86, 86, 1640, 1635, 1636, 1641, 86, 86, 86,
+ 86, 1637, 86, 1639, 86, 1645, 1646, 1644, 86, 86,
+ 1638, 86, 86, 1648, 86, 86, 1642, 86, 1649, 1650,
+ 86, 1643, 86, 86, 86, 1651, 1653, 1652, 1647, 86,
+ 1656, 1655, 86, 86, 86, 86, 86, 1654, 86, 1657,
+ 1660, 86, 1662, 86, 86, 1663, 86, 86, 1661, 86,
+ 1668, 86, 1659, 1658, 86, 86, 1664, 86, 1665, 86,
+
+ 1671, 1669, 1673, 86, 86, 86, 1667, 86, 1674, 1666,
+ 168, 1675, 1670, 86, 1672, 86, 1676, 1679, 1678, 1677,
+ 86, 1682, 86, 86, 1680, 1681, 1683, 86, 86, 86,
+ 86, 86, 1690, 86, 86, 86, 86, 86, 1691, 1694,
+ 86, 1684, 1685, 1688, 1695, 86, 1686, 1687, 86, 86,
+ 1696, 1698, 1700, 1699, 1692, 1689, 1693, 1697, 86, 86,
+ 1702, 86, 1704, 86, 86, 86, 86, 86, 86, 86,
+ 1709, 1706, 1707, 86, 1710, 1703, 86, 86, 86, 1701,
+ 86, 86, 86, 1705, 1714, 86, 1715, 86, 86, 159,
+ 1711, 1722, 1708, 1713, 1717, 1712, 86, 86, 1716, 1719,
+
+ 86, 86, 1720, 86, 1724, 1723, 86, 1718, 1730, 86,
+ 1731, 1727, 1726, 1728, 1721, 86, 86, 1732, 1729, 86,
+ 1725, 86, 1734, 86, 1733, 86, 1735, 1736, 86, 86,
+ 86, 86, 86, 86, 1737, 86, 1743, 1744, 1742, 86,
+ 1746, 1738, 86, 86, 1745, 86, 86, 86, 1739, 86,
+ 1740, 86, 1741, 86, 1748, 1749, 86, 86, 1750, 86,
+ 86, 86, 86, 86, 86, 1751, 86, 86, 1747, 1760,
+ 1759, 1752, 86, 1754, 1755, 1756, 86, 1753, 86, 1765,
+ 1757, 86, 86, 1761, 1762, 86, 86, 86, 1758, 1764,
+ 1763, 86, 1771, 86, 86, 86, 86, 86, 1767, 86,
+
+ 1773, 1766, 86, 1775, 86, 1769, 1768, 86, 1770, 1774,
+ 86, 1776, 86, 1777, 1772, 86, 86, 86, 86, 1780,
+ 86, 86, 1782, 86, 1789, 1779, 1783, 1781, 1778, 1784,
+ 1790, 86, 1785, 1786, 1791, 86, 86, 86, 1787, 86,
+ 1794, 1793, 1795, 86, 86, 1788, 86, 86, 1792, 86,
+ 86, 1798, 1796, 86, 1799, 86, 86, 86, 86, 1802,
+ 1808, 86, 86, 1797, 1807, 1804, 1800, 1806, 1805, 1801,
+ 86, 86, 86, 86, 1803, 1810, 86, 1809, 86, 86,
+ 86, 1817, 86, 86, 86, 1814, 1812, 86, 1820, 1811,
+ 86, 1821, 1813, 1819, 86, 86, 1823, 1816, 1818, 1824,
+
+ 1825, 86, 86, 1815, 1829, 1822, 86, 86, 86, 1830,
+ 86, 86, 1826, 1835, 86, 86, 1834, 1837, 86, 86,
+ 1828, 1831, 1827, 1832, 1838, 86, 86, 1840, 1833, 86,
+ 86, 1839, 1836, 86, 86, 1841, 1844, 86, 86, 86,
+ 1848, 1846, 86, 86, 86, 1842, 86, 1847, 1843, 86,
+ 1845, 1849, 86, 86, 86, 86, 86, 1852, 1850, 1858,
+ 86, 1853, 1860, 1851, 86, 1861, 1854, 1855, 86, 1856,
+ 1857, 86, 1863, 86, 86, 86, 86, 1862, 1867, 86,
+ 1869, 1859, 86, 86, 86, 86, 86, 1873, 86, 86,
+ 86, 86, 3291, 1865, 1864, 1866, 1868, 86, 86, 1879,
+
+ 1871, 1875, 86, 1872, 1870, 86, 86, 1876, 168, 1874,
+ 1877, 1878, 86, 1882, 1880, 1883, 86, 86, 86, 86,
+ 1881, 1887, 86, 86, 86, 86, 86, 86, 1894, 1885,
+ 1889, 1884, 86, 1888, 86, 86, 1890, 1886, 1891, 86,
+ 86, 1897, 1898, 86, 1892, 86, 86, 1893, 1899, 86,
+ 1896, 1895, 1900, 86, 1901, 1902, 1903, 1904, 86, 86,
+ 1908, 86, 86, 1906, 86, 86, 86, 1907, 86, 86,
+ 86, 1905, 86, 86, 1912, 1913, 86, 86, 86, 86,
+ 3291, 1914, 1917, 86, 1910, 1915, 1911, 1909, 1918, 86,
+ 86, 1916, 86, 1926, 1923, 1921, 1925, 86, 1920, 86,
+
+ 86, 1919, 1922, 86, 1927, 86, 86, 1924, 86, 86,
+ 1932, 86, 1935, 1936, 86, 1937, 86, 86, 86, 1928,
+ 86, 1930, 1929, 1933, 86, 1934, 1931, 1939, 86, 86,
+ 1940, 1943, 86, 86, 86, 86, 1945, 1938, 1944, 1941,
+ 86, 1942, 86, 1946, 1947, 86, 1949, 86, 1951, 1950,
+ 86, 1948, 86, 1952, 86, 1953, 86, 1955, 86, 86,
+ 86, 1954, 1956, 86, 1959, 1958, 86, 1961, 86, 86,
+ 86, 1960, 86, 86, 86, 86, 86, 86, 1969, 1975,
+ 1957, 1962, 1963, 1964, 86, 86, 1967, 1976, 1965, 1973,
+ 1966, 1971, 1968, 86, 1970, 1978, 1972, 86, 86, 86,
+
+ 1974, 86, 86, 1982, 86, 86, 86, 1979, 1977, 86,
+ 1984, 86, 86, 1987, 1988, 86, 86, 1990, 86, 1980,
+ 86, 86, 86, 1981, 86, 86, 1985, 1996, 86, 1995,
+ 1992, 1983, 86, 1986, 1993, 86, 1989, 86, 86, 1998,
+ 86, 86, 2002, 1994, 1999, 1991, 86, 2000, 86, 86,
+ 2006, 86, 86, 1997, 2005, 2009, 86, 2010, 86, 2008,
+ 86, 86, 86, 86, 2004, 2012, 2001, 2011, 86, 86,
+ 86, 2007, 2003, 86, 86, 86, 86, 2015, 2013, 2017,
+ 86, 2020, 2014, 2021, 2022, 2016, 86, 86, 2018, 86,
+ 86, 2025, 86, 86, 86, 2023, 2030, 86, 86, 2029,
+
+ 2019, 2024, 86, 86, 86, 86, 86, 2026, 2034, 86,
+ 86, 2035, 2027, 2037, 86, 2028, 86, 2031, 2032, 2036,
+ 2038, 2033, 86, 2041, 86, 86, 86, 2042, 2044, 86,
+ 86, 2045, 86, 2039, 2048, 86, 86, 86, 2040, 2043,
+ 86, 2050, 2051, 86, 86, 2052, 2054, 2049, 86, 2046,
+ 2047, 86, 2053, 2058, 86, 2057, 2059, 86, 2060, 2062,
+ 2063, 86, 2055, 2061, 86, 86, 86, 2056, 86, 86,
+ 2067, 86, 86, 2065, 86, 86, 86, 86, 2069, 2072,
+ 2074, 2066, 86, 2068, 2070, 86, 86, 2064, 168, 86,
+ 86, 86, 86, 2075, 2076, 2080, 2079, 86, 2081, 2073,
+
+ 2071, 2077, 2082, 86, 2083, 86, 86, 2085, 86, 2078,
+ 86, 86, 86, 86, 2086, 2087, 86, 2088, 86, 2091,
+ 86, 2089, 86, 2090, 86, 2093, 2084, 86, 86, 2097,
+ 86, 86, 2092, 2096, 2094, 86, 86, 86, 2101, 2095,
+ 2098, 2099, 2100, 2102, 86, 86, 86, 86, 86, 86,
+ 2109, 2107, 86, 86, 86, 2104, 86, 2108, 86, 86,
+ 86, 2114, 86, 2111, 86, 2103, 2105, 86, 2106, 86,
+ 86, 2110, 2115, 2113, 86, 2119, 2112, 86, 2117, 2120,
+ 2116, 86, 86, 86, 2118, 86, 2123, 86, 2122, 2121,
+ 2125, 86, 86, 86, 2131, 2124, 2126, 86, 86, 2127,
+
+ 86, 2128, 2129, 86, 2133, 86, 2130, 2134, 2135, 86,
+ 86, 2137, 86, 86, 2132, 86, 2138, 2141, 2136, 2140,
+ 86, 2139, 86, 86, 86, 86, 86, 2142, 86, 2145,
+ 86, 86, 86, 2146, 86, 86, 86, 86, 86, 86,
+ 86, 3291, 2148, 2149, 2143, 2144, 2154, 2147, 2151, 2150,
+ 2153, 2158, 2159, 86, 86, 86, 86, 2156, 2152, 2155,
+ 86, 2157, 86, 2162, 86, 86, 86, 2163, 2166, 2165,
+ 86, 86, 2160, 86, 86, 2161, 2164, 2169, 2168, 86,
+ 2170, 86, 86, 2167, 2174, 86, 86, 86, 2172, 2176,
+ 2178, 86, 2171, 2173, 86, 86, 86, 2181, 86, 86,
+
+ 2177, 2180, 86, 2182, 2175, 86, 2186, 2183, 86, 86,
+ 86, 86, 86, 2187, 86, 2192, 86, 2184, 2189, 86,
+ 2179, 86, 2188, 86, 2193, 2185, 2196, 86, 2191, 2198,
+ 2190, 86, 86, 86, 2194, 86, 2197, 86, 2202, 86,
+ 86, 2195, 86, 2204, 86, 2200, 86, 2203, 86, 2205,
+ 86, 2199, 86, 2201, 86, 2206, 2211, 2207, 2208, 2209,
+ 86, 2213, 2210, 86, 86, 2212, 2214, 86, 86, 2215,
+ 86, 86, 86, 2218, 86, 2216, 2217, 2219, 86, 2223,
+ 86, 86, 86, 2220, 86, 86, 86, 2222, 86, 86,
+ 86, 2221, 2224, 86, 86, 2232, 2229, 2230, 2226, 2225,
+
+ 2227, 86, 2234, 2228, 86, 86, 2233, 86, 86, 2231,
+ 2235, 2237, 86, 2243, 86, 86, 86, 2238, 2245, 86,
+ 86, 86, 2239, 2236, 2242, 2244, 2240, 86, 86, 168,
+ 2251, 2247, 2253, 2248, 2249, 2252, 86, 2241, 86, 2246,
+ 2254, 86, 86, 86, 2255, 86, 86, 2258, 86, 86,
+ 2256, 2250, 86, 2259, 2262, 2263, 86, 86, 2264, 86,
+ 2267, 2265, 2272, 2257, 86, 86, 86, 2260, 86, 2268,
+ 86, 2269, 2270, 86, 86, 86, 86, 2266, 2261, 2271,
+ 2273, 86, 86, 86, 86, 2274, 2275, 86, 2278, 86,
+ 86, 86, 86, 86, 2281, 2276, 86, 2285, 2287, 86,
+
+ 86, 86, 2280, 86, 2288, 86, 2277, 2279, 2282, 2283,
+ 2290, 2284, 86, 86, 86, 86, 2289, 86, 2286, 86,
+ 2295, 2298, 86, 86, 86, 2293, 86, 86, 86, 2291,
+ 2292, 2299, 2296, 2294, 86, 2297, 86, 86, 86, 86,
+ 86, 3291, 86, 2300, 86, 2301, 2311, 2313, 86, 2306,
+ 2302, 86, 2303, 2304, 2308, 2309, 2314, 2305, 2310, 2307,
+ 86, 86, 2312, 86, 2315, 86, 86, 86, 86, 2319,
+ 2320, 86, 86, 86, 2321, 86, 2316, 2322, 86, 2317,
+ 2318, 2323, 86, 2325, 2326, 86, 2324, 2327, 2328, 86,
+ 2329, 86, 86, 86, 86, 86, 86, 2330, 2331, 2335,
+
+ 86, 2336, 86, 2338, 86, 2332, 86, 2334, 2340, 86,
+ 86, 86, 2343, 86, 2333, 2337, 2342, 2344, 86, 86,
+ 86, 86, 86, 86, 2339, 2341, 2350, 86, 2349, 2346,
+ 86, 2352, 86, 2345, 86, 2347, 86, 86, 86, 2356,
+ 2355, 2348, 2354, 2358, 86, 86, 86, 86, 86, 2351,
+ 2362, 86, 2353, 86, 2357, 86, 86, 2367, 86, 86,
+ 2366, 2360, 86, 86, 2359, 86, 2361, 2369, 2363, 86,
+ 2365, 2372, 86, 86, 86, 86, 2364, 86, 2368, 86,
+ 2370, 2374, 86, 2373, 2371, 86, 2379, 2375, 86, 86,
+ 2381, 2380, 2382, 2376, 86, 2377, 86, 86, 86, 86,
+
+ 86, 2386, 2387, 86, 86, 2378, 2385, 2383, 2391, 2384,
+ 86, 86, 2389, 86, 2396, 2393, 2394, 86, 2398, 86,
+ 86, 2390, 86, 2388, 86, 86, 86, 2399, 2395, 86,
+ 2392, 2400, 86, 86, 2404, 2403, 86, 86, 2397, 86,
+ 86, 3291, 2402, 2409, 2401, 2405, 2406, 2408, 2407, 86,
+ 2410, 86, 86, 86, 2414, 2411, 86, 2415, 86, 2416,
+ 2412, 2413, 86, 86, 168, 86, 86, 2417, 86, 2418,
+ 86, 2423, 86, 86, 86, 2425, 86, 86, 86, 2434,
+ 86, 2421, 2419, 2424, 2420, 2426, 2422, 86, 86, 2429,
+ 2427, 2428, 86, 2431, 3291, 2430, 86, 2435, 2432, 2433,
+
+ 2436, 86, 86, 86, 2439, 2437, 2440, 86, 2438, 86,
+ 86, 86, 86, 2442, 86, 86, 2441, 86, 2444, 86,
+ 86, 2448, 2449, 2443, 86, 2446, 86, 2445, 86, 2451,
+ 86, 86, 86, 86, 2452, 2453, 2454, 86, 2447, 86,
+ 2450, 86, 2456, 86, 2455, 2460, 86, 2459, 86, 86,
+ 2457, 2458, 86, 86, 2462, 86, 86, 86, 86, 2469,
+ 2466, 2461, 86, 2468, 86, 86, 86, 86, 2470, 2465,
+ 86, 86, 2463, 2464, 86, 2474, 86, 2467, 86, 86,
+ 2484, 2479, 2471, 2478, 86, 2472, 2473, 86, 2476, 86,
+ 2477, 86, 2475, 2481, 86, 86, 86, 2480, 2483, 2485,
+
+ 86, 2487, 86, 2482, 2489, 86, 2488, 2491, 86, 86,
+ 86, 2493, 86, 86, 86, 86, 86, 2490, 2492, 86,
+ 2497, 2486, 86, 86, 86, 2501, 86, 2499, 2495, 2500,
+ 2503, 2494, 2496, 2502, 86, 86, 86, 86, 2504, 2505,
+ 86, 86, 86, 2510, 86, 2498, 2507, 86, 86, 2512,
+ 86, 2515, 86, 86, 2509, 86, 2511, 2506, 86, 2508,
+ 86, 2516, 86, 2519, 86, 2514, 2513, 2520, 86, 2521,
+ 86, 86, 2517, 86, 86, 2525, 86, 86, 2518, 2524,
+ 2523, 86, 86, 86, 86, 2532, 86, 2529, 2522, 2531,
+ 2526, 2527, 86, 2528, 2533, 86, 2534, 86, 2535, 86,
+
+ 86, 86, 86, 2530, 2536, 86, 2538, 86, 2539, 86,
+ 2540, 86, 86, 86, 2541, 2545, 86, 2542, 2537, 2547,
+ 86, 2548, 86, 86, 86, 86, 86, 86, 2544, 86,
+ 86, 2543, 2546, 2551, 2549, 2554, 2550, 2552, 86, 2557,
+ 86, 86, 86, 86, 86, 86, 86, 2553, 86, 2555,
+ 2558, 86, 168, 86, 2565, 86, 86, 2561, 2556, 86,
+ 2563, 86, 86, 2560, 2564, 2566, 2567, 3291, 2559, 2562,
+ 2568, 2571, 86, 86, 86, 2572, 2573, 2569, 2574, 2575,
+ 2576, 86, 86, 2570, 2577, 86, 86, 2578, 86, 2579,
+ 86, 2580, 86, 86, 86, 86, 86, 86, 86, 86,
+
+ 2581, 86, 86, 2582, 2591, 86, 86, 86, 2589, 2584,
+ 86, 86, 2583, 86, 2586, 2585, 86, 2595, 2588, 2587,
+ 2599, 2590, 2596, 86, 2593, 2592, 86, 2597, 2594, 2598,
+ 2600, 86, 2602, 86, 86, 2601, 86, 86, 86, 86,
+ 86, 86, 86, 86, 2605, 2611, 86, 2612, 86, 86,
+ 86, 86, 2603, 2606, 2604, 2618, 2615, 2607, 2608, 2609,
+ 2610, 86, 2613, 2616, 86, 2617, 86, 2614, 86, 2619,
+ 86, 86, 86, 86, 86, 86, 86, 2623, 2627, 86,
+ 2626, 2628, 86, 2620, 86, 2622, 2629, 2630, 86, 2621,
+ 86, 86, 86, 2624, 2625, 86, 86, 86, 2631, 2632,
+
+ 86, 2636, 86, 86, 2634, 86, 2640, 2641, 86, 86,
+ 2633, 2644, 86, 86, 86, 2635, 86, 2637, 2645, 2638,
+ 2642, 86, 2639, 2648, 86, 2647, 86, 2643, 2646, 2649,
+ 86, 86, 2653, 86, 86, 86, 86, 2657, 86, 86,
+ 2656, 2650, 2659, 86, 2655, 86, 2654, 86, 86, 86,
+ 2651, 2652, 2660, 86, 2661, 2664, 86, 86, 2658, 86,
+ 2665, 2663, 2667, 86, 2662, 86, 86, 86, 86, 86,
+ 2668, 2672, 86, 2674, 86, 2666, 2670, 2671, 2669, 86,
+ 86, 2673, 86, 2677, 2675, 2676, 86, 2678, 86, 86,
+ 86, 86, 86, 86, 2679, 86, 86, 2684, 2681, 2682,
+
+ 2685, 2687, 86, 2688, 86, 2683, 86, 2680, 2686, 2689,
+ 168, 86, 86, 2690, 2692, 2694, 2691, 86, 86, 2696,
+ 86, 86, 2695, 86, 2699, 86, 2700, 86, 2698, 86,
+ 2693, 2702, 86, 86, 2704, 2697, 2703, 86, 86, 2705,
+ 86, 86, 2701, 2706, 2709, 86, 2707, 86, 86, 2710,
+ 86, 2708, 2711, 86, 86, 86, 86, 2712, 2716, 2717,
+ 86, 2718, 2714, 86, 86, 86, 86, 86, 2713, 86,
+ 2720, 2721, 2719, 86, 86, 86, 2715, 2722, 2724, 2723,
+ 2725, 86, 86, 86, 86, 2730, 86, 2726, 86, 86,
+ 2733, 2728, 2729, 86, 2727, 2731, 86, 86, 86, 2734,
+
+ 86, 2738, 86, 86, 86, 2739, 2732, 86, 2735, 86,
+ 2743, 86, 86, 2741, 86, 86, 86, 2736, 86, 2737,
+ 2747, 3291, 2740, 2755, 2742, 2750, 2744, 2745, 2748, 86,
+ 2751, 86, 2752, 86, 2746, 86, 86, 86, 86, 86,
+ 2749, 2753, 86, 2754, 86, 86, 2756, 2759, 2758, 86,
+ 2761, 86, 2757, 2763, 86, 2764, 86, 2765, 86, 86,
+ 2760, 86, 86, 2766, 2768, 86, 2767, 86, 86, 2762,
+ 2772, 86, 2770, 86, 2775, 2773, 86, 2776, 86, 86,
+ 2771, 86, 2769, 2777, 86, 86, 86, 86, 2778, 2782,
+ 86, 2774, 2779, 86, 2783, 2784, 86, 2786, 86, 2780,
+
+ 86, 86, 2785, 86, 2790, 86, 2781, 2791, 86, 2792,
+ 86, 86, 86, 2787, 86, 2793, 86, 2789, 86, 2788,
+ 2794, 86, 2799, 86, 2798, 2802, 86, 2801, 86, 86,
+ 86, 86, 2796, 86, 2795, 2803, 2797, 2804, 86, 2800,
+ 86, 2805, 86, 2807, 86, 2808, 86, 2811, 86, 86,
+ 2809, 2810, 2815, 86, 86, 86, 2806, 2817, 86, 86,
+ 86, 2822, 86, 2814, 2812, 2818, 2823, 86, 2813, 2816,
+ 2821, 2824, 2819, 2827, 86, 86, 2825, 86, 2820, 2826,
+ 86, 2828, 86, 2829, 86, 2830, 86, 2831, 86, 86,
+ 86, 2832, 86, 2833, 86, 86, 86, 2836, 86, 86,
+
+ 2838, 2842, 86, 2843, 86, 2839, 86, 86, 86, 2834,
+ 2844, 2846, 86, 2837, 86, 2847, 2835, 86, 2840, 2841,
+ 2848, 86, 2849, 2851, 2845, 2850, 86, 86, 86, 86,
+ 2855, 86, 86, 86, 86, 86, 2852, 2853, 2856, 2859,
+ 86, 2857, 86, 86, 2860, 86, 86, 2854, 2858, 86,
+ 2863, 2862, 86, 2861, 2864, 2865, 86, 2866, 86, 86,
+ 2868, 2869, 86, 86, 86, 86, 2867, 86, 2870, 2875,
+ 86, 86, 86, 2873, 2871, 86, 2878, 2879, 86, 2876,
+ 86, 2880, 86, 2883, 86, 2874, 2884, 2881, 2872, 2882,
+ 86, 2877, 2885, 86, 2886, 86, 2887, 86, 86, 2888,
+
+ 86, 86, 2892, 86, 86, 86, 2891, 86, 86, 2893,
+ 2894, 2895, 86, 86, 86, 86, 2901, 86, 2889, 2890,
+ 2899, 2896, 86, 2903, 86, 2897, 86, 86, 2898, 86,
+ 2904, 86, 2900, 86, 2905, 86, 2906, 86, 2907, 86,
+ 2912, 86, 2902, 86, 86, 86, 2908, 86, 2909, 2915,
+ 2910, 86, 86, 86, 86, 2921, 2913, 2914, 86, 2911,
+ 2916, 2919, 86, 2917, 86, 86, 86, 2920, 2925, 86,
+ 86, 2918, 86, 2922, 2927, 86, 2923, 2928, 86, 2930,
+ 86, 86, 86, 86, 86, 2926, 2931, 86, 2934, 2935,
+ 86, 2924, 86, 2929, 86, 2939, 86, 2932, 2933, 86,
+
+ 2942, 86, 86, 2944, 2936, 86, 86, 86, 86, 86,
+ 2937, 2938, 2945, 2940, 86, 2941, 2947, 86, 2948, 86,
+ 2950, 86, 2943, 86, 2955, 2952, 2949, 2946, 2954, 86,
+ 86, 86, 2953, 86, 2959, 86, 86, 86, 2961, 2960,
+ 2951, 86, 86, 2957, 2964, 2965, 86, 86, 2956, 86,
+ 86, 2967, 2966, 2958, 2962, 86, 86, 86, 2970, 86,
+ 2969, 2963, 86, 2973, 86, 2968, 86, 2971, 86, 86,
+ 2976, 86, 86, 86, 86, 2972, 2981, 86, 2977, 86,
+ 86, 2974, 2975, 2985, 86, 86, 2978, 2980, 86, 2984,
+ 2986, 86, 2982, 2987, 86, 2983, 86, 2979, 86, 2988,
+
+ 86, 2989, 2990, 86, 2991, 86, 2992, 86, 2995, 86,
+ 86, 2993, 2997, 86, 86, 2996, 86, 86, 86, 2998,
+ 2994, 86, 3002, 3003, 86, 86, 86, 3007, 86, 3008,
+ 86, 2999, 3004, 86, 3009, 3006, 86, 86, 3000, 3001,
+ 86, 86, 3012, 3013, 86, 3005, 3014, 86, 86, 86,
+ 3017, 86, 86, 3010, 3015, 3011, 86, 3020, 86, 86,
+ 3019, 3022, 3016, 3018, 3021, 86, 86, 86, 86, 86,
+ 86, 3024, 86, 86, 3026, 86, 86, 3027, 86, 3025,
+ 86, 86, 86, 86, 3039, 3023, 3036, 3037, 86, 3028,
+ 86, 3032, 3029, 3030, 3031, 3033, 3034, 86, 86, 3044,
+
+ 86, 3035, 3040, 3038, 86, 3045, 86, 3042, 3041, 86,
+ 86, 3043, 86, 3046, 3047, 86, 3291, 3048, 3050, 86,
+ 3051, 86, 3052, 3053, 86, 86, 86, 3054, 3055, 3049,
+ 86, 3056, 3057, 86, 86, 3059, 86, 3058, 86, 86,
+ 3061, 86, 3060, 3065, 86, 86, 3064, 86, 86, 86,
+ 86, 86, 3068, 86, 3067, 86, 3073, 3082, 3062, 3063,
+ 3069, 86, 3072, 86, 3070, 3074, 86, 86, 3071, 86,
+ 3066, 3075, 86, 86, 3077, 3080, 3076, 86, 86, 86,
+ 3081, 86, 3078, 86, 3086, 3079, 86, 3291, 3087, 3089,
+ 86, 3090, 3083, 3084, 86, 3092, 86, 86, 3085, 86,
+
+ 3091, 3093, 86, 86, 86, 3088, 3096, 86, 3095, 3097,
+ 86, 3099, 86, 3098, 3094, 3100, 86, 3101, 86, 3102,
+ 86, 3103, 86, 3104, 86, 3105, 86, 86, 3107, 86,
+ 86, 86, 86, 86, 86, 86, 3106, 3112, 86, 3108,
+ 86, 86, 86, 3109, 86, 3116, 86, 3115, 3113, 3118,
+ 86, 86, 3110, 3111, 3114, 3117, 86, 86, 3122, 3120,
+ 3119, 86, 3125, 86, 3124, 86, 86, 86, 86, 3123,
+ 3127, 86, 3121, 86, 86, 86, 86, 3126, 3133, 3131,
+ 86, 86, 86, 3130, 3132, 3128, 86, 86, 86, 3129,
+ 3136, 3134, 3138, 86, 3137, 3139, 86, 3140, 86, 86,
+
+ 86, 86, 3145, 86, 3143, 3141, 3135, 86, 3142, 3146,
+ 86, 86, 3148, 3149, 3147, 86, 3151, 86, 86, 86,
+ 86, 3144, 86, 86, 86, 3150, 86, 86, 86, 86,
+ 3152, 3160, 3158, 86, 3162, 3155, 86, 3153, 3154, 3157,
+ 3159, 3164, 86, 86, 3167, 86, 86, 3156, 3161, 3169,
+ 86, 86, 3170, 3163, 86, 3168, 3165, 3171, 86, 3172,
+ 86, 86, 86, 3166, 86, 3175, 86, 86, 86, 3176,
+ 3180, 3177, 86, 3173, 86, 86, 86, 3184, 86, 3183,
+ 86, 3174, 86, 3179, 3186, 86, 3181, 3182, 3187, 86,
+ 86, 86, 3178, 3190, 86, 86, 86, 3188, 3193, 86,
+
+ 3185, 86, 3194, 86, 3195, 3197, 3191, 86, 3198, 3189,
+ 86, 86, 86, 3192, 86, 86, 3203, 86, 3204, 86,
+ 3202, 3199, 3196, 3200, 86, 86, 86, 86, 86, 86,
+ 86, 3201, 3208, 86, 3210, 86, 86, 86, 86, 3207,
+ 86, 3215, 86, 3216, 86, 3205, 3206, 3209, 3212, 3211,
+ 3213, 3223, 3214, 3217, 86, 3221, 86, 86, 86, 86,
+ 3218, 3220, 3219, 3222, 86, 3224, 86, 86, 86, 3229,
+ 86, 3225, 3226, 3227, 86, 86, 3230, 86, 3228, 3231,
+ 3232, 86, 86, 86, 86, 86, 3233, 3238, 86, 3234,
+ 3235, 86, 86, 86, 86, 3241, 3242, 86, 86, 86,
+
+ 86, 86, 86, 3236, 3237, 3240, 3245, 3239, 3243, 86,
+ 3246, 3244, 86, 3248, 86, 3249, 86, 3247, 86, 3253,
+ 86, 3250, 3251, 86, 3255, 86, 3256, 86, 3252, 86,
+ 86, 3254, 3257, 3260, 86, 3261, 3258, 86, 86, 3259,
+ 3262, 3263, 86, 86, 3264, 86, 86, 86, 3269, 86,
+ 3265, 3267, 86, 86, 86, 86, 86, 86, 3271, 3272,
+ 86, 3275, 3276, 86, 3266, 86, 3268, 86, 3279, 3280,
+ 86, 3270, 86, 86, 3273, 3274, 3277, 3282, 86, 3281,
+ 3283, 86, 86, 86, 3278, 86, 86, 3291, 3285, 3284,
+ 3286, 3291, 3287, 3289, 86, 3290, 86, 3291, 3291, 3291,
+
+ 3291, 3291, 3291, 3291, 3291, 3288, 47, 47, 47, 47,
+ 47, 47, 47, 52, 52, 52, 52, 52, 52, 52,
+ 57, 57, 57, 57, 57, 57, 57, 63, 63, 63,
+ 63, 63, 63, 63, 68, 68, 68, 68, 68, 68,
+ 68, 74, 74, 74, 74, 74, 74, 74, 80, 80,
+ 80, 80, 80, 80, 80, 89, 89, 3291, 89, 89,
+ 89, 89, 158, 158, 3291, 3291, 3291, 158, 158, 160,
+ 160, 3291, 3291, 160, 3291, 160, 162, 3291, 3291, 3291,
+ 3291, 3291, 162, 165, 165, 3291, 3291, 3291, 165, 165,
+ 167, 3291, 3291, 3291, 3291, 3291, 167, 169, 169, 3291,
+
+ 169, 169, 169, 169, 172, 3291, 3291, 3291, 3291, 3291,
+ 172, 175, 175, 3291, 3291, 3291, 175, 175, 90, 90,
+ 3291, 90, 90, 90, 90, 17, 3291, 3291, 3291, 3291,
+ 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
+ 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
+ 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
+ 3291, 3291, 3291, 3291, 3291, 3291
} ;
-static yyconst flex_int16_t yy_chk[6406] =
+static yyconst flex_int16_t yy_chk[6467] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -2224,18 +2245,18 @@ static yyconst flex_int16_t yy_chk[6406] =
5, 3, 6, 24, 4, 24, 24, 5, 24, 6,
7, 7, 7, 7, 24, 7, 8, 8, 8, 8,
33, 8, 7, 9, 9, 9, 26, 26, 8, 10,
- 10, 10, 19, 29, 9, 33, 19, 29, 3260, 35,
+ 10, 10, 19, 29, 9, 33, 19, 29, 3299, 35,
10, 11, 11, 11, 11, 11, 11, 13, 13, 13,
13, 34, 13, 11, 35, 99, 34, 29, 38, 13,
51, 51, 11, 12, 12, 12, 12, 12, 12, 14,
14, 14, 14, 99, 14, 12, 15, 15, 15, 38,
23, 14, 23, 23, 12, 23, 46, 15, 16, 16,
- 16, 23, 23, 25, 27, 27, 25, 25, 2661, 16,
+ 16, 23, 23, 25, 27, 27, 25, 25, 2689, 16,
25, 46, 27, 30, 30, 25, 27, 56, 40, 27,
56, 73, 31, 31, 25, 28, 67, 67, 30, 32,
28, 31, 40, 32, 28, 73, 32, 28, 92, 28,
- 28, 92, 31, 32, 1075, 32, 36, 36, 37, 37,
+ 28, 92, 31, 32, 1082, 32, 36, 36, 37, 37,
28, 45, 45, 37, 175, 36, 45, 39, 41, 41,
45, 36, 39, 41, 94, 36, 39, 43, 43, 37,
@@ -2251,9 +2272,9 @@ static yyconst flex_int16_t yy_chk[6406] =
104, 114, 111, 113, 108, 110, 110, 113, 116, 115,
112, 109, 117, 110, 115, 117, 119, 118, 117, 120,
- 123, 114, 116, 118, 120, 126, 121, 122, 732, 121,
+ 123, 114, 116, 118, 120, 126, 121, 122, 734, 121,
125, 117, 117, 121, 123, 119, 124, 125, 126, 128,
- 124, 127, 118, 129, 120, 732, 122, 130, 127, 121,
+ 124, 127, 118, 129, 120, 734, 122, 130, 127, 121,
131, 122, 128, 132, 131, 133, 134, 135, 135, 136,
133, 139, 137, 129, 133, 130, 137, 138, 143, 140,
142, 132, 144, 148, 143, 137, 134, 141, 147, 136,
@@ -2311,616 +2332,622 @@ static yyconst flex_int16_t yy_chk[6406] =
356, 350, 348, 352, 357, 349, 356, 358, 359, 360,
354, 359, 358, 359, 361, 362, 364, 361, 358, 365,
365, 366, 364, 360, 362, 367, 366, 371, 367, 369,
- 361, 370, 401, 361, 367, 361, 372, 375, 367, 373,
- 375, 376, 371, 378, 401, 379, 367, 368, 368, 369,
- 368, 372, 370, 373, 379, 376, 375, 382, 378, 380,
-
- 383, 381, 384, 368, 380, 380, 368, 381, 368, 386,
- 368, 377, 385, 377, 377, 388, 387, 384, 382, 383,
- 389, 385, 387, 377, 390, 377, 377, 377, 386, 391,
- 377, 392, 393, 394, 395, 391, 392, 396, 390, 391,
- 389, 388, 396, 397, 398, 399, 399, 400, 402, 395,
- 398, 403, 393, 394, 392, 404, 405, 403, 397, 406,
- 407, 407, 402, 407, 406, 408, 409, 400, 410, 411,
- 417, 413, 405, 413, 413, 414, 419, 415, 418, 414,
- 404, 415, 409, 411, 410, 408, 416, 416, 420, 417,
- 421, 413, 419, 418, 422, 423, 415, 426, 425, 424,
-
- 423, 428, 426, 422, 421, 424, 420, 425, 423, 423,
- 428, 427, 423, 423, 422, 427, 422, 429, 430, 431,
- 432, 435, 434, 429, 432, 431, 433, 434, 164, 433,
- 436, 436, 437, 438, 438, 439, 440, 441, 441, 430,
- 439, 435, 442, 443, 444, 437, 445, 443, 442, 440,
- 446, 447, 448, 448, 449, 446, 447, 450, 451, 444,
- 452, 448, 453, 455, 454, 453, 449, 445, 454, 456,
- 456, 458, 452, 457, 460, 455, 451, 450, 457, 459,
- 459, 462, 462, 463, 470, 464, 465, 466, 467, 471,
- 469, 472, 458, 464, 476, 465, 460, 473, 477, 476,
-
- 467, 162, 470, 473, 463, 472, 474, 466, 469, 471,
- 469, 475, 477, 478, 480, 474, 479, 475, 481, 479,
- 482, 478, 483, 485, 478, 486, 482, 484, 480, 485,
- 484, 487, 488, 481, 489, 491, 487, 490, 492, 486,
- 491, 490, 483, 493, 494, 495, 496, 485, 493, 499,
- 537, 502, 500, 492, 488, 489, 503, 501, 504, 496,
- 494, 501, 504, 506, 495, 497, 497, 500, 537, 499,
- 502, 497, 503, 497, 508, 507, 514, 505, 506, 497,
- 507, 497, 505, 509, 497, 497, 505, 511, 510, 513,
- 508, 497, 509, 508, 510, 512, 514, 516, 512, 510,
-
- 515, 515, 518, 511, 517, 517, 519, 521, 520, 522,
- 523, 524, 513, 525, 526, 523, 160, 518, 519, 527,
- 524, 529, 516, 520, 530, 527, 521, 531, 530, 526,
- 529, 522, 525, 531, 532, 533, 534, 535, 536, 538,
- 540, 539, 540, 538, 541, 650, 532, 650, 542, 545,
- 533, 535, 547, 536, 539, 534, 542, 543, 543, 544,
- 546, 545, 549, 550, 547, 544, 546, 548, 541, 551,
- 548, 553, 552, 554, 551, 552, 549, 555, 550, 556,
- 553, 567, 555, 555, 557, 557, 567, 553, 564, 554,
- 553, 559, 556, 558, 558, 560, 560, 559, 561, 561,
-
- 562, 565, 563, 568, 569, 571, 562, 563, 563, 564,
- 571, 566, 569, 565, 566, 570, 572, 573, 570, 574,
- 575, 576, 568, 574, 577, 576, 575, 578, 582, 579,
- 580, 580, 578, 581, 584, 583, 573, 585, 586, 572,
- 583, 587, 577, 579, 586, 588, 587, 590, 581, 582,
- 584, 592, 589, 591, 591, 589, 593, 585, 594, 588,
- 589, 595, 596, 594, 589, 590, 595, 597, 599, 592,
- 600, 606, 593, 602, 599, 601, 596, 602, 601, 600,
- 603, 604, 597, 605, 604, 603, 607, 606, 605, 608,
- 609, 611, 610, 612, 612, 614, 608, 610, 613, 602,
-
- 615, 616, 618, 609, 607, 617, 619, 613, 618, 624,
- 616, 611, 619, 158, 614, 620, 615, 617, 620, 621,
- 621, 622, 621, 623, 622, 625, 626, 624, 623, 627,
- 628, 630, 626, 637, 627, 629, 628, 631, 629, 625,
- 632, 633, 631, 635, 634, 632, 632, 636, 635, 638,
- 639, 640, 637, 636, 633, 639, 630, 634, 638, 641,
- 641, 642, 635, 635, 643, 645, 644, 643, 642, 646,
- 647, 640, 644, 649, 646, 647, 647, 645, 648, 648,
- 651, 652, 643, 652, 653, 654, 655, 656, 657, 658,
- 659, 660, 661, 664, 659, 658, 662, 663, 649, 651,
-
- 660, 665, 653, 654, 655, 666, 656, 661, 657, 668,
- 667, 662, 664, 665, 669, 663, 667, 670, 671, 674,
- 666, 672, 673, 668, 675, 672, 669, 676, 677, 678,
- 679, 680, 680, 682, 678, 674, 670, 671, 683, 681,
- 673, 684, 675, 681, 679, 676, 676, 677, 685, 683,
- 686, 687, 682, 685, 688, 684, 689, 690, 691, 692,
- 694, 697, 690, 689, 692, 691, 686, 688, 693, 695,
- 687, 696, 698, 693, 699, 697, 695, 700, 694, 702,
- 696, 698, 700, 702, 701, 703, 699, 701, 704, 705,
- 707, 706, 708, 708, 709, 709, 716, 704, 714, 703,
-
- 710, 710, 711, 709, 705, 706, 712, 711, 715, 717,
- 718, 707, 719, 717, 715, 712, 716, 714, 720, 721,
- 722, 724, 718, 723, 725, 721, 726, 729, 722, 735,
- 723, 740, 742, 742, 736, 738, 720, 719, 735, 724,
- 736, 738, 729, 745, 739, 751, 726, 740, 747, 725,
- 727, 746, 727, 739, 741, 727, 743, 743, 741, 727,
- 744, 745, 727, 754, 85, 746, 751, 748, 747, 727,
- 727, 744, 727, 748, 749, 749, 749, 750, 749, 752,
- 753, 749, 750, 756, 753, 755, 749, 754, 756, 755,
- 757, 758, 749, 749, 759, 760, 761, 752, 760, 764,
-
- 762, 761, 761, 763, 763, 772, 758, 762, 766, 757,
- 765, 765, 767, 766, 764, 767, 768, 769, 769, 759,
- 770, 768, 770, 771, 772, 773, 774, 778, 775, 773,
- 776, 777, 777, 781, 779, 771, 780, 780, 776, 783,
- 782, 794, 778, 784, 794, 785, 774, 775, 779, 784,
- 785, 781, 782, 786, 786, 789, 80, 787, 790, 791,
- 789, 783, 787, 787, 790, 791, 792, 793, 795, 796,
- 800, 792, 799, 793, 795, 797, 797, 796, 798, 798,
- 799, 801, 802, 803, 804, 804, 801, 805, 800, 802,
- 806, 807, 807, 808, 809, 811, 805, 812, 806, 808,
-
- 813, 815, 803, 814, 811, 818, 812, 819, 814, 816,
- 815, 817, 816, 809, 820, 821, 817, 823, 823, 818,
- 822, 824, 825, 820, 813, 822, 822, 827, 821, 826,
- 835, 828, 819, 830, 828, 830, 824, 832, 826, 831,
- 831, 825, 828, 833, 834, 837, 836, 839, 833, 838,
- 835, 827, 840, 841, 842, 843, 839, 841, 832, 846,
- 847, 845, 844, 848, 850, 834, 836, 837, 844, 838,
- 845, 846, 842, 853, 843, 840, 849, 848, 850, 847,
- 851, 854, 849, 852, 852, 851, 855, 856, 857, 858,
- 854, 859, 860, 853, 861, 856, 862, 864, 865, 863,
-
- 861, 866, 862, 864, 869, 870, 855, 866, 857, 867,
- 859, 858, 860, 863, 871, 867, 868, 870, 865, 871,
- 868, 872, 874, 869, 877, 870, 873, 873, 874, 875,
- 876, 879, 875, 878, 880, 880, 881, 877, 882, 878,
- 883, 884, 872, 882, 887, 883, 883, 888, 876, 885,
- 889, 879, 890, 885, 881, 889, 884, 886, 886, 892,
- 893, 896, 895, 897, 899, 899, 887, 888, 900, 902,
- 902, 890, 900, 903, 893, 895, 901, 905, 904, 906,
- 921, 896, 904, 892, 897, 898, 921, 75, 898, 908,
- 898, 901, 905, 906, 898, 907, 898, 915, 903, 909,
-
- 907, 898, 910, 908, 909, 909, 898, 911, 912, 915,
- 913, 910, 912, 914, 916, 917, 918, 919, 914, 916,
- 923, 911, 922, 920, 912, 913, 923, 922, 914, 917,
- 924, 919, 920, 925, 925, 926, 924, 918, 927, 928,
- 926, 929, 932, 933, 927, 930, 935, 938, 933, 936,
- 936, 937, 934, 939, 932, 938, 937, 940, 935, 942,
- 929, 928, 941, 930, 931, 931, 934, 939, 943, 945,
- 931, 950, 931, 946, 943, 942, 940, 944, 931, 947,
- 74, 941, 944, 931, 931, 948, 948, 945, 949, 946,
- 931, 950, 949, 952, 954, 953, 955, 947, 953, 952,
-
- 956, 958, 957, 960, 963, 961, 956, 957, 962, 955,
- 963, 965, 960, 954, 961, 967, 964, 966, 968, 969,
- 958, 970, 966, 973, 962, 964, 974, 971, 972, 973,
- 965, 977, 968, 970, 975, 967, 971, 972, 979, 969,
- 975, 980, 982, 974, 981, 984, 983, 977, 985, 986,
- 989, 995, 979, 985, 986, 989, 982, 990, 991, 991,
- 984, 980, 992, 981, 983, 993, 990, 995, 992, 996,
- 1000, 1001, 998, 998, 996, 996, 998, 999, 993, 1002,
- 999, 1003, 1005, 1004, 1000, 1007, 1006, 1008, 1009, 1010,
- 1011, 1001, 1006, 1008, 1010, 1002, 1004, 1005, 1013, 1003,
-
- 1014, 1013, 1015, 1009, 1011, 1007, 1016, 1015, 1017, 1018,
- 1019, 1016, 1022, 1020, 1018, 1019, 1023, 1024, 1022, 1028,
- 1025, 1014, 1027, 1024, 1017, 1020, 1025, 1026, 1026, 1031,
- 1029, 1027, 1023, 1029, 1030, 1030, 1032, 1028, 1033, 1034,
- 1035, 1038, 1034, 1036, 1037, 1043, 1038, 1031, 1041, 1036,
- 1037, 1039, 1040, 1035, 1041, 1032, 1039, 1040, 1033, 1044,
- 1045, 1048, 1046, 1043, 1047, 1047, 1045, 1046, 1049, 1050,
- 1048, 1051, 1052, 1053, 1054, 1052, 1053, 1049, 1055, 1044,
- 1056, 1057, 1058, 1059, 1060, 1054, 1061, 1050, 1058, 1059,
- 1051, 1061, 1056, 1062, 1062, 1063, 1055, 1064, 1065, 1060,
-
- 1057, 1066, 1067, 1068, 1069, 1066, 1070, 1072, 1073, 1073,
- 1065, 1064, 1068, 1074, 1063, 1076, 1078, 1077, 1080, 1079,
- 1067, 1081, 1081, 1069, 1079, 1082, 1072, 1080, 1078, 1076,
- 1083, 1070, 1077, 1074, 1084, 1085, 1083, 1086, 1088, 1087,
- 1084, 1087, 1086, 1088, 1089, 1082, 1090, 1091, 1092, 1093,
- 1094, 1085, 1091, 1096, 1095, 1098, 1098, 1094, 1089, 1099,
- 1090, 1100, 1101, 1092, 1102, 1103, 68, 1106, 1093, 1095,
- 1102, 1106, 1096, 1099, 1114, 1104, 1111, 1101, 1108, 1100,
- 1104, 1107, 1107, 1108, 1113, 1103, 1109, 1109, 1110, 1104,
- 1111, 1104, 1114, 1112, 1104, 1110, 1112, 1115, 1117, 1116,
-
- 1118, 1120, 1119, 1113, 1116, 1121, 1115, 1119, 1122, 1124,
- 1124, 1127, 1118, 1125, 1126, 1120, 1121, 1117, 1125, 1126,
- 1128, 1130, 1129, 1131, 1132, 1128, 1129, 1122, 1133, 1134,
- 1130, 1127, 1137, 1135, 1138, 1136, 1139, 1140, 1131, 1132,
- 1141, 1134, 1136, 1142, 1137, 1143, 1141, 1133, 1135, 1144,
- 1145, 1146, 1147, 1138, 1149, 1140, 1148, 1139, 1142, 1145,
- 1150, 1151, 1154, 1157, 1153, 1143, 1146, 63, 1148, 1144,
- 1153, 1147, 1155, 1158, 1156, 1150, 1159, 1154, 1158, 1149,
- 1161, 1151, 1156, 1157, 1160, 1163, 1155, 1162, 1159, 1160,
- 1160, 1164, 1164, 1166, 1168, 1167, 1169, 1169, 1163, 1161,
-
- 1168, 1162, 1165, 1165, 1167, 1171, 1166, 1165, 1170, 1176,
- 1165, 1165, 1172, 1170, 1171, 1165, 58, 1173, 1172, 1174,
- 1179, 1165, 1173, 1180, 1174, 1165, 1175, 1175, 1177, 1177,
- 1176, 1178, 1182, 1181, 1178, 1184, 1178, 1185, 1183, 1186,
- 1179, 1180, 1181, 1183, 1187, 1186, 1188, 1190, 57, 1184,
- 1187, 1188, 1182, 1189, 1197, 1185, 1190, 1189, 1191, 1191,
- 1195, 1190, 1193, 1190, 1195, 1190, 1196, 1190, 1192, 1192,
- 1198, 1192, 1197, 1193, 1201, 1200, 1203, 1199, 1204, 1198,
- 1202, 1196, 1199, 1199, 1200, 1202, 1205, 1204, 1206, 1207,
- 1203, 1208, 1209, 1209, 1210, 1211, 1201, 1208, 1213, 1212,
-
- 1215, 1214, 1210, 1207, 1212, 1205, 1216, 1206, 1217, 1211,
- 1214, 1219, 1213, 1217, 1218, 1218, 1220, 1220, 1215, 1221,
- 1223, 1221, 1224, 1223, 1225, 1226, 1219, 1224, 1227, 1227,
- 1228, 1216, 1229, 1229, 1226, 1230, 1230, 1231, 1232, 1233,
- 1234, 1234, 1231, 1225, 1235, 1236, 1237, 1238, 1236, 1239,
- 1228, 1240, 1238, 1240, 1241, 1244, 1245, 1246, 1239, 1232,
- 1233, 1245, 1243, 1247, 1235, 1243, 1237, 1248, 1247, 1249,
- 1244, 1246, 1241, 1250, 1249, 1248, 1251, 1251, 1250, 1252,
- 1253, 1254, 1255, 1256, 1252, 1258, 1259, 1254, 1260, 1255,
- 1262, 1258, 1259, 1260, 1261, 1263, 1256, 1264, 1253, 1262,
-
- 1261, 1265, 1265, 1266, 1268, 1269, 1270, 1271, 1264, 1272,
- 1273, 1275, 1276, 1271, 1263, 1272, 1273, 1275, 1277, 1268,
- 1278, 1279, 1280, 1266, 1281, 1269, 1276, 1282, 1282, 1270,
- 1283, 1284, 1276, 1279, 1285, 1288, 1280, 52, 1277, 1286,
- 1278, 1291, 1281, 1289, 1286, 1287, 1287, 1293, 1289, 1292,
- 1283, 1295, 1285, 1294, 1292, 1292, 1284, 1296, 1288, 1295,
- 1291, 1297, 1294, 1298, 1299, 1293, 1300, 1308, 1301, 1299,
- 1301, 1296, 1299, 1302, 1304, 1300, 1297, 1306, 1298, 1305,
- 1304, 1298, 1309, 1305, 1307, 1310, 1308, 1302, 1306, 1307,
- 1307, 1311, 1312, 1313, 1314, 1315, 1311, 1312, 1316, 1318,
-
- 1315, 1319, 1320, 1310, 1321, 1321, 1322, 1323, 1309, 1324,
- 1322, 1313, 1326, 1318, 1314, 1325, 1327, 1328, 1316, 1319,
- 1320, 1325, 1329, 1330, 1326, 1323, 1331, 1332, 1324, 1333,
- 1335, 1328, 1332, 1336, 1334, 1327, 1333, 1329, 1330, 1334,
- 1337, 1337, 1336, 1338, 1339, 1331, 1340, 1343, 1335, 1341,
- 1341, 1342, 1346, 1339, 1344, 1344, 1345, 1342, 1338, 1347,
- 1348, 1343, 1345, 1349, 1350, 1348, 1340, 1357, 1346, 1349,
- 1350, 1351, 1351, 1352, 1352, 1354, 1354, 1355, 1356, 1358,
- 1347, 1355, 1359, 1360, 1363, 1357, 1361, 1356, 1362, 1362,
- 1365, 1358, 1364, 1361, 1366, 1365, 1359, 1367, 1360, 1370,
-
- 1364, 1368, 1371, 1371, 1363, 1369, 1368, 1368, 1366, 1372,
- 1369, 1369, 1373, 1374, 1376, 1375, 1367, 1377, 1378, 1370,
- 1375, 1379, 1374, 1381, 1380, 1383, 1382, 1379, 1372, 1380,
- 1391, 1373, 1382, 1376, 1384, 1385, 1378, 1377, 1386, 1387,
- 1384, 1385, 1388, 1389, 1383, 1390, 1393, 1393, 1392, 1381,
- 1394, 1391, 1395, 1394, 1396, 1396, 1399, 1386, 1387, 1390,
- 1399, 1388, 1389, 1392, 1395, 1397, 1397, 1398, 1400, 1401,
- 1402, 1403, 1398, 1403, 1405, 1406, 1407, 1403, 1401, 1408,
- 1406, 1400, 1409, 1402, 1410, 1410, 1413, 1414, 1411, 1412,
- 1403, 1407, 1405, 1411, 1418, 1412, 1420, 1415, 1409, 1408,
-
- 1414, 1413, 1415, 1416, 1417, 1419, 1421, 1416, 1417, 1422,
- 1422, 1424, 1421, 1426, 1418, 1427, 1420, 1428, 1428, 1429,
- 1427, 1430, 1436, 1419, 1437, 1429, 1432, 1432, 1434, 1424,
- 1440, 1434, 1435, 1435, 1426, 1441, 1439, 1443, 1436, 1439,
- 1437, 1430, 1442, 1442, 1441, 1444, 1445, 1447, 1446, 1449,
- 1440, 1450, 1443, 1446, 1448, 1448, 1451, 1452, 1449, 1453,
- 1453, 1447, 1454, 1455, 1457, 1445, 1444, 1456, 1460, 1450,
- 1462, 1451, 1456, 1458, 1458, 1463, 1454, 1461, 1461, 1457,
- 1459, 1455, 1452, 1464, 1459, 1465, 1463, 1464, 1460, 1466,
- 1468, 1468, 1462, 1469, 1466, 1470, 1471, 1472, 1473, 1474,
-
- 1475, 1475, 1476, 1477, 1465, 1478, 47, 1476, 1482, 1469,
- 1471, 1480, 1473, 1470, 1479, 1479, 1472, 1472, 1486, 1495,
- 1480, 1481, 1489, 1477, 1474, 1478, 1481, 1483, 1482, 1483,
- 1484, 1485, 1491, 1487, 18, 1484, 1489, 1485, 1486, 1487,
- 1490, 1490, 1492, 1495, 1494, 1496, 1496, 1498, 1492, 1494,
- 1499, 1491, 1497, 1497, 1500, 1501, 1502, 1502, 1501, 1503,
- 1504, 1498, 1505, 1513, 17, 1507, 1524, 1506, 1499, 1500,
- 1506, 1507, 1504, 1506, 1508, 1509, 1512, 1503, 1509, 1508,
- 1511, 1512, 1505, 1514, 1524, 1506, 1514, 1516, 1513, 1511,
- 1515, 1515, 1517, 1516, 1509, 1518, 1519, 1519, 1517, 1521,
-
- 1518, 1520, 1520, 1522, 1523, 1521, 1525, 1526, 1522, 1527,
- 1528, 1532, 1527, 1529, 1536, 1530, 1528, 1523, 1531, 1529,
- 1530, 1533, 1534, 1534, 1531, 1525, 1533, 1526, 1535, 1537,
- 1538, 1539, 1536, 1535, 1532, 1542, 1543, 1540, 1541, 1544,
- 1545, 1544, 1547, 1548, 1549, 1539, 1551, 1552, 1554, 1537,
- 1538, 1540, 1541, 1542, 1547, 1548, 1550, 1549, 1553, 1545,
- 1557, 1543, 1550, 1556, 1556, 1558, 1551, 1552, 1562, 1554,
- 1558, 1559, 1553, 1560, 1560, 1561, 1563, 1564, 1565, 1566,
- 1557, 1567, 1562, 1559, 1568, 1569, 1573, 1565, 1567, 1571,
- 1561, 1575, 1575, 1568, 1566, 1564, 1568, 1576, 1576, 1574,
-
- 1563, 1569, 1574, 1577, 1571, 1578, 1581, 1579, 1582, 1571,
- 1579, 1573, 1580, 1580, 1585, 1577, 1583, 1584, 1586, 1581,
- 1587, 1583, 1584, 1578, 1588, 1591, 1589, 1582, 1590, 1587,
- 1593, 1591, 1594, 1585, 1586, 1589, 1595, 1590, 1589, 1592,
- 1592, 1596, 1597, 1588, 1598, 1594, 1601, 1602, 1603, 1603,
- 1593, 1604, 1605, 0, 1595, 1596, 1598, 1606, 1597, 1607,
- 1607, 1605, 1606, 1608, 1609, 1602, 1610, 1604, 1611, 1609,
- 1612, 1601, 1608, 1613, 1607, 1608, 1615, 1616, 1613, 1613,
- 1617, 1618, 1620, 1628, 1610, 1619, 1618, 1627, 1612, 1611,
- 1615, 1619, 1616, 1621, 1621, 1622, 1630, 1628, 1623, 1624,
-
- 1620, 1622, 1617, 1623, 1625, 1624, 1629, 1627, 1631, 1630,
- 1625, 1631, 1629, 1632, 1634, 1636, 1637, 1631, 1638, 1632,
- 1639, 0, 1634, 1640, 1641, 1642, 1638, 1643, 1649, 1639,
- 1644, 1644, 1645, 1650, 1636, 1637, 1640, 1641, 1645, 1642,
- 1646, 1643, 1647, 1648, 1648, 1651, 1646, 1652, 1649, 1654,
- 1653, 1650, 1644, 1655, 1656, 1647, 1653, 1658, 1658, 1659,
- 1652, 1660, 1661, 1662, 1651, 1660, 1665, 1661, 1662, 1655,
- 1663, 1654, 1656, 1664, 1667, 1663, 1668, 1669, 1669, 1659,
- 1670, 1671, 1664, 1672, 1673, 1673, 1667, 1674, 1675, 1665,
- 1679, 1668, 1676, 1671, 1677, 1675, 1680, 1681, 1682, 1670,
-
- 1683, 1674, 1672, 1681, 1676, 1684, 1677, 1685, 1685, 1679,
- 1682, 1684, 1686, 1687, 1687, 1686, 1680, 1689, 1683, 1690,
- 1691, 1693, 1689, 1692, 1692, 1694, 1691, 1694, 1690, 1695,
- 1696, 1697, 1695, 1693, 1698, 1700, 1699, 1701, 1702, 1703,
- 1700, 1704, 1701, 1705, 1707, 1710, 1706, 1702, 1705, 1713,
- 1696, 1703, 1698, 1697, 1699, 1706, 1704, 1708, 1709, 1715,
- 1710, 1712, 1708, 1709, 1707, 1711, 1711, 1712, 1706, 1708,
- 1713, 1716, 1717, 1718, 1719, 1724, 1719, 0, 1715, 1727,
- 1720, 1721, 1721, 1722, 1722, 1723, 1723, 1728, 1717, 1725,
- 1725, 1716, 1737, 1718, 1720, 1724, 1720, 1726, 1726, 1730,
-
- 1727, 1729, 1729, 1730, 1731, 1734, 1732, 1735, 1728, 1732,
- 1731, 1734, 1736, 1738, 1739, 1739, 1738, 1737, 1736, 1740,
- 1743, 1741, 1742, 1742, 1744, 1735, 1741, 1745, 1745, 1744,
- 1746, 1747, 1748, 1749, 1750, 1746, 1751, 1747, 1752, 1740,
- 1756, 1743, 1751, 1754, 1748, 1748, 1748, 1755, 1754, 1754,
- 1757, 1748, 1757, 1749, 1750, 1756, 1758, 1759, 1752, 1760,
- 1761, 1755, 1762, 1763, 1765, 1760, 1767, 1758, 1771, 1761,
- 1764, 1764, 1759, 1766, 1766, 1768, 1769, 1769, 1770, 1770,
- 1774, 1774, 1762, 1775, 1763, 1776, 1767, 1778, 1771, 1779,
- 1765, 1782, 1780, 1786, 1776, 1784, 1778, 1768, 1780, 1781,
-
- 1781, 1783, 1784, 1788, 1785, 1787, 1787, 1789, 1775, 1791,
- 1779, 1792, 1782, 1785, 1791, 1793, 1783, 1792, 1794, 1786,
- 1795, 1796, 1800, 1789, 1801, 1794, 1795, 1796, 1798, 1788,
- 1797, 1797, 1799, 1798, 1802, 1793, 1803, 1804, 1805, 1803,
- 1809, 1799, 1800, 1801, 1806, 1806, 1802, 1807, 1808, 1813,
- 1810, 1814, 1811, 1807, 1808, 1804, 1811, 1815, 1816, 1816,
- 1809, 1817, 1815, 1818, 1805, 1810, 1820, 1821, 1822, 1813,
- 1823, 1821, 1811, 1814, 1822, 1824, 1824, 1825, 1818, 1823,
- 1817, 1825, 1826, 1827, 1827, 1820, 1828, 1829, 1834, 1830,
- 1831, 1832, 1833, 1826, 1834, 1831, 1839, 1836, 1826, 1835,
-
- 1839, 1829, 1836, 1837, 1837, 1838, 1838, 1828, 1830, 1841,
- 1842, 1832, 1833, 1843, 1835, 1844, 1844, 1847, 1841, 1846,
- 1846, 1842, 1847, 1847, 1848, 1849, 1842, 1850, 1852, 1851,
- 1848, 1849, 1853, 1843, 1851, 1855, 1857, 1856, 1853, 1858,
- 1852, 1856, 1863, 1859, 1860, 1861, 1865, 1855, 1857, 1859,
- 1862, 1861, 1866, 1850, 1863, 1862, 1867, 1869, 1865, 1873,
- 1869, 1867, 1870, 1870, 1858, 0, 1860, 1871, 1871, 1872,
- 1872, 1866, 1874, 1878, 1875, 1883, 1876, 1877, 1874, 1873,
- 1875, 1876, 1878, 1877, 1880, 1882, 1886, 1883, 1882, 1880,
- 1884, 1884, 1887, 1890, 1888, 1889, 1889, 1895, 1886, 1888,
-
- 1891, 1892, 1890, 1896, 1887, 1891, 1892, 1893, 1894, 1894,
- 1893, 1897, 1896, 1898, 1899, 1900, 1901, 1895, 1899, 1902,
- 1900, 1903, 1901, 1904, 1905, 1908, 1909, 1907, 1907, 1897,
- 1903, 1912, 1898, 1910, 1910, 1909, 1913, 1902, 1905, 1907,
- 1912, 1904, 1914, 1908, 1911, 1911, 1915, 1916, 1913, 1919,
- 1919, 1915, 1921, 1922, 1923, 1921, 1925, 1928, 1926, 1927,
- 1916, 1929, 1929, 1914, 1930, 1927, 1930, 1931, 1931, 1922,
- 1923, 1925, 1926, 1932, 1928, 1934, 1934, 1935, 1935, 1937,
- 1938, 1932, 1939, 1940, 1941, 1937, 1938, 1942, 1942, 1939,
- 1943, 1944, 1948, 1956, 1945, 1946, 1947, 1950, 1949, 1943,
-
- 1952, 1953, 1954, 1950, 1941, 1940, 1945, 1946, 1947, 1955,
- 1955, 1956, 1944, 1949, 1954, 1957, 1950, 1960, 1948, 1958,
- 1952, 1959, 1958, 1962, 1953, 1963, 1959, 1963, 1962, 1964,
- 1970, 1965, 1966, 1968, 1971, 1957, 1965, 1960, 1972, 1966,
- 1974, 1977, 1968, 1971, 1973, 1979, 1973, 1964, 1970, 1976,
- 1972, 1976, 1978, 1978, 1984, 1977, 1980, 1982, 1981, 1974,
- 1981, 1980, 1982, 1983, 1985, 1987, 1988, 1986, 1983, 1989,
- 1987, 1979, 1984, 1986, 1991, 1992, 1995, 1989, 1996, 1988,
- 1993, 1993, 1994, 1994, 1985, 1998, 1997, 2000, 0, 1992,
- 1998, 1995, 1997, 1991, 1999, 2001, 1999, 2003, 1996, 2002,
-
- 2002, 2004, 2004, 2001, 2006, 2000, 2005, 2005, 2008, 2003,
- 2007, 2001, 2010, 2006, 2011, 2007, 2011, 2012, 2015, 2017,
- 2014, 2010, 2013, 2021, 2010, 2022, 2008, 2013, 2013, 2014,
- 2015, 2017, 2018, 2023, 2019, 2025, 2021, 2018, 2012, 2019,
- 2024, 2024, 2023, 2026, 2027, 2022, 2031, 2032, 2028, 2029,
- 2033, 2034, 2035, 2025, 2036, 2042, 2034, 2035, 2031, 2032,
- 2027, 2026, 2028, 2036, 2029, 2039, 2041, 2043, 2044, 2045,
- 2033, 2039, 2041, 2050, 2046, 2047, 2047, 2054, 2042, 2048,
- 2049, 2049, 2043, 2046, 2039, 2051, 2044, 2053, 2048, 2051,
- 2052, 2055, 2050, 2060, 2045, 2052, 2055, 2055, 2056, 2054,
-
- 2053, 2057, 2058, 2059, 2056, 2058, 2068, 2057, 2063, 2063,
- 2065, 2059, 2069, 2060, 2064, 2064, 2066, 2066, 2068, 2065,
- 2067, 2067, 2070, 2072, 2072, 2078, 2071, 2082, 2070, 2064,
- 2069, 2071, 2073, 2073, 2074, 2075, 2080, 2084, 2077, 2074,
- 2064, 2075, 2077, 2079, 2083, 2078, 2085, 2079, 2086, 2083,
- 2087, 2088, 2082, 2086, 2089, 2091, 2080, 2090, 2092, 2092,
- 2084, 2085, 2090, 2094, 2096, 2093, 2095, 2088, 2087, 2093,
- 2098, 2095, 2097, 2099, 2089, 2100, 2101, 2091, 2094, 2097,
- 2100, 2102, 2098, 2103, 2103, 2105, 2106, 2107, 2108, 2101,
- 2096, 2109, 2099, 2105, 2110, 2111, 2112, 2113, 2118, 2102,
-
- 2122, 2117, 2115, 2122, 2118, 2106, 2107, 2119, 2112, 2119,
- 2123, 2108, 2125, 2110, 2117, 2109, 2111, 2115, 2113, 2120,
- 2120, 2121, 2124, 2123, 2129, 2125, 2121, 2126, 2126, 2127,
- 2127, 2128, 2128, 2130, 2131, 2131, 2124, 2138, 2132, 2129,
- 2133, 2133, 2134, 2134, 2135, 2139, 2130, 2132, 2137, 2135,
- 2132, 2140, 2143, 2137, 2141, 2141, 2145, 2138, 2142, 2142,
- 2144, 2144, 2147, 2140, 2148, 2139, 2146, 2146, 2151, 2148,
- 2152, 2143, 2149, 2149, 2145, 2150, 2150, 2147, 2153, 2152,
- 2154, 2156, 2151, 2157, 2157, 2158, 2156, 2159, 2159, 2160,
- 2161, 2162, 2153, 2165, 2162, 2166, 2161, 2163, 2163, 2154,
-
- 2164, 2164, 2167, 2170, 2158, 2168, 2168, 2160, 2171, 2172,
- 2166, 2173, 2165, 2163, 2175, 2173, 2174, 2174, 2181, 2177,
- 2176, 2167, 2178, 2170, 2172, 2176, 2180, 2180, 2182, 2183,
- 2184, 2171, 2185, 2175, 2177, 2182, 2186, 2178, 2181, 2187,
- 2187, 2192, 2188, 2183, 2189, 2195, 2189, 2197, 2184, 2190,
- 2185, 2188, 2190, 2192, 2193, 2194, 2198, 2199, 2196, 2193,
- 2194, 2198, 2186, 2205, 2203, 0, 2209, 2190, 2197, 2190,
- 2195, 2196, 2201, 2202, 2204, 2206, 2210, 2201, 2202, 2203,
- 2204, 2206, 2207, 2199, 2205, 2208, 2216, 2207, 2212, 2210,
- 2208, 2209, 2211, 2213, 2214, 2211, 2215, 2212, 2217, 2221,
-
- 2216, 2218, 2213, 2214, 2217, 2215, 2219, 2218, 2223, 2225,
- 2219, 2224, 2224, 2226, 2226, 2225, 2227, 2223, 2228, 2221,
- 2230, 2227, 2226, 2231, 2232, 2232, 2233, 2237, 2234, 2238,
- 2236, 2241, 2243, 2239, 2241, 2244, 2230, 2234, 2228, 2231,
- 2228, 2233, 2236, 2237, 2238, 2239, 2242, 2244, 2245, 2245,
- 2255, 2242, 2243, 2246, 2246, 2248, 2248, 2249, 2250, 2251,
- 2249, 2252, 2253, 2250, 2255, 2251, 2257, 2252, 2254, 2254,
- 2258, 2253, 2256, 2256, 2259, 2260, 2260, 2261, 2257, 2266,
- 2262, 2263, 2266, 2261, 2258, 2265, 2263, 2267, 2267, 2265,
- 2268, 2269, 2270, 2259, 2262, 2268, 2269, 2269, 2271, 2272,
-
- 2274, 2270, 2276, 2272, 2273, 2273, 2277, 2276, 2278, 2279,
- 2280, 2281, 2282, 2274, 2280, 2283, 2284, 2282, 2271, 2285,
- 2286, 2283, 2284, 2279, 2287, 2288, 2277, 2291, 2278, 2287,
- 2290, 2281, 2301, 2292, 2293, 2298, 2294, 2285, 2292, 2286,
- 2293, 2380, 2290, 2291, 2294, 2295, 2288, 2295, 2380, 2298,
- 2299, 2299, 2300, 2302, 2302, 2300, 2305, 2306, 2301, 2307,
- 2305, 2308, 2308, 2306, 2309, 2312, 2312, 2314, 2316, 2320,
- 2317, 2307, 2321, 2309, 2320, 2322, 2323, 2324, 2324, 2330,
- 2322, 2323, 2316, 2326, 2326, 2314, 2317, 2328, 2329, 2329,
- 2331, 2332, 2334, 2328, 2335, 2330, 2332, 2339, 2321, 2336,
-
- 2336, 2338, 2340, 2339, 2341, 2345, 2335, 2343, 2343, 2346,
- 2338, 2334, 2331, 2344, 2348, 2348, 2344, 2349, 2349, 2341,
- 2340, 2350, 2351, 2352, 2345, 2353, 2350, 2346, 2355, 2354,
- 2353, 2354, 2352, 2356, 2357, 2359, 2358, 0, 2360, 2366,
- 2351, 2358, 2355, 2360, 2361, 2361, 2357, 2356, 2362, 2362,
- 2363, 2363, 2364, 2364, 2365, 2359, 2367, 2366, 2368, 2368,
- 2370, 2367, 2369, 2369, 2371, 2372, 2365, 2373, 2374, 2374,
- 2375, 2378, 2370, 2376, 2376, 2379, 2371, 2377, 2377, 2381,
- 2382, 2383, 2378, 2373, 2384, 2372, 2383, 2379, 2385, 2375,
- 2387, 2381, 2386, 2386, 2388, 2389, 2390, 2391, 2392, 2387,
-
- 2382, 2393, 2394, 2394, 2384, 2395, 2399, 2396, 2385, 2390,
- 2397, 2400, 2392, 2393, 2395, 2389, 2401, 2403, 2406, 2406,
- 2388, 2391, 2396, 2402, 2399, 2397, 2402, 2404, 2413, 2405,
- 2415, 2403, 2404, 2400, 2405, 2407, 2407, 2408, 2408, 2401,
- 2410, 2410, 2412, 2412, 2414, 2416, 2413, 2418, 2419, 2415,
- 2420, 2421, 2422, 2423, 2424, 2414, 2424, 2425, 2426, 2431,
- 2416, 2422, 2427, 2428, 2428, 2433, 2419, 2418, 2430, 2430,
- 2434, 2421, 2420, 2423, 2431, 2437, 2426, 2425, 2439, 2434,
- 2427, 2435, 2435, 2440, 2437, 2438, 2438, 2433, 2441, 2442,
- 2443, 2444, 2446, 0, 2445, 2441, 2439, 2447, 2447, 2448,
-
- 2448, 2440, 2449, 2454, 2442, 2456, 2450, 2455, 2443, 2444,
- 2445, 2446, 2450, 2451, 2451, 2452, 2452, 2453, 2458, 2459,
- 2449, 2454, 2455, 2453, 2456, 2457, 2460, 2461, 2466, 2461,
- 2457, 2460, 2462, 2462, 2463, 2468, 2463, 2469, 2458, 2459,
- 2464, 2464, 2470, 2471, 2468, 2472, 2473, 2466, 2474, 2477,
- 2472, 0, 2478, 2480, 2470, 2478, 2469, 2479, 2479, 2481,
- 2482, 2482, 2491, 2471, 2485, 2488, 2473, 2474, 2480, 2477,
- 2483, 2486, 2487, 2487, 2483, 2486, 2490, 2481, 2488, 2485,
- 2492, 2495, 2491, 2493, 2493, 2496, 2497, 2498, 2498, 2499,
- 2497, 2490, 2501, 2495, 2496, 2500, 2500, 2501, 2502, 2503,
-
- 2492, 2504, 2505, 2505, 2510, 2510, 2511, 2502, 2499, 2512,
- 2512, 2513, 2514, 2504, 2515, 2503, 2518, 2516, 2517, 2517,
- 2520, 2520, 2523, 2515, 2513, 2514, 2516, 2523, 2511, 2524,
- 2525, 2518, 2526, 2527, 2524, 2528, 2529, 2526, 2530, 0,
- 2532, 2527, 2533, 2534, 2525, 2529, 2530, 2533, 2534, 2535,
- 2536, 2536, 2537, 2537, 2528, 2532, 2538, 2538, 2539, 2541,
- 2542, 2540, 2543, 0, 2535, 2539, 2540, 2544, 2543, 2545,
- 2545, 2546, 2544, 0, 2547, 2548, 2548, 2541, 2542, 2547,
- 2549, 2549, 2552, 2553, 2553, 2554, 2546, 2555, 2554, 2556,
- 2558, 2557, 2555, 2555, 2556, 2552, 2557, 2559, 2560, 2562,
-
- 2561, 2563, 2560, 2559, 2558, 2561, 2564, 2565, 2562, 2566,
- 2569, 2567, 2579, 2568, 2564, 2566, 2563, 2567, 2568, 2571,
- 2572, 2573, 2569, 2580, 2573, 2572, 2575, 2577, 2565, 2578,
- 2579, 2581, 2577, 2582, 2578, 2571, 2580, 2584, 2575, 2587,
- 2581, 2588, 2582, 2583, 2583, 2587, 2584, 2588, 2591, 2592,
- 2596, 2593, 2594, 2594, 2595, 2599, 2597, 2598, 2598, 2596,
- 2601, 2603, 2604, 2605, 2605, 2606, 2604, 2591, 0, 2592,
- 2593, 2597, 2607, 2595, 2599, 2601, 2608, 2609, 2607, 2610,
- 2610, 2603, 2608, 2609, 2611, 2614, 2612, 2615, 2618, 2617,
- 2606, 2612, 2611, 2617, 2614, 2619, 2621, 2621, 2622, 2632,
-
- 2615, 0, 2618, 2623, 2623, 2624, 2624, 2626, 2626, 2627,
- 2619, 2637, 2628, 2627, 2630, 2630, 2622, 2628, 2633, 2632,
- 2634, 2635, 2645, 2633, 2638, 2638, 2635, 2635, 2640, 2640,
- 2643, 2637, 2634, 2641, 2641, 2642, 2647, 2651, 2642, 2654,
- 2645, 2648, 2648, 2643, 2649, 2649, 2650, 2650, 2652, 2652,
- 2653, 2655, 2651, 2656, 2657, 2657, 2647, 2654, 2658, 2656,
- 2663, 2662, 2658, 2653, 2664, 2655, 2662, 2662, 2665, 2666,
- 2667, 2668, 2678, 2669, 2675, 2666, 2667, 2669, 2670, 2670,
- 2673, 2681, 2675, 2663, 2664, 2673, 2676, 2679, 2665, 2676,
- 2679, 2680, 2680, 2683, 2684, 2682, 2668, 2678, 2681, 2681,
-
- 2682, 2685, 2686, 2686, 2687, 2688, 2689, 2690, 2688, 2691,
- 2692, 2683, 2694, 2692, 2684, 2685, 2688, 2691, 2687, 2693,
- 2689, 2695, 2695, 2700, 2693, 2693, 2690, 2696, 2696, 2697,
- 2697, 2694, 2698, 2698, 2699, 2699, 2701, 2702, 2703, 2700,
- 2704, 2701, 2705, 2706, 2712, 2707, 2708, 2705, 2710, 2710,
- 2711, 2715, 2706, 2711, 2714, 2714, 2724, 2702, 2715, 2704,
- 2716, 2716, 2712, 2717, 2703, 2707, 2708, 2720, 2717, 2719,
- 2719, 2721, 2722, 2727, 2724, 2726, 2720, 2725, 2725, 2726,
- 2721, 2722, 2727, 2728, 2729, 2731, 2730, 2732, 2736, 2729,
- 2729, 2732, 2740, 2736, 2731, 2737, 2737, 2741, 2728, 2730,
-
- 2739, 2739, 2742, 2744, 2745, 2748, 2740, 2750, 2749, 2751,
- 2755, 2753, 2744, 2757, 2758, 2751, 2745, 2749, 2757, 2758,
- 2742, 2797, 2741, 2753, 2759, 2759, 2760, 2750, 2762, 2769,
- 2748, 2755, 2770, 2762, 2797, 2760, 2763, 2763, 2765, 2765,
- 2763, 2766, 2766, 2767, 2767, 2768, 2777, 2771, 2774, 2769,
- 2773, 2770, 2771, 2774, 2768, 2775, 2773, 2776, 2776, 2778,
- 2775, 2779, 2780, 2781, 2777, 2783, 2782, 2780, 2784, 2784,
- 2786, 2778, 2782, 2787, 2786, 2788, 2789, 2789, 2787, 2790,
- 2788, 2781, 2779, 2793, 2791, 2792, 2795, 2795, 2798, 2799,
- 2783, 2801, 2802, 2799, 2803, 2800, 2806, 2805, 2790, 2791,
-
- 2792, 2798, 2803, 2793, 2800, 2804, 2805, 2801, 2807, 2809,
- 2804, 2802, 2808, 2808, 2806, 2811, 2811, 2812, 2812, 2814,
- 2816, 2816, 2818, 2819, 2821, 2820, 2823, 2823, 2809, 2821,
- 2824, 2825, 2826, 2829, 2807, 2828, 2828, 2830, 2818, 2819,
- 2814, 2820, 2831, 2831, 2834, 2837, 2835, 2829, 2836, 2840,
- 2824, 2826, 2835, 2836, 2825, 2842, 2830, 2838, 2838, 2839,
- 2839, 2841, 2841, 2843, 2834, 2844, 2842, 2837, 2845, 2840,
- 2846, 2847, 2843, 2848, 2845, 2849, 2849, 2850, 2851, 2851,
- 2850, 2841, 2855, 2847, 2856, 2844, 2857, 2858, 2858, 2846,
- 2860, 2861, 2857, 2848, 2855, 2859, 2860, 2863, 2859, 2864,
-
- 2864, 2865, 2863, 2866, 2856, 2867, 2865, 2868, 2871, 2861,
- 2872, 2867, 2869, 2869, 2873, 2876, 2874, 2875, 2875, 2877,
- 2871, 2878, 2866, 2877, 2868, 2868, 2880, 2880, 2872, 2874,
- 2878, 2881, 2881, 2882, 2876, 2883, 2884, 2888, 2882, 2873,
- 2895, 2884, 2885, 2885, 2886, 2886, 2887, 2887, 2889, 2883,
- 2890, 2892, 2892, 2897, 2889, 2890, 2898, 2899, 2903, 2895,
- 2900, 2900, 2904, 2888, 2902, 2902, 2910, 2905, 2906, 2906,
- 2907, 2907, 2903, 2911, 2909, 2897, 2905, 0, 2898, 2899,
- 2909, 2919, 2904, 2912, 2915, 2915, 2910, 2920, 2912, 2917,
- 2917, 2918, 2911, 2920, 2921, 2919, 2918, 2922, 2923, 2923,
-
- 2926, 2927, 2924, 2928, 2929, 2922, 2921, 2924, 2928, 2930,
- 2932, 2933, 2934, 2935, 2944, 2930, 2929, 2937, 2932, 2939,
- 2926, 2927, 2938, 2940, 2941, 3041, 2943, 2948, 3041, 2941,
- 2933, 2943, 2934, 2935, 2944, 2937, 2939, 2939, 2938, 2945,
- 2950, 2946, 2960, 2949, 2940, 2945, 2946, 2948, 2949, 2953,
- 2953, 2954, 2954, 2950, 2955, 2959, 2961, 2961, 2955, 2980,
- 2959, 2960, 2963, 2963, 2964, 2964, 2967, 2964, 2965, 2965,
- 2967, 2965, 2966, 2966, 2970, 2966, 2969, 2969, 2974, 2971,
- 2975, 2976, 2977, 2977, 2980, 2982, 2976, 2981, 2983, 2982,
- 2984, 2986, 2970, 2971, 2981, 2987, 0, 2983, 2974, 2991,
-
- 2975, 2988, 2988, 2992, 2987, 2984, 2989, 2989, 2992, 2986,
- 2990, 2990, 2993, 2994, 2991, 2996, 2995, 2997, 2994, 2994,
- 2998, 2993, 2995, 2999, 2993, 3000, 3001, 3013, 2999, 3003,
- 3000, 3004, 2997, 3002, 3002, 3003, 3013, 3004, 3005, 3005,
- 2996, 2998, 3006, 3006, 3008, 3001, 3007, 3007, 0, 3008,
- 3011, 3011, 3012, 3012, 3016, 3016, 3017, 3017, 3018, 3018,
- 3019, 3019, 3020, 3020, 3021, 3021, 3022, 3022, 3024, 3025,
- 3025, 3026, 3027, 3028, 3032, 3030, 3034, 3024, 3031, 3031,
- 3026, 3036, 3033, 3040, 3027, 3035, 3035, 3042, 3034, 3032,
- 3037, 3037, 3044, 3028, 3030, 3033, 3036, 3043, 3043, 3046,
-
- 3047, 3040, 3046, 3048, 3049, 3050, 3047, 3051, 3054, 3049,
- 3044, 3052, 3055, 3042, 3054, 3059, 3062, 3048, 3072, 3070,
- 3077, 3055, 3070, 0, 3050, 3051, 3080, 3052, 3073, 3073,
- 3059, 3072, 3074, 3074, 3075, 3075, 3078, 3079, 3081, 3083,
- 3084, 3079, 3062, 3077, 3085, 3078, 3080, 3089, 3086, 3085,
- 3086, 3084, 3081, 3087, 3088, 3088, 3090, 3092, 3091, 3093,
- 3089, 3095, 3083, 3094, 3097, 3096, 3098, 3099, 3087, 3100,
- 3095, 3098, 3104, 3092, 3100, 3090, 3091, 3096, 3094, 3105,
- 3106, 3106, 3107, 3112, 3093, 3097, 3104, 3099, 3108, 3108,
- 3113, 3107, 3109, 3109, 3110, 3110, 3111, 3111, 3114, 3105,
-
- 3115, 3114, 3112, 3116, 3117, 3115, 3118, 3119, 3116, 3120,
- 3113, 3122, 3121, 3119, 3123, 3126, 3122, 3124, 3124, 3125,
- 3125, 3118, 3127, 3120, 3121, 3128, 3128, 3130, 3132, 3117,
- 3126, 3135, 3135, 3138, 3123, 3136, 3136, 3137, 3139, 3141,
- 3143, 3127, 3130, 3140, 3139, 3137, 3132, 3142, 3149, 3140,
- 3144, 3150, 3138, 3141, 3152, 3144, 3145, 3145, 3155, 3143,
- 3142, 3146, 3146, 3153, 3157, 3156, 3158, 3153, 3152, 3149,
- 3156, 3150, 3159, 3160, 3166, 3161, 3162, 3167, 3155, 3158,
- 3161, 3162, 3168, 3157, 3171, 3159, 3163, 3163, 3169, 3169,
- 3171, 3170, 3160, 3176, 3166, 3167, 3170, 3172, 3172, 3173,
-
- 3174, 3168, 3175, 3177, 3173, 3174, 3184, 3175, 3180, 3177,
- 3179, 3179, 3176, 3180, 3181, 3181, 3183, 3185, 3186, 3187,
- 3183, 3188, 3189, 3190, 3185, 3184, 0, 3188, 3192, 3192,
- 3194, 3194, 3197, 3195, 3196, 3198, 3190, 3186, 3187, 3196,
- 3199, 3189, 3195, 3200, 3200, 3195, 3202, 3201, 3204, 3205,
- 3205, 3197, 3201, 3199, 3198, 0, 3206, 3207, 3207, 3202,
- 3208, 3208, 3209, 3210, 3211, 3212, 3212, 3209, 3213, 3214,
- 3210, 3214, 3216, 3213, 3204, 3206, 3215, 3215, 3217, 3216,
- 3218, 3219, 3220, 3211, 3223, 3217, 3219, 3222, 3222, 3225,
- 3226, 3227, 3228, 3232, 3225, 3226, 3229, 3229, 3233, 3218,
-
- 0, 3220, 0, 3223, 3231, 3231, 3234, 3234, 3235, 3235,
- 3227, 3228, 3232, 3236, 3238, 3238, 3240, 3233, 3239, 3239,
- 3236, 3242, 3245, 3240, 3246, 3247, 3242, 3245, 3248, 3248,
- 3249, 3249, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3246, 3247, 3253, 3253, 3253, 3253, 3253,
- 3253, 3253, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3255,
- 3255, 3255, 3255, 3255, 3255, 3255, 3256, 3256, 3256, 3256,
- 3256, 3256, 3256, 3257, 3257, 3257, 3257, 3257, 3257, 3257,
- 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3259, 3259, 3259,
- 3259, 3259, 3259, 3259, 3261, 3261, 0, 3261, 3261, 3261,
-
- 3261, 3262, 3262, 0, 0, 0, 3262, 3262, 3263, 3263,
- 0, 0, 3263, 0, 3263, 3264, 0, 0, 0, 0,
- 0, 3264, 3265, 3265, 0, 0, 0, 3265, 3265, 3266,
- 0, 0, 0, 0, 0, 3266, 3267, 3267, 0, 3267,
- 3267, 3267, 3267, 3268, 0, 0, 0, 0, 0, 3268,
- 3269, 3269, 0, 0, 0, 3269, 3269, 3270, 3270, 0,
- 3270, 3270, 3270, 3270, 3252, 3252, 3252, 3252, 3252, 3252,
- 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252,
- 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252,
- 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252,
-
- 3252, 3252, 3252, 3252, 3252
+ 361, 373, 164, 361, 367, 361, 370, 372, 367, 370,
+ 375, 376, 371, 375, 379, 373, 367, 368, 368, 369,
+ 368, 382, 372, 379, 378, 376, 380, 370, 381, 375,
+
+ 383, 380, 380, 368, 381, 384, 368, 385, 368, 378,
+ 368, 377, 382, 377, 377, 386, 385, 388, 387, 383,
+ 384, 389, 390, 377, 387, 377, 377, 377, 392, 391,
+ 377, 395, 393, 392, 386, 391, 390, 394, 397, 391,
+ 396, 389, 398, 388, 400, 396, 395, 401, 398, 399,
+ 399, 392, 393, 397, 402, 403, 404, 394, 405, 401,
+ 406, 403, 408, 409, 400, 406, 407, 407, 402, 407,
+ 410, 411, 417, 413, 405, 413, 413, 416, 416, 409,
+ 414, 404, 408, 415, 414, 411, 410, 415, 418, 419,
+ 420, 417, 421, 413, 424, 422, 423, 162, 425, 430,
+
+ 424, 423, 415, 418, 422, 419, 421, 425, 420, 423,
+ 423, 426, 428, 423, 423, 422, 426, 422, 427, 429,
+ 430, 428, 427, 431, 432, 429, 434, 433, 432, 431,
+ 433, 434, 435, 436, 436, 437, 438, 438, 439, 442,
+ 440, 441, 441, 439, 444, 442, 443, 445, 437, 446,
+ 443, 447, 435, 440, 446, 449, 447, 448, 448, 444,
+ 450, 451, 452, 458, 455, 457, 448, 449, 445, 453,
+ 457, 454, 453, 460, 452, 454, 455, 456, 456, 451,
+ 450, 459, 459, 463, 458, 462, 462, 466, 464, 465,
+ 467, 469, 470, 471, 472, 460, 464, 473, 465, 160,
+
+ 475, 477, 467, 473, 463, 474, 475, 466, 472, 469,
+ 470, 469, 476, 471, 474, 477, 478, 476, 479, 480,
+ 481, 479, 482, 483, 478, 485, 484, 478, 482, 484,
+ 486, 485, 487, 480, 488, 481, 489, 487, 490, 492,
+ 491, 493, 490, 483, 486, 491, 493, 494, 495, 485,
+ 499, 496, 502, 520, 492, 501, 488, 489, 500, 501,
+ 506, 503, 504, 494, 496, 520, 504, 495, 497, 497,
+ 499, 502, 509, 500, 497, 506, 497, 503, 507, 508,
+ 505, 509, 497, 507, 497, 505, 510, 497, 497, 505,
+ 511, 512, 510, 513, 497, 508, 513, 510, 508, 514,
+
+ 515, 516, 516, 517, 519, 511, 521, 512, 518, 518,
+ 522, 523, 524, 526, 525, 527, 530, 524, 528, 519,
+ 515, 521, 514, 525, 528, 530, 533, 531, 517, 522,
+ 527, 531, 526, 523, 532, 534, 535, 536, 533, 537,
+ 532, 538, 539, 540, 542, 541, 539, 541, 546, 543,
+ 534, 536, 544, 544, 537, 535, 540, 543, 545, 538,
+ 546, 547, 548, 549, 545, 550, 549, 547, 542, 551,
+ 552, 554, 555, 553, 548, 552, 553, 556, 557, 550,
+ 554, 565, 556, 556, 551, 558, 558, 554, 555, 560,
+ 554, 557, 559, 559, 563, 560, 561, 561, 562, 562,
+
+ 563, 564, 565, 566, 568, 567, 564, 564, 567, 568,
+ 569, 570, 572, 571, 573, 566, 571, 572, 575, 570,
+ 574, 576, 575, 578, 577, 579, 580, 576, 577, 569,
+ 579, 581, 581, 582, 583, 585, 586, 573, 584, 574,
+ 580, 578, 588, 584, 587, 589, 590, 588, 582, 590,
+ 587, 585, 591, 593, 590, 583, 586, 590, 590, 589,
+ 592, 592, 594, 595, 596, 597, 598, 600, 595, 596,
+ 591, 593, 602, 600, 601, 602, 603, 604, 594, 597,
+ 603, 598, 604, 601, 605, 606, 609, 605, 607, 608,
+ 606, 611, 610, 609, 612, 616, 611, 613, 613, 614,
+
+ 615, 617, 603, 618, 607, 610, 619, 608, 614, 625,
+ 617, 616, 619, 158, 612, 618, 620, 621, 623, 615,
+ 621, 623, 620, 622, 622, 624, 622, 625, 626, 627,
+ 624, 628, 629, 631, 630, 627, 628, 630, 629, 632,
+ 633, 634, 626, 635, 632, 633, 633, 636, 639, 637,
+ 638, 641, 636, 85, 634, 637, 635, 639, 631, 640,
+ 642, 642, 644, 643, 640, 644, 636, 636, 645, 638,
+ 643, 641, 646, 647, 645, 650, 648, 651, 647, 651,
+ 644, 648, 648, 652, 646, 649, 649, 653, 654, 653,
+ 655, 656, 657, 658, 660, 659, 661, 662, 660, 663,
+
+ 650, 659, 652, 664, 665, 661, 654, 666, 655, 656,
+ 667, 657, 662, 658, 663, 669, 668, 671, 670, 666,
+ 672, 664, 668, 665, 673, 667, 674, 675, 673, 669,
+ 670, 676, 677, 678, 680, 679, 671, 681, 681, 672,
+ 679, 682, 683, 675, 674, 682, 684, 685, 680, 676,
+ 677, 677, 678, 686, 687, 688, 683, 689, 685, 687,
+ 690, 691, 696, 693, 692, 684, 80, 686, 691, 692,
+ 693, 688, 694, 690, 695, 697, 689, 694, 698, 695,
+ 696, 699, 697, 700, 701, 702, 703, 698, 705, 703,
+ 702, 706, 700, 704, 707, 699, 701, 704, 708, 709,
+
+ 706, 718, 705, 710, 710, 711, 711, 712, 712, 707,
+ 713, 716, 708, 714, 711, 713, 721, 717, 722, 720,
+ 709, 718, 714, 717, 719, 724, 723, 725, 719, 726,
+ 716, 720, 723, 724, 725, 727, 722, 728, 731, 737,
+ 738, 721, 741, 740, 744, 744, 738, 726, 737, 740,
+ 743, 741, 742, 731, 743, 745, 745, 728, 746, 747,
+ 727, 729, 748, 729, 749, 750, 729, 752, 742, 746,
+ 729, 750, 752, 729, 753, 754, 748, 747, 755, 759,
+ 729, 729, 755, 729, 749, 751, 751, 751, 756, 751,
+ 757, 758, 751, 754, 757, 753, 758, 751, 759, 760,
+
+ 761, 763, 762, 751, 751, 762, 763, 763, 764, 766,
+ 757, 75, 756, 767, 760, 764, 765, 765, 767, 768,
+ 768, 769, 774, 771, 766, 761, 769, 770, 771, 775,
+ 770, 772, 772, 773, 774, 773, 776, 777, 779, 778,
+ 776, 780, 780, 785, 781, 784, 779, 782, 775, 783,
+ 783, 786, 789, 789, 787, 785, 808, 777, 778, 781,
+ 787, 782, 788, 784, 790, 808, 792, 788, 793, 790,
+ 790, 792, 794, 786, 793, 795, 796, 798, 794, 799,
+ 795, 797, 796, 798, 797, 800, 800, 799, 801, 801,
+ 802, 803, 804, 805, 806, 807, 807, 804, 802, 809,
+
+ 805, 810, 810, 812, 811, 814, 815, 809, 816, 803,
+ 811, 817, 818, 806, 814, 815, 817, 819, 820, 821,
+ 819, 818, 812, 820, 822, 823, 824, 826, 826, 827,
+ 825, 828, 816, 821, 823, 825, 825, 829, 830, 824,
+ 831, 834, 834, 831, 827, 833, 829, 833, 835, 822,
+ 828, 831, 836, 837, 842, 838, 839, 836, 840, 841,
+ 843, 844, 830, 842, 845, 844, 846, 847, 848, 835,
+ 850, 74, 849, 847, 837, 838, 839, 848, 851, 841,
+ 840, 852, 845, 843, 849, 846, 853, 852, 854, 850,
+ 855, 855, 851, 854, 856, 857, 858, 859, 860, 861,
+
+ 853, 862, 863, 864, 857, 859, 865, 867, 869, 864,
+ 866, 868, 865, 867, 856, 872, 858, 870, 860, 872,
+ 862, 861, 863, 870, 866, 868, 871, 873, 869, 874,
+ 875, 876, 871, 877, 877, 875, 878, 879, 880, 882,
+ 879, 874, 878, 883, 881, 882, 873, 884, 884, 874,
+ 885, 888, 876, 886, 887, 891, 880, 881, 886, 887,
+ 887, 889, 892, 883, 894, 889, 888, 893, 885, 890,
+ 890, 896, 893, 897, 900, 899, 901, 891, 903, 903,
+ 904, 905, 892, 894, 904, 906, 906, 897, 899, 908,
+ 907, 909, 919, 908, 900, 896, 905, 901, 902, 910,
+
+ 911, 902, 912, 902, 919, 911, 909, 902, 915, 902,
+ 932, 914, 913, 910, 902, 907, 912, 913, 913, 902,
+ 914, 916, 915, 917, 918, 916, 920, 921, 922, 918,
+ 923, 920, 932, 924, 925, 929, 929, 916, 917, 918,
+ 925, 921, 924, 926, 923, 927, 928, 931, 926, 922,
+ 930, 927, 928, 931, 933, 930, 934, 936, 937, 939,
+ 940, 940, 941, 937, 938, 943, 944, 941, 945, 936,
+ 946, 939, 942, 933, 934, 935, 935, 951, 938, 943,
+ 942, 935, 947, 935, 68, 944, 946, 945, 947, 935,
+ 949, 948, 950, 951, 935, 935, 948, 952, 953, 953,
+
+ 954, 935, 949, 955, 954, 957, 958, 959, 960, 958,
+ 950, 957, 961, 960, 962, 952, 963, 964, 966, 967,
+ 962, 963, 968, 955, 969, 961, 959, 966, 967, 971,
+ 969, 970, 972, 973, 975, 974, 964, 972, 968, 976,
+ 970, 977, 980, 978, 983, 986, 989, 987, 971, 974,
+ 977, 976, 978, 973, 975, 979, 981, 985, 988, 980,
+ 983, 979, 981, 990, 989, 986, 987, 996, 991, 992,
+ 995, 985, 988, 991, 992, 995, 996, 998, 990, 997,
+ 997, 999, 1001, 998, 1002, 1006, 1007, 1004, 1004, 1002,
+ 1002, 1004, 1005, 1008, 999, 1005, 1009, 1010, 1001, 1006,
+
+ 1011, 1012, 1013, 1015, 1020, 1014, 1007, 1012, 1016, 1008,
+ 1010, 1014, 1017, 1016, 1009, 1011, 1019, 1023, 1015, 1019,
+ 1029, 63, 1013, 1021, 1022, 1020, 1017, 1024, 1021, 1022,
+ 1025, 1026, 1024, 1023, 1028, 1025, 1029, 1033, 1030, 1031,
+ 1028, 1032, 1032, 1026, 1030, 1031, 1033, 1034, 1035, 1036,
+ 1036, 1035, 1037, 1038, 1039, 1040, 1041, 1042, 1040, 1044,
+ 1043, 1049, 1045, 1042, 1044, 1034, 1043, 1045, 1046, 1041,
+ 1037, 1047, 1038, 1046, 1039, 1050, 1051, 1047, 1052, 1049,
+ 1053, 1053, 1051, 1052, 1054, 1055, 1056, 1057, 1058, 1059,
+ 1060, 1058, 1059, 1054, 1055, 1050, 1062, 1061, 1063, 1064,
+
+ 1067, 1060, 1061, 1065, 1056, 1066, 1057, 1068, 1070, 1065,
+ 1063, 1066, 1068, 1072, 1062, 1067, 1069, 1069, 1064, 1071,
+ 1073, 1074, 1075, 1076, 1073, 1072, 1077, 1070, 1079, 1080,
+ 1080, 1075, 1081, 1071, 1083, 1084, 1086, 1085, 1089, 1074,
+ 1092, 1086, 1076, 58, 1087, 1088, 1088, 1079, 1083, 1085,
+ 1084, 1077, 1081, 1087, 1090, 1091, 1092, 1093, 1089, 1095,
+ 1090, 1091, 1093, 1094, 1095, 1094, 1096, 1097, 1098, 1099,
+ 1100, 1101, 1102, 1098, 1103, 1105, 1105, 1106, 1101, 1107,
+ 1096, 1097, 1109, 1108, 1099, 1110, 57, 1102, 1109, 1100,
+ 1111, 1106, 1113, 1103, 1117, 1111, 1113, 1107, 1108, 1114,
+
+ 1114, 1117, 1115, 1118, 1111, 1110, 1111, 1115, 1120, 1111,
+ 1116, 1116, 1119, 1121, 1122, 1119, 1123, 1118, 1124, 1126,
+ 1125, 1123, 1127, 1122, 1126, 1129, 1134, 1120, 1128, 1131,
+ 1131, 1121, 1125, 1132, 1137, 1133, 1127, 1124, 1132, 1128,
+ 1133, 1136, 1135, 1137, 1129, 1136, 1134, 1135, 1138, 1139,
+ 1140, 1142, 1143, 1141, 1145, 1144, 1146, 1147, 1150, 1143,
+ 1151, 1149, 1148, 1138, 1139, 1141, 1142, 1144, 1148, 1140,
+ 1152, 1153, 1154, 1145, 1157, 1147, 1149, 1146, 1150, 1152,
+ 1151, 1155, 1156, 1158, 1159, 1162, 1153, 1164, 1161, 1163,
+ 1165, 1154, 1166, 1155, 1161, 1164, 1170, 1167, 1158, 1157,
+
+ 1162, 1156, 1167, 1163, 1159, 1168, 1169, 1171, 1166, 1172,
+ 1165, 1169, 1169, 1173, 1173, 1170, 1175, 1168, 1176, 1177,
+ 1181, 1171, 1172, 1174, 1174, 1177, 1181, 1176, 1174, 1175,
+ 1179, 1174, 1174, 1178, 1178, 1179, 1174, 1185, 1180, 1182,
+ 1183, 1188, 1174, 1319, 1182, 1183, 1174, 1180, 1184, 1184,
+ 1186, 1186, 1187, 1189, 1190, 1187, 1191, 1187, 1185, 1192,
+ 1193, 1188, 1194, 1190, 1192, 1197, 1195, 1196, 1199, 1319,
+ 1197, 1189, 1195, 1196, 1193, 1198, 1191, 1199, 1205, 1198,
+ 1194, 1206, 1199, 1204, 1199, 1202, 1199, 1204, 1199, 1200,
+ 1200, 1201, 1201, 1205, 1201, 1207, 1202, 1208, 1209, 1206,
+
+ 1210, 1211, 1208, 1208, 1207, 1212, 1211, 1209, 1213, 1214,
+ 1215, 1216, 1217, 1218, 1218, 1219, 1220, 1213, 1217, 1212,
+ 1222, 1221, 1210, 1219, 1223, 1216, 1221, 1224, 1214, 1215,
+ 1220, 1225, 1226, 1223, 1222, 1227, 1227, 1226, 1228, 1229,
+ 1229, 1230, 1234, 1230, 1232, 1224, 1233, 1232, 1235, 1236,
+ 1236, 1233, 1237, 1228, 1238, 1238, 1225, 1235, 1239, 1239,
+ 1240, 1234, 1241, 1242, 1250, 1240, 1243, 1243, 1244, 1246,
+ 1245, 1247, 1237, 1245, 1261, 1261, 1247, 1248, 1249, 1253,
+ 1249, 1255, 1250, 1241, 1242, 1257, 1248, 1252, 1244, 1246,
+ 1252, 1254, 1256, 1257, 1253, 1255, 1254, 1256, 1258, 1259,
+
+ 1260, 1262, 1259, 1258, 1263, 1260, 1262, 1264, 1265, 1270,
+ 1266, 1268, 1269, 1264, 1270, 1265, 1273, 1268, 1269, 1271,
+ 1272, 1274, 1263, 1266, 1276, 1271, 1275, 1275, 1278, 1272,
+ 1279, 1280, 1274, 1281, 1282, 1273, 1283, 1286, 1287, 1281,
+ 1282, 1285, 1283, 1278, 1276, 1288, 1291, 1285, 1289, 1290,
+ 1279, 1286, 1292, 1292, 1280, 1293, 1294, 1286, 1287, 1295,
+ 1289, 1296, 1298, 1290, 1291, 1288, 1296, 1297, 1297, 1299,
+ 1301, 1304, 1303, 1302, 1299, 1293, 1305, 1295, 1302, 1302,
+ 1304, 1294, 1306, 1307, 1305, 1298, 1308, 1309, 1310, 1301,
+ 1303, 1311, 1309, 1311, 1312, 1309, 1306, 1310, 1307, 1314,
+
+ 1316, 1308, 1315, 1318, 1308, 1314, 1315, 1317, 1312, 1320,
+ 1321, 1316, 1317, 1317, 1322, 1321, 1323, 1324, 1325, 1322,
+ 1326, 1328, 1318, 1325, 1329, 1330, 1332, 1320, 1331, 1331,
+ 1332, 1333, 1334, 1335, 1323, 1328, 1336, 1324, 1337, 1335,
+ 1326, 1338, 1329, 1330, 1339, 1340, 1341, 1342, 1336, 1333,
+ 1345, 1334, 1342, 1344, 1343, 1338, 1354, 1337, 1344, 1339,
+ 1340, 1343, 1346, 1347, 1347, 1341, 1348, 1349, 1345, 1350,
+ 1354, 1346, 1351, 1351, 1352, 1357, 1349, 1353, 1355, 1355,
+ 1352, 1348, 1356, 1353, 1358, 1359, 1360, 1361, 1356, 1350,
+ 1359, 1357, 1360, 1361, 1362, 1363, 1363, 1364, 1364, 1367,
+
+ 1362, 1366, 1366, 1367, 1368, 1358, 1369, 1370, 1371, 1373,
+ 1372, 1374, 1374, 1368, 1375, 1376, 1373, 1378, 1379, 1370,
+ 1382, 1377, 1371, 1376, 1369, 1372, 1377, 1380, 1383, 1383,
+ 1381, 1378, 1380, 1380, 1375, 1381, 1381, 1379, 1384, 1385,
+ 1382, 1386, 1387, 1388, 1389, 1390, 1391, 1387, 1392, 1393,
+ 1386, 1395, 1391, 1392, 1394, 1396, 1403, 1384, 1385, 1397,
+ 1394, 1396, 1388, 1390, 1389, 1397, 1398, 1399, 1400, 1401,
+ 1395, 1405, 1405, 52, 1404, 1393, 1402, 1403, 1406, 1407,
+ 1411, 1406, 1408, 1408, 1411, 1398, 1399, 1400, 1401, 1404,
+ 1402, 1407, 1409, 1409, 1410, 1412, 1413, 1414, 1415, 1410,
+
+ 1415, 1417, 1418, 1419, 1415, 1413, 1420, 1418, 1412, 1421,
+ 1414, 1422, 1422, 1425, 1426, 1423, 1424, 1415, 1419, 1417,
+ 1423, 1430, 1424, 1432, 1427, 1421, 1420, 1426, 1425, 1427,
+ 1428, 1429, 1431, 1433, 1428, 1429, 1434, 1434, 1436, 1433,
+ 1438, 1430, 1439, 1432, 1440, 1440, 1441, 1439, 1442, 1448,
+ 1431, 1449, 1441, 1444, 1444, 1446, 1436, 1452, 1446, 1447,
+ 1447, 1438, 1453, 1451, 1455, 1448, 1451, 1449, 1442, 1454,
+ 1454, 1453, 1456, 1457, 1459, 1458, 1461, 1452, 1462, 1455,
+ 1458, 1460, 1460, 1463, 1464, 1461, 1465, 1467, 1459, 1466,
+ 1466, 1473, 1457, 1456, 1468, 1469, 1462, 1475, 1463, 1470,
+
+ 1469, 1467, 1471, 1471, 1472, 1478, 1465, 1476, 1472, 1464,
+ 1482, 1473, 1468, 1477, 1470, 1474, 1474, 1477, 1476, 1475,
+ 1479, 1481, 1481, 1483, 1478, 1479, 1482, 1485, 1484, 1486,
+ 1487, 1488, 1488, 1489, 1490, 1493, 1491, 1495, 1489, 1492,
+ 1492, 1483, 1484, 1486, 1493, 1494, 1485, 1485, 1497, 1496,
+ 1494, 1496, 1498, 1497, 1490, 1487, 1491, 1495, 1498, 1499,
+ 1500, 1502, 1503, 1503, 1504, 1505, 1500, 1507, 1508, 1509,
+ 1509, 1505, 1507, 1510, 1510, 1502, 1511, 1512, 1513, 1499,
+ 1516, 1514, 1517, 1504, 1514, 1515, 1515, 1518, 1526, 47,
+ 1511, 1520, 1508, 1513, 1517, 1512, 1519, 1520, 1516, 1519,
+
+ 1521, 1522, 1519, 1524, 1522, 1521, 1525, 1518, 1528, 1528,
+ 1529, 1525, 1524, 1526, 1519, 1527, 1529, 1530, 1527, 1531,
+ 1522, 1532, 1532, 1530, 1531, 1533, 1533, 1534, 1536, 1535,
+ 1537, 1538, 1539, 1534, 1535, 1540, 1541, 1542, 1540, 1543,
+ 1544, 1536, 1541, 1542, 1543, 1545, 1544, 1549, 1537, 1546,
+ 1538, 1550, 1539, 1548, 1546, 1547, 1547, 1551, 1548, 1552,
+ 1553, 1554, 1555, 1556, 1559, 1549, 1557, 1558, 1545, 1558,
+ 1557, 1550, 1561, 1552, 1553, 1554, 1563, 1551, 1562, 1564,
+ 1555, 1565, 1566, 1559, 1561, 1564, 1567, 1569, 1556, 1563,
+ 1562, 1568, 1571, 1571, 1572, 1573, 1576, 1574, 1566, 1577,
+
+ 1573, 1565, 1575, 1575, 1578, 1568, 1567, 1579, 1569, 1574,
+ 1580, 1576, 1581, 1577, 1572, 1582, 1584, 1583, 1586, 1580,
+ 1588, 1589, 1582, 1593, 1589, 1579, 1583, 1581, 1578, 1583,
+ 1590, 1590, 1584, 1586, 1591, 1591, 1592, 1594, 1586, 1596,
+ 1594, 1593, 1595, 1595, 1597, 1588, 1598, 1600, 1592, 1599,
+ 1602, 1598, 1596, 1601, 1599, 1603, 1604, 1608, 1605, 1602,
+ 1607, 1607, 1609, 1597, 1606, 1604, 1600, 1605, 1604, 1601,
+ 1606, 1610, 1611, 1613, 1603, 1609, 1612, 1608, 1616, 1617,
+ 1618, 1618, 1619, 1621, 1620, 1613, 1611, 1623, 1621, 1610,
+ 1622, 1622, 1612, 1620, 1625, 1624, 1623, 1617, 1619, 1623,
+
+ 1624, 1626, 1627, 1616, 1628, 1622, 1632, 1630, 1631, 1628,
+ 1628, 1633, 1625, 1634, 1635, 18, 1633, 1636, 1636, 1634,
+ 1627, 1630, 1626, 1631, 1637, 1642, 1638, 1639, 1632, 1640,
+ 1637, 1638, 1635, 1639, 1643, 1640, 1644, 1645, 1646, 1651,
+ 1647, 1646, 1644, 1649, 1652, 1642, 1647, 1646, 1643, 1653,
+ 1645, 1649, 1654, 1655, 1656, 1657, 1658, 1653, 1651, 1659,
+ 1659, 1654, 1660, 1652, 1662, 1661, 1655, 1656, 1660, 1657,
+ 1658, 1661, 1663, 1663, 1664, 1665, 1666, 1662, 1667, 1667,
+ 1669, 1659, 1670, 1668, 1671, 1672, 1669, 1674, 1674, 1675,
+ 1680, 1681, 17, 1665, 1664, 1666, 1668, 1676, 1684, 1680,
+
+ 1671, 1676, 1677, 1672, 1670, 1678, 1679, 1677, 1683, 1675,
+ 1678, 1679, 1686, 1684, 1681, 1685, 1685, 1687, 1688, 1690,
+ 1683, 1689, 1689, 1691, 1692, 1695, 1693, 1696, 1697, 1687,
+ 1691, 1686, 1699, 1690, 1697, 1700, 1692, 1688, 1693, 1698,
+ 1712, 1700, 1701, 1701, 1695, 1702, 1706, 1696, 1702, 1705,
+ 1699, 1698, 1703, 1703, 1705, 1706, 1707, 1708, 1708, 1709,
+ 1712, 1710, 1707, 1710, 1711, 1713, 1714, 1711, 1715, 1716,
+ 1717, 1709, 1718, 1719, 1716, 1717, 1720, 1721, 1723, 1722,
+ 0, 1718, 1721, 1729, 1714, 1719, 1715, 1713, 1722, 1725,
+ 1724, 1720, 1726, 1728, 1725, 1724, 1727, 1727, 1723, 1728,
+
+ 1731, 1722, 1724, 1732, 1729, 1733, 1734, 1726, 1735, 1736,
+ 1735, 1737, 1737, 1738, 1738, 1739, 1739, 1740, 1743, 1731,
+ 1744, 1733, 1732, 1736, 1753, 1736, 1734, 1741, 1741, 1742,
+ 1742, 1745, 1745, 1751, 1746, 1756, 1747, 1740, 1746, 1743,
+ 1748, 1744, 1747, 1748, 1750, 1754, 1752, 1759, 1754, 1753,
+ 1750, 1751, 1752, 1755, 1755, 1756, 1757, 1758, 1758, 1760,
+ 1761, 1757, 1759, 1762, 1762, 1761, 1763, 1764, 1767, 1765,
+ 1766, 1763, 1768, 1764, 1770, 1773, 1776, 1775, 1769, 1775,
+ 1760, 1765, 1765, 1765, 1769, 1774, 1767, 1776, 1765, 1773,
+ 1766, 1772, 1768, 1777, 1770, 1778, 1772, 1772, 1779, 1780,
+
+ 1774, 1778, 1781, 1782, 1782, 1783, 1785, 1779, 1777, 1784,
+ 1784, 1786, 1787, 1787, 1788, 1788, 1789, 1792, 1792, 1780,
+ 1793, 1794, 1797, 1781, 1801, 1796, 1785, 1799, 1799, 1798,
+ 1794, 1783, 1800, 1786, 1796, 1798, 1789, 1802, 1803, 1801,
+ 1804, 1805, 1805, 1797, 1802, 1793, 1806, 1803, 1807, 1809,
+ 1810, 1811, 1812, 1800, 1809, 1813, 1810, 1814, 1819, 1812,
+ 1816, 1813, 1818, 1814, 1807, 1816, 1804, 1815, 1815, 1817,
+ 1822, 1811, 1806, 1820, 1823, 1827, 1821, 1819, 1817, 1821,
+ 1824, 1824, 1818, 1825, 1826, 1820, 1828, 1829, 1822, 1825,
+ 1826, 1829, 1831, 1832, 1833, 1827, 1834, 1834, 1835, 1833,
+
+ 1823, 1828, 1838, 1836, 1839, 1840, 1846, 1829, 1839, 1848,
+ 1841, 1840, 1831, 1842, 1842, 1832, 1843, 1835, 1836, 1841,
+ 1843, 1838, 1844, 1845, 1845, 1847, 1849, 1846, 1848, 1850,
+ 1851, 1849, 1853, 1844, 1852, 1861, 1854, 1859, 1844, 1847,
+ 1852, 1854, 1855, 1855, 1856, 1856, 1859, 1853, 1857, 1850,
+ 1851, 1860, 1857, 1862, 1862, 1861, 1864, 1864, 1865, 1866,
+ 1868, 1869, 1860, 1865, 1865, 1866, 1868, 1860, 1870, 1871,
+ 1872, 1874, 1876, 1870, 1875, 1877, 1872, 1879, 1875, 1878,
+ 1880, 1871, 1882, 1874, 1876, 1878, 1880, 1869, 1881, 1884,
+ 1885, 1886, 1888, 1881, 1882, 1888, 1886, 1889, 1889, 1879,
+
+ 1877, 1884, 1890, 1890, 1891, 1891, 1892, 1893, 1894, 1885,
+ 1895, 1896, 1897, 1893, 1894, 1895, 1901, 1896, 1899, 1901,
+ 1902, 1897, 1905, 1899, 1903, 1903, 1892, 1906, 1907, 1908,
+ 1908, 1909, 1902, 1907, 1905, 1912, 1910, 1911, 1912, 1906,
+ 1909, 1910, 1911, 1913, 1913, 1914, 1915, 1918, 1916, 1917,
+ 1920, 1918, 1919, 1921, 1922, 1915, 1920, 1919, 1923, 1924,
+ 1926, 1926, 1927, 1922, 1929, 1914, 1916, 1933, 1917, 1928,
+ 1931, 1921, 1926, 1924, 1930, 1930, 1923, 1932, 1928, 1931,
+ 1927, 1934, 1935, 1941, 1929, 1942, 1934, 1944, 1933, 1932,
+ 1938, 1938, 1945, 1940, 1946, 1935, 1940, 1947, 1956, 1941,
+
+ 1946, 1942, 1944, 1948, 1948, 1949, 1945, 1949, 1950, 1950,
+ 1951, 1953, 1953, 1957, 1947, 1954, 1954, 1958, 1951, 1957,
+ 1959, 1956, 1960, 1958, 1963, 1961, 1964, 1959, 1962, 1962,
+ 1965, 1966, 1969, 1963, 1967, 1970, 1968, 1973, 1974, 1975,
+ 1971, 0, 1965, 1966, 1960, 1961, 1971, 1964, 1968, 1967,
+ 1970, 1975, 1976, 1976, 1977, 1978, 1981, 1973, 1969, 1971,
+ 1979, 1974, 1980, 1979, 1983, 1985, 1984, 1980, 1984, 1983,
+ 1987, 1989, 1977, 1986, 1991, 1978, 1981, 1987, 1986, 1992,
+ 1989, 1993, 1994, 1985, 1994, 1995, 1998, 1997, 1992, 1997,
+ 1999, 1999, 1991, 1993, 2000, 2002, 2001, 2002, 2003, 2005,
+
+ 1998, 2001, 2004, 2003, 1995, 2006, 2007, 2004, 2008, 2009,
+ 2010, 2012, 2007, 2008, 2013, 2014, 2014, 2005, 2010, 2016,
+ 2000, 2017, 2009, 2015, 2015, 2006, 2018, 2020, 2013, 2020,
+ 2012, 2019, 2018, 2021, 2016, 2024, 2019, 2022, 2023, 2023,
+ 2029, 2017, 2025, 2025, 2033, 2022, 2027, 2024, 2026, 2026,
+ 2031, 2021, 2028, 2022, 2032, 2027, 2032, 2028, 2029, 2031,
+ 2035, 2034, 2031, 2036, 2038, 2033, 2034, 2034, 2039, 2035,
+ 2042, 2043, 2040, 2039, 2046, 2036, 2038, 2040, 2044, 2045,
+ 2045, 2047, 2048, 2042, 2052, 2053, 2049, 2044, 2050, 2054,
+ 2055, 2043, 2046, 2057, 2063, 2055, 2052, 2053, 2048, 2047,
+
+ 2049, 2056, 2057, 2050, 2060, 2062, 2056, 2064, 2065, 2054,
+ 2060, 2062, 2066, 2068, 2068, 2067, 2069, 2063, 2070, 2070,
+ 2071, 2074, 2064, 2060, 2067, 2069, 2065, 2072, 2073, 2075,
+ 2076, 2072, 2077, 2073, 2074, 2076, 2076, 2066, 2077, 2071,
+ 2078, 2079, 2080, 2081, 2079, 2086, 2078, 2084, 2084, 2089,
+ 2080, 2075, 2085, 2085, 2086, 2087, 2087, 2088, 2088, 2090,
+ 2091, 2089, 2096, 2081, 2092, 2099, 2091, 2085, 2096, 2092,
+ 2093, 2093, 2094, 2094, 2095, 2101, 2098, 2090, 2085, 2095,
+ 2098, 2103, 2100, 2104, 2105, 2099, 2100, 2106, 2104, 2107,
+ 2108, 2110, 2111, 2109, 2107, 2101, 2112, 2111, 2113, 2113,
+
+ 2114, 2115, 2106, 2117, 2114, 2116, 2103, 2105, 2108, 2109,
+ 2116, 2110, 2118, 2119, 2120, 2121, 2115, 2123, 2112, 2122,
+ 2121, 2124, 2124, 2126, 2127, 2119, 2128, 2129, 2130, 2117,
+ 2118, 2126, 2122, 2120, 2131, 2123, 2132, 2133, 2134, 2136,
+ 2140, 0, 2138, 2127, 2139, 2128, 2140, 2142, 2142, 2133,
+ 2129, 2143, 2130, 2131, 2136, 2138, 2143, 2132, 2139, 2134,
+ 2141, 2144, 2141, 2145, 2144, 2146, 2152, 2147, 2148, 2148,
+ 2149, 2149, 2150, 2153, 2150, 2155, 2145, 2151, 2151, 2146,
+ 2147, 2152, 2154, 2154, 2155, 2161, 2153, 2155, 2156, 2156,
+ 2157, 2157, 2158, 2160, 2162, 2163, 2166, 2158, 2160, 2164,
+
+ 2164, 2165, 2165, 2167, 2167, 2161, 2168, 2163, 2169, 2169,
+ 2170, 2171, 2172, 2172, 2162, 2166, 2171, 2173, 2173, 2174,
+ 2175, 2176, 2177, 2179, 2168, 2170, 2180, 2180, 2179, 2175,
+ 2181, 2182, 2182, 2174, 2183, 2176, 2184, 2185, 2186, 2186,
+ 2185, 2177, 2184, 2187, 2187, 2188, 2189, 2190, 2193, 2181,
+ 2191, 2191, 2183, 2194, 2186, 2195, 2196, 2197, 2197, 2198,
+ 2196, 2189, 2199, 2204, 2188, 2200, 2190, 2199, 2193, 2201,
+ 2195, 2203, 2203, 2206, 2205, 2207, 2194, 2208, 2198, 2209,
+ 2200, 2205, 2211, 2204, 2201, 2210, 2210, 2206, 2212, 2213,
+ 2212, 2211, 2213, 2207, 2215, 2208, 2216, 2217, 2218, 2219,
+
+ 2220, 2216, 2217, 2221, 2222, 2209, 2215, 2213, 2221, 2213,
+ 2224, 2225, 2219, 2226, 2227, 2224, 2225, 2228, 2229, 2232,
+ 2227, 2220, 2230, 2218, 2229, 2235, 2231, 2230, 2226, 2233,
+ 2222, 2231, 2234, 2239, 2235, 2234, 2236, 2237, 2228, 2238,
+ 2244, 0, 2233, 2240, 2232, 2236, 2237, 2239, 2238, 2240,
+ 2241, 2242, 2246, 2247, 2247, 2242, 2241, 2248, 2249, 2249,
+ 2244, 2246, 2251, 2248, 2250, 2253, 2257, 2249, 2256, 2250,
+ 2254, 2255, 2255, 2259, 2260, 2257, 2261, 2262, 2266, 2268,
+ 2268, 2253, 2251, 2256, 2251, 2259, 2254, 2267, 2265, 2262,
+ 2260, 2261, 2264, 2265, 0, 2264, 2269, 2269, 2266, 2267,
+
+ 2271, 2271, 2272, 2273, 2274, 2272, 2275, 2276, 2273, 2278,
+ 2274, 2281, 2275, 2277, 2277, 2280, 2276, 2279, 2279, 2282,
+ 2283, 2283, 2284, 2278, 2286, 2281, 2285, 2280, 2284, 2286,
+ 2288, 2294, 2289, 2292, 2288, 2289, 2290, 2290, 2282, 2291,
+ 2285, 2293, 2292, 2295, 2291, 2296, 2296, 2295, 2297, 2299,
+ 2293, 2294, 2300, 2301, 2299, 2302, 2303, 2304, 2305, 2306,
+ 2303, 2297, 2307, 2305, 2308, 2306, 2309, 2310, 2307, 2302,
+ 2311, 2312, 2300, 2301, 2315, 2311, 2314, 2304, 2316, 2324,
+ 2324, 2317, 2308, 2316, 2323, 2309, 2310, 2317, 2314, 2318,
+ 2315, 2319, 2312, 2319, 2321, 2326, 2325, 2318, 2323, 2325,
+
+ 2327, 2327, 2330, 2321, 2331, 2332, 2330, 2333, 2333, 2334,
+ 2331, 2337, 2337, 2339, 2341, 2345, 2342, 2332, 2334, 2346,
+ 2345, 2326, 2347, 2355, 2348, 2349, 2349, 2347, 2341, 2348,
+ 2353, 2339, 2342, 2351, 2351, 2356, 2353, 2354, 2354, 2355,
+ 2359, 2357, 2360, 2361, 2361, 2346, 2357, 2363, 2365, 2364,
+ 2366, 2368, 2368, 2370, 2360, 2364, 2363, 2356, 2369, 2359,
+ 2371, 2369, 2373, 2373, 2375, 2366, 2365, 2374, 2374, 2375,
+ 2376, 2377, 2370, 2379, 2378, 2379, 2380, 2381, 2371, 2378,
+ 2377, 2382, 2383, 2384, 2385, 2386, 2386, 2383, 2376, 2385,
+ 2380, 2381, 2390, 2382, 2387, 2387, 2388, 2388, 2389, 2389,
+
+ 2391, 2392, 2395, 2384, 2390, 2396, 2392, 2393, 2393, 2394,
+ 2394, 2397, 2398, 2400, 2395, 2399, 2399, 2396, 2391, 2401,
+ 2401, 2402, 2402, 2403, 2404, 2406, 2405, 2407, 2398, 2409,
+ 2408, 2397, 2400, 2405, 2403, 2408, 2404, 2406, 2410, 2411,
+ 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2407, 2426, 2409,
+ 2412, 2421, 2418, 2419, 2419, 2422, 2420, 2415, 2410, 2424,
+ 2417, 2425, 2428, 2414, 2418, 2420, 2421, 0, 2413, 2416,
+ 2422, 2426, 2427, 2429, 2430, 2427, 2428, 2424, 2429, 2430,
+ 2431, 2431, 2438, 2425, 2432, 2432, 2433, 2433, 2435, 2435,
+ 2437, 2437, 2439, 2440, 2441, 2443, 2444, 2445, 2446, 2447,
+
+ 2438, 2448, 2449, 2439, 2449, 2450, 2451, 2457, 2447, 2441,
+ 2452, 2458, 2440, 2456, 2444, 2443, 2453, 2453, 2446, 2445,
+ 2458, 2448, 2455, 2455, 2451, 2450, 2461, 2456, 2452, 2457,
+ 2459, 2459, 2462, 2462, 2463, 2461, 2464, 2465, 2466, 2467,
+ 2468, 2470, 2473, 2469, 2465, 2471, 2471, 2472, 2472, 2474,
+ 2475, 2479, 2463, 2466, 2464, 2478, 2475, 2467, 2468, 2469,
+ 2470, 2478, 2473, 2476, 2476, 2477, 2477, 2474, 2480, 2479,
+ 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2483, 2487, 2492,
+ 2486, 2488, 2488, 2480, 2489, 2482, 2489, 2490, 2490, 2481,
+ 2494, 2495, 2496, 2484, 2485, 2497, 2498, 2499, 2492, 2494,
+
+ 2500, 2498, 2503, 2504, 2496, 2506, 2504, 2505, 2505, 2507,
+ 2495, 2508, 2508, 2511, 2509, 2497, 2514, 2499, 2509, 2500,
+ 2506, 2512, 2503, 2513, 2513, 2512, 2516, 2507, 2511, 2514,
+ 2517, 2518, 2519, 2519, 2521, 2522, 2523, 2524, 2524, 2525,
+ 2523, 2516, 2526, 2526, 2522, 2528, 2521, 2527, 2529, 2530,
+ 2517, 2518, 2527, 2537, 2528, 2531, 2531, 2539, 2525, 2536,
+ 2536, 2530, 2538, 2538, 2529, 2540, 2544, 2541, 2542, 2551,
+ 2539, 2543, 2543, 2546, 2546, 2537, 2541, 2542, 2540, 2549,
+ 2550, 2544, 2552, 2551, 2549, 2550, 2553, 2552, 2554, 2555,
+ 2558, 2556, 2559, 2561, 2553, 2560, 2567, 2559, 2555, 2556,
+
+ 2560, 2562, 2562, 2563, 2563, 2558, 2565, 2554, 2561, 2564,
+ 2564, 2566, 2568, 2565, 2567, 2569, 2566, 2570, 2571, 2571,
+ 2572, 2569, 2570, 2573, 2574, 2574, 2575, 2575, 2573, 2578,
+ 2568, 2579, 2579, 2580, 2581, 2572, 2580, 2584, 2582, 2581,
+ 2581, 2583, 2578, 2582, 2585, 2586, 2583, 2587, 2588, 2586,
+ 2585, 2584, 2587, 2589, 2590, 2591, 2594, 2588, 2592, 2593,
+ 2595, 2594, 2590, 2597, 2592, 2593, 2598, 2601, 2589, 2605,
+ 2597, 2598, 2595, 2603, 2599, 2604, 2591, 2599, 2603, 2601,
+ 2604, 2606, 2607, 2608, 2609, 2609, 2610, 2605, 2613, 2618,
+ 2614, 2607, 2608, 2615, 2606, 2610, 2614, 2619, 2622, 2615,
+
+ 2620, 2621, 2621, 2623, 2624, 2622, 2613, 2627, 2618, 2625,
+ 2626, 2626, 2629, 2624, 2631, 2634, 2632, 2619, 2640, 2620,
+ 2632, 0, 2623, 2640, 2625, 2635, 2627, 2629, 2633, 2633,
+ 2636, 2635, 2637, 2646, 2631, 2639, 2636, 2642, 2637, 2643,
+ 2634, 2638, 2638, 2639, 2645, 2647, 2642, 2646, 2645, 2649,
+ 2649, 2650, 2643, 2651, 2651, 2652, 2652, 2654, 2654, 2655,
+ 2647, 2656, 2660, 2655, 2658, 2658, 2656, 2661, 2662, 2650,
+ 2663, 2665, 2661, 2666, 2666, 2663, 2663, 2668, 2668, 2671,
+ 2662, 2673, 2660, 2669, 2669, 2670, 2675, 2679, 2670, 2676,
+ 2676, 2665, 2671, 2677, 2677, 2678, 2678, 2680, 2680, 2673,
+
+ 2681, 2682, 2679, 2683, 2684, 2686, 2675, 2685, 2685, 2686,
+ 2684, 2691, 2692, 2681, 2696, 2690, 2693, 2683, 2694, 2682,
+ 2690, 2690, 2695, 2697, 2694, 2698, 2698, 2697, 2695, 2703,
+ 2701, 2706, 2692, 2709, 2691, 2701, 2693, 2703, 2704, 2696,
+ 2707, 2704, 2710, 2707, 2708, 2708, 2711, 2710, 2712, 2713,
+ 2709, 2709, 2714, 2714, 2716, 2715, 2706, 2716, 2717, 2718,
+ 2722, 2720, 2719, 2713, 2711, 2716, 2720, 2720, 2712, 2715,
+ 2719, 2721, 2717, 2723, 2723, 2728, 2721, 2721, 2718, 2722,
+ 2724, 2724, 2725, 2725, 2726, 2726, 2727, 2727, 2729, 2730,
+ 2731, 2728, 2732, 2729, 2733, 2734, 2735, 2732, 2736, 2737,
+
+ 2734, 2739, 2739, 2740, 2740, 2735, 2742, 2741, 2745, 2730,
+ 2741, 2744, 2744, 2733, 2750, 2745, 2731, 2747, 2736, 2737,
+ 2746, 2746, 2747, 2750, 2742, 2749, 2749, 2751, 2752, 2754,
+ 2755, 2755, 2757, 2758, 2756, 2771, 2751, 2752, 2756, 2759,
+ 2760, 2757, 2761, 2772, 2759, 2759, 2762, 2754, 2758, 2766,
+ 2762, 2761, 2770, 2760, 2766, 2767, 2767, 2769, 2769, 2774,
+ 2771, 2772, 2775, 2778, 2779, 2780, 2770, 2783, 2774, 2781,
+ 2785, 2787, 2788, 2779, 2775, 2781, 2787, 2788, 2790, 2783,
+ 2789, 2789, 2793, 2793, 2792, 2780, 2793, 2790, 2778, 2792,
+ 2798, 2785, 2795, 2795, 2796, 2796, 2797, 2797, 2799, 2798,
+
+ 2800, 2801, 2803, 2807, 2804, 2805, 2801, 2809, 2803, 2804,
+ 2805, 2806, 2806, 2808, 2811, 2810, 2812, 2813, 2799, 2800,
+ 2810, 2807, 2812, 2814, 2814, 2808, 2816, 2820, 2809, 2817,
+ 2816, 2818, 2811, 2821, 2817, 2822, 2818, 2819, 2819, 2824,
+ 2826, 2826, 2813, 2828, 2829, 2830, 2820, 2832, 2821, 2830,
+ 2822, 2831, 2833, 2834, 2836, 2836, 2828, 2829, 2838, 2824,
+ 2831, 2834, 2835, 2832, 2837, 2839, 2841, 2835, 2840, 2840,
+ 2851, 2833, 2847, 2837, 2844, 2844, 2838, 2845, 2845, 2849,
+ 2849, 2852, 2853, 2854, 2857, 2841, 2851, 2858, 2854, 2856,
+ 2856, 2839, 2859, 2847, 2861, 2861, 2863, 2852, 2853, 2862,
+
+ 2864, 2864, 2867, 2868, 2857, 2870, 2873, 2869, 2877, 2868,
+ 2858, 2859, 2869, 2862, 2875, 2863, 2871, 2871, 2872, 2872,
+ 2874, 2874, 2867, 2876, 2878, 2875, 2873, 2870, 2877, 2879,
+ 2878, 2880, 2876, 2881, 2882, 2882, 2883, 2884, 2884, 2883,
+ 2874, 2889, 2888, 2880, 2890, 2891, 2891, 2894, 2879, 2892,
+ 2890, 2893, 2892, 2881, 2888, 2896, 2899, 2893, 2897, 2897,
+ 2896, 2889, 2898, 2900, 2901, 2894, 2904, 2898, 2905, 2900,
+ 2902, 2902, 2906, 2909, 2907, 2899, 2908, 2908, 2904, 2910,
+ 2911, 2901, 2901, 2913, 2913, 2916, 2905, 2907, 2915, 2911,
+ 2914, 2914, 2909, 2915, 2922, 2910, 2917, 2906, 2921, 2916,
+
+ 2929, 2917, 2918, 2918, 2919, 2919, 2920, 2920, 2923, 2931,
+ 2924, 2921, 2926, 2926, 2923, 2924, 2932, 2933, 2937, 2929,
+ 2922, 2934, 2934, 2936, 2936, 2938, 2939, 2940, 2940, 2941,
+ 2941, 2931, 2937, 2944, 2943, 2939, 2945, 2946, 2932, 2933,
+ 2943, 2960, 2946, 2949, 2949, 2938, 2951, 2951, 2953, 2952,
+ 2954, 2955, 2956, 2944, 2952, 2945, 2954, 2957, 2957, 2958,
+ 2956, 2960, 2953, 2955, 2958, 2961, 2962, 2963, 2964, 2966,
+ 2967, 2962, 2968, 2969, 2964, 2972, 2971, 2966, 2973, 2963,
+ 2974, 2975, 2977, 2978, 2979, 2961, 2975, 2977, 2982, 2967,
+ 2979, 2972, 2968, 2969, 2971, 2973, 2973, 2980, 2984, 2987,
+
+ 2987, 2974, 2980, 2978, 2983, 2988, 2988, 2983, 2982, 2989,
+ 2995, 2984, 2994, 2989, 2993, 2993, 0, 2994, 2996, 2996,
+ 2998, 2998, 2999, 2999, 3005, 2999, 3006, 3000, 3000, 2995,
+ 3000, 3001, 3001, 3002, 3001, 3004, 3004, 3002, 3009, 3010,
+ 3006, 3011, 3005, 3012, 3012, 3015, 3011, 3016, 3017, 3019,
+ 3021, 3018, 3017, 3022, 3016, 3023, 3023, 3030, 3009, 3010,
+ 3018, 3026, 3022, 3030, 3019, 3024, 3024, 3031, 3021, 3027,
+ 3015, 3025, 3025, 3028, 3027, 3029, 3026, 3033, 3032, 3034,
+ 3029, 3029, 3028, 3035, 3034, 3028, 3036, 0, 3035, 3037,
+ 3037, 3038, 3031, 3032, 3039, 3040, 3040, 3038, 3033, 3042,
+
+ 3039, 3041, 3041, 3043, 3049, 3036, 3046, 3046, 3043, 3048,
+ 3048, 3052, 3052, 3049, 3042, 3053, 3053, 3054, 3054, 3055,
+ 3055, 3056, 3056, 3057, 3057, 3058, 3058, 3060, 3061, 3061,
+ 3062, 3063, 3064, 3068, 3066, 3070, 3060, 3067, 3067, 3062,
+ 3072, 3069, 3076, 3063, 3071, 3071, 3078, 3070, 3068, 3073,
+ 3073, 3080, 3064, 3066, 3069, 3072, 3077, 3079, 3079, 3077,
+ 3076, 3082, 3083, 3084, 3082, 3085, 3086, 3088, 3083, 3080,
+ 3085, 3087, 3078, 3090, 3094, 3091, 3095, 3084, 3094, 3090,
+ 3098, 3108, 3113, 3088, 3091, 3086, 3119, 3106, 3117, 3087,
+ 3106, 3095, 3109, 3109, 3108, 3110, 3110, 3111, 3111, 3114,
+
+ 3115, 3116, 3117, 3120, 3115, 3113, 3098, 3121, 3114, 3119,
+ 3123, 3122, 3121, 3122, 3120, 3124, 3124, 3125, 3126, 3128,
+ 3127, 3116, 3129, 3131, 3130, 3123, 3133, 3134, 3132, 3135,
+ 3125, 3133, 3131, 3136, 3135, 3128, 3137, 3126, 3127, 3130,
+ 3132, 3137, 3141, 3142, 3143, 3143, 3144, 3129, 3134, 3145,
+ 3145, 3146, 3146, 3136, 3149, 3144, 3141, 3147, 3147, 3148,
+ 3148, 3150, 3151, 3142, 3152, 3151, 3153, 3154, 3155, 3152,
+ 3156, 3153, 3157, 3149, 3159, 3158, 3156, 3160, 3160, 3159,
+ 3161, 3150, 3164, 3155, 3162, 3162, 3157, 3158, 3163, 3163,
+ 3165, 3168, 3154, 3166, 3166, 3170, 3175, 3164, 3173, 3173,
+
+ 3161, 3174, 3174, 3176, 3175, 3177, 3168, 3179, 3178, 3165,
+ 3180, 3177, 3181, 3170, 3178, 3182, 3183, 3183, 3185, 3185,
+ 3182, 3179, 3176, 3180, 3188, 3191, 3189, 3194, 3192, 3195,
+ 3196, 3181, 3192, 3199, 3195, 3197, 3200, 3198, 3201, 3191,
+ 3205, 3200, 3207, 3201, 3206, 3188, 3189, 3194, 3197, 3196,
+ 3198, 3210, 3199, 3202, 3202, 3208, 3208, 3210, 3209, 3215,
+ 3205, 3207, 3206, 3209, 3211, 3211, 3212, 3213, 3214, 3216,
+ 3223, 3212, 3213, 3214, 3219, 3216, 3218, 3218, 3215, 3219,
+ 3220, 3220, 3222, 3224, 3225, 3226, 3222, 3227, 3228, 3223,
+ 3224, 3236, 3229, 3227, 3231, 3231, 3233, 3233, 3237, 3234,
+
+ 3238, 3235, 3243, 3225, 3226, 3229, 3235, 3228, 3234, 3241,
+ 3236, 3234, 3245, 3238, 3239, 3239, 3240, 3237, 3244, 3244,
+ 3250, 3240, 3241, 3246, 3246, 3247, 3247, 3248, 3243, 3249,
+ 3252, 3245, 3248, 3251, 3251, 3252, 3249, 3255, 3253, 3250,
+ 3253, 3254, 3254, 3256, 3255, 3257, 3258, 3259, 3261, 3261,
+ 3256, 3258, 3262, 3264, 3265, 3266, 3267, 3271, 3264, 3265,
+ 3268, 3268, 3270, 3270, 3257, 3272, 3259, 3273, 3273, 3274,
+ 3274, 3262, 3275, 3285, 3266, 3267, 3271, 3277, 3277, 3275,
+ 3278, 3278, 3279, 3281, 3272, 3284, 3286, 0, 3281, 3279,
+ 3284, 0, 3285, 3287, 3287, 3288, 3288, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 3286, 3292, 3292, 3292, 3292,
+ 3292, 3292, 3292, 3293, 3293, 3293, 3293, 3293, 3293, 3293,
+ 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3295, 3295, 3295,
+ 3295, 3295, 3295, 3295, 3296, 3296, 3296, 3296, 3296, 3296,
+ 3296, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3298, 3298,
+ 3298, 3298, 3298, 3298, 3298, 3300, 3300, 0, 3300, 3300,
+ 3300, 3300, 3301, 3301, 0, 0, 0, 3301, 3301, 3302,
+ 3302, 0, 0, 3302, 0, 3302, 3303, 0, 0, 0,
+ 0, 0, 3303, 3304, 3304, 0, 0, 0, 3304, 3304,
+ 3305, 0, 0, 0, 0, 0, 3305, 3306, 3306, 0,
+
+ 3306, 3306, 3306, 3306, 3307, 0, 0, 0, 0, 0,
+ 3307, 3308, 3308, 0, 0, 0, 3308, 3308, 3309, 3309,
+ 0, 3309, 3309, 3309, 3309, 3291, 3291, 3291, 3291, 3291,
+ 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
+ 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
+ 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291,
+ 3291, 3291, 3291, 3291, 3291, 3291
} ;
static yy_state_type yy_last_accepting_state;
@@ -3135,7 +3162,7 @@ static void config_end_include(void)
#define YY_NO_INPUT 1
#endif
-#line 3137 "<stdout>"
+#line 3164 "<stdout>"
#define INITIAL 0
#define quotedstring 1
@@ -3353,7 +3380,7 @@ YY_DECL
{
#line 211 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-#line 3355 "<stdout>"
+#line 3382 "<stdout>"
while ( 1 ) /* loops until end-of-file is reached */
{
@@ -3386,13 +3413,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 >= 3253 )
+ if ( yy_current_state >= 3292 )
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] != 6365 );
+ while ( yy_base[yy_current_state] != 6426 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -3672,17 +3699,17 @@ YY_RULE_SETUP
case 51:
YY_RULE_SETUP
#line 265 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSTEMD) }
+{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) }
YY_BREAK
case 52:
YY_RULE_SETUP
#line 266 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DO_DAEMONIZE) }
+{ YDVAR(1, VAR_USE_SYSTEMD) }
YY_BREAK
case 53:
YY_RULE_SETUP
#line 267 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INTERFACE) }
+{ YDVAR(1, VAR_DO_DAEMONIZE) }
YY_BREAK
case 54:
YY_RULE_SETUP
@@ -3692,1304 +3719,1319 @@ YY_RULE_SETUP
case 55:
YY_RULE_SETUP
#line 269 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_OUTGOING_INTERFACE) }
+{ YDVAR(1, VAR_INTERFACE) }
YY_BREAK
case 56:
YY_RULE_SETUP
#line 270 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) }
+{ YDVAR(1, VAR_OUTGOING_INTERFACE) }
YY_BREAK
case 57:
YY_RULE_SETUP
#line 271 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SO_RCVBUF) }
+{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) }
YY_BREAK
case 58:
YY_RULE_SETUP
#line 272 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SO_SNDBUF) }
+{ YDVAR(1, VAR_SO_RCVBUF) }
YY_BREAK
case 59:
YY_RULE_SETUP
#line 273 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SO_REUSEPORT) }
+{ YDVAR(1, VAR_SO_SNDBUF) }
YY_BREAK
case 60:
YY_RULE_SETUP
#line 274 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_TRANSPARENT) }
+{ YDVAR(1, VAR_SO_REUSEPORT) }
YY_BREAK
case 61:
YY_RULE_SETUP
#line 275 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_FREEBIND) }
+{ YDVAR(1, VAR_IP_TRANSPARENT) }
YY_BREAK
case 62:
YY_RULE_SETUP
#line 276 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_DSCP) }
+{ YDVAR(1, VAR_IP_FREEBIND) }
YY_BREAK
case 63:
YY_RULE_SETUP
#line 277 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CHROOT) }
+{ YDVAR(1, VAR_IP_DSCP) }
YY_BREAK
case 64:
YY_RULE_SETUP
#line 278 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_USERNAME) }
+{ YDVAR(1, VAR_CHROOT) }
YY_BREAK
case 65:
YY_RULE_SETUP
#line 279 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DIRECTORY) }
+{ YDVAR(1, VAR_USERNAME) }
YY_BREAK
case 66:
YY_RULE_SETUP
#line 280 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOGFILE) }
+{ YDVAR(1, VAR_DIRECTORY) }
YY_BREAK
case 67:
YY_RULE_SETUP
#line 281 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PIDFILE) }
+{ YDVAR(1, VAR_LOGFILE) }
YY_BREAK
case 68:
YY_RULE_SETUP
#line 282 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ROOT_HINTS) }
+{ YDVAR(1, VAR_PIDFILE) }
YY_BREAK
case 69:
YY_RULE_SETUP
#line 283 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STREAM_WAIT_SIZE) }
+{ YDVAR(1, VAR_ROOT_HINTS) }
YY_BREAK
case 70:
YY_RULE_SETUP
#line 284 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
+{ YDVAR(1, VAR_STREAM_WAIT_SIZE) }
YY_BREAK
case 71:
YY_RULE_SETUP
#line 285 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
+{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
YY_BREAK
case 72:
YY_RULE_SETUP
#line 286 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
YY_BREAK
case 73:
YY_RULE_SETUP
#line 287 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
+{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
YY_BREAK
case 74:
YY_RULE_SETUP
#line 288 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
YY_BREAK
case 75:
YY_RULE_SETUP
#line 289 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
+{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
YY_BREAK
case 76:
YY_RULE_SETUP
#line 290 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_TTL) }
+{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
YY_BREAK
case 77:
YY_RULE_SETUP
#line 291 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_TTL) }
YY_BREAK
case 78:
YY_RULE_SETUP
#line 292 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MIN_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) }
YY_BREAK
case 79:
YY_RULE_SETUP
#line 293 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_HOST_TTL) }
+{ YDVAR(1, VAR_CACHE_MIN_TTL) }
YY_BREAK
case 80:
YY_RULE_SETUP
#line 294 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_LAME_TTL) }
+{ YDVAR(1, VAR_INFRA_HOST_TTL) }
YY_BREAK
case 81:
YY_RULE_SETUP
#line 295 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
+{ YDVAR(1, VAR_INFRA_LAME_TTL) }
YY_BREAK
case 82:
YY_RULE_SETUP
#line 296 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
+{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
YY_BREAK
case 83:
YY_RULE_SETUP
#line 297 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
+{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
YY_BREAK
case 84:
YY_RULE_SETUP
#line 298 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
+{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
YY_BREAK
case 85:
YY_RULE_SETUP
#line 299 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
+{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
YY_BREAK
case 86:
YY_RULE_SETUP
#line 300 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
+{ YDVAR(1, VAR_INFRA_KEEP_PROBING) }
YY_BREAK
case 87:
YY_RULE_SETUP
#line 301 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DELAY_CLOSE) }
+{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
YY_BREAK
case 88:
YY_RULE_SETUP
#line 302 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
+{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
YY_BREAK
case 89:
YY_RULE_SETUP
#line 303 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
+{ YDVAR(1, VAR_DELAY_CLOSE) }
YY_BREAK
case 90:
YY_RULE_SETUP
#line 304 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
+{ YDVAR(1, VAR_UDP_CONNECT) }
YY_BREAK
case 91:
YY_RULE_SETUP
#line 305 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_GLUE) }
+{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
YY_BREAK
case 92:
YY_RULE_SETUP
#line 306 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
+{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
YY_BREAK
case 93:
YY_RULE_SETUP
#line 307 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
+{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
YY_BREAK
case 94:
YY_RULE_SETUP
#line 308 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
+{ YDVAR(1, VAR_HARDEN_GLUE) }
YY_BREAK
case 95:
YY_RULE_SETUP
#line 309 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
+{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
YY_BREAK
case 96:
YY_RULE_SETUP
#line 310 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
YY_BREAK
case 97:
YY_RULE_SETUP
#line 311 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CAPS_WHITELIST) }
+{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
YY_BREAK
case 98:
YY_RULE_SETUP
#line 312 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CAPS_WHITELIST) }
+{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
YY_BREAK
case 99:
YY_RULE_SETUP
#line 313 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
YY_BREAK
case 100:
YY_RULE_SETUP
#line 314 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_CAPS_WHITELIST) }
YY_BREAK
case 101:
YY_RULE_SETUP
#line 315 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_CAPS_WHITELIST) }
YY_BREAK
case 102:
YY_RULE_SETUP
#line 316 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
YY_BREAK
case 103:
YY_RULE_SETUP
#line 317 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
YY_BREAK
case 104:
YY_RULE_SETUP
#line 318 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DENY_ANY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
YY_BREAK
case 105:
YY_RULE_SETUP
#line 319 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
YY_BREAK
case 106:
YY_RULE_SETUP
#line 320 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(1, VAR_PREFETCH) }
YY_BREAK
case 107:
YY_RULE_SETUP
#line 321 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_DENY_ANY) }
YY_BREAK
case 108:
YY_RULE_SETUP
#line 322 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(0, VAR_STUB_ZONE) }
YY_BREAK
case 109:
YY_RULE_SETUP
#line 323 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_NAME) }
YY_BREAK
case 110:
YY_RULE_SETUP
#line 324 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_FIRST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
YY_BREAK
case 111:
YY_RULE_SETUP
#line 325 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_NO_CACHE) }
+{ YDVAR(1, VAR_STUB_HOST) }
YY_BREAK
case 112:
YY_RULE_SETUP
#line 326 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) }
+{ YDVAR(1, VAR_STUB_PRIME) }
YY_BREAK
case 113:
YY_RULE_SETUP
#line 327 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) }
+{ YDVAR(1, VAR_STUB_FIRST) }
YY_BREAK
case 114:
YY_RULE_SETUP
#line 328 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_NO_CACHE) }
YY_BREAK
case 115:
YY_RULE_SETUP
#line 329 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) }
YY_BREAK
case 116:
YY_RULE_SETUP
#line 330 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) }
YY_BREAK
case 117:
YY_RULE_SETUP
#line 331 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_FIRST) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
YY_BREAK
case 118:
YY_RULE_SETUP
#line 332 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_NO_CACHE) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
YY_BREAK
case 119:
YY_RULE_SETUP
#line 333 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
YY_BREAK
case 120:
YY_RULE_SETUP
#line 334 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) }
+{ YDVAR(1, VAR_FORWARD_FIRST) }
YY_BREAK
case 121:
YY_RULE_SETUP
#line 335 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_AUTH_ZONE) }
+{ YDVAR(1, VAR_FORWARD_NO_CACHE) }
YY_BREAK
case 122:
YY_RULE_SETUP
#line 336 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_RPZ) }
+{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) }
YY_BREAK
case 123:
YY_RULE_SETUP
#line 337 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TAGS) }
+{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) }
YY_BREAK
case 124:
YY_RULE_SETUP
#line 338 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) }
+{ YDVAR(0, VAR_AUTH_ZONE) }
YY_BREAK
case 125:
YY_RULE_SETUP
#line 339 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) }
+{ YDVAR(0, VAR_RPZ) }
YY_BREAK
case 126:
YY_RULE_SETUP
#line 340 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_LOG) }
+{ YDVAR(1, VAR_TAGS) }
YY_BREAK
case 127:
YY_RULE_SETUP
#line 341 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_LOG_NAME) }
+{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) }
YY_BREAK
case 128:
YY_RULE_SETUP
#line 342 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEFILE) }
+{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) }
YY_BREAK
case 129:
YY_RULE_SETUP
#line 343 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MASTER) }
+{ YDVAR(1, VAR_RPZ_LOG) }
YY_BREAK
case 130:
YY_RULE_SETUP
#line 344 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MASTER) }
+{ YDVAR(1, VAR_RPZ_LOG_NAME) }
YY_BREAK
case 131:
YY_RULE_SETUP
#line 345 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_URL) }
+{ YDVAR(1, VAR_ZONEFILE) }
YY_BREAK
case 132:
YY_RULE_SETUP
#line 346 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ALLOW_NOTIFY) }
+{ YDVAR(1, VAR_MASTER) }
YY_BREAK
case 133:
YY_RULE_SETUP
#line 347 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FOR_DOWNSTREAM) }
+{ YDVAR(1, VAR_MASTER) }
YY_BREAK
case 134:
YY_RULE_SETUP
#line 348 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FOR_UPSTREAM) }
+{ YDVAR(1, VAR_URL) }
YY_BREAK
case 135:
YY_RULE_SETUP
#line 349 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FALLBACK_ENABLED) }
+{ YDVAR(1, VAR_ALLOW_NOTIFY) }
YY_BREAK
case 136:
YY_RULE_SETUP
#line 350 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_VIEW) }
+{ YDVAR(1, VAR_FOR_DOWNSTREAM) }
YY_BREAK
case 137:
YY_RULE_SETUP
#line 351 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VIEW_FIRST) }
+{ YDVAR(1, VAR_FOR_UPSTREAM) }
YY_BREAK
case 138:
YY_RULE_SETUP
#line 352 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_FALLBACK_ENABLED) }
YY_BREAK
case 139:
YY_RULE_SETUP
#line 353 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(0, VAR_VIEW) }
YY_BREAK
case 140:
YY_RULE_SETUP
#line 354 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_VIEW_FIRST) }
YY_BREAK
case 141:
YY_RULE_SETUP
#line 355 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
YY_BREAK
case 142:
YY_RULE_SETUP
#line 356 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
YY_BREAK
case 143:
YY_RULE_SETUP
#line 357 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
YY_BREAK
case 144:
YY_RULE_SETUP
#line 358 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) }
+{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) }
YY_BREAK
case 145:
YY_RULE_SETUP
#line 359 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) }
YY_BREAK
case 146:
YY_RULE_SETUP
#line 360 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) }
YY_BREAK
case 147:
YY_RULE_SETUP
#line 361 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) }
YY_BREAK
case 148:
YY_RULE_SETUP
#line 362 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) }
+{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) }
YY_BREAK
case 149:
YY_RULE_SETUP
#line 363 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) }
+{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) }
YY_BREAK
case 150:
YY_RULE_SETUP
#line 364 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) }
+{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) }
YY_BREAK
case 151:
YY_RULE_SETUP
#line 365 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) }
YY_BREAK
case 152:
YY_RULE_SETUP
#line 366 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) }
YY_BREAK
case 153:
YY_RULE_SETUP
#line 367 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) }
+{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) }
YY_BREAK
case 154:
YY_RULE_SETUP
#line 368 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
YY_BREAK
case 155:
YY_RULE_SETUP
#line 369 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
YY_BREAK
case 156:
YY_RULE_SETUP
#line 370 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) }
YY_BREAK
case 157:
YY_RULE_SETUP
#line 371 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_IDENTITY) }
YY_BREAK
case 158:
YY_RULE_SETUP
#line 372 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_VERSION) }
YY_BREAK
case 159:
YY_RULE_SETUP
#line 373 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_MODULE_CONF) }
YY_BREAK
case 160:
YY_RULE_SETUP
#line 374 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
YY_BREAK
case 161:
YY_RULE_SETUP
#line 375 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
YY_BREAK
case 162:
YY_RULE_SETUP
#line 376 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
YY_BREAK
case 163:
YY_RULE_SETUP
#line 377 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
YY_BREAK
case 164:
YY_RULE_SETUP
#line 378 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
YY_BREAK
case 165:
YY_RULE_SETUP
#line 379 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
YY_BREAK
case 166:
YY_RULE_SETUP
#line 380 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) }
YY_BREAK
case 167:
YY_RULE_SETUP
#line 381 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) }
YY_BREAK
case 168:
YY_RULE_SETUP
#line 382 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
YY_BREAK
case 169:
YY_RULE_SETUP
#line 383 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
YY_BREAK
case 170:
YY_RULE_SETUP
#line 384 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
YY_BREAK
case 171:
YY_RULE_SETUP
#line 385 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_AGGRESSIVE_NSEC) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
YY_BREAK
case 172:
YY_RULE_SETUP
#line 386 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
YY_BREAK
case 173:
YY_RULE_SETUP
#line 387 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
YY_BREAK
case 174:
YY_RULE_SETUP
#line 388 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) }
+{ YDVAR(1, VAR_AGGRESSIVE_NSEC) }
YY_BREAK
case 175:
YY_RULE_SETUP
#line 389 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) }
+{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
YY_BREAK
case 176:
YY_RULE_SETUP
#line 390 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) }
+{ YDVAR(1, VAR_SERVE_EXPIRED) }
YY_BREAK
case 177:
YY_RULE_SETUP
#line 391 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) }
YY_BREAK
case 178:
YY_RULE_SETUP
#line 392 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_DSA) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) }
YY_BREAK
case 179:
YY_RULE_SETUP
#line 393 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_SHA1) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) }
YY_BREAK
case 180:
YY_RULE_SETUP
#line 394 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) }
YY_BREAK
case 181:
YY_RULE_SETUP
#line 395 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_FAKE_DSA) }
YY_BREAK
case 182:
YY_RULE_SETUP
#line 396 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_FAKE_SHA1) }
YY_BREAK
case 183:
YY_RULE_SETUP
#line 397 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
YY_BREAK
case 184:
YY_RULE_SETUP
#line 398 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
YY_BREAK
case 185:
YY_RULE_SETUP
-#line 400 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 399 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
YY_BREAK
case 186:
YY_RULE_SETUP
-#line 401 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+#line 400 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
YY_BREAK
case 187:
YY_RULE_SETUP
-#line 402 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+#line 401 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
YY_BREAK
case 188:
YY_RULE_SETUP
#line 403 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
YY_BREAK
case 189:
YY_RULE_SETUP
#line 404 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
YY_BREAK
case 190:
YY_RULE_SETUP
#line 405 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_IDENTITY) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
YY_BREAK
case 191:
YY_RULE_SETUP
#line 406 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
YY_BREAK
case 192:
YY_RULE_SETUP
#line 407 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
YY_BREAK
case 193:
YY_RULE_SETUP
#line 408 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_REPLIES) }
+{ YDVAR(1, VAR_LOG_IDENTITY) }
YY_BREAK
case 194:
YY_RULE_SETUP
#line 409 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
YY_BREAK
case 195:
YY_RULE_SETUP
#line 410 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
YY_BREAK
case 196:
YY_RULE_SETUP
#line 411 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_SERVFAIL) }
+{ YDVAR(1, VAR_LOG_REPLIES) }
YY_BREAK
case 197:
YY_RULE_SETUP
#line 412 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) }
YY_BREAK
case 198:
YY_RULE_SETUP
#line 413 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) }
YY_BREAK
case 199:
YY_RULE_SETUP
#line 414 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOG_SERVFAIL) }
YY_BREAK
case 200:
YY_RULE_SETUP
#line 415 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
YY_BREAK
case 201:
YY_RULE_SETUP
#line 416 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
YY_BREAK
case 202:
YY_RULE_SETUP
#line 417 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
YY_BREAK
case 203:
YY_RULE_SETUP
#line 418 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
YY_BREAK
case 204:
YY_RULE_SETUP
#line 419 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
YY_BREAK
case 205:
YY_RULE_SETUP
#line 420 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_ENABLE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
YY_BREAK
case 206:
YY_RULE_SETUP
#line 421 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_KEY) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
YY_BREAK
case 207:
YY_RULE_SETUP
#line 422 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
YY_BREAK
case 208:
YY_RULE_SETUP
#line 423 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(1, VAR_SHM_ENABLE) }
YY_BREAK
case 209:
YY_RULE_SETUP
#line 424 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_SHM_KEY) }
YY_BREAK
case 210:
YY_RULE_SETUP
#line 425 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
YY_BREAK
case 211:
YY_RULE_SETUP
#line 426 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
YY_BREAK
case 212:
YY_RULE_SETUP
#line 427 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
YY_BREAK
case 213:
YY_RULE_SETUP
#line 428 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
YY_BREAK
case 214:
YY_RULE_SETUP
#line 429 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
YY_BREAK
case 215:
YY_RULE_SETUP
#line 430 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
YY_BREAK
case 216:
YY_RULE_SETUP
#line 431 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
YY_BREAK
case 217:
YY_RULE_SETUP
#line 432 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
YY_BREAK
case 218:
YY_RULE_SETUP
#line 433 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DYNLIB_FILE) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
YY_BREAK
case 219:
YY_RULE_SETUP
#line 434 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_DYNLIB) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
YY_BREAK
case 220:
YY_RULE_SETUP
#line 435 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
YY_BREAK
case 221:
YY_RULE_SETUP
#line 436 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DYNLIB_FILE) }
YY_BREAK
case 222:
YY_RULE_SETUP
#line 437 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(0, VAR_DYNLIB) }
YY_BREAK
case 223:
YY_RULE_SETUP
#line 438 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
YY_BREAK
case 224:
YY_RULE_SETUP
#line 439 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
YY_BREAK
case 225:
YY_RULE_SETUP
#line 440 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
YY_BREAK
case 226:
YY_RULE_SETUP
#line 441 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) }
YY_BREAK
case 227:
YY_RULE_SETUP
#line 442 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
YY_BREAK
case 228:
YY_RULE_SETUP
#line 443 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DEFINE_TAG) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
YY_BREAK
case 229:
YY_RULE_SETUP
#line 444 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
YY_BREAK
case 230:
YY_RULE_SETUP
#line 445 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
+{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) }
YY_BREAK
case 231:
YY_RULE_SETUP
#line 446 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
+{ YDVAR(1, VAR_DEFINE_TAG) }
YY_BREAK
case 232:
YY_RULE_SETUP
#line 447 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
YY_BREAK
case 233:
YY_RULE_SETUP
#line 448 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
YY_BREAK
case 234:
YY_RULE_SETUP
#line 449 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
YY_BREAK
case 235:
YY_RULE_SETUP
#line 450 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
YY_BREAK
case 236:
YY_RULE_SETUP
#line 451 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
YY_BREAK
case 237:
YY_RULE_SETUP
#line 452 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) }
+{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
YY_BREAK
case 238:
YY_RULE_SETUP
#line 453 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(0, VAR_DNSTAP) }
YY_BREAK
case 239:
YY_RULE_SETUP
#line 454 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IP) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
YY_BREAK
case 240:
YY_RULE_SETUP
#line 455 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS) }
+{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) }
YY_BREAK
case 241:
YY_RULE_SETUP
#line 456 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
YY_BREAK
case 242:
YY_RULE_SETUP
#line 457 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) }
+{ YDVAR(1, VAR_DNSTAP_IP) }
YY_BREAK
case 243:
YY_RULE_SETUP
#line 458 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) }
+{ YDVAR(1, VAR_DNSTAP_TLS) }
YY_BREAK
case 244:
YY_RULE_SETUP
-#line 460 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) }
+#line 459 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) }
YY_BREAK
case 245:
YY_RULE_SETUP
-#line 462 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+#line 460 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) }
YY_BREAK
case 246:
YY_RULE_SETUP
-#line 463 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+#line 461 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) }
YY_BREAK
case 247:
YY_RULE_SETUP
-#line 464 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+#line 463 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) }
YY_BREAK
case 248:
YY_RULE_SETUP
#line 465 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
YY_BREAK
case 249:
YY_RULE_SETUP
#line 466 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
YY_BREAK
case 250:
YY_RULE_SETUP
-#line 468 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+#line 467 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
YY_BREAK
case 251:
YY_RULE_SETUP
-#line 470 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+#line 468 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
YY_BREAK
case 252:
YY_RULE_SETUP
-#line 472 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 469 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
- YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+ YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
YY_BREAK
case 253:
YY_RULE_SETUP
-#line 474 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 471 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
- YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+ YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
YY_BREAK
case 254:
YY_RULE_SETUP
-#line 476 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 473 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
- YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+ YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
YY_BREAK
case 255:
YY_RULE_SETUP
-#line 478 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
+#line 475 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
YY_BREAK
case 256:
YY_RULE_SETUP
-#line 479 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT) }
+#line 477 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
YY_BREAK
case 257:
YY_RULE_SETUP
-#line 480 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+#line 479 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
YY_BREAK
case 258:
YY_RULE_SETUP
#line 481 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
YY_BREAK
case 259:
YY_RULE_SETUP
#line 482 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_IP_RATELIMIT) }
YY_BREAK
case 260:
YY_RULE_SETUP
#line 483 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_RATELIMIT) }
YY_BREAK
case 261:
YY_RULE_SETUP
#line 484 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
YY_BREAK
case 262:
YY_RULE_SETUP
#line 485 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
YY_BREAK
case 263:
YY_RULE_SETUP
#line 486 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
YY_BREAK
case 264:
YY_RULE_SETUP
#line 487 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
YY_BREAK
case 265:
YY_RULE_SETUP
#line 488 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
YY_BREAK
case 266:
YY_RULE_SETUP
#line 489 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOW_RTT) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
YY_BREAK
case 267:
YY_RULE_SETUP
#line 490 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_NUM) }
+{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
YY_BREAK
case 268:
YY_RULE_SETUP
#line 491 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
YY_BREAK
case 269:
YY_RULE_SETUP
#line 492 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_LOW_RTT) }
YY_BREAK
case 270:
YY_RULE_SETUP
#line 493 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_FAST_SERVER_NUM) }
YY_BREAK
case 271:
YY_RULE_SETUP
#line 494 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
YY_BREAK
case 272:
YY_RULE_SETUP
#line 495 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
YY_BREAK
case 273:
YY_RULE_SETUP
#line 496 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
YY_BREAK
case 274:
YY_RULE_SETUP
#line 497 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_DNSCRYPT) }
+{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
YY_BREAK
case 275:
YY_RULE_SETUP
#line 498 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
+{ YDVAR(2, VAR_RESPONSE_IP) }
YY_BREAK
case 276:
YY_RULE_SETUP
#line 499 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PORT) }
+{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
YY_BREAK
case 277:
YY_RULE_SETUP
#line 500 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
+{ YDVAR(0, VAR_DNSCRYPT) }
YY_BREAK
case 278:
YY_RULE_SETUP
#line 501 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
+{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
YY_BREAK
case 279:
YY_RULE_SETUP
#line 502 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
+{ YDVAR(1, VAR_DNSCRYPT_PORT) }
YY_BREAK
case 280:
YY_RULE_SETUP
#line 503 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
YY_BREAK
case 281:
YY_RULE_SETUP
#line 504 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
+{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
YY_BREAK
case 282:
YY_RULE_SETUP
-#line 506 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
+#line 505 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
YY_BREAK
case 283:
YY_RULE_SETUP
-#line 508 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
+#line 506 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
YY_BREAK
case 284:
YY_RULE_SETUP
-#line 509 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
+#line 507 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
YY_BREAK
case 285:
YY_RULE_SETUP
-#line 510 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
+#line 509 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
YY_BREAK
case 286:
YY_RULE_SETUP
#line 511 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
YY_BREAK
case 287:
YY_RULE_SETUP
#line 512 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_HOOK) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
YY_BREAK
case 288:
YY_RULE_SETUP
#line 513 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
+{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
YY_BREAK
case 289:
YY_RULE_SETUP
#line 514 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
YY_BREAK
case 290:
YY_RULE_SETUP
#line 515 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_IPSECMOD_HOOK) }
YY_BREAK
case 291:
YY_RULE_SETUP
#line 516 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_STRICT) }
+{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
YY_BREAK
case 292:
YY_RULE_SETUP
#line 517 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_CACHEDB) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
YY_BREAK
case 293:
YY_RULE_SETUP
#line 518 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_BACKEND) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
YY_BREAK
case 294:
YY_RULE_SETUP
#line 519 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
+{ YDVAR(1, VAR_IPSECMOD_STRICT) }
YY_BREAK
case 295:
YY_RULE_SETUP
#line 520 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
+{ YDVAR(0, VAR_CACHEDB) }
YY_BREAK
case 296:
YY_RULE_SETUP
#line 521 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
+{ YDVAR(1, VAR_CACHEDB_BACKEND) }
YY_BREAK
case 297:
YY_RULE_SETUP
#line 522 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
+{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
YY_BREAK
case 298:
YY_RULE_SETUP
#line 523 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
+{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
YY_BREAK
case 299:
YY_RULE_SETUP
#line 524 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_IPSET) }
+{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
YY_BREAK
case 300:
YY_RULE_SETUP
#line 525 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V4) }
+{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
YY_BREAK
case 301:
YY_RULE_SETUP
#line 526 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V6) }
+{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
YY_BREAK
case 302:
YY_RULE_SETUP
#line 527 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
+{ YDVAR(0, VAR_IPSET) }
YY_BREAK
case 303:
YY_RULE_SETUP
#line 528 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
+{ YDVAR(1, VAR_IPSET_NAME_V4) }
YY_BREAK
case 304:
YY_RULE_SETUP
#line 529 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_EDNS_CLIENT_TAG) }
+{ YDVAR(1, VAR_IPSET_NAME_V6) }
YY_BREAK
case 305:
YY_RULE_SETUP
#line 530 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) }
+{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
YY_BREAK
case 306:
-/* rule 306 can match eol */
YY_RULE_SETUP
#line 531 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++; }
+{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
YY_BREAK
-/* Quoted strings. Strip leading and ending quotes */
case 307:
YY_RULE_SETUP
+#line 532 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(2, VAR_EDNS_CLIENT_STRING) }
+ YY_BREAK
+case 308:
+YY_RULE_SETUP
+#line 533 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
+ YY_BREAK
+case 309:
+/* rule 309 can match eol */
+YY_RULE_SETUP
#line 534 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ LEXOUT(("NL\n")); cfg_parser->line++; }
+ YY_BREAK
+/* Quoted strings. Strip leading and ending quotes */
+case 310:
+YY_RULE_SETUP
+#line 537 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ BEGIN(quotedstring); LEXOUT(("QS ")); }
YY_BREAK
case YY_STATE_EOF(quotedstring):
-#line 535 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 538 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside quoted string");
if(--num_args == 0) { BEGIN(INITIAL); }
else { BEGIN(val); }
}
YY_BREAK
-case 308:
+case 311:
YY_RULE_SETUP
-#line 540 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 543 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
YY_BREAK
-case 309:
-/* rule 309 can match eol */
+case 312:
+/* rule 312 can match eol */
YY_RULE_SETUP
-#line 541 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 544 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ yyerror("newline inside quoted string, no end \"");
cfg_parser->line++; BEGIN(INITIAL); }
YY_BREAK
-case 310:
+case 313:
YY_RULE_SETUP
-#line 543 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 546 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("QE "));
if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5002,34 +5044,34 @@ YY_RULE_SETUP
}
YY_BREAK
/* Single Quoted strings. Strip leading and ending quotes */
-case 311:
+case 314:
YY_RULE_SETUP
-#line 555 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 558 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
YY_BREAK
case YY_STATE_EOF(singlequotedstr):
-#line 556 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 559 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside quoted string");
if(--num_args == 0) { BEGIN(INITIAL); }
else { BEGIN(val); }
}
YY_BREAK
-case 312:
+case 315:
YY_RULE_SETUP
-#line 561 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 564 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
YY_BREAK
-case 313:
-/* rule 313 can match eol */
+case 316:
+/* rule 316 can match eol */
YY_RULE_SETUP
-#line 562 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 565 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ yyerror("newline inside quoted string, no end '");
cfg_parser->line++; BEGIN(INITIAL); }
YY_BREAK
-case 314:
+case 317:
YY_RULE_SETUP
-#line 564 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 567 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("SQE "));
if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5042,38 +5084,38 @@ YY_RULE_SETUP
}
YY_BREAK
/* include: directive */
-case 315:
+case 318:
YY_RULE_SETUP
-#line 576 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 579 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
YY_BREAK
case YY_STATE_EOF(include):
-#line 578 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 581 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside include directive");
BEGIN(inc_prev);
}
YY_BREAK
-case 316:
+case 319:
YY_RULE_SETUP
-#line 582 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 585 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ISP ")); /* ignore */ }
YY_BREAK
-case 317:
-/* rule 317 can match eol */
+case 320:
+/* rule 320 can match eol */
YY_RULE_SETUP
-#line 583 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 586 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("NL\n")); cfg_parser->line++;}
YY_BREAK
-case 318:
+case 321:
YY_RULE_SETUP
-#line 584 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 587 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
YY_BREAK
-case 319:
+case 322:
YY_RULE_SETUP
-#line 585 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 588 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("Iunquotedstr(%s) ", yytext));
config_start_include_glob(yytext, 0);
@@ -5081,27 +5123,27 @@ YY_RULE_SETUP
}
YY_BREAK
case YY_STATE_EOF(include_quoted):
-#line 590 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 593 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside quoted string");
BEGIN(inc_prev);
}
YY_BREAK
-case 320:
+case 323:
YY_RULE_SETUP
-#line 594 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 597 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
YY_BREAK
-case 321:
-/* rule 321 can match eol */
+case 324:
+/* rule 324 can match eol */
YY_RULE_SETUP
-#line 595 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 598 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ yyerror("newline before \" in include name");
cfg_parser->line++; BEGIN(inc_prev); }
YY_BREAK
-case 322:
+case 325:
YY_RULE_SETUP
-#line 597 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 600 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("IQE "));
yytext[yyleng - 1] = '\0';
@@ -5111,7 +5153,7 @@ YY_RULE_SETUP
YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(val):
-#line 603 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 606 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("LEXEOF "));
yy_set_bol(1); /* Set beginning of line, so "^" rules match. */
@@ -5126,39 +5168,39 @@ case YY_STATE_EOF(val):
}
YY_BREAK
/* include-toplevel: directive */
-case 323:
+case 326:
YY_RULE_SETUP
-#line 617 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 620 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel);
}
YY_BREAK
case YY_STATE_EOF(include_toplevel):
-#line 620 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 623 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside include_toplevel directive");
BEGIN(inc_prev);
}
YY_BREAK
-case 324:
+case 327:
YY_RULE_SETUP
-#line 624 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 627 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ITSP ")); /* ignore */ }
YY_BREAK
-case 325:
-/* rule 325 can match eol */
+case 328:
+/* rule 328 can match eol */
YY_RULE_SETUP
-#line 625 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 628 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("NL\n")); cfg_parser->line++; }
YY_BREAK
-case 326:
+case 329:
YY_RULE_SETUP
-#line 626 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 629 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); }
YY_BREAK
-case 327:
+case 330:
YY_RULE_SETUP
-#line 627 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 630 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("ITunquotedstr(%s) ", yytext));
config_start_include_glob(yytext, 1);
@@ -5167,29 +5209,29 @@ YY_RULE_SETUP
}
YY_BREAK
case YY_STATE_EOF(include_toplevel_quoted):
-#line 633 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 636 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside quoted string");
BEGIN(inc_prev);
}
YY_BREAK
-case 328:
+case 331:
YY_RULE_SETUP
-#line 637 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 640 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); }
YY_BREAK
-case 329:
-/* rule 329 can match eol */
+case 332:
+/* rule 332 can match eol */
YY_RULE_SETUP
-#line 638 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 641 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("newline before \" in include name");
cfg_parser->line++; BEGIN(inc_prev);
}
YY_BREAK
-case 330:
+case 333:
YY_RULE_SETUP
-#line 642 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 645 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("ITQE "));
yytext[yyleng - 1] = '\0';
@@ -5198,33 +5240,33 @@ YY_RULE_SETUP
return (VAR_FORCE_TOPLEVEL);
}
YY_BREAK
-case 331:
+case 334:
YY_RULE_SETUP
-#line 650 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 653 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("unquotedstr(%s) ", yytext));
if(--num_args == 0) { BEGIN(INITIAL); }
yylval.str = strdup(yytext); return STRING_ARG; }
YY_BREAK
-case 332:
+case 335:
YY_RULE_SETUP
-#line 654 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 657 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
ub_c_error_msg("unknown keyword '%s'", yytext);
}
YY_BREAK
-case 333:
+case 336:
YY_RULE_SETUP
-#line 658 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 661 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
ub_c_error_msg("stray '%s'", yytext);
}
YY_BREAK
-case 334:
+case 337:
YY_RULE_SETUP
-#line 662 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 665 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
ECHO;
YY_BREAK
-#line 5226 "<stdout>"
+#line 5268 "<stdout>"
case YY_END_OF_BUFFER:
{
@@ -5517,7 +5559,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 >= 3253 )
+ if ( yy_current_state >= 3292 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -5545,11 +5587,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 >= 3253 )
+ if ( yy_current_state >= 3292 )
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 == 3252);
+ yy_is_jam = (yy_current_state == 3291);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -6182,7 +6224,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 662 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 665 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
diff --git a/sbin/unwind/libunbound/util/configlexer.lex b/sbin/unwind/libunbound/util/configlexer.lex
index ea7c1cf7273..55c584a76c1 100644
--- a/sbin/unwind/libunbound/util/configlexer.lex
+++ b/sbin/unwind/libunbound/util/configlexer.lex
@@ -262,6 +262,7 @@ http-max-streams{COLON} { YDVAR(1, VAR_HTTP_MAX_STREAMS) }
http-query-buffer-size{COLON} { YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) }
http-response-buffer-size{COLON} { YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) }
http-nodelay{COLON} { YDVAR(1, VAR_HTTP_NODELAY) }
+http-notls-downstream{COLON} { YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) }
use-systemd{COLON} { YDVAR(1, VAR_USE_SYSTEMD) }
do-daemonize{COLON} { YDVAR(1, VAR_DO_DAEMONIZE) }
interface{COLON} { YDVAR(1, VAR_INTERFACE) }
@@ -296,9 +297,11 @@ infra-cache-slabs{COLON} { YDVAR(1, VAR_INFRA_CACHE_SLABS) }
infra-cache-numhosts{COLON} { YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
infra-cache-lame-size{COLON} { YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
infra-cache-min-rtt{COLON} { YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
+infra-keep-probing{COLON} { YDVAR(1, VAR_INFRA_KEEP_PROBING) }
num-queries-per-thread{COLON} { YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
jostle-timeout{COLON} { YDVAR(1, VAR_JOSTLE_TIMEOUT) }
delay-close{COLON} { YDVAR(1, VAR_DELAY_CLOSE) }
+udp-connect{COLON} { YDVAR(1, VAR_UDP_CONNECT) }
target-fetch-policy{COLON} { YDVAR(1, VAR_TARGET_FETCH_POLICY) }
harden-short-bufsize{COLON} { YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
harden-large-queries{COLON} { YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
@@ -526,8 +529,8 @@ name-v4{COLON} { YDVAR(1, VAR_IPSET_NAME_V4) }
name-v6{COLON} { YDVAR(1, VAR_IPSET_NAME_V6) }
udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
-edns-client-tag{COLON} { YDVAR(2, VAR_EDNS_CLIENT_TAG) }
-edns-client-tag-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) }
+edns-client-string{COLON} { YDVAR(2, VAR_EDNS_CLIENT_STRING) }
+edns-client-string-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
<INITIAL,val>{NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; }
/* Quoted strings. Strip leading and ending quotes */
diff --git a/sbin/unwind/libunbound/util/configparser.h b/sbin/unwind/libunbound/util/configparser.h
index dc497eb2ae0..848b093ae39 100644
--- a/sbin/unwind/libunbound/util/configparser.h
+++ b/sbin/unwind/libunbound/util/configparser.h
@@ -143,158 +143,161 @@
#define VAR_HTTP_QUERY_BUFFER_SIZE 399
#define VAR_HTTP_RESPONSE_BUFFER_SIZE 400
#define VAR_HTTP_NODELAY 401
-#define VAR_STUB_FIRST 402
-#define VAR_MINIMAL_RESPONSES 403
-#define VAR_RRSET_ROUNDROBIN 404
-#define VAR_MAX_UDP_SIZE 405
-#define VAR_DELAY_CLOSE 406
-#define VAR_UNBLOCK_LAN_ZONES 407
-#define VAR_INSECURE_LAN_ZONES 408
-#define VAR_INFRA_CACHE_MIN_RTT 409
-#define VAR_DNS64_PREFIX 410
-#define VAR_DNS64_SYNTHALL 411
-#define VAR_DNS64_IGNORE_AAAA 412
-#define VAR_DNSTAP 413
-#define VAR_DNSTAP_ENABLE 414
-#define VAR_DNSTAP_SOCKET_PATH 415
-#define VAR_DNSTAP_IP 416
-#define VAR_DNSTAP_TLS 417
-#define VAR_DNSTAP_TLS_SERVER_NAME 418
-#define VAR_DNSTAP_TLS_CERT_BUNDLE 419
-#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 420
-#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 421
-#define VAR_DNSTAP_SEND_IDENTITY 422
-#define VAR_DNSTAP_SEND_VERSION 423
-#define VAR_DNSTAP_BIDIRECTIONAL 424
-#define VAR_DNSTAP_IDENTITY 425
-#define VAR_DNSTAP_VERSION 426
-#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 427
-#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 428
-#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 429
-#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 430
-#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 431
-#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 432
-#define VAR_RESPONSE_IP_TAG 433
-#define VAR_RESPONSE_IP 434
-#define VAR_RESPONSE_IP_DATA 435
-#define VAR_HARDEN_ALGO_DOWNGRADE 436
-#define VAR_IP_TRANSPARENT 437
-#define VAR_IP_DSCP 438
-#define VAR_DISABLE_DNSSEC_LAME_CHECK 439
-#define VAR_IP_RATELIMIT 440
-#define VAR_IP_RATELIMIT_SLABS 441
-#define VAR_IP_RATELIMIT_SIZE 442
-#define VAR_RATELIMIT 443
-#define VAR_RATELIMIT_SLABS 444
-#define VAR_RATELIMIT_SIZE 445
-#define VAR_RATELIMIT_FOR_DOMAIN 446
-#define VAR_RATELIMIT_BELOW_DOMAIN 447
-#define VAR_IP_RATELIMIT_FACTOR 448
-#define VAR_RATELIMIT_FACTOR 449
-#define VAR_SEND_CLIENT_SUBNET 450
-#define VAR_CLIENT_SUBNET_ZONE 451
-#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 452
-#define VAR_CLIENT_SUBNET_OPCODE 453
-#define VAR_MAX_CLIENT_SUBNET_IPV4 454
-#define VAR_MAX_CLIENT_SUBNET_IPV6 455
-#define VAR_MIN_CLIENT_SUBNET_IPV4 456
-#define VAR_MIN_CLIENT_SUBNET_IPV6 457
-#define VAR_MAX_ECS_TREE_SIZE_IPV4 458
-#define VAR_MAX_ECS_TREE_SIZE_IPV6 459
-#define VAR_CAPS_WHITELIST 460
-#define VAR_CACHE_MAX_NEGATIVE_TTL 461
-#define VAR_PERMIT_SMALL_HOLDDOWN 462
-#define VAR_QNAME_MINIMISATION 463
-#define VAR_QNAME_MINIMISATION_STRICT 464
-#define VAR_IP_FREEBIND 465
-#define VAR_DEFINE_TAG 466
-#define VAR_LOCAL_ZONE_TAG 467
-#define VAR_ACCESS_CONTROL_TAG 468
-#define VAR_LOCAL_ZONE_OVERRIDE 469
-#define VAR_ACCESS_CONTROL_TAG_ACTION 470
-#define VAR_ACCESS_CONTROL_TAG_DATA 471
-#define VAR_VIEW 472
-#define VAR_ACCESS_CONTROL_VIEW 473
-#define VAR_VIEW_FIRST 474
-#define VAR_SERVE_EXPIRED 475
-#define VAR_SERVE_EXPIRED_TTL 476
-#define VAR_SERVE_EXPIRED_TTL_RESET 477
-#define VAR_SERVE_EXPIRED_REPLY_TTL 478
-#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 479
-#define VAR_FAKE_DSA 480
-#define VAR_FAKE_SHA1 481
-#define VAR_LOG_IDENTITY 482
-#define VAR_HIDE_TRUSTANCHOR 483
-#define VAR_TRUST_ANCHOR_SIGNALING 484
-#define VAR_AGGRESSIVE_NSEC 485
-#define VAR_USE_SYSTEMD 486
-#define VAR_SHM_ENABLE 487
-#define VAR_SHM_KEY 488
-#define VAR_ROOT_KEY_SENTINEL 489
-#define VAR_DNSCRYPT 490
-#define VAR_DNSCRYPT_ENABLE 491
-#define VAR_DNSCRYPT_PORT 492
-#define VAR_DNSCRYPT_PROVIDER 493
-#define VAR_DNSCRYPT_SECRET_KEY 494
-#define VAR_DNSCRYPT_PROVIDER_CERT 495
-#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 496
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 497
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 498
-#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 499
-#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 500
-#define VAR_IPSECMOD_ENABLED 501
-#define VAR_IPSECMOD_HOOK 502
-#define VAR_IPSECMOD_IGNORE_BOGUS 503
-#define VAR_IPSECMOD_MAX_TTL 504
-#define VAR_IPSECMOD_WHITELIST 505
-#define VAR_IPSECMOD_STRICT 506
-#define VAR_CACHEDB 507
-#define VAR_CACHEDB_BACKEND 508
-#define VAR_CACHEDB_SECRETSEED 509
-#define VAR_CACHEDB_REDISHOST 510
-#define VAR_CACHEDB_REDISPORT 511
-#define VAR_CACHEDB_REDISTIMEOUT 512
-#define VAR_CACHEDB_REDISEXPIRERECORDS 513
-#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 514
-#define VAR_FOR_UPSTREAM 515
-#define VAR_AUTH_ZONE 516
-#define VAR_ZONEFILE 517
-#define VAR_MASTER 518
-#define VAR_URL 519
-#define VAR_FOR_DOWNSTREAM 520
-#define VAR_FALLBACK_ENABLED 521
-#define VAR_TLS_ADDITIONAL_PORT 522
-#define VAR_LOW_RTT 523
-#define VAR_LOW_RTT_PERMIL 524
-#define VAR_FAST_SERVER_PERMIL 525
-#define VAR_FAST_SERVER_NUM 526
-#define VAR_ALLOW_NOTIFY 527
-#define VAR_TLS_WIN_CERT 528
-#define VAR_TCP_CONNECTION_LIMIT 529
-#define VAR_FORWARD_NO_CACHE 530
-#define VAR_STUB_NO_CACHE 531
-#define VAR_LOG_SERVFAIL 532
-#define VAR_DENY_ANY 533
-#define VAR_UNKNOWN_SERVER_TIME_LIMIT 534
-#define VAR_LOG_TAG_QUERYREPLY 535
-#define VAR_STREAM_WAIT_SIZE 536
-#define VAR_TLS_CIPHERS 537
-#define VAR_TLS_CIPHERSUITES 538
-#define VAR_TLS_USE_SNI 539
-#define VAR_IPSET 540
-#define VAR_IPSET_NAME_V4 541
-#define VAR_IPSET_NAME_V6 542
-#define VAR_TLS_SESSION_TICKET_KEYS 543
-#define VAR_RPZ 544
-#define VAR_TAGS 545
-#define VAR_RPZ_ACTION_OVERRIDE 546
-#define VAR_RPZ_CNAME_OVERRIDE 547
-#define VAR_RPZ_LOG 548
-#define VAR_RPZ_LOG_NAME 549
-#define VAR_DYNLIB 550
-#define VAR_DYNLIB_FILE 551
-#define VAR_EDNS_CLIENT_TAG 552
-#define VAR_EDNS_CLIENT_TAG_OPCODE 553
+#define VAR_HTTP_NOTLS_DOWNSTREAM 402
+#define VAR_STUB_FIRST 403
+#define VAR_MINIMAL_RESPONSES 404
+#define VAR_RRSET_ROUNDROBIN 405
+#define VAR_MAX_UDP_SIZE 406
+#define VAR_DELAY_CLOSE 407
+#define VAR_UDP_CONNECT 408
+#define VAR_UNBLOCK_LAN_ZONES 409
+#define VAR_INSECURE_LAN_ZONES 410
+#define VAR_INFRA_CACHE_MIN_RTT 411
+#define VAR_INFRA_KEEP_PROBING 412
+#define VAR_DNS64_PREFIX 413
+#define VAR_DNS64_SYNTHALL 414
+#define VAR_DNS64_IGNORE_AAAA 415
+#define VAR_DNSTAP 416
+#define VAR_DNSTAP_ENABLE 417
+#define VAR_DNSTAP_SOCKET_PATH 418
+#define VAR_DNSTAP_IP 419
+#define VAR_DNSTAP_TLS 420
+#define VAR_DNSTAP_TLS_SERVER_NAME 421
+#define VAR_DNSTAP_TLS_CERT_BUNDLE 422
+#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 423
+#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 424
+#define VAR_DNSTAP_SEND_IDENTITY 425
+#define VAR_DNSTAP_SEND_VERSION 426
+#define VAR_DNSTAP_BIDIRECTIONAL 427
+#define VAR_DNSTAP_IDENTITY 428
+#define VAR_DNSTAP_VERSION 429
+#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 430
+#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 431
+#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 432
+#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 433
+#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 434
+#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 435
+#define VAR_RESPONSE_IP_TAG 436
+#define VAR_RESPONSE_IP 437
+#define VAR_RESPONSE_IP_DATA 438
+#define VAR_HARDEN_ALGO_DOWNGRADE 439
+#define VAR_IP_TRANSPARENT 440
+#define VAR_IP_DSCP 441
+#define VAR_DISABLE_DNSSEC_LAME_CHECK 442
+#define VAR_IP_RATELIMIT 443
+#define VAR_IP_RATELIMIT_SLABS 444
+#define VAR_IP_RATELIMIT_SIZE 445
+#define VAR_RATELIMIT 446
+#define VAR_RATELIMIT_SLABS 447
+#define VAR_RATELIMIT_SIZE 448
+#define VAR_RATELIMIT_FOR_DOMAIN 449
+#define VAR_RATELIMIT_BELOW_DOMAIN 450
+#define VAR_IP_RATELIMIT_FACTOR 451
+#define VAR_RATELIMIT_FACTOR 452
+#define VAR_SEND_CLIENT_SUBNET 453
+#define VAR_CLIENT_SUBNET_ZONE 454
+#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 455
+#define VAR_CLIENT_SUBNET_OPCODE 456
+#define VAR_MAX_CLIENT_SUBNET_IPV4 457
+#define VAR_MAX_CLIENT_SUBNET_IPV6 458
+#define VAR_MIN_CLIENT_SUBNET_IPV4 459
+#define VAR_MIN_CLIENT_SUBNET_IPV6 460
+#define VAR_MAX_ECS_TREE_SIZE_IPV4 461
+#define VAR_MAX_ECS_TREE_SIZE_IPV6 462
+#define VAR_CAPS_WHITELIST 463
+#define VAR_CACHE_MAX_NEGATIVE_TTL 464
+#define VAR_PERMIT_SMALL_HOLDDOWN 465
+#define VAR_QNAME_MINIMISATION 466
+#define VAR_QNAME_MINIMISATION_STRICT 467
+#define VAR_IP_FREEBIND 468
+#define VAR_DEFINE_TAG 469
+#define VAR_LOCAL_ZONE_TAG 470
+#define VAR_ACCESS_CONTROL_TAG 471
+#define VAR_LOCAL_ZONE_OVERRIDE 472
+#define VAR_ACCESS_CONTROL_TAG_ACTION 473
+#define VAR_ACCESS_CONTROL_TAG_DATA 474
+#define VAR_VIEW 475
+#define VAR_ACCESS_CONTROL_VIEW 476
+#define VAR_VIEW_FIRST 477
+#define VAR_SERVE_EXPIRED 478
+#define VAR_SERVE_EXPIRED_TTL 479
+#define VAR_SERVE_EXPIRED_TTL_RESET 480
+#define VAR_SERVE_EXPIRED_REPLY_TTL 481
+#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 482
+#define VAR_FAKE_DSA 483
+#define VAR_FAKE_SHA1 484
+#define VAR_LOG_IDENTITY 485
+#define VAR_HIDE_TRUSTANCHOR 486
+#define VAR_TRUST_ANCHOR_SIGNALING 487
+#define VAR_AGGRESSIVE_NSEC 488
+#define VAR_USE_SYSTEMD 489
+#define VAR_SHM_ENABLE 490
+#define VAR_SHM_KEY 491
+#define VAR_ROOT_KEY_SENTINEL 492
+#define VAR_DNSCRYPT 493
+#define VAR_DNSCRYPT_ENABLE 494
+#define VAR_DNSCRYPT_PORT 495
+#define VAR_DNSCRYPT_PROVIDER 496
+#define VAR_DNSCRYPT_SECRET_KEY 497
+#define VAR_DNSCRYPT_PROVIDER_CERT 498
+#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 499
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 500
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 501
+#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 502
+#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 503
+#define VAR_IPSECMOD_ENABLED 504
+#define VAR_IPSECMOD_HOOK 505
+#define VAR_IPSECMOD_IGNORE_BOGUS 506
+#define VAR_IPSECMOD_MAX_TTL 507
+#define VAR_IPSECMOD_WHITELIST 508
+#define VAR_IPSECMOD_STRICT 509
+#define VAR_CACHEDB 510
+#define VAR_CACHEDB_BACKEND 511
+#define VAR_CACHEDB_SECRETSEED 512
+#define VAR_CACHEDB_REDISHOST 513
+#define VAR_CACHEDB_REDISPORT 514
+#define VAR_CACHEDB_REDISTIMEOUT 515
+#define VAR_CACHEDB_REDISEXPIRERECORDS 516
+#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 517
+#define VAR_FOR_UPSTREAM 518
+#define VAR_AUTH_ZONE 519
+#define VAR_ZONEFILE 520
+#define VAR_MASTER 521
+#define VAR_URL 522
+#define VAR_FOR_DOWNSTREAM 523
+#define VAR_FALLBACK_ENABLED 524
+#define VAR_TLS_ADDITIONAL_PORT 525
+#define VAR_LOW_RTT 526
+#define VAR_LOW_RTT_PERMIL 527
+#define VAR_FAST_SERVER_PERMIL 528
+#define VAR_FAST_SERVER_NUM 529
+#define VAR_ALLOW_NOTIFY 530
+#define VAR_TLS_WIN_CERT 531
+#define VAR_TCP_CONNECTION_LIMIT 532
+#define VAR_FORWARD_NO_CACHE 533
+#define VAR_STUB_NO_CACHE 534
+#define VAR_LOG_SERVFAIL 535
+#define VAR_DENY_ANY 536
+#define VAR_UNKNOWN_SERVER_TIME_LIMIT 537
+#define VAR_LOG_TAG_QUERYREPLY 538
+#define VAR_STREAM_WAIT_SIZE 539
+#define VAR_TLS_CIPHERS 540
+#define VAR_TLS_CIPHERSUITES 541
+#define VAR_TLS_USE_SNI 542
+#define VAR_IPSET 543
+#define VAR_IPSET_NAME_V4 544
+#define VAR_IPSET_NAME_V6 545
+#define VAR_TLS_SESSION_TICKET_KEYS 546
+#define VAR_RPZ 547
+#define VAR_TAGS 548
+#define VAR_RPZ_ACTION_OVERRIDE 549
+#define VAR_RPZ_CNAME_OVERRIDE 550
+#define VAR_RPZ_LOG 551
+#define VAR_RPZ_LOG_NAME 552
+#define VAR_DYNLIB 553
+#define VAR_DYNLIB_FILE 554
+#define VAR_EDNS_CLIENT_STRING 555
+#define VAR_EDNS_CLIENT_STRING_OPCODE 556
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union {
diff --git a/sbin/unwind/libunbound/util/configparser.y b/sbin/unwind/libunbound/util/configparser.y
index 43a886f2403..4d6b5e3fba3 100644
--- a/sbin/unwind/libunbound/util/configparser.y
+++ b/sbin/unwind/libunbound/util/configparser.y
@@ -114,11 +114,11 @@ extern struct config_parser_state* cfg_parser;
%token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE
%token VAR_HTTPS_PORT VAR_HTTP_ENDPOINT VAR_HTTP_MAX_STREAMS
%token VAR_HTTP_QUERY_BUFFER_SIZE VAR_HTTP_RESPONSE_BUFFER_SIZE
-%token VAR_HTTP_NODELAY
+%token VAR_HTTP_NODELAY VAR_HTTP_NOTLS_DOWNSTREAM
%token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN
-%token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE
+%token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE VAR_UDP_CONNECT
%token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES
-%token VAR_INFRA_CACHE_MIN_RTT
+%token VAR_INFRA_CACHE_MIN_RTT VAR_INFRA_KEEP_PROBING
%token VAR_DNS64_PREFIX VAR_DNS64_SYNTHALL VAR_DNS64_IGNORE_AAAA
%token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH VAR_DNSTAP_IP
%token VAR_DNSTAP_TLS VAR_DNSTAP_TLS_SERVER_NAME VAR_DNSTAP_TLS_CERT_BUNDLE
@@ -178,7 +178,8 @@ extern struct config_parser_state* cfg_parser;
%token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6
%token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE
%token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME
-%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_TAG VAR_EDNS_CLIENT_TAG_OPCODE
+%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING
+%token VAR_EDNS_CLIENT_STRING_OPCODE
%%
toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -249,14 +250,14 @@ content_server: server_num_threads | server_verbosity | server_port |
server_ssl_service_key | server_ssl_service_pem | server_ssl_port |
server_https_port | server_http_endpoint | server_http_max_streams |
server_http_query_buffer_size | server_http_response_buffer_size |
- server_http_nodelay |
+ server_http_nodelay | server_http_notls_downstream |
server_minimal_responses | server_rrset_roundrobin | server_max_udp_size |
- server_so_reuseport | server_delay_close |
+ server_so_reuseport | server_delay_close | server_udp_connect |
server_unblock_lan_zones | server_insecure_lan_zones |
server_dns64_prefix | server_dns64_synthall | server_dns64_ignore_aaaa |
server_infra_cache_min_rtt | server_harden_algo_downgrade |
server_ip_transparent | server_ip_ratelimit | server_ratelimit |
- server_ip_dscp |
+ server_ip_dscp | server_infra_keep_probing |
server_ip_ratelimit_slabs | server_ratelimit_slabs |
server_ip_ratelimit_size | server_ratelimit_size |
server_ratelimit_for_domain |
@@ -291,8 +292,8 @@ content_server: server_num_threads | server_verbosity | server_port |
server_unknown_server_time_limit | server_log_tag_queryreply |
server_stream_wait_size | server_tls_ciphers |
server_tls_ciphersuites | server_tls_session_ticket_keys |
- server_tls_use_sni | server_edns_client_tag |
- server_edns_client_tag_opcode
+ server_tls_use_sni | server_edns_client_string |
+ server_edns_client_string_opcode
;
stubstart: VAR_STUB_ZONE
{
@@ -982,6 +983,7 @@ server_https_port: VAR_HTTPS_PORT STRING_ARG
if(atoi($2) == 0)
yyerror("port number expected");
else cfg_parser->cfg->https_port = atoi($2);
+ free($2);
};
server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG
{
@@ -1030,6 +1032,14 @@ server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG
yyerror("expected yes or no.");
else cfg_parser->cfg->http_nodelay = (strcmp($2, "yes")==0);
free($2);
+ }
+server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG
+ {
+ OUTYY(("P(server_http_notls_downstream:%s)\n", $2));
+ if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+ yyerror("expected yes or no.");
+ else cfg_parser->cfg->http_notls_downstream = (strcmp($2, "yes")==0);
+ free($2);
};
server_use_systemd: VAR_USE_SYSTEMD STRING_ARG
{
@@ -1434,6 +1444,15 @@ server_delay_close: VAR_DELAY_CLOSE STRING_ARG
free($2);
}
;
+server_udp_connect: VAR_UDP_CONNECT STRING_ARG
+ {
+ OUTYY(("P(server_udp_connect:%s)\n", $2));
+ if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+ yyerror("expected yes or no.");
+ else cfg_parser->cfg->udp_connect = (strcmp($2, "yes")==0);
+ free($2);
+ }
+ ;
server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG
{
OUTYY(("P(server_unblock_lan_zones:%s)\n", $2));
@@ -1531,6 +1550,16 @@ server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG
free($2);
}
;
+server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG
+ {
+ OUTYY(("P(server_infra_keep_probing:%s)\n", $2));
+ if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+ yyerror("expected yes or no.");
+ else cfg_parser->cfg->infra_keep_probing =
+ (strcmp($2, "yes")==0);
+ free($2);
+ }
+ ;
server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG
{
OUTYY(("P(server_target_fetch_policy:%s)\n", $2));
@@ -2465,29 +2494,24 @@ server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG
#endif
}
;
-server_edns_client_tag: VAR_EDNS_CLIENT_TAG STRING_ARG STRING_ARG
+server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG
{
- int tag_data;
- OUTYY(("P(server_edns_client_tag:%s %s)\n", $2, $3));
- tag_data = atoi($3);
- if(tag_data > 65535 || tag_data < 0 ||
- (tag_data == 0 && (strlen($3) != 1 || $3[0] != '0')))
- yyerror("edns-client-tag data invalid, needs to be a "
- "number from 0 to 65535");
+ OUTYY(("P(server_edns_client_string:%s %s)\n", $2, $3));
if(!cfg_str2list_insert(
- &cfg_parser->cfg->edns_client_tags, $2, $3))
+ &cfg_parser->cfg->edns_client_strings, $2, $3))
fatal_exit("out of memory adding "
- "edns-client-tag");
+ "edns-client-string");
}
;
-server_edns_client_tag_opcode: VAR_EDNS_CLIENT_TAG_OPCODE STRING_ARG
+server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG
{
- OUTYY(("P(edns_client_tag_opcode:%s)\n", $2));
+ OUTYY(("P(edns_client_string_opcode:%s)\n", $2));
if(atoi($2) == 0 && strcmp($2, "0") != 0)
yyerror("option code expected");
else if(atoi($2) > 65535 || atoi($2) < 0)
yyerror("option code must be in interval [0, 65535]");
- else cfg_parser->cfg->edns_client_tag_opcode = atoi($2);
+ else cfg_parser->cfg->edns_client_string_opcode = atoi($2);
+ free($2);
}
;
diff --git a/sbin/unwind/libunbound/util/data/msgencode.c b/sbin/unwind/libunbound/util/data/msgencode.c
index be69f628a50..1746cfbb8fa 100644
--- a/sbin/unwind/libunbound/util/data/msgencode.c
+++ b/sbin/unwind/libunbound/util/data/msgencode.c
@@ -624,6 +624,9 @@ positive_answer(struct reply_info* rep, uint16_t qtype) {
for(i=0;i<rep->an_numrrsets; i++) {
if(ntohs(rep->rrsets[i]->rk.type) == qtype) {
+ /* for priming queries, type NS, include addresses */
+ if(qtype == LDNS_RR_TYPE_NS)
+ return 0;
/* in case it is a wildcard with DNSSEC, there will
* be NSEC/NSEC3 records in the authority section
* that we cannot remove */
diff --git a/sbin/unwind/libunbound/util/data/msgreply.h b/sbin/unwind/libunbound/util/data/msgreply.h
index 8d75f9b12f3..385780268a3 100644
--- a/sbin/unwind/libunbound/util/data/msgreply.h
+++ b/sbin/unwind/libunbound/util/data/msgreply.h
@@ -552,7 +552,7 @@ struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code);
* @param rep: Reply info. Could be NULL.
* @param rcode: return code.
* @param edns: edns data of the reply.
- * @param repinfo: comm_reply. NULL.
+ * @param repinfo: comm_reply. Reply information for a communication point.
* @param region: region to store data.
* @return false on failure (a callback function returned an error).
*/
diff --git a/sbin/unwind/libunbound/util/edns.c b/sbin/unwind/libunbound/util/edns.c
index c83a4a545fe..ddbb46e892c 100644
--- a/sbin/unwind/libunbound/util/edns.c
+++ b/sbin/unwind/libunbound/util/edns.c
@@ -48,81 +48,84 @@
#include "util/data/msgparse.h"
#include "util/data/msgreply.h"
-struct edns_tags* edns_tags_create(void)
+struct edns_strings* edns_strings_create(void)
{
- struct edns_tags* edns_tags = calloc(1, sizeof(struct edns_tags));
- if(!edns_tags)
+ struct edns_strings* edns_strings = calloc(1,
+ sizeof(struct edns_strings));
+ if(!edns_strings)
return NULL;
- if(!(edns_tags->region = regional_create())) {
- edns_tags_delete(edns_tags);
+ if(!(edns_strings->region = regional_create())) {
+ edns_strings_delete(edns_strings);
return NULL;
}
- return edns_tags;
+ return edns_strings;
}
-void edns_tags_delete(struct edns_tags* edns_tags)
+void edns_strings_delete(struct edns_strings* edns_strings)
{
- if(!edns_tags)
+ if(!edns_strings)
return;
- regional_destroy(edns_tags->region);
- free(edns_tags);
+ regional_destroy(edns_strings->region);
+ free(edns_strings);
}
static int
-edns_tags_client_insert(struct edns_tags* edns_tags,
+edns_strings_client_insert(struct edns_strings* edns_strings,
struct sockaddr_storage* addr, socklen_t addrlen, int net,
- uint16_t tag_data)
+ const char* string)
{
- struct edns_tag_addr* eta = regional_alloc_zero(edns_tags->region,
- sizeof(struct edns_tag_addr));
- if(!eta)
+ struct edns_string_addr* esa = regional_alloc_zero(edns_strings->region,
+ sizeof(struct edns_string_addr));
+ if(!esa)
return 0;
- eta->tag_data = tag_data;
- if(!addr_tree_insert(&edns_tags->client_tags, &eta->node, addr, addrlen,
- net)) {
- verbose(VERB_QUERY, "duplicate EDNS client tag ignored.");
+ esa->string_len = strlen(string);
+ esa->string = regional_alloc_init(edns_strings->region, string,
+ esa->string_len);
+ if(!esa->string)
+ return 0;
+ if(!addr_tree_insert(&edns_strings->client_strings, &esa->node, addr,
+ addrlen, net)) {
+ verbose(VERB_QUERY, "duplicate EDNS client string ignored.");
}
return 1;
}
-int edns_tags_apply_cfg(struct edns_tags* edns_tags,
+int edns_strings_apply_cfg(struct edns_strings* edns_strings,
struct config_file* config)
{
struct config_str2list* c;
- regional_free_all(edns_tags->region);
- addr_tree_init(&edns_tags->client_tags);
+ regional_free_all(edns_strings->region);
+ addr_tree_init(&edns_strings->client_strings);
- for(c=config->edns_client_tags; c; c=c->next) {
+ for(c=config->edns_client_strings; c; c=c->next) {
struct sockaddr_storage addr;
socklen_t addrlen;
int net;
- uint16_t tag_data;
log_assert(c->str && c->str2);
if(!netblockstrtoaddr(c->str, UNBOUND_DNS_PORT, &addr, &addrlen,
&net)) {
- log_err("cannot parse EDNS client tag IP netblock: %s",
- c->str);
+ log_err("cannot parse EDNS client string IP netblock: "
+ "%s", c->str);
return 0;
}
- tag_data = atoi(c->str2); /* validated in config parser */
- if(!edns_tags_client_insert(edns_tags, &addr, addrlen, net,
- tag_data)) {
- log_err("out of memory while adding EDNS tags");
+ if(!edns_strings_client_insert(edns_strings, &addr, addrlen,
+ net, c->str2)) {
+ log_err("out of memory while adding EDNS strings");
return 0;
}
}
- edns_tags->client_tag_opcode = config->edns_client_tag_opcode;
+ edns_strings->client_string_opcode = config->edns_client_string_opcode;
- addr_tree_init_parents(&edns_tags->client_tags);
+ addr_tree_init_parents(&edns_strings->client_strings);
return 1;
}
-struct edns_tag_addr*
-edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr,
+struct edns_string_addr*
+edns_string_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr,
socklen_t addrlen)
{
- return (struct edns_tag_addr*)addr_tree_lookup(tree, addr, addrlen);
+ return (struct edns_string_addr*)addr_tree_lookup(tree, addr, addrlen);
}
static int edns_keepalive(struct edns_data* edns_out, struct edns_data* edns_in,
diff --git a/sbin/unwind/libunbound/util/edns.h b/sbin/unwind/libunbound/util/edns.h
index cf9f8707e80..11742eb5b72 100644
--- a/sbin/unwind/libunbound/util/edns.h
+++ b/sbin/unwind/libunbound/util/edns.h
@@ -50,58 +50,60 @@ struct comm_point;
struct regional;
/**
- * Structure containing all EDNS tags.
+ * Structure containing all EDNS strings.
*/
-struct edns_tags {
- /** Tree of EDNS client tags to use in upstream queries, per address
- * prefix. Contains nodes of type edns_tag_addr. */
- rbtree_type client_tags;
- /** EDNS opcode to use for client tags */
- uint16_t client_tag_opcode;
+struct edns_strings {
+ /** Tree of EDNS client strings to use in upstream queries, per address
+ * prefix. Contains nodes of type edns_string_addr. */
+ rbtree_type client_strings;
+ /** EDNS opcode to use for client strings */
+ uint16_t client_string_opcode;
/** region to allocate tree nodes in */
struct regional* region;
};
/**
- * EDNS tag. Node of rbtree, containing tag and prefix.
+ * EDNS string. Node of rbtree, containing string and prefix.
*/
-struct edns_tag_addr {
+struct edns_string_addr {
/** node in address tree, used for tree lookups. Need to be the first
* member of this struct. */
struct addr_tree_node node;
- /** tag data, in host byte ordering */
- uint16_t tag_data;
+ /** string, ascii format */
+ uint8_t* string;
+ /** length of string */
+ size_t string_len;
};
/**
- * Create structure to hold EDNS tags
- * @return: newly created edns_tags, NULL on alloc failure.
+ * Create structure to hold EDNS strings
+ * @return: newly created edns_strings, NULL on alloc failure.
*/
-struct edns_tags* edns_tags_create(void);
+struct edns_strings* edns_strings_create(void);
-/** Delete EDNS tags structure
- * @param edns_tags: struct to delete
+/** Delete EDNS strings structure
+ * @param edns_strings: struct to delete
*/
-void edns_tags_delete(struct edns_tags* edns_tags);
+void edns_strings_delete(struct edns_strings* edns_strings);
/**
- * Add configured EDNS tags
- * @param edns_tags: edns tags to apply config to
- * @param config: struct containing EDNS tags configuration
+ * Add configured EDNS strings
+ * @param edns_strings: edns strings to apply config to
+ * @param config: struct containing EDNS strings configuration
* @return 0 on error
*/
-int edns_tags_apply_cfg(struct edns_tags* edns_tags,
+int edns_strings_apply_cfg(struct edns_strings* edns_strings,
struct config_file* config);
/**
- * Find tag for address.
- * @param tree: tree containing EDNS tags per address prefix.
+ * Find string for address.
+ * @param tree: tree containing EDNS strings per address prefix.
* @param addr: address to use for tree lookup
* @param addrlen: length of address
* @return: matching tree node, NULL otherwise
*/
-struct edns_tag_addr*
-edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr,
+struct edns_string_addr*
+edns_string_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr,
socklen_t addrlen);
/**
diff --git a/sbin/unwind/libunbound/util/fptr_wlist.c b/sbin/unwind/libunbound/util/fptr_wlist.c
index 7d15d107561..a9e9d3a0323 100644
--- a/sbin/unwind/libunbound/util/fptr_wlist.c
+++ b/sbin/unwind/libunbound/util/fptr_wlist.c
@@ -229,6 +229,8 @@ fptr_whitelist_rbtree_cmp(int (*fptr) (const void *, const void *))
else if(fptr == &fwd_cmp) return 1;
else if(fptr == &pending_cmp) return 1;
else if(fptr == &serviced_cmp) return 1;
+ else if(fptr == &reuse_cmp) return 1;
+ else if(fptr == &reuse_id_cmp) return 1;
else if(fptr == &name_tree_compare) return 1;
else if(fptr == &order_lock_cmp) return 1;
else if(fptr == &codeline_cmp) return 1;
diff --git a/sbin/unwind/libunbound/util/iana_ports.inc b/sbin/unwind/libunbound/util/iana_ports.inc
index fa25869d3b5..d9978f92eda 100644
--- a/sbin/unwind/libunbound/util/iana_ports.inc
+++ b/sbin/unwind/libunbound/util/iana_ports.inc
@@ -5290,6 +5290,7 @@
22005,
22273,
22305,
+22333,
22335,
22343,
22347,
diff --git a/sbin/unwind/libunbound/util/module.h b/sbin/unwind/libunbound/util/module.h
index 1eed213008c..7b833f8ade1 100644
--- a/sbin/unwind/libunbound/util/module.h
+++ b/sbin/unwind/libunbound/util/module.h
@@ -520,8 +520,8 @@ struct module_env {
struct edns_known_option* edns_known_options;
/* Number of known edns options */
size_t edns_known_options_num;
- /** EDNS client tag information */
- struct edns_tags* edns_tags;
+ /** EDNS client string information */
+ struct edns_strings* edns_strings;
/* Make every mesh state unique, do not aggregate mesh states. */
int unique_mesh;
diff --git a/sbin/unwind/libunbound/util/netevent.c b/sbin/unwind/libunbound/util/netevent.c
index 1a190b37e71..8bbad15920a 100644
--- a/sbin/unwind/libunbound/util/netevent.c
+++ b/sbin/unwind/libunbound/util/netevent.c
@@ -341,10 +341,15 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet,
if(sldns_buffer_remaining(packet) == 0)
log_err("error: send empty UDP packet");
#endif
- log_assert(addr && addrlen > 0);
- sent = sendto(c->fd, (void*)sldns_buffer_begin(packet),
- sldns_buffer_remaining(packet), 0,
- addr, addrlen);
+ if(addr) {
+ log_assert(addr && addrlen > 0);
+ sent = sendto(c->fd, (void*)sldns_buffer_begin(packet),
+ sldns_buffer_remaining(packet), 0,
+ addr, addrlen);
+ } else {
+ sent = send(c->fd, (void*)sldns_buffer_begin(packet),
+ sldns_buffer_remaining(packet), 0);
+ }
if(sent == -1) {
/* try again and block, waiting for IO to complete,
* we want to send the answer, and we will wait for
@@ -574,6 +579,32 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet,
#endif /* AF_INET6 && IPV6_PKTINFO && HAVE_SENDMSG */
}
+/** return true is UDP receive error needs to be logged */
+static int udp_recv_needs_log(int err)
+{
+ switch(err) {
+ case ECONNREFUSED:
+# ifdef ENETUNREACH
+ case ENETUNREACH:
+# endif
+# ifdef EHOSTDOWN
+ case EHOSTDOWN:
+# endif
+# ifdef EHOSTUNREACH
+ case EHOSTUNREACH:
+# endif
+# ifdef ENETDOWN
+ case ENETDOWN:
+# endif
+ if(verbosity >= VERB_ALGO)
+ return 1;
+ return 0;
+ default:
+ break;
+ }
+ return 1;
+}
+
void
comm_point_udp_ancil_callback(int fd, short event, void* arg)
{
@@ -616,7 +647,8 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg)
msg.msg_flags = 0;
rcv = recvmsg(fd, &msg, 0);
if(rcv == -1) {
- if(errno != EAGAIN && errno != EINTR) {
+ if(errno != EAGAIN && errno != EINTR
+ && udp_recv_needs_log(errno)) {
log_err("recvmsg failed: %s", strerror(errno));
}
return;
@@ -697,7 +729,8 @@ comm_point_udp_callback(int fd, short event, void* arg)
(struct sockaddr*)&rep.addr, &rep.addrlen);
if(rcv == -1) {
#ifndef USE_WINSOCK
- if(errno != EAGAIN && errno != EINTR)
+ if(errno != EAGAIN && errno != EINTR
+ && udp_recv_needs_log(errno))
log_err("recvfrom %d failed: %s",
fd, strerror(errno));
#else
@@ -965,6 +998,10 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg)
/* clear leftover flags from previous use, and then set the
* correct event base for the event structure for libevent */
ub_event_free(c_hdl->ev->ev);
+ if((c_hdl->type == comm_tcp && c_hdl->tcp_req_info) ||
+ c_hdl->type == comm_local || c_hdl->type == comm_raw)
+ c_hdl->tcp_do_toggle_rw = 0;
+ else c_hdl->tcp_do_toggle_rw = 1;
if(c_hdl->type == comm_http) {
#ifdef HAVE_NGHTTP2
@@ -978,6 +1015,10 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg)
log_warn("failed to submit http2 settings");
return;
}
+ if(!c->ssl) {
+ c_hdl->tcp_do_toggle_rw = 0;
+ c_hdl->use_h2 = 1;
+ }
#endif
c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1,
UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT,
@@ -1042,6 +1083,8 @@ reclaim_tcp_handler(struct comm_point* c)
comm_point_start_listening(c->tcp_parent, -1, -1);
}
}
+ c->tcp_more_read_again = NULL;
+ c->tcp_more_write_again = NULL;
}
/** do the callback when writing is done */
@@ -1049,16 +1092,27 @@ static void
tcp_callback_writer(struct comm_point* c)
{
log_assert(c->type == comm_tcp);
- sldns_buffer_clear(c->buffer);
+ if(!c->tcp_write_and_read) {
+ sldns_buffer_clear(c->buffer);
+ c->tcp_byte_count = 0;
+ }
if(c->tcp_do_toggle_rw)
c->tcp_is_reading = 1;
- c->tcp_byte_count = 0;
/* switch from listening(write) to listening(read) */
if(c->tcp_req_info) {
tcp_req_info_handle_writedone(c->tcp_req_info);
} else {
comm_point_stop_listening(c);
- comm_point_start_listening(c, -1, c->tcp_timeout_msec);
+ if(c->tcp_write_and_read) {
+ fptr_ok(fptr_whitelist_comm_point(c->callback));
+ if( (*c->callback)(c, c->cb_arg, NETEVENT_PKT_WRITTEN,
+ &c->repinfo) ) {
+ comm_point_start_listening(c, -1,
+ c->tcp_timeout_msec);
+ }
+ } else {
+ comm_point_start_listening(c, -1, c->tcp_timeout_msec);
+ }
}
}
@@ -1361,10 +1415,28 @@ ssl_handle_write(struct comm_point* c)
}
/* ignore return, if fails we may simply block */
(void)SSL_set_mode(c->ssl, (long)SSL_MODE_ENABLE_PARTIAL_WRITE);
- if(c->tcp_byte_count < sizeof(uint16_t)) {
- uint16_t len = htons(sldns_buffer_limit(c->buffer));
+ if((c->tcp_write_and_read?c->tcp_write_byte_count:c->tcp_byte_count) < sizeof(uint16_t)) {
+ uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(c->buffer));
ERR_clear_error();
- if(sizeof(uint16_t)+sldns_buffer_remaining(c->buffer) <
+ if(c->tcp_write_and_read) {
+ if(c->tcp_write_pkt_len + 2 < LDNS_RR_BUF_SIZE) {
+ /* combine the tcp length and the query for
+ * write, this emulates writev */
+ uint8_t buf[LDNS_RR_BUF_SIZE];
+ memmove(buf, &len, sizeof(uint16_t));
+ memmove(buf+sizeof(uint16_t),
+ c->tcp_write_pkt,
+ c->tcp_write_pkt_len);
+ r = SSL_write(c->ssl,
+ (void*)(buf+c->tcp_write_byte_count),
+ c->tcp_write_pkt_len + 2 -
+ c->tcp_write_byte_count);
+ } else {
+ r = SSL_write(c->ssl,
+ (void*)(((uint8_t*)&len)+c->tcp_write_byte_count),
+ (int)(sizeof(uint16_t)-c->tcp_write_byte_count));
+ }
+ } else if(sizeof(uint16_t)+sldns_buffer_remaining(c->buffer) <
LDNS_RR_BUF_SIZE) {
/* combine the tcp length and the query for write,
* this emulates writev */
@@ -1406,20 +1478,32 @@ ssl_handle_write(struct comm_point* c)
log_crypto_err("could not SSL_write");
return 0;
}
- c->tcp_byte_count += r;
- if(c->tcp_byte_count < sizeof(uint16_t))
- return 1;
- sldns_buffer_set_position(c->buffer, c->tcp_byte_count -
- sizeof(uint16_t));
- if(sldns_buffer_remaining(c->buffer) == 0) {
+ if(c->tcp_write_and_read) {
+ c->tcp_write_byte_count += r;
+ if(c->tcp_write_byte_count < sizeof(uint16_t))
+ return 1;
+ } else {
+ c->tcp_byte_count += r;
+ if(c->tcp_byte_count < sizeof(uint16_t))
+ return 1;
+ sldns_buffer_set_position(c->buffer, c->tcp_byte_count -
+ sizeof(uint16_t));
+ }
+ if((!c->tcp_write_and_read && sldns_buffer_remaining(c->buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
tcp_callback_writer(c);
return 1;
}
}
- log_assert(sldns_buffer_remaining(c->buffer) > 0);
+ log_assert(c->tcp_write_and_read || sldns_buffer_remaining(c->buffer) > 0);
+ log_assert(!c->tcp_write_and_read || c->tcp_write_byte_count < c->tcp_write_pkt_len + 2);
ERR_clear_error();
- r = SSL_write(c->ssl, (void*)sldns_buffer_current(c->buffer),
- (int)sldns_buffer_remaining(c->buffer));
+ if(c->tcp_write_and_read) {
+ r = SSL_write(c->ssl, (void*)(c->tcp_write_pkt + c->tcp_write_byte_count - 2),
+ (int)(c->tcp_write_pkt_len + 2 - c->tcp_write_byte_count));
+ } else {
+ r = SSL_write(c->ssl, (void*)sldns_buffer_current(c->buffer),
+ (int)sldns_buffer_remaining(c->buffer));
+ }
if(r <= 0) {
int want = SSL_get_error(c->ssl, r);
if(want == SSL_ERROR_ZERO_RETURN) {
@@ -1444,9 +1528,13 @@ ssl_handle_write(struct comm_point* c)
log_crypto_err("could not SSL_write");
return 0;
}
- sldns_buffer_skip(c->buffer, (ssize_t)r);
+ if(c->tcp_write_and_read) {
+ c->tcp_write_byte_count += r;
+ } else {
+ sldns_buffer_skip(c->buffer, (ssize_t)r);
+ }
- if(sldns_buffer_remaining(c->buffer) == 0) {
+ if((!c->tcp_write_and_read && sldns_buffer_remaining(c->buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
tcp_callback_writer(c);
}
return 1;
@@ -1458,9 +1546,17 @@ ssl_handle_write(struct comm_point* c)
/** handle ssl tcp connection with dns contents */
static int
-ssl_handle_it(struct comm_point* c)
+ssl_handle_it(struct comm_point* c, int is_write)
{
- if(c->tcp_is_reading)
+ /* handle case where renegotiation wants read during write call
+ * or write during read calls */
+ if(is_write && c->ssl_shake_state == comm_ssl_shake_hs_write)
+ return ssl_handle_read(c);
+ else if(!is_write && c->ssl_shake_state == comm_ssl_shake_hs_read)
+ return ssl_handle_write(c);
+ /* handle read events for read operation and write events for a
+ * write operation */
+ else if(!is_write)
return ssl_handle_read(c);
return ssl_handle_write(c);
}
@@ -1477,8 +1573,8 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok)
ssize_t r;
log_assert(c->type == comm_tcp || c->type == comm_local);
if(c->ssl)
- return ssl_handle_it(c);
- if(!c->tcp_is_reading)
+ return ssl_handle_it(c, 0);
+ if(!c->tcp_is_reading && !c->tcp_write_and_read)
return 0;
log_assert(fd != -1);
@@ -1581,10 +1677,10 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c)
#else
buffer = c->buffer;
#endif
- if(c->tcp_is_reading && !c->ssl)
+ if(c->tcp_is_reading && !c->ssl && !c->tcp_write_and_read)
return 0;
log_assert(fd != -1);
- if(c->tcp_byte_count == 0 && c->tcp_check_nb_connect) {
+ if(((!c->tcp_write_and_read && c->tcp_byte_count == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == 0)) && c->tcp_check_nb_connect) {
/* check for pending error from nonblocking connect */
/* from Stevens, unix network programming, vol1, 3rd ed, p450*/
int error = 0;
@@ -1625,7 +1721,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c)
}
}
if(c->ssl)
- return ssl_handle_it(c);
+ return ssl_handle_it(c, 1);
#ifdef USE_MSG_FASTOPEN
/* Only try this on first use of a connection that uses tfo,
@@ -1634,15 +1730,22 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c)
if(c->tcp_do_fastopen == 1) {
/* this form of sendmsg() does both a connect() and send() so need to
look for various flavours of error*/
- uint16_t len = htons(sldns_buffer_limit(buffer));
+ uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(buffer));
struct msghdr msg;
struct iovec iov[2];
c->tcp_do_fastopen = 0;
memset(&msg, 0, sizeof(msg));
- iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count;
- iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count;
- iov[1].iov_base = sldns_buffer_begin(buffer);
- iov[1].iov_len = sldns_buffer_limit(buffer);
+ if(c->tcp_write_and_read) {
+ iov[0].iov_base = (uint8_t*)&len + c->tcp_write_byte_count;
+ iov[0].iov_len = sizeof(uint16_t) - c->tcp_write_byte_count;
+ iov[1].iov_base = c->tcp_write_pkt;
+ iov[1].iov_len = c->tcp_write_pkt_len;
+ } else {
+ iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count;
+ iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count;
+ iov[1].iov_base = sldns_buffer_begin(buffer);
+ iov[1].iov_len = sldns_buffer_limit(buffer);
+ }
log_assert(iov[0].iov_len > 0);
msg.msg_name = &c->repinfo.addr;
msg.msg_namelen = c->repinfo.addrlen;
@@ -1688,12 +1791,18 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c)
}
} else {
- c->tcp_byte_count += r;
- if(c->tcp_byte_count < sizeof(uint16_t))
- return 1;
- sldns_buffer_set_position(buffer, c->tcp_byte_count -
- sizeof(uint16_t));
- if(sldns_buffer_remaining(buffer) == 0) {
+ if(c->tcp_write_and_read) {
+ c->tcp_write_byte_count += r;
+ if(c->tcp_write_byte_count < sizeof(uint16_t))
+ return 1;
+ } else {
+ c->tcp_byte_count += r;
+ if(c->tcp_byte_count < sizeof(uint16_t))
+ return 1;
+ sldns_buffer_set_position(buffer, c->tcp_byte_count -
+ sizeof(uint16_t));
+ }
+ if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
tcp_callback_writer(c);
return 1;
}
@@ -1701,19 +1810,31 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c)
}
#endif /* USE_MSG_FASTOPEN */
- if(c->tcp_byte_count < sizeof(uint16_t)) {
- uint16_t len = htons(sldns_buffer_limit(buffer));
+ if((c->tcp_write_and_read?c->tcp_write_byte_count:c->tcp_byte_count) < sizeof(uint16_t)) {
+ uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(buffer));
#ifdef HAVE_WRITEV
struct iovec iov[2];
- iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count;
- iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count;
- iov[1].iov_base = sldns_buffer_begin(buffer);
- iov[1].iov_len = sldns_buffer_limit(buffer);
+ if(c->tcp_write_and_read) {
+ iov[0].iov_base = (uint8_t*)&len + c->tcp_write_byte_count;
+ iov[0].iov_len = sizeof(uint16_t) - c->tcp_write_byte_count;
+ iov[1].iov_base = c->tcp_write_pkt;
+ iov[1].iov_len = c->tcp_write_pkt_len;
+ } else {
+ iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count;
+ iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count;
+ iov[1].iov_base = sldns_buffer_begin(buffer);
+ iov[1].iov_len = sldns_buffer_limit(buffer);
+ }
log_assert(iov[0].iov_len > 0);
r = writev(fd, iov, 2);
#else /* HAVE_WRITEV */
- r = send(fd, (void*)(((uint8_t*)&len)+c->tcp_byte_count),
- sizeof(uint16_t)-c->tcp_byte_count, 0);
+ if(c->tcp_write_and_read) {
+ r = send(fd, (void*)(((uint8_t*)&len)+c->tcp_write_byte_count),
+ sizeof(uint16_t)-c->tcp_write_byte_count, 0);
+ } else {
+ r = send(fd, (void*)(((uint8_t*)&len)+c->tcp_byte_count),
+ sizeof(uint16_t)-c->tcp_byte_count, 0);
+ }
#endif /* HAVE_WRITEV */
if(r == -1) {
#ifndef USE_WINSOCK
@@ -1752,19 +1873,31 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c)
#endif
return 0;
}
- c->tcp_byte_count += r;
- if(c->tcp_byte_count < sizeof(uint16_t))
- return 1;
- sldns_buffer_set_position(buffer, c->tcp_byte_count -
- sizeof(uint16_t));
- if(sldns_buffer_remaining(buffer) == 0) {
+ if(c->tcp_write_and_read) {
+ c->tcp_write_byte_count += r;
+ if(c->tcp_write_byte_count < sizeof(uint16_t))
+ return 1;
+ } else {
+ c->tcp_byte_count += r;
+ if(c->tcp_byte_count < sizeof(uint16_t))
+ return 1;
+ sldns_buffer_set_position(buffer, c->tcp_byte_count -
+ sizeof(uint16_t));
+ }
+ if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
tcp_callback_writer(c);
return 1;
}
}
- log_assert(sldns_buffer_remaining(buffer) > 0);
- r = send(fd, (void*)sldns_buffer_current(buffer),
- sldns_buffer_remaining(buffer), 0);
+ log_assert(c->tcp_write_and_read || sldns_buffer_remaining(buffer) > 0);
+ log_assert(!c->tcp_write_and_read || c->tcp_write_byte_count < c->tcp_write_pkt_len + 2);
+ if(c->tcp_write_and_read) {
+ r = send(fd, (void*)c->tcp_write_pkt + c->tcp_write_byte_count - 2,
+ c->tcp_write_pkt_len + 2 - c->tcp_write_byte_count, 0);
+ } else {
+ r = send(fd, (void*)sldns_buffer_current(buffer),
+ sldns_buffer_remaining(buffer), 0);
+ }
if(r == -1) {
#ifndef USE_WINSOCK
if(errno == EINTR || errno == EAGAIN)
@@ -1787,9 +1920,13 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c)
&c->repinfo.addr, c->repinfo.addrlen);
return 0;
}
- sldns_buffer_skip(buffer, r);
+ if(c->tcp_write_and_read) {
+ c->tcp_write_byte_count += r;
+ } else {
+ sldns_buffer_skip(buffer, r);
+ }
- if(sldns_buffer_remaining(buffer) == 0) {
+ if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) {
tcp_callback_writer(c);
}
@@ -1819,6 +1956,54 @@ tcp_req_info_read_again(int fd, struct comm_point* c)
}
}
+/** read again to drain buffers when there could be more to read */
+static void
+tcp_more_read_again(int fd, struct comm_point* c)
+{
+ /* if the packet is done, but another one could be waiting on
+ * the connection, the callback signals this, and we try again */
+ /* this continues until the read routines get EAGAIN or so,
+ * and thus does not call the callback, and the bool is 0 */
+ int* moreread = c->tcp_more_read_again;
+ while(moreread && *moreread) {
+ *moreread = 0;
+ if(!comm_point_tcp_handle_read(fd, c, 0)) {
+ reclaim_tcp_handler(c);
+ if(!c->tcp_do_close) {
+ fptr_ok(fptr_whitelist_comm_point(
+ c->callback));
+ (void)(*c->callback)(c, c->cb_arg,
+ NETEVENT_CLOSED, NULL);
+ }
+ return;
+ }
+ }
+}
+
+/** write again to fill up when there could be more to write */
+static void
+tcp_more_write_again(int fd, struct comm_point* c)
+{
+ /* if the packet is done, but another is waiting to be written,
+ * the callback signals it and we try again. */
+ /* this continues until the write routines get EAGAIN or so,
+ * and thus does not call the callback, and the bool is 0 */
+ int* morewrite = c->tcp_more_write_again;
+ while(morewrite && *morewrite) {
+ *morewrite = 0;
+ if(!comm_point_tcp_handle_write(fd, c)) {
+ reclaim_tcp_handler(c);
+ if(!c->tcp_do_close) {
+ fptr_ok(fptr_whitelist_comm_point(
+ c->callback));
+ (void)(*c->callback)(c, c->cb_arg,
+ NETEVENT_CLOSED, NULL);
+ }
+ return;
+ }
+ }
+}
+
void
comm_point_tcp_handle_callback(int fd, short event, void* arg)
{
@@ -1839,7 +2024,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg)
if(!c->tcp_do_close) {
fptr_ok(fptr_whitelist_comm_point(
c->callback));
- (void)(*c->callback)(c, c->cb_arg,
+ (void)(*c->callback)(c, c->cb_arg,
NETEVENT_CLOSED, NULL);
}
return;
@@ -1857,34 +2042,46 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg)
}
return;
}
- if(event&UB_EV_READ) {
+ if(event&UB_EV_READ
+#ifdef USE_MSG_FASTOPEN
+ && !(c->tcp_do_fastopen && (event&UB_EV_WRITE))
+#endif
+ ) {
int has_tcpq = (c->tcp_req_info != NULL);
+ int* moreread = c->tcp_more_read_again;
if(!comm_point_tcp_handle_read(fd, c, 0)) {
reclaim_tcp_handler(c);
if(!c->tcp_do_close) {
fptr_ok(fptr_whitelist_comm_point(
c->callback));
- (void)(*c->callback)(c, c->cb_arg,
+ (void)(*c->callback)(c, c->cb_arg,
NETEVENT_CLOSED, NULL);
}
+ return;
}
if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again)
tcp_req_info_read_again(fd, c);
+ if(moreread && *moreread)
+ tcp_more_read_again(fd, c);
return;
}
if(event&UB_EV_WRITE) {
int has_tcpq = (c->tcp_req_info != NULL);
+ int* morewrite = c->tcp_more_write_again;
if(!comm_point_tcp_handle_write(fd, c)) {
reclaim_tcp_handler(c);
if(!c->tcp_do_close) {
fptr_ok(fptr_whitelist_comm_point(
c->callback));
- (void)(*c->callback)(c, c->cb_arg,
+ (void)(*c->callback)(c, c->cb_arg,
NETEVENT_CLOSED, NULL);
}
+ return;
}
if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again)
tcp_req_info_read_again(fd, c);
+ if(morewrite && *morewrite)
+ tcp_more_write_again(fd, c);
return;
}
log_err("Ignored event %d for tcphdl.", event);
@@ -2240,7 +2437,7 @@ http_chunked_segment(struct comm_point* c)
#ifdef HAVE_NGHTTP2
/** Create new http2 session. Called when creating handling comm point. */
-static struct http2_session* http2_session_create(struct comm_point* c)
+struct http2_session* http2_session_create(struct comm_point* c)
{
struct http2_session* session = calloc(1, sizeof(*session));
if(!session) {
@@ -2254,7 +2451,7 @@ static struct http2_session* http2_session_create(struct comm_point* c)
#endif
/** Delete http2 session. After closing connection or on error */
-static void http2_session_delete(struct http2_session* h2_session)
+void http2_session_delete(struct http2_session* h2_session)
{
#ifdef HAVE_NGHTTP2
if(h2_session->callbacks)
@@ -2330,7 +2527,7 @@ void http2_session_add_stream(struct http2_session* h2_session,
/** remove stream from session linked list. After stream close callback or
* closing connection */
-static void http2_session_remove_stream(struct http2_session* h2_session,
+void http2_session_remove_stream(struct http2_session* h2_session,
struct http2_stream* h2_stream)
{
if(h2_stream->prev)
@@ -2359,48 +2556,76 @@ int http2_stream_close_cb(nghttp2_session* ATTR_UNUSED(session),
ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), uint8_t* buf,
size_t len, int ATTR_UNUSED(flags), void* cb_arg)
{
-#ifdef HAVE_SSL
struct http2_session* h2_session = (struct http2_session*)cb_arg;
- int r;
+ ssize_t ret;
log_assert(h2_session->c->type == comm_http);
log_assert(h2_session->c->h2_session);
- if(!h2_session->c->ssl)
- return 0;
+#ifdef HAVE_SSL
+ if(h2_session->c->ssl) {
+ int r;
+ ERR_clear_error();
+ r = SSL_read(h2_session->c->ssl, buf, len);
+ if(r <= 0) {
+ int want = SSL_get_error(h2_session->c->ssl, r);
+ if(want == SSL_ERROR_ZERO_RETURN) {
+ return NGHTTP2_ERR_EOF;
+ } else if(want == SSL_ERROR_WANT_READ) {
+ return NGHTTP2_ERR_WOULDBLOCK;
+ } else if(want == SSL_ERROR_WANT_WRITE) {
+ h2_session->c->ssl_shake_state = comm_ssl_shake_hs_write;
+ comm_point_listen_for_rw(h2_session->c, 0, 1);
+ return NGHTTP2_ERR_WOULDBLOCK;
+ } else if(want == SSL_ERROR_SYSCALL) {
+#ifdef ECONNRESET
+ if(errno == ECONNRESET && verbosity < 2)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+#endif
+ if(errno != 0)
+ log_err("SSL_read syscall: %s",
+ strerror(errno));
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ }
+ log_crypto_err("could not SSL_read");
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ }
+ return r;
+ }
+#endif /* HAVE_SSL */
- ERR_clear_error();
- r = SSL_read(h2_session->c->ssl, buf, len);
- if(r <= 0) {
- int want = SSL_get_error(h2_session->c->ssl, r);
- if(want == SSL_ERROR_ZERO_RETURN) {
- return NGHTTP2_ERR_EOF;
- } else if(want == SSL_ERROR_WANT_READ) {
- return NGHTTP2_ERR_WOULDBLOCK;
- } else if(want == SSL_ERROR_WANT_WRITE) {
- h2_session->c->ssl_shake_state = comm_ssl_shake_hs_write;
- comm_point_listen_for_rw(h2_session->c, 0, 1);
+ ret = recv(h2_session->c->fd, buf, len, 0);
+ if(ret == 0) {
+ return NGHTTP2_ERR_EOF;
+ } else if(ret < 0) {
+#ifndef USE_WINSOCK
+ if(errno == EINTR || errno == EAGAIN)
return NGHTTP2_ERR_WOULDBLOCK;
- } else if(want == SSL_ERROR_SYSCALL) {
#ifdef ECONNRESET
- if(errno == ECONNRESET && verbosity < 2)
- return NGHTTP2_ERR_CALLBACK_FAILURE;
+ if(errno == ECONNRESET && verbosity < 2)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
#endif
- if(errno != 0)
- log_err("SSL_read syscall: %s",
- strerror(errno));
+ log_err_addr("could not http2 recv: %s", strerror(errno),
+ &h2_session->c->repinfo.addr,
+ h2_session->c->repinfo.addrlen);
+#else /* USE_WINSOCK */
+ if(WSAGetLastError() == WSAECONNRESET)
return NGHTTP2_ERR_CALLBACK_FAILURE;
+ if(WSAGetLastError() == WSAEINPROGRESS)
+ return NGHTTP2_ERR_WOULDBLOCK;
+ if(WSAGetLastError() == WSAEWOULDBLOCK) {
+ ub_winsock_tcp_wouldblock(h2_session->c->ev->ev,
+ UB_EV_READ);
+ return NGHTTP2_ERR_WOULDBLOCK;
}
- log_crypto_err("could not SSL_read");
+ log_err_addr("could not http2 recv: %s",
+ wsa_strerror(WSAGetLastError()),
+ &h2_session->c->repinfo.addr,
+ h2_session->c->repinfo.addrlen);
+#endif
return NGHTTP2_ERR_CALLBACK_FAILURE;
}
- return r;
-#else
- (void)buf;
- (void)len;
- (void)cb_arg;
- return -1;
-#endif
+ return ret;
}
#endif /* HAVE_NGHTTP2 */
@@ -2411,15 +2636,17 @@ comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point* c)
#ifdef HAVE_NGHTTP2
int ret;
log_assert(c->h2_session);
- log_assert(c->ssl);
/* reading until recv cb returns NGHTTP2_ERR_WOULDBLOCK */
ret = nghttp2_session_recv(c->h2_session->session);
if(ret) {
if(ret != NGHTTP2_ERR_EOF &&
ret != NGHTTP2_ERR_CALLBACK_FAILURE) {
- verbose(VERB_QUERY, "http2: session_recv failed, "
- "error: %s", nghttp2_strerror(ret));
+ char a[256];
+ addr_to_str(&c->repinfo.addr, c->repinfo.addrlen,
+ a, sizeof(a));
+ verbose(VERB_QUERY, "http2: session_recv from %s failed, "
+ "error: %s", a, nghttp2_strerror(ret));
}
return 0;
}
@@ -2648,47 +2875,81 @@ http_write_more(int fd, struct comm_point* c)
ssize_t http2_send_cb(nghttp2_session* ATTR_UNUSED(session), const uint8_t* buf,
size_t len, int ATTR_UNUSED(flags), void* cb_arg)
{
-#ifdef HAVE_SSL
- int r;
+ ssize_t ret;
struct http2_session* h2_session = (struct http2_session*)cb_arg;
log_assert(h2_session->c->type == comm_http);
log_assert(h2_session->c->h2_session);
- if(!h2_session->c->ssl)
- return 0;
-
- ERR_clear_error();
- r = SSL_write(h2_session->c->ssl, buf, len);
- if(r <= 0) {
- int want = SSL_get_error(h2_session->c->ssl, r);
- if(want == SSL_ERROR_ZERO_RETURN) {
+#ifdef HAVE_SSL
+ if(h2_session->c->ssl) {
+ int r;
+ ERR_clear_error();
+ r = SSL_write(h2_session->c->ssl, buf, len);
+ if(r <= 0) {
+ int want = SSL_get_error(h2_session->c->ssl, r);
+ if(want == SSL_ERROR_ZERO_RETURN) {
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ } else if(want == SSL_ERROR_WANT_READ) {
+ h2_session->c->ssl_shake_state = comm_ssl_shake_hs_read;
+ comm_point_listen_for_rw(h2_session->c, 1, 0);
+ return NGHTTP2_ERR_WOULDBLOCK;
+ } else if(want == SSL_ERROR_WANT_WRITE) {
+ return NGHTTP2_ERR_WOULDBLOCK;
+ } else if(want == SSL_ERROR_SYSCALL) {
+#ifdef EPIPE
+ if(errno == EPIPE && verbosity < 2)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+#endif
+ if(errno != 0)
+ log_err("SSL_write syscall: %s",
+ strerror(errno));
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ }
+ log_crypto_err("could not SSL_write");
return NGHTTP2_ERR_CALLBACK_FAILURE;
- } else if(want == SSL_ERROR_WANT_READ) {
- h2_session->c->ssl_shake_state = comm_ssl_shake_hs_read;
- comm_point_listen_for_rw(h2_session->c, 1, 0);
- return NGHTTP2_ERR_WOULDBLOCK;
- } else if(want == SSL_ERROR_WANT_WRITE) {
+ }
+ return r;
+ }
+#endif /* HAVE_SSL */
+
+ ret = send(h2_session->c->fd, buf, len, 0);
+ if(ret == 0) {
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ } else if(ret < 0) {
+#ifndef USE_WINSOCK
+ if(errno == EINTR || errno == EAGAIN)
return NGHTTP2_ERR_WOULDBLOCK;
- } else if(want == SSL_ERROR_SYSCALL) {
#ifdef EPIPE
- if(errno == EPIPE && verbosity < 2)
- return NGHTTP2_ERR_CALLBACK_FAILURE;
+ if(errno == EPIPE && verbosity < 2)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
#endif
- if(errno != 0)
- log_err("SSL_write syscall: %s",
- strerror(errno));
+#ifdef ECONNRESET
+ if(errno == ECONNRESET && verbosity < 2)
return NGHTTP2_ERR_CALLBACK_FAILURE;
+#endif
+ log_err_addr("could not http2 write: %s", strerror(errno),
+ &h2_session->c->repinfo.addr,
+ h2_session->c->repinfo.addrlen);
+#else /* USE_WINSOCK */
+ if(WSAGetLastError() == WSAENOTCONN)
+ return NGHTTP2_ERR_WOULDBLOCK;
+ if(WSAGetLastError() == WSAEINPROGRESS)
+ return NGHTTP2_ERR_WOULDBLOCK;
+ if(WSAGetLastError() == WSAEWOULDBLOCK) {
+ ub_winsock_tcp_wouldblock(h2_session->c->ev->ev,
+ UB_EV_WRITE);
+ return NGHTTP2_ERR_WOULDBLOCK;
}
- log_crypto_err("could not SSL_write");
+ if(WSAGetLastError() == WSAECONNRESET && verbosity < 2)
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ log_err_addr("could not http2 write: %s",
+ wsa_strerror(WSAGetLastError()),
+ &h2_session->c->repinfo.addr,
+ h2_session->c->repinfo.addrlen);
+#endif
return NGHTTP2_ERR_CALLBACK_FAILURE;
}
- return r;
-#else
- (void)buf;
- (void)len;
- (void)cb_arg;
- return -1;
-#endif
+ return ret;
}
#endif /* HAVE_NGHTTP2 */
@@ -2699,7 +2960,6 @@ comm_point_http2_handle_write(int ATTR_UNUSED(fd), struct comm_point* c)
#ifdef HAVE_NGHTTP2
int ret;
log_assert(c->h2_session);
- log_assert(c->ssl);
ret = nghttp2_session_send(c->h2_session->session);
if(ret) {
@@ -2811,7 +3071,7 @@ comm_point_http_handle_callback(int fd, short event, void* arg)
if(!c->tcp_do_close) {
fptr_ok(fptr_whitelist_comm_point(
c->callback));
- (void)(*c->callback)(c, c->cb_arg,
+ (void)(*c->callback)(c, c->cb_arg,
NETEVENT_CLOSED, NULL);
}
}
@@ -2823,7 +3083,7 @@ comm_point_http_handle_callback(int fd, short event, void* arg)
if(!c->tcp_do_close) {
fptr_ok(fptr_whitelist_comm_point(
c->callback));
- (void)(*c->callback)(c, c->cb_arg,
+ (void)(*c->callback)(c, c->cb_arg,
NETEVENT_CLOSED, NULL);
}
}
@@ -3555,6 +3815,7 @@ comm_point_close(struct comm_point* c)
if(!c)
return;
if(c->fd != -1) {
+ verbose(5, "comm_point_close of %d: event_del", c->fd);
if(ub_event_del(c->ev->ev) != 0) {
log_err("could not event_del on close");
}
@@ -3736,12 +3997,20 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec)
}
if(c->type == comm_tcp || c->type == comm_http) {
ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE);
- if(c->tcp_is_reading)
+ if(c->tcp_write_and_read) {
+ verbose(5, "startlistening %d mode rw", (newfd==-1?c->fd:newfd));
+ ub_event_add_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE);
+ } else if(c->tcp_is_reading) {
+ verbose(5, "startlistening %d mode r", (newfd==-1?c->fd:newfd));
ub_event_add_bits(c->ev->ev, UB_EV_READ);
- else ub_event_add_bits(c->ev->ev, UB_EV_WRITE);
+ } else {
+ verbose(5, "startlistening %d mode w", (newfd==-1?c->fd:newfd));
+ ub_event_add_bits(c->ev->ev, UB_EV_WRITE);
+ }
}
if(newfd != -1) {
- if(c->fd != -1) {
+ if(c->fd != -1 && c->fd != newfd) {
+ verbose(5, "cpsl close of fd %d for %d", c->fd, newfd);
sock_close(c->fd);
}
c->fd = newfd;
diff --git a/sbin/unwind/libunbound/util/netevent.h b/sbin/unwind/libunbound/util/netevent.h
index 6986f881b38..daa954b6492 100644
--- a/sbin/unwind/libunbound/util/netevent.h
+++ b/sbin/unwind/libunbound/util/netevent.h
@@ -95,6 +95,9 @@ typedef int comm_point_callback_type(struct comm_point*, void*, int,
#define NETEVENT_CAPSFAIL -3
/** to pass done transfer to callback function; http file is complete */
#define NETEVENT_DONE -4
+/** to pass write of the write packet is done to callback function
+ * used when tcp_write_and_read is enabled */
+#define NETEVENT_PKT_WRITTEN -5
/** timeout to slow accept calls when not possible, in msec. */
#define NETEVENT_SLOW_ACCEPT_TIME 2000
@@ -276,6 +279,44 @@ struct comm_point {
and after read/write completes. No callback is done. */
int tcp_do_close;
+ /** flag that indicates the stream is both written and read from. */
+ int tcp_write_and_read;
+
+ /** byte count for written length over write channel, for when
+ * tcp_write_and_read is enabled. When tcp_write_and_read is enabled,
+ * this is the counter for writing, the one for reading is in the
+ * commpoint.buffer sldns buffer. The counter counts from 0 to
+ * 2+tcp_write_pkt_len, and includes the tcp length bytes. */
+ size_t tcp_write_byte_count;
+
+ /** packet to write currently over the write channel. for when
+ * tcp_write_and_read is enabled. When tcp_write_and_read is enabled,
+ * this is the buffer for the written packet, the commpoint.buffer
+ * sldns buffer is the buffer for the received packet. */
+ uint8_t* tcp_write_pkt;
+ /** length of tcp_write_pkt in bytes */
+ size_t tcp_write_pkt_len;
+
+ /** if set try to read another packet again (over connection with
+ * multiple packets), once set, tries once, then zero again,
+ * so set it in the packet complete section.
+ * The pointer itself has to be set before the callback is invoked,
+ * when you set things up, and continue to exist also after the
+ * commpoint is closed and deleted in your callback. So that after
+ * the callback cleans up netevent can see what it has to do.
+ * Or leave NULL if it is not used at all. */
+ int* tcp_more_read_again;
+
+ /** if set try to write another packet (over connection with
+ * multiple packets), once set, tries once, then zero again,
+ * so set it in the packet complete section.
+ * The pointer itself has to be set before the callback is invoked,
+ * when you set things up, and continue to exist also after the
+ * commpoint is closed and deleted in your callback. So that after
+ * the callback cleans up netevent can see what it has to do.
+ * Or leave NULL if it is not used at all. */
+ int* tcp_more_write_again;
+
/** if set, read/write completes:
read/write state of tcp is toggled.
buffer reset/bytecount reset.
@@ -589,7 +630,8 @@ void comm_point_drop_reply(struct comm_reply* repinfo);
* Send an udp message over a commpoint.
* @param c: commpoint to send it from.
* @param packet: what to send.
- * @param addr: where to send it to.
+ * @param addr: where to send it to. If NULL, send is performed,
+ * for connected sockets, to the connected address.
* @param addrlen: length of addr.
* @return: false on a failure.
*/
diff --git a/sbin/unwind/libunbound/util/regional.c b/sbin/unwind/libunbound/util/regional.c
index ff36d0e2124..bd67ecf50af 100644
--- a/sbin/unwind/libunbound/util/regional.c
+++ b/sbin/unwind/libunbound/util/regional.c
@@ -80,18 +80,39 @@ regional_init(struct regional* r)
r->total_large = 0;
}
-struct regional*
-regional_create_custom(size_t size)
+/**
+ * Create a new region, with custom first block and large-object sizes.
+ * @param size: length of first block.
+ * @param large_object_size: outside of chunk allocation threshold.
+ * @return: newly allocated regional.
+ */
+static struct regional*
+regional_create_custom_large_object(size_t size, size_t large_object_size)
{
- struct regional* r = (struct regional*)malloc(size);
+ struct regional* r;
size = ALIGN_UP(size, ALIGNMENT);
+ r = (struct regional*)malloc(size);
log_assert(sizeof(struct regional) <= size);
if(!r) return NULL;
r->first_size = size;
+ r->large_object_size = large_object_size;
regional_init(r);
return r;
}
+struct regional*
+regional_create_custom(size_t size)
+{
+ return regional_create_custom_large_object(size,
+ REGIONAL_LARGE_OBJECT_SIZE);
+}
+
+struct regional*
+regional_create_nochunk(size_t size)
+{
+ return regional_create_custom_large_object(size, 0);
+}
+
void
regional_free_all(struct regional *r)
{
@@ -134,7 +155,7 @@ regional_alloc(struct regional *r, size_t size)
malloc and ALIGN_UP */
a = ALIGN_UP(size, ALIGNMENT);
/* large objects */
- if(a > REGIONAL_LARGE_OBJECT_SIZE) {
+ if(a > r->large_object_size) {
s = malloc(ALIGNMENT + size);
if(!s) return NULL;
r->total_large += ALIGNMENT+size;
@@ -219,7 +240,7 @@ regional_log_stats(struct regional *r)
/* some basic assertions put here (non time critical code) */
log_assert(ALIGNMENT >= sizeof(char*));
log_assert(REGIONAL_CHUNK_SIZE > ALIGNMENT);
- log_assert(REGIONAL_CHUNK_SIZE-ALIGNMENT > REGIONAL_LARGE_OBJECT_SIZE);
+ log_assert(REGIONAL_CHUNK_SIZE-ALIGNMENT > r->large_object_size);
log_assert(REGIONAL_CHUNK_SIZE >= sizeof(struct regional));
/* debug print */
log_info("regional %u chunks, %u large",
diff --git a/sbin/unwind/libunbound/util/regional.h b/sbin/unwind/libunbound/util/regional.h
index e8b2cb8d00c..b439897d52e 100644
--- a/sbin/unwind/libunbound/util/regional.h
+++ b/sbin/unwind/libunbound/util/regional.h
@@ -74,6 +74,11 @@ struct regional
size_t available;
/** current chunk data position. */
char* data;
+ /** threshold for outside of chunk allocations */
+ size_t large_object_size;
+ /** padding for sizeof8 alignment of sizeof(struct regional)
+ * for 32bit systems */
+ size_t padding;
};
/**
@@ -88,6 +93,14 @@ struct regional* regional_create(void);
* @return: newly allocated regional.
*/
struct regional* regional_create_custom(size_t size);
+
+/**
+ * Create a new region, with custom settings, that will allocate everything
+ * outside the region chunk.
+ * @param size: length of first block.
+ * @return: newly allocated regional.
+ */
+struct regional* regional_create_nochunk(size_t size);
/**
* Free all memory associated with regional. Only keeps the first block with
diff --git a/sbin/unwind/libunbound/validator/val_secalgo.c b/sbin/unwind/libunbound/validator/val_secalgo.c
index 65bca8b69d6..15cccf017b4 100644
--- a/sbin/unwind/libunbound/validator/val_secalgo.c
+++ b/sbin/unwind/libunbound/validator/val_secalgo.c
@@ -990,6 +990,7 @@ static SECKEYPublicKey* nss_buf2ecdsa(unsigned char* key, size_t len, int algo)
return pk;
}
+#if defined(USE_DSA) && defined(USE_SHA1)
static SECKEYPublicKey* nss_buf2dsa(unsigned char* key, size_t len)
{
SECKEYPublicKey* pk;
@@ -1050,6 +1051,7 @@ static SECKEYPublicKey* nss_buf2dsa(unsigned char* key, size_t len)
}
return pk;
}
+#endif /* USE_DSA && USE_SHA1 */
static SECKEYPublicKey* nss_buf2rsa(unsigned char* key, size_t len)
{