]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- ip_freebind: yesno option in unbound.conf sets IP_FREEBIND for
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 15 Mar 2016 09:35:48 +0000 (09:35 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 15 Mar 2016 09:35:48 +0000 (09:35 +0000)
  binding to an IP address while the interface or address is down.

git-svn-id: file:///svn/unbound/trunk@3673 be551aaa-1e26-0410-a405-d3ace91eadb9

12 files changed:
daemon/remote.c
doc/Changelog
services/listen_dnsport.c
services/listen_dnsport.h
services/outside_network.c
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index c2112dec130a3040bdff1e04e6b9546f8d43d4ce..ff91694b56a45d59333953324fc4087fe457ec54 100644 (file)
@@ -389,7 +389,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err,
 
                /* open fd */
                fd = create_tcp_accept_sock(res, 1, &noproto, 0,
-                       cfg->ip_transparent, 0);
+                       cfg->ip_transparent, 0, cfg->ip_freebind);
                freeaddrinfo(res);
        }
 
index 992ad5cdc3033e644fa1b4052c23296e2068cd40..9024031fbf09f3c5c0ff8c8a405129b5728a86bf 100644 (file)
@@ -1,3 +1,7 @@
+15 March 2016: Wouter
+       - ip_freebind: yesno option in unbound.conf sets IP_FREEBIND for
+         binding to an IP address while the interface or address is down.
+
 14 March 2016: Wouter
        - Fix warnings in ifdef corner case, older or unknown libevent.
        - Fix compile for ub_event code with older libev.
index be63439e6bed1ab36c3f68a3f29423b69b105c72..6b844b0c9a8340352e633eff61f81e435d6de89e 100644 (file)
@@ -96,10 +96,11 @@ 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,
-       int rcv, int snd, int listen, int* reuseport, int transparent)
+       int rcv, int snd, int listen, int* reuseport, int transparent,
+       int freebind)
 {
        int s;
-#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_USE_MIN_MTU)  || defined(IP_TRANSPARENT) || defined(IP_BINDANY)
+#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_USE_MIN_MTU)  || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND)
        int on=1;
 #endif
 #ifdef IPV6_MTU
@@ -116,6 +117,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
 #endif
 #if !defined(IP_TRANSPARENT) && !defined(IP_BINDANY)
        (void)transparent;
+#endif
+#if !defined(IP_FREEBIND)
+       (void)freebind;
 #endif
        if((s = socket(family, socktype, 0)) == -1) {
                *inuse = 0;
@@ -180,6 +184,14 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
 #else
                (void)reuseport;
 #endif /* defined(SO_REUSEPORT) */
+#ifdef IP_FREEBIND
+               if (freebind &&
+                   setsockopt(s, IPPROTO_IP, IP_FREEBIND, (void*)&on,
+                   (socklen_t)sizeof(on)) < 0) {
+                       log_warn("setsockopt(.. IP_FREEBIND ..) failed: %s",
+                       strerror(errno));
+               }
+#endif /* IP_FREEBIND */
 #ifdef IP_TRANSPARENT
                if (transparent &&
                    setsockopt(s, IPPROTO_IP, IP_TRANSPARENT, (void*)&on,
@@ -490,14 +502,17 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
 
 int
 create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
-       int* reuseport, int transparent, int mss)
+       int* reuseport, int transparent, int mss, int freebind)
 {
        int s;
-#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY) || defined(IP_TRANSPARENT)
+#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY) || defined(IP_TRANSPARENT) || defined(IP_FREEBIND)
        int on = 1;
 #endif
 #ifndef IP_TRANSPARENT
        (void)transparent;
+#endif
+#if !defined(IP_FREEBIND)
+       (void)freebind;
 #endif
        verbose_print_addr(addr);
        *noproto = 0;
@@ -553,6 +568,13 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
                return -1;
        }
 #endif /* SO_REUSEADDR */
+#ifdef IP_FREEBIND
+       if (freebind && setsockopt(s, IPPROTO_IP, IP_FREEBIND, (void*)&on,
+           (socklen_t)sizeof(on)) < 0) {
+               log_warn("setsockopt(.. IP_FREEBIND ..) failed: %s",
+               strerror(errno));
+       }
+#endif /* IP_FREEBIND */
 #ifdef SO_REUSEPORT
        /* try to set SO_REUSEPORT so that incoming
         * connections are distributed evenly among the receiving threads.
@@ -704,7 +726,7 @@ create_local_accept_sock(const char *path, int* noproto)
 static int
 make_sock(int stype, const char* ifname, const char* port, 
        struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd,
-       int* reuseport, int transparent, int tcp_mss)
+       int* reuseport, int transparent, int tcp_mss, int freebind)
 {
        struct addrinfo *res = NULL;
        int r, s, inuse, noproto;
@@ -732,7 +754,7 @@ make_sock(int stype, const char* ifname, const char* port,
                s = create_udp_sock(res->ai_family, res->ai_socktype,
                        (struct sockaddr*)res->ai_addr, res->ai_addrlen,
                        v6only, &inuse, &noproto, (int)rcv, (int)snd, 1,
-                       reuseport, transparent);
+                       reuseport, transparent, freebind);
                if(s == -1 && inuse) {
                        log_err("bind: address already in use");
                } else if(s == -1 && noproto && hints->ai_family == AF_INET6){
@@ -740,7 +762,7 @@ make_sock(int stype, const char* ifname, const char* port,
                }
        } else  {
                s = create_tcp_accept_sock(res, v6only, &noproto, reuseport,
-                       transparent, tcp_mss);
+                       transparent, tcp_mss, freebind);
                if(s == -1 && noproto && hints->ai_family == AF_INET6){
                        *noip6 = 1;
                }
@@ -753,7 +775,7 @@ make_sock(int stype, const char* ifname, const char* port,
 static int
 make_sock_port(int stype, const char* ifname, const char* port, 
        struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd,
-       int* reuseport, int transparent, int tcp_mss)
+       int* reuseport, int transparent, int tcp_mss, int freebind)
 {
        char* s = strchr(ifname, '@');
        if(s) {
@@ -775,10 +797,10 @@ make_sock_port(int stype, const char* ifname, const char* port,
                (void)strlcpy(p, s+1, sizeof(p));
                p[strlen(s+1)]=0;
                return make_sock(stype, newif, p, hints, v6only, noip6,
-                       rcv, snd, reuseport, transparent, tcp_mss);
+                       rcv, snd, reuseport, transparent, tcp_mss, freebind);
        }
        return make_sock(stype, ifname, port, hints, v6only, noip6, rcv, snd,
-               reuseport, transparent, tcp_mss);
+               reuseport, transparent, tcp_mss, freebind);
 }
 
 /**
@@ -874,13 +896,14 @@ set_recvpktinfo(int s, int family)
  *     set to false on exit if reuseport failed due to no kernel support.
  * @param transparent: set IP_TRANSPARENT socket option.
  * @param tcp_mss: maximum segment size of tcp socket. default if zero.
+ * @param freebind: set IP_FREEBIND socket option.
  * @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,
        size_t rcv, size_t snd, int ssl_port, int* reuseport, int transparent,
-       int tcp_mss)
+       int tcp_mss, int freebind)
 {
        int s, noip6=0;
        if(!do_udp && !do_tcp)
@@ -888,7 +911,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
        if(do_auto) {
                if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, 
                        &noip6, rcv, snd, reuseport, transparent,
-                       tcp_mss)) == -1) {
+                       tcp_mss, freebind)) == -1) {
                        if(noip6) {
                                log_warn("IPv6 protocol not available");
                                return 1;
@@ -916,7 +939,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
                /* regular udp socket */
                if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, 
                        &noip6, rcv, snd, reuseport, transparent,
-                       tcp_mss)) == -1) {
+                       tcp_mss, freebind)) == -1) {
                        if(noip6) {
                                log_warn("IPv6 protocol not available");
                                return 1;
@@ -937,7 +960,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
                        atoi(strchr(ifname, '@')+1) == ssl_port) ||
                        (!strchr(ifname, '@') && atoi(port) == ssl_port));
                if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1, 
-                       &noip6, 0, 0, reuseport, transparent, tcp_mss)) == -1) {
+                       &noip6, 0, 0, reuseport, transparent, tcp_mss,
+                       freebind)) == -1) {
                        if(noip6) {
                                /*log_warn("IPv6 protocol not available");*/
                                return 1;
@@ -1095,7 +1119,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
                                cfg->so_rcvbuf, cfg->so_sndbuf,
                                cfg->ssl_port, reuseport,
                                cfg->ip_transparent,
-                               cfg->tcp_mss)) {
+                               cfg->tcp_mss, cfg->ip_freebind)) {
                                listening_ports_free(list);
                                return NULL;
                        }
@@ -1108,7 +1132,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
                                cfg->so_rcvbuf, cfg->so_sndbuf,
                                cfg->ssl_port, reuseport,
                                cfg->ip_transparent,
-                               cfg->tcp_mss)) {
+                               cfg->tcp_mss, cfg->ip_freebind)) {
                                listening_ports_free(list);
                                return NULL;
                        }
@@ -1123,7 +1147,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
                                cfg->so_rcvbuf, cfg->so_sndbuf,
                                cfg->ssl_port, reuseport,
                                cfg->ip_transparent,
-                               cfg->tcp_mss)) {
+                               cfg->tcp_mss, cfg->ip_freebind)) {
                                listening_ports_free(list);
                                return NULL;
                        }
@@ -1136,7 +1160,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
                                cfg->so_rcvbuf, cfg->so_sndbuf,
                                cfg->ssl_port, reuseport,
                                cfg->ip_transparent,
-                               cfg->tcp_mss)) {
+                               cfg->tcp_mss, cfg->ip_freebind)) {
                                listening_ports_free(list);
                                return NULL;
                        }
index 3a46e41b8de6657b880e7afe6e07aeae6bd1d76a..fbaa48321d0fc8551b74cd3cc57caeedf174512a 100644 (file)
@@ -190,11 +190,12 @@ void listen_start_accept(struct listen_dnsport* listen);
  * @param reuseport: if nonNULL and true, try to set SO_REUSEPORT on
  *     listening UDP port.  Set to false on return if it failed to do so.
  * @param transparent: set IP_TRANSPARENT socket option.
+ * @param freebind: set IP_FREEBIND socket option.
  * @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, int rcv,
-       int snd, int listen, int* reuseport, int transparent);
+       int snd, int listen, int* reuseport, int transparent, int freebind);
 
 /**
  * Create and bind TCP listening socket
@@ -205,10 +206,11 @@ int create_udp_sock(int family, int socktype, struct sockaddr* addr,
  *     listening UDP port.  Set to false on return if it failed to do so.
  * @param transparent: set IP_TRANSPARENT socket option.
  * @param mss: maximum segment size of the socket. if zero, leaves the default. 
+ * @param freebind: set IP_FREEBIND socket option.
  * @return: the socket. -1 on error.
  */
 int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
-       int* reuseport, int transparent, int mss);
+       int* reuseport, int transparent, int mss, int freebind);
 
 /**
  * Create and bind local listening socket
index 25e1e17e410c371ce37a2be2dd3db349ae746604..398d0da43f054c2432fadc2e9577732af98d9028 100644 (file)
@@ -909,13 +909,13 @@ udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int port,
                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,
-                       0, 0, 0, NULL, 0);
+                       0, 0, 0, NULL, 0, 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,
-                       0, 0, 0, NULL, 0);
+                       0, 0, 0, NULL, 0, 0);
        }
        return fd;
 }
index f9b1531c23dcef04988f68ac73cfad92d7045f90..e0102836bdc36e208025d3ab76ef9230b1f980b6 100644 (file)
@@ -163,6 +163,7 @@ config_create(void)
        cfg->so_sndbuf = 0;
        cfg->so_reuseport = 0;
        cfg->ip_transparent = 0;
+       cfg->ip_freebind = 0;
        cfg->num_ifs = 0;
        cfg->ifs = NULL;
        cfg->num_out_ifs = 0;
@@ -393,6 +394,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_MEMSIZE("so-sndbuf:", so_sndbuf)
        else S_YNO("so-reuseport:", so_reuseport)
        else S_YNO("ip-transparent:", ip_transparent)
+       else S_YNO("ip-freebind:", ip_freebind)
        else S_MEMSIZE("rrset-cache-size:", rrset_cache_size)
        else S_POW2("rrset-cache-slabs:", rrset_cache_slabs)
        else S_YNO("prefetch:", prefetch)
@@ -664,6 +666,7 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_MEM(opt, "so-sndbuf", so_sndbuf)
        else O_YNO(opt, "so-reuseport", so_reuseport)
        else O_YNO(opt, "ip-transparent", ip_transparent)
+       else O_YNO(opt, "ip-freebind", ip_freebind)
        else O_MEM(opt, "rrset-cache-size", rrset_cache_size)
        else O_DEC(opt, "rrset-cache-slabs", rrset_cache_slabs)
        else O_YNO(opt, "prefetch-key", prefetch_key)
index ef823fb88d3a082d683020537d651add5feff78e..1b163cb3c6e711a5d5195ca59f616e69117c5622 100644 (file)
@@ -142,6 +142,8 @@ struct config_file {
        int so_reuseport;
        /** IP_TRANSPARENT socket option requested on port 53 sockets */
        int ip_transparent;
+       /** IP_FREEBIND socket option request on port 53 sockets */
+       int ip_freebind;
 
        /** number of interfaces to open. If 0 default all interfaces. */
        int num_ifs;
index d4299f07ac199e26ee754790059cb58efc5d972f..6eb6ab4dc5d2f9b141de20d28f0b9b03542783fe 100644 (file)
@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 179
-#define YY_END_OF_BUFFER 180
+#define YY_NUM_RULES 180
+#define YY_END_OF_BUFFER 181
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,206 +373,207 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1800] =
+static yyconst flex_int16_t yy_accept[1809] =
     {   0,
-        1,    1,  161,  161,  165,  165,  169,  169,  173,  173,
-        1,    1,  180,  177,    1,  159,  159,  178,    2,  178,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      161,  162,  162,  163,  178,  165,  166,  166,  167,  178,
-      172,  169,  170,  170,  171,  178,  173,  174,  174,  175,
-      178,  176,  160,    2,  164,  178,  176,  177,    0,    1,
-        2,    2,    2,    2,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  161,    0,  165,    0,
-      172,    0,  169,  173,    0,  176,    0,    2,    2,  176,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  176,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  176,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,   73,  177,  177,  177,  177,  177,  177,
-        7,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  176,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      176,  177,  177,  177,  177,  177,   33,  177,  177,  177,
-      177,  177,  177,  177,  177,  140,  177,   13,   14,  177,
-       16,   15,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  133,  177,  177,  177,  177,  177,  177,  177,
-        3,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  176,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  168,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,   36,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,   37,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-       18,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,   88,  168,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,   87,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,   71,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,   23,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,   34,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,   35,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,   25,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  153,
-      177,  177,  177,  177,  177,  177,   29,  177,   30,  177,
-      177,  177,   74,  177,   75,  177,   72,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,    6,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,   90,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,   26,  177,  177,  177,  177,  177,  116,
-      115,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,   38,  177,  177,  177,
-      177,  177,  177,  177,  177,   77,   76,  177,  177,  177,
-      177,  177,  177,  177,  112,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,   56,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-       60,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  114,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,    5,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  108,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  126,  177,  109,  177,  138,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,   24,  177,  177,  177,
-      177,   79,  177,   80,   78,  177,  177,  177,  177,  177,
-      177,  177,   86,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  110,  177,  177,  177,  177,
-      137,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,   70,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,   31,
-
-      177,  177,   20,  177,  177,  177,   17,  177,   95,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,   45,   47,  177,  177,  177,  177,  177,
-      177,  177,  177,  141,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,   81,  177,  177,
-      177,  177,  177,  177,   85,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,   89,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  132,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,   99,
-      177,  103,  177,  177,  177,  177,   84,  177,  177,   66,
-      177,  124,  177,  177,  177,  177,  139,  177,  177,  177,
-      177,  177,  177,  177,  146,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  102,  177,  177,  177,
-      177,  177,   48,   49,  177,  177,   32,   55,  104,  177,
-      117,  113,  177,  177,   41,  177,  106,  177,  177,  177,
-      177,  177,    8,  177,  177,  177,   69,  177,  177,  177,
-      177,  155,  177,  123,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,   91,  145,  177,  177,  177,  177,  177,  177,  177,
-      177,  134,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  105,  177,   40,
-       42,  177,  177,  177,  177,  177,  177,  177,   68,  177,
-      177,  177,  177,  154,  177,  177,  177,  177,  128,   21,
-       22,  177,  177,  177,  177,  177,  177,  177,   65,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  130,
-      127,  177,  177,  177,  177,  177,  177,  177,  177,   39,
-      177,  177,  177,  177,  177,  177,  177,   12,  177,  177,
-
-      177,  177,  177,  177,  177,  177,  177,   11,  177,  177,
-       19,  177,  177,  177,  158,  177,   43,  177,  136,  129,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,   98,   97,  177,  177,  131,  125,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,   50,  177,  177,  135,  177,
-      177,  177,  177,  177,  177,  177,  177,   44,  177,  177,
-      177,   92,   94,  118,  177,  177,  177,   96,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  142,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-
-      119,  177,  177,   27,  177,  177,  177,    4,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  144,  177,  177,  122,  177,  177,
-      177,  177,  177,  177,  177,   53,  177,   28,  177,   10,
-      177,  177,  177,  177,  177,  120,   57,  177,  177,  177,
-      101,  177,  177,  177,  177,  177,  177,  177,  143,   82,
-      177,  177,  177,  177,   59,   63,   58,  177,   51,  177,
-        9,  177,  177,  156,  177,  177,  100,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,   64,   62,  177,
-       52,  177,  111,  177,  121,  177,  177,   93,   46,  177,
-
-      177,  177,  177,  177,  177,   83,   61,   54,  157,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,   67,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  107,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  149,  177,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  177,  177,  147,  177,  150,
-      151,  177,  177,  177,  177,  177,  148,  152,    0
-
+        1,    1,  162,  162,  166,  166,  170,  170,  174,  174,
+        1,    1,  181,  178,    1,  160,  160,  179,    2,  179,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      162,  163,  163,  164,  179,  166,  167,  167,  168,  179,
+      173,  170,  171,  171,  172,  179,  174,  175,  175,  176,
+      179,  177,  161,    2,  165,  179,  177,  178,    0,    1,
+        2,    2,    2,    2,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  162,    0,  166,    0,
+      173,    0,  170,  174,    0,  177,    0,    2,    2,  177,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  177,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  177,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,   74,  178,  178,  178,  178,
+      178,  178,    7,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  177,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  177,  178,  178,  178,  178,  178,   34,
+      178,  178,  178,  178,  178,  178,  178,  178,  141,  178,
+       13,   14,  178,   16,   15,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  134,  178,  178,  178,
+      178,  178,  178,  178,    3,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  177,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  169,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,   37,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+       38,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,   18,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,   89,  169,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,   88,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,   72,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+       23,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,   35,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+       36,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,   25,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  154,  178,  178,  178,
+      178,  178,  178,   29,  178,   30,  178,  178,  178,   75,
+      178,   76,  178,   73,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,    6,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,   91,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+       26,  178,  178,  178,  178,  178,  178,  117,  116,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,   39,  178,  178,  178,  178,  178,
+      178,  178,  178,   78,   77,  178,  178,  178,  178,  178,
+
+      178,  178,  113,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,   57,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,   61,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,   33,  178,  178,  178,  178,  178,  178,  115,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,    5,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      109,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      127,  178,  110,  178,  139,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,   24,  178,  178,  178,  178,
+       80,  178,   81,   79,  178,  178,  178,  178,  178,  178,
+      178,   87,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  111,  178,  178,  178,  178,  138,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,   71,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,   31,  178,
+      178,   20,  178,  178,  178,   17,  178,   96,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,   46,   48,  178,  178,  178,  178,  178,  178,
+      178,  178,  142,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,   82,  178,  178,  178,
+      178,  178,  178,   86,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,   90,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  133,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  100,  178,
+      104,  178,  178,  178,  178,   85,  178,  178,   67,  178,
+      125,  178,  178,  178,  178,  140,  178,  178,  178,  178,
+      178,  178,  178,  147,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  103,  178,  178,  178,  178,
+      178,   49,   50,  178,  178,   32,   56,  105,  178,  118,
+      114,  178,  178,   42,  178,  107,  178,  178,  178,  178,
+      178,    8,  178,  178,  178,   70,  178,  178,  178,  178,
+      156,  178,  124,  178,  178,  178,  178,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+       92,  146,  178,  178,  178,  178,  178,  178,  178,  178,
+      135,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  106,  178,   41,   43,
+      178,  178,  178,  178,  178,  178,  178,   69,  178,  178,
+      178,  178,  155,  178,  178,  178,  178,  129,   21,   22,
+      178,  178,  178,  178,  178,  178,  178,   66,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  131,  128,
+      178,  178,  178,  178,  178,  178,  178,  178,   40,  178,
+
+      178,  178,  178,  178,  178,  178,   12,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,   11,  178,  178,   19,
+      178,  178,  178,  159,  178,   44,  178,  137,  130,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+       99,   98,  178,  178,  132,  126,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,   51,  178,  178,  136,  178,  178,
+      178,  178,  178,  178,  178,  178,   45,  178,  178,  178,
+       93,   95,  119,  178,  178,  178,   97,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  143,  178,  178,  178,
+
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  120,
+      178,  178,   27,  178,  178,  178,    4,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  145,  178,  178,  123,  178,  178,  178,
+      178,  178,  178,  178,   54,  178,   28,  178,   10,  178,
+      178,  178,  178,  178,  121,   58,  178,  178,  178,  102,
+      178,  178,  178,  178,  178,  178,  178,  144,   83,  178,
+      178,  178,  178,   60,   64,   59,  178,   52,  178,    9,
+      178,  178,  157,  178,  178,  101,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,   65,   63,  178,   53,
+
+      178,  112,  178,  122,  178,  178,   94,   47,  178,  178,
+      178,  178,  178,  178,   84,   62,   55,  158,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,   68,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  108,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  150,  178,  178,  178,  178,  178,  178,  178,
+      178,  178,  178,  178,  178,  178,  148,  178,  151,  152,
+
+      178,  178,  178,  178,  178,  149,  153,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -615,415 +616,417 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1814] =
+static yyconst flex_int16_t yy_base[1823] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2318, 2244,   50, 3568, 3568, 3568,  129,   94,
+       87,  108, 2173, 2113,   50, 3572, 3572, 3572,  129,   94,
        70,  104,  130,   90,   92,  115,  127,   95,   84,  111,
       137,  148,   50,  170,  122,  150,  157,  160,  140,  166,
-     2184, 3568, 3568, 3568,   70, 2017, 3568, 3568, 3568,   42,
-     1968, 1969, 3568, 3568, 3568,  192, 1824, 3568, 3568, 3568,
-      141, 1737, 3568,  198, 3568,  202,  197, 1673,  210,  120,
+     2026, 3572, 3572, 3572,   70, 1922, 3572, 3572, 3572,   42,
+     1803, 1693, 3572, 3572, 3572,  192, 1639, 3572, 3572, 3572,
+      141, 1378, 3572,  198, 3572,  202,  197, 1270,  210,  120,
         0,  223,    0,    0,  103,  203,  180,  205,  164,  206,
       213,  210,  125,  216,  224,  218,  226,  227,  229,  230,
       231,  238,  248,  244,  240,  250,  253,  233,  249,  258,
 
       264,  261,  265,  266,  269,  270,  273,  276,  278,  280,
       173,  281,  282,  284,  285,  290,  291,  293,  296,  292,
-      298,  302,  307,  306,  303,  313, 1512,  250, 1433,  325,
-     1243,  333,  498,  453,  329,  243,  343,  347,    0,  326,
+      298,  302,  307,  306,  303,  313, 1109,  250, 1073,  325,
+      692,  333,  464,  379,  329,  243,  343,  347,    0,  326,
       328,  345,  342,  343,  344,  346,  348,  354,  353,  364,
       352,  373,  365,  356,  362,   49,  370,  371,  369,  380,
