From d59a8baec22d4e93c2e79aafeccff326c52db163 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Fri, 25 Sep 2009 08:54:50 +0000 Subject: [PATCH] so-rcvbuf option. git-svn-id: file:///svn/unbound/trunk@1851 be551aaa-1e26-0410-a405-d3ace91eadb9 --- doc/Changelog | 5 + doc/example.conf.in | 4 + doc/unbound.conf.5.in | 11 + services/listen_dnsport.c | 89 +- services/listen_dnsport.h | 3 +- services/outside_network.c | 4 +- smallapp/unbound-checkconf.c | 1 + util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 2098 +++++++++++++++++----------------- util/configlexer.lex | 1 + util/configparser.c | 723 ++++++------ util/configparser.h | 6 +- util/configparser.y | 12 +- 14 files changed, 1548 insertions(+), 1414 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 182f37910..a850e66a8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +24 September 2009: Wouter + - so-rcvbuf: 4m option added. Set this on large busy servers to not + drop the occasional packet in spikes due to full socket buffers. + netstat -su keeps a counter of UDP dropped due to full buffers. + 23 September 2009: Wouter - 5011 query failed counts verification failures, not lookup failures. - 5011 probe failure handling fixup. diff --git a/doc/example.conf.in b/doc/example.conf.in index bdee80879..159097114 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -73,6 +73,10 @@ server: # number of incoming simultaneous tcp buffers to hold per thread. # incoming-num-tcp: 10 + # buffer size for UDP port 53 incoming (SO_RCVBUF socket option). + # 0 is system default. Use 4m to catch query spikes for busy servers. + # so-rcvbuf: 0 + # buffer size for handling DNS data. No messages larger than this # size can be sent or received, by UDP or TCP. In bytes. # msg-buffer-size: 65552 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 0dd081614..823a6c7ec 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -197,6 +197,17 @@ the other 50% are replaced with the new incoming query if they have already spent more than their allowed time. This protects against denial of service by slow queries or high query rates. Default 200 milliseconds. .TP +.B so\-rcvbuf: \fI +If not 0, then set the SO_RCVBUF socket option to get more buffer +space on UDP port 53 incoming queries. So that short spikes on busy +servers do not drop packets (see counter in netstat \-su). Default is +0 (use system value). Otherwise, the number of bytes to ask for, try +"4m" on a busy server. The OS caps it at a maximum, on linux unbound +needs root permission to bypass the limit, or the admin can use sysctl +net.core.rmem_max. On BSD change kern.ipc.maxsockbuf in /etc/sysctl.conf. +On OpenBSD change header and recompile kernel. On Solaris ndd \-set +/dev/udp udp_max_buf 8388608. +.TP .B rrset\-cache\-size: \fI Number of bytes size of the RRset cache. Default is 4 megabytes. A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index ac9acc846..92ba88431 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -89,7 +89,7 @@ verbose_print_addr(struct addrinfo *addr) int create_udp_sock(int family, int socktype, struct sockaddr* addr, - socklen_t addrlen, int v6only, int* inuse, int* noproto) + socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv) { int s; #if defined(IPV6_USE_MIN_MTU) @@ -98,6 +98,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, #ifdef IPV6_MTU int mtu = IPV6_MIN_MTU; #endif +#if !defined(SO_RCVBUFFORCE) && !defined(SO_RCVBUF) + (void)rcv; +#endif #ifndef IPV6_V6ONLY (void)v6only; #endif @@ -121,6 +124,64 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, *noproto = 0; return -1; } + if(rcv) { +#ifdef SO_RCVBUF + int got; + socklen_t slen = (socklen_t)sizeof(got); +# ifdef SO_RCVBUFFORCE + /* Linux specific: try to use root permission to override + * system limits on rcvbuf. The limit is stored in + * /proc/sys/net/core/rmem_max or sysctl net.core.rmem_max */ + if(setsockopt(s, SOL_SOCKET, SO_RCVBUFFORCE, (void*)&rcv, + (socklen_t)sizeof(rcv)) < 0) { + if(errno != EPERM) { +# ifndef USE_WINSOCK + log_err("setsockopt(..., SO_RCVBUFFORCE, " + "...) failed: %s", strerror(errno)); + close(s); +# else + log_err("setsockopt(..., SO_RCVBUFFORCE, " + "...) failed: %s", + wsa_strerror(WSAGetLastError())); + closesocket(s); +# endif + *noproto = 0; + *inuse = 0; + return -1; + } +# endif /* SO_RCVBUFFORCE */ + if(setsockopt(s, SOL_SOCKET, SO_RCVBUF, (void*)&rcv, + (socklen_t)sizeof(rcv)) < 0) { +# ifndef USE_WINSOCK + log_err("setsockopt(..., SO_RCVBUF, " + "...) failed: %s", strerror(errno)); + close(s); +# else + log_err("setsockopt(..., SO_RCVBUF, " + "...) failed: %s", + wsa_strerror(WSAGetLastError())); + closesocket(s); +# endif + *noproto = 0; + *inuse = 0; + return -1; + } + /* check if we got the right thing or if system + * reduced to some system max. Warn if so */ + if(getsockopt(s, SOL_SOCKET, SO_RCVBUF, (void*)&got, + &slen) >= 0 && got < rcv/2) { + log_warn("so-rcvbuf %u was not granted. " + "Got %u. To fix: start with " + "root permissions(linux) or sysctl " + "bigger net.core.rmem_max(linux) or " + "kern.ipc.maxsockbuf(bsd) values.", + (unsigned)rcv, (unsigned)got); + } +# ifdef SO_RCVBUFFORCE + } +# endif +#endif /* SO_RCVBUF */ + } if(family == AF_INET6) { # if defined(IPV6_V6ONLY) if(v6only) { @@ -313,7 +374,7 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto) */ static int make_sock(int stype, const char* ifname, const char* port, - struct addrinfo *hints, int v6only, int* noip6) + struct addrinfo *hints, int v6only, int* noip6, size_t rcv) { struct addrinfo *res = NULL; int r, s, inuse, noproto; @@ -339,8 +400,8 @@ make_sock(int stype, const char* ifname, const char* port, if(stype == SOCK_DGRAM) { verbose_print_addr(res); s = create_udp_sock(res->ai_family, res->ai_socktype, - (struct sockaddr*)res->ai_addr, - res->ai_addrlen, v6only, &inuse, &noproto); + (struct sockaddr*)res->ai_addr, + res->ai_addrlen, v6only, &inuse, &noproto, (int)rcv); if(s == -1 && inuse) { log_err("bind: address already in use"); } else if(s == -1 && noproto && hints->ai_family == AF_INET6){ @@ -442,18 +503,20 @@ set_recvpktinfo(int s, int family) * @param hints: for getaddrinfo. family and flags have to be set by caller. * @param port: Port number to use (as string). * @param list: list of open ports, appended to, changed to point to list head. + * @param rcv: receive buffer size for UDP * @return: returns false on error. */ static int ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, - struct addrinfo *hints, const char* port, struct listen_port** list) + struct addrinfo *hints, const char* port, struct listen_port** list, + size_t rcv) { int s, noip6=0; if(!do_udp && !do_tcp) return 0; if(do_auto) { if((s = make_sock(SOCK_DGRAM, ifname, port, hints, 1, - &noip6)) == -1) { + &noip6, rcv)) == -1) { if(noip6) { log_warn("IPv6 protocol not available"); return 1; @@ -474,7 +537,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } else if(do_udp) { /* regular udp socket */ if((s = make_sock(SOCK_DGRAM, ifname, port, hints, 1, - &noip6)) == -1) { + &noip6, rcv)) == -1) { if(noip6) { log_warn("IPv6 protocol not available"); return 1; @@ -492,7 +555,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } if(do_tcp) { if((s = make_sock(SOCK_STREAM, ifname, port, hints, 1, - &noip6)) == -1) { + &noip6, 0)) == -1) { if(noip6) { /*log_warn("IPv6 protocol not available");*/ return 1; @@ -668,7 +731,7 @@ listening_ports_open(struct config_file* cfg) hints.ai_family = AF_INET6; if(!ports_create_if(do_auto?"::0":"::1", do_auto, cfg->do_udp, do_tcp, - &hints, portbuf, &list)) { + &hints, portbuf, &list, cfg->socket_rcvbuf)) { listening_ports_free(list); return NULL; } @@ -677,7 +740,7 @@ listening_ports_open(struct config_file* cfg) hints.ai_family = AF_INET; if(!ports_create_if(do_auto?"0.0.0.0":"127.0.0.1", do_auto, cfg->do_udp, do_tcp, - &hints, portbuf, &list)) { + &hints, portbuf, &list, cfg->socket_rcvbuf)) { listening_ports_free(list); return NULL; } @@ -688,7 +751,8 @@ listening_ports_open(struct config_file* cfg) continue; hints.ai_family = AF_INET6; if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, - do_tcp, &hints, portbuf, &list)) { + do_tcp, &hints, portbuf, &list, + cfg->socket_rcvbuf)) { listening_ports_free(list); return NULL; } @@ -697,7 +761,8 @@ listening_ports_open(struct config_file* cfg) continue; hints.ai_family = AF_INET; if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, - do_tcp, &hints, portbuf, &list)) { + do_tcp, &hints, portbuf, &list, + cfg->socket_rcvbuf)) { listening_ports_free(list); return NULL; } diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 3d1bc4fc3..01de5e9d5 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -180,10 +180,11 @@ size_t listen_get_mem(struct listen_dnsport* listen); * @param inuse: on error, this is set true if the port was in use. * @param noproto: on error, this is set true if cause is that the IPv6 proto (family) is not available. + * @param rcv: set size on rcvbuf with socket option, if 0 it is not set. * @return: the socket. -1 on error. */ int create_udp_sock(int family, int socktype, struct sockaddr* addr, - socklen_t addrlen, int v6only, int* inuse, int* noproto); + socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv); /** * Create and bind TCP listening socket diff --git a/services/outside_network.c b/services/outside_network.c index 4c8fa09ac..634f5fa5b 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -754,12 +754,12 @@ udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int port, struct sockaddr_in6* sa = (struct sockaddr_in6*)addr; sa->sin6_port = (in_port_t)htons((uint16_t)port); fd = create_udp_sock(AF_INET6, SOCK_DGRAM, - (struct sockaddr*)addr, addrlen, 1, inuse, &noproto); + (struct sockaddr*)addr, addrlen, 1, inuse, &noproto, 0); } else { struct sockaddr_in* sa = (struct sockaddr_in*)addr; sa->sin_port = (in_port_t)htons((uint16_t)port); fd = create_udp_sock(AF_INET, SOCK_DGRAM, - (struct sockaddr*)addr, addrlen, 1, inuse, &noproto); + (struct sockaddr*)addr, addrlen, 1, inuse, &noproto, 0); } return fd; } diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 8130a2d41..22259c0c9 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -140,6 +140,7 @@ print_option(struct config_file* cfg, const char* opt) else O_DEC(opt, "msg-cache-slabs", msg_cache_slabs) else O_DEC(opt, "num-queries-per-thread", num_queries_per_thread) else O_UNS(opt, "jostle-timeout", jostle_time) + else O_MEM(opt, "so-rcvbuf", socket_rcvbuf) else O_MEM(opt, "rrset-cache-size", rrset_cache_size) else O_DEC(opt, "rrset-cache-slabs", rrset_cache_slabs) else O_DEC(opt, "cache-max-ttl", max_ttl) diff --git a/util/config_file.c b/util/config_file.c index 1d8587445..1a2a842b0 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -123,6 +123,7 @@ config_create() cfg->root_hints = NULL; cfg->do_daemonize = 1; cfg->if_automatic = 0; + cfg->socket_rcvbuf = 0; cfg->num_ifs = 0; cfg->ifs = NULL; cfg->num_out_ifs = 0; @@ -284,6 +285,8 @@ int config_set_option(struct config_file* cfg, const char* opt, } else if(strcmp(opt, "jostle-timeout:") == 0) { IS_NUMBER_OR_ZERO; cfg->jostle_time = (size_t)atoi(val); + } else if(strcmp(opt, "so-rcvbuf:") == 0) { + return cfg_parse_memsize(val, &cfg->socket_rcvbuf); } else if(strcmp(opt, "rrset-cache-size:") == 0) { return cfg_parse_memsize(val, &cfg->rrset_cache_size); } else if(strcmp(opt, "rrset-cache-slabs:") == 0) { diff --git a/util/config_file.h b/util/config_file.h index aa4918fa5..3ad6731b5 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -114,6 +114,8 @@ struct config_file { /** automatic interface for incoming messages. Uses ipv6 remapping, * and recvmsg/sendmsg ancillary data to detect interfaces, boolean */ int if_automatic; + /** SO_RCVBUF size to set on port 53 UDP socket */ + size_t socket_rcvbuf; /** number of interfaces to open. If 0 default all interfaces. */ int num_ifs; diff --git a/util/configlexer.c b/util/configlexer.c index fc0547961..bb753c5dc 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -362,8 +362,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 125 -#define YY_END_OF_BUFFER 126 +#define YY_NUM_RULES 126 +#define YY_END_OF_BUFFER 127 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -371,137 +371,138 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1178] = +static yyconst flex_int16_t yy_accept[1187] = { 0, - 1, 1, 107, 107, 111, 111, 115, 115, 119, 119, - 1, 1, 126, 123, 1, 105, 105, 124, 123, 124, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 107, - 108, 108, 109, 124, 111, 112, 112, 113, 124, 118, - 115, 116, 116, 117, 124, 119, 120, 120, 121, 124, - 122, 106, 122, 110, 124, 122, 123, 0, 1, 0, - 123, 0, 2, 0, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 107, 0, 111, 0, 118, 0, - 115, 119, 0, 122, 0, 122, 0, 122, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 122, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 122, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 51, 123, 123, 123, 123, 123, 6, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 122, 123, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 122, 123, 123, 123, 123, 20, 123, 123, 123, - 123, 123, 12, 13, 123, 15, 14, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 123, 123, 103, 123, 123, - 123, 123, 3, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 122, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 114, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 23, - 123, 123, 123, 123, 123, 123, 123, 24, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 64, 114, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 63, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 21, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 22, 123, 123, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 17, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 52, - 53, 123, 50, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 5, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 66, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 89, 88, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 25, 123, 123, 123, 123, 54, 123, 123, 123, 123, - 123, 86, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 43, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 4, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 83, - - 123, 123, 123, 123, 123, 123, 123, 97, 84, 123, - 16, 123, 123, 123, 56, 57, 55, 123, 123, 123, - 123, 123, 62, 123, 123, 123, 123, 123, 123, 123, - 123, 85, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 71, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 31, 32, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 61, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 65, 123, - - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 102, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 75, 123, 78, 123, 123, 123, 123, - 60, 123, 123, 95, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 33, - 34, 123, 39, 79, 123, 90, 87, 123, 27, 123, - 81, 123, 123, 123, 123, 123, 7, 123, 49, 94, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 67, 123, 123, 104, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 80, 26, 28, 123, 123, - 123, 123, 123, 48, 123, 123, 123, 98, 123, 123, - 123, 123, 123, 123, 46, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 100, 123, 123, 123, 123, 123, - 123, 123, 11, 123, 123, 123, 123, 123, 123, 10, - 123, 123, 29, 123, 99, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 74, 73, 123, 101, 96, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 35, - 123, 123, 123, 123, 123, 30, 123, 123, 123, 68, - 70, 123, 123, 123, 72, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 123, 123, 123, 18, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 93, 123, 123, 123, 123, 123, 123, 19, 123, - 9, 123, 123, 91, 40, 123, 123, 123, 77, 123, - 58, 123, 123, 42, 45, 41, 123, 36, 123, 8, - 123, 123, 76, 123, 123, 123, 123, 37, 123, 92, - 123, 123, 69, 59, 44, 38, 123, 123, 123, 123, - 47, 123, 123, 123, 123, 82, 0 + 1, 1, 108, 108, 112, 112, 116, 116, 120, 120, + 1, 1, 127, 124, 1, 106, 106, 125, 124, 125, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 108, + 109, 109, 110, 125, 112, 113, 113, 114, 125, 119, + 116, 117, 117, 118, 125, 120, 121, 121, 122, 125, + 123, 107, 123, 111, 125, 123, 124, 0, 1, 0, + 124, 0, 2, 0, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 108, 0, 112, 0, 119, + 0, 116, 120, 0, 123, 0, 123, 0, 123, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 123, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 123, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 52, 124, 124, 124, + 124, 124, 6, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 123, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 123, 124, 124, 124, + 124, 21, 124, 124, 124, 124, 124, 12, 13, 124, + 15, 14, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 104, 124, 124, 124, 124, 3, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 123, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 115, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 24, 124, 124, 124, 124, + 124, 124, 124, 25, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 65, 115, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 64, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 22, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 23, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 17, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 20, 124, 53, 54, + 124, 51, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 5, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 67, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 90, 89, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 26, + 124, 124, 124, 124, 55, 124, 124, 124, 124, 124, + 87, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 44, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 4, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 84, 124, + 124, 124, 124, 124, 124, 124, 98, 85, 124, 16, + 124, 124, 124, 57, 58, 56, 124, 124, 124, 124, + 124, 63, 124, 124, 124, 124, 124, 124, 124, 124, + 86, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 72, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 32, + 33, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 62, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 66, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 103, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 76, 124, 79, 124, 124, 124, 124, 61, + 124, 124, 96, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 34, 35, + 124, 40, 80, 124, 91, 88, 124, 28, 124, 82, + 124, 124, 124, 124, 124, 7, 124, 50, 95, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 68, 124, 124, 105, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 81, 27, 29, 124, 124, 124, + 124, 124, 49, 124, 124, 124, 99, 124, 124, 124, + 124, 124, 124, 47, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 101, 124, 124, 124, 124, 124, 124, + 124, 11, 124, 124, 124, 124, 124, 124, 10, 124, + 124, 30, 124, 100, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 75, 74, 124, 102, 97, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 36, 124, + 124, 124, 124, 124, 31, 124, 124, 124, 69, 71, + + 124, 124, 124, 73, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 18, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 94, 124, 124, 124, 124, 124, 124, 19, 124, 9, + 124, 124, 92, 41, 124, 124, 124, 78, 124, 59, + 124, 124, 43, 46, 42, 124, 37, 124, 8, 124, + 124, 77, 124, 124, 124, 124, 38, 124, 93, 124, + 124, 70, 60, 45, 39, 124, 124, 124, 124, 48, + 124, 124, 124, 124, 83, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -544,547 +545,549 @@ static yyconst flex_int32_t yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[1192] = +static yyconst flex_int16_t yy_base[1201] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 87, 108, 2270, 2256, 50, 2359, 2359, 2359, 129, 94, + 87, 108, 2288, 2273, 50, 2375, 2375, 2375, 129, 94, 70, 124, 122, 71, 89, 105, 112, 92, 110, 94, - 130, 135, 61, 133, 147, 141, 153, 150, 167, 2255, - 2359, 2359, 2359, 58, 2254, 2359, 2359, 2359, 42, 2250, - 2199, 2359, 2359, 2359, 184, 2118, 2359, 2359, 2359, 152, - 2067, 2359, 190, 2359, 194, 160, 1958, 200, 166, 1628, - 211, 1432, 2359, 1319, 163, 193, 157, 195, 72, 204, - 196, 206, 62, 212, 209, 213, 214, 215, 216, 217, - 222, 228, 227, 235, 236, 238, 240, 242, 226, 244, - - 245, 249, 250, 252, 254, 256, 259, 260, 262, 257, - 264, 266, 267, 268, 1239, 281, 1175, 291, 1127, 299, - 1086, 999, 292, 944, 303, 309, 784, 302, 306, 312, - 274, 103, 304, 276, 313, 310, 321, 322, 317, 320, - 314, 323, 324, 330, 333, 328, 334, 332, 335, 354, - 340, 355, 338, 358, 357, 365, 368, 364, 366, 347, - 356, 369, 370, 373, 374, 375, 376, 380, 381, 383, - 386, 389, 395, 392, 391, 398, 400, 404, 401, 405, - 409, 410, 412, 413, 421, 416, 419, 423, 424, 429, - 425, 430, 435, 441, 433, 437, 442, 443, 445, 447, - - 451, 449, 448, 450, 456, 454, 469, 462, 464, 457, - 468, 473, 476, 478, 480, 481, 489, 485, 486, 487, - 493, 492, 490, 494, 499, 498, 519, 500, 504, 503, - 506, 511, 507, 514, 516, 517, 528, 520, 523, 539, - 548, 529, 541, 542, 547, 550, 551, 552, 553, 555, - 556, 559, 570, 567, 571, 572, 577, 579, 580, 581, - 582, 563, 590, 2359, 594, 583, 588, 592, 586, 2359, - 597, 599, 600, 602, 608, 606, 607, 611, 609, 620, - 614, 621, 113, 630, 618, 616, 623, 632, 635, 636, - 639, 640, 643, 642, 649, 650, 645, 647, 653, 654, - - 655, 656, 661, 665, 669, 673, 675, 677, 680, 686, - 682, 684, 690, 689, 691, 674, 692, 695, 698, 699, - 707, 703, 705, 711, 704, 713, 719, 716, 720, 721, - 725, 726, 727, 728, 729, 736, 743, 739, 742, 751, - 732, 749, 740, 747, 754, 761, 757, 759, 762, 760, - 764, 766, 768, 772, 771, 780, 781, 770, 782, 784, - 773, 790, 791, 792, 797, 798, 2359, 805, 802, 801, - 803, 808, 2359, 2359, 170, 2359, 2359, 804, 810, 817, - 824, 815, 809, 816, 822, 825, 829, 833, 834, 837, - 826, 838, 839, 844, 849, 850, 852, 853, 854, 858, - - 859, 861, 863, 862, 871, 877, 865, 2359, 873, 874, - 880, 875, 2359, 882, 883, 885, 889, 892, 890, 893, - 899, 897, 895, 900, 903, 902, 909, 916, 915, 913, - 917, 924, 905, 921, 927, 922, 928, 929, 933, 935, - 958, 934, 939, 936, 940, 941, 942, 950, 952, 959, - 943, 946, 965, 968, 966, 971, 982, 2359, 977, 983, - 975, 979, 984, 987, 985, 988, 991, 995, 1002, 2359, - 998, 1000, 1001, 1003, 1007, 1014, 1017, 2359, 1018, 1020, - 1010, 1021, 1024, 1026, 1028, 1029, 1030, 1034, 1036, 1035, - 1037, 1043, 1039, 1052, 1056, 1038, 1045, 1055, 1057, 1058, - - 1063, 1060, 1064, 1061, 1062, 2359, 683, 1065, 1066, 1068, - 1072, 1082, 1084, 1069, 1076, 1086, 1085, 1092, 1094, 1095, - 1096, 1097, 1098, 1099, 1104, 1101, 1106, 1103, 1109, 1110, - 1114, 1111, 1112, 1115, 2359, 1119, 1123, 1125, 1129, 1140, - 1136, 1137, 1143, 1141, 1147, 1150, 1144, 1148, 1159, 1160, - 1156, 1153, 1162, 1163, 1164, 1165, 1168, 1169, 1173, 1172, - 1170, 1174, 1185, 1187, 1189, 1192, 1177, 1196, 1198, 1199, - 1200, 1201, 2359, 1207, 1210, 1209, 1216, 1212, 1213, 1215, - 1219, 1220, 1222, 1228, 1224, 1227, 1225, 1229, 1231, 1233, - 1234, 1236, 2359, 1242, 1235, 1238, 1248, 1246, 1250, 1249, - - 1255, 1257, 1260, 1263, 1262, 1264, 1271, 1272, 1273, 1274, - 1283, 1286, 1284, 2359, 1288, 1275, 1277, 1300, 1291, 1292, - 1297, 1306, 1298, 1302, 1304, 1305, 1308, 1307, 1310, 1312, - 1314, 1316, 1326, 1319, 1331, 1315, 1327, 1337, 1338, 2359, - 2359, 1341, 2359, 1342, 1334, 1336, 1343, 1344, 1351, 1346, - 1352, 1354, 1356, 1358, 1355, 1360, 2359, 1357, 1363, 1368, - 1364, 1370, 1371, 1378, 1381, 1387, 1372, 1379, 1383, 2359, - 1394, 1373, 1385, 1395, 1397, 1400, 1401, 1402, 1404, 1405, - 1408, 1409, 1411, 1413, 1412, 1419, 1416, 1417, 1418, 1423, - 1421, 1432, 1424, 2359, 2359, 1430, 1434, 1435, 1446, 1442, - - 1450, 1448, 1449, 1452, 1453, 1456, 1457, 1459, 1461, 1462, - 2359, 1468, 1472, 1473, 1478, 2359, 1466, 1464, 1476, 1483, - 1484, 2359, 1485, 1486, 1488, 1489, 1491, 1492, 1497, 1498, - 1504, 1500, 1506, 1507, 1515, 1509, 1508, 1511, 1523, 1525, - 1527, 1529, 1535, 1512, 1531, 1538, 1540, 1542, 1543, 2359, - 1549, 1516, 1550, 1532, 1548, 1558, 1552, 1554, 1555, 1556, - 1559, 1561, 1562, 1567, 1563, 1569, 1565, 1570, 1573, 1581, - 1577, 1584, 2359, 1585, 1591, 1587, 1589, 1592, 1593, 1594, - 1595, 1598, 1605, 1604, 1601, 1606, 1621, 1624, 1630, 1615, - 1631, 1628, 1608, 1629, 1609, 1637, 1633, 1643, 1635, 2359, - - 1636, 1645, 1649, 1646, 1651, 1653, 1654, 2359, 2359, 1650, - 2359, 1657, 1642, 1661, 2359, 2359, 2359, 1671, 1664, 1667, - 1672, 1676, 2359, 1665, 1677, 1673, 1679, 1680, 1683, 1682, - 1684, 2359, 1688, 1687, 1690, 1696, 1699, 1686, 1701, 1700, - 1709, 1710, 1703, 1707, 1716, 1713, 1717, 1719, 1723, 1720, - 1725, 1726, 1728, 1729, 1724, 1730, 1739, 2359, 1741, 1731, - 1743, 1749, 1750, 1754, 1738, 1751, 1758, 1760, 1762, 1764, - 2359, 2359, 1765, 1767, 1768, 1770, 1771, 1775, 1777, 1778, - 1780, 1781, 1784, 1785, 1786, 2359, 1787, 1788, 1789, 1793, - 1796, 1804, 1798, 1809, 1813, 1791, 1815, 1817, 2359, 1818, - - 1820, 1806, 1822, 1824, 1826, 1827, 1828, 1834, 1831, 1836, - 2359, 1838, 1839, 1840, 1843, 1846, 1845, 1847, 1848, 1849, - 1853, 1859, 1856, 2359, 1857, 2359, 1861, 1867, 1869, 1871, - 2359, 1873, 1874, 2359, 1875, 1876, 1883, 1885, 1884, 1891, - 1879, 1892, 1893, 1900, 1896, 1894, 1901, 1897, 1907, 2359, - 2359, 1903, 2359, 2359, 1914, 2359, 2359, 1916, 2359, 1918, - 2359, 1924, 1920, 1911, 1908, 1923, 2359, 1926, 2359, 2359, - 1929, 1931, 1932, 1936, 1938, 1922, 1939, 1941, 1942, 1943, - 1945, 1946, 1947, 1948, 1949, 1952, 1956, 1957, 1959, 1960, - 1967, 2359, 1961, 1971, 2359, 1969, 1974, 1977, 1980, 1981, - - 1983, 1989, 1986, 1985, 1987, 2359, 2359, 2359, 1988, 1990, - 1998, 1991, 1994, 2359, 2003, 1999, 2010, 2359, 2013, 2005, - 2011, 2016, 2017, 2015, 2359, 2019, 2024, 2025, 2026, 2032, - 2036, 2033, 2038, 2040, 2359, 2042, 2043, 2045, 2044, 2049, - 2050, 2052, 2359, 2046, 2054, 2057, 2059, 2062, 2064, 2359, - 2063, 2066, 2359, 2075, 2359, 2060, 2076, 2078, 2083, 2085, - 2071, 2086, 2092, 2091, 2093, 2359, 2359, 2088, 2359, 2359, - 2095, 2096, 2098, 2099, 2101, 2102, 2103, 2107, 2105, 2359, - 2108, 2109, 2113, 2119, 2121, 2359, 2124, 2120, 2110, 2359, - 2359, 2126, 2136, 2134, 2359, 2139, 2138, 2140, 2141, 2146, - - 2142, 2148, 2149, 2150, 2128, 2151, 2153, 2160, 2359, 2162, - 2163, 2164, 2169, 2172, 2166, 2175, 2173, 2177, 2178, 2180, - 2181, 2359, 2184, 2192, 2195, 2197, 2198, 2202, 2359, 2204, - 2359, 2207, 2208, 2359, 2359, 2174, 2210, 2211, 2359, 2212, - 2359, 2199, 2214, 2359, 2359, 2359, 2221, 2359, 2222, 2359, - 2224, 2215, 2359, 2225, 2228, 2232, 2234, 2359, 2236, 2359, - 2229, 2237, 2359, 2359, 2359, 2359, 2240, 2239, 2246, 2242, - 2359, 2247, 2249, 2248, 2253, 2359, 2359, 2280, 2286, 2292, - 2298, 2304, 542, 2310, 2316, 2322, 2328, 2334, 2340, 2346, - 2352 + 130, 135, 61, 133, 147, 154, 143, 141, 163, 2272, + 2375, 2375, 2375, 58, 2271, 2375, 2375, 2375, 42, 2270, + 2279, 2375, 2375, 2375, 181, 2267, 2375, 2375, 2375, 175, + 2205, 2375, 187, 2375, 191, 157, 2043, 197, 157, 1759, + 208, 1661, 2375, 1448, 190, 201, 184, 192, 72, 203, + 194, 209, 62, 215, 211, 212, 214, 216, 213, 219, + 221, 224, 234, 238, 226, 223, 243, 235, 244, 247, + + 245, 246, 252, 253, 138, 254, 256, 262, 258, 260, + 261, 265, 270, 268, 267, 1198, 285, 1145, 290, 786, + 298, 753, 676, 302, 401, 306, 312, 401, 283, 291, + 310, 299, 103, 307, 308, 316, 313, 320, 329, 323, + 321, 309, 327, 325, 334, 339, 317, 336, 337, 340, + 347, 344, 358, 346, 360, 361, 368, 370, 352, 369, + 362, 371, 372, 373, 374, 376, 377, 378, 383, 269, + 379, 385, 389, 392, 400, 405, 397, 398, 406, 413, + 411, 412, 384, 415, 418, 419, 425, 422, 428, 429, + 430, 431, 433, 435, 437, 444, 441, 445, 446, 448, + + 450, 451, 457, 453, 455, 454, 460, 458, 462, 472, + 473, 475, 478, 477, 480, 481, 483, 484, 490, 487, + 489, 488, 496, 502, 501, 499, 500, 508, 503, 528, + 509, 512, 513, 510, 518, 515, 525, 516, 522, 523, + 526, 539, 545, 551, 532, 541, 554, 555, 556, 558, + 559, 562, 563, 561, 566, 579, 577, 580, 568, 586, + 593, 582, 578, 589, 592, 595, 2375, 597, 599, 600, + 601, 602, 2375, 603, 604, 606, 607, 617, 609, 616, + 605, 621, 619, 630, 626, 631, 628, 633, 636, 640, + 641, 642, 643, 644, 645, 648, 655, 658, 664, 657, + + 650, 660, 672, 663, 666, 674, 564, 677, 680, 682, + 688, 685, 687, 696, 692, 694, 700, 699, 701, 693, + 702, 704, 708, 709, 717, 705, 719, 721, 715, 724, + 731, 727, 732, 734, 736, 730, 738, 739, 740, 751, + 754, 753, 755, 761, 757, 723, 763, 764, 765, 766, + 773, 769, 771, 772, 774, 776, 778, 780, 784, 785, + 788, 794, 782, 796, 797, 798, 802, 801, 805, 808, + 810, 2375, 818, 816, 814, 815, 821, 2375, 2375, 817, + 2375, 2375, 822, 824, 830, 837, 833, 827, 826, 840, + 835, 846, 843, 852, 854, 848, 850, 859, 860, 862, + + 865, 864, 871, 866, 873, 875, 876, 879, 878, 887, + 893, 880, 2375, 889, 882, 890, 895, 2375, 897, 900, + 901, 902, 903, 908, 904, 911, 919, 913, 907, 915, + 923, 916, 929, 936, 932, 920, 933, 939, 924, 941, + 943, 945, 947, 948, 949, 950, 974, 952, 953, 954, + 957, 955, 958, 966, 962, 968, 975, 980, 984, 986, + 991, 992, 996, 2375, 998, 997, 999, 1001, 1002, 1003, + 1004, 1008, 1006, 1010, 1020, 2375, 1016, 1017, 1025, 1027, + 1019, 1033, 1040, 2375, 1037, 1036, 1029, 1042, 1043, 1045, + 1047, 959, 1048, 1049, 1053, 1055, 1054, 1056, 1057, 1058, + + 1070, 1071, 1063, 1075, 1064, 1072, 1009, 1080, 1077, 1079, + 1081, 1082, 2375, 319, 1084, 1087, 1085, 1094, 1096, 1092, + 1090, 1099, 1101, 1093, 1103, 1110, 1111, 1112, 1114, 1115, + 1116, 1120, 1117, 1122, 1123, 1125, 1126, 1127, 1128, 1130, + 1131, 2375, 1138, 1139, 1136, 1148, 1159, 1149, 1151, 1166, + 1163, 1165, 1167, 1141, 1157, 1174, 1176, 1172, 1178, 1179, + 1180, 1181, 1173, 1185, 1183, 1186, 1187, 1189, 1201, 1190, + 1204, 1207, 1208, 1211, 1192, 1215, 1216, 1217, 1218, 1219, + 2375, 1225, 1227, 1228, 1234, 1230, 1231, 1232, 1237, 1238, + 1240, 1246, 1242, 1244, 1247, 1248, 1251, 1245, 1254, 1252, + + 2375, 1260, 1253, 1256, 1261, 1257, 1269, 1267, 1268, 1276, + 1278, 1280, 1284, 1281, 1285, 1288, 1290, 1291, 1297, 1298, + 1300, 2375, 1302, 1304, 1305, 1313, 1310, 1306, 1314, 1321, + 1315, 1317, 1319, 1322, 1323, 1326, 1327, 1328, 1331, 1330, + 1339, 1332, 1345, 1346, 1333, 1354, 2375, 1355, 2375, 2375, + 1357, 2375, 1358, 1359, 1340, 1362, 1360, 1364, 1366, 1368, + 1370, 1371, 1372, 1377, 1373, 2375, 1379, 1380, 1383, 1381, + 1385, 1387, 1388, 1393, 1400, 1389, 1399, 1402, 2375, 1406, + 1391, 1412, 1403, 1410, 1414, 1417, 1418, 1420, 1421, 1424, + 1425, 1427, 1429, 1431, 1435, 1432, 1433, 1436, 1439, 1441, + + 1437, 1440, 2375, 2375, 1455, 1450, 1451, 1460, 1462, 1466, + 1464, 1465, 1467, 1468, 1473, 1474, 1475, 1477, 1478, 2375, + 1484, 1488, 1489, 1491, 2375, 1482, 1481, 1497, 1498, 1501, + 2375, 1502, 1503, 1504, 1505, 1506, 1508, 1512, 1513, 1521, + 1515, 1518, 1524, 1531, 1525, 1523, 1527, 1539, 1543, 1540, + 1545, 1551, 1532, 1534, 1548, 1556, 1558, 1559, 2375, 1565, + 1550, 1566, 1552, 1564, 1572, 1569, 1570, 1571, 1573, 1574, + 1576, 1578, 1579, 1582, 1585, 1589, 1592, 1584, 1586, 1597, + 1598, 2375, 1600, 1608, 1599, 1606, 1607, 1609, 1611, 1615, + 1616, 1620, 1624, 1617, 1622, 1632, 1642, 1634, 1628, 1644, + + 1643, 1621, 1645, 1646, 1652, 1648, 1654, 1650, 2375, 1653, + 1659, 1661, 1663, 1667, 1668, 1664, 2375, 2375, 1665, 2375, + 1675, 1666, 1679, 2375, 2375, 2375, 1683, 1680, 1681, 1689, + 1686, 2375, 1690, 1692, 1694, 1695, 1696, 1699, 1698, 1700, + 2375, 1701, 1702, 1703, 1705, 1717, 1709, 1718, 1722, 1725, + 1726, 1719, 1712, 1733, 1729, 1727, 1736, 1739, 1740, 1742, + 1744, 1743, 1745, 1741, 1747, 1756, 2375, 1759, 1748, 1757, + 1768, 1760, 1771, 1764, 1772, 1774, 1775, 1778, 1781, 2375, + 2375, 1782, 1785, 1786, 1780, 1790, 1793, 1794, 1796, 1798, + 1799, 1800, 1802, 1803, 2375, 1804, 1806, 1810, 1811, 1816, + + 1826, 1820, 1828, 1830, 1813, 1835, 1837, 2375, 1838, 1840, + 1822, 1845, 1831, 1842, 1805, 1846, 1851, 1852, 1854, 2375, + 1856, 1857, 1858, 1860, 1861, 1863, 1864, 1865, 1867, 1868, + 1875, 1874, 2375, 1873, 2375, 1879, 1881, 1890, 1886, 2375, + 1889, 1891, 2375, 1894, 1896, 1899, 1902, 1905, 1910, 1892, + 1900, 1911, 1918, 1915, 1907, 1914, 1917, 1922, 2375, 2375, + 1926, 2375, 2375, 1929, 2375, 2375, 1931, 2375, 1933, 2375, + 1939, 1935, 1937, 1938, 1940, 2375, 1942, 2375, 2375, 1943, + 1944, 1947, 1950, 1951, 1954, 1955, 1956, 1957, 1958, 1962, + 1964, 1959, 1966, 1970, 1965, 1974, 1975, 1971, 1977, 1980, + + 2375, 1981, 1990, 2375, 1987, 1984, 1992, 1995, 1994, 1998, + 2005, 2001, 2003, 2004, 2375, 2375, 2375, 2006, 2009, 2008, + 2014, 2015, 2375, 2018, 2019, 2021, 2375, 2027, 2023, 2025, + 2030, 2031, 2032, 2375, 2037, 2039, 2041, 2042, 2048, 2050, + 2056, 2054, 2059, 2375, 2055, 2061, 2062, 2063, 2066, 2067, + 2069, 2375, 2064, 2070, 2077, 2071, 2074, 2079, 2375, 2081, + 2085, 2375, 2087, 2375, 2088, 2091, 2093, 2095, 2100, 2097, + 2102, 2106, 2104, 2105, 2375, 2375, 2107, 2375, 2375, 2110, + 2111, 2112, 2114, 2117, 2118, 2120, 2123, 2121, 2375, 2124, + 2125, 2134, 2135, 2128, 2375, 2136, 2140, 2126, 2375, 2375, + + 2142, 2148, 2144, 2375, 2150, 2154, 2156, 2157, 2159, 2160, + 2161, 2162, 2164, 2165, 2166, 2168, 2173, 2375, 2182, 2174, + 2171, 2184, 2187, 2177, 2188, 2179, 2190, 2192, 2198, 2195, + 2375, 2201, 2203, 2208, 2210, 2211, 2213, 2375, 2217, 2375, + 2220, 2221, 2375, 2375, 2215, 2225, 2222, 2375, 2228, 2375, + 2229, 2230, 2375, 2375, 2375, 2232, 2375, 2235, 2375, 2237, + 2238, 2375, 2240, 2242, 2244, 2246, 2375, 2248, 2375, 2250, + 2251, 2375, 2375, 2375, 2375, 2255, 2254, 2257, 2260, 2375, + 2261, 2263, 2264, 2266, 2375, 2375, 2296, 2302, 2308, 2314, + 2320, 125, 2326, 2332, 2338, 2344, 2350, 2356, 2362, 2368 } ; -static yyconst flex_int16_t yy_def[1192] = +static yyconst flex_int16_t yy_def[1201] = { 0, - 1177, 1, 1178, 1178, 1179, 1179, 1180, 1180, 1181, 1181, - 1182, 1182, 1177, 1183, 1177, 1177, 1177, 1177, 1184, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1185, - 1177, 1177, 1177, 1185, 1186, 1177, 1177, 1177, 1186, 1187, - 1177, 1177, 1177, 1177, 1187, 1188, 1177, 1177, 1177, 1188, - 1189, 1177, 1190, 1177, 1189, 1189, 1183, 1183, 1177, 1191, - 1184, 1191, 1177, 1184, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1185, 1185, 1186, 1186, 1187, 1187, - 1177, 1188, 1188, 1189, 1189, 1190, 1190, 1189, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1189, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1189, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1177, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1189, 1183, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1189, 1183, 1183, 1183, 1183, 1177, 1183, 1183, 1183, - 1183, 1183, 1177, 1177, 1183, 1177, 1177, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, 1183, 1183, - 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1189, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1177, 1189, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, - 1177, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1177, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1177, 1177, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1177, 1183, 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1183, - 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, 1177, 1183, - 1177, 1183, 1183, 1183, 1177, 1177, 1177, 1183, 1183, 1183, - 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1177, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1177, 1183, 1177, 1183, 1183, 1183, 1183, - 1177, 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, - 1177, 1183, 1177, 1177, 1183, 1177, 1177, 1183, 1177, 1183, - 1177, 1183, 1183, 1183, 1183, 1183, 1177, 1183, 1177, 1177, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1177, 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1177, 1177, 1177, 1183, 1183, - 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1177, 1183, 1183, - 1183, 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1177, - 1183, 1183, 1177, 1183, 1177, 1183, 1183, 1183, 1183, 1183, - 1183, 1183, 1183, 1183, 1183, 1177, 1177, 1183, 1177, 1177, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, - 1183, 1183, 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1177, - 1177, 1183, 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1177, 1183, - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, - 1183, 1177, 1183, 1183, 1183, 1183, 1183, 1183, 1177, 1183, - 1177, 1183, 1183, 1177, 1177, 1183, 1183, 1183, 1177, 1183, - 1177, 1183, 1183, 1177, 1177, 1177, 1183, 1177, 1183, 1177, - 1183, 1183, 1177, 1183, 1183, 1183, 1183, 1177, 1183, 1177, - 1183, 1183, 1177, 1177, 1177, 1177, 1183, 1183, 1183, 1183, - 1177, 1183, 1183, 1183, 1183, 1177, 0, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177 + 1186, 1, 1187, 1187, 1188, 1188, 1189, 1189, 1190, 1190, + 1191, 1191, 1186, 1192, 1186, 1186, 1186, 1186, 1193, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1194, + 1186, 1186, 1186, 1194, 1195, 1186, 1186, 1186, 1195, 1196, + 1186, 1186, 1186, 1186, 1196, 1197, 1186, 1186, 1186, 1197, + 1198, 1186, 1199, 1186, 1198, 1198, 1192, 1192, 1186, 1200, + 1193, 1200, 1186, 1193, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1194, 1194, 1195, 1195, 1196, + 1196, 1186, 1197, 1197, 1198, 1198, 1199, 1199, 1198, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1198, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1198, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, 1192, 1192, + 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1198, 1192, 1192, + + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1198, 1192, 1192, 1192, + 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1186, 1186, 1192, + 1186, 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1186, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1198, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1186, 1198, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + + 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, 1186, 1186, + 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + + 1192, 1192, 1186, 1186, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, + 1192, 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, + 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1186, 1192, 1186, + 1192, 1192, 1192, 1186, 1186, 1186, 1192, 1192, 1192, 1192, + 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, + 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, + + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1186, 1192, 1186, 1192, 1192, 1192, 1192, 1186, + 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1186, + 1192, 1186, 1186, 1192, 1186, 1186, 1192, 1186, 1192, 1186, + 1192, 1192, 1192, 1192, 1192, 1186, 1192, 1186, 1186, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + + 1186, 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1186, 1186, 1186, 1192, 1192, 1192, + 1192, 1192, 1186, 1192, 1192, 1192, 1186, 1192, 1192, 1192, + 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, + 1192, 1186, 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1186, 1186, 1192, 1186, 1186, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, + 1192, 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1186, 1186, + + 1192, 1192, 1192, 1186, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, 1192, + 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, + 1186, 1192, 1192, 1192, 1192, 1192, 1192, 1186, 1192, 1186, + 1192, 1192, 1186, 1186, 1192, 1192, 1192, 1186, 1192, 1186, + 1192, 1192, 1186, 1186, 1186, 1192, 1186, 1192, 1186, 1192, + 1192, 1186, 1192, 1192, 1192, 1192, 1186, 1192, 1186, 1192, + 1192, 1186, 1186, 1186, 1186, 1192, 1192, 1192, 1192, 1186, + 1192, 1192, 1192, 1192, 1186, 0, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186 } ; -static yyconst flex_int16_t yy_nxt[2399] = +static yyconst flex_int16_t yy_nxt[2415] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 18, 20, 21, 14, 22, 23, 24, 25, 14, 26, 27, 28, 29, 30, 31, 32, 33, 34, 14, 35, 36, 37, 38, 39, 14, 14, 14, 14, 41, - 42, 43, 41, 42, 43, 117, 46, 47, 117, 44, + 42, 43, 41, 42, 43, 118, 46, 47, 118, 44, 48, 69, 44, 46, 47, 70, 49, 48, 57, 58, - 59, 115, 115, 49, 51, 52, 53, 54, 60, 18, + 59, 116, 116, 49, 51, 52, 53, 54, 60, 18, 57, 58, 59, 68, 68, 55, 51, 52, 53, 54, 60, 18, 68, 68, 68, 75, 76, 55, 15, 16, - 17, 62, 63, 64, 99, 67, 137, 67, 67, 65, + 17, 62, 63, 64, 99, 67, 138, 67, 67, 65, - 67, 68, 133, 77, 68, 67, 68, 85, 66, 15, + 67, 68, 134, 77, 68, 67, 68, 85, 66, 15, 16, 17, 62, 63, 64, 68, 86, 68, 87, 91, - 65, 93, 68, 179, 68, 68, 88, 92, 89, 66, + 65, 93, 68, 181, 68, 67, 88, 92, 89, 66, 72, 73, 72, 72, 68, 72, 68, 78, 90, 81, 72, 74, 68, 82, 79, 68, 83, 68, 96, 84, - 351, 80, 97, 68, 100, 122, 122, 94, 107, 68, - 101, 95, 68, 102, 104, 68, 109, 69, 98, 68, - 103, 70, 125, 108, 105, 68, 111, 106, 129, 68, - 113, 112, 68, 110, 114, 119, 128, 119, 119, 131, - 119, 72, 73, 72, 72, 124, 72, 124, 124, 446, - - 124, 67, 127, 67, 67, 68, 67, 68, 68, 130, - 132, 67, 72, 73, 72, 72, 68, 72, 68, 138, - 135, 68, 72, 74, 68, 68, 68, 68, 68, 68, - 134, 143, 145, 144, 68, 146, 136, 139, 68, 68, - 68, 140, 151, 141, 142, 149, 152, 68, 68, 147, - 68, 153, 68, 148, 68, 154, 68, 68, 158, 156, - 159, 68, 68, 155, 68, 150, 68, 157, 68, 68, - 161, 68, 68, 167, 68, 160, 68, 163, 68, 68, - 68, 164, 162, 172, 115, 115, 68, 165, 68, 166, - 170, 173, 169, 168, 117, 122, 122, 117, 174, 171, - - 119, 178, 119, 119, 124, 119, 124, 124, 181, 124, - 72, 73, 72, 72, 125, 72, 68, 175, 68, 177, - 182, 127, 68, 176, 68, 68, 68, 183, 184, 68, - 190, 180, 68, 68, 68, 68, 68, 191, 185, 193, - 68, 194, 68, 186, 68, 68, 68, 68, 187, 192, - 68, 199, 68, 203, 188, 189, 195, 196, 198, 68, - 197, 202, 204, 201, 200, 207, 68, 68, 68, 68, - 68, 206, 209, 205, 208, 210, 68, 68, 68, 213, - 68, 68, 68, 211, 212, 68, 68, 68, 68, 215, - 214, 218, 68, 68, 221, 68, 225, 216, 68, 224, - - 222, 68, 227, 125, 68, 217, 228, 68, 220, 219, - 68, 233, 68, 68, 223, 230, 68, 68, 234, 226, - 232, 68, 68, 229, 68, 68, 239, 238, 68, 231, - 237, 68, 235, 68, 240, 68, 68, 68, 243, 236, - 244, 68, 68, 247, 241, 68, 242, 68, 249, 68, - 245, 246, 248, 68, 68, 68, 253, 68, 256, 68, - 68, 68, 68, 68, 257, 250, 68, 252, 68, 68, - 251, 255, 258, 264, 68, 254, 68, 260, 261, 265, - 68, 68, 259, 262, 263, 68, 266, 270, 68, 267, - 68, 271, 68, 68, 269, 268, 274, 68, 68, 68, - - 278, 68, 68, 276, 68, 68, 68, 272, 277, 279, - 68, 68, 68, 273, 282, 125, 68, 275, 68, 68, - 281, 298, 280, 68, 284, 293, 68, 292, 68, 68, - 283, 68, 68, 285, 286, 68, 294, 295, 296, 297, - 68, 68, 67, 287, 300, 288, 289, 290, 299, 303, - 291, 68, 302, 68, 68, 301, 304, 305, 306, 68, - 68, 307, 68, 68, 68, 68, 311, 68, 68, 308, - 309, 68, 317, 310, 314, 68, 316, 319, 313, 68, - 318, 312, 68, 68, 68, 320, 324, 315, 321, 68, - 323, 68, 68, 68, 68, 68, 328, 322, 68, 327, - - 68, 325, 68, 329, 68, 326, 68, 330, 332, 68, - 334, 68, 68, 333, 68, 339, 331, 337, 68, 68, - 68, 68, 338, 68, 342, 336, 68, 347, 68, 335, - 68, 343, 68, 68, 350, 68, 340, 348, 341, 344, - 354, 346, 68, 352, 68, 353, 349, 68, 68, 345, - 355, 68, 68, 358, 125, 68, 363, 68, 362, 68, - 359, 68, 68, 356, 367, 68, 68, 68, 68, 357, - 361, 360, 366, 68, 364, 365, 371, 68, 368, 369, - 373, 68, 375, 370, 374, 68, 68, 68, 376, 68, - 372, 377, 68, 378, 68, 125, 68, 381, 68, 379, - - 380, 68, 68, 68, 68, 382, 384, 68, 383, 385, - 68, 68, 390, 387, 391, 68, 68, 68, 388, 68, - 393, 386, 389, 68, 392, 68, 398, 394, 68, 396, - 397, 68, 68, 68, 399, 400, 401, 68, 68, 68, - 68, 68, 402, 407, 68, 405, 406, 408, 68, 395, - 409, 68, 68, 404, 68, 68, 403, 411, 412, 68, - 410, 68, 413, 68, 414, 415, 68, 416, 419, 68, - 420, 68, 68, 68, 68, 421, 68, 417, 68, 422, - 68, 418, 68, 68, 68, 68, 73, 426, 423, 427, - 428, 425, 68, 68, 68, 424, 68, 429, 430, 434, - - 431, 432, 125, 68, 68, 433, 436, 435, 437, 68, - 68, 439, 441, 68, 68, 68, 68, 68, 442, 440, - 68, 68, 68, 444, 449, 447, 448, 68, 68, 68, - 438, 443, 455, 458, 68, 445, 68, 68, 68, 456, - 450, 68, 460, 451, 459, 68, 68, 462, 452, 68, - 68, 68, 463, 457, 453, 454, 68, 467, 464, 466, - 461, 68, 68, 470, 68, 68, 68, 469, 471, 465, - 68, 68, 472, 68, 68, 68, 468, 68, 473, 474, - 476, 477, 478, 68, 479, 68, 68, 68, 481, 68, - 484, 475, 68, 483, 68, 68, 480, 68, 485, 487, - - 482, 68, 68, 486, 68, 68, 493, 68, 491, 68, - 489, 68, 68, 494, 68, 68, 488, 68, 490, 492, - 497, 68, 499, 500, 496, 68, 495, 68, 68, 68, - 501, 504, 506, 68, 68, 498, 68, 505, 507, 125, - 68, 68, 503, 502, 509, 68, 68, 68, 68, 508, - 518, 68, 68, 68, 68, 68, 125, 524, 68, 530, - 510, 512, 68, 520, 68, 525, 521, 529, 523, 511, - 68, 68, 526, 513, 522, 514, 519, 68, 68, 515, - 68, 516, 531, 68, 536, 528, 517, 68, 532, 68, - 527, 68, 533, 535, 68, 68, 68, 68, 537, 68, - - 68, 540, 534, 68, 539, 543, 538, 68, 541, 546, - 68, 123, 68, 68, 68, 68, 542, 548, 549, 68, - 550, 545, 68, 544, 553, 547, 68, 552, 551, 68, - 68, 554, 68, 68, 555, 556, 68, 557, 68, 559, - 68, 68, 68, 560, 562, 561, 68, 68, 68, 68, - 68, 68, 566, 558, 567, 68, 573, 68, 568, 570, - 563, 565, 569, 571, 68, 572, 564, 68, 68, 68, - 68, 577, 68, 68, 68, 68, 68, 68, 68, 585, - 68, 68, 576, 575, 68, 579, 574, 121, 68, 586, - 578, 582, 580, 583, 68, 588, 68, 68, 68, 581, - - 584, 587, 589, 590, 68, 593, 68, 68, 68, 68, - 68, 68, 591, 68, 596, 68, 68, 595, 68, 592, - 599, 68, 68, 68, 68, 594, 68, 68, 600, 597, - 598, 68, 605, 601, 602, 68, 608, 68, 606, 120, - 604, 68, 603, 610, 607, 609, 612, 613, 68, 68, - 617, 614, 68, 68, 618, 68, 68, 611, 616, 68, - 68, 615, 68, 620, 619, 68, 623, 624, 68, 626, - 621, 68, 68, 625, 68, 68, 68, 68, 622, 631, - 68, 68, 68, 627, 68, 68, 68, 118, 628, 68, - 629, 632, 630, 636, 634, 633, 640, 68, 641, 68, - - 635, 68, 637, 643, 68, 639, 642, 638, 68, 644, - 68, 68, 68, 68, 650, 646, 645, 651, 648, 68, - 649, 68, 68, 653, 68, 68, 652, 68, 68, 647, - 657, 68, 68, 654, 68, 660, 68, 68, 656, 68, - 68, 68, 664, 68, 655, 68, 68, 68, 68, 669, - 68, 116, 658, 670, 68, 663, 661, 659, 68, 662, - 68, 68, 68, 665, 667, 673, 675, 68, 672, 68, - 666, 668, 68, 671, 68, 68, 68, 679, 674, 681, - 676, 677, 680, 68, 68, 68, 68, 68, 678, 68, - 687, 686, 683, 688, 682, 68, 68, 689, 68, 684, - - 68, 691, 695, 68, 68, 690, 685, 693, 692, 68, - 68, 694, 68, 698, 68, 697, 68, 68, 68, 68, - 68, 73, 68, 696, 68, 706, 68, 68, 68, 699, - 707, 68, 712, 700, 703, 701, 702, 705, 68, 68, - 704, 708, 711, 68, 714, 715, 68, 709, 68, 68, - 68, 710, 716, 68, 68, 68, 68, 717, 68, 713, - 720, 718, 722, 68, 68, 724, 68, 68, 68, 68, - 68, 721, 68, 719, 727, 68, 68, 729, 723, 726, - 68, 732, 68, 68, 68, 68, 728, 730, 725, 731, - 68, 68, 736, 68, 738, 68, 733, 68, 737, 68, - - 744, 741, 734, 735, 739, 740, 68, 68, 745, 68, - 743, 742, 68, 68, 68, 750, 68, 68, 748, 749, - 68, 68, 751, 68, 68, 68, 757, 746, 68, 68, - 68, 68, 747, 68, 73, 68, 68, 756, 752, 755, - 762, 753, 68, 754, 68, 766, 68, 68, 758, 759, - 761, 760, 765, 763, 68, 767, 764, 772, 68, 773, - 68, 68, 68, 771, 68, 68, 768, 769, 68, 68, - 770, 68, 779, 68, 68, 782, 68, 775, 68, 783, - 68, 774, 777, 776, 68, 68, 787, 778, 68, 780, - 68, 784, 781, 785, 788, 68, 68, 68, 68, 786, - - 68, 68, 793, 68, 68, 794, 795, 789, 796, 68, - 68, 790, 68, 797, 791, 800, 68, 792, 68, 68, - 68, 68, 804, 68, 68, 799, 801, 68, 68, 807, - 802, 803, 798, 805, 808, 68, 809, 68, 806, 68, - 811, 68, 812, 68, 68, 813, 820, 68, 810, 815, - 68, 816, 68, 817, 68, 68, 819, 821, 818, 823, - 68, 68, 68, 814, 68, 824, 68, 68, 68, 822, - 68, 68, 832, 68, 68, 68, 825, 68, 826, 68, - 834, 68, 68, 827, 837, 68, 828, 829, 830, 68, - 836, 838, 831, 68, 840, 835, 68, 68, 844, 68, - - 833, 68, 843, 68, 68, 68, 68, 68, 846, 847, - 68, 839, 842, 68, 848, 841, 68, 68, 68, 845, - 68, 68, 850, 852, 863, 853, 849, 68, 856, 851, - 73, 857, 855, 68, 854, 858, 68, 859, 861, 860, - 68, 68, 68, 68, 866, 68, 865, 68, 68, 68, - 868, 870, 862, 864, 68, 68, 871, 68, 68, 869, - 872, 68, 68, 68, 873, 68, 68, 867, 874, 68, - 878, 875, 880, 68, 877, 876, 68, 68, 882, 68, - 884, 879, 881, 68, 68, 68, 885, 886, 68, 68, - 888, 68, 68, 883, 68, 68, 68, 887, 68, 68, - - 68, 896, 68, 890, 891, 895, 889, 892, 68, 893, - 899, 68, 68, 68, 902, 68, 894, 898, 901, 68, - 897, 68, 68, 907, 900, 68, 903, 904, 68, 68, - 908, 68, 68, 905, 911, 68, 68, 68, 68, 906, - 68, 68, 68, 68, 912, 910, 913, 915, 909, 914, - 68, 68, 916, 68, 917, 68, 918, 920, 919, 921, - 924, 68, 68, 68, 923, 926, 68, 928, 922, 927, - 68, 925, 68, 931, 68, 929, 68, 68, 934, 68, - 68, 935, 68, 68, 932, 930, 933, 68, 937, 68, - 68, 938, 68, 68, 936, 940, 68, 68, 68, 68, - - 68, 68, 946, 68, 939, 68, 949, 950, 68, 944, - 68, 941, 942, 947, 948, 951, 68, 943, 68, 945, - 953, 68, 955, 952, 954, 68, 956, 68, 957, 68, - 68, 959, 68, 961, 68, 958, 68, 960, 68, 68, - 68, 965, 964, 68, 963, 967, 68, 969, 68, 970, - 68, 68, 68, 972, 962, 68, 966, 68, 68, 68, - 68, 68, 968, 974, 976, 68, 980, 973, 68, 68, - 978, 68, 981, 68, 979, 977, 985, 971, 975, 68, - 984, 68, 983, 68, 986, 68, 68, 68, 68, 982, - 990, 68, 987, 991, 992, 68, 68, 68, 989, 994, - - 988, 993, 995, 68, 68, 68, 68, 999, 68, 68, - 998, 996, 68, 68, 1000, 68, 1005, 1003, 1002, 68, - 68, 1004, 1001, 68, 997, 1006, 68, 1007, 68, 1008, - 68, 1009, 68, 1010, 68, 68, 68, 1014, 68, 1011, - 1013, 68, 1012, 68, 68, 1016, 1015, 1018, 68, 1017, - 68, 68, 1020, 68, 68, 68, 1025, 68, 68, 68, - 68, 68, 1019, 1021, 68, 1022, 1023, 1026, 68, 68, - 68, 68, 68, 68, 1029, 1024, 1033, 1034, 1035, 68, - 1028, 68, 1031, 68, 1037, 1027, 68, 1032, 1030, 68, - 1038, 1036, 68, 68, 1043, 68, 1044, 68, 68, 68, - - 68, 68, 68, 68, 1039, 1049, 68, 1040, 1041, 1050, - 68, 68, 1042, 1045, 1053, 68, 1046, 68, 1051, 1047, - 1048, 1055, 68, 68, 1052, 68, 1056, 68, 68, 68, - 1054, 68, 1058, 1059, 1060, 1061, 68, 68, 68, 1057, - 1068, 1063, 1064, 1066, 68, 68, 1062, 1067, 68, 1069, - 68, 1070, 68, 1065, 68, 68, 68, 68, 68, 1071, - 1073, 68, 68, 1076, 68, 1074, 68, 1072, 1080, 68, - 1075, 68, 68, 1077, 68, 68, 68, 1078, 68, 125, - 1081, 1083, 1082, 68, 1084, 1079, 1086, 68, 68, 1088, - 68, 1085, 1087, 1089, 1090, 68, 1091, 68, 68, 1094, - - 68, 1092, 1095, 68, 68, 68, 1097, 68, 68, 1096, - 68, 68, 1093, 68, 68, 68, 1099, 68, 1102, 68, - 68, 68, 68, 1107, 1109, 68, 1098, 1101, 1105, 1100, - 123, 68, 68, 68, 1103, 1110, 68, 1106, 68, 1108, - 68, 1104, 1111, 1115, 1113, 1112, 68, 1114, 68, 1116, - 68, 68, 68, 68, 68, 1117, 1118, 1122, 68, 1119, - 68, 68, 68, 68, 1129, 68, 1127, 1126, 1121, 1125, - 1123, 1120, 68, 1131, 68, 68, 68, 1130, 68, 1124, - 1134, 68, 1128, 1135, 68, 68, 68, 68, 1139, 68, - 68, 1141, 68, 68, 1152, 1132, 68, 1136, 1133, 1137, - - 121, 1143, 1140, 1144, 68, 1138, 1145, 68, 1146, 68, - 68, 68, 1142, 1148, 68, 1147, 68, 1149, 1150, 68, - 68, 1153, 68, 68, 68, 1151, 68, 68, 1154, 1155, - 1157, 1156, 1158, 68, 68, 1160, 68, 68, 1159, 1163, - 68, 68, 1161, 1164, 68, 1165, 68, 1166, 68, 68, - 1168, 68, 68, 1167, 68, 1162, 1169, 1171, 68, 68, - 68, 68, 120, 1172, 1176, 68, 118, 116, 68, 1177, - 1177, 1170, 1177, 1177, 1173, 1174, 1177, 1177, 1177, 1175, - 40, 40, 40, 40, 40, 40, 45, 45, 45, 45, - 45, 45, 50, 50, 50, 50, 50, 50, 56, 56, - - 56, 56, 56, 56, 61, 61, 61, 61, 61, 61, - 71, 71, 71, 71, 71, 71, 115, 115, 1177, 1177, - 115, 115, 117, 117, 1177, 117, 1177, 117, 119, 1177, - 1177, 1177, 1177, 119, 122, 122, 1177, 1177, 122, 122, - 124, 1177, 1177, 1177, 1177, 124, 126, 126, 126, 126, - 126, 126, 72, 72, 72, 72, 72, 72, 13, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177 - + 68, 80, 97, 68, 100, 68, 110, 94, 69, 68, + 101, 95, 70, 102, 104, 165, 68, 112, 98, 126, + 103, 107, 113, 111, 105, 68, 114, 106, 123, 123, + 115, 108, 120, 129, 120, 120, 109, 120, 72, 73, + 72, 72, 125, 72, 125, 125, 68, 125, 67, 128, + + 67, 67, 68, 67, 68, 130, 68, 133, 67, 72, + 73, 72, 72, 68, 72, 68, 132, 131, 136, 72, + 74, 68, 139, 68, 68, 68, 68, 68, 68, 135, + 145, 68, 144, 68, 146, 68, 68, 147, 68, 137, + 140, 150, 142, 141, 143, 155, 68, 68, 156, 152, + 68, 148, 149, 153, 154, 68, 68, 68, 68, 68, + 158, 151, 157, 160, 68, 68, 68, 162, 68, 168, + 68, 169, 68, 68, 68, 161, 159, 68, 164, 68, + 68, 68, 68, 224, 163, 166, 167, 174, 116, 116, + 171, 170, 175, 118, 172, 126, 118, 176, 177, 120, + + 173, 120, 120, 68, 120, 123, 123, 125, 178, 125, + 125, 68, 125, 72, 73, 72, 72, 179, 72, 68, + 68, 68, 68, 184, 128, 68, 180, 186, 68, 68, + 185, 126, 68, 68, 182, 68, 192, 68, 193, 68, + 183, 68, 196, 195, 194, 187, 68, 200, 68, 68, + 188, 68, 68, 201, 204, 189, 68, 205, 68, 68, + 197, 190, 191, 198, 68, 206, 199, 209, 203, 202, + 68, 213, 68, 68, 68, 211, 207, 212, 210, 208, + 68, 68, 68, 68, 68, 68, 68, 214, 68, 68, + 68, 68, 217, 220, 215, 68, 68, 68, 225, 228, + + 218, 68, 227, 73, 68, 216, 219, 230, 222, 126, + 68, 221, 68, 126, 239, 223, 226, 68, 68, 231, + 236, 233, 229, 68, 68, 68, 235, 68, 237, 234, + 68, 68, 242, 241, 68, 240, 232, 68, 243, 238, + 68, 68, 68, 68, 246, 68, 247, 68, 250, 68, + 244, 252, 248, 68, 251, 245, 68, 68, 68, 249, + 68, 256, 68, 68, 259, 68, 68, 68, 260, 68, + 68, 255, 68, 253, 68, 258, 265, 266, 254, 261, + 257, 263, 264, 267, 68, 68, 262, 68, 268, 68, + 68, 273, 68, 68, 274, 68, 68, 277, 272, 68, + + 68, 68, 68, 280, 269, 271, 279, 270, 68, 282, + 275, 68, 68, 68, 68, 68, 276, 281, 283, 278, + 68, 68, 68, 286, 68, 126, 285, 68, 68, 288, + 68, 284, 302, 297, 68, 68, 296, 68, 68, 287, + 68, 299, 289, 290, 68, 300, 298, 301, 303, 304, + 305, 68, 291, 68, 292, 293, 294, 68, 306, 295, + 309, 310, 308, 68, 311, 307, 68, 68, 68, 312, + 68, 68, 315, 68, 68, 68, 68, 321, 68, 376, + 68, 314, 313, 318, 320, 317, 323, 322, 316, 68, + 68, 68, 68, 326, 68, 324, 319, 325, 68, 327, + + 328, 68, 330, 329, 68, 68, 331, 68, 333, 68, + 334, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 336, 68, 337, 341, 343, 332, 338, 342, 68, 68, + 340, 68, 335, 68, 347, 339, 346, 352, 68, 344, + 68, 348, 68, 68, 355, 68, 357, 353, 68, 349, + 345, 351, 68, 68, 68, 68, 68, 68, 354, 350, + 68, 363, 68, 358, 359, 356, 364, 68, 360, 68, + 126, 368, 68, 361, 367, 68, 68, 362, 68, 365, + 370, 369, 366, 372, 68, 371, 68, 373, 124, 68, + 374, 378, 68, 379, 68, 380, 381, 68, 382, 68, + + 68, 375, 377, 383, 68, 68, 68, 386, 68, 384, + 385, 68, 68, 68, 68, 387, 68, 68, 388, 390, + 68, 68, 395, 392, 396, 389, 397, 68, 393, 68, + 391, 68, 394, 68, 398, 68, 68, 399, 403, 68, + 401, 402, 68, 68, 68, 404, 68, 405, 68, 406, + 68, 68, 68, 407, 122, 420, 410, 411, 412, 400, + 408, 414, 413, 68, 409, 68, 68, 68, 417, 68, + 416, 419, 418, 68, 415, 68, 68, 68, 68, 421, + 425, 68, 426, 68, 68, 68, 68, 427, 68, 428, + 68, 422, 68, 424, 68, 423, 68, 68, 121, 432, + + 68, 433, 429, 431, 434, 435, 68, 430, 68, 68, + 68, 436, 437, 68, 126, 438, 442, 68, 439, 441, + 68, 443, 68, 445, 440, 447, 68, 68, 68, 68, + 68, 446, 448, 68, 68, 450, 68, 455, 68, 68, + 454, 444, 68, 453, 449, 68, 452, 68, 451, 68, + 461, 464, 68, 456, 465, 68, 457, 462, 68, 466, + 68, 458, 68, 463, 68, 468, 68, 459, 460, 469, + 467, 68, 68, 473, 68, 476, 68, 68, 68, 472, + 470, 471, 475, 68, 478, 68, 477, 68, 68, 474, + 68, 68, 68, 479, 68, 480, 482, 483, 484, 68, + + 485, 68, 68, 489, 487, 68, 481, 68, 488, 68, + 490, 486, 68, 68, 68, 68, 68, 494, 491, 68, + 68, 493, 498, 68, 496, 68, 500, 68, 68, 501, + 492, 68, 68, 495, 497, 68, 68, 499, 502, 503, + 504, 68, 506, 507, 68, 68, 511, 508, 68, 505, + 509, 68, 513, 68, 514, 126, 512, 68, 510, 68, + 68, 68, 68, 516, 68, 68, 68, 68, 525, 68, + 68, 68, 515, 531, 68, 532, 519, 569, 68, 517, + 68, 527, 533, 528, 530, 518, 68, 68, 529, 520, + 526, 521, 68, 537, 535, 522, 68, 523, 68, 536, + + 534, 538, 524, 68, 68, 543, 539, 542, 68, 68, + 68, 68, 544, 68, 68, 68, 68, 540, 68, 547, + 68, 68, 68, 541, 548, 550, 546, 553, 68, 68, + 545, 68, 68, 584, 555, 549, 552, 68, 551, 68, + 558, 68, 556, 554, 557, 68, 559, 560, 68, 68, + 561, 563, 68, 562, 68, 68, 564, 68, 566, 68, + 68, 68, 567, 570, 568, 68, 68, 68, 68, 68, + 68, 574, 576, 575, 565, 68, 68, 578, 579, 571, + 573, 577, 68, 68, 68, 572, 581, 68, 585, 68, + 580, 68, 68, 68, 68, 582, 68, 68, 583, 68, + + 587, 593, 68, 594, 68, 68, 68, 586, 68, 595, + 590, 68, 588, 68, 591, 68, 596, 592, 598, 589, + 599, 601, 68, 68, 68, 597, 68, 68, 68, 68, + 600, 604, 68, 603, 68, 68, 607, 68, 68, 68, + 68, 602, 68, 68, 608, 613, 605, 606, 68, 609, + 68, 68, 616, 68, 610, 614, 612, 119, 611, 618, + 68, 68, 615, 68, 617, 620, 621, 629, 619, 68, + 622, 68, 624, 625, 623, 68, 626, 68, 68, 68, + 628, 631, 627, 632, 68, 68, 68, 630, 68, 633, + 68, 68, 68, 68, 634, 68, 639, 68, 68, 68, + + 635, 68, 68, 641, 68, 636, 644, 637, 640, 638, + 117, 642, 647, 68, 643, 649, 68, 645, 650, 68, + 68, 648, 652, 68, 653, 651, 646, 68, 68, 68, + 68, 68, 659, 655, 660, 654, 657, 68, 658, 68, + 68, 662, 68, 68, 68, 661, 68, 656, 666, 68, + 68, 663, 68, 669, 68, 665, 68, 68, 68, 68, + 68, 673, 664, 68, 68, 68, 68, 678, 68, 68, + 667, 679, 68, 68, 670, 668, 671, 672, 682, 68, + 68, 68, 675, 674, 676, 684, 681, 677, 68, 683, + 68, 680, 68, 68, 686, 688, 68, 68, 685, 689, + + 68, 690, 68, 68, 696, 697, 692, 687, 695, 68, + 68, 691, 68, 698, 68, 693, 68, 68, 68, 699, + 702, 704, 68, 694, 703, 68, 68, 68, 707, 68, + 700, 68, 706, 68, 68, 68, 701, 705, 68, 68, + 68, 715, 68, 68, 68, 68, 708, 716, 709, 712, + 710, 68, 68, 711, 714, 717, 720, 68, 68, 713, + 718, 723, 724, 721, 719, 722, 68, 68, 725, 68, + 68, 68, 68, 726, 68, 731, 68, 728, 68, 729, + 68, 733, 68, 68, 68, 68, 727, 730, 736, 68, + 738, 68, 68, 68, 735, 68, 741, 68, 732, 68, + + 68, 68, 745, 68, 734, 68, 740, 747, 737, 739, + 746, 68, 68, 742, 68, 68, 754, 743, 68, 744, + 750, 748, 68, 751, 68, 749, 68, 753, 752, 68, + 68, 759, 68, 68, 757, 758, 68, 68, 760, 68, + 755, 68, 766, 68, 68, 68, 756, 68, 68, 68, + 73, 68, 68, 68, 761, 764, 765, 762, 772, 763, + 771, 773, 68, 68, 767, 768, 770, 68, 774, 769, + 775, 776, 68, 781, 68, 782, 68, 68, 68, 68, + 68, 778, 777, 780, 779, 68, 68, 68, 788, 68, + 68, 791, 784, 68, 68, 792, 68, 783, 785, 786, + + 68, 68, 796, 68, 787, 789, 794, 793, 790, 68, + 68, 797, 795, 68, 68, 68, 68, 68, 68, 802, + 68, 803, 804, 805, 68, 68, 799, 68, 798, 806, + 68, 800, 809, 68, 801, 68, 68, 68, 813, 68, + 808, 810, 811, 68, 68, 816, 68, 807, 812, 814, + 817, 68, 68, 815, 818, 68, 820, 68, 821, 824, + 68, 819, 68, 68, 68, 822, 823, 825, 68, 826, + 68, 68, 828, 830, 827, 832, 68, 68, 68, 833, + 829, 68, 68, 68, 68, 68, 68, 841, 68, 831, + 68, 68, 843, 834, 68, 835, 68, 68, 68, 849, + + 836, 68, 837, 838, 68, 839, 845, 840, 846, 68, + 68, 68, 68, 847, 844, 853, 842, 852, 68, 68, + 68, 68, 848, 68, 856, 855, 851, 68, 68, 68, + 857, 854, 68, 68, 68, 850, 68, 872, 861, 865, + 68, 868, 859, 858, 68, 862, 68, 860, 864, 866, + 863, 870, 869, 867, 68, 68, 68, 68, 68, 875, + 68, 877, 68, 73, 68, 68, 68, 871, 879, 873, + 880, 68, 881, 68, 878, 68, 68, 68, 68, 68, + 68, 882, 876, 874, 883, 885, 884, 68, 887, 886, + 891, 68, 68, 68, 893, 68, 889, 895, 68, 888, + + 890, 68, 68, 894, 68, 897, 68, 68, 68, 892, + 68, 68, 68, 68, 68, 68, 905, 68, 904, 899, + 900, 68, 896, 901, 68, 902, 907, 898, 908, 68, + 68, 68, 903, 906, 68, 910, 911, 68, 68, 68, + 916, 68, 912, 913, 915, 68, 917, 909, 68, 914, + 920, 68, 68, 68, 68, 68, 68, 68, 918, 68, + 68, 73, 919, 922, 921, 924, 923, 925, 68, 68, + 926, 68, 68, 927, 929, 928, 68, 930, 932, 933, + 68, 934, 935, 68, 68, 931, 68, 68, 937, 940, + 68, 938, 68, 68, 68, 936, 943, 68, 68, 944, + + 939, 941, 68, 942, 945, 68, 68, 946, 68, 947, + 68, 68, 68, 949, 68, 68, 68, 68, 68, 955, + 973, 948, 68, 68, 958, 68, 953, 959, 68, 950, + 951, 956, 68, 952, 68, 957, 954, 960, 68, 962, + 68, 963, 68, 68, 964, 961, 965, 68, 966, 68, + 68, 968, 68, 969, 68, 967, 970, 68, 68, 974, + 972, 971, 976, 68, 68, 978, 68, 979, 68, 68, + 68, 981, 68, 68, 975, 68, 68, 68, 983, 68, + 68, 985, 989, 977, 982, 68, 68, 68, 987, 988, + 990, 68, 986, 68, 993, 980, 984, 994, 68, 995, + + 992, 68, 68, 68, 68, 991, 68, 996, 68, 999, + 1001, 68, 68, 1000, 68, 998, 997, 68, 1002, 68, + 1003, 1004, 68, 68, 1005, 1008, 68, 68, 1007, 68, + 68, 1011, 1006, 1009, 68, 1010, 1013, 1012, 68, 1014, + 1015, 68, 1016, 68, 1017, 68, 1018, 68, 1019, 68, + 68, 68, 68, 1023, 68, 68, 68, 1022, 1025, 68, + 1024, 1027, 68, 68, 1026, 1020, 68, 68, 68, 68, + 68, 68, 1021, 1034, 68, 1028, 68, 68, 68, 1030, + 1031, 1032, 68, 68, 1029, 1035, 68, 68, 1042, 68, + 1033, 1044, 68, 68, 1043, 1038, 68, 1036, 1037, 68, + + 1040, 1039, 68, 1046, 68, 1041, 68, 68, 1047, 1052, + 68, 1045, 1053, 68, 1048, 68, 68, 68, 68, 1059, + 68, 68, 1049, 1050, 1058, 1051, 68, 68, 1054, 1062, + 68, 68, 1064, 68, 1055, 68, 1056, 68, 1057, 68, + 1065, 1060, 68, 68, 68, 1061, 1067, 1068, 1069, 68, + 1063, 68, 1070, 68, 68, 68, 1072, 1066, 1073, 1075, + 68, 1076, 68, 1077, 1071, 1078, 68, 68, 68, 1074, + 1079, 68, 1080, 68, 68, 68, 68, 1082, 68, 68, + 1085, 68, 68, 68, 1083, 1081, 68, 1084, 1089, 68, + 1086, 68, 1090, 68, 1091, 1087, 1092, 68, 1095, 68, + + 68, 1088, 1093, 68, 1097, 68, 1099, 68, 1098, 68, + 1094, 1100, 68, 1103, 68, 1104, 68, 68, 68, 68, + 1096, 1105, 68, 68, 68, 1106, 68, 1101, 1102, 68, + 68, 1108, 68, 68, 1111, 68, 68, 68, 68, 1116, + 68, 1107, 1110, 1109, 1114, 1118, 68, 68, 68, 1120, + 1112, 1119, 68, 1115, 68, 1117, 68, 1121, 1113, 1124, + 68, 1125, 68, 1123, 1122, 1126, 68, 1127, 68, 68, + 1131, 68, 68, 68, 68, 1128, 68, 68, 68, 1138, + 68, 1135, 1134, 68, 1130, 68, 68, 1129, 1132, 68, + 1139, 68, 1133, 1140, 68, 1143, 68, 1137, 1144, 68, + + 68, 1148, 68, 1136, 68, 1142, 1141, 68, 1145, 1150, + 68, 1147, 1146, 68, 1153, 68, 1149, 126, 1152, 1154, + 68, 1155, 68, 68, 1157, 68, 1151, 68, 1156, 68, + 1158, 1159, 68, 68, 68, 1161, 1162, 68, 1160, 1163, + 68, 68, 68, 1167, 68, 1164, 1166, 68, 1169, 68, + 68, 1168, 68, 1172, 68, 1173, 68, 1174, 68, 1175, + 68, 1165, 68, 68, 1177, 1170, 68, 68, 1180, 68, + 1171, 1178, 68, 68, 1176, 68, 68, 1185, 68, 124, + 122, 1181, 121, 119, 117, 68, 1179, 1186, 1182, 1183, + 1186, 1186, 1186, 1186, 1186, 1184, 40, 40, 40, 40, + + 40, 40, 45, 45, 45, 45, 45, 45, 50, 50, + 50, 50, 50, 50, 56, 56, 56, 56, 56, 56, + 61, 61, 61, 61, 61, 61, 71, 71, 71, 71, + 71, 71, 116, 116, 1186, 1186, 116, 116, 118, 118, + 1186, 118, 1186, 118, 120, 1186, 1186, 1186, 1186, 120, + 123, 123, 1186, 1186, 123, 123, 125, 1186, 1186, 1186, + 1186, 125, 127, 127, 127, 127, 127, 127, 72, 72, + 72, 72, 72, 72, 13, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186 } ; -static yyconst flex_int16_t yy_chk[2399] = +static yyconst flex_int16_t yy_chk[2415] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1098,258 +1101,260 @@ static yyconst flex_int16_t yy_chk[2399] = 11, 11, 11, 11, 33, 20, 83, 20, 20, 11, 20, 25, 79, 21, 28, 20, 30, 24, 11, 12, - 12, 12, 12, 12, 12, 132, 25, 26, 26, 28, - 12, 30, 29, 132, 27, 283, 26, 29, 27, 12, + 12, 12, 12, 12, 12, 133, 25, 26, 26, 28, + 12, 30, 29, 133, 27, 1192, 26, 29, 27, 12, 19, 19, 19, 19, 23, 19, 22, 22, 27, 23, 19, 19, 31, 23, 22, 34, 23, 32, 32, 23, - 283, 22, 32, 36, 34, 60, 60, 31, 36, 35, - 34, 31, 38, 34, 35, 37, 37, 69, 32, 77, - 34, 69, 66, 36, 35, 75, 38, 35, 75, 39, - 39, 38, 375, 37, 39, 55, 66, 55, 55, 77, - 55, 63, 63, 63, 63, 65, 63, 65, 65, 375, - - 65, 68, 63, 68, 68, 76, 68, 78, 81, 76, - 78, 68, 71, 71, 71, 71, 80, 71, 82, 84, - 81, 85, 71, 71, 84, 86, 87, 88, 89, 90, - 80, 88, 90, 89, 91, 90, 82, 84, 99, 93, - 92, 85, 93, 86, 87, 92, 93, 94, 95, 90, - 96, 94, 97, 91, 98, 95, 100, 101, 99, 97, - 100, 102, 103, 96, 104, 92, 105, 98, 106, 110, - 102, 107, 108, 108, 109, 101, 111, 104, 112, 113, - 114, 105, 103, 112, 116, 116, 131, 106, 134, 107, - 110, 113, 109, 108, 118, 123, 123, 118, 114, 111, - - 120, 131, 120, 120, 125, 120, 125, 125, 134, 125, - 126, 126, 126, 126, 128, 126, 133, 128, 129, 130, - 135, 126, 136, 129, 130, 135, 141, 136, 137, 139, - 139, 133, 140, 137, 138, 142, 143, 140, 138, 142, - 146, 143, 144, 138, 148, 145, 147, 149, 138, 141, - 153, 147, 151, 151, 138, 138, 144, 145, 146, 160, - 145, 150, 152, 149, 148, 154, 150, 152, 161, 155, - 154, 153, 156, 152, 155, 157, 158, 156, 159, 160, - 157, 162, 163, 158, 159, 164, 165, 166, 167, 162, - 161, 165, 168, 169, 168, 170, 172, 163, 171, 171, - - 169, 172, 173, 175, 174, 164, 174, 173, 167, 166, - 176, 178, 177, 179, 170, 175, 178, 180, 179, 172, - 177, 181, 182, 174, 183, 184, 184, 183, 186, 176, - 182, 187, 180, 185, 185, 188, 189, 191, 188, 181, - 189, 190, 192, 192, 186, 195, 187, 193, 194, 196, - 190, 191, 193, 194, 197, 198, 198, 199, 201, 200, - 203, 202, 204, 201, 202, 195, 206, 197, 205, 210, - 196, 200, 203, 208, 208, 199, 209, 205, 206, 209, - 211, 207, 204, 207, 207, 212, 210, 213, 213, 210, - 214, 214, 215, 216, 212, 211, 217, 218, 219, 220, - - 221, 217, 223, 219, 222, 221, 224, 215, 220, 222, - 226, 225, 228, 216, 225, 230, 229, 218, 231, 233, - 224, 234, 223, 232, 226, 229, 234, 228, 235, 236, - 225, 227, 238, 227, 227, 239, 230, 231, 232, 233, - 237, 242, 1183, 227, 236, 227, 227, 227, 235, 239, - 227, 240, 238, 243, 244, 237, 240, 241, 241, 245, - 241, 242, 246, 247, 248, 249, 246, 250, 251, 243, - 244, 252, 251, 245, 249, 262, 250, 253, 248, 254, - 252, 247, 253, 255, 256, 254, 258, 249, 255, 257, - 257, 258, 259, 260, 261, 266, 262, 256, 269, 261, - - 267, 259, 263, 263, 268, 260, 265, 265, 267, 271, - 269, 272, 273, 268, 274, 275, 266, 273, 276, 277, - 275, 279, 274, 278, 278, 272, 281, 280, 286, 271, - 285, 278, 280, 282, 282, 287, 276, 280, 277, 278, - 286, 279, 284, 284, 288, 285, 281, 289, 290, 278, - 287, 291, 292, 290, 294, 293, 295, 297, 294, 298, - 291, 295, 296, 288, 299, 299, 300, 301, 302, 289, - 293, 292, 298, 303, 296, 297, 303, 304, 300, 301, - 305, 305, 307, 302, 306, 306, 316, 307, 308, 308, - 304, 309, 309, 310, 311, 507, 312, 313, 310, 311, - - 312, 314, 313, 315, 317, 314, 316, 318, 315, 317, - 319, 320, 320, 319, 321, 322, 325, 323, 319, 321, - 323, 318, 319, 324, 322, 326, 327, 324, 328, 325, - 326, 327, 329, 330, 328, 329, 330, 331, 332, 333, - 334, 335, 331, 336, 341, 334, 335, 336, 336, 324, - 337, 338, 343, 333, 339, 337, 332, 339, 340, 344, - 338, 342, 340, 340, 341, 342, 345, 343, 346, 347, - 347, 348, 350, 346, 349, 348, 351, 344, 352, 349, - 353, 345, 358, 355, 354, 361, 127, 353, 350, 354, - 355, 352, 356, 357, 359, 351, 360, 356, 357, 361, - - 358, 359, 362, 363, 364, 360, 363, 362, 364, 365, - 366, 366, 368, 370, 369, 371, 378, 368, 369, 366, - 372, 383, 379, 371, 380, 378, 379, 382, 384, 380, - 365, 370, 382, 385, 385, 372, 381, 386, 391, 383, - 381, 387, 387, 381, 386, 388, 389, 389, 381, 390, - 392, 393, 390, 384, 381, 381, 394, 394, 391, 393, - 388, 395, 396, 397, 397, 398, 399, 396, 398, 392, - 400, 401, 399, 402, 404, 403, 395, 407, 400, 401, - 403, 404, 405, 405, 406, 409, 410, 412, 409, 406, - 412, 402, 411, 411, 414, 415, 407, 416, 412, 415, - - 410, 417, 419, 414, 418, 420, 421, 423, 419, 422, - 417, 421, 424, 422, 426, 425, 416, 433, 418, 420, - 425, 427, 427, 428, 424, 430, 423, 429, 428, 431, - 429, 432, 434, 434, 436, 426, 432, 433, 435, 435, - 437, 438, 431, 430, 437, 439, 442, 440, 444, 436, - 442, 443, 445, 446, 447, 451, 124, 448, 452, 452, - 438, 440, 448, 444, 449, 449, 445, 451, 447, 439, - 441, 450, 449, 441, 446, 441, 443, 453, 455, 441, - 454, 441, 453, 456, 459, 450, 441, 461, 454, 459, - 449, 462, 455, 457, 457, 460, 463, 465, 460, 464, - - 466, 463, 456, 467, 462, 466, 461, 468, 464, 469, - 471, 122, 472, 473, 469, 474, 465, 472, 473, 475, - 474, 468, 481, 467, 477, 471, 476, 476, 475, 477, - 479, 479, 480, 482, 479, 480, 483, 481, 484, 483, - 485, 486, 487, 484, 486, 485, 488, 490, 489, 491, - 496, 493, 490, 482, 491, 492, 497, 497, 492, 494, - 487, 489, 493, 495, 494, 496, 488, 498, 495, 499, - 500, 501, 502, 504, 505, 501, 503, 508, 509, 511, - 510, 514, 500, 499, 511, 503, 498, 121, 515, 512, - 502, 508, 504, 509, 512, 514, 513, 517, 516, 505, - - 510, 513, 515, 516, 518, 519, 519, 520, 521, 522, - 523, 524, 517, 526, 522, 528, 525, 521, 527, 518, - 525, 529, 530, 532, 533, 520, 531, 534, 526, 523, - 524, 536, 531, 527, 528, 537, 534, 538, 532, 119, - 530, 539, 529, 537, 533, 536, 539, 540, 541, 542, - 543, 540, 540, 544, 544, 543, 547, 538, 542, 545, - 548, 541, 546, 546, 545, 552, 549, 550, 551, 552, - 547, 549, 550, 551, 553, 554, 555, 556, 548, 554, - 557, 558, 561, 553, 560, 559, 562, 117, 553, 567, - 553, 555, 553, 559, 557, 556, 563, 563, 564, 564, - - 558, 565, 560, 566, 566, 562, 565, 561, 568, 567, - 569, 570, 571, 572, 574, 569, 568, 575, 571, 574, - 572, 576, 575, 577, 578, 579, 576, 580, 577, 570, - 581, 581, 582, 578, 583, 584, 585, 587, 580, 586, - 584, 588, 588, 589, 579, 590, 591, 595, 592, 594, - 596, 115, 582, 594, 594, 587, 585, 583, 598, 586, - 597, 600, 599, 589, 591, 597, 599, 601, 596, 602, - 590, 592, 603, 595, 605, 604, 606, 603, 598, 605, - 600, 601, 604, 607, 608, 609, 610, 616, 602, 617, - 611, 610, 607, 612, 606, 611, 613, 613, 612, 608, - - 615, 616, 619, 619, 620, 615, 609, 618, 617, 621, - 623, 618, 618, 622, 624, 621, 625, 626, 622, 628, - 627, 74, 629, 620, 630, 630, 631, 636, 632, 623, - 631, 634, 636, 624, 627, 625, 626, 629, 633, 637, - 628, 632, 635, 635, 638, 639, 645, 633, 646, 638, - 639, 634, 642, 642, 644, 647, 648, 644, 650, 637, - 647, 645, 649, 649, 651, 651, 652, 655, 653, 658, - 654, 648, 656, 646, 654, 659, 661, 656, 650, 653, - 660, 660, 662, 663, 667, 672, 655, 658, 652, 659, - 664, 668, 664, 665, 666, 669, 661, 673, 665, 666, - - 673, 669, 662, 663, 667, 668, 671, 674, 674, 675, - 672, 671, 676, 677, 678, 679, 679, 680, 677, 678, - 681, 682, 680, 683, 685, 684, 686, 675, 687, 688, - 689, 686, 676, 691, 72, 690, 693, 685, 681, 684, - 691, 682, 696, 683, 692, 696, 697, 698, 687, 688, - 690, 689, 693, 692, 700, 697, 692, 701, 699, 702, - 702, 703, 701, 700, 704, 705, 698, 699, 706, 707, - 699, 708, 708, 709, 710, 712, 718, 704, 717, 713, - 712, 703, 706, 705, 713, 714, 717, 707, 719, 709, - 715, 714, 710, 715, 718, 720, 721, 723, 724, 715, - - 725, 726, 724, 727, 728, 725, 726, 719, 727, 729, - 730, 720, 732, 728, 721, 731, 731, 723, 733, 734, - 737, 736, 735, 738, 744, 730, 732, 735, 752, 738, - 733, 734, 729, 736, 739, 739, 740, 740, 737, 741, - 742, 742, 743, 745, 754, 744, 752, 743, 741, 746, - 746, 747, 747, 748, 748, 749, 751, 753, 749, 755, - 755, 751, 753, 745, 757, 756, 758, 759, 760, 754, - 756, 761, 762, 762, 763, 765, 757, 767, 757, 764, - 764, 766, 768, 757, 767, 769, 758, 759, 760, 771, - 766, 768, 761, 770, 770, 765, 772, 774, 775, 776, - - 763, 777, 774, 775, 778, 779, 780, 781, 777, 778, - 782, 769, 772, 785, 779, 771, 784, 783, 786, 776, - 793, 795, 781, 783, 793, 784, 780, 790, 787, 782, - 70, 788, 786, 787, 785, 788, 788, 789, 791, 790, - 792, 794, 789, 791, 796, 797, 795, 799, 801, 796, - 798, 801, 792, 794, 813, 798, 802, 802, 804, 799, - 803, 803, 810, 805, 804, 806, 807, 797, 805, 812, - 812, 806, 813, 814, 810, 807, 819, 824, 818, 820, - 820, 812, 814, 818, 821, 826, 821, 822, 822, 825, - 825, 827, 828, 819, 830, 829, 831, 824, 838, 834, - - 833, 834, 835, 827, 828, 833, 826, 829, 836, 830, - 837, 837, 840, 839, 840, 843, 831, 836, 839, 844, - 835, 841, 842, 845, 838, 846, 841, 842, 845, 847, - 846, 848, 850, 843, 849, 849, 855, 851, 852, 844, - 853, 854, 856, 860, 850, 848, 851, 852, 847, 851, - 865, 857, 853, 859, 854, 861, 855, 857, 856, 859, - 862, 862, 863, 866, 861, 864, 864, 866, 860, 865, - 867, 863, 868, 869, 869, 867, 870, 873, 874, 874, - 875, 875, 876, 877, 870, 868, 873, 878, 877, 879, - 880, 878, 881, 882, 876, 880, 883, 884, 885, 887, - - 888, 889, 887, 896, 879, 890, 890, 891, 891, 884, - 893, 881, 882, 888, 889, 892, 892, 883, 902, 885, - 894, 894, 896, 893, 895, 895, 897, 897, 898, 898, - 900, 901, 901, 903, 903, 900, 904, 902, 905, 906, - 907, 907, 906, 909, 905, 908, 908, 910, 910, 912, - 912, 913, 914, 914, 904, 915, 907, 917, 916, 918, - 919, 920, 909, 916, 918, 921, 922, 915, 923, 925, - 920, 922, 923, 927, 921, 919, 929, 913, 917, 928, - 928, 929, 927, 930, 930, 932, 933, 935, 936, 925, - 935, 941, 930, 936, 937, 937, 939, 938, 933, 939, - - 932, 938, 940, 940, 942, 943, 946, 944, 945, 948, - 943, 941, 944, 947, 945, 952, 952, 948, 947, 949, - 965, 949, 946, 964, 942, 955, 955, 958, 958, 960, - 960, 962, 963, 963, 976, 966, 962, 968, 968, 964, - 966, 971, 965, 972, 973, 972, 971, 974, 974, 973, - 975, 977, 976, 978, 979, 980, 981, 981, 982, 983, - 984, 985, 975, 977, 986, 978, 979, 982, 987, 988, - 67, 989, 990, 993, 985, 980, 989, 990, 991, 991, - 984, 996, 987, 994, 994, 983, 997, 988, 986, 998, - 996, 993, 999, 1000, 1001, 1001, 1002, 1004, 1003, 1005, - - 1009, 1002, 1010, 1012, 997, 1010, 1013, 998, 999, 1011, - 1011, 1016, 1000, 1003, 1015, 1015, 1004, 1020, 1012, 1005, - 1009, 1017, 1017, 1021, 1013, 1019, 1019, 1024, 1022, 1023, - 1016, 1026, 1021, 1022, 1023, 1024, 1027, 1028, 1029, 1020, - 1032, 1027, 1028, 1030, 1030, 1032, 1026, 1031, 1031, 1033, - 1033, 1034, 1034, 1029, 1036, 1037, 1039, 1038, 1044, 1036, - 1038, 1040, 1041, 1041, 1042, 1039, 1045, 1037, 1046, 1046, - 1040, 1047, 1056, 1042, 1048, 1051, 1049, 1044, 1052, 61, - 1047, 1049, 1048, 1061, 1051, 1045, 1054, 1054, 1057, 1057, - 1058, 1052, 1056, 1058, 1059, 1059, 1060, 1060, 1062, 1063, - - 1068, 1061, 1064, 1064, 1063, 1065, 1068, 1071, 1072, 1065, - 1073, 1074, 1062, 1075, 1076, 1077, 1072, 1079, 1075, 1078, - 1081, 1082, 1089, 1081, 1083, 1083, 1071, 1074, 1078, 1073, - 56, 1084, 1088, 1085, 1076, 1084, 1087, 1079, 1092, 1082, - 1105, 1077, 1085, 1092, 1088, 1087, 1094, 1089, 1093, 1093, - 1097, 1096, 1098, 1099, 1101, 1094, 1096, 1100, 1100, 1097, - 1102, 1103, 1104, 1106, 1107, 1107, 1105, 1104, 1099, 1103, - 1101, 1098, 1108, 1110, 1110, 1111, 1112, 1108, 1115, 1102, - 1113, 1113, 1106, 1114, 1114, 1117, 1136, 1116, 1118, 1118, - 1119, 1120, 1120, 1121, 1136, 1111, 1123, 1115, 1112, 1116, - - 51, 1123, 1119, 1124, 1124, 1117, 1125, 1125, 1126, 1126, - 1127, 1142, 1121, 1128, 1128, 1127, 1130, 1130, 1132, 1132, - 1133, 1137, 1137, 1138, 1140, 1133, 1143, 1152, 1138, 1140, - 1143, 1142, 1147, 1147, 1149, 1151, 1151, 1154, 1149, 1155, - 1155, 1161, 1152, 1156, 1156, 1157, 1157, 1159, 1159, 1162, - 1162, 1168, 1167, 1161, 1170, 1154, 1167, 1169, 1169, 1172, - 1174, 1173, 50, 1170, 1175, 1175, 45, 40, 14, 13, - 0, 1168, 0, 0, 1172, 1173, 0, 0, 0, 1174, - 1178, 1178, 1178, 1178, 1178, 1178, 1179, 1179, 1179, 1179, - 1179, 1179, 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181, - - 1181, 1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182, - 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1185, 0, 0, - 1185, 1185, 1186, 1186, 0, 1186, 0, 1186, 1187, 0, - 0, 0, 0, 1187, 1188, 1188, 0, 0, 1188, 1188, - 1189, 0, 0, 0, 0, 1189, 1190, 1190, 1190, 1190, - 1190, 1190, 1191, 1191, 1191, 1191, 1191, 1191, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177 - + 105, 22, 32, 38, 34, 37, 37, 31, 69, 35, + 34, 31, 69, 34, 35, 105, 36, 38, 32, 66, + 34, 36, 38, 37, 35, 39, 39, 35, 60, 60, + 39, 36, 55, 66, 55, 55, 36, 55, 63, 63, + 63, 63, 65, 63, 65, 65, 77, 65, 68, 63, + + 68, 68, 75, 68, 78, 75, 81, 78, 68, 71, + 71, 71, 71, 76, 71, 80, 77, 76, 81, 71, + 71, 82, 84, 85, 86, 89, 87, 84, 88, 80, + 89, 90, 88, 91, 90, 96, 92, 90, 95, 82, + 84, 92, 86, 85, 87, 95, 93, 98, 96, 93, + 94, 90, 91, 93, 94, 97, 99, 101, 102, 100, + 98, 92, 97, 100, 103, 104, 106, 102, 107, 108, + 109, 109, 110, 111, 108, 101, 99, 112, 104, 115, + 114, 170, 113, 170, 103, 106, 107, 113, 117, 117, + 110, 109, 114, 119, 111, 129, 119, 115, 129, 121, + + 112, 121, 121, 130, 121, 124, 124, 126, 130, 126, + 126, 132, 126, 127, 127, 127, 127, 131, 127, 134, + 135, 142, 131, 136, 127, 137, 132, 138, 136, 147, + 137, 514, 138, 141, 134, 140, 140, 144, 141, 143, + 135, 139, 144, 143, 142, 139, 145, 147, 148, 149, + 139, 146, 150, 148, 151, 139, 152, 152, 154, 151, + 145, 139, 139, 146, 159, 153, 146, 155, 150, 149, + 153, 159, 155, 156, 161, 157, 153, 158, 156, 154, + 157, 160, 158, 162, 163, 164, 165, 160, 166, 167, + 168, 171, 163, 166, 161, 169, 183, 172, 171, 174, + + 164, 173, 173, 128, 174, 162, 165, 175, 168, 177, + 178, 167, 175, 125, 183, 169, 172, 176, 179, 176, + 180, 177, 174, 181, 182, 180, 179, 184, 181, 178, + 185, 186, 186, 185, 188, 184, 176, 187, 187, 182, + 189, 190, 191, 192, 190, 193, 191, 194, 194, 195, + 188, 196, 192, 197, 195, 189, 196, 198, 199, 193, + 200, 200, 201, 202, 203, 204, 206, 205, 204, 203, + 208, 199, 207, 197, 209, 202, 209, 209, 198, 205, + 201, 207, 208, 210, 210, 211, 206, 212, 211, 214, + 213, 215, 215, 216, 216, 217, 218, 219, 214, 220, + + 222, 221, 219, 222, 212, 213, 221, 212, 223, 224, + 217, 226, 227, 225, 224, 229, 218, 223, 225, 220, + 228, 231, 234, 228, 232, 233, 227, 236, 238, 229, + 235, 226, 237, 232, 239, 240, 231, 237, 241, 228, + 230, 234, 230, 230, 245, 235, 233, 236, 238, 239, + 240, 242, 230, 246, 230, 230, 230, 243, 241, 230, + 244, 244, 243, 244, 245, 242, 247, 248, 249, 246, + 250, 251, 249, 254, 252, 253, 307, 254, 255, 307, + 259, 248, 247, 252, 253, 251, 256, 255, 250, 257, + 263, 256, 258, 259, 262, 257, 252, 258, 260, 260, + + 261, 264, 263, 262, 265, 261, 264, 266, 266, 268, + 268, 269, 270, 271, 272, 274, 275, 281, 276, 277, + 270, 279, 271, 276, 278, 265, 272, 277, 280, 278, + 275, 283, 269, 282, 282, 274, 281, 284, 285, 279, + 287, 282, 284, 286, 286, 288, 288, 284, 289, 282, + 280, 283, 290, 291, 292, 293, 294, 295, 285, 282, + 296, 294, 301, 289, 290, 287, 295, 297, 291, 300, + 298, 299, 302, 292, 298, 304, 299, 293, 305, 296, + 301, 300, 297, 303, 303, 302, 306, 304, 123, 308, + 305, 309, 309, 310, 310, 311, 312, 312, 313, 313, + + 311, 306, 308, 314, 315, 320, 316, 317, 314, 315, + 316, 318, 317, 319, 321, 318, 322, 326, 319, 321, + 323, 324, 324, 323, 325, 320, 326, 329, 323, 325, + 322, 327, 323, 328, 327, 346, 330, 328, 331, 332, + 329, 330, 336, 331, 333, 332, 334, 333, 335, 334, + 337, 338, 339, 335, 122, 346, 338, 339, 340, 328, + 336, 341, 340, 340, 337, 342, 341, 343, 344, 345, + 343, 345, 344, 344, 342, 347, 348, 349, 350, 347, + 351, 352, 352, 353, 354, 351, 355, 353, 356, 354, + 357, 348, 358, 350, 363, 349, 359, 360, 120, 358, + + 361, 359, 355, 357, 360, 361, 362, 356, 364, 365, + 366, 362, 363, 368, 367, 364, 368, 369, 365, 367, + 370, 369, 371, 371, 366, 373, 375, 376, 374, 380, + 373, 371, 374, 377, 383, 376, 384, 385, 389, 388, + 384, 370, 385, 383, 375, 387, 380, 391, 377, 386, + 387, 390, 390, 386, 391, 393, 386, 388, 392, 392, + 396, 386, 397, 389, 394, 394, 395, 386, 386, 395, + 393, 398, 399, 399, 400, 402, 402, 401, 404, 398, + 396, 397, 401, 403, 404, 405, 403, 406, 407, 400, + 409, 408, 412, 405, 415, 406, 408, 409, 410, 410, + + 411, 414, 416, 416, 414, 411, 407, 417, 415, 419, + 417, 412, 420, 421, 422, 423, 425, 421, 417, 429, + 424, 420, 425, 426, 423, 428, 427, 430, 432, 428, + 419, 427, 436, 422, 424, 431, 439, 426, 429, 430, + 431, 433, 433, 434, 435, 437, 438, 435, 434, 432, + 436, 438, 440, 440, 441, 441, 439, 442, 437, 443, + 444, 445, 446, 443, 448, 449, 450, 452, 448, 451, + 453, 492, 442, 454, 455, 455, 446, 492, 454, 444, + 456, 450, 455, 451, 453, 445, 447, 457, 452, 447, + 449, 447, 458, 458, 456, 447, 459, 447, 460, 457, + + 455, 459, 447, 461, 462, 465, 460, 463, 463, 466, + 465, 467, 466, 468, 469, 470, 471, 461, 473, 469, + 472, 507, 474, 462, 470, 472, 468, 475, 477, 478, + 467, 481, 475, 507, 478, 471, 474, 479, 473, 480, + 481, 487, 479, 477, 480, 482, 482, 483, 486, 485, + 485, 486, 483, 485, 488, 489, 487, 490, 489, 491, + 493, 494, 490, 493, 491, 495, 497, 496, 498, 499, + 500, 497, 499, 498, 488, 503, 505, 501, 502, 494, + 496, 500, 501, 502, 506, 495, 504, 504, 508, 509, + 503, 510, 508, 511, 512, 505, 515, 517, 506, 516, + + 510, 518, 521, 519, 520, 524, 518, 509, 519, 520, + 515, 522, 511, 523, 516, 525, 521, 517, 523, 512, + 524, 526, 526, 527, 528, 522, 529, 530, 531, 533, + 525, 529, 532, 528, 534, 535, 532, 536, 537, 538, + 539, 527, 540, 541, 533, 538, 530, 531, 545, 534, + 543, 544, 541, 554, 535, 539, 537, 118, 536, 544, + 546, 548, 540, 549, 543, 546, 547, 554, 545, 555, + 547, 547, 549, 550, 548, 551, 551, 552, 550, 553, + 553, 556, 552, 557, 558, 563, 556, 555, 557, 558, + 559, 560, 561, 562, 559, 565, 561, 564, 566, 567, + + 560, 568, 570, 563, 575, 560, 566, 560, 562, 560, + 116, 564, 569, 569, 565, 571, 571, 567, 572, 572, + 573, 570, 574, 574, 575, 573, 568, 576, 577, 578, + 579, 580, 582, 577, 583, 576, 579, 582, 580, 583, + 584, 585, 586, 587, 588, 584, 585, 578, 589, 589, + 590, 586, 591, 592, 593, 588, 594, 598, 592, 595, + 596, 596, 587, 597, 600, 603, 599, 602, 604, 606, + 590, 602, 602, 605, 593, 591, 594, 595, 605, 608, + 609, 607, 598, 597, 599, 607, 604, 600, 610, 606, + 611, 603, 612, 614, 609, 611, 613, 615, 608, 612, + + 616, 613, 617, 618, 619, 620, 615, 610, 618, 619, + 620, 614, 621, 621, 623, 616, 624, 625, 628, 623, + 626, 627, 627, 617, 626, 626, 629, 631, 630, 632, + 624, 633, 629, 630, 634, 635, 625, 628, 636, 637, + 638, 638, 640, 639, 642, 645, 631, 639, 632, 635, + 633, 641, 655, 634, 637, 640, 643, 643, 644, 636, + 641, 646, 648, 644, 642, 645, 646, 648, 651, 651, + 653, 654, 657, 653, 656, 658, 658, 655, 659, 656, + 660, 660, 661, 662, 663, 665, 654, 657, 663, 664, + 665, 667, 668, 670, 662, 669, 669, 671, 659, 672, + + 673, 676, 673, 681, 661, 674, 668, 675, 664, 667, + 674, 677, 675, 670, 678, 683, 683, 671, 680, 672, + 678, 676, 684, 680, 682, 677, 685, 682, 681, 686, + 687, 688, 688, 689, 686, 687, 690, 691, 689, 692, + 684, 693, 695, 694, 696, 697, 685, 695, 698, 701, + 74, 699, 702, 700, 690, 693, 694, 691, 701, 692, + 700, 701, 706, 707, 696, 697, 699, 705, 702, 698, + 705, 706, 708, 710, 709, 711, 711, 712, 710, 713, + 714, 708, 707, 709, 708, 715, 716, 717, 717, 718, + 719, 721, 713, 727, 726, 722, 721, 712, 714, 715, + + 722, 723, 726, 724, 716, 718, 724, 723, 719, 728, + 729, 727, 724, 730, 732, 733, 734, 735, 736, 733, + 737, 734, 735, 736, 738, 739, 729, 741, 728, 737, + 742, 730, 740, 740, 732, 746, 743, 745, 744, 747, + 739, 741, 742, 744, 753, 747, 754, 738, 743, 745, + 748, 748, 750, 746, 749, 749, 751, 751, 752, 755, + 755, 750, 761, 752, 763, 753, 754, 756, 756, 757, + 757, 758, 760, 762, 758, 764, 764, 760, 762, 765, + 761, 766, 767, 768, 765, 769, 770, 771, 771, 763, + 772, 773, 773, 766, 774, 766, 778, 775, 779, 779, + + 766, 776, 767, 768, 777, 769, 775, 770, 776, 780, + 781, 785, 783, 777, 774, 784, 772, 783, 786, 787, + 784, 788, 778, 789, 787, 786, 781, 790, 791, 794, + 788, 785, 792, 802, 795, 780, 793, 802, 792, 796, + 799, 798, 790, 789, 796, 793, 798, 791, 795, 797, + 794, 800, 799, 797, 797, 801, 800, 803, 804, 805, + 806, 807, 808, 72, 805, 810, 807, 801, 810, 803, + 811, 811, 812, 812, 808, 813, 816, 819, 822, 814, + 815, 813, 806, 804, 814, 816, 815, 821, 821, 819, + 827, 823, 828, 829, 829, 827, 822, 831, 831, 821, + + 823, 830, 833, 830, 834, 834, 835, 836, 837, 828, + 839, 838, 840, 842, 843, 844, 843, 845, 842, 836, + 837, 847, 833, 838, 853, 839, 845, 835, 846, 846, + 848, 852, 840, 844, 849, 848, 849, 850, 851, 856, + 854, 855, 850, 851, 853, 854, 855, 847, 857, 852, + 858, 858, 859, 864, 860, 862, 861, 863, 856, 865, + 869, 70, 857, 860, 859, 861, 860, 862, 866, 870, + 863, 868, 872, 864, 866, 865, 874, 868, 870, 871, + 871, 872, 873, 873, 875, 869, 876, 877, 875, 878, + 878, 876, 885, 879, 882, 874, 883, 883, 884, 884, + + 877, 879, 886, 882, 885, 887, 888, 886, 889, 887, + 890, 891, 892, 889, 893, 894, 896, 915, 897, 896, + 915, 888, 898, 899, 899, 905, 893, 900, 900, 890, + 891, 897, 902, 892, 911, 898, 894, 901, 901, 903, + 903, 904, 904, 913, 905, 902, 906, 906, 907, 907, + 909, 910, 910, 911, 914, 909, 912, 912, 916, 916, + 914, 913, 917, 917, 918, 919, 919, 921, 921, 922, + 923, 923, 924, 925, 916, 926, 927, 928, 925, 929, + 930, 927, 931, 918, 924, 934, 932, 931, 929, 930, + 932, 936, 928, 937, 937, 922, 926, 938, 939, 939, + + 936, 941, 938, 942, 950, 934, 944, 939, 945, 944, + 946, 946, 951, 945, 947, 942, 941, 948, 947, 955, + 948, 949, 949, 952, 950, 953, 956, 954, 952, 957, + 953, 956, 951, 954, 958, 955, 958, 957, 961, 961, + 964, 964, 967, 967, 969, 969, 971, 972, 972, 973, + 974, 971, 975, 977, 977, 980, 981, 975, 981, 982, + 980, 983, 983, 984, 982, 973, 985, 986, 987, 988, + 989, 992, 974, 990, 990, 984, 991, 995, 993, 986, + 987, 988, 994, 998, 985, 991, 996, 997, 998, 999, + 989, 1000, 1000, 1002, 999, 994, 1006, 992, 993, 1005, + + 996, 995, 1003, 1003, 1007, 997, 1009, 1008, 1005, 1010, + 1010, 1002, 1011, 1012, 1006, 1013, 1014, 1011, 1018, 1020, + 1020, 1019, 1007, 1008, 1019, 1009, 1021, 1022, 1012, 1024, + 1024, 1025, 1026, 1026, 1013, 1029, 1014, 1030, 1018, 1028, + 1028, 1021, 1031, 1032, 1033, 1022, 1030, 1031, 1032, 1035, + 1025, 1036, 1033, 1037, 1038, 67, 1036, 1029, 1037, 1039, + 1039, 1040, 1040, 1041, 1035, 1042, 1042, 1045, 1041, 1038, + 1043, 1043, 1045, 1046, 1047, 1048, 1053, 1047, 1049, 1050, + 1050, 1051, 1054, 1056, 1048, 1046, 1057, 1049, 1055, 1055, + 1051, 1058, 1056, 1060, 1057, 1053, 1058, 1061, 1063, 1063, + + 1065, 1054, 1060, 1066, 1066, 1067, 1068, 1068, 1067, 1070, + 1061, 1069, 1069, 1072, 1071, 1073, 1073, 1074, 1072, 1077, + 1065, 1074, 1080, 1081, 1082, 1077, 1083, 1070, 1071, 1084, + 1085, 1081, 1086, 1088, 1084, 1087, 1090, 1091, 1098, 1090, + 1094, 1080, 1083, 1082, 1087, 1092, 1092, 1093, 1096, 1094, + 1085, 1093, 1097, 1088, 1101, 1091, 1103, 1096, 1086, 1101, + 1102, 1102, 1105, 1098, 1097, 1103, 1106, 1105, 1107, 1108, + 1109, 1109, 1110, 1111, 1112, 1106, 1113, 1114, 1115, 1116, + 1116, 1113, 1112, 1121, 1108, 1117, 1120, 1107, 1110, 1124, + 1117, 1126, 1111, 1119, 1119, 1122, 1122, 1115, 1123, 1123, + + 1125, 1127, 1127, 1114, 1128, 1121, 1120, 1130, 1124, 1129, + 1129, 1126, 1125, 1132, 1133, 1133, 1128, 61, 1132, 1134, + 1134, 1135, 1135, 1136, 1137, 1137, 1130, 1145, 1136, 1139, + 1139, 1141, 1141, 1142, 1147, 1145, 1146, 1146, 1142, 1147, + 1149, 1151, 1152, 1156, 1156, 1149, 1152, 1158, 1160, 1160, + 1161, 1158, 1163, 1164, 1164, 1165, 1165, 1166, 1166, 1168, + 1168, 1151, 1170, 1171, 1171, 1161, 1177, 1176, 1178, 1178, + 1163, 1176, 1179, 1181, 1170, 1182, 1183, 1184, 1184, 56, + 51, 1179, 50, 45, 40, 14, 1177, 13, 1181, 1182, + 0, 0, 0, 0, 0, 1183, 1187, 1187, 1187, 1187, + + 1187, 1187, 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, + 1189, 1189, 1189, 1189, 1190, 1190, 1190, 1190, 1190, 1190, + 1191, 1191, 1191, 1191, 1191, 1191, 1193, 1193, 1193, 1193, + 1193, 1193, 1194, 1194, 0, 0, 1194, 1194, 1195, 1195, + 0, 1195, 0, 1195, 1196, 0, 0, 0, 0, 1196, + 1197, 1197, 0, 0, 1197, 1197, 1198, 0, 0, 0, + 0, 1198, 1199, 1199, 1199, 1199, 1199, 1199, 1200, 1200, + 1200, 1200, 1200, 1200, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186 } ; static yy_state_type yy_last_accepting_state; @@ -1476,7 +1481,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 1478 "" +#line 1483 "" #define INITIAL 0 #define quotedstring 1 @@ -1663,7 +1668,7 @@ YY_DECL #line 123 "util/configlexer.lex" -#line 1665 "" +#line 1670 "" if ( !(yy_init) ) { @@ -1722,13 +1727,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 >= 1178 ) + if ( yy_current_state >= 1187 ) 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] != 2359 ); + while ( yy_base[yy_current_state] != 2375 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1855,464 +1860,469 @@ YY_RULE_SETUP case 20: YY_RULE_SETUP #line 145 "util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 21: YY_RULE_SETUP #line 146 "util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 22: YY_RULE_SETUP #line 147 "util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 23: YY_RULE_SETUP #line 148 "util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 24: YY_RULE_SETUP #line 149 "util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 25: YY_RULE_SETUP #line 150 "util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 26: YY_RULE_SETUP #line 151 "util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 27: YY_RULE_SETUP #line 152 "util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 28: YY_RULE_SETUP #line 153 "util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 29: YY_RULE_SETUP #line 154 "util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 30: YY_RULE_SETUP #line 155 "util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 31: YY_RULE_SETUP #line 156 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 32: YY_RULE_SETUP #line 157 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 33: YY_RULE_SETUP #line 158 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 34: YY_RULE_SETUP #line 159 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 35: YY_RULE_SETUP #line 160 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 36: YY_RULE_SETUP #line 161 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 37: YY_RULE_SETUP #line 162 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 38: YY_RULE_SETUP #line 163 "util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 39: YY_RULE_SETUP #line 164 "util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 40: YY_RULE_SETUP #line 165 "util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 41: YY_RULE_SETUP #line 166 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 42: YY_RULE_SETUP #line 167 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 43: YY_RULE_SETUP #line 168 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 44: YY_RULE_SETUP #line 169 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNNSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 45: YY_RULE_SETUP #line 170 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_DNNSEC_STRIPPED) } YY_BREAK case 46: YY_RULE_SETUP #line 171 "util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 47: YY_RULE_SETUP #line 172 "util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 48: YY_RULE_SETUP #line 173 "util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 49: YY_RULE_SETUP #line 174 "util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 50: YY_RULE_SETUP #line 175 "util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 51: YY_RULE_SETUP #line 176 "util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 52: YY_RULE_SETUP #line 177 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 53: YY_RULE_SETUP #line 178 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 54: YY_RULE_SETUP #line 179 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 55: YY_RULE_SETUP #line 180 "util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 56: YY_RULE_SETUP #line 181 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 57: YY_RULE_SETUP #line 182 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 58: YY_RULE_SETUP #line 183 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 59: YY_RULE_SETUP #line 184 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 60: YY_RULE_SETUP #line 185 "util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 61: YY_RULE_SETUP #line 186 "util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 62: YY_RULE_SETUP #line 187 "util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 63: YY_RULE_SETUP #line 188 "util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 64: YY_RULE_SETUP #line 189 "util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 65: YY_RULE_SETUP #line 190 "util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 66: YY_RULE_SETUP #line 191 "util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 67: YY_RULE_SETUP #line 192 "util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 68: YY_RULE_SETUP #line 193 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 69: YY_RULE_SETUP #line 194 "util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 70: YY_RULE_SETUP #line 195 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 71: YY_RULE_SETUP #line 196 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 72: YY_RULE_SETUP #line 197 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 73: YY_RULE_SETUP #line 198 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 74: YY_RULE_SETUP #line 199 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 75: YY_RULE_SETUP #line 200 "util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 76: YY_RULE_SETUP #line 201 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 77: YY_RULE_SETUP #line 202 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 78: YY_RULE_SETUP #line 203 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 79: YY_RULE_SETUP #line 204 "util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 80: YY_RULE_SETUP #line 205 "util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 81: YY_RULE_SETUP #line 206 "util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 82: YY_RULE_SETUP #line 207 "util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 83: YY_RULE_SETUP -#line 209 "util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 208 "util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 84: YY_RULE_SETUP #line 210 "util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 85: YY_RULE_SETUP #line 211 "util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 86: YY_RULE_SETUP #line 212 "util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 87: YY_RULE_SETUP #line 213 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 88: YY_RULE_SETUP #line 214 "util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 89: YY_RULE_SETUP #line 215 "util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 90: YY_RULE_SETUP #line 216 "util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 91: YY_RULE_SETUP #line 217 "util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 92: YY_RULE_SETUP #line 218 "util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 93: YY_RULE_SETUP #line 219 "util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 94: YY_RULE_SETUP #line 220 "util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 95: YY_RULE_SETUP #line 221 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 96: YY_RULE_SETUP #line 222 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 97: YY_RULE_SETUP #line 223 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 98: YY_RULE_SETUP #line 224 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 99: YY_RULE_SETUP #line 225 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 100: YY_RULE_SETUP #line 226 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 101: YY_RULE_SETUP #line 227 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 102: YY_RULE_SETUP #line 228 "util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 103: YY_RULE_SETUP #line 229 "util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 104: YY_RULE_SETUP #line 230 "util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 105: -/* rule 105 can match eol */ YY_RULE_SETUP #line 231 "util/configlexer.lex" +{ YDVAR(1, VAR_DOMAIN_INSECURE) } + YY_BREAK +case 106: +/* rule 106 can match eol */ +YY_RULE_SETUP +#line 232 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 106: +case 107: YY_RULE_SETUP -#line 234 "util/configlexer.lex" +#line 235 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 235 "util/configlexer.lex" +#line 236 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 107: +case 108: YY_RULE_SETUP -#line 240 "util/configlexer.lex" +#line 241 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 108: -/* rule 108 can match eol */ +case 109: +/* rule 109 can match eol */ YY_RULE_SETUP -#line 241 "util/configlexer.lex" +#line 242 "util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 109: +case 110: YY_RULE_SETUP -#line 243 "util/configlexer.lex" +#line 244 "util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -2325,34 +2335,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 110: +case 111: YY_RULE_SETUP -#line 255 "util/configlexer.lex" +#line 256 "util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 256 "util/configlexer.lex" +#line 257 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 111: +case 112: YY_RULE_SETUP -#line 261 "util/configlexer.lex" +#line 262 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 112: -/* rule 112 can match eol */ +case 113: +/* rule 113 can match eol */ YY_RULE_SETUP -#line 262 "util/configlexer.lex" +#line 263 "util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 113: +case 114: YY_RULE_SETUP -#line 264 "util/configlexer.lex" +#line 265 "util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -2365,38 +2375,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 114: +case 115: YY_RULE_SETUP -#line 276 "util/configlexer.lex" +#line 277 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 278 "util/configlexer.lex" +#line 279 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 115: -YY_RULE_SETUP -#line 282 "util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 116: -/* rule 116 can match eol */ YY_RULE_SETUP #line 283 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 117: +/* rule 117 can match eol */ YY_RULE_SETUP #line 284 "util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 118: YY_RULE_SETUP #line 285 "util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 119: +YY_RULE_SETUP +#line 286 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include(yytext); @@ -2404,27 +2414,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 290 "util/configlexer.lex" +#line 291 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 119: +case 120: YY_RULE_SETUP -#line 294 "util/configlexer.lex" +#line 295 "util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 120: -/* rule 120 can match eol */ +case 121: +/* rule 121 can match eol */ YY_RULE_SETUP -#line 295 "util/configlexer.lex" +#line 296 "util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 121: +case 122: YY_RULE_SETUP -#line 297 "util/configlexer.lex" +#line 298 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -2434,7 +2444,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 303 "util/configlexer.lex" +#line 304 "util/configlexer.lex" { yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ if (config_include_stack_ptr == 0) { @@ -2445,33 +2455,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 122: +case 123: YY_RULE_SETUP -#line 313 "util/configlexer.lex" +#line 314 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 123: +case 124: YY_RULE_SETUP -#line 317 "util/configlexer.lex" +#line 318 "util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 124: +case 125: YY_RULE_SETUP -#line 321 "util/configlexer.lex" +#line 322 "util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 125: +case 126: YY_RULE_SETUP -#line 325 "util/configlexer.lex" +#line 326 "util/configlexer.lex" ECHO; YY_BREAK -#line 2473 "" +#line 2483 "" case YY_END_OF_BUFFER: { @@ -2761,7 +2771,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 >= 1178 ) + if ( yy_current_state >= 1187 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2789,11 +2799,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 >= 1178 ) + if ( yy_current_state >= 1187 ) 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 == 1177); + yy_is_jam = (yy_current_state == 1186); return yy_is_jam ? 0 : yy_current_state; } @@ -3430,7 +3440,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 325 "util/configlexer.lex" +#line 326 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 40ea10dc1..c81720718 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -142,6 +142,7 @@ do-daemonize{COLON} { YDVAR(1, VAR_DO_DAEMONIZE) } interface{COLON} { YDVAR(1, VAR_INTERFACE) } outgoing-interface{COLON} { YDVAR(1, VAR_OUTGOING_INTERFACE) } interface-automatic{COLON} { YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +so-rcvbuf{COLON} { YDVAR(1, VAR_SO_RCVBUF) } chroot{COLON} { YDVAR(1, VAR_CHROOT) } username{COLON} { YDVAR(1, VAR_USERNAME) } directory{COLON} { YDVAR(1, VAR_DIRECTORY) } diff --git a/util/configparser.c b/util/configparser.c index 936b319c1..e4c844548 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -233,7 +233,8 @@ extern struct config_parser_state* cfg_parser; VAR_AUTO_TRUST_ANCHOR_FILE = 364, VAR_KEEP_MISSING = 365, VAR_ADD_HOLDDOWN = 366, - VAR_DEL_HOLDDOWN = 367 + VAR_DEL_HOLDDOWN = 367, + VAR_SO_RCVBUF = 368 }; #endif /* Tokens. */ @@ -347,6 +348,7 @@ extern struct config_parser_state* cfg_parser; #define VAR_KEEP_MISSING 365 #define VAR_ADD_HOLDDOWN 366 #define VAR_DEL_HOLDDOWN 367 +#define VAR_SO_RCVBUF 368 @@ -363,7 +365,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 367 "util/configparser.c" +#line 369 "util/configparser.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -375,7 +377,7 @@ typedef union YYSTYPE /* Line 264 of yacc.c */ -#line 379 "util/configparser.c" +#line 381 "util/configparser.c" #ifdef short # undef short @@ -590,20 +592,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 205 +#define YYLAST 207 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 113 +#define YYNTOKENS 114 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 116 +#define YYNNTS 117 /* YYNRULES -- Number of rules. */ -#define YYNRULES 219 +#define YYNRULES 221 /* YYNRULES -- Number of states. */ -#define YYNSTATES 320 +#define YYNSTATES 323 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 367 +#define YYMAXUTOK 368 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -647,7 +649,7 @@ static const yytype_uint8 yytranslate[] = 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112 + 105, 106, 107, 108, 109, 110, 111, 112, 113 }; #if YYDEBUG @@ -664,79 +666,80 @@ static const yytype_uint16 yyprhs[] = 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, - 184, 186, 188, 190, 192, 194, 196, 199, 200, 202, - 204, 206, 208, 210, 213, 214, 216, 218, 220, 223, - 226, 229, 232, 235, 238, 241, 244, 247, 250, 253, - 256, 259, 262, 265, 268, 271, 274, 277, 280, 283, - 286, 289, 292, 295, 298, 301, 304, 307, 310, 313, - 316, 319, 322, 325, 328, 331, 334, 337, 340, 343, - 346, 349, 352, 355, 358, 361, 364, 367, 370, 373, - 376, 379, 382, 385, 388, 391, 394, 397, 400, 403, - 406, 410, 413, 416, 419, 422, 425, 428, 431, 434, - 437, 440, 443, 446, 449, 452, 455, 458, 461, 465, - 468, 471, 474, 477, 480, 483, 486, 489, 492, 494, - 497, 498, 500, 502, 504, 506, 508, 510, 512, 515, - 518, 521, 524, 527, 530, 533, 535, 538, 539, 541 + 184, 186, 188, 190, 192, 194, 196, 198, 201, 202, + 204, 206, 208, 210, 212, 215, 216, 218, 220, 222, + 225, 228, 231, 234, 237, 240, 243, 246, 249, 252, + 255, 258, 261, 264, 267, 270, 273, 276, 279, 282, + 285, 288, 291, 294, 297, 300, 303, 306, 309, 312, + 315, 318, 321, 324, 327, 330, 333, 336, 339, 342, + 345, 348, 351, 354, 357, 360, 363, 366, 369, 372, + 375, 378, 381, 384, 387, 390, 393, 396, 399, 402, + 405, 408, 411, 415, 418, 421, 424, 427, 430, 433, + 436, 439, 442, 445, 448, 451, 454, 457, 460, 463, + 466, 470, 473, 476, 479, 482, 485, 488, 491, 494, + 497, 499, 502, 503, 505, 507, 509, 511, 513, 515, + 517, 520, 523, 526, 529, 532, 535, 538, 540, 543, + 544, 546 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 114, 0, -1, -1, 114, 115, -1, 116, 117, -1, - 119, 120, -1, 122, 123, -1, 225, 226, -1, 215, - 216, -1, 11, -1, 117, 118, -1, -1, 125, -1, - 126, -1, 130, -1, 133, -1, 139, -1, 140, -1, - 141, -1, 142, -1, 131, -1, 146, -1, 147, -1, - 148, -1, 149, -1, 150, -1, 164, -1, 165, -1, - 166, -1, 168, -1, 169, -1, 136, -1, 170, -1, - 171, -1, 174, -1, 172, -1, 173, -1, 175, -1, - 176, -1, 177, -1, 185, -1, 159, -1, 160, -1, - 161, -1, 162, -1, 178, -1, 188, -1, 155, -1, - 157, -1, 189, -1, 194, -1, 195, -1, 196, -1, - 137, -1, 163, -1, 202, -1, 203, -1, 156, -1, - 198, -1, 144, -1, 132, -1, 151, -1, 186, -1, - 192, -1, 179, -1, 187, -1, 205, -1, 206, -1, - 138, -1, 127, -1, 143, -1, 181, -1, 128, -1, - 134, -1, 135, -1, 152, -1, 153, -1, 204, -1, - 180, -1, 182, -1, 183, -1, 129, -1, 207, -1, - 167, -1, 184, -1, 145, -1, 158, -1, 190, -1, - 191, -1, 193, -1, 197, -1, 154, -1, 199, -1, - 200, -1, 201, -1, 38, -1, 120, 121, -1, -1, - 208, -1, 209, -1, 210, -1, 211, -1, 44, -1, - 123, 124, -1, -1, 212, -1, 213, -1, 214, -1, - 13, 10, -1, 12, 10, -1, 76, 10, -1, 79, - 10, -1, 96, 10, -1, 14, 10, -1, 16, 10, - -1, 67, 10, -1, 15, 10, -1, 80, 10, -1, - 81, 10, -1, 31, 10, -1, 60, 10, -1, 75, - 10, -1, 17, 10, -1, 18, 10, -1, 19, 10, - -1, 20, 10, -1, 77, 10, -1, 66, 10, -1, - 101, 10, -1, 21, 10, -1, 22, 10, -1, 23, - 10, -1, 24, 10, -1, 25, 10, -1, 68, 10, - -1, 82, 10, -1, 83, 10, -1, 109, 10, -1, - 54, 10, -1, 64, 10, -1, 55, 10, -1, 102, - 10, -1, 48, 10, -1, 49, 10, -1, 50, 10, - -1, 51, 10, -1, 61, 10, -1, 26, 10, -1, - 27, 10, -1, 28, 10, -1, 98, 10, -1, 29, - 10, -1, 30, 10, -1, 32, 10, -1, 33, 10, - -1, 35, 10, -1, 36, 10, -1, 34, 10, -1, - 41, 10, -1, 42, 10, -1, 43, 10, -1, 52, - 10, -1, 71, 10, -1, 85, 10, -1, 78, 10, - -1, 86, 10, -1, 87, 10, -1, 100, 10, -1, - 47, 10, -1, 69, 10, -1, 72, 10, 10, -1, - 53, 10, -1, 56, 10, -1, 105, 10, -1, 106, - 10, -1, 70, 10, -1, 107, 10, -1, 57, 10, - -1, 58, 10, -1, 59, 10, -1, 108, 10, -1, - 65, 10, -1, 111, 10, -1, 112, 10, -1, 110, - 10, -1, 62, 10, -1, 63, 10, -1, 84, 10, - -1, 73, 10, 10, -1, 74, 10, -1, 97, 10, - -1, 37, 10, -1, 39, 10, -1, 40, 10, -1, - 99, 10, -1, 37, 10, -1, 45, 10, -1, 46, - 10, -1, 88, -1, 216, 217, -1, -1, 218, -1, - 220, -1, 219, -1, 221, -1, 222, -1, 223, -1, - 224, -1, 89, 10, -1, 91, 10, -1, 90, 10, - -1, 92, 10, -1, 93, 10, -1, 94, 10, -1, - 95, 10, -1, 103, -1, 226, 227, -1, -1, 228, - -1, 104, 10, -1 + 115, 0, -1, -1, 115, 116, -1, 117, 118, -1, + 120, 121, -1, 123, 124, -1, 227, 228, -1, 217, + 218, -1, 11, -1, 118, 119, -1, -1, 126, -1, + 127, -1, 131, -1, 134, -1, 140, -1, 141, -1, + 142, -1, 143, -1, 132, -1, 147, -1, 148, -1, + 149, -1, 150, -1, 151, -1, 166, -1, 167, -1, + 168, -1, 170, -1, 171, -1, 137, -1, 172, -1, + 173, -1, 176, -1, 174, -1, 175, -1, 177, -1, + 178, -1, 179, -1, 187, -1, 160, -1, 161, -1, + 162, -1, 163, -1, 180, -1, 190, -1, 156, -1, + 158, -1, 191, -1, 196, -1, 197, -1, 198, -1, + 138, -1, 165, -1, 204, -1, 205, -1, 157, -1, + 200, -1, 145, -1, 133, -1, 152, -1, 188, -1, + 194, -1, 181, -1, 189, -1, 207, -1, 208, -1, + 139, -1, 128, -1, 144, -1, 183, -1, 129, -1, + 135, -1, 136, -1, 153, -1, 154, -1, 206, -1, + 182, -1, 184, -1, 185, -1, 130, -1, 209, -1, + 169, -1, 186, -1, 146, -1, 159, -1, 192, -1, + 193, -1, 195, -1, 199, -1, 155, -1, 201, -1, + 202, -1, 203, -1, 164, -1, 38, -1, 121, 122, + -1, -1, 210, -1, 211, -1, 212, -1, 213, -1, + 44, -1, 124, 125, -1, -1, 214, -1, 215, -1, + 216, -1, 13, 10, -1, 12, 10, -1, 76, 10, + -1, 79, 10, -1, 96, 10, -1, 14, 10, -1, + 16, 10, -1, 67, 10, -1, 15, 10, -1, 80, + 10, -1, 81, 10, -1, 31, 10, -1, 60, 10, + -1, 75, 10, -1, 17, 10, -1, 18, 10, -1, + 19, 10, -1, 20, 10, -1, 77, 10, -1, 66, + 10, -1, 101, 10, -1, 21, 10, -1, 22, 10, + -1, 23, 10, -1, 24, 10, -1, 25, 10, -1, + 68, 10, -1, 82, 10, -1, 83, 10, -1, 109, + 10, -1, 54, 10, -1, 64, 10, -1, 55, 10, + -1, 102, 10, -1, 48, 10, -1, 49, 10, -1, + 50, 10, -1, 51, 10, -1, 113, 10, -1, 61, + 10, -1, 26, 10, -1, 27, 10, -1, 28, 10, + -1, 98, 10, -1, 29, 10, -1, 30, 10, -1, + 32, 10, -1, 33, 10, -1, 35, 10, -1, 36, + 10, -1, 34, 10, -1, 41, 10, -1, 42, 10, + -1, 43, 10, -1, 52, 10, -1, 71, 10, -1, + 85, 10, -1, 78, 10, -1, 86, 10, -1, 87, + 10, -1, 100, 10, -1, 47, 10, -1, 69, 10, + -1, 72, 10, 10, -1, 53, 10, -1, 56, 10, + -1, 105, 10, -1, 106, 10, -1, 70, 10, -1, + 107, 10, -1, 57, 10, -1, 58, 10, -1, 59, + 10, -1, 108, 10, -1, 65, 10, -1, 111, 10, + -1, 112, 10, -1, 110, 10, -1, 62, 10, -1, + 63, 10, -1, 84, 10, -1, 73, 10, 10, -1, + 74, 10, -1, 97, 10, -1, 37, 10, -1, 39, + 10, -1, 40, 10, -1, 99, 10, -1, 37, 10, + -1, 45, 10, -1, 46, 10, -1, 88, -1, 218, + 219, -1, -1, 220, -1, 222, -1, 221, -1, 223, + -1, 224, -1, 225, -1, 226, -1, 89, 10, -1, + 91, 10, -1, 90, 10, -1, 92, 10, -1, 93, + 10, -1, 94, 10, -1, 95, 10, -1, 103, -1, + 228, 229, -1, -1, 230, -1, 104, 10, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -751,19 +754,20 @@ static const yytype_uint16 yyrline[] = 140, 140, 141, 141, 142, 142, 143, 143, 143, 144, 144, 145, 145, 146, 146, 147, 147, 147, 148, 148, 149, 149, 150, 150, 151, 151, 152, 152, 153, 153, - 153, 154, 154, 155, 155, 157, 169, 170, 171, 171, - 171, 171, 173, 185, 186, 187, 187, 187, 189, 198, - 207, 218, 227, 236, 245, 258, 273, 282, 291, 300, - 309, 318, 327, 336, 345, 354, 363, 372, 386, 395, - 402, 409, 416, 424, 431, 438, 445, 452, 460, 468, - 476, 483, 490, 499, 508, 515, 522, 533, 541, 554, - 563, 572, 580, 593, 602, 611, 620, 629, 642, 649, - 659, 669, 679, 689, 699, 709, 716, 723, 732, 739, - 749, 763, 770, 788, 801, 814, 823, 832, 841, 851, - 861, 870, 877, 886, 895, 904, 912, 925, 933, 953, - 960, 975, 982, 989, 996, 1006, 1013, 1020, 1027, 1032, - 1033, 1034, 1034, 1034, 1035, 1035, 1035, 1036, 1038, 1048, - 1057, 1064, 1071, 1078, 1085, 1092, 1097, 1098, 1099, 1101 + 153, 154, 154, 155, 155, 155, 157, 169, 170, 171, + 171, 171, 171, 173, 185, 186, 187, 187, 187, 189, + 198, 207, 218, 227, 236, 245, 258, 273, 282, 291, + 300, 309, 318, 327, 336, 345, 354, 363, 372, 386, + 395, 402, 409, 416, 424, 431, 438, 445, 452, 460, + 468, 476, 483, 490, 499, 508, 515, 522, 530, 541, + 549, 562, 571, 580, 588, 601, 610, 619, 628, 637, + 650, 657, 667, 677, 687, 697, 707, 717, 724, 731, + 740, 747, 757, 771, 778, 796, 809, 822, 831, 840, + 849, 859, 869, 878, 885, 894, 903, 912, 920, 933, + 941, 961, 968, 983, 990, 997, 1004, 1014, 1021, 1028, + 1035, 1040, 1041, 1042, 1042, 1042, 1043, 1043, 1043, 1044, + 1046, 1056, 1065, 1072, 1079, 1086, 1093, 1100, 1105, 1106, + 1107, 1109 }; #endif @@ -807,11 +811,11 @@ static const char *const yytname[] = "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT", "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", "VAR_KEEP_MISSING", - "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", "$accept", "toplevelvars", - "toplevelvar", "serverstart", "contents_server", "content_server", - "stubstart", "contents_stub", "content_stub", "forwardstart", - "contents_forward", "content_forward", "server_num_threads", - "server_verbosity", "server_statistics_interval", + "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", "VAR_SO_RCVBUF", "$accept", + "toplevelvars", "toplevelvar", "serverstart", "contents_server", + "content_server", "stubstart", "contents_stub", "content_stub", + "forwardstart", "contents_forward", "content_forward", + "server_num_threads", "server_verbosity", "server_statistics_interval", "server_statistics_cumulative", "server_extended_statistics", "server_port", "server_interface", "server_outgoing_interface", "server_outgoing_range", "server_outgoing_port_permit", @@ -825,7 +829,7 @@ static const char *const yytname[] = "server_trust_anchor_file", "server_trusted_keys_file", "server_trust_anchor", "server_domain_insecure", "server_hide_identity", "server_hide_version", "server_identity", "server_version", - "server_msg_buffer_size", "server_msg_cache_size", + "server_so_rcvbuf", "server_msg_buffer_size", "server_msg_cache_size", "server_msg_cache_slabs", "server_num_queries_per_thread", "server_jostle_timeout", "server_rrset_cache_size", "server_rrset_cache_slabs", "server_infra_host_ttl", @@ -871,24 +875,24 @@ static const yytype_uint16 yytoknum[] = 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367 + 365, 366, 367, 368 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 113, 114, 114, 115, 115, 115, 115, 115, 116, - 117, 117, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 119, 120, 120, 121, 121, - 121, 121, 122, 123, 123, 124, 124, 124, 125, 126, + 0, 114, 115, 115, 116, 116, 116, 116, 116, 117, + 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 120, 121, 121, 122, + 122, 122, 122, 123, 124, 124, 125, 125, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, @@ -898,8 +902,9 @@ static const yytype_uint8 yyr1[] = 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 216, 217, 217, 217, 217, 217, 217, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 226, 227, 228 + 217, 218, 218, 219, 219, 219, 219, 219, 219, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 228, + 229, 230 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -914,19 +919,20 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 1, 1, 1, 1, 2, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 2 + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 2 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -934,8 +940,8 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 9, 95, 102, 198, 215, 3, 11, - 97, 104, 200, 217, 4, 5, 6, 8, 7, 0, + 2, 0, 1, 9, 96, 103, 200, 217, 3, 11, + 98, 105, 202, 219, 4, 5, 6, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -944,45 +950,46 @@ static const yytype_uint8 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 10, 12, 13, 69, 72, 81, 14, 20, - 60, 15, 73, 74, 31, 53, 68, 16, 17, 18, - 19, 70, 59, 85, 21, 22, 23, 24, 25, 61, - 75, 76, 91, 47, 57, 48, 86, 41, 42, 43, - 44, 54, 26, 27, 28, 83, 29, 30, 32, 33, - 35, 36, 34, 37, 38, 39, 45, 64, 78, 71, - 79, 80, 84, 40, 62, 65, 46, 49, 87, 88, - 63, 89, 50, 51, 52, 90, 58, 92, 93, 94, - 55, 56, 77, 66, 67, 82, 0, 0, 0, 0, - 96, 98, 99, 100, 101, 0, 0, 0, 103, 105, - 106, 107, 0, 0, 0, 0, 0, 0, 0, 199, - 201, 203, 202, 204, 205, 206, 207, 0, 216, 218, - 109, 108, 113, 116, 114, 122, 123, 124, 125, 129, - 130, 131, 132, 133, 147, 148, 149, 151, 152, 119, - 153, 154, 157, 155, 156, 158, 159, 160, 168, 142, - 143, 144, 145, 161, 171, 138, 140, 172, 177, 178, - 179, 120, 146, 185, 186, 139, 181, 127, 115, 134, - 169, 175, 162, 0, 0, 189, 121, 110, 126, 164, - 111, 117, 118, 135, 136, 187, 163, 165, 166, 112, - 190, 150, 167, 128, 141, 173, 174, 176, 180, 137, - 184, 182, 183, 191, 192, 193, 194, 195, 196, 197, - 208, 210, 209, 211, 212, 213, 214, 219, 170, 188 + 0, 0, 0, 10, 12, 13, 69, 72, 81, 14, + 20, 60, 15, 73, 74, 31, 53, 68, 16, 17, + 18, 19, 70, 59, 85, 21, 22, 23, 24, 25, + 61, 75, 76, 91, 47, 57, 48, 86, 41, 42, + 43, 44, 95, 54, 26, 27, 28, 83, 29, 30, + 32, 33, 35, 36, 34, 37, 38, 39, 45, 64, + 78, 71, 79, 80, 84, 40, 62, 65, 46, 49, + 87, 88, 63, 89, 50, 51, 52, 90, 58, 92, + 93, 94, 55, 56, 77, 66, 67, 82, 0, 0, + 0, 0, 97, 99, 100, 101, 102, 0, 0, 0, + 104, 106, 107, 108, 0, 0, 0, 0, 0, 0, + 0, 201, 203, 205, 204, 206, 207, 208, 209, 0, + 218, 220, 110, 109, 114, 117, 115, 123, 124, 125, + 126, 130, 131, 132, 133, 134, 149, 150, 151, 153, + 154, 120, 155, 156, 159, 157, 158, 160, 161, 162, + 170, 143, 144, 145, 146, 163, 173, 139, 141, 174, + 179, 180, 181, 121, 148, 187, 188, 140, 183, 128, + 116, 135, 171, 177, 164, 0, 0, 191, 122, 111, + 127, 166, 112, 118, 119, 136, 137, 189, 165, 167, + 168, 113, 192, 152, 169, 129, 142, 175, 176, 178, + 182, 138, 186, 184, 185, 147, 193, 194, 195, 196, + 197, 198, 199, 210, 212, 211, 213, 214, 215, 216, + 221, 172, 190 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 8, 9, 14, 102, 10, 15, 190, 11, - 16, 198, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 191, 192, 193, 194, 199, - 200, 201, 12, 17, 209, 210, 211, 212, 213, 214, - 215, 216, 13, 18, 218, 219 + -1, 1, 8, 9, 14, 103, 10, 15, 192, 11, + 16, 200, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 193, 194, 195, 196, + 201, 202, 203, 12, 17, 211, 212, 213, 214, 215, + 216, 217, 218, 13, 18, 220, 221 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -1000,28 +1007,29 @@ static const yytype_int16 yypact[] = 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 119, 120, -103, -103, -103, -103, -103, -103, -103, -103, + 119, 120, 121, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, -103, -103, -103, 122, 126, + 127, 128, -103, -103, -103, -103, -103, 170, 171, 172, + -103, -103, -103, -103, 173, 174, 175, 176, 177, 181, + 185, -103, -103, -103, -103, -103, -103, -103, -103, 186, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, 121, 122, 126, 127, - -103, -103, -103, -103, -103, 128, 170, 171, -103, -103, - -103, -103, 172, 173, 174, 175, 176, 177, 181, -103, - -103, -103, -103, -103, -103, -103, -103, 185, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, + -103, -103, -103, -103, -103, 196, 197, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, 186, 195, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103 + -103, -103, -103 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1038,7 +1046,7 @@ static const yytype_int8 yypgoto[] = -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103 + -103, -103, -103, -103, -103, -103, -103 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1048,27 +1056,27 @@ static const yytype_int8 yypgoto[] = #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { - 2, 186, 217, 187, 188, 195, 220, 221, 222, 223, - 0, 3, 224, 196, 197, 202, 203, 204, 205, 206, - 207, 208, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 4, 241, - 242, 243, 244, 245, 5, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 189, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 6, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 0, 7, 19, 20, 21, 22, 23, 24, + 2, 188, 219, 189, 190, 197, 222, 223, 224, 225, + 0, 3, 226, 198, 199, 204, 205, 206, 207, 208, + 209, 210, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 4, 243, + 244, 245, 246, 247, 5, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 191, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 6, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 0, 7, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 301, - 302, 303, 304, 44, 45, 46, 305, 306, 307, 47, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 303, + 304, 305, 306, 44, 45, 46, 307, 308, 309, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 308, 309, 310, 311, 312, 313, 314, 315, 88, 89, - 90, 316, 91, 92, 93, 317, 318, 94, 95, 96, - 97, 98, 99, 100, 101, 319 + 310, 311, 312, 313, 314, 315, 316, 317, 88, 89, + 90, 318, 91, 92, 93, 319, 320, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 321, 322 }; static const yytype_int8 yycheck[] = @@ -1093,15 +1101,15 @@ static const yytype_int8 yycheck[] = 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 10, 10, 10, 10, 10, 10, 10, 10, 96, 97, 98, 10, 100, 101, 102, 10, 10, 105, 106, 107, - 108, 109, 110, 111, 112, 10 + 108, 109, 110, 111, 112, 113, 10, 10 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 114, 0, 11, 38, 44, 88, 103, 115, 116, - 119, 122, 215, 225, 117, 120, 123, 216, 226, 12, + 0, 115, 0, 11, 38, 44, 88, 103, 116, 117, + 120, 123, 217, 227, 118, 121, 124, 218, 228, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 41, 42, 43, 47, 48, 49, @@ -1110,7 +1118,7 @@ static const yytype_uint8 yystos[] = 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 96, 97, 98, 100, 101, 102, 105, 106, 107, 108, 109, 110, - 111, 112, 118, 125, 126, 127, 128, 129, 130, 131, + 111, 112, 113, 119, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, @@ -1118,10 +1126,11 @@ static const yytype_uint8 yystos[] = 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 37, 39, 40, 99, - 121, 208, 209, 210, 211, 37, 45, 46, 124, 212, - 213, 214, 89, 90, 91, 92, 93, 94, 95, 217, - 218, 219, 220, 221, 222, 223, 224, 104, 227, 228, + 202, 203, 204, 205, 206, 207, 208, 209, 37, 39, + 40, 99, 122, 210, 211, 212, 213, 37, 45, 46, + 125, 214, 215, 216, 89, 90, 91, 92, 93, 94, + 95, 219, 220, 221, 222, 223, 224, 225, 226, 104, + 229, 230, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1131,7 +1140,7 @@ static const yytype_uint8 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10 }; #define yyerrok (yyerrstatus = 0) @@ -1951,7 +1960,7 @@ yyreduce: } break; - case 95: + case 96: /* Line 1455 of yacc.c */ #line 158 "util/configparser.y" @@ -1967,7 +1976,7 @@ yyreduce: } break; - case 102: + case 103: /* Line 1455 of yacc.c */ #line 174 "util/configparser.y" @@ -1983,7 +1992,7 @@ yyreduce: } break; - case 108: + case 109: /* Line 1455 of yacc.c */ #line 190 "util/configparser.y" @@ -1996,7 +2005,7 @@ yyreduce: } break; - case 109: + case 110: /* Line 1455 of yacc.c */ #line 199 "util/configparser.y" @@ -2009,7 +2018,7 @@ yyreduce: } break; - case 110: + case 111: /* Line 1455 of yacc.c */ #line 208 "util/configparser.y" @@ -2024,7 +2033,7 @@ yyreduce: } break; - case 111: + case 112: /* Line 1455 of yacc.c */ #line 219 "util/configparser.y" @@ -2037,7 +2046,7 @@ yyreduce: } break; - case 112: + case 113: /* Line 1455 of yacc.c */ #line 228 "util/configparser.y" @@ -2050,7 +2059,7 @@ yyreduce: } break; - case 113: + case 114: /* Line 1455 of yacc.c */ #line 237 "util/configparser.y" @@ -2063,7 +2072,7 @@ yyreduce: } break; - case 114: + case 115: /* Line 1455 of yacc.c */ #line 246 "util/configparser.y" @@ -2080,7 +2089,7 @@ yyreduce: } break; - case 115: + case 116: /* Line 1455 of yacc.c */ #line 259 "util/configparser.y" @@ -2099,7 +2108,7 @@ yyreduce: } break; - case 116: + case 117: /* Line 1455 of yacc.c */ #line 274 "util/configparser.y" @@ -2112,7 +2121,7 @@ yyreduce: } break; - case 117: + case 118: /* Line 1455 of yacc.c */ #line 283 "util/configparser.y" @@ -2125,7 +2134,7 @@ yyreduce: } break; - case 118: + case 119: /* Line 1455 of yacc.c */ #line 292 "util/configparser.y" @@ -2138,7 +2147,7 @@ yyreduce: } break; - case 119: + case 120: /* Line 1455 of yacc.c */ #line 301 "util/configparser.y" @@ -2151,7 +2160,7 @@ yyreduce: } break; - case 120: + case 121: /* Line 1455 of yacc.c */ #line 310 "util/configparser.y" @@ -2164,7 +2173,7 @@ yyreduce: } break; - case 121: + case 122: /* Line 1455 of yacc.c */ #line 319 "util/configparser.y" @@ -2177,7 +2186,7 @@ yyreduce: } break; - case 122: + case 123: /* Line 1455 of yacc.c */ #line 328 "util/configparser.y" @@ -2190,7 +2199,7 @@ yyreduce: } break; - case 123: + case 124: /* Line 1455 of yacc.c */ #line 337 "util/configparser.y" @@ -2203,7 +2212,7 @@ yyreduce: } break; - case 124: + case 125: /* Line 1455 of yacc.c */ #line 346 "util/configparser.y" @@ -2216,7 +2225,7 @@ yyreduce: } break; - case 125: + case 126: /* Line 1455 of yacc.c */ #line 355 "util/configparser.y" @@ -2229,7 +2238,7 @@ yyreduce: } break; - case 126: + case 127: /* Line 1455 of yacc.c */ #line 364 "util/configparser.y" @@ -2242,7 +2251,7 @@ yyreduce: } break; - case 127: + case 128: /* Line 1455 of yacc.c */ #line 373 "util/configparser.y" @@ -2260,7 +2269,7 @@ yyreduce: } break; - case 128: + case 129: /* Line 1455 of yacc.c */ #line 387 "util/configparser.y" @@ -2273,7 +2282,7 @@ yyreduce: } break; - case 129: + case 130: /* Line 1455 of yacc.c */ #line 396 "util/configparser.y" @@ -2284,7 +2293,7 @@ yyreduce: } break; - case 130: + case 131: /* Line 1455 of yacc.c */ #line 403 "util/configparser.y" @@ -2295,7 +2304,7 @@ yyreduce: } break; - case 131: + case 132: /* Line 1455 of yacc.c */ #line 410 "util/configparser.y" @@ -2306,7 +2315,7 @@ yyreduce: } break; - case 132: + case 133: /* Line 1455 of yacc.c */ #line 417 "util/configparser.y" @@ -2318,7 +2327,7 @@ yyreduce: } break; - case 133: + case 134: /* Line 1455 of yacc.c */ #line 425 "util/configparser.y" @@ -2329,7 +2338,7 @@ yyreduce: } break; - case 134: + case 135: /* Line 1455 of yacc.c */ #line 432 "util/configparser.y" @@ -2340,7 +2349,7 @@ yyreduce: } break; - case 135: + case 136: /* Line 1455 of yacc.c */ #line 439 "util/configparser.y" @@ -2351,7 +2360,7 @@ yyreduce: } break; - case 136: + case 137: /* Line 1455 of yacc.c */ #line 446 "util/configparser.y" @@ -2362,7 +2371,7 @@ yyreduce: } break; - case 137: + case 138: /* Line 1455 of yacc.c */ #line 453 "util/configparser.y" @@ -2374,7 +2383,7 @@ yyreduce: } break; - case 138: + case 139: /* Line 1455 of yacc.c */ #line 461 "util/configparser.y" @@ -2386,7 +2395,7 @@ yyreduce: } break; - case 139: + case 140: /* Line 1455 of yacc.c */ #line 469 "util/configparser.y" @@ -2398,7 +2407,7 @@ yyreduce: } break; - case 140: + case 141: /* Line 1455 of yacc.c */ #line 477 "util/configparser.y" @@ -2409,7 +2418,7 @@ yyreduce: } break; - case 141: + case 142: /* Line 1455 of yacc.c */ #line 484 "util/configparser.y" @@ -2420,7 +2429,7 @@ yyreduce: } break; - case 142: + case 143: /* Line 1455 of yacc.c */ #line 491 "util/configparser.y" @@ -2433,7 +2442,7 @@ yyreduce: } break; - case 143: + case 144: /* Line 1455 of yacc.c */ #line 500 "util/configparser.y" @@ -2446,7 +2455,7 @@ yyreduce: } break; - case 144: + case 145: /* Line 1455 of yacc.c */ #line 509 "util/configparser.y" @@ -2457,7 +2466,7 @@ yyreduce: } break; - case 145: + case 146: /* Line 1455 of yacc.c */ #line 516 "util/configparser.y" @@ -2468,10 +2477,22 @@ yyreduce: } break; - case 146: + case 147: /* Line 1455 of yacc.c */ #line 523 "util/configparser.y" + { + OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->socket_rcvbuf)) + yyerror("buffer size expected"); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 148: + +/* Line 1455 of yacc.c */ +#line 531 "util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2483,10 +2504,10 @@ yyreduce: } break; - case 147: + case 149: /* Line 1455 of yacc.c */ -#line 534 "util/configparser.y" +#line 542 "util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size)) @@ -2495,10 +2516,10 @@ yyreduce: } break; - case 148: + case 150: /* Line 1455 of yacc.c */ -#line 542 "util/configparser.y" +#line 550 "util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2512,10 +2533,10 @@ yyreduce: } break; - case 149: + case 151: /* Line 1455 of yacc.c */ -#line 555 "util/configparser.y" +#line 563 "util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2525,10 +2546,10 @@ yyreduce: } break; - case 150: + case 152: /* Line 1455 of yacc.c */ -#line 564 "util/configparser.y" +#line 572 "util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2538,10 +2559,10 @@ yyreduce: } break; - case 151: + case 153: /* Line 1455 of yacc.c */ -#line 573 "util/configparser.y" +#line 581 "util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size)) @@ -2550,10 +2571,10 @@ yyreduce: } break; - case 152: + case 154: /* Line 1455 of yacc.c */ -#line 581 "util/configparser.y" +#line 589 "util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2567,10 +2588,10 @@ yyreduce: } break; - case 153: + case 155: /* Line 1455 of yacc.c */ -#line 594 "util/configparser.y" +#line 602 "util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2580,10 +2601,10 @@ yyreduce: } break; - case 154: + case 156: /* Line 1455 of yacc.c */ -#line 603 "util/configparser.y" +#line 611 "util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2593,10 +2614,10 @@ yyreduce: } break; - case 155: + case 157: /* Line 1455 of yacc.c */ -#line 612 "util/configparser.y" +#line 620 "util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2606,10 +2627,10 @@ yyreduce: } break; - case 156: + case 158: /* Line 1455 of yacc.c */ -#line 621 "util/configparser.y" +#line 629 "util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg-> @@ -2619,10 +2640,10 @@ yyreduce: } break; - case 157: + case 159: /* Line 1455 of yacc.c */ -#line 630 "util/configparser.y" +#line 638 "util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2636,10 +2657,10 @@ yyreduce: } break; - case 158: + case 160: /* Line 1455 of yacc.c */ -#line 643 "util/configparser.y" +#line 651 "util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->target_fetch_policy); @@ -2647,10 +2668,10 @@ yyreduce: } break; - case 159: + case 161: /* Line 1455 of yacc.c */ -#line 650 "util/configparser.y" +#line 658 "util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2661,10 +2682,10 @@ yyreduce: } break; - case 160: + case 162: /* Line 1455 of yacc.c */ -#line 660 "util/configparser.y" +#line 668 "util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2675,10 +2696,10 @@ yyreduce: } break; - case 161: + case 163: /* Line 1455 of yacc.c */ -#line 670 "util/configparser.y" +#line 678 "util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2689,10 +2710,10 @@ yyreduce: } break; - case 162: + case 164: /* Line 1455 of yacc.c */ -#line 680 "util/configparser.y" +#line 688 "util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2703,10 +2724,10 @@ yyreduce: } break; - case 163: + case 165: /* Line 1455 of yacc.c */ -#line 690 "util/configparser.y" +#line 698 "util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2717,10 +2738,10 @@ yyreduce: } break; - case 164: + case 166: /* Line 1455 of yacc.c */ -#line 700 "util/configparser.y" +#line 708 "util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2731,10 +2752,10 @@ yyreduce: } break; - case 165: + case 167: /* Line 1455 of yacc.c */ -#line 710 "util/configparser.y" +#line 718 "util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str))) @@ -2742,10 +2763,10 @@ yyreduce: } break; - case 166: + case 168: /* Line 1455 of yacc.c */ -#line 717 "util/configparser.y" +#line 725 "util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str))) @@ -2753,10 +2774,10 @@ yyreduce: } break; - case 167: + case 169: /* Line 1455 of yacc.c */ -#line 724 "util/configparser.y" +#line 732 "util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2766,10 +2787,10 @@ yyreduce: } break; - case 168: + case 170: /* Line 1455 of yacc.c */ -#line 733 "util/configparser.y" +#line 741 "util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) @@ -2777,10 +2798,10 @@ yyreduce: } break; - case 169: + case 171: /* Line 1455 of yacc.c */ -#line 740 "util/configparser.y" +#line 748 "util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2791,10 +2812,10 @@ yyreduce: } break; - case 170: + case 172: /* Line 1455 of yacc.c */ -#line 750 "util/configparser.y" +#line 758 "util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && @@ -2809,10 +2830,10 @@ yyreduce: } break; - case 171: + case 173: /* Line 1455 of yacc.c */ -#line 764 "util/configparser.y" +#line 772 "util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -2820,10 +2841,10 @@ yyreduce: } break; - case 172: + case 174: /* Line 1455 of yacc.c */ -#line 771 "util/configparser.y" +#line 779 "util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -2842,10 +2863,10 @@ yyreduce: } break; - case 173: + case 175: /* Line 1455 of yacc.c */ -#line 789 "util/configparser.y" +#line 797 "util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -2859,10 +2880,10 @@ yyreduce: } break; - case 174: + case 176: /* Line 1455 of yacc.c */ -#line 802 "util/configparser.y" +#line 810 "util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -2876,10 +2897,10 @@ yyreduce: } break; - case 175: + case 177: /* Line 1455 of yacc.c */ -#line 815 "util/configparser.y" +#line 823 "util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2889,10 +2910,10 @@ yyreduce: } break; - case 176: + case 178: /* Line 1455 of yacc.c */ -#line 824 "util/configparser.y" +#line 832 "util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2902,10 +2923,10 @@ yyreduce: } break; - case 177: + case 179: /* Line 1455 of yacc.c */ -#line 833 "util/configparser.y" +#line 841 "util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2915,10 +2936,10 @@ yyreduce: } break; - case 178: + case 180: /* Line 1455 of yacc.c */ -#line 842 "util/configparser.y" +#line 850 "util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2929,10 +2950,10 @@ yyreduce: } break; - case 179: + case 181: /* Line 1455 of yacc.c */ -#line 852 "util/configparser.y" +#line 860 "util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2943,10 +2964,10 @@ yyreduce: } break; - case 180: + case 182: /* Line 1455 of yacc.c */ -#line 862 "util/configparser.y" +#line 870 "util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2956,10 +2977,10 @@ yyreduce: } break; - case 181: + case 183: /* Line 1455 of yacc.c */ -#line 871 "util/configparser.y" +#line 879 "util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -2967,10 +2988,10 @@ yyreduce: } break; - case 182: + case 184: /* Line 1455 of yacc.c */ -#line 878 "util/configparser.y" +#line 886 "util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2980,10 +3001,10 @@ yyreduce: } break; - case 183: + case 185: /* Line 1455 of yacc.c */ -#line 887 "util/configparser.y" +#line 895 "util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2993,10 +3014,10 @@ yyreduce: } break; - case 184: + case 186: /* Line 1455 of yacc.c */ -#line 896 "util/configparser.y" +#line 904 "util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3006,10 +3027,10 @@ yyreduce: } break; - case 185: + case 187: /* Line 1455 of yacc.c */ -#line 905 "util/configparser.y" +#line 913 "util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) @@ -3018,10 +3039,10 @@ yyreduce: } break; - case 186: + case 188: /* Line 1455 of yacc.c */ -#line 913 "util/configparser.y" +#line 921 "util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3035,10 +3056,10 @@ yyreduce: } break; - case 187: + case 189: /* Line 1455 of yacc.c */ -#line 926 "util/configparser.y" +#line 934 "util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size)) @@ -3047,10 +3068,10 @@ yyreduce: } break; - case 188: + case 190: /* Line 1455 of yacc.c */ -#line 934 "util/configparser.y" +#line 942 "util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && @@ -3071,10 +3092,10 @@ yyreduce: } break; - case 189: + case 191: /* Line 1455 of yacc.c */ -#line 954 "util/configparser.y" +#line 962 "util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) @@ -3082,10 +3103,10 @@ yyreduce: } break; - case 190: + case 192: /* Line 1455 of yacc.c */ -#line 961 "util/configparser.y" +#line 969 "util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3101,10 +3122,10 @@ yyreduce: } break; - case 191: + case 193: /* Line 1455 of yacc.c */ -#line 976 "util/configparser.y" +#line 984 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->stubs->name); @@ -3112,10 +3133,10 @@ yyreduce: } break; - case 192: + case 194: /* Line 1455 of yacc.c */ -#line 983 "util/configparser.y" +#line 991 "util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) @@ -3123,10 +3144,10 @@ yyreduce: } break; - case 193: + case 195: /* Line 1455 of yacc.c */ -#line 990 "util/configparser.y" +#line 998 "util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) @@ -3134,10 +3155,10 @@ yyreduce: } break; - case 194: + case 196: /* Line 1455 of yacc.c */ -#line 997 "util/configparser.y" +#line 1005 "util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3148,10 +3169,10 @@ yyreduce: } break; - case 195: + case 197: /* Line 1455 of yacc.c */ -#line 1007 "util/configparser.y" +#line 1015 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->forwards->name); @@ -3159,10 +3180,10 @@ yyreduce: } break; - case 196: + case 198: /* Line 1455 of yacc.c */ -#line 1014 "util/configparser.y" +#line 1022 "util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) @@ -3170,10 +3191,10 @@ yyreduce: } break; - case 197: + case 199: /* Line 1455 of yacc.c */ -#line 1021 "util/configparser.y" +#line 1029 "util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) @@ -3181,19 +3202,19 @@ yyreduce: } break; - case 198: + case 200: /* Line 1455 of yacc.c */ -#line 1028 "util/configparser.y" +#line 1036 "util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } break; - case 208: + case 210: /* Line 1455 of yacc.c */ -#line 1039 "util/configparser.y" +#line 1047 "util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3204,10 +3225,10 @@ yyreduce: } break; - case 209: + case 211: /* Line 1455 of yacc.c */ -#line 1049 "util/configparser.y" +#line 1057 "util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3217,10 +3238,10 @@ yyreduce: } break; - case 210: + case 212: /* Line 1455 of yacc.c */ -#line 1058 "util/configparser.y" +#line 1066 "util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) @@ -3228,10 +3249,10 @@ yyreduce: } break; - case 211: + case 213: /* Line 1455 of yacc.c */ -#line 1065 "util/configparser.y" +#line 1073 "util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_key_file); @@ -3239,10 +3260,10 @@ yyreduce: } break; - case 212: + case 214: /* Line 1455 of yacc.c */ -#line 1072 "util/configparser.y" +#line 1080 "util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_cert_file); @@ -3250,10 +3271,10 @@ yyreduce: } break; - case 213: + case 215: /* Line 1455 of yacc.c */ -#line 1079 "util/configparser.y" +#line 1087 "util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_key_file); @@ -3261,10 +3282,10 @@ yyreduce: } break; - case 214: + case 216: /* Line 1455 of yacc.c */ -#line 1086 "util/configparser.y" +#line 1094 "util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_cert_file); @@ -3272,19 +3293,19 @@ yyreduce: } break; - case 215: + case 217: /* Line 1455 of yacc.c */ -#line 1093 "util/configparser.y" +#line 1101 "util/configparser.y" { OUTYY(("\nP(python:)\n")); } break; - case 219: + case 221: /* Line 1455 of yacc.c */ -#line 1102 "util/configparser.y" +#line 1110 "util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->python_script); @@ -3295,7 +3316,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 3299 "util/configparser.c" +#line 3320 "util/configparser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3507,7 +3528,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 1107 "util/configparser.y" +#line 1115 "util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 1a5c5f2ee..8c026bb6e 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -148,7 +148,8 @@ VAR_AUTO_TRUST_ANCHOR_FILE = 364, VAR_KEEP_MISSING = 365, VAR_ADD_HOLDDOWN = 366, - VAR_DEL_HOLDDOWN = 367 + VAR_DEL_HOLDDOWN = 367, + VAR_SO_RCVBUF = 368 }; #endif /* Tokens. */ @@ -262,6 +263,7 @@ #define VAR_KEEP_MISSING 365 #define VAR_ADD_HOLDDOWN 366 #define VAR_DEL_HOLDDOWN 367 +#define VAR_SO_RCVBUF 368 @@ -278,7 +280,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 282 "util/configparser.h" +#line 284 "util/configparser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/util/configparser.y b/util/configparser.y index 0ea227e19..6b4463fc5 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -100,7 +100,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DOMAIN_INSECURE VAR_PYTHON VAR_PYTHON_SCRIPT VAR_VAL_SIG_SKEW_MIN %token VAR_VAL_SIG_SKEW_MAX VAR_CACHE_MIN_TTL VAR_VAL_LOG_LEVEL %token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN -%token VAR_DEL_HOLDDOWN +%token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -152,7 +152,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_domain_insecure | server_val_sig_skew_min | server_val_sig_skew_max | server_cache_min_ttl | server_val_log_level | server_auto_trust_anchor_file | server_add_holddown | - server_del_holddown | server_keep_missing + server_del_holddown | server_keep_missing | server_so_rcvbuf ; stubstart: VAR_STUB_ZONE { @@ -519,6 +519,14 @@ server_version: VAR_VERSION STRING_ARG cfg_parser->cfg->version = $2; } ; +server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG + { + OUTYY(("P(server_so_rcvbuf:%s)\n", $2)); + if(!cfg_parse_memsize($2, &cfg_parser->cfg->socket_rcvbuf)) + yyerror("buffer size expected"); + free($2); + } + ; server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG { OUTYY(("P(server_msg_buffer_size:%s)\n", $2)); -- 2.47.3