-      384,  360,  381,  385,  388,  391,  397,  403,  400,  409,
-      407,  405,  406,  417,  416,  423,  424,  422,  379,  312,
-      410,  420,  425,  428,  431,  432,  433,  434,  435,  438,
-      439,  446,  442,  443,  449,  455,  451,  452,  465,  468,
-
-      472,  459,  469,  471,  474,  480,  479,  488,  476,  477,
-      485,  473,  489,  496,  502,  500,  503,  494,  505,  506,
-      507,  508,  518,  512,  514,  516,  524,  522,  523,  525,
-      527,  528,  530,  531,  532,  534,  535,  543,  545,  539,
-      537,  544,  550,  555,  558,  559,  564,  566,  556,  560,
-      565,  572,  578,  579,  582,  580,  585,  586,  567,  593,
-      589,  591,  594,  592,  600,  601,  607,  603,  604,  611,
-      605,  612,  615,  613,  635,  614,  623,  622,  633,  624,
-      628,  641,  630,  640,  642,  644,  661,  645,  655,  663,
-      646,  666,  670,  664,  672,  673,  676,  675,  674,  679,
-
-      680,  682,  683,  681,  695,  687,  698,  685,  701,  705,
-      702,  708,  710,  711,  719,  700,  715,  716,  718,  725,
-      727,  717,  729, 3568,  733,  720,  731,  735,  736,  737,
-     3568,  740,  742,  743,  750,  746,  747,  751,  753,  754,
-      758,  761,  763,  764,  765,  768,  766,  786,  769,  771,
-      775,  778,  774,  776,  797,  781,  799,  788,  793,  795,
-      801,  804,  808,  807,  809,  814,  811,  822,  818,  819,
-      821,  823,  825,  827,  832,  833,  835,  838,  840,  847,
-      845,  849,  852,  860,  854,  862,  868,  843,  865,  867,
-      874,  872,  873,  857,  880,  879,  881,  882,  883,  886,
-
-      888,  889,  896,  893,  897,  904,  905,  898,  907,  899,
-      909,  918,  914,  916,  922,  923,  917,  924,  931,  927,
-      933,  929,  942,  939,  940,  948,  945,  944,  951,  955,
-      949,  956,  959,  960,  961,  963,  965,  964,  966,  967,
-      971,  975,  972,  974,  987,  990,  984,  992,  982,  989,
-      996,  999, 1000, 1003, 1002, 1011, 1001, 1013, 1012, 1004,
-     1017,  976, 1023, 1014, 1024, 1028, 3568, 1031, 1030, 1029,
-     1032, 1036, 1038, 1015, 1057, 3568, 1039, 3568, 3568, 1042,
-     3568, 3568, 1043, 1045, 1049, 1060, 1080, 1058, 1046, 1047,
-     1065, 1071, 1067, 1077, 1073, 1085, 1089, 1090, 1091, 1083,
-
-     1075, 1097, 1100, 1103, 1105, 1101, 1106, 1110, 1112, 1118,
-     1114, 1115, 1122, 1123, 1124, 1127, 1126, 1125, 1129, 1135,
-     1139, 1136, 3568, 1137, 1138, 1145, 1140, 1149, 1141, 1157,
-     3568, 1151, 1153, 1152, 1159, 1161, 1162, 1165, 1163, 1166,
-     1169, 1171, 1164, 1170, 1186, 1175, 1177, 1192, 1194, 1193,
-     1181, 1190, 1196, 1198, 1203, 1210, 1206, 1199, 1048, 1212,
-     1208, 1214, 1216, 1211, 1218, 1220, 1221, 1223, 1224, 1246,
-     1225, 1227, 1231, 1232, 1230, 1234, 1236, 1254, 1238, 1259,
-     1260, 1252, 1240, 1263, 1269, 1273, 1270, 1272, 1280, 1279,
-     1282, 1286, 1283, 1233, 1281, 1289, 1291, 1297, 3568, 1303,
-
-     1299, 1292, 1300, 1309, 1305, 1306, 1307, 1312, 1314, 1315,
-     1316, 1317, 1318, 1324, 3568, 1322, 1326, 1328, 1329, 1330,
-     1332, 1338, 1339, 1350, 1342, 3568, 1353, 1356, 1346, 1351,
-     1354, 1358, 1359, 1361, 1362, 1363, 1366, 1369, 1370, 1372,
-     1377, 1380, 1367, 1381, 1382, 1387, 1388, 1390, 1391, 1392,
-     3568, 1393, 1395, 1394, 1401, 1404, 1407, 1409, 1415, 1410,
-     1412, 1416, 1421, 1418, 1422, 1419, 1420, 3568,  158, 1423,
-     1425, 1427, 1435, 1439, 1441, 1443, 1442, 1444, 1449, 1450,
-     1432, 1452, 1453, 1460, 1455, 1457, 1461, 1468, 1466, 1470,
-     1462, 1475, 1464, 1474, 1479, 1480, 1485, 1486, 1487, 1488,
-
-     1489, 1492, 1493, 1494, 1495, 1496, 1498, 1502, 1503, 1501,
-     1510, 3568, 1520, 1509, 1522, 1511, 1524, 1513, 1533, 1526,
-     1534, 1527, 1537, 1541, 1538, 1542, 1543, 1549, 1544, 1551,
-     1552, 1554, 1560, 1562, 1558, 1561, 1573, 1567, 1559, 3568,
-     1571, 1564, 1574, 1569, 1581, 1583, 1577, 1586, 1584, 1585,
-     1588, 1600, 1590, 1602, 3568, 1604, 1606, 1595, 1609, 1610,
-     1616, 1612, 1619, 1620, 1621, 1623, 1622, 1624, 1628, 1629,
-     1632, 3568, 1638, 1641, 1637, 1648, 1644, 1645, 1647, 1650,
-     1634, 1651, 1657, 1655, 1656, 1659, 1660, 1661, 1663, 1665,
-     1666, 1667, 1668, 1677, 3568, 1686, 1670, 1680, 1687, 1692,
-
-     1698, 1695, 1694, 1696,  866, 1700, 1697, 1701, 1703, 1704,
-     1707, 1709, 1710, 1711, 1712, 1713, 1716, 1722, 1730, 1720,
-     1731, 1733, 1736, 1734, 1739, 1746, 1750, 1751, 1753, 3568,
-     1757, 1743, 1758, 1759, 1747, 1765, 1768, 1762, 1769, 1749,
-     1770, 1771, 1779, 1772, 1776, 1778, 1780, 1782, 1783, 1785,
-     1786, 1714, 1790, 1793, 1801, 1794, 1803, 1806, 1808, 3568,
-     1809, 1816, 1813, 1817, 1811, 1825, 3568, 1822, 3568, 1823,
-     1832, 1835, 3568, 1837, 3568, 1839, 3568, 1841, 1842, 1834,
-     1826, 1845, 1847, 1846, 1854, 1848, 1855, 1850, 1858, 1860,
-     1857, 1862, 3568, 1863, 1865, 1870, 1873, 1866, 1874, 1875,
-
-     1877, 1880, 1883, 1890, 1887, 1896, 1889, 1893, 1895, 3568,
-     1898, 1899, 1902, 1904, 1905, 1915, 1912, 1909, 1916, 1906,
-     1925, 1932, 1919, 1926, 1929, 1913, 1930, 1939, 1936, 1937,
-     1941, 1938, 1945, 1946, 1947, 1950, 1949, 1952, 1956, 1953,
-     1954, 1955, 1957, 3568, 1970, 1962, 1972, 1971, 1960, 3568,
-     3568, 1982, 1984, 1985, 1986, 1988, 1989, 1991, 1992, 1998,
-     1995, 1996, 1999, 2004, 2005, 2007, 2006, 2009, 2010, 2013,
-     2011, 2015, 2020, 2029, 2026, 2021, 3568, 2036, 2032, 2042,
-     2040, 2033, 2048, 2041, 2049, 3568, 3568, 1784, 2047, 2045,
-     2051, 2061, 2055, 2057, 3568, 2059, 2062, 2064, 2067, 2068,
-
-     2065, 2076, 2077, 2081, 2082, 2078, 2083, 2086, 2084, 2093,
-     2089, 2087, 2091, 2107, 2108, 2110, 3568, 2104, 2115, 2090,
-     2112, 2116, 2118, 2119, 2121, 2120, 2123, 2122, 2128, 2136,
-     2124, 2132, 2133, 2139, 2135, 2141, 2147, 2144, 2154, 2156,
-     3568, 2157, 2150, 2163, 2160, 2162, 2164, 2171, 2167, 2169,
-     2170, 2177, 2173, 2174, 2175, 2183, 2176, 2191, 2178, 3568,
-     2194, 2200, 2195, 2197, 2205, 2187, 2206, 2201, 2208, 3568,
-     2211, 2217, 2209, 2215, 2223, 2225, 2231, 2221, 2219, 2232,
-     2234, 2233, 2235, 2236, 2237, 2239, 2241, 2242, 2243, 2094,
-     2246, 2248, 2249, 2251, 2257, 2259, 2267, 2269, 2271, 2277,
-
-     2264, 2274, 2280, 2276, 2279, 2281, 2282, 2289, 2287, 2296,
-     2285, 3568, 2292, 2298, 2301, 2303, 2294, 2304, 2306, 2312,
-     2308, 3568, 2315, 3568, 2313, 3568, 2316, 2322, 2319, 2323,
-     2324, 2326, 2327, 2329, 2335, 2333, 3568, 2336, 2338, 2340,
-     2341, 3568, 2344, 3568, 3568, 2346, 2351, 2357, 2353, 2354,
-     2358, 2363, 3568, 2359, 2364, 2367, 2369, 2371, 2373, 2374,
-     2375, 2372, 2376, 2377, 2379, 3568, 2383, 2380, 2389, 2381,
-     3568, 2394, 2396, 2393, 2400, 2401, 2404, 2406, 2402, 2410,
-     2417, 2413, 2414, 2415, 3568, 2416, 2422, 2425, 2428, 2426,
-     2431, 2437, 2433, 2440, 2434, 2443, 2445, 2439, 2444, 3568,
-
-     2449, 2453, 3568, 2450, 2457, 2459, 3568, 2460, 3568, 2461,
-     2464, 2462, 2465, 2469, 2471, 2473, 2470, 2478, 2476, 2483,
-     2485, 2486, 2488, 3568, 3568, 2491, 2492, 2498, 2499, 2493,
-     2495, 2502, 2504, 3568, 2506, 2509, 2510, 2511, 2512, 2516,
-     2519, 2521, 2518, 2515, 2523, 2524, 2525, 3568, 2529, 2527,
-     2536, 2532, 2537, 2538, 3568, 2540, 2542, 2541, 2543, 2547,
-     2561, 2564, 2566, 2556, 2567, 2569, 2573, 2575, 2558, 2579,
-     2582, 2570, 3568, 2583, 2585, 2576, 2587, 2590, 2591, 2593,
-     2598, 2601, 2592, 2594, 2602, 2604, 3568, 2605, 2606, 2607,
-     2612, 2618, 2613, 2620, 2610, 2623, 2626, 2615, 2628, 2630,
-
-     2631, 2637, 2634, 2638, 2640, 2641, 2642, 2648, 2647, 3568,
-     2645, 3568, 2652, 2659, 2662, 2663, 3568, 2654, 2666, 3568,
-     2667, 3568, 2668, 2673, 2670, 2677, 3568, 2681, 2674, 2682,
-     2684, 2685, 2686, 2691, 3568, 2689, 2694, 2701, 2698, 2687,
-     2695, 2702, 2704, 2708, 2715, 2711, 3568, 2712, 2714, 2721,
-     2718, 2546, 3568, 3568, 2720, 2722, 3568, 3568, 3568, 2730,
-     3568, 3568, 2727, 2736, 3568, 2738, 3568, 2744, 2740, 2731,
-     2733, 2743, 3568, 2742, 2745, 2750, 3568, 2751, 2758, 2746,
-     2752, 3568, 2763, 3568, 2754, 2766, 2756, 2769, 2772, 2776,
-     2778, 2773, 2765, 2779, 2780, 2781, 2782, 2784, 2789, 2786,
-
-     2790, 2794, 2796, 2797, 2798, 2799, 2800, 2801, 2802, 2811,
-     2819, 3568, 3568, 2803, 2808, 2805, 2813, 2815, 2820, 2825,
-     2828, 3568, 2831, 2832, 2835, 2834, 2836, 2837, 2844, 2838,
-     2846, 2852, 2848, 2850, 2839, 2851, 2853, 3568, 2859, 3568,
-     3568, 2861, 2864, 2863, 2868, 2869, 2871, 2872, 3568, 2874,
-     2875, 2885, 2877, 3568, 2892, 2880, 2894, 2896, 3568, 3568,
-     3568, 2897, 2882, 2900, 2901, 2902, 2886, 2903, 3568, 2908,
-     2910, 2912, 2913, 2919, 2921, 2927, 2924, 2926, 2931, 3568,
-     3568, 2937, 2934, 2935, 2933, 2936, 2939, 2941, 2943, 3568,
-     2945, 2944, 2950, 2949, 2952, 2953, 2956, 3568, 2957, 2959,
-
-     2964, 2967, 2968, 2960, 2971, 2972, 2973, 3568, 2975, 2977,
-     3568, 2981, 2974, 2982, 3568, 2991, 3568, 2994, 3568, 3568,
-     2986, 2995, 2998, 3000, 3003, 3005, 2989, 3008, 3014, 3011,
-     3012, 3568, 3568, 3013, 3020, 3568, 3568, 3017, 3018, 3021,
-     3024, 3026, 3028, 3029, 3025, 3030, 3031, 3036, 3038, 3041,
-     3042, 2888, 3043, 3045, 3047, 3568, 3051, 3053, 3568, 3055,
-     3058, 3059, 3060, 3061, 3071, 3064, 3066, 3568, 3072, 3068,
-     3074, 3568, 3568, 3568, 3078, 3084, 3079, 3568, 3082, 3086,
-     3089, 3090, 3091, 3092, 3098, 3094, 3101, 3568, 3097, 3102,
-     3104, 3108, 3105, 3106, 3107, 3113, 3115, 3118, 3124, 3127,
-
-     3568, 3129, 3125, 3568, 3132, 3133, 3134, 3568, 3135, 3137,
-     3138, 3140, 3142, 3143, 3147, 3145, 3149, 3152, 3150, 3156,
-     3154, 3163, 3166, 3168, 3568, 3172, 3155, 3568, 3175, 3176,
-     3177, 3179, 3186, 3188, 3189, 3568, 3192, 3568, 3195, 3568,
-     3198, 3193, 3199, 3201, 3204, 3568, 3568, 3202, 3206, 3211,
-     3568, 3212, 3169, 3203, 3213, 3214, 3215, 3218, 3568, 3568,
-     3219, 3225, 3227, 3230, 3568, 3568, 3568, 3238, 3568, 3240,
-     3568, 3242, 3233, 3568, 3246, 3220, 3568, 3243, 3249, 3251,
-     3228, 3252, 3254, 3255, 3257, 3258, 3264, 3568, 3568, 3266,
-     3568, 3269, 3568, 3271, 3568, 3272, 3273, 3568, 3568, 3281,
-
-     3278, 3280, 3279, 3282, 3283, 3568, 3568, 3568, 3568, 3286,
-     3287, 3288, 3289, 3291, 3294, 3293, 3296, 3303, 3295, 3312,
-     3314, 3297, 3305, 3321, 3313, 3568, 3315, 3306, 3328, 3329,
-     3326, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3341,
-     3339, 3354, 3345, 3352, 3359, 3342, 3365, 3363, 3366, 3367,
-     3368, 3374, 3370, 3371, 3568, 3372, 3375, 3376, 3378, 3379,
-     3383, 3381, 3392, 3396, 3385, 3398, 3382, 3403, 3399, 3404,
-     3407, 3408, 3409, 3568, 3410, 3412, 3414, 3416, 3418, 3420,
-     3421, 3422, 3425, 3427, 3430, 3432, 3436, 3568, 3437, 3568,
-     3568, 3441, 3438, 3444, 3448, 3450, 3568, 3568, 3568, 3476,
-
-     3483, 3490, 3497, 3504,   94, 3511, 3518, 3525, 3532, 3539,
-     3546, 3553, 3560
+      384,  360,  381,  385,  391,  388,  389,  403,  400,  407,
+      409,  406,  410,  417,  414,  421,  423,  420,  422,  312,
+      424,  426,  425,  428,  429,  433,  430,  434,  441,  437,
+      439,  448,  440,  449,  455,  461,  450,  452,  465,  468,
+
+      472,  471,  470,  474,  475,  481,  479,  485,  477,  478,
+      487,  488,  491,  497,  502,  500,  503,  489,  506,  507,
+      508,  509,  516,  514,  519,  517,  529,  515,  523,  525,
+      526,  530,  533,  527,  534,  532,  537,  540,  547,  548,
+      544,  543,  549,  553,  554,  557,  559,  565,  568,  566,
+      570,  572,  573,  576,  579,  577,  580,  587,  588,  589,
+      596,  590,  593,  594,  601,  602,  603,  611,  608,  604,
+      607,  605,  614,  616,  622,  637,  626,  624,  629,  638,
+      630,  634,  647,  632,  643,  631,  644,  665,  648,  658,
+      666,  662,  664,  673,  667,  674,  675,  679,  680,  677,
+
+      676,  683,  686,  689,  696,  684,  700,  704,  685,  705,
+      703,  710,  712,  714,  716,  717,  725,  702,  721,  722,
+      724,  726,  731,  732,  737, 3572,  739,  733,  735,  741,
+      742,  744, 3572,  745,  746,  747,  757,  749,  755,  751,
+      768,  764,  748,  767,  769,  771,  772,  774,  775,  795,
+      778,  780,  776,  784,  797,  785,  806,  783,  809,  787,
+      781,  804,  812,  791,  815,  814,  816,  817,  818,  829,
+      825,  826,  827,  828,  834,  830,  838,  843,  839,  845,
+      841,  852,  849,  856,  859,  866,  864,  868,  870,  853,
+      871,  869,  877,  875,  878,  880,  886,  882,  884,  885,
+
+      889,  890,  892,  894,  895,  901,  902,  903,  904,  912,
+      905,  914,  913,  915,  921,  920,  922,  928,  932,  923,
+      924,  939,  935,  933,  942,  949,  943,  945,  951,  950,
+      952,  962,  963,  953,  964,  960,  967,  954,  968,  971,
+      974,  969,  976,  977,  986,  979,  980,  989,  987,  982,
+      995,  996,  997, 1001, 1002, 1003, 1004, 1005, 1013, 1006,
+     1015, 1017, 1007, 1020, 1027, 1019, 1028, 1031, 1029, 3572,
+     1039, 1033, 1035, 1036, 1042, 1041, 1043, 1069, 3572, 1045,
+     3572, 3572, 1044, 3572, 3572, 1046, 1051, 1048, 1058, 1092,
+     1062, 1064, 1065, 1063, 1071, 1072, 1075, 1080, 1083, 1097,
+
+     1086, 1098, 1085, 1100, 1101, 1105, 1106, 1107, 1112, 1113,
+     1115, 1117, 1123, 1130, 1126, 1122, 1132, 1133, 1134, 1137,
+     1136, 1135, 1139, 1145, 1149, 1146, 3572, 1147, 1148, 1155,
+     1150, 1159, 1151, 1167, 3572, 1056, 1163, 1161, 1169, 1162,
+     1171, 1172, 1173, 1174, 1175, 1176, 1179, 1180, 1188, 1183,
+     1190, 1200, 1201, 1198, 1197, 1199, 1205, 1206, 1207, 1214,
+     1212, 1213, 1217, 1223, 1219, 1221, 1225, 1222, 1228, 1226,
+     1229, 1233, 1234, 1255, 1236, 1235, 1238, 1241, 1243, 1251,
+     1259, 1242, 1252, 1257, 1244, 1261, 1268, 1269, 1274, 1282,
+     1278, 1281, 1285, 1287, 1288, 1291, 1294, 1295, 1296, 1297,
+
+     1306, 1298, 3572, 1312, 1308, 1309, 1313, 1319, 1315, 1317,
+     1318, 1321, 1322, 1323, 1324, 1325, 1330, 1332, 1338, 3572,
+     1334, 1339, 1335, 1343, 1346, 1347, 1340, 1354, 1361, 1358,
+     3572, 1364, 1365, 1367, 1360, 1362, 1368, 1372, 1373, 1375,
+     1379, 1380, 1381, 1377, 1388, 1390, 1386, 1391, 1397, 1398,
+     1399, 1401, 1402, 1403, 1405, 3572, 1404, 1411, 1406, 1407,
+     1425, 1428, 1412, 1430, 1413, 1424, 1431, 1437, 1426, 1436,
+     1434, 1435, 3572,  158, 1440, 1441, 1439, 1447, 1451, 1450,
+     1452, 1448, 1449, 1461, 1458, 1464, 1465, 1467, 1469, 1470,
+     1471, 1472, 1474, 1476, 1478, 1479, 1484, 1482, 1489, 1490,
+
+     1491, 1494, 1496, 1497, 1502, 1503, 1504, 1505, 1508, 1506,
+     1507, 1509, 1516, 1514, 1513, 1517, 3572, 1535, 1523, 1524,
+     1521, 1531, 1534, 1543, 1539, 1540, 1544, 1547, 1548, 1555,
+     1551, 1556, 1559, 1562, 1565, 1566, 1553, 1568, 1575, 1577,
+     1573, 1576, 1587, 1581, 1579, 3572, 1584, 1583, 1591, 1585,
+     1600, 1592, 1589, 1602, 1597, 1604, 1593, 1613, 1614, 1616,
+     3572, 1617, 1619, 1621, 1626, 1549, 1628, 1630, 1632, 1623,
+     1633, 1634, 1636, 1644, 1637, 1646, 1647, 3572, 1653, 1656,
+     1657, 1663, 1650, 1649, 1660, 1665, 1661, 1666, 1672, 1670,
+     1673, 1674, 1669, 1675, 1677, 1678, 1680, 1683, 1679, 1691,
+
+     3572, 1700, 1685, 1701, 1704, 1705, 1712, 1710, 1711, 1708,
+     1692, 1713, 1715, 1716, 1717, 1721, 1723, 1724, 1726, 1729,
+     1730, 1728, 1733, 1732, 1746, 1735, 1748, 1749, 1736, 1750,
+     1754, 1760, 1761, 1762, 1765, 3572, 1768, 1769, 1752, 1772,
+     1774, 1775, 1781, 1779, 1782, 1783, 1758, 1785, 1786, 1795,
+     1787, 1789, 1791, 1793, 1797, 1796, 1798, 1799, 1815, 1807,
+     1809, 1816, 1821, 1822, 1823, 1824, 3572, 1805, 1828, 1832,
+     1829, 1835, 1844, 3572, 1838, 3572, 1840, 1841, 1851, 3572,
+     1848, 3572, 1850, 3572, 1854, 1852, 1858, 1859, 1860, 1861,
+     1862, 1864, 1865, 1867, 1869, 1870, 1871, 1876, 1878, 3572,
+
+     1872, 1879, 1886, 1889, 1880, 1882, 1888, 1892, 1896, 1899,
+     1906, 1903, 1910, 1907, 1909, 1911, 3572, 1913, 1914, 1916,
+     1918, 1924, 1925, 1926, 1932, 1929, 1919, 1933, 1940, 1945,
+     1939, 1943, 1947, 1948, 1954, 1950, 1951, 1959, 1955, 1952,
+     1961, 1963, 1964, 1965, 1966, 1974, 1968, 1971, 1972, 1975,
+     3572, 1985, 1982, 1980, 1990, 1989, 1976, 3572, 3572, 1994,
+     1999, 2000, 2003, 2004, 2006, 2008, 2007, 2014, 2011, 2012,
+     2015, 2018, 2021, 2022, 2027, 2023, 2024, 2029, 2031, 2034,
+     2040, 2049, 2044, 2033, 3572, 2046, 2037, 2057, 2054, 2058,
+     2066, 2059, 2062, 3572, 3572, 2067, 2063, 2068, 2069, 2079,
+
+     2073, 2077, 3572, 2070, 2080, 2082, 2091, 2092, 2085, 2081,
+     2083, 2100, 2093, 2101, 2102, 2103, 2105, 2111, 2109, 2110,
+     2112, 2117, 2119, 2126, 3572, 2120, 2131, 2123, 2127, 2133,
+     2134, 2136, 2138, 2139, 2137, 2140, 2145, 2152, 2141, 2149,
+     2150, 2154, 2156, 2159, 2164, 2165, 2171, 2172, 3572, 2178,
+     2167, 2179, 2177, 2181, 2182, 2189, 2186, 2187, 2188, 2195,
+     2191, 3572, 2192, 2193, 2197, 2194, 2203, 2201, 3572, 2209,
+     2213, 2210, 2215, 2217, 2216, 2223, 2219, 2227, 3572, 2228,
+     2234, 2230, 2231, 2237, 2240, 2247, 2236, 2239, 2244, 2249,
+     2251, 2252, 2253, 2254, 2256, 2258, 2259, 2260, 2261, 2265,
+
+     2270, 2266, 2284, 2272, 2262, 2286, 2288, 2290, 2296, 2279,
+     2292, 2299, 2295, 2297, 2298, 2300, 2308, 2302, 2311, 2309,
+     3572, 2312, 2313, 2317, 2319, 2320, 2322, 2326, 2323, 2327,
+     3572, 2330, 3572, 2332, 3572, 2333, 2338, 2334, 2339, 2341,
+     2342, 2343, 2346, 2355, 2349, 3572, 2352, 2356, 2357, 2358,
+     3572, 2369, 3572, 3572, 2360, 2362, 2370, 2371, 2372, 2377,
+     2381, 3572, 2378, 2382, 2383, 2386, 2387, 2389, 2391, 2392,
+     2390, 2394, 2393, 2397, 3572, 2400, 2396, 2406, 2410, 3572,
+     2407, 2412, 2399, 2415, 2426, 2418, 2422, 2414, 2429, 2435,
+     2431, 2433, 2434, 3572, 2437, 2438, 2440, 2443, 2445, 2441,
+
+     2453, 2450, 2457, 2451, 2458, 2462, 2465, 2454, 3572, 2468,
+     2471, 3572, 2469, 2472, 2475, 3572, 2477, 3572, 2478, 2479,
+     2480, 2481, 2486, 2487, 2489, 2493, 2495, 2497, 2498, 2501,
+     2506, 2503, 3572, 3572, 2508, 2504, 2510, 2515, 2517, 2518,
+     2519, 2521, 3572, 2522, 2525, 2526, 2527, 2528, 2532, 2535,
+     2538, 2539, 2531, 2540, 2534, 2544, 3572, 2541, 2548, 2552,
+     2553, 2554, 2555, 3572, 2557, 2558, 2562, 2559, 2565, 2567,
+     2570, 2580, 2577, 2581, 2583, 2585, 2587, 2588, 2590, 2596,
+     2591, 3572, 2593, 2600, 2597, 2602, 2603, 2605, 2606, 2612,
+     2615, 2604, 2617, 2608, 2619, 3572, 2620, 2622, 2624, 2625,
+
+     2631, 2633, 2635, 2636, 2637, 2641, 2642, 2643, 2626, 2644,
+     2646, 2653, 2649, 2647, 2659, 2655, 2665, 2666, 3572, 2661,
+     3572, 2663, 2673, 2676, 2677, 3572, 2675, 2679, 3572, 2680,
+     3572, 2682, 2684, 2683, 2694, 3572, 2696, 2687, 2697, 2699,
+     2691, 2700, 2706, 3572, 2704, 2709, 2714, 2710, 2702, 2716,
+     2717, 2718, 2720, 2728, 2726, 3572, 2724, 2729, 2736, 2727,
+     2737, 3572, 3572, 2733, 2741, 3572, 3572, 3572, 2744, 3572,
+     3572, 2745, 2749, 3572, 2752, 3572, 2758, 2754, 2746, 2756,
+     2759, 3572, 2757, 2760, 2766, 3572, 2761, 2768, 2767, 2769,
+     3572, 2774, 3572, 2775, 2777, 2781, 2782, 2789, 2791, 2793,
+
+     2771, 2786, 2794, 2796, 2797, 2798, 2799, 2801, 2802, 2805,
+     2807, 2810, 2812, 2814, 2815, 2813, 2816, 2817, 2825, 2830,
+     3572, 3572, 2818, 2826, 2820, 2832, 2834, 2837, 2840, 2845,
+     3572, 2848, 2841, 2849, 2839, 2851, 2853, 2859, 2855, 2861,
+     2867, 2863, 2864, 2865, 2868, 2866, 3572, 2870, 3572, 3572,
+     2872, 2877, 2883, 2876, 2878, 2888, 2890, 3572, 2885, 2893,
+     2899, 2895, 3572, 2902, 2903, 2905, 2907, 3572, 3572, 3572,
+     2909, 2911, 2912, 2913, 2914, 2915, 2916, 3572, 2917, 2920,
+     2923, 2926, 2930, 2936, 2942, 2938, 2940, 2945, 3572, 3572,
+     2951, 2927, 2947, 2948, 2949, 2950, 2954, 2953, 3572, 2960,
+
+     2955, 2956, 2961, 2962, 2966, 2968, 3572, 2972, 2974, 2976,
+     2979, 2980, 2975, 2982, 2985, 2983, 3572, 2987, 2989, 3572,
+     2986, 2992, 2997, 3572, 3000, 3572, 3004, 3572, 3572, 2998,
+     3007, 3010, 3015, 3017, 3020, 3005, 3011, 3026, 3028, 3029,
+     3572, 3572, 3024, 3036, 3572, 3572, 3022, 3032, 3034, 3035,
+     3042, 3044, 3038, 3041, 3045, 3046, 3050, 3053, 3054, 3048,
+     3058, 3061, 3060, 3062, 3572, 3066, 3071, 3572, 3063, 3073,
+     3075, 3067, 3077, 3086, 3078, 3087, 3572, 3088, 3083, 3089,
+     3572, 3572, 3572, 3093, 3099, 3094, 3572, 3101, 3102, 3090,
+     3104, 3107, 3105, 3113, 3109, 3116, 3572, 3117, 3118, 3120,
+
+     3122, 3121, 3124, 3127, 3129, 3138, 3128, 3132, 3139, 3572,
+     3142, 3144, 3572, 3148, 3135, 3145, 3572, 3150, 3152, 3153,
+     3157, 3160, 3161, 3162, 3163, 3165, 3167, 3169, 3171, 3172,
+     3178, 3170, 3182, 3572, 3185, 3177, 3572, 3190, 3186, 3192,
+     3194, 3199, 3202, 3203, 3572, 3205, 3572, 3206, 3572, 3210,
+     3211, 3212, 3214, 3215, 3572, 3572, 3216, 3218, 3222, 3572,
+     3223, 3219, 3226, 3229, 3230, 3232, 3233, 3572, 3572, 3234,
+     3236, 3240, 3237, 3572, 3572, 3572, 3243, 3572, 3246, 3572,
+     3252, 3249, 3572, 3256, 3257, 3572, 3258, 3260, 3262, 3264,
+     3265, 3266, 3268, 3269, 3267, 3271, 3572, 3572, 3278, 3572,
+
+     3282, 3572, 3284, 3572, 3279, 3292, 3572, 3572, 3290, 3288,
+     3294, 3295, 3297, 3296, 3572, 3572, 3572, 3572, 3300, 3298,
+     3303, 3301, 3305, 3306, 3307, 3309, 3311, 3308, 3321, 3325,
+     3313, 3319, 3333, 3327, 3572, 3329, 3331, 3340, 3342, 3339,
+     3336, 3343, 3345, 3346, 3347, 3348, 3351, 3352, 3358, 3354,
+     3355, 3364, 3366, 3367, 3368, 3379, 3376, 3377, 3378, 3380,
+     3386, 3382, 3383, 3572, 3385, 3388, 3389, 3391, 3392, 3395,
+     3394, 3402, 3405, 3409, 3410, 3411, 3416, 3412, 3418, 3420,
+     3421, 3422, 3572, 3423, 3424, 3427, 3431, 3432, 3434, 3435,
+     3436, 3443, 3438, 3448, 3452, 3449, 3572, 3455, 3572, 3572,
+
+     3457, 3440, 3444, 3465, 3467, 3572, 3572, 3572, 3480, 3487,
+     3494, 3501, 3508,   94, 3515, 3522, 3529, 3536, 3543, 3550,
+     3557, 3564
     } ;
 
-static yyconst flex_int16_t yy_def[1814] =
+static yyconst flex_int16_t yy_def[1823] =
     {   0,
-     1799,    1, 1800, 1800, 1801, 1801, 1802, 1802, 1803, 1803,
-     1804, 1804, 1799, 1805, 1799, 1799, 1799, 1799, 1806, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1807, 1799, 1799, 1799, 1807, 1808, 1799, 1799, 1799, 1808,
-     1809, 1799, 1799, 1799, 1799, 1809, 1810, 1799, 1799, 1799,
-     1810, 1811, 1799, 1812, 1799, 1811, 1811, 1805, 1805, 1799,
-     1813, 1806, 1813, 1806, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1807, 1807, 1808, 1808,
-     1809, 1809, 1799, 1810, 1810, 1811, 1811, 1812, 1812, 1811,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1811, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1811, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1811, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1811, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1799, 1805, 1799, 1799, 1805,
-     1799, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1811, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1811, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-     1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1799, 1805,
-     1805, 1805, 1799, 1805, 1799, 1805, 1799, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805, 1799,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1799, 1799, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1799, 1805, 1799, 1805, 1799, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805,
-     1805, 1799, 1805, 1799, 1799, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-
-     1805, 1805, 1799, 1805, 1805, 1805, 1799, 1805, 1799, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1799, 1799, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805,
-     1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-     1805, 1799, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1799,
-     1805, 1799, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805,
-     1805, 1805, 1799, 1799, 1805, 1805, 1799, 1799, 1799, 1805,
-     1799, 1799, 1805, 1805, 1799, 1805, 1799, 1805, 1805, 1805,
-     1805, 1805, 1799, 1805, 1805, 1805, 1799, 1805, 1805, 1805,
-     1805, 1799, 1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1799, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1799,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805,
-     1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1799, 1799,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805,
-     1799, 1805, 1805, 1805, 1799, 1805, 1799, 1805, 1799, 1799,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1799, 1799, 1805, 1805, 1799, 1799, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1799, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805,
-     1805, 1799, 1799, 1799, 1805, 1805, 1805, 1799, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-
-     1799, 1805, 1805, 1799, 1805, 1805, 1805, 1799, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1799, 1805, 1805, 1799, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1799, 1805, 1799, 1805, 1799,
-     1805, 1805, 1805, 1805, 1805, 1799, 1799, 1805, 1805, 1805,
-     1799, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1799,
-     1805, 1805, 1805, 1805, 1799, 1799, 1799, 1805, 1799, 1805,
-     1799, 1805, 1805, 1799, 1805, 1805, 1799, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1799, 1805,
-     1799, 1805, 1799, 1805, 1799, 1805, 1805, 1799, 1799, 1805,
-
-     1805, 1805, 1805, 1805, 1805, 1799, 1799, 1799, 1799, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1799, 1805, 1805, 1805, 1805, 1805, 1805,
-     1805, 1805, 1805, 1805, 1805, 1805, 1805, 1799, 1805, 1799,
-     1799, 1805, 1805, 1805, 1805, 1805, 1799, 1799,    0, 1799,
-
-     1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
-     1799, 1799, 1799
+     1808,    1, 1809, 1809, 1810, 1810, 1811, 1811, 1812, 1812,
+     1813, 1813, 1808, 1814, 1808, 1808, 1808, 1808, 1815, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1816, 1808, 1808, 1808, 1816, 1817, 1808, 1808, 1808, 1817,
+     1818, 1808, 1808, 1808, 1808, 1818, 1819, 1808, 1808, 1808,
+     1819, 1820, 1808, 1821, 1808, 1820, 1820, 1814, 1814, 1808,
+     1822, 1815, 1822, 1815, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1816, 1816, 1817, 1817,
+     1818, 1818, 1808, 1819, 1819, 1820, 1820, 1821, 1821, 1820,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1820, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1820, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+     1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1820, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1820, 1814, 1814, 1814, 1814, 1814, 1808,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814,
+     1808, 1808, 1814, 1808, 1808, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1820, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1808, 1820, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+     1814, 1814, 1814, 1808, 1814, 1808, 1814, 1814, 1814, 1808,
+     1814, 1808, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1808, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1808, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1808, 1808, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1808, 1814, 1808, 1814, 1808, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+     1808, 1814, 1808, 1808, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814, 1808,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814,
+     1814, 1808, 1814, 1814, 1814, 1808, 1814, 1808, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1808, 1808, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+     1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814,
+     1808, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1808, 1814,
+     1808, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+     1814, 1808, 1808, 1814, 1814, 1808, 1808, 1808, 1814, 1808,
+     1808, 1814, 1814, 1808, 1814, 1808, 1814, 1814, 1814, 1814,
+     1814, 1808, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+     1808, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1808, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1808, 1808,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814,
+     1814, 1814, 1808, 1814, 1814, 1814, 1814, 1808, 1808, 1808,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1808,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1808,
+     1814, 1814, 1814, 1808, 1814, 1808, 1814, 1808, 1808, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1808, 1808, 1814, 1814, 1808, 1808, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1808, 1814, 1814, 1808, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+     1808, 1808, 1808, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808,
+     1814, 1814, 1808, 1814, 1814, 1814, 1808, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1808, 1814, 1814, 1808, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1808, 1814, 1808, 1814, 1808, 1814,
+     1814, 1814, 1814, 1814, 1808, 1808, 1814, 1814, 1814, 1808,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1808, 1808, 1814,
+     1814, 1814, 1814, 1808, 1808, 1808, 1814, 1808, 1814, 1808,
+     1814, 1814, 1808, 1814, 1814, 1808, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1808, 1814, 1808,
+
+     1814, 1808, 1814, 1808, 1814, 1814, 1808, 1808, 1814, 1814,
+     1814, 1814, 1814, 1814, 1808, 1808, 1808, 1808, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1808, 1814, 1814, 1814, 1814, 1814, 1814, 1814,
+     1814, 1814, 1814, 1814, 1814, 1814, 1808, 1814, 1808, 1808,
+
+     1814, 1814, 1814, 1814, 1814, 1808, 1808,    0, 1808, 1808,
+     1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+     1808, 1808
     } ;
 
-static yyconst flex_int16_t yy_nxt[3608] =
+static yyconst flex_int16_t yy_nxt[3612] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -1061,370 +1064,371 @@ static yyconst flex_int16_t yy_nxt[3608] =
       179,  178,   69,   69,   69,   69,  181,  187,   69,  193,
        69,  188,  184,  186,   69,   69,  189,  192,   69,   69,
       190,  198,  195,  200,   69,   69,  196,  201,  129,  194,
-      252,  129,  134,  134,  131,  197,  131,  131,  137,  131,
+      253,  129,  134,  134,  131,  197,  131,  131,  137,  131,
        69,  203,  199,  202,  136,  204,  136,  136,   73,  136,
        73,   73,  205,   73,   69,   69,   69,   69,   69,  139,
        69,  211,  215,  207,   69,   69,   69,  212,   69,  206,
       213,  214,   69,  209,   69,  208,   69,   69,  222,  224,
       210,   69,   69,   69,  216,   69,  226,  223,  227,  217,
-      232,   69,   69,   69,  218,  228,   69,   69,  233,  219,
-
-       69,  235,  234,   69,  251,  220,  221,  229,  230,   69,
-      239,  231,   69,  240,  243,   69,  241,   69,   69,   69,
-      236,   69,   69,  237,  246,  238,  244,  242,   69,   69,
-      248,  249,   69,  247,   69,   69,   69,   69,  254,  245,
-       69,  250,  253,   69,   69,   69,   69,   69,  256,  258,
-       69,   69,  261,  265,   69,   69,  257,  267,   69,  255,
-      259,   69,  269,   69,   69,  135,  260,   69,  268,  263,
-      264,   69,  262,  276,  266,  273,  271,   69,  272,  275,
-       69,  137,  270,   69,   69,   69,   69,  281,   69,   69,
-      277,   69,   69,  278,  280,  283,  282,   69,  274,  133,
-
-       69,   69,  279,  284,  288,  286,   69,  285,   69,  289,
-      287,  290,   69,  291,   69,   69,  292,   69,   69,   69,
-       69,  295,  293,  296,   69,  298,   69,  300,   69,  297,
-       69,  302,  294,  301,   69,   69,   69,   69,  299,   69,
-       69,  307,   69,   69,   69,  308,   69,   69,  310,   69,
-      313,   69,  306,  304,  303,   69,   69,   69,  305,  312,
-      314,  309,   69,  315,  311,  318,  316,   69,   69,  317,
-       69,   69,   69,  322,  323,  324,   69,   69,   69,   69,
-      320,  325,  321,  319,   69,  326,  329,  328,  327,  331,
-       69,   69,   69,  330,   69,  333,  332,   69,   69,  337,
-
-      338,   69,  335,   69,   69,   69,   69,  334,  340,  341,
-      336,  342,   69,   69,  348,   69,   69,   69,  343,   69,
-      349,  339,  347,   69,   69,   69,   69,   69,  344,  350,
-      355,  345,  353,  346,  137,   69,   69,  351,  354,  357,
-       69,  365,   69,  352,  366,   69,  356,   69,  371,  358,
-      359,  369,   69,   69,   69,  367,   69,   69,   69,  360,
-      370,  361,  362,  363,  368,  372,  364,   69,  376,  374,
-      379,  375,  373,   69,  380,   69,   69,  377,   69,  382,
-      383,  378,   69,  381,   69,   69,   69,   69,   69,  388,
-      389,   69,   69,   69,   69,   69,  384,   69,  395,   69,
-
-      385,  386,  387,  392,  394,  398,  391,   69,  397,  390,
-       69,  396,   69,   69,   69,  402,  393,   69,  399,  400,
-       69,  401,   69,   69,  405,  403,  406,   69,   69,   69,
-       69,   69,   69,  407,  410,  404,  408,   69,  411,   69,
-      409,   69,  414,   69,  412,   69,  415,   69,   69,   69,
-      413,  417,   69,  416,   69,   69,  418,  424,   69,   69,
-      428,  420,   69,   69,  426,   69,   69,  425,  419,  423,
-       69,  427,  421,   69,  422,   69,   69,   69,   69,  432,
-       69,   69,  434,   69,  429,  445,   69,   69,   69,  447,
-       69,  433,  430,   69,  431,  446,  435,  436,   69,  437,
-
-       69,  442,  443,  444,  438,   69,  439,   69,  448,   69,
-      449,   69,  451,   69,  440,  452,   69,  453,  450,   69,
-       69,   69,  454,  137,  441,  457,   69,  461,  458,  462,
-       69,   69,  455,   69,   69,   69,  467,   69,  456,   69,
-      459,  460,  463,  466,   69,   69,  465,   69,  470,  464,
-       69,  468,   69,  472,  475,   69,  469,   69,  476,   69,
-      478,   69,  471,  479,   69,  481,   69,  480,  473,   69,
-      477,  474,   69,  482,   69,  483,  484,   69,   69,   69,
-       69,  487,  485,  486,   69,   69,   69,  491,  488,  490,
-      489,   69,   69,   69,   69,   69,  492,  494,   69,  498,
-
-       69,   69,  495,  501,  919,   69,  496,  493,   69,   69,
-       69,   69,  503,  497,  502,  500,   69,   69,  499,   69,
-      504,   69,  506,  507,  508,  511,   69,  509,   69,   69,
-       69,  513,  512,  510,   69,   69,   69,  514,  518,   69,
-      515,   69,  505,   69,  519,   69,  521,  516,  520,  522,
-      517,   69,   69,  523,   69,  526,   69,   69,  530,  528,
-       69,   69,  531,   69,  524,  525,  527,   69,   69,  532,
-      534,   69,   69,   69,  529,   69,   69,   69,   69,   69,
-      533,  539,  544,   69,   69,  540,   69,   69,   69,  535,
-      536,  564,  537,  541,   69,  538,   69,  542,  543,   69,
-
-      547,   69,   69,  545,   69,  546,  548,  549,   69,  550,
-      551,   69,   69,   69,   69,   69,   69,  555,  554,  557,
-      552,  553,  556,   69,   69,   69,   69,   69,  558,  137,
-      562,  559,  560,  561,  563,   69,   69,  567,  570,  565,
-       69,   69,   69,   69,   69,  568,  571,  566,   69,  569,
-       69,   69,  576,  572,   69,   69,  574,   69,   69,   69,
-       69,   69,  573,  585,  584,  586,  582,  587,  575,   69,
-       69,  583,   69,  665,  577,  595,  596,   69,  578,   69,
-      598,  579,  599,   69,  597,   69,  600,   69,  580,   69,
-      601,  581,   69,  588,  589,   69,  590,   69,  603,  591,
-
-      602,   69,   69,   69,  592,  605,  604,  608,  606,   69,
-      593,  594,   69,   69,  607,   69,  611,   69,   69,  616,
-      610,  615,   69,  614,   69,  617,   69,   69,  609,  618,
-       69,  613,  612,  619,   69,   69,   69,   69,   69,   69,
-      626,   69,  620,  621,  623,  624,  628,   69,   69,   69,
-       69,   69,   69,   69,  622,  627,  625,   69,  630,  631,
-      632,   69,  634,   69,   69,   69,  633,  629,  635,   69,
-      639,   69,  636,   69,   69,   69,   69,   69,   69,  645,
-      637,   69,   69,   69,  638,  640,  644,   69,  650,   69,
-      649,  641,  648,   69,  643,  642,  646,  651,   69,  654,
-
-      647,  655,   69,  653,   69,   69,   69,  652,   69,  656,
-       69,   69,  657,  659,  658,   69,  661,  662,   69,  666,
-       69,  663,   69,   69,   69,  668,   69,  669,  137,  664,
-       69,  660,   69,   69,  671,   69,   69,   69,  670,   69,
-      667,  682,   69,   69,   69,   69,   69,  686,   69,  674,
-       69,  672,   69,  709,  683,  132,  675,  673,   69,  685,
-      687,  676,  688,  677,   69,  690,   69,  678,  684,  679,
-      689,   69,   69,  695,  680,   69,  691,  693,  694,  681,
-      698,   69,   69,  699,   69,   69,  692,  697,  700,  696,
-      701,   69,   69,   69,   69,   69,  703,  704,   69,  707,
-
-      708,   69,  712,   69,   69,  705,  706,  710,  702,   69,
-      714,   69,   69,  713,  715,   69,  718,   69,   69,   69,
-      711,   69,  719,  716,   69,  717,   69,   69,   69,   69,
-       69,  728,  724,  722,   69,  721,   69,  720,   69,  727,
-       69,   69,   69,  726,   69,  723,  732,  733,  725,  734,
-       69,   69,  736,  729,   69,  731,  730,  737,   69,  735,
-      739,  743,   69,   69,  740,   69,   69,  738,   69,  741,
-       69,   69,  742,   69,   69,   69,  748,  744,   69,   69,
-      750,   69,   69,  751,   69,  746,  745,  752,  755,   69,
-      754,  747,   69,   69,   69,  749,  758,  757,  753,   69,
-
-       69,  756,   69,   69,   69,   69,   69,   69,  763,  764,
-      766,  769,  759,   69,  770,  762,   69,  767,  760,   69,
-      761,   69,   69,  765,   69,  768,  772,   69,   69,  776,
-       69,   69,   69,   69,   69,   69,  771,   69,  774,   69,
-      775,  773,  784,  778,   69,  130,  785,   69,  777,  781,
-      779,   69,  782,   69,   69,   69,   69,  780,  786,  783,
-      787,   69,   69,  792,   69,   69,  790,   69,  788,   69,
-      789,  795,   69,   69,   69,  797,   69,  791,   69,  793,
-       69,  799,   69,  800,  794,  796,   69,   69,  802,  801,
-      803,   69,   69,  798,  804,  805,  806,   69,   69,   69,
-
-       69,   69,  808,  810,   69,   69,   69,   69,   69,  811,
-       69,  807,  814,   69,   69,   69,  812,  809,  815,  813,
-      819,   69,   69,   69,  128,   69,  816,  823,  818,  817,
-      820,  822,   69,  821,   69,  824,   69,  828,   69,   69,
-      829,  827,  825,  826,  830,   69,   69,  832,  835,   69,
-       69,  836,  833,   69,   69,   69,   69,  831,  834,  837,
-      838,   69,  839,   69,   69,  840,   69,  844,  841,  845,
-       69,   69,   69,   69,   69,  846,   69,  847,  842,   69,
-      853,   69,  854,   69,  843,   69,   69,  855,  859,   69,
-      858,  856,  860,   69,  848,   69,   69,   69,   69,  849,
-
-       69,  850,   69,  851,  857,  852,  863,   69,  862,  861,
-      864,  867,   69,  869,   69,  865,   69,  868,   69,  870,
-      873,   69,   69,  871,   69,  866,  872,  875,   69,  876,
-      877,   69,   69,   69,   69,   69,   69,  882,  879,  881,
-       69,   69,  874,  880,   69,  886,   69,  884,  887,   69,
-       69,  885,  878,   69,  888,  889,   69,   69,  883,   69,
-       69,  893,   69,   69,  896,  890,  894,   69,   69,   69,
-      892,   69,   69,   69,  902,   69,  891,   69,   69,   69,
-       69,  897,   69,  900,  906,   69,  895,  898,  899,   69,
-      901,  911,   69,  909,  908,  903,  905,  910,   69,   69,
-
-      912,  913,  904,  907,   69,  915,   69,   69,   69,   69,
-       69,  916,   69,   69,  921,   69,   69,  917,  914,   69,
-      924,   69,   69,   69,   69,   69,   69,  918,   69,  966,
-      920,  922,   69,  931,   69,  923,  927,  925,  928,  929,
-      926,  932,   69,   69,  930,   69,   69,  933,   69,  137,
-      934,   69,  935,  940,  937,   69,  939,  941,   69,   69,
-      936,   69,   69,   69,  942,   69,  943,  938,  944,   69,
-       69,   69,  949,  945,   69,  946,  950,   69,  948,  951,
-       69,   69,   69,   69,   69,  947,  957,  954,   69,  956,
-       69,   69,   69,  952,   69,   69,   69,   69,   69,  965,
-
-      953,  955,   69,  958, 1097,   69,   69,  959,  962,  960,
-      968,  961,  964,   69,  967,   69,  963,  969,   69,  970,
-       69,   69,  973,   69,  971,   69,  974,  977,   69,   69,
-      978,  972,  981,  979,   69,   69,  135,   69,   69,  975,
-      983,  976,  985,  980,   69,  984,   69,   69,  986,   69,
-      987,   69,  982,   69,   69,  989,  988,   69,   69,   69,
-       69,  990,   69,  991,  993,  995,   69,   69,  997,   69,
-       69,  992,   69,  994,   69,   69, 1000,   69,   69, 1002,
-      996,  999,   69, 1005,  998,   69,   69,   69, 1001,   69,
-     1006, 1004,   69, 1003, 1011,   69, 1009, 1013, 1007,   69,
-
-     1012,   69,   69, 1015, 1017,   69, 1008,   69,   69, 1010,
-       69,   69, 1020, 1018,   69, 1016,   69,   69,   69, 1014,
-     1023,   69, 1026, 1024,   69,   69, 1021,   69,   69, 1027,
-     1028,   69, 1033, 1029, 1019, 1025, 1022,   69,   69, 1032,
-     1031,   69,   69, 1030,   69, 1036, 1038, 1037,   69,   69,
-       69,   69, 1041,   69, 1040, 1042, 1034,   69,   69,   69,
-     1035,   69,   69, 1049,   69,   69,   69,   69,   69,   69,
-      133, 1039,   69, 1047,   69, 1043, 1046, 1048, 1044, 1045,
-      132, 1052,   69,   69,   69, 1050, 1051, 1054, 1059, 1055,
-     1053, 1056, 1057, 1060,   69, 1058,   69,   69,   69, 1061,
-
-       69,   69, 1062,   69,   69, 1069, 1070,   69,   69, 1064,
-       69,   69, 1066, 1068, 1063, 1067,   69,   69,   69,   69,
-     1065,   69,   69,   69, 1072,   69, 1079,   69, 1071,  130,
-     1076, 1074,   69,   69, 1073, 1075, 1081, 1082,   69, 1080,
-     1078,   69, 1083, 1088,   69,   69, 1077, 1085,   69, 1090,
-     1086, 1087,   69,   69,   69, 1093, 1084,   69, 1091,   69,
-       69,   69, 1089,   69, 1095, 1092, 1094,   69, 1101,   69,
-     1096,   69, 1098,   69,   69, 1099,   69,   69, 1105,   69,
-       69, 1106, 1100, 1102, 1107, 1108, 1109, 1103,   69,   69,
-       69, 1104, 1112,   69,   69,   69,   69, 1114,   69,   69,
-
-     1118,   69,   69,   69, 1111,   69,   69, 1115, 1113, 1121,
-     1116, 1110, 1198, 1119, 1127, 1117,   69, 1120, 1122,   69,
-       69, 1124,   69, 1123,   69, 1125, 1126,   69,   69, 1128,
-       69,   69,   69,   69,   69,   69,   69, 1129, 1132, 1137,
-       69, 1133, 1130, 1138,   69,   69, 1131,   69,   69, 1136,
-     1142,   69, 1144,   69, 1134, 1135,   69, 1139, 1145,   69,
-     1146, 1147,   69, 1140, 1149, 1141,   69, 1143,   69,   69,
-     1151, 1148,   69, 1153,   69,   69,   69, 1154, 1155,   69,
-     1150,   69,   69,   69, 1162,   69,   69,   69,   69,   69,
-       69, 1156, 1157, 1158, 1166,   69,  128, 1152, 1159,   69,
-
-     1164, 1160, 1161,   69, 1168, 1163,   69,   69, 1165,   69,
-     1169, 1171,   69,   69, 1167, 1170, 1173,   69,   69, 1176,
-       69,   69, 1172,   69, 1180, 1175, 1174,   69, 1179,   69,
-     1183,   69, 1184,   69, 1182,   69, 1178,   69, 1186, 1177,
-     1187, 1181, 1185,   69,   69,   69,   69,   69,   69,   69,
-     1191,   69, 1194,   69,   69,   69,   69, 1190,   69, 1200,
-       69,   69, 1203,   69, 1188, 1189, 1192, 1199, 1195,   69,
-     1197,   69, 1201, 1196, 1206, 1193,   69, 1202, 1208,   69,
-     1207,   69, 1209,   69, 1210, 1205,   69, 1213,   69,   69,
-     1204,   69,   69,   69,   69, 1215, 1218,   69, 1212,   69,
-
-     1214,   69, 1211, 1220,   69, 1216,   69, 1222,   69, 1221,
-       69, 1223, 1224,   69, 1225,   69,   69, 1799,   69, 1217,
-       69, 1219, 1227, 1228,   69,   69, 1226,   69,   69, 1230,
-     1229,   69, 1231, 1234,   69,   69,   69, 1232,   69,   69,
-     1233,   69, 1241, 1239, 1236,   69, 1240,   69,   69, 1243,
-       69, 1235,   69,   69, 1237, 1248,   69, 1238,   69, 1242,
-     1244, 1246, 1247,   69, 1251,   69,   69, 1253, 1245,   69,
-       69,   69, 1254, 1249, 1255,   69,   69, 1250, 1256,   69,
-     1258,   69, 1252,   69,   69,   69,   69,   69,   69,   69,
-     1259,   69,   69,   69, 1269,   69, 1257, 1261, 1262, 1263,
-
-     1268,   69, 1271, 1265, 1260,   69,   69, 1273,   69, 1266,
-     1264, 1267,   69,   69,   69, 1276,   69, 1275,   69, 1270,
-     1272, 1277,   69, 1278, 1281,   69,   69,   69,   69,   69,
-     1282, 1274, 1279, 1799,   69, 1284, 1287,   69,   69, 1283,
-       69, 1288, 1280,   69, 1291,   69,   69, 1285, 1286,   69,
-     1292,   69,   69, 1289, 1293,   69,   69,   69, 1294, 1297,
-     1298,   69,   69, 1290, 1295,   69, 1300, 1296, 1299,   69,
-     1301,   69,   69,   69,   69, 1302,   69,   69, 1305, 1306,
-     1310,   69,   69,   69, 1312,   69, 1309, 1304,   69, 1303,
-       69, 1307, 1311, 1315, 1314,   69, 1317,   69,   69, 1308,
-
-       69, 1313, 1320,   69,   69,   69, 1318,   69, 1316, 1322,
-       69,   69, 1323, 1321,   69, 1327,   69, 1324,   69, 1326,
-     1319,   69,   69,   69,   69, 1325, 1329,   69,   69, 1332,
-       69,   69, 1335,   69, 1336,   69,   69,   69, 1331,   69,
-     1338,   69, 1337, 1328,   69, 1330, 1333, 1334,   69,   69,
-       69, 1347,   69,   69,   69,   69, 1340, 1348,   69,   69,
-     1435, 1345, 1339, 1342, 1341, 1344, 1349, 1343,   69, 1350,
-       69, 1346, 1351,   69, 1352, 1353,   69, 1354,   69,   69,
-     1357,   69,   69, 1355, 1358,   69, 1359,   69,   69, 1360,
-     1361,   69, 1356, 1362,   69,   69, 1365,   69, 1367,   69,
-
-     1364, 1363,   69,   69,   69,   69,   69, 1366, 1370, 1369,
-       69, 1371, 1373,   69,   69, 1377,   69,   69,   69,   69,
-     1368, 1375,   69, 1374,   69,   69, 1372,   69, 1381, 1382,
-       69, 1384,   69, 1376, 1380,   69, 1386, 1378,   69, 1388,
-       69, 1379,   69,   69, 1383, 1389,   69, 1387, 1385,   69,
-       69, 1393,   69,   69,   69, 1398, 1391,   69, 1799,   69,
-       69, 1395, 1396, 1399,   69, 1394,   69, 1390, 1397, 1403,
-     1392,   69, 1402, 1401,   69,   69, 1404, 1400,   69,   69,
-       69, 1406,   69, 1409, 1405,   69,   69, 1407, 1412,   69,
-     1410, 1408, 1413,   69,   69, 1415,   69,   69,   69,   69,
-
-     1414,   69, 1411,   69, 1419, 1420,   69,   69, 1416, 1421,
-       69, 1417, 1422,   69,   69, 1423,   69, 1418, 1426, 1424,
-       69, 1425, 1429,   69,   69, 1428,   69,   69, 1433, 1430,
-       69, 1432,   69,   69,   69, 1437, 1427, 1799, 1434,   69,
-     1431, 1438,   69,   69, 1439,   69, 1436, 1440,   69, 1441,
-       69, 1442,   69, 1443,   69,   69,   69,   69,   69, 1444,
-     1446, 1449,   69,   69,   69, 1451,   69, 1445,   69, 1448,
-       69, 1455, 1450, 1447, 1454,   69, 1452,   69,   69, 1453,
-     1456,   69, 1457, 1459,   69,   69, 1458, 1460,   69, 1461,
-       69,   69,   69,   69,   69, 1463,   69, 1462,   69, 1467,
-
-     1469,   69,   69, 1464, 1465, 1466,   69, 1470,   69,   69,
-       69,   69,   69,   69,   69,   69, 1468,   69, 1478, 1479,
-       69, 1473, 1480,   69, 1475,   69, 1472,   69, 1471, 1476,
-     1481,   69,   69, 1474, 1477, 1482, 1486,   69, 1483, 1484,
-       69, 1489, 1490,   69,   69, 1485,   69,   69,   69,   69,
-       69,   69, 1487, 1491, 1492, 1488,   69, 1498,   69, 1499,
-       69, 1493,   69,   69,   69,   69, 1494, 1495, 1503, 1497,
-     1502,   69, 1496,   69, 1508,   69,   69, 1501, 1500, 1507,
-       69,   69, 1511,   69,   69, 1504,   69,   69, 1512,   69,
-     1505, 1514,   69, 1506,   69, 1509, 1515,   69,   69, 1510,
-
-       69, 1513, 1516, 1517,   69, 1519,   69, 1520,   69,   69,
-     1521, 1518,   69,   69,   69,   69, 1522, 1526, 1524, 1525,
-       69, 1523,   69, 1527,   69,   69, 1597, 1529, 1799, 1530,
-     1532,   69, 1533,   69, 1534, 1528,   69, 1536,   69,   69,
-     1531, 1535, 1537,   69, 1538,   69,   69,   69,   69,   69,
-     1539,   69, 1540,   69, 1541,   69,   69,   69, 1544, 1543,
-     1546,   69,   69, 1542,   69,   69, 1551, 1545,   69,   69,
-     1549,   69,   69, 1550, 1547, 1548,   69, 1552, 1556,   69,
-       69, 1558, 1559,   69,   69,   69,   69,   69, 1553,   69,
-     1561, 1554, 1560,   69,   69, 1555, 1562, 1564,   69, 1557,
-
-     1565,   69, 1563,   69, 1567, 1568,   69,   69, 1570, 1566,
-       69, 1572,   69, 1571, 1573,   69, 1574,   69, 1569, 1575,
-       69, 1577, 1578,   69,   69,   69,   69, 1581, 1579,   69,
-       69, 1580,   69,   69, 1576, 1584,   69,   69,   69, 1588,
-       69,   69,   69,   69, 1592, 1590, 1582, 1583,   69, 1593,
-       69, 1585, 1587,   69,   69,   69, 1586,   69, 1595,   69,
-     1589, 1591, 1601,   69, 1598,   69, 1594,   69, 1602, 1604,
-       69,   69,   69,   69, 1596, 1605,   69, 1599,   69, 1600,
-       69, 1606, 1608,   69,   69, 1603,   69, 1610, 1607, 1609,
-       69,   69, 1612, 1611,   69, 1614,   69, 1615,   69, 1617,
-
-     1616,   69,   69,   69,   69, 1623,   69, 1618, 1621,   69,
-       69, 1613, 1625,   69,   69, 1628,   69,   69,   69,   69,
-       69, 1619, 1622, 1620, 1629,   69, 1630,   69, 1626, 1627,
-       69, 1624, 1634, 1633, 1631, 1636,   69,   69, 1632,   69,
-     1638,   69, 1639, 1640,   69,   69,   69,   69, 1643,   69,
-       69, 1646,   69, 1647,   69,   69, 1635,   69, 1637,   69,
-     1651,   69,   69, 1644,   69, 1641,   69,   69,   69, 1642,
-     1656, 1649, 1645, 1654, 1648,   69, 1652, 1650,   69, 1659,
-       69,   69, 1653, 1660,   69, 1655, 1661,   69,   69,   69,
-     1665,   69, 1662, 1680, 1664, 1657, 1658, 1666,   69, 1667,
-
-       69,   69, 1663, 1669,   69,   69, 1668,   69, 1670, 1671,
-       69,   69, 1674,   69,   69,   69,   69, 1677,   69, 1672,
-     1673, 1675, 1676,   69,   69,   69,   69,   69, 1678, 1679,
-       69,   69,   69, 1681, 1799, 1686, 1688,   69, 1689,   69,
-       69, 1682,   69, 1683, 1684,   69, 1690, 1696, 1685, 1691,
-       69, 1687,   69, 1693,   69,   69, 1692, 1695,   69, 1694,
-     1698,   69, 1699,   69,   69, 1700,   69,   69, 1799,   69,
-       69, 1799, 1703, 1697, 1704, 1706,   69, 1707,   69, 1701,
-     1708,   69, 1709,   69,   69,   69, 1711, 1702, 1712, 1705,
-       69,   69,   69,   69,   69,   69, 1710, 1714,   69,   69,
-
-       69,   69, 1718,   69, 1713,   69,   69,   69,   69,   69,
-     1715, 1717, 1716, 1720, 1726,   69, 1727,   69,   69, 1719,
-     1721, 1722, 1723, 1725,   69,   69,   69,   69, 1732, 1728,
-     1724, 1729, 1731,   69, 1730, 1736, 1737, 1735,   69, 1733,
-       69,   69, 1734,   69,   69,   69,   69,   69,   69,   69,
-       69,   69, 1738,   69,   69, 1746, 1739,   69, 1747, 1741,
-     1743, 1744, 1750, 1740,   69, 1742,   69, 1749, 1745, 1751,
-     1748,   69, 1754, 1753, 1755,   69, 1752,   69,   69,   69,
-       69, 1759,   69,   69,   69, 1756,   69,   69,   69, 1762,
-       69,   69, 1766,   69,   69,   69, 1761,   69, 1757, 1758,
-
-     1767, 1760, 1771, 1765,   69, 1769, 1763, 1764,   69, 1770,
-       69,   69, 1768, 1773, 1774,   69,   69, 1772, 1775,   69,
-       69,   69,   69, 1776,   69, 1778,   69, 1780,   69, 1781,
-       69, 1784,   69,   69,   69, 1787, 1788,   69, 1777,   69,
-     1779, 1790,   69, 1791,   69, 1782, 1789, 1783,   69,   69,
-       69, 1785, 1786,   69, 1793, 1792,   69, 1799, 1794, 1797,
-       69, 1798,   69, 1799, 1799, 1799, 1799, 1799, 1799, 1795,
-     1799, 1799, 1799, 1799, 1799, 1796,   41,   41,   41,   41,
-       41,   41,   41,   46,   46,   46,   46,   46,   46,   46,
-       51,   51,   51,   51,   51,   51,   51,   57,   57,   57,
-
-       57,   57,   57,   57,   62,   62,   62,   62,   62,   62,
-       62,   72,   72, 1799,   72,   72,   72,   72,  127,  127,
-     1799, 1799, 1799,  127,  127,  129,  129, 1799, 1799,  129,
-     1799,  129,  131, 1799, 1799, 1799, 1799, 1799,  131,  134,
-      134, 1799, 1799, 1799,  134,  134,  136, 1799, 1799, 1799,
-     1799, 1799,  136,  138,  138, 1799,  138,  138,  138,  138,
-       73,   73, 1799,   73,   73,   73,   73,   13, 1799, 1799,
-     1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
-     1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
-     1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
-
-     1799, 1799, 1799, 1799, 1799, 1799, 1799
+      232,  135,   69,   69,  218,  228,   69,   69,  233,  219,
+
+       69,   69,  234,   69,  235,  220,  221,  229,  230,  236,
+      240,  231,   69,  241,  242,   69,  244,  239,   69,   69,
+      238,   69,   69,  237,  247,  243,   69,  245,  249,   69,
+      250,  248,   69,   69,   69,   69,   69,   69,   69,  251,
+       69,   69,   69,  246,  255,   69,   69,  252,  257,   69,
+      259,   69,   69,   69,  258,  266,  254,  260,  262,  256,
+       69,   69,   69,  268,   69,  133,  261,   69,  270,  264,
+      265,  263,  267,   69,  269,  274,  272,   69,  273,  276,
+       69,  271,  137,   69,   69,  277,   69,   69,  282,   69,
+       69,   69,  284,   69,  279,  281,  283,   69,  275,   69,
+
+       69,   69,  278,   69,  285,  280,  289,  287,  286,   69,
+      290,  291,   69,  292,   69,   69,  293,  294,   69,   69,
+       69,   69,  296,  299,  297,  288,   69,   69,   69,   69,
+      298,   69,  301,  295,  302,   69,  303,   69,   69,   69,
+      300,   69,   69,  308,   69,   69,   69,  304,  309,   69,
+      311,  307,   69,  305,  315,   69,   69,  310,  306,   69,
+       69,   69,  312,  316,  314,   69,   69,  313,  317,   69,
+      320,   69,  318,  324,  325,  319,  326,   69,   69,  322,
+       69,  323,   69,  327,   69,   69,  321,  333,   69,   69,
+      335,   69,   69,  331,  332,  328,  334,  330,  329,   69,
+
+       69,   69,   69,  340,  337,   69,   69,  336,   69,  343,
+      342,  344,  338,   69,   69,   69,   69,   69,  350,   69,
+       69,  339,  341,   69,  349,  351,   69,  345,   69,  352,
+      346,  357,  355,  347,   69,  348,   69,  353,   69,  354,
+      356,  137,   69,   69,   69,  368,   69,  358,  359,   69,
+       69,  360,  361,  367,  373,   69,   69,  371,  376,   69,
+       69,  362,  369,  363,  364,  365,  372,  374,  366,  370,
+       69,  377,  378,  381,   69,  375,   69,   69,   69,   69,
+      379,  383,  384,  385,  380,   69,   69,   69,   69,   69,
+      382,   69,   69,  391,  390,   69,   69,   69,   69,  386,
+
+      398,   69,  387,  388,  132,  389,  392,  394,   69,  393,
+      396,  400,   69,  397,   69,   69,   69,   69,  401,  403,
+      395,  399,   69,  402,   69,  405,   69,  404,   69,   69,
+      408,  406,  409,   69,   69,  410,   69,   69,   69,  414,
+      413,  407,  411,   69,   69,   69,  412,   69,  415,   69,
+      417,   69,  418,   69,   69,  420,   69,   69,   69,   69,
+       69,   69,  421,   69,  427,  416,  419,   69,  423,   69,
+      428,  430,  429,  426,  422,  431,   69,  424,  425,   69,
+       69,   69,  433,   69,   69,  435,   69,   69,   69,  437,
+       69,  448,   69,   69,  432,   69,   69,   69,  436,   69,
+
+      434,  449,  438,   69,  447,  456,  439,   69,  440,   69,
+      445,  446,  450,  441,  455,  442,   69,  451,   69,  452,
+      453,   69,  454,  443,   69,  459,   69,   69,   69,   69,
+      137,  457,  460,  444,  464,  461,  465,   69,   69,   69,
+       69,   69,   69,  458,  463,  470,   69,  462,  469,  466,
+       69,   69,  468,   69,  471,   69,  467,   69,  473,  478,
+      475,   69,  472,  479,   69,   69,  474,  481,   69,  476,
+      482,   69,  477,  483,  480,  484,   69,  486,   69,  485,
+       69,   69,   69,   69,  490,  489,  487,   69,  488,   69,
+       69,  491,   69,  494,   69,  492,   69,   69,   69,  495,
+
+      497,   69,   69,  501,   69,  498,   69,   69,  505,  499,
+      496,  503,  493,   69,   69,   69,   69,   69,  507,  500,
+      508,  504,  502,  506,   69,   69,   69,   69,  515,  510,
+      511,  512,   69,   69,   69,   69,   69,  517,  516,  514,
+       69,  513,  509,  518,   69,   69,  522,   69,  524,  519,
+      521,   69,  523,  520,   69,   69,  526,   69,  530,  525,
+      527,   69,   69,   69,   69,   69,   69,  532,  528,  534,
+      529,  531,   69,  535,   69,   69,   69,  536,  538,   69,
+       69,   69,  533,   69,  537,  541,   69,  543,   69,   69,
+      539,   69,   69,  548,   69,  544,  545,  540,   69,   69,
+
+      542,   69,  551,  552,  547,  553,  546,   69,   69,   69,
+      549,  550,  554,   69,   69,   69,   69,   69,   69,   69,
+      559,  558,  561,  560,  555,   69,  557,   69,  556,   69,
+      562,   69,  137,  566,  564,  569,  563,  567,  565,   69,
+       69,   69,  568,   69,  571,   69,  574,   69,   69,  575,
+      573,   69,  572,   69,   69,   69,   69,   69,   69,  576,
+       69,  570,  578,   69,  590,  591,  577,  588,   69,  589,
+       69,  579,  586,  587,   69,   69,   69,   69,  602,  599,
+      580,   69,  603,   69,   69,  130,  581,   69,  605,  643,
+      582,  604,   69,  583,  600,   69,  607,   69,   69,  611,
+
+      584,  609,  601,  585,   69,  592,  593,  606,  594,   69,
+       69,  595,   69,   69,  608,  610,  596,   69,   69,   69,
+      616,  128,  597,  598,   69,   69,  615,   69,  620,   69,
+      621,  612,  619,  613,   69,   69,  614,  622,   69,  617,
+      624,  623,   69,  618,   69,   69,   69,   69,   69,   69,
+      631,   69,  625,  626,  628,  629,  633,   69,   69,   69,
+       69,   69,   69,   69,  627,  632,  630,   69,  635,  636,
+      637,   69,  639,   69,   69,   69,  638,  634,  640,   69,
+      644,   69,  641,   69,   69,   69,   69,   69,   69,  650,
+      642,   69,   69,  649,  645,   69,  647,  653,  655,  656,
+
+       69,  646,   69,  648,  651,  654,  652,  659,  660,   69,
+       69,   69,   69,   69,  661,  657,  658,   69,   69,   69,
+      666,  667,  664,  663,   69,   69,   69,  668,  662,   69,
+      671,   69,  673,   69,   69,   69,  674,  137,   69,  665,
+       69,   69,  670,  669,  676,   69,   69,   69,   69,  675,
+       69,  672,  687,   69,   69,   69,   69,  677,  694,  679,
+      691,  698,  688,   69,   69,  678,  680,   69,  690,   69,
+      681,   69,  682,   69,  696,  689,  683,  692,  684,  695,
+       69,   69,   69,  685,  697,  693,   69,  699,  686,  703,
+       69,  704,  702,   69,   69,  701,  705,   69,  706,   69,
+
+       69,  700,  709,   69,  712,  708,   69,   69,   69,   69,
+       69,  713,  711,  710,  718,  714,  707,  717,   69,  719,
+       69,   69,  715,  720,   69,   69,  723,   69,  716,   69,
+       69,   69,  724,   69,   69,   69,   69,   69,  722,  726,
+      721,  730,   69,  728,   69,  734,   69,   69,  725,  727,
+       69,   69,   69,  733,  729,   69,  732,  731,   69,   69,
+      738,  741,  737,  739,  740,  735,   69,  742,  743,  736,
+       69,  745,   69,   69,   69,  746,   69,   69,  747,   69,
+       69,  748,  749,  744,   69,   69,  750,   69,  754,   69,
+      137,   69,   69,   69,  751,  752,  756,  757,   69,  758,
+
+       69,  761,   69,   69,  753,  759,  760,  762,  755,   69,
+       69,   69,  764,   69,   69,   69,   69,   69,   69,   69,
+      769,  763,  770,   69,   69,   69,  772,  768,  765,  773,
+      766,  774,  775,  767,  771,  776,   69,   69,   69,  777,
+       69,  778,   69,   69,  779,  782,   69,   69,   69,   69,
+      780,   69,   69,   69,  790,  781,  783,  784,  791,   69,
+       69,   69,   69,   69,   69,  785,  787,  792,  788,  793,
+       69,  789,  786,   69,  794,  795,   69,   69,  796,   69,
+      801,   69,   69,   69,   69,  797,   69,  805,   69,  803,
+       69,   69,  799,  806,   69,  798,   69,  807,  800,  809,
+
+      802,   69,   69,   69,  804,  808,   69,  812,   69,   69,
+      811,  814,  810,  816,   69,   69,   69,   69,   69,   69,
+       69,   69,  813,  817,  820,   69,   69,  815,   69,   69,
+      818,  819,  821,   69,  825,   69,   69,  822,  828,  824,
+      823,  826,  829,   69,  831,  827,   69,   69,  833,  830,
+      835,   69,   69,  832,  836,   69,   69,  839,  834,   69,
+       69,   69,  842,   69,  843,   69,  838,   69,   69,  841,
+      837,   69,  840,  844,   69,  846,  845,   69,   69,  849,
+       69,  881,  851,  848,  852,   69,  847,   69,   69,   69,
+      853,   69,  854,   69,  860,   69,   69,   69,  850,   69,
+
+      862,   69,  861,   69,   69,   69,  865,  866,  855,   69,
+      863,  867,   69,  856,   69,  857,   69,  858,  868,  859,
+      869,  864,  870,  871,  874,   69,   69,  876,   69,   69,
+      873,   69,  877,   69,  872,   69,  878,  880,   69,  882,
+       69,  875,   69,  884,   69,   69,   69,  883,   69,   69,
+      886,  135,  879,  888,  887,  885,   69,  889,   69,   69,
+      893,   69,   69,  894,  891,   69,  892,  890,   69,   69,
+      896,  897,   69,   69,  895,   69,  900,   69,   69,  903,
+      898,   69,   69,  899,   69,   69,   69,   69,  909,   69,
+       69,   69,   69,  901,  133,   69,  904,   69,  907,  908,
+
+      913,  902,  905,   69,   69,  906,  918,  916,  915,  910,
+      912,  917,   69,   69,  914,  911,   69,   69,  920,  922,
+       69,  919,   69,   69,   69,   69,  923,   69,   69,   69,
+      926,  921,  928,   69,  924,   69,   69,  931,   69,  925,
+       69,   69,   69,  927,   69,   69,  929,   69,   69,  930,
+      938,  939,  934,  932,  944,  933,  935,  936,   69,  937,
+       69,   69,   69,  940,   69,  941,   69,  947,  948,  942,
+       69,  946,   69,   69,   69,  949,  943,   69,  950,  951,
+       69,   69,  953,  945,   69,  952,   69,   69,  957,  954,
+      959,   69,  958,   69,   69,   69,  962,   69,   69,   69,
+
+      955,   69,  965,   69,  964,   69,  956,   69,   69,   69,
+       69,   69,  973,  960,  961,  132,  963,   69,  966,   69,
+      967,   69,  968,  970,  969,  972,  976,   69,   69,  971,
+      974,  975,  977,   69,   69,   69,   69,  984,  981,  985,
+       69,   69,  982,  979,   69,  987,  978,   69,  980,  986,
+       69,  989,   69,   69,  992,  983,   69,  991,  993,  994,
+       69,  995,   69,   69,   69,  997,   69,  988,  990,  996,
+       69,   69,   69,   69,   69, 1003,   69,   69, 1001,   69,
+     1005,   69,   69,   69,   69,  998, 1000, 1008,   69, 1002,
+       69,   69,   69, 1007,   69, 1010,  999, 1004,   69, 1013,
+
+       69,   69, 1011, 1006,   69, 1012, 1014, 1009,   69, 1017,
+     1019,   69, 1015, 1021, 1016,   69, 1020, 1023,   69,   69,
+     1025,   69,   69,   69, 1018,   69,   69, 1028,   69, 1026,
+       69,   69, 1034, 1024,  130, 1022,   69,   69,   69, 1031,
+     1029,   69, 1032, 1035,   69,   69, 1037, 1040, 1039, 1027,
+     1030,   69,   69, 1036, 1033,   69, 1038,   69, 1041,   69,
+       69, 1046,   69,   69,   69, 1045,   69,   69, 1048, 1042,
+     1049,   69, 1050,   69, 1043,   69,   69,   69,   69, 1044,
+       69, 1057, 1051,   69,   69, 1047,   69,   69,   69, 1055,
+     1054, 1056,   69, 1052,   69, 1053, 1062,   69, 1060, 1063,
+
+     1058,   69,   69, 1059, 1068, 1069,   69, 1064, 1061, 1065,
+     1066,   69,   69, 1067, 1070,   69,   69, 1071,   69,   69,
+       69, 1078, 1079,   69,   69, 1073,   69,   69, 1077, 1075,
+       69, 1072, 1076,   69,   69,   69,   69, 1074,  128,   69,
+     1081,   69, 1088,   69, 1080,   69,   69, 1083, 1082,   69,
+     1084, 1085,   69, 1097, 1087, 1090,   69, 1091,   69, 1089,
+     1086,   69, 1092, 1096, 1099, 1094,   69, 1098, 1095,   69,
+       69,   69, 1100, 1102,   69,   69, 1093, 1104,   69,   69,
+       69,   69,   69, 1105, 1103,   69, 1110, 1106, 1107,   69,
+     1101,   69,   69,   69,   69,   69, 1114,   69, 1108, 1115,
+
+     1109, 1111, 1113,   69,   69,   69, 1118, 1112, 1116, 1117,
+     1120, 1121,   69,   69,   69,   69, 1119,   69, 1127, 1122,
+     1123,   69,   69,   69,   69,   69, 1124, 1125, 1131,   69,
+     1130,   69,   69, 1128, 1132,   69, 1126, 1133,   69,   69,
+     1129, 1134, 1135,   69, 1137,   69,   69, 1136,   69,   69,
+       69,   69,   69,   69, 1138, 1141, 1146,   69, 1139, 1147,
+     1142,   69,   69, 1140,   69, 1151,   69, 1145,   69, 1144,
+     1153,   69, 1808, 1143, 1148, 1154,   69,   69, 1156,   69,
+     1149, 1155, 1150,   69,   69, 1158, 1160, 1157, 1152,   69,
+       69,   69, 1162,   69,   69, 1163, 1164, 1159,   69,   69,
+
+       69,   69, 1171,   69,   69,   69,   69,   69, 1175,   69,
+     1165, 1166, 1167,   69, 1161,   69, 1177, 1168, 1173, 1169,
+     1170,   69,   69, 1172, 1180,   69, 1174,   69,   69,   69,
+     1179,   69, 1176, 1178, 1182,   69, 1185, 1181, 1183,   69,
+       69, 1189,   69,   69, 1192, 1188,   69, 1193,   69,   69,
+     1191,   69,   69, 1195, 1184, 1187,   69, 1186, 1194,   69,
+     1196,   69, 1190,   69,   69,   69,   69, 1200,   69, 1203,
+       69,   69,   69,   69,   69, 1199, 1197,   69,   69, 1207,
+     1198, 1209,   69, 1201,   69, 1204, 1208, 1206, 1214, 1210,
+     1205,   69, 1202, 1215, 1211, 1212,   69, 1217,   69, 1216,
+
+       69, 1218,   69, 1219,   69, 1213, 1222,   69,   69,   69,
+       69,   69,   69, 1224,   69, 1227, 1221, 1220, 1229, 1223,
+       69,   69, 1225,   69,   69,   69, 1232, 1231, 1233,   69,
+     1234,   69,   69, 1230,   69,   69, 1228, 1226,   69,   69,
+     1236, 1238,   69, 1237,   69,   69,   69, 1240, 1239, 1243,
+       69,   69, 1235,   69,   69,   69, 1241, 1242,   69, 1248,
+     1245,   69, 1250, 1249,   69, 1252, 1244,   69,   69,   69,
+       69, 1246,   69, 1247,   69, 1251, 1253, 1260, 1255, 1256,
+     1257,   69,   69,   69,   69, 1262, 1254, 1258, 1259,   69,
+       69, 1263, 1264,   69,   69,   69, 1267, 1265,   69,   69,
+
+     1261,   69,   69,   69,   69,   69,   69, 1268,   69,   69,
+     1278,   69,   69, 1270, 1266, 1271, 1272, 1277,   69,   69,
+     1269, 1274,   69, 1282,   69, 1275,   69,   69, 1273, 1276,
+       69, 1280, 1284, 1281,   69, 1286, 1279, 1283,   69, 1287,
+     1285,   69, 1290,   69, 1288,   69,   69,   69, 1291,   69,
+       69, 1296,   69,   69, 1293,   69, 1297,   69, 1292, 1808,
+     1300, 1289,   69,   69, 1295,   69,   69, 1301, 1294,   69,
+       69, 1302, 1298, 1299,   69, 1303, 1306,   69, 1308, 1304,
+       69,   69, 1305,   69,   69, 1309, 1307,   69, 1310,   69,
+       69,   69,   69,   69, 1311, 1314, 1315, 1319,   69,   69,
+
+     1321,   69, 1318, 1313, 1312,   69, 1316,   69, 1320,   69,
+       69, 1323, 1326,   69, 1324,   69,   69, 1317,   69, 1329,
+       69, 1331,   69, 1325, 1322, 1330, 1327,   69, 1332,   69,
+       69,   69, 1336,   69,   69, 1328, 1335,   69,   69,   69,
+       69, 1333, 1338,   69,   69, 1341,   69,   69, 1334, 1344,
+       69,   69,   69,   69, 1340, 1345,   69, 1347, 1346, 1337,
+       69, 1339, 1342, 1343,   69,   69,   69,   69, 1356,   69,
+       69,   69, 1348, 1357,   69, 1349, 1350,   69, 1354,   69,
+     1361, 1362,   69, 1352, 1351, 1359, 1353, 1358, 1355,   69,
+     1360, 1363,   69,   69, 1366,   69, 1367,   69, 1368,   69,
+
+       69, 1370,   69,   69, 1364,   69, 1365, 1371,   69,   69,
+     1373, 1374,   69, 1376,   69,   69,   69,   69,   69, 1369,
+       69, 1379, 1372, 1378,   69, 1380, 1382,   69, 1375,   69,
+     1386,   69,   69, 1377,   69, 1383,   69,   69,   69, 1385,
+     1381, 1390, 1391,   69, 1384,   69, 1393,   69,   69,   69,
+     1395, 1389, 1387,   69,   69,   69,   69, 1388,   69,   69,
+     1398,   69, 1396, 1399, 1392,   69, 1397,   69, 1404, 1400,
+     1402,   69, 1407,   69, 1394,   69, 1403,   69,   69, 1401,
+     1405, 1406, 1408, 1412, 1410,   69, 1411,   69,   69,   69,
+     1413,   69,   69, 1409,   69,   69,   69, 1418, 1414,   69,
+
+     1416, 1419, 1415,   69, 1417, 1421,   69, 1422,   69,   69,
+     1424,   69,   69, 1423,   69, 1420,   69, 1426,   69, 1428,
+     1429,   69,   69, 1425, 1430, 1431,   69, 1432,   69,   69,
+       69, 1427,   69, 1435, 1433, 1438,   69, 1437,   69,   69,
+       69,   69, 1434, 1442, 1439,   69, 1441, 1443,   69,   69,
+     1436, 1444, 1440,   69, 1446, 1447,   69,   69,   69, 1445,
+     1449,   69, 1448, 1450,   69, 1451,   69, 1452,   69,   69,
+       69,   69,   69,   69, 1453, 1460, 1455, 1458,   69,   69,
+       69,   69, 1459,   69, 1457, 1463,   69,   69, 1456,   69,
+     1454, 1465, 1464,   69,   69, 1471, 1462, 1461,   69, 1467,
+
+     1468,   69, 1469,   69, 1470,   69,   69, 1466,   69,   69,
+       69,   69, 1478,   69,   69, 1476, 1472,   69, 1473,   69,
+     1474, 1475,   69, 1479,   69,   69,   69,   69,   69,   69,
+       69, 1477,   69, 1487, 1488, 1482, 1489,   69,   69, 1481,
+     1484, 1490,   69, 1480,   69, 1485,   69, 1486, 1483,   69,
+     1491,   69,   69,   69, 1493, 1495, 1492,   69, 1498, 1499,
+       69,   69, 1500,   69, 1494,   69, 1502,   69, 1501, 1496,
+     1497,   69, 1507,   69, 1508,   69,   69,   69,   69,   69,
+       69, 1503,   69, 1504,   69, 1512, 1506, 1505,   69,   69,
+       69, 1510, 1516, 1509, 1517,   69, 1511,   69, 1513, 1520,
+
+       69, 1514,   69, 1518, 1515,   69, 1521,   69, 1519, 1523,
+     1524,   69, 1522, 1526,   69,   69, 1528,   69, 1529,   69,
+     1525,   69, 1530,   69,   69,   69,   69,   69,   69,   69,
+     1533, 1534,   69, 1532, 1527,   69, 1536, 1538,   69,   69,
+     1539, 1541,   69, 1548, 1537, 1531, 1535, 1542,   69, 1543,
+       69, 1545,   69, 1540,   69, 1544, 1546,   69, 1547,   69,
+       69,   69,   69,   69, 1549,   69,   69,   69,   69, 1550,
+     1552, 1553,   69,   69,   69, 1555, 1551, 1554,   69, 1560,
+       69, 1557, 1558, 1559,   69, 1556,   69,   69,   69, 1561,
+     1565,   69,   69, 1568,   69,   69, 1567,   69,   69,   69,
+
+     1570,   69, 1573, 1562,   69, 1569, 1563, 1564, 1571,   69,
+       69, 1566,   69, 1576, 1572, 1577,   69,   69, 1574,   69,
+     1579, 1808,   69,   69, 1575, 1580, 1581,   69, 1582,   69,
+     1578, 1583,   69, 1586,   69, 1584,   69, 1585,   69, 1587,
+       69,   69, 1589, 1590,   69, 1588,   69,   69,   69, 1593,
+       69, 1591, 1592,   69,   69, 1597,   69,   69,   69, 1601,
+       69, 1599,   69, 1602, 1594,   69,   69, 1595, 1596, 1598,
+       69, 1604,   69,   69,   69,   69, 1600, 1610,   69,   69,
+     1605, 1603, 1607,   69, 1613,   69, 1611,   69, 1615,   69,
+       69, 1614, 1608, 1612, 1609,   69, 1606, 1617,   69,   69,
+
+       69,   69,   69, 1618, 1616,   69,   69, 1621, 1619, 1620,
+     1623,   69, 1624,   69,   69, 1625,   69,   69, 1626,   69,
+     1632,   69, 1628, 1627, 1630,   69, 1622, 1634,   69,   69,
+       69, 1637,   69,   69,   69, 1631,   69, 1629, 1638,   69,
+       69,   69, 1639, 1645,   69, 1636, 1633,   69, 1635, 1642,
+       69,   69, 1640, 1647,   69, 1643,   69,   69, 1641, 1649,
+       69, 1648,   69, 1652,   69,   69, 1644, 1650, 1655,   69,
+     1646, 1656,   69,   69,   69,   69, 1660,   69, 1653,   69,
+     1651,   69,   69,   69,   69, 1665, 1658, 1654, 1663,   69,
+       69, 1661, 1657, 1668,   69, 1659, 1669,   69,   69, 1666,
+
+     1667, 1662,   69, 1664,   69, 1674,   69, 1671, 1670, 1673,
+     1675,   69, 1672, 1676,   69,   69, 1678,   69,   69, 1679,
+     1677, 1680,   69,   69,   69, 1683,   69,   69,   69, 1686,
+       69,   69, 1684, 1682,   69,   69, 1685, 1681,   69, 1687,
+     1688,   69,   69, 1689,   69,   69,   69, 1697,   69,   69,
+     1695, 1698,   69, 1699, 1700,   69, 1690, 1691,   69, 1692,
+     1693,   69, 1701, 1702,   69, 1694, 1696, 1704,   69,   69,
+       69, 1707,   69, 1708,   69, 1703,   69,   69,   69,   69,
+       69,   69, 1715,   69, 1705, 1712, 1713, 1808, 1706, 1716,
+       69,   69, 1710, 1717,   69, 1718,   69, 1721, 1714, 1711,
+
+       69, 1709,   69, 1719,   69, 1720,   69,   69,   69,   69,
+       69, 1723,   69,   69, 1722,   69, 1727,   69,   69,   69,
+       69,   69, 1735,   69, 1726,   69, 1724, 1725, 1729, 1736,
+     1728,   69, 1730,   69, 1732, 1731, 1734,   69, 1737,   69,
+     1741,   69, 1738,   69, 1733,   69, 1740, 1745,   69, 1746,
+     1739,   69,   69, 1742,   69,   69, 1743,   69,   69,   69,
+       69, 1748, 1744,   69,   69, 1747,   69,   69, 1758, 1755,
+       69, 1750, 1752, 1753, 1749, 1756,   69, 1751,   69,   69,
+       69, 1759, 1754, 1760, 1761, 1757, 1763, 1764,   69,   69,
+       69,   69,   69, 1768,   69,   69, 1765,   69,   69, 1762,
+
+       69,   69, 1771,   69,   69, 1775,   69,   69, 1770, 1766,
+     1808, 1767, 1776, 1769,   69, 1778, 1774,   69, 1779, 1772,
+     1773,   69,   69,   69,   69, 1777, 1780, 1783,   69, 1781,
+       69, 1784,   69,   69,   69,   69,   69, 1785, 1787,   69,
+     1789, 1790, 1782,   69,   69, 1793,   69,   69,   69, 1796,
+       69, 1786,   69, 1788, 1797,   69,   69, 1798, 1791, 1799,
+       69,   69, 1792, 1800,   69, 1794, 1795,   69, 1801,   69,
+     1808, 1804, 1802, 1808, 1803, 1805, 1806,   69, 1807,   69,
+       41,   41,   41,   41,   41,   41,   41,   46,   46,   46,
+       46,   46,   46,   46,   51,   51,   51,   51,   51,   51,
+
+       51,   57,   57,   57,   57,   57,   57,   57,   62,   62,
+       62,   62,   62,   62,   62,   72,   72, 1808,   72,   72,
+       72,   72,  127,  127, 1808, 1808, 1808,  127,  127,  129,
+      129, 1808, 1808,  129, 1808,  129,  131, 1808, 1808, 1808,
+     1808, 1808,  131,  134,  134, 1808, 1808, 1808,  134,  134,
+      136, 1808, 1808, 1808, 1808, 1808,  136,  138,  138, 1808,
+      138,  138,  138,  138,   73,   73, 1808,   73,   73,   73,
+       73,   13, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+     1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+     1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+
+     1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+     1808
     } ;
 
-static yyconst flex_int16_t yy_chk[3608] =
+static yyconst flex_int16_t yy_chk[3612] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1435,7 +1439,7 @@ static yyconst flex_int16_t yy_chk[3608] =
         9,  156,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   45,   45,    7,    8,    8,    8,    8,
        10,    8,   21,   33,  156,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1805,   20,   29,   20,   20,   11,
+       11,   11,   11,   11, 1814,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   25,   20,   24,   28,   11,   12,
        12,   12,   12,   12,   12,   75,   22,   22,   75,   25,
@@ -1444,7 +1448,7 @@ static yyconst flex_int16_t yy_chk[3608] =
        19,   19,   23,   27,   61,   61,   27,   23,   35,   31,
        31,   23,   39,   27,   23,   27,   23,   23,   31,   83,
        32,   32,   36,   36,   31,   32,   39,   36,   31,   37,
-      669,   39,   38,   38,   37,   38,   79,   36,   40,   40,
+      674,   39,   38,   38,   37,   38,   79,   36,   40,   40,
        36,   32,   34,   40,   37,  111,  111,   34,   37,   37,
        38,   34,   77,   56,   79,   56,   56,   34,   56,   64,
 
@@ -1468,361 +1472,362 @@ static yyconst flex_int16_t yy_chk[3608] =
       147,  148,  151,  144,  151,  149,  148,  148,  154,  143,
       149,  150,  162,  146,  155,  145,  150,  153,  153,  155,
       147,  159,  157,  158,  151,  152,  157,  154,  158,  152,
-      162,  179,  160,  163,  152,  159,  161,  164,  163,  152,
-
-      165,  165,  164,  166,  179,  152,  152,  160,  161,  167,
-      168,  161,  169,  169,  171,  168,  170,  172,  173,  171,
-      165,  170,  181,  166,  174,  167,  172,  170,  175,  174,
-      176,  177,  182,  175,  178,  176,  177,  183,  182,  173,
-      184,  178,  181,  185,  186,  187,  188,  189,  184,  186,
-      190,  191,  189,  192,  193,  194,  185,  194,  192,  183,
-      187,  195,  196,  197,  198,  134,  188,  196,  195,  191,
-      191,  202,  190,  202,  193,  200,  198,  199,  199,  201,
-      200,  203,  197,  204,  201,  212,  205,  206,  209,  210,
-      202,  207,  206,  203,  205,  208,  207,  211,  200,  133,
-
-      208,  213,  204,  209,  213,  211,  218,  210,  214,  214,
-      212,  215,  216,  216,  215,  217,  217,  219,  220,  221,
-      222,  220,  218,  221,  224,  223,  225,  225,  226,  222,
-      223,  227,  219,  226,  228,  229,  227,  230,  224,  231,
-      232,  232,  233,  234,  235,  233,  236,  237,  235,  241,
-      238,  240,  231,  229,  228,  238,  242,  239,  230,  237,
-      239,  234,  243,  240,  236,  242,  241,  244,  249,  241,
-      245,  246,  250,  246,  246,  247,  247,  251,  248,  259,
-      244,  248,  245,  243,  252,  249,  251,  250,  249,  253,
-      253,  254,  256,  252,  255,  255,  254,  257,  258,  259,
-
-      260,  261,  257,  262,  264,  260,  263,  256,  262,  263,
-      258,  263,  265,  266,  267,  268,  269,  271,  264,  267,
-      268,  261,  266,  270,  272,  274,  276,  273,  265,  269,
-      273,  265,  271,  265,  278,  277,  280,  269,  272,  274,
-      281,  276,  283,  270,  277,  279,  273,  275,  282,  275,
-      275,  280,  284,  282,  285,  278,  286,  288,  291,  275,
-      281,  275,  275,  275,  279,  283,  275,  289,  287,  285,
-      290,  286,  284,  287,  291,  290,  294,  288,  292,  293,
-      293,  289,  293,  292,  295,  296,  299,  298,  297,  298,
-      299,  300,  301,  304,  302,  303,  294,  308,  304,  306,
-
-      295,  296,  297,  302,  303,  307,  301,  305,  306,  300,
-      307,  305,  316,  309,  311,  311,  302,  310,  308,  309,
-      312,  310,  313,  314,  314,  312,  315,  317,  318,  322,
-      319,  315,  326,  316,  319,  313,  317,  320,  320,  321,
-      318,  323,  323,  327,  321,  325,  325,  328,  329,  330,
-      322,  327,  332,  326,  333,  334,  328,  335,  336,  337,
-      339,  330,  335,  338,  337,  339,  340,  336,  329,  334,
-      341,  338,  332,  342,  333,  343,  344,  345,  347,  343,
-      346,  349,  345,  350,  340,  352,  353,  351,  354,  353,
-      352,  344,  341,  356,  342,  352,  346,  347,  348,  348,
-
-      358,  349,  350,  351,  348,  359,  348,  360,  354,  355,
-      355,  357,  357,  361,  348,  358,  362,  359,  356,  364,
-      363,  365,  360,  367,  348,  363,  366,  367,  364,  368,
-      369,  370,  361,  371,  368,  372,  373,  373,  362,  374,
-      365,  366,  369,  372,  375,  376,  371,  377,  376,  370,
-      378,  374,  379,  378,  380,  388,  375,  381,  380,  380,
-      382,  382,  377,  383,  383,  385,  385,  384,  379,  394,
-      381,  379,  384,  386,  386,  387,  388,  389,  805,  390,
-      387,  391,  389,  390,  392,  393,  391,  395,  392,  394,
-      393,  396,  395,  397,  398,  399,  396,  398,  400,  400,
-
-      401,  402,  398,  403,  805,  404,  398,  397,  403,  405,
-      408,  410,  405,  399,  404,  402,  406,  407,  401,  409,
-      406,  411,  407,  408,  409,  412,  413,  410,  414,  417,
-      412,  414,  413,  411,  415,  416,  418,  415,  419,  420,
-      416,  422,  406,  419,  420,  421,  422,  417,  421,  423,
-      418,  424,  425,  423,  423,  426,  428,  427,  429,  428,
-      426,  431,  429,  429,  424,  425,  427,  430,  432,  430,
-      432,  433,  434,  435,  428,  436,  438,  437,  439,  440,
-      431,  437,  442,  441,  443,  438,  444,  442,  462,  433,
-      434,  462,  435,  439,  449,  436,  447,  440,  441,  445,
-
-      445,  450,  446,  443,  448,  444,  446,  447,  451,  448,
-      449,  452,  453,  457,  455,  454,  460,  453,  452,  455,
-      450,  451,  454,  456,  459,  458,  464,  474,  456,  461,
-      460,  457,  458,  459,  461,  463,  465,  465,  468,  463,
-      466,  470,  469,  468,  471,  465,  469,  464,  472,  466,
-      473,  477,  474,  470,  480,  483,  472,  484,  489,  490,
-      559,  485,  471,  484,  483,  485,  477,  486,  473,  475,
-      488,  480,  486,  559,  475,  488,  489,  491,  475,  493,
-      491,  475,  492,  492,  490,  495,  493,  501,  475,  494,
-      494,  475,  487,  487,  487,  500,  487,  496,  496,  487,
-
-      495,  497,  498,  499,  487,  498,  497,  501,  499,  502,
-      487,  487,  503,  506,  500,  504,  504,  505,  507,  509,
-      503,  508,  508,  507,  509,  510,  511,  512,  502,  511,
-      510,  506,  505,  512,  513,  514,  515,  518,  517,  516,
-      519,  519,  513,  514,  516,  517,  521,  520,  522,  524,
-      525,  521,  527,  529,  515,  520,  518,  526,  524,  525,
-      526,  528,  528,  532,  534,  533,  527,  522,  529,  530,
-      533,  535,  530,  536,  537,  539,  543,  538,  540,  539,
-      530,  541,  544,  542,  532,  534,  538,  546,  544,  547,
-      543,  535,  542,  551,  537,  536,  540,  545,  545,  548,
-
-      541,  549,  552,  547,  548,  550,  549,  546,  553,  550,
-      554,  558,  551,  553,  552,  555,  555,  556,  557,  560,
-      561,  557,  556,  564,  560,  562,  562,  563,  563,  558,
-      565,  554,  566,  567,  565,  568,  569,  571,  564,  572,
-      561,  571,  575,  573,  574,  594,  576,  575,  577,  568,
-      579,  566,  583,  594,  572,  131,  569,  567,  570,  574,
-      576,  570,  577,  570,  582,  579,  578,  570,  573,  570,
-      578,  580,  581,  583,  570,  584,  580,  581,  582,  570,
-      586,  585,  587,  587,  588,  586,  580,  585,  587,  584,
-      587,  590,  589,  595,  591,  593,  588,  589,  592,  592,
-
-      593,  596,  597,  597,  602,  590,  591,  595,  587,  598,
-      600,  601,  603,  598,  601,  600,  604,  605,  606,  607,
-      596,  604,  605,  602,  608,  603,  609,  610,  611,  612,
-      613,  614,  610,  608,  616,  607,  614,  606,  617,  613,
-      618,  619,  620,  612,  621,  609,  619,  620,  611,  621,
-      622,  623,  623,  616,  625,  618,  617,  624,  629,  622,
-      627,  629,  624,  630,  627,  627,  631,  625,  628,  628,
-      632,  633,  628,  634,  635,  636,  634,  630,  637,  643,
-      636,  638,  639,  637,  640,  632,  631,  638,  641,  641,
-      640,  633,  642,  644,  645,  635,  644,  643,  639,  646,
-
-      647,  642,  648,  649,  650,  652,  654,  653,  649,  650,
-      653,  656,  645,  655,  657,  648,  656,  654,  646,  657,
-      647,  658,  660,  652,  661,  655,  659,  659,  662,  663,
-      664,  666,  667,  663,  665,  670,  658,  671,  661,  672,
-      662,  660,  673,  665,  681,  129,  674,  673,  664,  670,
-      666,  674,  671,  675,  677,  676,  678,  667,  675,  672,
-      676,  679,  680,  681,  682,  683,  679,  685,  677,  686,
-      678,  684,  684,  687,  691,  686,  693,  680,  689,  682,
-      688,  688,  690,  689,  683,  685,  694,  692,  691,  690,
-      692,  695,  696,  687,  693,  694,  695,  697,  698,  699,
-
-      700,  701,  697,  699,  702,  703,  704,  705,  706,  700,
-      707,  696,  703,  710,  708,  709,  701,  698,  704,  702,
-      708,  714,  711,  716,  127,  718,  705,  713,  707,  706,
-      709,  711,  713,  710,  715,  714,  717,  718,  720,  722,
-      719,  717,  715,  716,  719,  719,  721,  721,  724,  723,
-      725,  725,  722,  724,  726,  727,  729,  720,  723,  726,
-      727,  728,  728,  730,  731,  729,  732,  733,  730,  734,
-      735,  739,  733,  736,  734,  735,  742,  736,  731,  738,
-      738,  744,  739,  741,  732,  737,  743,  741,  745,  747,
-      744,  742,  745,  745,  737,  746,  749,  750,  748,  737,
-
-      751,  737,  753,  737,  743,  737,  748,  758,  747,  746,
-      749,  752,  752,  754,  754,  750,  756,  753,  757,  756,
-      759,  759,  760,  757,  762,  751,  758,  761,  761,  762,
-      763,  763,  764,  765,  767,  766,  768,  768,  765,  767,
-      769,  770,  760,  766,  771,  773,  781,  770,  774,  775,
-      773,  771,  764,  774,  775,  776,  777,  778,  769,  779,
-      776,  780,  780,  782,  783,  777,  781,  784,  785,  783,
-      779,  786,  787,  788,  788,  789,  778,  790,  791,  792,
-      793,  784,  797,  786,  792,   68,  782,  784,  785,  794,
-      787,  797,  798,  796,  794,  789,  791,  796,  796,  799,
-
-      798,  799,  790,  793,  800,  801,  803,  802,  804,  807,
-      801,  802,  806,  808,  807,  809,  810,  803,  800,  811,
-      810,  812,  813,  814,  815,  816,  852,  804,  817,  852,
-      806,  808,  820,  817,  818,  809,  813,  811,  814,  815,
-      812,  818,  819,  821,  816,  822,  824,  819,  823,   62,
-      820,  825,  821,  826,  823,  832,  825,  827,  826,  835,
-      822,  840,  827,  828,  828,  829,  829,  824,  831,  831,
-      833,  834,  836,  832,  838,  833,  836,  836,  835,  837,
-      837,  839,  841,  842,  844,  834,  843,  840,  845,  842,
-      846,  843,  847,  838,  848,  849,  988,  850,  851,  851,
-
-      839,  841,  853,  844,  988,  854,  856,  845,  848,  846,
-      854,  847,  850,  855,  853,  857,  849,  855,  858,  856,
-      859,  861,  859,  865,  857,  863,  859,  862,  862,  864,
-      863,  858,  866,  864,  868,  870,   57,  866,  881,  859,
-      870,  861,  872,  865,  871,  871,  880,  872,  874,  874,
-      876,  876,  868,  878,  879,  879,  878,  882,  884,  883,
-      886,  880,  888,  881,  883,  885,  885,  887,  887,  891,
-      889,  882,  890,  884,  892,  894,  890,  895,  898,  892,
-      886,  889,  896,  896,  888,  897,  899,  900,  891,  901,
-      897,  895,  902,  894,  902,  903,  900,  904,  898,  905,
-
-      903,  907,  904,  906,  908,  908,  899,  909,  906,  901,
-      911,  912,  912,  909,  913,  907,  914,  915,  920,  905,
-      915,  918,  916,  915,  917,  926,  913,  916,  919,  917,
-      918,  923,  923,  919,  911,  915,  914,  921,  924,  922,
-      921,  925,  927,  920,  922,  926,  928,  927,  929,  930,
-      932,  928,  931,  931,  930,  932,  924,  933,  934,  935,
-      925,  937,  936,  939,  938,  940,  941,  942,  939,  943,
-       52,  929,  949,  937,  946,  933,  936,  938,  934,  935,
-       51,  942,  945,  948,  947,  940,  941,  945,  949,  946,
-      943,  947,  948,  952,  952,  948,  953,  954,  955,  953,
-
-      956,  957,  954,  958,  959,  960,  961,  961,  962,  956,
-      960,  963,  958,  959,  955,  958,  964,  965,  967,  966,
-      957,  968,  969,  971,  963,  970,  970,  972,  962,   46,
-      967,  965,  973,  976,  964,  966,  972,  973,  975,  971,
-      969,  974,  974,  978,  979,  982,  968,  975,  978,  980,
-      975,  976,  981,  984,  980,  983,  974,  990,  981,  989,
-      983,  985,  979,  991,  985,  982,  984,  993,  992,  994,
-      985,  996,  989,  992,  997,  990,  998, 1001,  997,  999,
-     1000,  998,  991,  993,  999, 1000, 1001,  994, 1002, 1003,
-     1006,  996, 1004, 1004, 1005, 1007, 1009, 1006, 1008, 1012,
-
-     1010, 1011, 1020, 1013, 1003, 1010, 1090, 1007, 1005, 1013,
-     1008, 1002, 1090, 1011, 1020, 1009, 1018, 1012, 1014, 1014,
-     1015, 1016, 1016, 1015, 1021, 1018, 1019, 1019, 1022, 1021,
-     1023, 1024, 1026, 1025, 1028, 1027, 1031, 1022, 1025, 1029,
-     1029, 1026, 1023, 1030, 1032, 1033, 1024, 1035, 1030, 1028,
-     1034, 1034, 1036, 1036, 1026, 1027, 1038, 1031, 1037, 1037,
-     1038, 1039, 1043, 1032, 1042, 1033, 1039, 1035, 1040, 1042,
-     1044, 1040, 1045, 1046, 1046, 1044, 1047, 1047, 1048, 1049,
-     1043, 1050, 1051, 1048, 1052, 1053, 1054, 1055, 1057, 1052,
-     1059, 1049, 1049, 1049, 1056, 1056,   41, 1045, 1049, 1066,
-
-     1054, 1050, 1051, 1058, 1058, 1053, 1061, 1063, 1055, 1064,
-     1059, 1062, 1062, 1068, 1057, 1061, 1064, 1065, 1067, 1067,
-     1069, 1073, 1063, 1071, 1072, 1066, 1065, 1074, 1071, 1072,
-     1075, 1079, 1076, 1078, 1074, 1075, 1069, 1076, 1078, 1068,
-     1079, 1073, 1077, 1077, 1080, 1082, 1081, 1083, 1084, 1085,
-     1083, 1086, 1086, 1087, 1088, 1089,   14, 1082, 1091, 1092,
-     1092, 1093, 1094, 1094, 1080, 1081, 1084, 1091, 1087, 1095,
-     1089, 1096, 1093, 1088, 1097, 1085, 1101, 1093, 1099, 1097,
-     1098, 1098, 1099, 1099, 1100, 1096, 1102, 1103, 1104, 1100,
-     1095, 1105, 1103, 1106, 1107, 1105, 1108, 1111, 1102, 1109,
-
-     1104, 1108, 1101, 1110, 1113, 1106, 1117, 1113, 1110, 1111,
-     1114, 1114, 1115, 1115, 1116, 1116, 1118,   13, 1119, 1107,
-     1121, 1109, 1118, 1119, 1120, 1125, 1117, 1123, 1127, 1121,
-     1120, 1129, 1123, 1128, 1128, 1130, 1131, 1125, 1132, 1133,
-     1127, 1134, 1135, 1133, 1130, 1136, 1134, 1135, 1138, 1138,
-     1139, 1129, 1140, 1141, 1131, 1143, 1143, 1132, 1146, 1136,
-     1138, 1140, 1141, 1147, 1148, 1149, 1150, 1150, 1139, 1148,
-     1151, 1154, 1151, 1146, 1152, 1152, 1155, 1147, 1154, 1156,
-     1156, 1157, 1149, 1158, 1162, 1159, 1160, 1161, 1163, 1164,
-     1157, 1165, 1168, 1170, 1168, 1167, 1155, 1159, 1160, 1161,
-
-     1167, 1169, 1170, 1163, 1158, 1174, 1172, 1173, 1173, 1164,
-     1162, 1165, 1175, 1176, 1179, 1176, 1177, 1175, 1178, 1169,
-     1172, 1177, 1180, 1178, 1181, 1182, 1183, 1184, 1186, 1181,
-     1182, 1174, 1179,    0, 1187, 1184, 1188, 1188, 1190, 1183,
-     1189, 1189, 1180, 1191, 1192, 1193, 1195, 1186, 1187, 1192,
-     1193, 1198, 1194, 1190, 1194, 1196, 1199, 1197, 1195, 1197,
-     1198, 1201, 1204, 1191, 1196, 1202, 1201, 1196, 1199, 1205,
-     1202, 1206, 1208, 1210, 1212, 1204, 1211, 1213, 1208, 1210,
-     1214, 1214, 1217, 1215, 1216, 1216, 1213, 1206, 1219, 1205,
-     1218, 1211, 1215, 1219, 1218, 1220, 1221, 1221, 1222, 1212,
-
-     1223, 1217, 1226, 1226, 1227, 1230, 1222, 1231, 1220, 1228,
-     1228, 1229, 1229, 1227, 1232, 1233, 1233, 1230, 1235, 1232,
-     1223, 1236, 1237, 1238, 1239, 1231, 1236, 1244, 1240, 1239,
-     1243, 1241, 1242, 1242, 1243, 1245, 1246, 1247, 1238, 1250,
-     1245, 1249, 1244, 1235, 1252, 1237, 1240, 1241, 1251, 1253,
-     1254, 1256, 1256, 1258, 1257, 1259, 1247, 1257, 1352, 1260,
-     1352, 1253, 1246, 1250, 1249, 1252, 1258, 1251, 1264, 1259,
-     1269, 1254, 1260, 1261, 1261, 1262, 1262, 1263, 1263, 1265,
-     1266, 1266, 1272, 1264, 1267, 1267, 1268, 1268, 1276, 1269,
-     1270, 1270, 1265, 1271, 1271, 1274, 1275, 1275, 1277, 1277,
-
-     1274, 1272, 1278, 1279, 1283, 1280, 1284, 1276, 1280, 1279,
-     1281, 1281, 1282, 1282, 1285, 1286, 1286, 1288, 1289, 1290,
-     1278, 1284, 1295, 1283, 1291, 1293, 1281, 1298, 1291, 1292,
-     1292, 1294, 1294, 1285, 1290, 1296, 1296, 1288, 1297, 1298,
-     1299, 1289, 1300, 1301, 1293, 1299, 1303, 1297, 1295, 1302,
-     1304, 1303, 1305, 1306, 1307, 1308, 1301, 1311,    0, 1309,
-     1308, 1305, 1306, 1309, 1313, 1304, 1318, 1300, 1307, 1315,
-     1302, 1314, 1314, 1313, 1315, 1316, 1316, 1311, 1319, 1321,
-     1323, 1318, 1325, 1323, 1316, 1324, 1329, 1319, 1326, 1326,
-     1324, 1321, 1328, 1328, 1330, 1330, 1331, 1332, 1333, 1340,
-
-     1329, 1336, 1325, 1334, 1334, 1336, 1337, 1341, 1331, 1337,
-     1339, 1332, 1338, 1338, 1342, 1339, 1343, 1333, 1342, 1340,
-     1344, 1341, 1345, 1346, 1348, 1344, 1349, 1345, 1350, 1346,
-     1351, 1349, 1355, 1350, 1356, 1356, 1343,    0, 1351, 1363,
-     1348, 1360, 1360, 1370, 1363, 1371, 1355, 1364, 1364, 1366,
-     1366, 1368, 1369, 1369, 1374, 1372, 1368, 1375, 1380, 1370,
-     1372, 1376, 1376, 1378, 1381, 1379, 1385, 1371, 1387, 1375,
-     1379, 1385, 1378, 1374, 1383, 1383, 1380, 1393, 1386, 1381,
-     1386, 1388, 1387, 1389, 1389, 1392, 1388, 1390, 1390, 1391,
-     1391, 1394, 1395, 1396, 1397, 1393, 1398, 1392, 1400, 1397,
-
-     1399, 1399, 1401, 1394, 1395, 1396, 1402, 1400, 1403, 1404,
-     1405, 1406, 1407, 1408, 1409, 1414, 1398, 1416, 1408, 1409,
-     1415, 1403, 1410, 1410, 1405, 1417, 1402, 1418, 1401, 1406,
-     1411, 1411, 1419, 1404, 1407, 1414, 1418, 1420, 1415, 1416,
-     1421, 1421, 1423, 1423, 1424, 1417, 1426, 1425, 1427, 1428,
-     1430, 1435, 1419, 1424, 1425, 1420, 1429, 1431, 1431, 1432,
-     1433, 1426, 1434, 1436, 1432, 1437, 1427, 1428, 1436, 1430,
-     1435, 1439, 1429, 1442, 1444, 1444, 1443, 1434, 1433, 1443,
-     1445, 1446, 1447, 1447, 1448, 1437, 1450, 1451, 1448, 1453,
-     1439, 1451, 1456, 1442, 1463, 1445, 1452, 1452, 1467, 1446,
-
-     1552, 1450, 1453, 1455, 1455, 1457, 1457, 1458, 1458, 1462,
-     1462, 1456, 1464, 1465, 1466, 1468, 1463, 1467, 1465, 1466,
-     1470, 1464, 1471, 1468, 1472, 1473, 1552, 1471,    0, 1472,
-     1474, 1474, 1475, 1475, 1476, 1470, 1477, 1478, 1478, 1476,
-     1473, 1477, 1479, 1479, 1482, 1485, 1483, 1484, 1486, 1482,
-     1483, 1487, 1484, 1488, 1485, 1489, 1492, 1491, 1488, 1487,
-     1491, 1494, 1493, 1486, 1495, 1496, 1496, 1489, 1497, 1499,
-     1494, 1500, 1504, 1495, 1492, 1493, 1501, 1497, 1502, 1502,
-     1503, 1504, 1505, 1505, 1506, 1507, 1513, 1509, 1499, 1510,
-     1507, 1500, 1506, 1512, 1514, 1501, 1509, 1512, 1521, 1503,
-
-     1513, 1527, 1510, 1516, 1516, 1518, 1518, 1522, 1522, 1514,
-     1523, 1524, 1524, 1523, 1525, 1525, 1526, 1526, 1521, 1527,
-     1528, 1529, 1530, 1530, 1531, 1534, 1529, 1535, 1531, 1538,
-     1539, 1534, 1535, 1540, 1528, 1539, 1541, 1545, 1542, 1543,
-     1543, 1544, 1546, 1547, 1547, 1545, 1538, 1538, 1548, 1548,
-     1549, 1540, 1542, 1550, 1551, 1553, 1541, 1554, 1550, 1555,
-     1544, 1546, 1557, 1557, 1553, 1558, 1549, 1560, 1558, 1561,
-     1561, 1562, 1563, 1564, 1551, 1562, 1566, 1554, 1567, 1555,
-     1570, 1563, 1565, 1565, 1569, 1560, 1571, 1567, 1564, 1566,
-     1575, 1577, 1570, 1569, 1579, 1575, 1576, 1576, 1580, 1579,
-
-     1577, 1581, 1582, 1583, 1584, 1585, 1586, 1580, 1583, 1589,
-     1585, 1571, 1587, 1587, 1590, 1591, 1591, 1593, 1594, 1595,
-     1592, 1581, 1584, 1582, 1592, 1596, 1593, 1597, 1589, 1590,
-     1598, 1586, 1597, 1596, 1594, 1599, 1599, 1603, 1595, 1600,
-     1602, 1602, 1603, 1605, 1605, 1606, 1607, 1609, 1609, 1610,
-     1611, 1612, 1612, 1613, 1613, 1614, 1598, 1616, 1600, 1615,
-     1617, 1617, 1619, 1610, 1618, 1606, 1621, 1627, 1620, 1607,
-     1622, 1615, 1611, 1620, 1614, 1622, 1618, 1616, 1623, 1624,
-     1624, 1653, 1619, 1626, 1626, 1621, 1627, 1629, 1630, 1631,
-     1632, 1632, 1629, 1653, 1631, 1623, 1623, 1633, 1633, 1634,
-
-     1634, 1635, 1630, 1637, 1637, 1642, 1635, 1639, 1639, 1641,
-     1641, 1643, 1644, 1644, 1648, 1654, 1645, 1649, 1649, 1642,
-     1643, 1645, 1648, 1650, 1652, 1655, 1656, 1657, 1650, 1652,
-     1658, 1661, 1676, 1654,    0, 1658, 1662, 1662, 1663, 1663,
-     1681, 1655, 1664, 1656, 1656, 1673, 1664, 1676, 1657, 1668,
-     1668, 1661, 1670, 1672, 1672, 1678, 1670, 1675, 1675, 1673,
-     1679, 1679, 1680, 1680, 1682, 1681, 1683, 1684,    0, 1685,
-     1686,    0, 1684, 1678, 1685, 1687, 1687, 1690, 1690, 1682,
-     1692, 1692, 1694, 1694, 1696, 1697, 1697, 1683, 1700, 1686,
-     1701, 1703, 1702, 1700, 1704, 1705, 1696, 1702, 1710, 1711,
-
-     1712, 1713, 1710, 1714, 1701, 1716, 1715, 1719, 1717, 1722,
-     1703, 1705, 1704, 1712, 1718, 1718, 1719, 1723, 1728, 1711,
-     1713, 1714, 1715, 1717, 1720, 1725, 1721, 1727, 1724, 1720,
-     1716, 1721, 1723, 1724, 1722, 1729, 1730, 1728, 1731, 1725,
-     1729, 1730, 1727, 1732, 1733, 1734, 1735, 1736, 1737, 1738,
-     1739, 1741, 1731, 1740, 1746, 1739, 1732, 1743, 1740, 1734,
-     1736, 1737, 1743, 1733, 1744, 1735, 1742, 1742, 1738, 1744,
-     1741, 1745, 1747, 1746, 1748, 1748, 1745, 1747, 1749, 1750,
-     1751, 1752, 1753, 1754, 1756, 1749, 1752, 1757, 1758, 1756,
-     1759, 1760, 1760, 1762, 1767, 1761, 1754, 1765, 1750, 1751,
-
-     1761, 1753, 1765, 1759, 1763, 1763, 1757, 1758, 1764, 1764,
-     1766, 1769, 1762, 1767, 1768, 1768, 1770, 1766, 1769, 1771,
-     1772, 1773, 1775, 1770, 1776, 1772, 1777, 1775, 1778, 1776,
-     1779, 1779, 1780, 1781, 1782, 1782, 1783, 1783, 1771, 1784,
-     1773, 1785, 1785, 1786, 1786, 1777, 1784, 1778, 1787, 1789,
-     1793, 1780, 1781, 1792, 1789, 1787, 1794,    0, 1792, 1795,
-     1795, 1796, 1796,    0,    0,    0,    0,    0,    0, 1793,
-        0,    0,    0,    0,    0, 1794, 1800, 1800, 1800, 1800,
-     1800, 1800, 1800, 1801, 1801, 1801, 1801, 1801, 1801, 1801,
-     1802, 1802, 1802, 1802, 1802, 1802, 1802, 1803, 1803, 1803,
-
-     1803, 1803, 1803, 1803, 1804, 1804, 1804, 1804, 1804, 1804,
-     1804, 1806, 1806,    0, 1806, 1806, 1806, 1806, 1807, 1807,
-        0,    0,    0, 1807, 1807, 1808, 1808,    0,    0, 1808,
-        0, 1808, 1809,    0,    0,    0,    0,    0, 1809, 1810,
-     1810,    0,    0,    0, 1810, 1810, 1811,    0,    0,    0,
-        0,    0, 1811, 1812, 1812,    0, 1812, 1812, 1812, 1812,
-     1813, 1813,    0, 1813, 1813, 1813, 1813, 1799, 1799, 1799,
-     1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
-     1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
-     1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
-
-     1799, 1799, 1799, 1799, 1799, 1799, 1799
+      162,  134,  160,  163,  152,  159,  161,  164,  163,  152,
+
+      166,  167,  164,  165,  165,  152,  152,  160,  161,  165,
+      168,  161,  169,  169,  170,  168,  171,  167,  172,  170,
+      166,  171,  173,  165,  174,  170,  175,  172,  176,  174,
+      177,  175,  178,  176,  179,  177,  181,  183,  182,  178,
+      184,  185,  187,  173,  182,  186,  188,  179,  184,  190,
+      186,  191,  193,  189,  185,  192,  181,  187,  189,  183,
+      192,  194,  197,  194,  198,  133,  188,  195,  196,  191,
+      191,  190,  193,  196,  195,  200,  198,  199,  199,  201,
+      200,  197,  203,  202,  201,  202,  204,  205,  206,  209,
+      210,  207,  208,  206,  203,  205,  207,  208,  200,  211,
+
+      212,  218,  202,  213,  209,  204,  213,  211,  210,  214,
+      214,  215,  216,  216,  215,  217,  217,  218,  219,  220,
+      221,  222,  220,  223,  221,  212,  224,  228,  223,  226,
+      222,  225,  225,  219,  226,  229,  227,  230,  231,  234,
+      224,  227,  232,  232,  236,  233,  235,  228,  233,  237,
+      235,  231,  238,  229,  239,  242,  241,  234,  230,  239,
+      240,  243,  236,  240,  238,  244,  245,  237,  241,  246,
+      243,  247,  242,  247,  247,  242,  248,  248,  250,  245,
+      249,  246,  251,  249,  252,  253,  244,  254,  254,  256,
+      256,  255,  257,  252,  253,  250,  255,  251,  250,  258,
+
+      259,  260,  262,  261,  258,  263,  264,  257,  261,  264,
+      263,  264,  259,  265,  266,  267,  270,  272,  268,  271,
+      269,  260,  262,  268,  267,  269,  273,  265,  274,  270,
+      266,  274,  272,  266,  275,  266,  278,  270,  277,  271,
+      273,  279,  281,  286,  284,  278,  282,  274,  275,  276,
+      280,  276,  276,  277,  283,  285,  287,  281,  286,  283,
+      289,  276,  279,  276,  276,  276,  282,  284,  276,  280,
+      290,  287,  288,  291,  292,  285,  293,  288,  291,  295,
+      289,  293,  294,  294,  290,  294,  296,  297,  301,  300,
+      292,  298,  299,  300,  299,  302,  306,  309,  303,  295,
+
+      306,  304,  296,  297,  131,  298,  301,  303,  305,  302,
+      304,  308,  307,  305,  318,  311,  308,  310,  309,  311,
+      303,  307,  312,  310,  313,  313,  314,  312,  315,  316,
+      316,  314,  317,  319,  320,  318,  321,  317,  322,  322,
+      321,  315,  319,  323,  324,  328,  320,  329,  323,  325,
+      325,  327,  327,  330,  331,  329,  332,  334,  335,  336,
+      343,  338,  330,  340,  337,  324,  328,  339,  332,  337,
+      338,  340,  339,  336,  331,  341,  342,  334,  335,  344,
+      341,  345,  343,  346,  347,  345,  348,  349,  353,  347,
+      351,  354,  352,  361,  342,  358,  354,  356,  346,  360,
+
+      344,  354,  348,  364,  353,  361,  349,  350,  350,  355,
+      351,  352,  355,  350,  360,  350,  362,  356,  357,  357,
+      358,  359,  359,  350,  363,  364,  366,  365,  367,  368,
+      369,  362,  365,  350,  369,  366,  370,  371,  372,  373,
+      374,  370,  376,  363,  368,  375,  375,  367,  374,  371,
+      377,  379,  373,  381,  376,  378,  372,  380,  378,  382,
+      380,  383,  377,  382,  382,  390,  379,  384,  384,  381,
+      385,  385,  381,  386,  383,  387,  387,  389,  386,  388,
+      388,  392,  389,  391,  393,  392,  390,  394,  391,  393,
+      395,  394,  396,  397,  398,  395,  399,  400,  397,  398,
+
+      400,  401,  402,  402,  403,  400,  404,  405,  406,  400,
+      399,  404,  396,  406,  407,  408,  409,  411,  408,  401,
+      409,  405,  403,  407,  410,  413,  412,  414,  415,  410,
+      411,  412,  416,  415,  417,  420,  421,  417,  416,  414,
+      418,  413,  409,  418,  419,  424,  422,  423,  424,  419,
+      421,  422,  423,  420,  425,  427,  426,  428,  429,  425,
+      426,  426,  430,  429,  431,  434,  438,  431,  427,  432,
+      428,  430,  436,  432,  432,  433,  435,  433,  435,  437,
+      439,  442,  431,  440,  434,  438,  441,  440,  443,  444,
+      436,  446,  447,  445,  450,  441,  442,  437,  445,  449,
+
+      439,  448,  448,  449,  444,  450,  443,  451,  452,  453,
+      446,  447,  451,  454,  455,  456,  457,  458,  460,  463,
+      456,  455,  458,  457,  452,  459,  454,  461,  453,  462,
+      459,  466,  464,  463,  461,  466,  460,  464,  462,  465,
+      467,  469,  465,  468,  468,  472,  471,  473,  474,  472,
+      469,  471,  468,  476,  475,  477,  483,  480,  486,  473,
+      488,  467,  475,  487,  488,  489,  474,  486,  536,  487,
+      489,  476,  480,  483,  491,  494,  492,  493,  494,  491,
+      477,  478,  495,  495,  496,  129,  478,  497,  497,  536,
+      478,  496,  498,  478,  492,  499,  499,  503,  501,  503,
+
+      478,  501,  493,  478,  490,  490,  490,  498,  490,  500,
+      502,  490,  504,  505,  500,  502,  490,  506,  507,  508,
+      508,  127,  490,  490,  509,  510,  507,  511,  512,  512,
+      513,  504,  511,  505,  516,  513,  506,  514,  515,  509,
+      516,  515,  514,  510,  517,  518,  519,  522,  521,  520,
+      523,  523,  517,  518,  520,  521,  525,  524,  526,  528,
+      529,  525,  531,  533,  519,  524,  522,  530,  528,  529,
+      530,  532,  532,  538,  540,  537,  531,  526,  533,  534,
+      537,  539,  534,  541,  542,  543,  544,  545,  546,  543,
+      534,  547,  548,  542,  538,  550,  540,  546,  548,  549,
+
+      549,  539,  551,  541,  544,  547,  545,  552,  553,  555,
+      554,  556,  552,  553,  554,  550,  551,  557,  558,  559,
+      559,  560,  557,  556,  561,  562,  560,  561,  555,  563,
+      564,  565,  566,  566,  568,  564,  567,  567,  570,  558,
+      569,  571,  563,  562,  569,  572,  573,  576,  575,  568,
+      577,  565,  575,  578,  582,  579,  585,  570,  582,  572,
+      579,  585,  576,  580,  583,  571,  573,  574,  578,  584,
+      574,  581,  574,  586,  584,  577,  574,  580,  574,  583,
+      587,  588,   68,  574,  584,  581,  589,  586,  574,  590,
+      591,  591,  589,  592,  590,  588,  591,  593,  591,  594,
+
+      595,  587,  593,  596,  596,  592,  597,  598,  599,  600,
+      602,  597,  595,  594,  602,  598,  591,  601,  601,  604,
+      605,  606,  599,  605,  604,  607,  608,  609,  600,  610,
+      611,  608,  609,  612,  613,  614,  615,  616,  607,  611,
+      606,  615,  617,  613,  618,  619,  621,  623,  610,  612,
+      619,  622,  627,  618,  614,  624,  617,  616,  625,  626,
+      624,  627,  623,  625,  626,  621,  628,  628,  629,  622,
+      630,  632,  635,  629,  636,  632,  632,  633,  633,  634,
+      637,  633,  634,  630,  638,  639,  635,  640,  639,  644,
+       62,  641,  642,  643,  636,  637,  641,  642,  647,  643,
+
+      645,  646,  646,  648,  638,  644,  645,  647,  640,  649,
+      650,  651,  649,  652,  653,  654,  657,  655,  659,  660,
+      654,  648,  655,  658,  663,  665,  658,  653,  650,  659,
+      651,  660,  661,  652,  657,  662,  666,  661,  669,  663,
+      662,  664,  664,  667,  665,  668,  671,  672,  670,  668,
+      666,  677,  675,  676,  678,  667,  669,  670,  679,  678,
+      682,  683,  680,  679,  681,  671,  675,  680,  676,  681,
+      685,  677,  672,  684,  682,  683,  686,  687,  684,  688,
+      689,  689,  690,  691,  692,  685,  693,  693,  694,  691,
+      695,  696,  687,  694,  698,  686,  697,  695,  688,  697,
+
+      690,  699,  700,  701,  692,  696,  702,  700,  703,  704,
+      699,  702,  698,  704,  705,  706,  707,  708,  710,  711,
+      709,  712,  701,  705,  708,  715,  714,  703,  713,  716,
+      706,  707,  709,  721,  713,  719,  720,  710,  716,  712,
+      711,  714,  718,  722,  720,  715,  723,  718,  722,  719,
+      724,  725,  726,  721,  724,  724,  727,  727,  723,  728,
+      729,  766,  730,  731,  731,  737,  726,  730,  732,  729,
+      725,  733,  728,  732,  734,  734,  733,  735,  736,  737,
+      738,  766,  739,  736,  740,  741,  735,  739,  742,  740,
+      741,  745,  742,  744,  744,  748,  747,  750,  738,  743,
+
+      747,  753,  745,  749,  752,  757,  750,  751,  743,  755,
+      748,  751,  751,  743,  754,  743,  756,  743,  752,  743,
+      753,  749,  754,  755,  758,  758,  759,  760,  760,  762,
+      757,  763,  762,  764,  756,  770,  763,  765,  765,  767,
+      767,  759,  768,  769,  769,  771,  772,  768,  773,  775,
+      771,   57,  764,  773,  772,  770,  774,  774,  776,  777,
+      779,  784,  783,  780,  776,  779,  777,  775,  780,  781,
+      782,  783,  785,  787,  781,  782,  786,  786,  788,  789,
+      784,  793,  790,  785,  789,  791,  792,  794,  794,  795,
+      796,  799,  797,  787,   52,  798,  790,  803,  792,  793,
+
+      798,  788,  790,  800,  811,  791,  803,  802,  800,  795,
+      797,  802,  802,  804,  799,  796,  805,  806,  805,  807,
+      810,  804,  808,  809,  807,  812,  808,  813,  814,  815,
+      811,  806,  813,  816,  809,  817,  818,  816,  819,  810,
+      822,  820,  821,  812,  824,  823,  814,  826,  829,  815,
+      823,  824,  819,  817,  829,  818,  820,  821,  825,  822,
+      827,  828,  830,  825,  839,  826,  831,  832,  833,  827,
+      847,  831,  832,  833,  834,  834,  828,  835,  835,  837,
+      837,  838,  839,  830,  840,  838,  841,  842,  843,  840,
+      844,  844,  843,  843,  845,  846,  847,  848,  849,  851,
+
+      841,  852,  850,  853,  849,  854,  842,  850,  856,  855,
+      857,  858,  858,  845,  846,   51,  848,  868,  851,  860,
+      852,  861,  853,  855,  854,  857,  861,  859,  862,  856,
+      859,  860,  862,  863,  864,  865,  866,  868,  866,  869,
+      869,  871,  866,  864,  870,  871,  863,  872,  865,  870,
+      875,  873,  877,  878,  878,  866,  873,  877,  879,  881,
+      881,  883,  883,  879,  886,  886,  885,  872,  875,  885,
+      887,  888,  889,  890,  891,  892,  892,  893,  890,  894,
+      894,  895,  896,  897,  901,  887,  889,  897,  898,  891,
+      899,  902,  905,  896,  906,  899,  888,  893,  903,  903,
+
+      907,  904,  901,  895,  908,  902,  904,  898,  909,  907,
+      909,  910,  905,  911,  906,  912,  910,  913,  911,  914,
+      915,  915,  913,  916,  908,  918,  919,  919,  920,  916,
+      921,  927,  923,  914,   46,  912,  922,  923,  924,  922,
+      920,  926,  922,  924,  925,  928,  926,  929,  928,  918,
+      921,  931,  929,  925,  922,  932,  927,  930,  930,  933,
+      934,  935,  936,  937,  940,  934,  935,  939,  937,  931,
+      938,  938,  939,  941,  932,  942,  943,  944,  945,  933,
+      947,  946,  940,  948,  949,  936,  946,  950,  957,  944,
+      943,  945,  954,  941,  953,  942,  952,  952,  949,  953,
+
+      947,  956,  955,  948,  957,  960,  960,  954,  950,  955,
+      956,  961,  962,  956,  961,  963,  964,  962,  965,  967,
+      966,  968,  969,  969,  970,  964,  968,  971,  967,  966,
+      972,  963,  966,  973,  974,  976,  977,  965,   41,  975,
+      971,  978,  978,  979,  970,  984,  980,  973,  972,  987,
+      974,  975,  981,  986,  977,  980,  983,  981,  986,  979,
+      976,  982,  982,  984,  988,  983,  989,  987,  983,  988,
+      990,  992,  989,  991,  993,  997,  982,  993,  991,  996,
+      998,  999, 1004,  993,  992, 1001, 1000,  996,  997, 1002,
+      990, 1000, 1005, 1010, 1006, 1011, 1005, 1009,  998, 1006,
+
+      999, 1001, 1004, 1007, 1008, 1013, 1009, 1002, 1007, 1008,
+     1011, 1012, 1012, 1014, 1015, 1016, 1010, 1017, 1018, 1013,
+     1014, 1019, 1020, 1018, 1021,   14, 1015, 1016, 1022, 1022,
+     1021, 1023, 1026, 1019, 1023, 1028, 1017, 1024, 1024, 1029,
+     1020, 1026, 1027, 1027, 1029, 1030, 1031, 1028, 1032, 1035,
+     1033, 1034, 1036, 1039, 1030, 1033, 1037, 1037, 1031, 1038,
+     1034, 1040, 1041, 1032, 1038, 1042, 1042, 1036, 1043, 1035,
+     1044, 1044,   13, 1034, 1039, 1045, 1045, 1046, 1047, 1051,
+     1040, 1046, 1041, 1047, 1048, 1050, 1052, 1048, 1043, 1053,
+     1050, 1052, 1054, 1054, 1055, 1055, 1056, 1051, 1057, 1058,
+
+     1059, 1056, 1060, 1061, 1063, 1064, 1066, 1060, 1065, 1065,
+     1057, 1057, 1057, 1068, 1053, 1067, 1067, 1057, 1063, 1058,
+     1059, 1070, 1072, 1061, 1071, 1071, 1064, 1073, 1075, 1074,
+     1070, 1077, 1066, 1068, 1073, 1076, 1076, 1072, 1074, 1078,
+     1080, 1081, 1082, 1083, 1084, 1080, 1081, 1085, 1087, 1084,
+     1083, 1088, 1085, 1087, 1075, 1078, 1089, 1077, 1086, 1086,
+     1088, 1090, 1082, 1091, 1092, 1093, 1094, 1092, 1095, 1095,
+     1096, 1097, 1098, 1099, 1105, 1091, 1089, 1100, 1102, 1099,
+     1090, 1101, 1101, 1093, 1104, 1096, 1100, 1098, 1105, 1102,
+     1097, 1110, 1094, 1106, 1102, 1103, 1103, 1108, 1106, 1107,
+
+     1107, 1108, 1108, 1109, 1111, 1104, 1112, 1113, 1109, 1114,
+     1115, 1112, 1116, 1114, 1118, 1117, 1111, 1110, 1119, 1113,
+     1117, 1120, 1115, 1119, 1122, 1123, 1123, 1122, 1124, 1124,
+     1125, 1125, 1126, 1120, 1127, 1129, 1118, 1116, 1128, 1130,
+     1127, 1129, 1132, 1128, 1134, 1136, 1138, 1132, 1130, 1137,
+     1137, 1139, 1126, 1140, 1141, 1142, 1134, 1136, 1143, 1142,
+     1139, 1145, 1144, 1143, 1147, 1147, 1138, 1144, 1148, 1149,
+     1150, 1140, 1155, 1141, 1156, 1145, 1147, 1157, 1149, 1150,
+     1152, 1152, 1157, 1158, 1159, 1159, 1148, 1155, 1156, 1160,
+     1163, 1160, 1161, 1161, 1164, 1165, 1165, 1163, 1166, 1167,
+
+     1158, 1168, 1171, 1169, 1170, 1173, 1172, 1166, 1177, 1174,
+     1177, 1183, 1176, 1168, 1164, 1169, 1170, 1176, 1178, 1181,
+     1167, 1172, 1179, 1182, 1182, 1173, 1188, 1184, 1171, 1174,
+     1186, 1179, 1184, 1181, 1187, 1186, 1178, 1183, 1185, 1187,
+     1185, 1189, 1190, 1191, 1188, 1192, 1193, 1190, 1191, 1195,
+     1196, 1197, 1197, 1200, 1193, 1198, 1198, 1199, 1192,    0,
+     1201, 1189, 1202, 1204, 1196, 1201, 1208, 1202, 1195, 1203,
+     1205, 1203, 1199, 1200, 1206, 1204, 1206, 1207, 1208, 1205,
+     1210, 1213, 1205, 1211, 1214, 1210, 1207, 1215, 1211, 1217,
+     1219, 1220, 1221, 1222, 1213, 1217, 1219, 1223, 1223, 1224,
+
+     1225, 1225, 1222, 1215, 1214, 1226, 1220, 1227, 1224, 1228,
+     1229, 1227, 1230, 1230, 1228, 1232, 1236, 1221, 1231, 1235,
+     1235, 1237, 1237, 1229, 1226, 1236, 1231, 1238, 1238, 1239,
+     1240, 1241, 1242, 1242, 1244, 1232, 1241, 1245, 1246, 1247,
+     1248, 1239, 1245, 1253, 1249, 1248, 1255, 1250, 1240, 1251,
+     1251, 1252, 1254, 1258, 1247, 1252, 1256, 1254, 1253, 1244,
+     1259, 1246, 1249, 1250, 1260, 1261, 1262, 1263, 1265, 1265,
+     1266, 1268, 1255, 1266, 1267, 1256, 1258, 1269, 1262, 1270,
+     1270, 1271, 1271, 1260, 1259, 1268, 1261, 1267, 1263, 1273,
+     1269, 1272, 1272, 1274, 1275, 1275, 1276, 1276, 1277, 1277,
+
+     1278, 1279, 1279, 1281, 1273, 1283, 1274, 1280, 1280, 1285,
+     1283, 1284, 1284, 1286, 1286, 1287, 1292, 1288, 1289, 1278,
+     1294, 1289, 1281, 1288, 1290, 1290, 1291, 1291, 1285, 1293,
+     1295, 1295, 1297, 1287, 1298, 1292, 1299, 1300, 1309, 1294,
+     1290, 1300, 1301, 1301, 1293, 1302, 1303, 1303, 1304, 1305,
+     1305, 1299, 1297, 1306, 1307, 1308, 1310, 1298, 1311, 1314,
+     1308, 1313, 1306, 1309, 1302, 1312, 1307, 1316, 1314, 1310,
+     1312, 1315, 1317, 1320, 1304, 1322, 1313, 1317, 1318, 1311,
+     1315, 1316, 1318, 1324, 1322, 1323, 1323, 1327, 1324, 1325,
+     1325, 1328, 1330, 1320, 1332, 1334, 1333, 1332, 1325, 1338,
+
+     1328, 1333, 1327, 1341, 1330, 1335, 1335, 1337, 1337, 1339,
+     1339, 1340, 1342, 1338, 1349, 1334, 1345, 1341, 1343, 1343,
+     1345, 1346, 1348, 1340, 1346, 1347, 1347, 1348, 1350, 1351,
+     1352, 1342, 1353, 1351, 1349, 1354, 1357, 1353, 1355, 1360,
+     1354, 1358, 1350, 1359, 1355, 1364, 1358, 1360, 1359, 1361,
+     1352, 1361, 1357, 1365, 1365, 1369, 1369, 1372, 1379, 1364,
+     1373, 1373, 1372, 1375, 1375, 1377, 1378, 1378, 1380, 1383,
+     1377, 1381, 1384, 1387, 1379, 1388, 1381, 1385, 1385, 1389,
+     1388, 1390, 1387, 1401, 1384, 1392, 1392, 1394, 1383, 1395,
+     1380, 1395, 1394, 1396, 1397, 1401, 1390, 1389, 1402, 1397,
+
+     1398, 1398, 1399, 1399, 1400, 1400, 1403, 1396, 1404, 1405,
+     1406, 1407, 1408, 1408, 1409, 1406, 1402, 1410, 1403, 1411,
+     1404, 1405, 1412, 1409, 1413, 1416, 1414, 1415, 1417, 1418,
+     1423, 1407, 1425, 1417, 1418, 1412, 1419, 1419, 1424, 1411,
+     1414, 1420, 1420, 1410, 1426, 1415, 1427, 1416, 1413, 1428,
+     1423, 1435, 1429, 1433, 1425, 1427, 1424, 1430, 1430, 1432,
+     1432, 1434, 1433, 1436, 1426, 1437, 1435, 1439, 1434, 1428,
+     1429, 1438, 1440, 1440, 1441, 1442, 1443, 1444, 1446, 1441,
+     1445, 1436, 1448, 1437, 1451, 1445, 1439, 1438, 1454, 1452,
+     1455, 1443, 1452, 1442, 1453, 1453, 1444, 1459, 1446, 1456,
+
+     1456, 1448, 1457, 1454, 1451, 1460, 1457, 1462, 1455, 1460,
+     1461, 1461, 1459, 1464, 1464, 1465, 1466, 1466, 1467, 1467,
+     1462, 1471, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1479,
+     1474, 1475, 1480, 1473, 1465, 1481, 1477, 1480, 1482, 1492,
+     1481, 1483, 1483, 1492, 1479, 1472, 1476, 1484, 1484, 1485,
+     1486, 1487, 1487, 1482, 1485, 1486, 1488, 1488, 1491, 1493,
+     1494, 1495, 1496, 1491, 1493, 1498, 1497, 1501, 1502, 1494,
+     1496, 1497, 1500, 1503, 1504, 1500, 1495, 1498, 1505, 1505,
+     1506, 1502, 1503, 1504, 1508, 1501, 1509, 1513, 1510, 1506,
+     1511, 1511, 1512, 1514, 1514, 1516, 1513, 1515, 1521, 1518,
+
+     1516, 1519, 1521, 1508, 1522, 1515, 1509, 1510, 1518, 1523,
+     1530, 1512, 1525, 1525, 1519, 1527, 1527, 1536, 1522, 1531,
+     1531,    0, 1532, 1537, 1523, 1532, 1533, 1533, 1534, 1534,
+     1530, 1535, 1535, 1538, 1547, 1536, 1543, 1537, 1538, 1539,
+     1539, 1540, 1543, 1544, 1548, 1540, 1549, 1550, 1544, 1548,
+     1553, 1547, 1547, 1554, 1551, 1552, 1552, 1555, 1556, 1556,
+     1560, 1554, 1557, 1557, 1549, 1558, 1559, 1550, 1551, 1553,
+     1561, 1559, 1563, 1562, 1564, 1569, 1555, 1566, 1566, 1572,
+     1560, 1558, 1562, 1567, 1570, 1570, 1567, 1571, 1572, 1573,
+     1575, 1571, 1563, 1569, 1564, 1579, 1561, 1574, 1574, 1576,
+
+     1578, 1580, 1590, 1575, 1573, 1584, 1586, 1579, 1576, 1578,
+     1584, 1585, 1585, 1588, 1589, 1586, 1591, 1593, 1588, 1592,
+     1594, 1595, 1590, 1589, 1592, 1594, 1580, 1596, 1596, 1598,
+     1599, 1600, 1600, 1602, 1601, 1593, 1603, 1591, 1601, 1604,
+     1607, 1605, 1602, 1608, 1608, 1599, 1595, 1615, 1598, 1605,
+     1606, 1609, 1603, 1611, 1611, 1606, 1612, 1616, 1604, 1614,
+     1614, 1612, 1618, 1618, 1619, 1620, 1607, 1615, 1621, 1621,
+     1609, 1622, 1622, 1623, 1624, 1625, 1626, 1626, 1619, 1627,
+     1616, 1628, 1632, 1629, 1630, 1631, 1624, 1620, 1629, 1636,
+     1631, 1627, 1623, 1633, 1633, 1625, 1635, 1635, 1639, 1632,
+
+     1632, 1628, 1638, 1630, 1640, 1641, 1641, 1638, 1636, 1640,
+     1642, 1642, 1639, 1643, 1643, 1644, 1646, 1646, 1648, 1648,
+     1644, 1650, 1650, 1651, 1652, 1653, 1653, 1654, 1657, 1658,
+     1658, 1662, 1654, 1652, 1659, 1661, 1657, 1651, 1663, 1659,
+     1661, 1664, 1665, 1662, 1666, 1667, 1670, 1671, 1671, 1673,
+     1667, 1672, 1672, 1673, 1677, 1677, 1663, 1664, 1679, 1665,
+     1665, 1682, 1679, 1681, 1681, 1666, 1670, 1684, 1684, 1685,
+     1687, 1688, 1688, 1689, 1689, 1682, 1690, 1691, 1692, 1695,
+     1693, 1694, 1696, 1696, 1685, 1693, 1694,    0, 1687, 1699,
+     1699, 1705, 1691, 1701, 1701, 1703, 1703, 1709, 1695, 1692,
+
+     1710, 1690, 1709, 1705, 1706, 1706, 1711, 1712, 1714, 1713,
+     1720, 1711, 1719, 1722, 1710, 1721, 1719, 1723, 1724, 1725,
+     1728, 1726, 1727, 1727, 1714, 1731, 1712, 1713, 1721, 1728,
+     1720, 1732, 1722, 1729, 1724, 1723, 1726, 1730, 1729, 1734,
+     1733, 1736, 1730, 1737, 1725, 1733, 1732, 1738, 1741, 1739,
+     1731, 1740, 1738, 1734, 1739, 1742, 1736, 1743, 1744, 1745,
+     1746, 1741, 1737, 1747, 1748, 1740, 1750, 1751, 1751, 1748,
+     1749, 1743, 1745, 1746, 1742, 1749, 1752, 1744, 1753, 1754,
+     1755, 1752, 1747, 1753, 1754, 1750, 1756, 1757, 1757, 1758,
+     1759, 1756, 1760, 1761, 1762, 1763, 1758, 1765, 1761, 1755,
+
+     1766, 1767, 1765, 1768, 1769, 1769, 1771, 1770, 1763, 1759,
+        0, 1760, 1770, 1762, 1772, 1772, 1768, 1773, 1773, 1766,
+     1767, 1774, 1775, 1776, 1778, 1771, 1774, 1777, 1777, 1775,
+     1779, 1778, 1780, 1781, 1782, 1784, 1785, 1779, 1781, 1786,
+     1784, 1785, 1776, 1787, 1788, 1788, 1789, 1790, 1791, 1791,
+     1793, 1780, 1802, 1782, 1792, 1792, 1803, 1793, 1786, 1794,
+     1794, 1796, 1787, 1795, 1795, 1789, 1790, 1798, 1796, 1801,
+        0, 1802, 1798,    0, 1801, 1803, 1804, 1804, 1805, 1805,
+     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1810, 1810, 1810,
+     1810, 1810, 1810, 1810, 1811, 1811, 1811, 1811, 1811, 1811,
+
+     1811, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1813, 1813,
+     1813, 1813, 1813, 1813, 1813, 1815, 1815,    0, 1815, 1815,
+     1815, 1815, 1816, 1816,    0,    0,    0, 1816, 1816, 1817,
+     1817,    0,    0, 1817,    0, 1817, 1818,    0,    0,    0,
+        0,    0, 1818, 1819, 1819,    0,    0,    0, 1819, 1819,
+     1820,    0,    0,    0,    0,    0, 1820, 1821, 1821,    0,
+     1821, 1821, 1821, 1821, 1822, 1822,    0, 1822, 1822, 1822,
+     1822, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+     1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+     1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+
+     1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808,
+     1808
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2027,7 +2032,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 2029 "<stdout>"
+#line 2034 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2241,7 +2246,7 @@ YY_DECL
        {
 #line 201 "./util/configlexer.lex"
 
-#line 2243 "<stdout>"
+#line 2248 "<stdout>"
 
        while ( 1 )             /* loops until end-of-file is reached */
                {
@@ -2274,13 +2279,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 >= 1800 )
+                               if ( yy_current_state >= 1809 )
                                        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] != 3568 );
+               while ( yy_base[yy_current_state] != 3572 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2470,675 +2475,680 @@ YY_RULE_SETUP
 case 33:
 YY_RULE_SETUP
 #line 237 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CHROOT) }
+{ YDVAR(1, VAR_IP_FREEBIND) }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 238 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USERNAME) }
+{ YDVAR(1, VAR_CHROOT) }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 239 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DIRECTORY) }
+{ YDVAR(1, VAR_USERNAME) }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 240 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOGFILE) }
+{ YDVAR(1, VAR_DIRECTORY) }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 241 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PIDFILE) }
+{ YDVAR(1, VAR_LOGFILE) }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 242 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ROOT_HINTS) }
+{ YDVAR(1, VAR_PIDFILE) }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 243 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
+{ YDVAR(1, VAR_ROOT_HINTS) }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 244 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
+{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 245 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 246 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
+{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 247 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 248 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
+{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 249 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_TTL) }
+{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 250 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_TTL) }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 251 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MIN_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 252 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_HOST_TTL) }
+{ YDVAR(1, VAR_CACHE_MIN_TTL) }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 253 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_LAME_TTL) }
+{ YDVAR(1, VAR_INFRA_HOST_TTL) }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 254 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
+{ YDVAR(1, VAR_INFRA_LAME_TTL) }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 255 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
+{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 256 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
+{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 257 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
+{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 258 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
+{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 259 "./util/configlexer.lex"
-{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
+{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 260 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DELAY_CLOSE) }
+{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 261 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
+{ YDVAR(1, VAR_DELAY_CLOSE) }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 262 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
+{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 263 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
+{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 264 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_GLUE) }
+{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 265 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
+{ YDVAR(1, VAR_HARDEN_GLUE) }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 266 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
+{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 267 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
+{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 268 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
+{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 269 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 270 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CAPS_WHITELIST) }
+{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 271 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_CAPS_WHITELIST) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 272 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 273 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 274 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 275 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 276 "./util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 277 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 278 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 279 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 280 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 281 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_FIRST) }
+{ YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 282 "./util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_FIRST) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 283 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 284 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 285 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_FIRST) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 286 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_FORWARD_FIRST) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 287 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 288 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 289 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 290 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 291 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 292 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 293 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 294 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 295 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 296 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 297 "./util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 298 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 299 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 300 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 301 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 302 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 303 "./util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 304 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 305 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 306 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 307 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 308 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 309 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 310 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 311 "./util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 313 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 312 "./util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 314 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 315 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 316 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 317 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 318 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 319 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 320 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 321 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 322 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 323 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 324 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 325 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 326 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 327 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 328 "./util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 329 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 330 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 331 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 332 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 333 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 334 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 335 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 336 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 337 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 338 "./util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 339 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 340 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 341 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 342 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 343 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 139:
 YY_RULE_SETUP
 #line 344 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 140:
 YY_RULE_SETUP
 #line 345 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 141:
 YY_RULE_SETUP
 #line 346 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 142:
 YY_RULE_SETUP
 #line 347 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 143:
 YY_RULE_SETUP
 #line 348 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 144:
 YY_RULE_SETUP
 #line 349 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 350 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 351 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 352 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 354 "./util/configlexer.lex"
+#line 353 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 356 "./util/configlexer.lex"
+#line 355 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 358 "./util/configlexer.lex"
+#line 357 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 360 "./util/configlexer.lex"
+#line 359 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 362 "./util/configlexer.lex"
+#line 361 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 364 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+#line 363 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 154:
 YY_RULE_SETUP
 #line 365 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_RATELIMIT) }
        YY_BREAK
 case 155:
 YY_RULE_SETUP
 #line 366 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
        YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 367 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
        YY_BREAK
 case 157:
 YY_RULE_SETUP
 #line 368 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
        YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 369 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
        YY_BREAK
 case 159:
-/* rule 159 can match eol */
 YY_RULE_SETUP
 #line 370 "./util/configlexer.lex"
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+       YY_BREAK
+case 160:
+/* rule 160 can match eol */
+YY_RULE_SETUP
+#line 371 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 160:
+case 161:
 YY_RULE_SETUP
-#line 373 "./util/configlexer.lex"
+#line 374 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 374 "./util/configlexer.lex"
+#line 375 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 379 "./util/configlexer.lex"
+#line 380 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 162:
-/* rule 162 can match eol */
+case 163:
+/* rule 163 can match eol */
 YY_RULE_SETUP
-#line 380 "./util/configlexer.lex"
+#line 381 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 382 "./util/configlexer.lex"
+#line 383 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3151,34 +3161,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 164:
+case 165:
 YY_RULE_SETUP
-#line 394 "./util/configlexer.lex"
+#line 395 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 395 "./util/configlexer.lex"
+#line 396 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 400 "./util/configlexer.lex"
+#line 401 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 166:
-/* rule 166 can match eol */
+case 167:
+/* rule 167 can match eol */
 YY_RULE_SETUP
-#line 401 "./util/configlexer.lex"
+#line 402 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 167:
+case 168:
 YY_RULE_SETUP
-#line 403 "./util/configlexer.lex"
+#line 404 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3191,38 +3201,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 415 "./util/configlexer.lex"
+#line 416 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 417 "./util/configlexer.lex"
+#line 418 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 169:
-YY_RULE_SETUP
-#line 421 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 170:
-/* rule 170 can match eol */
 YY_RULE_SETUP
 #line 422 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 171:
+/* rule 171 can match eol */
 YY_RULE_SETUP
 #line 423 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 172:
 YY_RULE_SETUP
 #line 424 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 173:
+YY_RULE_SETUP
+#line 425 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3230,27 +3240,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 429 "./util/configlexer.lex"
+#line 430 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 433 "./util/configlexer.lex"
+#line 434 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 174:
-/* rule 174 can match eol */
+case 175:
+/* rule 175 can match eol */
 YY_RULE_SETUP
-#line 434 "./util/configlexer.lex"
+#line 435 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 436 "./util/configlexer.lex"
+#line 437 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3260,7 +3270,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 442 "./util/configlexer.lex"
+#line 443 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3272,33 +3282,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 453 "./util/configlexer.lex"
+#line 454 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 457 "./util/configlexer.lex"
+#line 458 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 461 "./util/configlexer.lex"
+#line 462 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 465 "./util/configlexer.lex"
+#line 466 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3300 "<stdout>"
+#line 3310 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -3589,7 +3599,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 >= 1800 )
+                       if ( yy_current_state >= 1809 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3617,11 +3627,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 >= 1800 )
+               if ( yy_current_state >= 1809 )
                        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 == 1799);
+       yy_is_jam = (yy_current_state == 1808);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4254,7 +4264,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 465 "./util/configlexer.lex"
+#line 466 "./util/configlexer.lex"
 
 
 
index 6fbf0a839c81193aeb6ec382b2462aa044d4e8d3..8c69467c92517fb7c5533355bdf78ac3e700abd7 100644 (file)
@@ -234,6 +234,7 @@ so-rcvbuf{COLON}            { YDVAR(1, VAR_SO_RCVBUF) }
 so-sndbuf{COLON}               { YDVAR(1, VAR_SO_SNDBUF) }
 so-reuseport{COLON}            { YDVAR(1, VAR_SO_REUSEPORT) }
 ip-transparent{COLON}          { YDVAR(1, VAR_IP_TRANSPARENT) }
+ip-freebind{COLON}             { YDVAR(1, VAR_IP_FREEBIND) }
 chroot{COLON}                  { YDVAR(1, VAR_CHROOT) }
 username{COLON}                        { YDVAR(1, VAR_USERNAME) }
 directory{COLON}               { YDVAR(1, VAR_DIRECTORY) }
index 3b0451229218c6dd4c3b5fa123798641c62690b3..fa513753c9d854e2caa17850d000fd9ce0028aac 100644 (file)
@@ -286,7 +286,8 @@ extern int yydebug;
     VAR_CAPS_WHITELIST = 417,
     VAR_CACHE_MAX_NEGATIVE_TTL = 418,
     VAR_PERMIT_SMALL_HOLDDOWN = 419,
-    VAR_QNAME_MINIMISATION = 420
+    VAR_QNAME_MINIMISATION = 420,
+    VAR_IP_FREEBIND = 421
   };
 #endif
 /* Tokens.  */
@@ -453,6 +454,7 @@ extern int yydebug;
 #define VAR_CACHE_MAX_NEGATIVE_TTL 418
 #define VAR_PERMIT_SMALL_HOLDDOWN 419
 #define VAR_QNAME_MINIMISATION 420
+#define VAR_IP_FREEBIND 421
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -463,7 +465,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 467 "util/configparser.c" /* yacc.c:355  */
+#line 469 "util/configparser.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -480,7 +482,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 484 "util/configparser.c" /* yacc.c:358  */
+#line 486 "util/configparser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -722,21 +724,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   310
+#define YYLAST   312
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  166
+#define YYNTOKENS  167
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  171
+#define YYNNTS  172
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  327
+#define YYNRULES  329
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  482
+#define YYNSTATES  485
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   420
+#define YYMAXUTOK   421
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -787,7 +789,7 @@ static const yytype_uint8 yytranslate[] =
      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
+     165,   166
 };
 
 #if YYDEBUG
@@ -807,26 +809,26 @@ static const yytype_uint16 yyrline[] =
      181,   181,   182,   182,   182,   183,   183,   183,   184,   184,
      184,   185,   185,   185,   186,   186,   187,   187,   188,   188,
      189,   189,   190,   190,   190,   191,   191,   192,   192,   193,
-     193,   194,   194,   196,   208,   209,   210,   210,   210,   210,
-     210,   212,   224,   225,   226,   226,   226,   226,   228,   237,
-     246,   257,   266,   275,   284,   297,   312,   321,   330,   339,
-     348,   357,   366,   375,   384,   393,   402,   411,   420,   429,
-     438,   445,   452,   461,   470,   484,   493,   502,   509,   516,
-     523,   531,   538,   545,   552,   559,   567,   575,   583,   590,
-     597,   606,   615,   622,   629,   637,   645,   655,   665,   678,
-     689,   697,   710,   719,   728,   737,   747,   757,   765,   778,
-     787,   795,   804,   812,   825,   834,   841,   851,   861,   871,
-     881,   891,   901,   911,   921,   928,   935,   942,   951,   960,
-     969,   976,   986,  1003,  1010,  1028,  1041,  1054,  1063,  1072,
-    1081,  1090,  1100,  1110,  1119,  1128,  1135,  1144,  1153,  1162,
-    1171,  1179,  1192,  1200,  1224,  1231,  1246,  1256,  1266,  1273,
-    1280,  1289,  1298,  1306,  1319,  1332,  1345,  1354,  1364,  1374,
-    1381,  1388,  1397,  1407,  1417,  1424,  1431,  1440,  1445,  1446,
-    1447,  1447,  1447,  1448,  1448,  1448,  1449,  1449,  1451,  1461,
-    1470,  1477,  1487,  1494,  1501,  1508,  1515,  1520,  1521,  1522,
-    1522,  1523,  1523,  1524,  1524,  1525,  1526,  1527,  1528,  1529,
-    1530,  1532,  1540,  1547,  1555,  1563,  1570,  1577,  1586,  1595,
-    1604,  1613,  1622,  1631,  1636,  1637,  1638,  1640
+     193,   194,   194,   195,   197,   209,   210,   211,   211,   211,
+     211,   211,   213,   225,   226,   227,   227,   227,   227,   229,
+     238,   247,   258,   267,   276,   285,   298,   313,   322,   331,
+     340,   349,   358,   367,   376,   385,   394,   403,   412,   421,
+     430,   439,   446,   453,   462,   471,   485,   494,   503,   510,
+     517,   524,   532,   539,   546,   553,   560,   568,   576,   584,
+     591,   598,   607,   616,   623,   630,   638,   646,   656,   666,
+     676,   689,   700,   708,   721,   730,   739,   748,   758,   768,
+     776,   789,   798,   806,   815,   823,   836,   845,   852,   862,
+     872,   882,   892,   902,   912,   922,   932,   939,   946,   953,
+     962,   971,   980,   987,   997,  1014,  1021,  1039,  1052,  1065,
+    1074,  1083,  1092,  1101,  1111,  1121,  1130,  1139,  1146,  1155,
+    1164,  1173,  1182,  1190,  1203,  1211,  1235,  1242,  1257,  1267,
+    1277,  1284,  1291,  1300,  1309,  1317,  1330,  1343,  1356,  1365,
+    1375,  1385,  1392,  1399,  1408,  1418,  1428,  1435,  1442,  1451,
+    1456,  1457,  1458,  1458,  1458,  1459,  1459,  1459,  1460,  1460,
+    1462,  1472,  1481,  1488,  1498,  1505,  1512,  1519,  1526,  1531,
+    1532,  1533,  1533,  1534,  1534,  1535,  1535,  1536,  1537,  1538,
+    1539,  1540,  1541,  1543,  1551,  1558,  1566,  1574,  1581,  1588,
+    1597,  1606,  1615,  1624,  1633,  1642,  1647,  1648,  1649,  1651
 };
 #endif
 
@@ -892,10 +894,10 @@ static const char *const yytname[] =
   "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_RATELIMIT_FOR_DOMAIN",
   "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_RATELIMIT_FACTOR",
   "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
-  "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", "$accept",
-  "toplevelvars", "toplevelvar", "serverstart", "contents_server",
-  "content_server", "stubstart", "contents_stub", "content_stub",
-  "forwardstart", "contents_forward", "content_forward",
+  "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", "VAR_IP_FREEBIND",
+  "$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",
@@ -914,31 +916,31 @@ static const char *const yytname[] =
   "server_domain_insecure", "server_hide_identity", "server_hide_version",
   "server_identity", "server_version", "server_so_rcvbuf",
   "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent",
-  "server_edns_buffer_size", "server_msg_buffer_size",
-  "server_msg_cache_size", "server_msg_cache_slabs",
-  "server_num_queries_per_thread", "server_jostle_timeout",
-  "server_delay_close", "server_unblock_lan_zones",
-  "server_insecure_lan_zones", "server_rrset_cache_size",
-  "server_rrset_cache_slabs", "server_infra_host_ttl",
-  "server_infra_lame_ttl", "server_infra_cache_numhosts",
-  "server_infra_cache_lame_size", "server_infra_cache_slabs",
-  "server_infra_cache_min_rtt", "server_target_fetch_policy",
-  "server_harden_short_bufsize", "server_harden_large_queries",
-  "server_harden_glue", "server_harden_dnssec_stripped",
-  "server_harden_below_nxdomain", "server_harden_referral_path",
-  "server_harden_algo_downgrade", "server_use_caps_for_id",
-  "server_caps_whitelist", "server_private_address",
-  "server_private_domain", "server_prefetch", "server_prefetch_key",
-  "server_unwanted_reply_threshold", "server_do_not_query_address",
-  "server_do_not_query_localhost", "server_access_control",
-  "server_module_conf", "server_val_override_date",
-  "server_val_sig_skew_min", "server_val_sig_skew_max",
-  "server_cache_max_ttl", "server_cache_max_negative_ttl",
-  "server_cache_min_ttl", "server_bogus_ttl",
-  "server_val_clean_additional", "server_val_permissive_mode",
-  "server_ignore_cd_flag", "server_val_log_level",
-  "server_val_nsec3_keysize_iterations", "server_add_holddown",
-  "server_del_holddown", "server_keep_missing",
+  "server_ip_freebind", "server_edns_buffer_size",
+  "server_msg_buffer_size", "server_msg_cache_size",
+  "server_msg_cache_slabs", "server_num_queries_per_thread",
+  "server_jostle_timeout", "server_delay_close",
+  "server_unblock_lan_zones", "server_insecure_lan_zones",
+  "server_rrset_cache_size", "server_rrset_cache_slabs",
+  "server_infra_host_ttl", "server_infra_lame_ttl",
+  "server_infra_cache_numhosts", "server_infra_cache_lame_size",
+  "server_infra_cache_slabs", "server_infra_cache_min_rtt",
+  "server_target_fetch_policy", "server_harden_short_bufsize",
+  "server_harden_large_queries", "server_harden_glue",
+  "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
+  "server_harden_referral_path", "server_harden_algo_downgrade",
+  "server_use_caps_for_id", "server_caps_whitelist",
+  "server_private_address", "server_private_domain", "server_prefetch",
+  "server_prefetch_key", "server_unwanted_reply_threshold",
+  "server_do_not_query_address", "server_do_not_query_localhost",
+  "server_access_control", "server_module_conf",
+  "server_val_override_date", "server_val_sig_skew_min",
+  "server_val_sig_skew_max", "server_cache_max_ttl",
+  "server_cache_max_negative_ttl", "server_cache_min_ttl",
+  "server_bogus_ttl", "server_val_clean_additional",
+  "server_val_permissive_mode", "server_ignore_cd_flag",
+  "server_val_log_level", "server_val_nsec3_keysize_iterations",
+  "server_add_holddown", "server_del_holddown", "server_keep_missing",
   "server_permit_small_holddown", "server_key_cache_size",
   "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
   "server_local_data", "server_local_data_ptr", "server_minimal_responses",
@@ -986,7 +988,7 @@ static const yytype_uint16 yytoknum[] =
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
-     415,   416,   417,   418,   419,   420
+     415,   416,   417,   418,   419,   420,   421
 };
 # endif
 
@@ -1007,18 +1009,18 @@ static const yytype_int16 yypact[] =
      -81,   118,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -12,    39,    47,    40,
       36,   -80,    18,    19,    20,    24,    25,    26,    69,    72,
-      73,    74,    75,    80,   109,   120,   129,   130,   144,   145,
-     146,   147,   149,   150,   151,   152,   153,   155,   156,   157,
-     158,   159,   161,   162,   163,   164,   165,   166,   180,   181,
-     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
+      73,    74,    75,    80,   109,   120,   129,   130,   145,   146,
+     147,   149,   150,   151,   152,   153,   155,   156,   157,   158,
+     159,   161,   162,   163,   164,   165,   166,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
+     245,   246,   247,   248,   250,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     266,   267,   268,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
@@ -1030,29 +1032,29 @@ static const yytype_int16 yypact[] =
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   267,   268,   269,   270,   271,   -81,   -81,
-     -81,   -81,   -81,   -81,   272,   273,   274,   275,   -81,   -81,
-     -81,   -81,   -81,   276,   277,   278,   279,   280,   281,   282,
-     283,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   296,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   269,   270,   271,   272,   273,
+     -81,   -81,   -81,   -81,   -81,   -81,   274,   275,   276,   277,
+     -81,   -81,   -81,   -81,   -81,   278,   279,   280,   281,   282,
+     283,   284,   285,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   286,   287,   288,   289,   290,   291,   292,   293,
+     294,   295,   296,   297,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   -81,   -81,   298,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   297,   298,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   299,   300,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   299,   300,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   301,   302,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81
+     -81,   -81,   -81,   -81,   -81
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1060,8 +1062,8 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    10,   133,   141,   277,   323,   296,     3,
-      12,   135,   143,   279,   298,   325,     4,     5,     6,     8,
+       2,     0,     1,    10,   134,   142,   279,   325,   298,     3,
+      12,   136,   144,   281,   300,   327,     4,     5,     6,     8,
        9,     7,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1074,41 +1076,41 @@ static const yytype_uint16 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    11,    13,    14,    72,    75,    84,    15,    23,
-      63,    16,    76,    77,    34,    56,    71,    17,    18,    19,
-      20,    21,    22,   106,   107,   108,   109,   110,    73,    62,
-      88,   105,    24,    25,    26,    27,    28,    64,    78,    79,
-      94,    50,    60,    51,    89,    44,    45,    46,    47,    98,
-     102,   114,   122,    99,    57,    29,    30,    31,    86,   115,
-     116,   117,    32,    33,    35,    36,    38,    39,    37,   120,
-      40,    41,    42,    48,    67,   103,    81,   121,    74,   129,
-      82,    83,   100,   101,    87,    43,    65,    68,    49,    52,
-      90,    91,    66,   130,    92,    53,    54,    55,   104,    93,
-      61,    95,    96,    97,   131,    58,    59,    80,    69,    70,
-      85,   111,   112,   113,   118,   119,   123,   125,   124,   126,
-     127,   128,   132,     0,     0,     0,     0,     0,   134,   136,
-     137,   138,   140,   139,     0,     0,     0,     0,   142,   144,
-     145,   146,   147,     0,     0,     0,     0,     0,     0,     0,
-       0,   278,   280,   282,   281,   287,   283,   284,   285,   286,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   297,   299,   300,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,   310,     0,   324,   326,   149,   148,
-     153,   156,   154,   162,   163,   164,   165,   166,   167,   177,
-     178,   179,   180,   181,   200,   201,   202,   207,   208,   159,
-     209,   210,   213,   211,   212,   215,   216,   217,   230,   190,
-     191,   192,   193,   218,   233,   186,   188,   234,   240,   241,
-     242,   160,   199,   250,   251,   187,   245,   174,   155,   182,
-     231,   237,   219,     0,     0,   254,   161,   150,   173,   223,
-     151,   157,   158,   183,   184,   252,   221,   225,   226,   152,
-     255,   203,   229,   175,   189,   235,   236,   239,   244,   185,
-     248,   246,   247,   194,   198,   227,   228,   195,   196,   220,
-     243,   176,   168,   169,   170,   171,   172,   256,   257,   258,
-     204,   205,   206,   214,   259,   260,   222,   197,   261,   263,
-     262,     0,     0,   266,   224,   238,   249,   267,   268,   269,
-     270,   272,   271,   273,   274,   275,   276,   288,   290,   289,
-     292,   293,   294,   295,   291,   311,   312,   313,   314,   315,
-     316,   317,   318,   319,   320,   321,   322,   327,   232,   253,
-     264,   265
+       0,     0,     0,    11,    13,    14,    72,    75,    84,    15,
+      23,    63,    16,    76,    77,    34,    56,    71,    17,    18,
+      19,    20,    21,    22,   106,   107,   108,   109,   110,    73,
+      62,    88,   105,    24,    25,    26,    27,    28,    64,    78,
+      79,    94,    50,    60,    51,    89,    44,    45,    46,    47,
+      98,   102,   114,   122,   133,    99,    57,    29,    30,    31,
+      86,   115,   116,   117,    32,    33,    35,    36,    38,    39,
+      37,   120,    40,    41,    42,    48,    67,   103,    81,   121,
+      74,   129,    82,    83,   100,   101,    87,    43,    65,    68,
+      49,    52,    90,    91,    66,   130,    92,    53,    54,    55,
+     104,    93,    61,    95,    96,    97,   131,    58,    59,    80,
+      69,    70,    85,   111,   112,   113,   118,   119,   123,   125,
+     124,   126,   127,   128,   132,     0,     0,     0,     0,     0,
+     135,   137,   138,   139,   141,   140,     0,     0,     0,     0,
+     143,   145,   146,   147,   148,     0,     0,     0,     0,     0,
+       0,     0,     0,   280,   282,   284,   283,   289,   285,   286,
+     287,   288,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   299,   301,   302,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   312,     0,   326,   328,
+     150,   149,   154,   157,   155,   163,   164,   165,   166,   167,
+     168,   178,   179,   180,   181,   182,   202,   203,   204,   209,
+     210,   160,   211,   212,   215,   213,   214,   217,   218,   219,
+     232,   191,   192,   193,   194,   220,   235,   187,   189,   236,
+     242,   243,   244,   161,   201,   252,   253,   188,   247,   175,
+     156,   183,   233,   239,   221,     0,     0,   256,   162,   151,
+     174,   225,   152,   158,   159,   184,   185,   254,   223,   227,
+     228,   153,   257,   205,   231,   176,   190,   237,   238,   241,
+     246,   186,   250,   248,   249,   195,   200,   229,   230,   196,
+     197,   222,   245,   177,   169,   170,   171,   172,   173,   258,
+     259,   260,   206,   207,   208,   216,   261,   262,   224,   198,
+     263,   265,   264,     0,     0,   268,   226,   240,   251,   269,
+     199,   270,   271,   272,   274,   273,   275,   276,   277,   278,
+     290,   292,   291,   294,   295,   296,   297,   293,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     329,   234,   255,   266,   267
 };
 
   /* YYPGOTO[NTERM-NUM].  */
@@ -1131,30 +1133,30 @@ static const yytype_int8 yypgoto[] =
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81
+     -81,   -81
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     9,    10,    16,   142,    11,    17,   268,    12,
-      18,   278,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   269,   270,   271,   272,   273,   279,   280,   281,
-     282,    13,    19,   291,   292,   293,   294,   295,   296,   297,
-     298,   299,    14,    20,   312,   313,   314,   315,   316,   317,
-     318,   319,   320,   321,   322,   323,   324,    15,    21,   326,
-     327
+      -1,     1,     9,    10,    16,   143,    11,    17,   270,    12,
+      18,   280,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   271,   272,   273,   274,   275,   281,   282,
+     283,   284,    13,    19,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,    14,    20,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,    15,    21,
+     328,   329
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1164,36 +1166,36 @@ static const yytype_uint16 yytable[] =
 {
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,   325,   328,   329,
-     330,    49,    50,    51,   331,   332,   333,    52,    53,    54,
+      42,    43,    44,    45,    46,    47,    48,   327,   330,   331,
+     332,    49,    50,    51,   333,   334,   335,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,   263,   334,
-     264,   265,   335,   336,   337,   338,   274,    93,    94,    95,
-     339,    96,    97,    98,   275,   276,    99,   100,   101,   102,
+      85,    86,    87,    88,    89,    90,    91,    92,   265,   336,
+     266,   267,   337,   338,   339,   340,   276,    93,    94,    95,
+     341,    96,    97,    98,   277,   278,    99,   100,   101,   102,
      103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,     2,   340,
+     113,   114,   115,   116,   117,   118,   119,   120,     2,   342,
      121,   122,   123,   124,   125,   126,   127,   128,   129,     3,
-     341,   283,   284,   285,   286,   287,   288,   289,   290,   342,
-     343,   266,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   344,   345,   346,   347,     4,   348,
-     349,   350,   351,   352,     5,   353,   354,   355,   356,   357,
-     267,   358,   359,   360,   361,   362,   363,   277,   300,   301,
-     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,   375,   376,   377,   378,   379,   380,   381,     6,   382,
-     383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
-     393,   394,   395,   396,     7,   397,   398,   399,   400,   401,
-     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
-     412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
-     422,   423,   424,   425,   426,   427,   428,   429,   430,     8,
-     431,   432,   433,   434,   435,   436,   437,   438,   439,   440,
-     441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
-     451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
-     461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
-     471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
-     481
+     343,   285,   286,   287,   288,   289,   290,   291,   292,   344,
+     345,   268,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   346,   347,   348,     4,   349,
+     350,   351,   352,   353,     5,   354,   355,   356,   357,   358,
+     269,   359,   360,   361,   362,   363,   364,   279,   302,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   376,   377,   378,   379,   380,   381,   382,     6,   383,
+     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
+     394,   395,   396,   397,     7,   398,   399,   400,   401,   402,
+     403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
+     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
+     423,   424,   425,   426,   427,   428,   429,   430,   431,     8,
+     432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
+     442,   443,   444,   445,   446,   447,   448,   449,   450,   451,
+     452,   453,   454,   455,   456,   457,   458,   459,   460,   461,
+     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
+     472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
+     482,   483,   484
 };
 
 static const yytype_uint8 yycheck[] =
@@ -1213,7 +1215,7 @@ static const yytype_uint8 yycheck[] =
      132,   133,   134,   135,   136,   137,   138,   139,   140,    11,
       10,    91,    92,    93,    94,    95,    96,    97,    98,    10,
       10,   102,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,    10,    10,    10,    10,    40,    10,
+     162,   163,   164,   165,   166,    10,    10,    10,    40,    10,
       10,    10,    10,    10,    46,    10,    10,    10,    10,    10,
      131,    10,    10,    10,    10,    10,    10,   130,   142,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
@@ -1229,16 +1231,16 @@ static const yytype_uint8 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10
+      10,    10,    10
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   167,     0,    11,    40,    46,    90,   106,   141,   168,
-     169,   172,   175,   307,   318,   333,   170,   173,   176,   308,
-     319,   334,    12,    13,    14,    15,    16,    17,    18,    19,
+       0,   168,     0,    11,    40,    46,    90,   106,   141,   169,
+     170,   173,   176,   309,   320,   335,   171,   174,   177,   310,
+     321,   336,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    43,
       44,    45,    49,    50,    51,    52,    53,    54,    55,    56,
@@ -1250,7 +1252,7 @@ static const yytype_uint16 yystos[] =
      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
      129,   132,   133,   134,   135,   136,   137,   138,   139,   140,
      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   171,   178,   179,   180,   181,   182,   183,   184,
+     164,   165,   166,   172,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
@@ -1262,13 +1264,13 @@ static const yytype_uint16 yystos[] =
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,    39,    41,    42,   102,   131,   174,   298,
-     299,   300,   301,   302,    39,    47,    48,   130,   177,   303,
-     304,   305,   306,    91,    92,    93,    94,    95,    96,    97,
-      98,   309,   310,   311,   312,   313,   314,   315,   316,   317,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   320,   321,   322,   323,   324,   325,   326,   327,
-     328,   329,   330,   331,   332,   107,   335,   336,    10,    10,
+     295,   296,   297,   298,   299,    39,    41,    42,   102,   131,
+     175,   300,   301,   302,   303,   304,    39,    47,    48,   130,
+     178,   305,   306,   307,   308,    91,    92,    93,    94,    95,
+      96,    97,    98,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   322,   323,   324,   325,   326,   327,
+     328,   329,   330,   331,   332,   333,   334,   107,   337,   338,
       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,
@@ -1284,27 +1286,27 @@ static const yytype_uint16 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10
+      10,    10,    10,    10,    10
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   166,   167,   167,   168,   168,   168,   168,   168,   168,
-     169,   170,   170,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,   172,   173,   173,   174,   174,   174,   174,
-     174,   175,   176,   176,   177,   177,   177,   177,   178,   179,
+       0,   167,   168,   168,   169,   169,   169,   169,   169,   169,
+     170,   171,   171,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   172,
+     172,   172,   172,   172,   173,   174,   174,   175,   175,   175,
+     175,   175,   176,   177,   177,   178,   178,   178,   178,   179,
      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
      200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
@@ -1317,12 +1319,12 @@ static const yytype_uint16 yyr1[] =
      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
      280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
      290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   307,   308,   308,
-     309,   309,   309,   309,   309,   309,   309,   309,   310,   311,
-     312,   313,   314,   315,   316,   317,   318,   319,   319,   320,
-     320,   320,   320,   320,   320,   320,   320,   320,   320,   320,
-     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     330,   331,   332,   333,   334,   334,   335,   336
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   310,   311,   311,   311,   311,   311,   311,   311,   311,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     321,   322,   322,   322,   322,   322,   322,   322,   322,   322,
+     322,   322,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,   332,   333,   334,   335,   336,   336,   337,   338
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1341,8 +1343,8 @@ 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,     2,     0,     1,     1,     1,     1,
-       1,     1,     2,     0,     1,     1,     1,     1,     2,     2,
+       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
+       1,     1,     1,     2,     0,     1,     1,     1,     1,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1351,16 +1353,16 @@ static const yytype_uint8 yyr2[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     3,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     3,     3,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
-       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     1,     2,     0,     1,     2
+       2,     2,     2,     2,     2,     3,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     3,     3,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
+       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
+       0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     1,     2,     0,     1,     2
 };
 
 
@@ -2041,11 +2043,11 @@ yyreduce:
     { 
                OUTYY(("\nP(server:)\n")); 
        }
-#line 2045 "util/configparser.c" /* yacc.c:1646  */
+#line 2047 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 133:
-#line 197 "./util/configparser.y" /* yacc.c:1646  */
+  case 134:
+#line 198 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2056,11 +2058,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2060 "util/configparser.c" /* yacc.c:1646  */
+#line 2062 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 141:
-#line 213 "./util/configparser.y" /* yacc.c:1646  */
+  case 142:
+#line 214 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2071,11 +2073,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2075 "util/configparser.c" /* yacc.c:1646  */
+#line 2077 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 148:
-#line 229 "./util/configparser.y" /* yacc.c:1646  */
+  case 149:
+#line 230 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2083,11 +2085,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2087 "util/configparser.c" /* yacc.c:1646  */
+#line 2089 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 149:
-#line 238 "./util/configparser.y" /* yacc.c:1646  */
+  case 150:
+#line 239 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2095,11 +2097,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2099 "util/configparser.c" /* yacc.c:1646  */
+#line 2101 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 150:
-#line 247 "./util/configparser.y" /* yacc.c:1646  */
+  case 151:
+#line 248 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2109,11 +2111,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2113 "util/configparser.c" /* yacc.c:1646  */
+#line 2115 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 258 "./util/configparser.y" /* yacc.c:1646  */
+  case 152:
+#line 259 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2121,11 +2123,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2125 "util/configparser.c" /* yacc.c:1646  */
+#line 2127 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 267 "./util/configparser.y" /* yacc.c:1646  */
+  case 153:
+#line 268 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2133,11 +2135,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2137 "util/configparser.c" /* yacc.c:1646  */
+#line 2139 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 276 "./util/configparser.y" /* yacc.c:1646  */
+  case 154:
+#line 277 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2145,11 +2147,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2149 "util/configparser.c" /* yacc.c:1646  */
+#line 2151 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 154:
-#line 285 "./util/configparser.y" /* yacc.c:1646  */
+  case 155:
+#line 286 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2161,11 +2163,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 2165 "util/configparser.c" /* yacc.c:1646  */
+#line 2167 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 155:
-#line 298 "./util/configparser.y" /* yacc.c:1646  */
+  case 156:
+#line 299 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2179,11 +2181,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 2183 "util/configparser.c" /* yacc.c:1646  */
+#line 2185 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 156:
-#line 313 "./util/configparser.y" /* yacc.c:1646  */
+  case 157:
+#line 314 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2191,11 +2193,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2195 "util/configparser.c" /* yacc.c:1646  */
+#line 2197 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 157:
-#line 322 "./util/configparser.y" /* yacc.c:1646  */
+  case 158:
+#line 323 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -2203,11 +2205,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2207 "util/configparser.c" /* yacc.c:1646  */
+#line 2209 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 158:
-#line 331 "./util/configparser.y" /* yacc.c:1646  */
+  case 159:
+#line 332 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -2215,11 +2217,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2219 "util/configparser.c" /* yacc.c:1646  */
+#line 2221 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 159:
-#line 340 "./util/configparser.y" /* yacc.c:1646  */
+  case 160:
+#line 341 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2227,11 +2229,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2231 "util/configparser.c" /* yacc.c:1646  */
+#line 2233 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 160:
-#line 349 "./util/configparser.y" /* yacc.c:1646  */
+  case 161:
+#line 350 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2239,11 +2241,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2243 "util/configparser.c" /* yacc.c:1646  */
+#line 2245 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 161:
-#line 358 "./util/configparser.y" /* yacc.c:1646  */
+  case 162:
+#line 359 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2251,11 +2253,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2255 "util/configparser.c" /* yacc.c:1646  */
+#line 2257 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 162:
-#line 367 "./util/configparser.y" /* yacc.c:1646  */
+  case 163:
+#line 368 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2263,11 +2265,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2267 "util/configparser.c" /* yacc.c:1646  */
+#line 2269 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 163:
-#line 376 "./util/configparser.y" /* yacc.c:1646  */
+  case 164:
+#line 377 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2275,11 +2277,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2279 "util/configparser.c" /* yacc.c:1646  */
+#line 2281 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 164:
-#line 385 "./util/configparser.y" /* yacc.c:1646  */
+  case 165:
+#line 386 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2287,11 +2289,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2291 "util/configparser.c" /* yacc.c:1646  */
+#line 2293 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 165:
-#line 394 "./util/configparser.y" /* yacc.c:1646  */
+  case 166:
+#line 395 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2299,11 +2301,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2303 "util/configparser.c" /* yacc.c:1646  */
+#line 2305 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 403 "./util/configparser.y" /* yacc.c:1646  */
+  case 167:
+#line 404 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2311,11 +2313,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 2315 "util/configparser.c" /* yacc.c:1646  */
+#line 2317 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 167:
-#line 412 "./util/configparser.y" /* yacc.c:1646  */
+  case 168:
+#line 413 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2323,11 +2325,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2327 "util/configparser.c" /* yacc.c:1646  */
+#line 2329 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 421 "./util/configparser.y" /* yacc.c:1646  */
+  case 169:
+#line 422 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2335,11 +2337,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2339 "util/configparser.c" /* yacc.c:1646  */
+#line 2341 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 430 "./util/configparser.y" /* yacc.c:1646  */
+  case 170:
+#line 431 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2347,31 +2349,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2351 "util/configparser.c" /* yacc.c:1646  */
+#line 2353 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 439 "./util/configparser.y" /* yacc.c:1646  */
+  case 171:
+#line 440 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_key);
                cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
        }
-#line 2361 "util/configparser.c" /* yacc.c:1646  */
+#line 2363 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 446 "./util/configparser.y" /* yacc.c:1646  */
+  case 172:
+#line 447 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_pem);
                cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
        }
-#line 2371 "util/configparser.c" /* yacc.c:1646  */
+#line 2373 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 453 "./util/configparser.y" /* yacc.c:1646  */
+  case 173:
+#line 454 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2379,11 +2381,11 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2383 "util/configparser.c" /* yacc.c:1646  */
+#line 2385 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 462 "./util/configparser.y" /* yacc.c:1646  */
+  case 174:
+#line 463 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2391,11 +2393,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2395 "util/configparser.c" /* yacc.c:1646  */
+#line 2397 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 471 "./util/configparser.y" /* yacc.c:1646  */
+  case 175:
+#line 472 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2408,11 +2410,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 2412 "util/configparser.c" /* yacc.c:1646  */
+#line 2414 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 485 "./util/configparser.y" /* yacc.c:1646  */
+  case 176:
+#line 486 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2420,11 +2422,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2424 "util/configparser.c" /* yacc.c:1646  */
+#line 2426 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 494 "./util/configparser.y" /* yacc.c:1646  */
+  case 177:
+#line 495 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2432,145 +2434,145 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2436 "util/configparser.c" /* yacc.c:1646  */
+#line 2438 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 503 "./util/configparser.y" /* yacc.c:1646  */
+  case 178:
+#line 504 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 2446 "util/configparser.c" /* yacc.c:1646  */
+#line 2448 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 510 "./util/configparser.y" /* yacc.c:1646  */
+  case 179:
+#line 511 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 2456 "util/configparser.c" /* yacc.c:1646  */
+#line 2458 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 517 "./util/configparser.y" /* yacc.c:1646  */
+  case 180:
+#line 518 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
                cfg_parser->cfg->directory = (yyvsp[0].str);
        }
-#line 2466 "util/configparser.c" /* yacc.c:1646  */
+#line 2468 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 524 "./util/configparser.y" /* yacc.c:1646  */
+  case 181:
+#line 525 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->logfile);
                cfg_parser->cfg->logfile = (yyvsp[0].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 2477 "util/configparser.c" /* yacc.c:1646  */
+#line 2479 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 532 "./util/configparser.y" /* yacc.c:1646  */
+  case 182:
+#line 533 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 2487 "util/configparser.c" /* yacc.c:1646  */
+#line 2489 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 539 "./util/configparser.y" /* yacc.c:1646  */
+  case 183:
+#line 540 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2497 "util/configparser.c" /* yacc.c:1646  */
+#line 2499 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 546 "./util/configparser.y" /* yacc.c:1646  */
+  case 184:
+#line 547 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
                cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str);
        }
-#line 2507 "util/configparser.c" /* yacc.c:1646  */
+#line 2509 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 553 "./util/configparser.y" /* yacc.c:1646  */
+  case 185:
+#line 554 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2517 "util/configparser.c" /* yacc.c:1646  */
+#line 2519 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 560 "./util/configparser.y" /* yacc.c:1646  */
+  case 186:
+#line 561 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        auto_trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2528 "util/configparser.c" /* yacc.c:1646  */
+#line 2530 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 186:
-#line 568 "./util/configparser.y" /* yacc.c:1646  */
+  case 187:
+#line 569 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2539 "util/configparser.c" /* yacc.c:1646  */
+#line 2541 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 187:
-#line 576 "./util/configparser.y" /* yacc.c:1646  */
+  case 188:
+#line 577 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trusted_keys_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2550 "util/configparser.c" /* yacc.c:1646  */
+#line 2552 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 584 "./util/configparser.y" /* yacc.c:1646  */
+  case 189:
+#line 585 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2560 "util/configparser.c" /* yacc.c:1646  */
+#line 2562 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 591 "./util/configparser.y" /* yacc.c:1646  */
+  case 190:
+#line 592 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2570 "util/configparser.c" /* yacc.c:1646  */
+#line 2572 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 598 "./util/configparser.y" /* yacc.c:1646  */
+  case 191:
+#line 599 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2578,11 +2580,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2582 "util/configparser.c" /* yacc.c:1646  */
+#line 2584 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 607 "./util/configparser.y" /* yacc.c:1646  */
+  case 192:
+#line 608 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2590,53 +2592,53 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2594 "util/configparser.c" /* yacc.c:1646  */
+#line 2596 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 616 "./util/configparser.y" /* yacc.c:1646  */
+  case 193:
+#line 617 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 2604 "util/configparser.c" /* yacc.c:1646  */
+#line 2606 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 623 "./util/configparser.y" /* yacc.c:1646  */
+  case 194:
+#line 624 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 2614 "util/configparser.c" /* yacc.c:1646  */
+#line 2616 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 630 "./util/configparser.y" /* yacc.c:1646  */
+  case 195:
+#line 631 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2625 "util/configparser.c" /* yacc.c:1646  */
+#line 2627 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 638 "./util/configparser.y" /* yacc.c:1646  */
+  case 196:
+#line 639 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2636 "util/configparser.c" /* yacc.c:1646  */
+#line 2638 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 196:
-#line 646 "./util/configparser.y" /* yacc.c:1646  */
+  case 197:
+#line 647 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2645,11 +2647,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2649 "util/configparser.c" /* yacc.c:1646  */
+#line 2651 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 656 "./util/configparser.y" /* yacc.c:1646  */
+  case 198:
+#line 657 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2658,11 +2660,24 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2662 "util/configparser.c" /* yacc.c:1646  */
+#line 2664 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 666 "./util/configparser.y" /* yacc.c:1646  */
+  case 199:
+#line 667 "./util/configparser.y" /* yacc.c:1646  */
+    {
+        OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
+        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+            yyerror("expected yes or no.");
+        else cfg_parser->cfg->ip_freebind =
+            (strcmp((yyvsp[0].str), "yes")==0);
+        free((yyvsp[0].str));
+    }
+#line 2677 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 200:
+#line 677 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2674,11 +2689,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2678 "util/configparser.c" /* yacc.c:1646  */
+#line 2693 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 199:
-#line 679 "./util/configparser.y" /* yacc.c:1646  */
+  case 201:
+#line 690 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2688,22 +2703,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2692 "util/configparser.c" /* yacc.c:1646  */
+#line 2707 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 200:
-#line 690 "./util/configparser.y" /* yacc.c:1646  */
+  case 202:
+#line 701 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 2703 "util/configparser.c" /* yacc.c:1646  */
+#line 2718 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 698 "./util/configparser.y" /* yacc.c:1646  */
+  case 203:
+#line 709 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2715,11 +2730,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2719 "util/configparser.c" /* yacc.c:1646  */
+#line 2734 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 711 "./util/configparser.y" /* yacc.c:1646  */
+  case 204:
+#line 722 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2727,11 +2742,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2731 "util/configparser.c" /* yacc.c:1646  */
+#line 2746 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 720 "./util/configparser.y" /* yacc.c:1646  */
+  case 205:
+#line 731 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2739,11 +2754,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2743 "util/configparser.c" /* yacc.c:1646  */
+#line 2758 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 204:
-#line 729 "./util/configparser.y" /* yacc.c:1646  */
+  case 206:
+#line 740 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2751,11 +2766,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2755 "util/configparser.c" /* yacc.c:1646  */
+#line 2770 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 205:
-#line 738 "./util/configparser.y" /* yacc.c:1646  */
+  case 207:
+#line 749 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2764,11 +2779,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2768 "util/configparser.c" /* yacc.c:1646  */
+#line 2783 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 206:
-#line 748 "./util/configparser.y" /* yacc.c:1646  */
+  case 208:
+#line 759 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2777,22 +2792,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2781 "util/configparser.c" /* yacc.c:1646  */
+#line 2796 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 758 "./util/configparser.y" /* yacc.c:1646  */
+  case 209:
+#line 769 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 2792 "util/configparser.c" /* yacc.c:1646  */
+#line 2807 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 208:
-#line 766 "./util/configparser.y" /* yacc.c:1646  */
+  case 210:
+#line 777 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2804,11 +2819,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2808 "util/configparser.c" /* yacc.c:1646  */
+#line 2823 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 209:
-#line 779 "./util/configparser.y" /* yacc.c:1646  */
+  case 211:
+#line 790 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2816,22 +2831,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2820 "util/configparser.c" /* yacc.c:1646  */
+#line 2835 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 788 "./util/configparser.y" /* yacc.c:1646  */
+  case 212:
+#line 799 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
                        "removed, use infra-host-ttl)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2831 "util/configparser.c" /* yacc.c:1646  */
+#line 2846 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 211:
-#line 796 "./util/configparser.y" /* yacc.c:1646  */
+  case 213:
+#line 807 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2839,22 +2854,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2843 "util/configparser.c" /* yacc.c:1646  */
+#line 2858 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 212:
-#line 805 "./util/configparser.y" /* yacc.c:1646  */
+  case 214:
+#line 816 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
                        "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2854 "util/configparser.c" /* yacc.c:1646  */
+#line 2869 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 213:
-#line 813 "./util/configparser.y" /* yacc.c:1646  */
+  case 215:
+#line 824 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2866,11 +2881,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2870 "util/configparser.c" /* yacc.c:1646  */
+#line 2885 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 214:
-#line 826 "./util/configparser.y" /* yacc.c:1646  */
+  case 216:
+#line 837 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2878,21 +2893,21 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2882 "util/configparser.c" /* yacc.c:1646  */
+#line 2897 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 835 "./util/configparser.y" /* yacc.c:1646  */
+  case 217:
+#line 846 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->target_fetch_policy);
                cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
        }
-#line 2892 "util/configparser.c" /* yacc.c:1646  */
+#line 2907 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 842 "./util/configparser.y" /* yacc.c:1646  */
+  case 218:
+#line 853 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2901,11 +2916,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2905 "util/configparser.c" /* yacc.c:1646  */
+#line 2920 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 852 "./util/configparser.y" /* yacc.c:1646  */
+  case 219:
+#line 863 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2914,11 +2929,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2918 "util/configparser.c" /* yacc.c:1646  */
+#line 2933 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 862 "./util/configparser.y" /* yacc.c:1646  */
+  case 220:
+#line 873 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2927,11 +2942,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2931 "util/configparser.c" /* yacc.c:1646  */
+#line 2946 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 872 "./util/configparser.y" /* yacc.c:1646  */
+  case 221:
+#line 883 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2940,11 +2955,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2944 "util/configparser.c" /* yacc.c:1646  */
+#line 2959 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 882 "./util/configparser.y" /* yacc.c:1646  */
+  case 222:
+#line 893 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2953,11 +2968,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2957 "util/configparser.c" /* yacc.c:1646  */
+#line 2972 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 892 "./util/configparser.y" /* yacc.c:1646  */
+  case 223:
+#line 903 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2966,11 +2981,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2970 "util/configparser.c" /* yacc.c:1646  */
+#line 2985 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 902 "./util/configparser.y" /* yacc.c:1646  */
+  case 224:
+#line 913 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2979,11 +2994,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2983 "util/configparser.c" /* yacc.c:1646  */
+#line 2998 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 912 "./util/configparser.y" /* yacc.c:1646  */
+  case 225:
+#line 923 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2992,41 +3007,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2996 "util/configparser.c" /* yacc.c:1646  */
+#line 3011 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 922 "./util/configparser.y" /* yacc.c:1646  */
+  case 226:
+#line 933 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3006 "util/configparser.c" /* yacc.c:1646  */
+#line 3021 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 929 "./util/configparser.y" /* yacc.c:1646  */
+  case 227:
+#line 940 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3016 "util/configparser.c" /* yacc.c:1646  */
+#line 3031 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 936 "./util/configparser.y" /* yacc.c:1646  */
+  case 228:
+#line 947 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3026 "util/configparser.c" /* yacc.c:1646  */
+#line 3041 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 943 "./util/configparser.y" /* yacc.c:1646  */
+  case 229:
+#line 954 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3034,11 +3049,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3038 "util/configparser.c" /* yacc.c:1646  */
+#line 3053 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 952 "./util/configparser.y" /* yacc.c:1646  */
+  case 230:
+#line 963 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3046,11 +3061,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3050 "util/configparser.c" /* yacc.c:1646  */
+#line 3065 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 961 "./util/configparser.y" /* yacc.c:1646  */
+  case 231:
+#line 972 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3058,21 +3073,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3062 "util/configparser.c" /* yacc.c:1646  */
+#line 3077 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 970 "./util/configparser.y" /* yacc.c:1646  */
+  case 232:
+#line 981 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3072 "util/configparser.c" /* yacc.c:1646  */
+#line 3087 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 231:
-#line 977 "./util/configparser.y" /* yacc.c:1646  */
+  case 233:
+#line 988 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3081,11 +3096,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3085 "util/configparser.c" /* yacc.c:1646  */
+#line 3100 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 232:
-#line 987 "./util/configparser.y" /* yacc.c:1646  */
+  case 234:
+#line 998 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
@@ -3101,21 +3116,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 3105 "util/configparser.c" /* yacc.c:1646  */
+#line 3120 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 233:
-#line 1004 "./util/configparser.y" /* yacc.c:1646  */
+  case 235:
+#line 1015 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->module_conf);
                cfg_parser->cfg->module_conf = (yyvsp[0].str);
        }
-#line 3115 "util/configparser.c" /* yacc.c:1646  */
+#line 3130 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 234:
-#line 1011 "./util/configparser.y" /* yacc.c:1646  */
+  case 236:
+#line 1022 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3132,11 +3147,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3136 "util/configparser.c" /* yacc.c:1646  */
+#line 3151 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 235:
-#line 1029 "./util/configparser.y" /* yacc.c:1646  */
+  case 237:
+#line 1040 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3148,11 +3163,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3152 "util/configparser.c" /* yacc.c:1646  */
+#line 3167 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 236:
-#line 1042 "./util/configparser.y" /* yacc.c:1646  */
+  case 238:
+#line 1053 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3164,11 +3179,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3168 "util/configparser.c" /* yacc.c:1646  */
+#line 3183 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 237:
-#line 1055 "./util/configparser.y" /* yacc.c:1646  */
+  case 239:
+#line 1066 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3176,11 +3191,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3180 "util/configparser.c" /* yacc.c:1646  */
+#line 3195 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 238:
-#line 1064 "./util/configparser.y" /* yacc.c:1646  */
+  case 240:
+#line 1075 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3188,11 +3203,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3192 "util/configparser.c" /* yacc.c:1646  */
+#line 3207 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 239:
-#line 1073 "./util/configparser.y" /* yacc.c:1646  */
+  case 241:
+#line 1084 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3200,11 +3215,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3204 "util/configparser.c" /* yacc.c:1646  */
+#line 3219 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 240:
-#line 1082 "./util/configparser.y" /* yacc.c:1646  */
+  case 242:
+#line 1093 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3212,11 +3227,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3216 "util/configparser.c" /* yacc.c:1646  */
+#line 3231 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 241:
-#line 1091 "./util/configparser.y" /* yacc.c:1646  */
+  case 243:
+#line 1102 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3225,11 +3240,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3229 "util/configparser.c" /* yacc.c:1646  */
+#line 3244 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 242:
-#line 1101 "./util/configparser.y" /* yacc.c:1646  */
+  case 244:
+#line 1112 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3238,11 +3253,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3242 "util/configparser.c" /* yacc.c:1646  */
+#line 3257 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 243:
-#line 1111 "./util/configparser.y" /* yacc.c:1646  */
+  case 245:
+#line 1122 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3250,11 +3265,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3254 "util/configparser.c" /* yacc.c:1646  */
+#line 3269 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 1120 "./util/configparser.y" /* yacc.c:1646  */
+  case 246:
+#line 1131 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3262,21 +3277,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3266 "util/configparser.c" /* yacc.c:1646  */
+#line 3281 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 1129 "./util/configparser.y" /* yacc.c:1646  */
+  case 247:
+#line 1140 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
                cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
        }
-#line 3276 "util/configparser.c" /* yacc.c:1646  */
+#line 3291 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 1136 "./util/configparser.y" /* yacc.c:1646  */
+  case 248:
+#line 1147 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3284,11 +3299,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3288 "util/configparser.c" /* yacc.c:1646  */
+#line 3303 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 1145 "./util/configparser.y" /* yacc.c:1646  */
+  case 249:
+#line 1156 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3296,11 +3311,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3300 "util/configparser.c" /* yacc.c:1646  */
+#line 3315 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 1154 "./util/configparser.y" /* yacc.c:1646  */
+  case 250:
+#line 1165 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3308,11 +3323,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3312 "util/configparser.c" /* yacc.c:1646  */
+#line 3327 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 1163 "./util/configparser.y" /* yacc.c:1646  */
+  case 251:
+#line 1174 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3321,22 +3336,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3325 "util/configparser.c" /* yacc.c:1646  */
+#line 3340 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 1172 "./util/configparser.y" /* yacc.c:1646  */
+  case 252:
+#line 1183 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3336 "util/configparser.c" /* yacc.c:1646  */
+#line 3351 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 1180 "./util/configparser.y" /* yacc.c:1646  */
+  case 253:
+#line 1191 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3348,22 +3363,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3352 "util/configparser.c" /* yacc.c:1646  */
+#line 3367 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 1193 "./util/configparser.y" /* yacc.c:1646  */
+  case 254:
+#line 1204 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3363 "util/configparser.c" /* yacc.c:1646  */
+#line 3378 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 1201 "./util/configparser.y" /* yacc.c:1646  */
+  case 255:
+#line 1212 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -3386,21 +3401,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 3390 "util/configparser.c" /* yacc.c:1646  */
+#line 3405 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 1225 "./util/configparser.y" /* yacc.c:1646  */
+  case 256:
+#line 1236 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 3400 "util/configparser.c" /* yacc.c:1646  */
+#line 3415 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 1232 "./util/configparser.y" /* yacc.c:1646  */
+  case 257:
+#line 1243 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -3414,11 +3429,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 3418 "util/configparser.c" /* yacc.c:1646  */
+#line 3433 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 1247 "./util/configparser.y" /* yacc.c:1646  */
+  case 258:
+#line 1258 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3427,11 +3442,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3431 "util/configparser.c" /* yacc.c:1646  */
+#line 3446 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 1257 "./util/configparser.y" /* yacc.c:1646  */
+  case 259:
+#line 1268 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3440,31 +3455,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3444 "util/configparser.c" /* yacc.c:1646  */
+#line 3459 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 1267 "./util/configparser.y" /* yacc.c:1646  */
+  case 260:
+#line 1278 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3454 "util/configparser.c" /* yacc.c:1646  */
+#line 3469 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 1274 "./util/configparser.y" /* yacc.c:1646  */
+  case 261:
+#line 1285 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 3464 "util/configparser.c" /* yacc.c:1646  */
+#line 3479 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 1281 "./util/configparser.y" /* yacc.c:1646  */
+  case 262:
+#line 1292 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3472,11 +3487,11 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3476 "util/configparser.c" /* yacc.c:1646  */
+#line 3491 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 1290 "./util/configparser.y" /* yacc.c:1646  */
+  case 263:
+#line 1301 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3484,22 +3499,22 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3488 "util/configparser.c" /* yacc.c:1646  */
+#line 3503 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 1299 "./util/configparser.y" /* yacc.c:1646  */
+  case 264:
+#line 1310 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3499 "util/configparser.c" /* yacc.c:1646  */
+#line 3514 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 1307 "./util/configparser.y" /* yacc.c:1646  */
+  case 265:
+#line 1318 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3511,11 +3526,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3515 "util/configparser.c" /* yacc.c:1646  */
+#line 3530 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 1320 "./util/configparser.y" /* yacc.c:1646  */
+  case 266:
+#line 1331 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -3527,11 +3542,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 3531 "util/configparser.c" /* yacc.c:1646  */
+#line 3546 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 1333 "./util/configparser.y" /* yacc.c:1646  */
+  case 267:
+#line 1344 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -3543,11 +3558,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 3547 "util/configparser.c" /* yacc.c:1646  */
+#line 3562 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 1346 "./util/configparser.y" /* yacc.c:1646  */
+  case 268:
+#line 1357 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3555,11 +3570,11 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3559 "util/configparser.c" /* yacc.c:1646  */
+#line 3574 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 1355 "./util/configparser.y" /* yacc.c:1646  */
+  case 269:
+#line 1366 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3568,11 +3583,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3572 "util/configparser.c" /* yacc.c:1646  */
+#line 3587 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 1365 "./util/configparser.y" /* yacc.c:1646  */
+  case 270:
+#line 1376 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -3581,31 +3596,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 3585 "util/configparser.c" /* yacc.c:1646  */
+#line 3600 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1375 "./util/configparser.y" /* yacc.c:1646  */
+  case 271:
+#line 1386 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3595 "util/configparser.c" /* yacc.c:1646  */
+#line 3610 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1382 "./util/configparser.y" /* yacc.c:1646  */
+  case 272:
+#line 1393 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3605 "util/configparser.c" /* yacc.c:1646  */
+#line 3620 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1389 "./util/configparser.y" /* yacc.c:1646  */
+  case 273:
+#line 1400 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3613,11 +3628,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3617 "util/configparser.c" /* yacc.c:1646  */
+#line 3632 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 1398 "./util/configparser.y" /* yacc.c:1646  */
+  case 274:
+#line 1409 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3626,11 +3641,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3630 "util/configparser.c" /* yacc.c:1646  */
+#line 3645 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 1408 "./util/configparser.y" /* yacc.c:1646  */
+  case 275:
+#line 1419 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -3639,31 +3654,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 3643 "util/configparser.c" /* yacc.c:1646  */
+#line 3658 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 1418 "./util/configparser.y" /* yacc.c:1646  */
+  case 276:
+#line 1429 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3653 "util/configparser.c" /* yacc.c:1646  */
+#line 3668 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1425 "./util/configparser.y" /* yacc.c:1646  */
+  case 277:
+#line 1436 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3663 "util/configparser.c" /* yacc.c:1646  */
+#line 3678 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1432 "./util/configparser.y" /* yacc.c:1646  */
+  case 278:
+#line 1443 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3671,19 +3686,19 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3675 "util/configparser.c" /* yacc.c:1646  */
+#line 3690 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1441 "./util/configparser.y" /* yacc.c:1646  */
+  case 279:
+#line 1452 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 3683 "util/configparser.c" /* yacc.c:1646  */
+#line 3698 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 1452 "./util/configparser.y" /* yacc.c:1646  */
+  case 290:
+#line 1463 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3692,11 +3707,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3696 "util/configparser.c" /* yacc.c:1646  */
+#line 3711 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 1462 "./util/configparser.y" /* yacc.c:1646  */
+  case 291:
+#line 1473 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3704,21 +3719,21 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3708 "util/configparser.c" /* yacc.c:1646  */
+#line 3723 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 1471 "./util/configparser.y" /* yacc.c:1646  */
+  case 292:
+#line 1482 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3718 "util/configparser.c" /* yacc.c:1646  */
+#line 3733 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 1478 "./util/configparser.y" /* yacc.c:1646  */
+  case 293:
+#line 1489 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3727,122 +3742,122 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3731 "util/configparser.c" /* yacc.c:1646  */
+#line 3746 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 1488 "./util/configparser.y" /* yacc.c:1646  */
+  case 294:
+#line 1499 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_key_file);
                cfg_parser->cfg->server_key_file = (yyvsp[0].str);
        }
-#line 3741 "util/configparser.c" /* yacc.c:1646  */
+#line 3756 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 1495 "./util/configparser.y" /* yacc.c:1646  */
+  case 295:
+#line 1506 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_cert_file);
                cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
        }
-#line 3751 "util/configparser.c" /* yacc.c:1646  */
+#line 3766 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 294:
-#line 1502 "./util/configparser.y" /* yacc.c:1646  */
+  case 296:
+#line 1513 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_key_file);
                cfg_parser->cfg->control_key_file = (yyvsp[0].str);
        }
-#line 3761 "util/configparser.c" /* yacc.c:1646  */
+#line 3776 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 295:
-#line 1509 "./util/configparser.y" /* yacc.c:1646  */
+  case 297:
+#line 1520 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_cert_file);
                cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
        }
-#line 3771 "util/configparser.c" /* yacc.c:1646  */
+#line 3786 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 296:
-#line 1516 "./util/configparser.y" /* yacc.c:1646  */
+  case 298:
+#line 1527 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 3779 "util/configparser.c" /* yacc.c:1646  */
+#line 3794 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 311:
-#line 1533 "./util/configparser.y" /* yacc.c:1646  */
+  case 313:
+#line 1544 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3790 "util/configparser.c" /* yacc.c:1646  */
+#line 3805 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 312:
-#line 1541 "./util/configparser.y" /* yacc.c:1646  */
+  case 314:
+#line 1552 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
                cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
        }
-#line 3800 "util/configparser.c" /* yacc.c:1646  */
+#line 3815 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 313:
-#line 1548 "./util/configparser.y" /* yacc.c:1646  */
+  case 315:
+#line 1559 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3811 "util/configparser.c" /* yacc.c:1646  */
+#line 3826 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 314:
-#line 1556 "./util/configparser.y" /* yacc.c:1646  */
+  case 316:
+#line 1567 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3822 "util/configparser.c" /* yacc.c:1646  */
+#line 3837 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 315:
-#line 1564 "./util/configparser.y" /* yacc.c:1646  */
+  case 317:
+#line 1575 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_identity);
                cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
        }
-#line 3832 "util/configparser.c" /* yacc.c:1646  */
+#line 3847 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 316:
-#line 1571 "./util/configparser.y" /* yacc.c:1646  */
+  case 318:
+#line 1582 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_version);
                cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
        }
-#line 3842 "util/configparser.c" /* yacc.c:1646  */
+#line 3857 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 317:
-#line 1578 "./util/configparser.y" /* yacc.c:1646  */
+  case 319:
+#line 1589 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3850,11 +3865,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3854 "util/configparser.c" /* yacc.c:1646  */
+#line 3869 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 318:
-#line 1587 "./util/configparser.y" /* yacc.c:1646  */
+  case 320:
+#line 1598 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3862,11 +3877,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3866 "util/configparser.c" /* yacc.c:1646  */
+#line 3881 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 319:
-#line 1596 "./util/configparser.y" /* yacc.c:1646  */
+  case 321:
+#line 1607 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3874,11 +3889,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3878 "util/configparser.c" /* yacc.c:1646  */
+#line 3893 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 320:
-#line 1605 "./util/configparser.y" /* yacc.c:1646  */
+  case 322:
+#line 1616 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3886,11 +3901,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3890 "util/configparser.c" /* yacc.c:1646  */
+#line 3905 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 321:
-#line 1614 "./util/configparser.y" /* yacc.c:1646  */
+  case 323:
+#line 1625 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3898,11 +3913,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3902 "util/configparser.c" /* yacc.c:1646  */
+#line 3917 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 322:
-#line 1623 "./util/configparser.y" /* yacc.c:1646  */
+  case 324:
+#line 1634 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3910,29 +3925,29 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3914 "util/configparser.c" /* yacc.c:1646  */
+#line 3929 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 323:
-#line 1632 "./util/configparser.y" /* yacc.c:1646  */
+  case 325:
+#line 1643 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 3922 "util/configparser.c" /* yacc.c:1646  */
+#line 3937 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 327:
-#line 1641 "./util/configparser.y" /* yacc.c:1646  */
+  case 329:
+#line 1652 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->python_script);
                cfg_parser->cfg->python_script = (yyvsp[0].str);
        }
-#line 3932 "util/configparser.c" /* yacc.c:1646  */
+#line 3947 "util/configparser.c" /* yacc.c:1646  */
     break;
 
 
-#line 3936 "util/configparser.c" /* yacc.c:1646  */
+#line 3951 "util/configparser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4160,7 +4175,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1646 "./util/configparser.y" /* yacc.c:1906  */
+#line 1657 "./util/configparser.y" /* yacc.c:1906  */
 
 
 /* parse helper routines could be here */
index 1981efe3bb2416672fc2e854b00e9e00079d3c1a..2bc38000a7803457fa907df981dda000e7ffb50a 100644 (file)
@@ -207,7 +207,8 @@ extern int yydebug;
     VAR_CAPS_WHITELIST = 417,
     VAR_CACHE_MAX_NEGATIVE_TTL = 418,
     VAR_PERMIT_SMALL_HOLDDOWN = 419,
-    VAR_QNAME_MINIMISATION = 420
+    VAR_QNAME_MINIMISATION = 420,
+    VAR_IP_FREEBIND = 421
   };
 #endif
 /* Tokens.  */
@@ -374,6 +375,7 @@ extern int yydebug;
 #define VAR_CACHE_MAX_NEGATIVE_TTL 418
 #define VAR_PERMIT_SMALL_HOLDDOWN 419
 #define VAR_QNAME_MINIMISATION 420
+#define VAR_IP_FREEBIND 421
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -384,7 +386,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 388 "util/configparser.h" /* yacc.c:1909  */
+#line 390 "util/configparser.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;
index ea7acdb597ed076f514ed9c7d4771061f0c20ef7..1b92cc03cc5d945fe51f4dd0e17a1e5351b24d8e 100644 (file)
@@ -124,7 +124,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE
 %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN VAR_RATELIMIT_FACTOR
 %token VAR_CAPS_WHITELIST VAR_CACHE_MAX_NEGATIVE_TTL VAR_PERMIT_SMALL_HOLDDOWN
-%token VAR_QNAME_MINIMISATION
+%token VAR_QNAME_MINIMISATION VAR_IP_FREEBIND
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -191,7 +191,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_ratelimit_size | server_ratelimit_for_domain |
        server_ratelimit_below_domain | server_ratelimit_factor |
        server_caps_whitelist | server_cache_max_negative_ttl |
-       server_permit_small_holddown | server_qname_minimisation
+       server_permit_small_holddown | server_qname_minimisation |
+       server_ip_freebind
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -662,6 +663,16 @@ server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG
         free($2);
     }
     ;
+server_ip_freebind: VAR_IP_FREEBIND STRING_ARG
+    {
+        OUTYY(("P(server_ip_freebind:%s)\n", $2));
+        if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+            yyerror("expected yes or no.");
+        else cfg_parser->cfg->ip_freebind =
+            (strcmp($2, "yes")==0);
+        free($2);
+    }
+    ;
 server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG
        {
                OUTYY(("P(server_edns_buffer_size:%s)\n", $2));