From b587c7f72d0891ec21e63fd3548d091278b1204d Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 5 Oct 2016 09:36:25 +0000 Subject: [PATCH] Added views functionality. git-svn-id: file:///svn/unbound/trunk@3876 be551aaa-1e26-0410-a405-d3ace91eadb9 --- Makefile.in | 21 +- daemon/acl_list.c | 43 +- daemon/acl_list.h | 7 +- daemon/daemon.c | 12 +- daemon/daemon.h | 3 + daemon/remote.c | 164 +- daemon/worker.c | 2 +- doc/Changelog | 3 + doc/example.conf.in | 19 + doc/unbound-control.8.in | 15 + doc/unbound.conf.5.in | 29 + libunbound/libworker.c | 6 +- services/localzone.c | 57 +- services/localzone.h | 4 +- services/view.c | 200 +++ services/view.h | 135 ++ testdata/views.rpl | 210 +++ util/config_file.c | 22 +- util/config_file.h | 36 + util/configlexer.c | 3105 +++++++++++++++++++------------------- util/configlexer.lex | 3 + util/configparser.c | 1845 +++++++++++----------- util/configparser.h | 18 +- util/configparser.y | 92 +- util/fptr_wlist.c | 2 + 25 files changed, 3575 insertions(+), 2478 deletions(-) create mode 100644 services/view.c create mode 100644 services/view.h create mode 100644 testdata/views.rpl diff --git a/Makefile.in b/Makefile.in index 77e38eaa5..456a0001c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -101,7 +101,7 @@ util/data/msgreply.c util/data/packed_rrset.c iterator/iterator.c \ iterator/iter_delegpt.c iterator/iter_donotq.c iterator/iter_fwd.c \ iterator/iter_hints.c iterator/iter_priv.c iterator/iter_resptype.c \ iterator/iter_scrub.c iterator/iter_utils.c services/listen_dnsport.c \ -services/localzone.c services/mesh.c services/modstack.c \ +services/localzone.c services/mesh.c services/modstack.c services/view.c \ services/outbound_list.c services/outside_network.c util/alloc.c \ util/config_file.c util/configlexer.c util/configparser.c \ util/fptr_wlist.c util/locks.c util/log.c util/mini_event.c util/module.c \ @@ -117,7 +117,7 @@ $(DNSTAP_SRC) COMMON_OBJ_WITHOUT_NETCALL=dns.lo infra.lo rrset.lo dname.lo msgencode.lo \ as112.lo msgparse.lo msgreply.lo packed_rrset.lo iterator.lo iter_delegpt.lo \ iter_donotq.lo iter_fwd.lo iter_hints.lo iter_priv.lo iter_resptype.lo \ -iter_scrub.lo iter_utils.lo localzone.lo mesh.lo modstack.lo \ +iter_scrub.lo iter_utils.lo localzone.lo mesh.lo modstack.lo view.lo \ outbound_list.lo alloc.lo config_file.lo configlexer.lo configparser.lo \ fptr_wlist.lo locks.lo log.lo mini_event.lo module.lo net_help.lo \ random.lo rbtree.lo regional.lo rtt.lo dnstree.lo lookup3.lo lruhash.lo \ @@ -710,6 +710,9 @@ localzone.lo localzone.o: $(srcdir)/services/localzone.c config.h $(srcdir)/serv $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/net_help.h \ $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/util/as112.h +view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/config_file.h mesh.lo mesh.o: $(srcdir)/services/mesh.c config.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/netevent.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \ @@ -759,7 +762,7 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h \ - $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h \ + $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h $(srcdir)/services/view.h\ $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ @@ -958,7 +961,7 @@ unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c config.h $(srcdir)/util/lo acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/services/localzone.h $(srcdir)/util/locks.h \ - $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h + $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon/cachedump.h \ $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ @@ -981,7 +984,7 @@ daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/util/random.h $(srcdir)/util/tube.h \ - $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h + $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h $(srcdir)/services/view.h remote.lo remote.o: $(srcdir)/daemon/remote.c config.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h \ $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ @@ -1027,7 +1030,7 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/config_file.h $(srcdir)/util/regional.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h $(srcdir)/services/view.h\ $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ @@ -1056,7 +1059,7 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/config_file.h $(srcdir)/util/regional.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h $(srcdir)/services/view.h \ $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ @@ -1066,7 +1069,7 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/regional.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/services/localzone.h $(srcdir)/util/locks.h \ - $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h + $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ @@ -1077,7 +1080,7 @@ daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/util/random.h $(srcdir)/util/tube.h \ - $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h + $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h $(srcdir)/services/view.h stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ diff --git a/daemon/acl_list.c b/daemon/acl_list.c index d09b46e5e..fde61ebb8 100644 --- a/daemon/acl_list.c +++ b/daemon/acl_list.c @@ -170,6 +170,23 @@ acl_list_tags_cfg(struct acl_list* acl, const char* str, uint8_t* bitmap, return 1; } +/** apply acl_view string */ +static int +acl_list_view_cfg(struct acl_list* acl, const char* str, const char* str2, + struct views* vs) +{ + struct acl_addr* node; + if(!(node=acl_find_or_create(acl, str))) + return 0; + node->view = views_find_view(vs, str2, 0 /* get read lock*/); + if(!node->view) { + log_err("no view with name: %s", str2); + return 0; + } + lock_rw_unlock(&node->view->lock); + return 1; +} + /** apply acl_tag_action string */ static int acl_list_tag_action_cfg(struct acl_list* acl, struct config_file* cfg, @@ -312,6 +329,27 @@ read_acl_tags(struct acl_list* acl, struct config_file* cfg) return 1; } +/** read acl view config */ +static int +read_acl_view(struct acl_list* acl, struct config_file* cfg, struct views* v) +{ + struct config_str2list* np, *p = cfg->acl_view; + cfg->acl_view = NULL; + while(p) { + log_assert(p->str && p->str2); + if(!acl_list_view_cfg(acl, p->str, p->str2, v)) { + return 0; + } + /* free the items as we go to free up memory */ + np = p->next; + free(p->str); + free(p->str2); + free(p); + p = np; + } + return 1; +} + /** read acl tag actions config */ static int read_acl_tag_actions(struct acl_list* acl, struct config_file* cfg) @@ -362,12 +400,15 @@ read_acl_tag_datas(struct acl_list* acl, struct config_file* cfg) } int -acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg) +acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg, + struct views* v) { regional_free_all(acl->region); addr_tree_init(&acl->tree); if(!read_acl_list(acl, cfg)) return 0; + if(!read_acl_view(acl, cfg, v)) + return 0; if(!read_acl_tags(acl, cfg)) return 0; if(!read_acl_tag_actions(acl, cfg)) diff --git a/daemon/acl_list.h b/daemon/acl_list.h index fc0e9cabf..ca9fd2d4b 100644 --- a/daemon/acl_list.h +++ b/daemon/acl_list.h @@ -43,6 +43,7 @@ #ifndef DAEMON_ACL_LIST_H #define DAEMON_ACL_LIST_H #include "util/storage/dnstree.h" +#include "services/view.h" struct config_file; struct regional; @@ -100,6 +101,8 @@ struct acl_addr { struct config_strlist** tag_datas; /** size of the tag_datas array */ size_t tag_datas_size; + /* view element, NULL if none */ + struct view* view; }; /** @@ -118,9 +121,11 @@ void acl_list_delete(struct acl_list* acl); * Process access control config. * @param acl: where to store. * @param cfg: config options. + * @param v: views structure * @return 0 on error. */ -int acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg); +int acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg, + struct views* v); /** * Lookup access control status for acl structure. diff --git a/daemon/daemon.c b/daemon/daemon.c index 2ed9af8fe..53a32dcf8 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -79,6 +79,7 @@ #include "services/cache/rrset.h" #include "services/cache/infra.h" #include "services/localzone.h" +#include "services/view.h" #include "services/modstack.h" #include "util/module.h" #include "util/random.h" @@ -542,8 +543,15 @@ void daemon_fork(struct daemon* daemon) { log_assert(daemon); - if(!acl_list_apply_cfg(daemon->acl, daemon->cfg)) + if(!(daemon->views = views_create())) + fatal_exit("Could not create views: out of memory"); + /* create individual views and their localzone/data trees */ + if(!views_apply_cfg(daemon->views, daemon->cfg)) + fatal_exit("Could not set up views"); + + if(!acl_list_apply_cfg(daemon->acl, daemon->cfg, daemon->views)) fatal_exit("Could not setup access control list"); + /* create global local_zones */ if(!(daemon->local_zones = local_zones_create())) fatal_exit("Could not create local zones: out of memory"); if(!local_zones_apply_cfg(daemon->local_zones, daemon->cfg)) @@ -605,6 +613,8 @@ daemon_cleanup(struct daemon* daemon) slabhash_clear(daemon->env->msg_cache); local_zones_delete(daemon->local_zones); daemon->local_zones = NULL; + views_delete(daemon->views); + daemon->views = NULL; /* key cache is cleared by module desetup during next daemon_fork() */ daemon_remote_clear(daemon->rc); for(i=0; inum; i++) diff --git a/daemon/daemon.h b/daemon/daemon.h index 48c0b4f78..9177c0fd6 100644 --- a/daemon/daemon.h +++ b/daemon/daemon.h @@ -53,6 +53,7 @@ struct module_env; struct rrset_cache; struct acl_list; struct local_zones; +struct views; struct ub_randstate; struct daemon_remote; @@ -111,6 +112,8 @@ struct daemon { struct timeval time_last_stat; /** time when daemon started */ struct timeval time_boot; + /** views structure containing view tree */ + struct views* views; #ifdef USE_DNSTAP /** the dnstap environment master value, copied and changed by threads*/ struct dt_env* dtenv; diff --git a/daemon/remote.c b/daemon/remote.c index 3fe6650b4..4eddaa85a 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1124,7 +1124,7 @@ find_arg2(SSL* ssl, char* arg, char** arg2) /** Add a new zone */ static void -do_zone_add(SSL* ssl, struct worker* worker, char* arg) +do_zone_add(SSL* ssl, struct local_zones* zones, char* arg) { uint8_t* nm; int nmlabs; @@ -1141,31 +1141,31 @@ do_zone_add(SSL* ssl, struct worker* worker, char* arg) free(nm); return; } - lock_rw_wrlock(&worker->daemon->local_zones->lock); - if((z=local_zones_find(worker->daemon->local_zones, nm, nmlen, + lock_rw_wrlock(&zones->lock); + if((z=local_zones_find(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN))) { /* already present in tree */ lock_rw_wrlock(&z->lock); z->type = t; /* update type anyway */ lock_rw_unlock(&z->lock); free(nm); - lock_rw_unlock(&worker->daemon->local_zones->lock); + lock_rw_unlock(&zones->lock); send_ok(ssl); return; } - if(!local_zones_add_zone(worker->daemon->local_zones, nm, nmlen, + if(!local_zones_add_zone(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN, t)) { - lock_rw_unlock(&worker->daemon->local_zones->lock); + lock_rw_unlock(&zones->lock); ssl_printf(ssl, "error out of memory\n"); return; } - lock_rw_unlock(&worker->daemon->local_zones->lock); + lock_rw_unlock(&zones->lock); send_ok(ssl); } /** Remove a zone */ static void -do_zone_remove(SSL* ssl, struct worker* worker, char* arg) +do_zone_remove(SSL* ssl, struct local_zones* zones, char* arg) { uint8_t* nm; int nmlabs; @@ -1173,22 +1173,22 @@ do_zone_remove(SSL* ssl, struct worker* worker, char* arg) struct local_zone* z; if(!parse_arg_name(ssl, arg, &nm, &nmlen, &nmlabs)) return; - lock_rw_wrlock(&worker->daemon->local_zones->lock); - if((z=local_zones_find(worker->daemon->local_zones, nm, nmlen, + lock_rw_wrlock(&zones->lock); + if((z=local_zones_find(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN))) { /* present in tree */ - local_zones_del_zone(worker->daemon->local_zones, z); + local_zones_del_zone(zones, z); } - lock_rw_unlock(&worker->daemon->local_zones->lock); + lock_rw_unlock(&zones->lock); free(nm); send_ok(ssl); } /** Add new RR data */ static void -do_data_add(SSL* ssl, struct worker* worker, char* arg) +do_data_add(SSL* ssl, struct local_zones* zones, char* arg) { - if(!local_zones_add_RR(worker->daemon->local_zones, arg)) { + if(!local_zones_add_RR(zones, arg)) { ssl_printf(ssl,"error in syntax or out of memory, %s\n", arg); return; } @@ -1197,19 +1197,91 @@ do_data_add(SSL* ssl, struct worker* worker, char* arg) /** Remove RR data */ static void -do_data_remove(SSL* ssl, struct worker* worker, char* arg) +do_data_remove(SSL* ssl, struct local_zones* zones, char* arg) { uint8_t* nm; int nmlabs; size_t nmlen; if(!parse_arg_name(ssl, arg, &nm, &nmlen, &nmlabs)) return; - local_zones_del_data(worker->daemon->local_zones, nm, + local_zones_del_data(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN); free(nm); send_ok(ssl); } +/** Add a new zone to view */ +static void +do_view_zone_add(SSL* ssl, struct worker* worker, char* arg) +{ + char* arg2; + struct view* v; + if(!find_arg2(ssl, arg, &arg2)) + return; + v = views_find_view(worker->daemon->views, + arg, 1 /* get write lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + do_zone_add(ssl, v->local_zones, arg2); + lock_rw_unlock(&v->lock); +} + +/** Remove a zone from view */ +static void +do_view_zone_remove(SSL* ssl, struct worker* worker, char* arg) +{ + char* arg2; + struct view* v; + if(!find_arg2(ssl, arg, &arg2)) + return; + v = views_find_view(worker->daemon->views, + arg, 1 /* get write lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + do_zone_remove(ssl, v->local_zones, arg2); + lock_rw_unlock(&v->lock); +} + +/** Add new RR data to view */ +static void +do_view_data_add(SSL* ssl, struct worker* worker, char* arg) +{ + char* arg2; + struct view* v; + if(!find_arg2(ssl, arg, &arg2)) + return; + v = views_find_view(worker->daemon->views, + arg, 1 /* get write lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + do_data_add(ssl, v->local_zones, arg2); + lock_rw_unlock(&v->lock); +} + +/** Remove RR data from view */ +static void +do_view_data_remove(SSL* ssl, struct worker* worker, char* arg) +{ + char* arg2; + struct view* v; + if(!find_arg2(ssl, arg, &arg2)) + return; + v = views_find_view(worker->daemon->views, + arg, 1 /* get write lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + do_data_remove(ssl, v->local_zones, arg2); + lock_rw_unlock(&v->lock); +} + /** cache lookup of nameservers */ static void do_lookup(SSL* ssl, struct worker* worker, char* arg) @@ -2263,9 +2335,8 @@ do_list_stubs(SSL* ssl, struct worker* worker) /** do the list_local_zones command */ static void -do_list_local_zones(SSL* ssl, struct worker* worker) +do_list_local_zones(SSL* ssl, struct local_zones* zones) { - struct local_zones* zones = worker->daemon->local_zones; struct local_zone* z; char buf[257]; lock_rw_rdlock(&zones->lock); @@ -2286,9 +2357,8 @@ do_list_local_zones(SSL* ssl, struct worker* worker) /** do the list_local_data command */ static void -do_list_local_data(SSL* ssl, struct worker* worker) +do_list_local_data(SSL* ssl, struct worker* worker, struct local_zones* zones) { - struct local_zones* zones = worker->daemon->local_zones; struct local_zone* z; struct local_data* d; struct local_rrset* p; @@ -2324,6 +2394,34 @@ do_list_local_data(SSL* ssl, struct worker* worker) lock_rw_unlock(&zones->lock); } +/** do the view_list_local_zones command */ +static void +do_view_list_local_zones(SSL* ssl, struct worker* worker, char* arg) +{ + struct view* v = views_find_view(worker->daemon->views, + arg, 0 /* get read lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + do_list_local_zones(ssl, v->local_zones); + lock_rw_unlock(&v->lock); +} + +/** do the view_list_local_data command */ +static void +do_view_list_local_data(SSL* ssl, struct worker* worker, char* arg) +{ + struct view* v = views_find_view(worker->daemon->views, + arg, 0 /* get read lock*/); + if(!v) { + ssl_printf(ssl,"no view with name: %s\n", arg); + return; + } + do_list_local_data(ssl, worker, v->local_zones); + lock_rw_unlock(&v->lock); +} + /** struct for user arg ratelimit list */ struct ratelimit_list_arg { /** the infra cache */ @@ -2436,10 +2534,16 @@ execute_cmd(struct daemon_remote* rc, SSL* ssl, char* cmd, do_insecure_list(ssl, worker); return; } else if(cmdcmp(p, "list_local_zones", 16)) { - do_list_local_zones(ssl, worker); + do_list_local_zones(ssl, worker->daemon->local_zones); return; } else if(cmdcmp(p, "list_local_data", 15)) { - do_list_local_data(ssl, worker); + do_list_local_data(ssl, worker, worker->daemon->local_zones); + return; + } else if(cmdcmp(p, "view_list_local_zones", 21)) { + do_view_list_local_zones(ssl, worker, skipwhite(p+21)); + return; + } else if(cmdcmp(p, "view_list_local_data", 20)) { + do_view_list_local_data(ssl, worker, skipwhite(p+20)); return; } else if(cmdcmp(p, "ratelimit_list", 14)) { do_ratelimit_list(ssl, worker, p+14); @@ -2505,13 +2609,21 @@ execute_cmd(struct daemon_remote* rc, SSL* ssl, char* cmd, if(cmdcmp(p, "verbosity", 9)) { do_verbosity(ssl, skipwhite(p+9)); } else if(cmdcmp(p, "local_zone_remove", 17)) { - do_zone_remove(ssl, worker, skipwhite(p+17)); + do_zone_remove(ssl, worker->daemon->local_zones, skipwhite(p+17)); } else if(cmdcmp(p, "local_zone", 10)) { - do_zone_add(ssl, worker, skipwhite(p+10)); + do_zone_add(ssl, worker->daemon->local_zones, skipwhite(p+10)); } else if(cmdcmp(p, "local_data_remove", 17)) { - do_data_remove(ssl, worker, skipwhite(p+17)); + do_data_remove(ssl, worker->daemon->local_zones, skipwhite(p+17)); } else if(cmdcmp(p, "local_data", 10)) { - do_data_add(ssl, worker, skipwhite(p+10)); + do_data_add(ssl, worker->daemon->local_zones, skipwhite(p+10)); + } else if(cmdcmp(p, "view_local_zone_remove", 22)) { + do_view_zone_remove(ssl, worker, skipwhite(p+22)); + } else if(cmdcmp(p, "view_local_zone", 15)) { + do_view_zone_add(ssl, worker, skipwhite(p+15)); + } else if(cmdcmp(p, "view_local_data_remove", 22)) { + do_view_data_remove(ssl, worker, skipwhite(p+22)); + } else if(cmdcmp(p, "view_local_data", 15)) { + do_view_data_add(ssl, worker, skipwhite(p+15)); } else if(cmdcmp(p, "flush_zone", 10)) { do_flush_zone(ssl, worker, skipwhite(p+10)); } else if(cmdcmp(p, "flush_type", 10)) { diff --git a/daemon/worker.c b/daemon/worker.c index 70d07ba8e..1d4c17f5d 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -949,7 +949,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, acladdr->taglist, acladdr->taglen, acladdr->tag_actions, acladdr->tag_actions_size, acladdr->tag_datas, acladdr->tag_datas_size, worker->daemon->cfg->tagname, - worker->daemon->cfg->num_tags)) { + worker->daemon->cfg->num_tags, acladdr->view)) { regional_free_all(worker->scratchpad); if(sldns_buffer_limit(c->buffer) == 0) { comm_point_drop_reply(repinfo); diff --git a/doc/Changelog b/doc/Changelog index cbb08f488..f0f4402ea 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +5 October 2016: Ralph + - Added views functionality. + 30 September 2016: Wouter - Fix Nits for 1.5.10 reported by Dag-Erling Smorgrav. diff --git a/doc/example.conf.in b/doc/example.conf.in index 5cc9f23f5..bcef2ee6a 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -230,6 +230,9 @@ server: # set redirect data for particular tag for access control element # access-control-tag-data: 192.0.2.0/24 tag2 "A 127.0.0.1" + # Set view for access control element + # access-control-view: 192.0.2.0/24 viewname + # if given, a chroot(2) is done to the given directory. # i.e. you can chroot to the working directory, for example, # for extra security, but make sure all files are in that directory. @@ -718,3 +721,19 @@ remote-control: # forward-zone: # name: "example.org" # forward-host: fwd.example.com + +# Views +# Create named views. Name must be unique. Map views to requests using +# the access-control-view option. Views can contain zero or more local-zone +# and local-data options. Options from matching views will override global +# options. Global options will be used if no matching view is found. +# With view-first yes, it will try to answer using the global local-zone and +# local-data elements if there is no view specific match. +# view: +# name: "viewname" +# local-zone: "example.com" redirect +# local-data: "example.com A 192.0.2.3" +# view-first: no +# view: +# name: "anotherview" +# local-zone: "example.com" refuse diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 12d309dda..e7a18f47f 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -263,6 +263,21 @@ estimated qps and qps limit from config. With +a it prints all domains, not just the ratelimited domains, with their estimated qps. The ratelimited domains return an error for uncached (new) queries, but cached queries work as normal. +.TP +.B view_list_local_zones \fIview\fR +\fIlist_local_zones\fR for given view. +.TP +.B view_local_zone \fIview\fR \fIname\fR \fItype +\fIlocal_zone\fR for given view. +.TP +.B view_local_zone_remove \fIview\fR \fIname +\fIlocal_zone_remove\fR for given view. +.TP +.B view_local_data \fIview\fR \fIRR data... +\fIlocal_data\fR for given view. +.TP +.B view_local_data_remove \fIview\fR \fIname +\fIlocal_data_remove\fR for given view. .SH "EXIT CODE" The unbound\-control program exits with status code 1 on error, 0 on success. .SH "SET UP" diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index e80f187e3..5b56200ed 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -474,6 +474,9 @@ order of the define-tag values. .B access\-control\-tag\-data: \fI <"resource record string"> Set redirect data for particular tag for given access control element. .TP +.B access\-control\-view: \fI +Set view for given access control element. +.TP .B chroot: \fI If chroot is enabled, you should pass the configfile (from the commandline) as a full path from the original root. After the @@ -1310,6 +1313,32 @@ If enabled, a query is attempted without the forward clause if it fails. The data could not be retrieved and would have caused SERVFAIL because the servers are unreachable, instead it is tried without this clause. The default is no. +.SS "View Options" +.LP +There may be multiple +.B view: +clauses. Each with a \fBname:\fR and zero or more \fBlocal\-zone\fR and +\fBlocal\-data\fR elements. View can be mapped to requests by specifying the view +name in an \fBaccess\-control\-view\fR element. Options from matching views will +override global options. Global options will be used if no matching view +is found. +.TP +.B name: \fI +Name of the view. Must be unique. This name is used in access\-control\-view +elements. +.TP +.B local\-zone: \fI +View specific local\-zone elements. Has the same types and behaviour as the +global local\-zone elements. +.TP +.B local\-data: \fI"" +View specific local\-data elements. Has the same behaviour as the global +local\-data elements. +.TP +.B view\-first: \fI +If enabled, it attempts to use the global local\-zone and local\-data if there +is no match in the view specific options. +The default is no. .SS "Python Module Options" .LP The diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 6f5354144..3e22c998f 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -609,7 +609,7 @@ int libworker_fg(struct ub_ctx* ctx, struct ctx_query* q) sldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags); if(local_zones_answer(ctx->local_zones, &qinfo, &edns, w->back->udp_buff, w->env->scratch, NULL, NULL, 0, NULL, 0, - NULL, 0, NULL, 0)) { + NULL, 0, NULL, 0, NULL)) { regional_free_all(w->env->scratch); libworker_fillup_fg(q, LDNS_RCODE_NOERROR, w->back->udp_buff, sec_status_insecure, NULL); @@ -680,7 +680,7 @@ int libworker_attach_mesh(struct ub_ctx* ctx, struct ctx_query* q, sldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags); if(local_zones_answer(ctx->local_zones, &qinfo, &edns, w->back->udp_buff, w->env->scratch, NULL, NULL, 0, NULL, 0, - NULL, 0, NULL, 0)) { + NULL, 0, NULL, 0, NULL)) { regional_free_all(w->env->scratch); free(qinfo.qname); libworker_event_done_cb(q, LDNS_RCODE_NOERROR, @@ -801,7 +801,7 @@ handle_newq(struct libworker* w, uint8_t* buf, uint32_t len) sldns_buffer_write_u16_at(w->back->udp_buff, 2, qflags); if(local_zones_answer(w->ctx->local_zones, &qinfo, &edns, w->back->udp_buff, w->env->scratch, NULL, NULL, 0, NULL, 0, - NULL, 0, NULL, 0)) { + NULL, 0, NULL, 0, NULL)) { regional_free_all(w->env->scratch); q->msg_security = sec_status_insecure; add_bg_result(w, q, w->back->udp_buff, UB_NOERROR, NULL); diff --git a/services/localzone.c b/services/localzone.c index 31645224a..bb82ff0cc 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -52,6 +52,7 @@ #include "util/data/msgreply.h" #include "util/data/msgparse.h" #include "util/as112.h" +#include "util/config_file.h" /* maximum RRs in an RRset, to cap possible 'endless' list RRs. * with 16 bytes for an A record, a 64K packet has about 4000 max */ @@ -158,7 +159,7 @@ local_zone_create(uint8_t* nm, size_t len, int labs, z->namelen = len; z->namelabs = labs; lock_rw_init(&z->lock); - z->region = regional_create_custom(sizeof(struct regional)); + z->region = regional_create(); if(!z->region) { free(z); return NULL; @@ -1462,38 +1463,60 @@ local_zones_answer(struct local_zones* zones, struct query_info* qinfo, struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, uint8_t* tagactions, size_t tagactionssize, struct config_strlist** tag_datas, size_t tag_datas_size, - char** tagname, int num_tags) + char** tagname, int num_tags, struct view* view) { /* see if query is covered by a zone, * if so: - try to match (exact) local data * - look at zone type for negative response. */ int labs = dname_count_labels(qinfo->qname); struct local_data* ld = NULL; - struct local_zone* z; + struct local_zone* z = NULL; enum localzone_type lzt; int r, tag = -1; - lock_rw_rdlock(&zones->lock); - z = local_zones_tags_lookup(zones, qinfo->qname, - qinfo->qname_len, labs, qinfo->qclass, taglist, taglen, 0); - if(!z) { - lock_rw_unlock(&zones->lock); - return 0; + + if(view) { + lock_rw_rdlock(&view->lock); + if(view->local_zones && + (z = local_zones_lookup(view->local_zones, + qinfo->qname, qinfo->qname_len, labs, + qinfo->qclass))) { + verbose(VERB_ALGO, + "using localzone from view: %s", + view->name); + lock_rw_rdlock(&z->lock); + lzt = z->type; + } + if(!z && !view->isfirst){ + lock_rw_unlock(&view->lock); + return 0; + } + lock_rw_unlock(&view->lock); } - lock_rw_rdlock(&z->lock); - lock_rw_unlock(&zones->lock); - - lzt = lz_type(taglist, taglen, z->taglist, z->taglen, tagactions, - tagactionssize, z->type, repinfo, z->override_tree, &tag, - tagname, num_tags); + if(!z) { + /* try global local_zones tree */ + lock_rw_rdlock(&zones->lock); + if(!(z = local_zones_tags_lookup(zones, qinfo->qname, + qinfo->qname_len, labs, qinfo->qclass, taglist, + taglen, 0))) { + lock_rw_unlock(&zones->lock); + return 0; + } + lock_rw_rdlock(&z->lock); + lzt = lz_type(taglist, taglen, z->taglist, z->taglen, + tagactions, tagactionssize, z->type, repinfo, + z->override_tree, &tag, tagname, num_tags); + lock_rw_unlock(&zones->lock); + } if((lzt == local_zone_inform || lzt == local_zone_inform_deny) && repinfo) lz_inform_print(z, qinfo, repinfo); - if(lzt != local_zone_always_refuse && lzt != local_zone_always_transparent + if(lzt != local_zone_always_refuse + && lzt != local_zone_always_transparent && lzt != local_zone_always_nxdomain && local_data_answer(z, qinfo, edns, buf, temp, labs, &ld, lzt, - tag, tag_datas, tag_datas_size, tagname, num_tags)) { + tag, tag_datas, tag_datas_size, tagname, num_tags)) { lock_rw_unlock(&z->lock); return 1; } diff --git a/services/localzone.h b/services/localzone.h index 69fdbee2d..9408a5f5f 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -44,6 +44,7 @@ #include "util/rbtree.h" #include "util/locks.h" #include "util/storage/dnstree.h" +#include "services/view.h" struct ub_packed_rrset_key; struct regional; struct config_file; @@ -277,6 +278,7 @@ void local_zones_print(struct local_zones* zones); * @param tag_datas_size: size of tag_datas array. * @param tagname: array of tag name strings (for debug output). * @param num_tags: number of items in tagname array. + * @param view: answer using this view. May be NULL. * @return true if answer is in buffer. false if query is not answered * by authority data. If the reply should be dropped altogether, the return * value is true, but the buffer is cleared (empty). @@ -286,7 +288,7 @@ int local_zones_answer(struct local_zones* zones, struct query_info* qinfo, struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, uint8_t* tagactions, size_t tagactionssize, struct config_strlist** tag_datas, size_t tag_datas_size, - char** tagname, int num_tags); + char** tagname, int num_tags, struct view* view); /** * Parse the string into localzone type. diff --git a/services/view.c b/services/view.c new file mode 100644 index 000000000..dbfd92840 --- /dev/null +++ b/services/view.c @@ -0,0 +1,200 @@ +/* + * services/view.c - named views containing local zones authority service. + * + * Copyright (c) 2016, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains functions to enable named views that can hold local zone + * authority service. + */ +#include "config.h" +#include "services/view.h" +#include "services/localzone.h" +#include "util/config_file.h" + +int +view_cmp(const void* v1, const void* v2) +{ + struct view* a = (struct view*)v1; + struct view* b = (struct view*)v2; + + return strcmp(a->name, b->name); +} + +struct views* +views_create(void) +{ + struct views* v = (struct views*)calloc(1, + sizeof(*v)); + if(!v) + return NULL; + rbtree_init(&v->vtree, &view_cmp); + lock_rw_init(&v->lock); + lock_protect(&v->lock, &v->vtree, sizeof(v->vtree)); + return v; +} + +void +view_delete(struct view* v) +{ + if(!v) + return; + lock_rw_destroy(&v->lock); + local_zones_delete(v->local_zones); + free(v->name); + free(v); +} + +static void +delviewnode(rbnode_t* n, void* ATTR_UNUSED(arg)) +{ + struct view* v = (struct view*)n; + view_delete(v); +} + +void +views_delete(struct views* v) +{ + if(!v) + return; + lock_rw_destroy(&v->lock); + traverse_postorder(&v->vtree, delviewnode, NULL); + free(v); +} + +/** create a new view */ +static struct view* +view_create(char* name) +{ + struct view* v = (struct view*)calloc(1, sizeof(*v)); + if(!v) + return NULL; + v->node.key = v; + if(!(v->name = strdup(name))) { + free(v); + return NULL; + } + lock_rw_init(&v->lock); + lock_protect(&v->lock, &v->name, sizeof(*v)-sizeof(rbnode_t)); + return v; +} + +/** enter a new view returns with WRlock */ +static struct view* +views_enter_view_name(struct views* vs, char* name) +{ + struct view* v = view_create(name); + if(!v) { + log_err("out of memory"); + return NULL; + } + + /* add to rbtree */ + lock_rw_wrlock(&vs->lock); + lock_rw_wrlock(&v->lock); + if(!rbtree_insert(&vs->vtree, &v->node)) { + log_warn("duplicate view: %s", name); + lock_rw_unlock(&v->lock); + view_delete(v); + lock_rw_unlock(&vs->lock); + return NULL; + } + lock_rw_unlock(&vs->lock); + return v; +} + +int +views_apply_cfg(struct views* vs, struct config_file* cfg) +{ + struct config_view* cv; + struct view* v; + struct config_file lz_cfg; + /* Check existence of name in first view (last in config). Rest of + * views are already checked when parsing config. */ + if(cfg->views && !cfg->views->name) { + log_err("view without a name"); + return 0; + } + for(cv = cfg->views; cv; cv = cv->next) { + /* create and enter view */ + if(!(v = views_enter_view_name(vs, cv->name))) + return 0; + v->isfirst = cv->isfirst; + if(cv->local_zones || cv->local_data) { + if(!(v->local_zones = local_zones_create())){ + lock_rw_unlock(&v->lock); + return 0; + } + memset(&lz_cfg, 0, sizeof(lz_cfg)); + lz_cfg.local_zones = cv->local_zones; + lz_cfg.local_data = cv->local_data; + lz_cfg.local_zones_nodefault = + cv->local_zones_nodefault; + if(!local_zones_apply_cfg(v->local_zones, &lz_cfg)){ + lock_rw_unlock(&v->lock); + return 0; + } + } + lock_rw_unlock(&v->lock); + } + return 1; +} + +/** find a view by name */ +struct view* +views_find_view(struct views* vs, const char* name, int write) +{ + struct view* v; + struct view key; + key.node.key = &v; + key.name = (char *)name; + lock_rw_rdlock(&vs->lock); + if(!(v = (struct view*)rbtree_search(&vs->vtree, &key.node))) { + lock_rw_unlock(&vs->lock); + return 0; + } + if(write) + lock_rw_wrlock(&v->lock); + else + lock_rw_rdlock(&v->lock); + lock_rw_unlock(&vs->lock); + return v; +} + +void views_print(struct views* v) +{ + /* TODO implement print */ + (void)v; +} diff --git a/services/view.h b/services/view.h new file mode 100644 index 000000000..f64b2461e --- /dev/null +++ b/services/view.h @@ -0,0 +1,135 @@ +/* + * services/view.h - named views containing local zones authority service. + * + * Copyright (c) 2016, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains functions to enable named views that can hold local zone + * authority service. + */ + +#ifndef SERVICES_VIEW_H +#define SERVICES_VIEW_H +#include "util/rbtree.h" +#include "util/locks.h" +struct regional; +struct config_file; +struct config_view; + + +/** + * Views storage, shared. + */ +struct views { + /** lock on the view tree */ + lock_rw_t lock; + /** rbtree of struct view */ + rbtree_t vtree; +}; + +/** + * View. Named structure holding local authority zones. + */ +struct view { + /** rbtree node, key is name */ + rbnode_t node; + /** view name. + * Has to be right after rbnode_t due to pointer arithmatic in + * view_create's lock protect */ + char* name; + /** view specific local authority zones */ + struct local_zones* local_zones; + /** Fallback to global local_zones when there is no match in the view + * specific tree. 1 for yes, 0 for no */ + int isfirst; + /** lock on the data in the structure + * For the node and name you + * need to also hold the views_tree lock to change them (or to + * delete this view) */ + lock_rw_t lock; +}; + + +/** + * Create views storage + * @return new struct or NULL on error. + */ +struct views* views_create(void); + +/** + * Delete views storage + * @param v: views to delete. + */ +void views_delete(struct views* v); + +/** + * Apply config settings; + * Takes care of locking. + * @param v: view is set up. + * @param cfg: config data. + * @return false on error. + */ +int views_apply_cfg(struct views* v, struct config_file* cfg); + +/** + * Compare two view entries in rbtree. Sort canonical. + * @param v1: view 1 + * @param v2: view 2 + * @return: negative, positive or 0 comparison value. + */ +int view_cmp(const void* v1, const void* v2); + +/** + * Delete one view + * @param v: view to delete. + */ +void view_delete(struct view* v); + +/** + * Debug helper. Print all views + * Takes care of locking. + * @param v: the views tree + */ +void views_print(struct views* v); + +/* Find a view by name. + * @param vs: views + * @param name: name of the view we are looking for + * @param write: 1 for obtaining write lock on found view, 0 for read lock + * @return: locked view or NULL. + */ +struct view* views_find_view(struct views* vs, const char* name, int write); + +#endif /* SERVICES_VIEW_H */ diff --git a/testdata/views.rpl b/testdata/views.rpl new file mode 100644 index 000000000..d4031363b --- /dev/null +++ b/testdata/views.rpl @@ -0,0 +1,210 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + + access-control: 10.10.10.0/24 allow + access-control-view: 10.10.10.10/32 "view1" + access-control-view: 10.10.10.20/32 "view2" + access-control-view: 10.10.10.30/32 "view3" + access-control-view: 10.10.10.40/32 "view4" + + local-zone: "example.com." redirect + local-data: 'example.com. IN TXT "global"' + +view: + name: "view1" + local-zone: "nomatch.example.com." redirect + local-data: 'nomatch.example.com. IN TXT "view 1"' + view-first: no + +view: + name: "view2" + local-zone: "example.com." redirect + local-data: 'example.com. IN TXT "view 2"' + ; view-first default = no + +view: + name: "view3" + local-zone: "nomatch.example.com." redirect + local-data: 'nomatch.example.com. IN TXT "view 3"' + view-first: yes + +view: + name: "view4" + local-zone: "example.com." redirect + local-data: 'example.com. IN TXT "view 4"' + view-first: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END +SCENARIO_BEGIN Test view specific local-zone and local-data elements + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN TXT +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN TXT +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "auth data" +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 1 QUERY ADDRESS 10.10.10.10 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "auth data" +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +STEP 3 QUERY ADDRESS 10.10.10.20 +ENTRY_BEGIN +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 4 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "view 2" +ENTRY_END + +STEP 5 QUERY ADDRESS 10.10.10.30 +ENTRY_BEGIN +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 6 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "global" +ENTRY_END + +STEP 7 QUERY ADDRESS 10.10.10.40 +ENTRY_BEGIN +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "view 4" +ENTRY_END + +STEP 9 QUERY ADDRESS 10.10.10.50 +ENTRY_BEGIN +SECTION QUESTION +example.com. IN TXT +ENTRY_END +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +example.com. IN TXT +SECTION ANSWER +example.com. IN TXT "global" +ENTRY_END + +SCENARIO_END diff --git a/util/config_file.c b/util/config_file.c index b13a49c7b..7d89d2cde 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -512,7 +512,7 @@ int config_set_option(struct config_file* cfg, const char* opt, * forward-first, stub-first, * forward-zone, name, forward-addr, forward-host, * ratelimit-for-domain, ratelimit-below-domain, - * local-zone-tag */ + * local-zone-tag, access-control-view */ return 0; } return 1; @@ -797,6 +797,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS3(opt, "local-zone-override", local_zone_overrides) else O_LS3(opt, "access-control-tag-action", acl_tag_actions) else O_LS3(opt, "access-control-tag-data", acl_tag_datas) + else O_LS2(opt, "access-control-view", acl_view) /* not here: * outgoing-permit, outgoing-avoid - have list of ports * local-zone - zones and nodefault variables @@ -983,6 +984,25 @@ config_delstubs(struct config_stub* p) } } +void +config_delview(struct config_view* p) +{ + if(!p) return; + free(p->name); + config_deldblstrlist(p->local_zones); + free(p); +} + +void +config_delviews(struct config_view* p) +{ + struct config_view* np; + while(p) { + np = p->next; + config_delview(p); + p = np; + } +} /** delete string array */ static void config_del_strarray(char** array, int num) diff --git a/util/config_file.h b/util/config_file.h index 07edff7b4..be8ce02c3 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -42,6 +42,7 @@ #ifndef UTIL_CONFIG_FILE_H #define UTIL_CONFIG_FILE_H struct config_stub; +struct config_view; struct config_strlist; struct config_str2list; struct config_str3list; @@ -167,6 +168,8 @@ struct config_file { struct config_stub* stubs; /** the forward zone definitions, linked list */ struct config_stub* forwards; + /** the views definitions, linked list */ + struct config_view* views; /** list of donotquery addresses, linked list */ struct config_strlist* donotqueryaddrs; /** list of access control entries, linked list */ @@ -310,6 +313,8 @@ struct config_file { struct config_str3list* acl_tag_actions; /** list of aclname, tagname, redirectdata */ struct config_str3list* acl_tag_datas; + /** list of aclname, view*/ + struct config_str2list* acl_view; /** tag list, array with tagname[i] is malloced string */ char** tagname; /** number of items in the taglist */ @@ -423,6 +428,25 @@ struct config_stub { int isfirst; }; +/** + * View config options + */ +struct config_view { + /** next in list */ + struct config_view* next; + /** view name */ + char* name; + /** local zones */ + struct config_str2list* local_zones; + /** local data RRs */ + struct config_strlist* local_data; + /** local zones nodefault list */ + struct config_strlist* local_zones_nodefault; + /** Fallback to global local_zones when there is no match in the view + * view specific tree. 1 for yes, 0 for no */ + int isfirst; +}; + /** * List of strings for config options */ @@ -681,6 +705,18 @@ void config_delstub(struct config_stub* p); */ void config_delstubs(struct config_stub* list); +/** + * Delete a view item + * @param p: view item + */ +void config_delview(struct config_view* p); + +/** + * Delete items in config view list. + * @param list: list. + */ +void config_delviews(struct config_view* list); + /** * Convert 14digit to time value * @param str: string of 14 digits diff --git a/util/configlexer.c b/util/configlexer.c index ab31ab04c..07ac1a982 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -9,8 +9,8 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 0 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -163,12 +163,7 @@ typedef unsigned int flex_uint32_t; typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern yy_size_t yyleng; +extern int yyleng; extern FILE *yyin, *yyout; @@ -177,7 +172,6 @@ extern FILE *yyin, *yyout; #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -195,6 +189,11 @@ extern FILE *yyin, *yyout; #define unput(c) yyunput( c, (yytext_ptr) ) +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -212,7 +211,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -282,8 +281,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -311,7 +310,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -354,17 +353,11 @@ extern int yylineno; int yylineno = 1; extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); -#if defined(__GNUC__) && __GNUC__ >= 3 -__attribute__((__noreturn__)) -#endif static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the @@ -378,8 +371,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 188 -#define YY_END_OF_BUFFER 189 +#define YY_NUM_RULES 191 +#define YY_END_OF_BUFFER 192 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -387,217 +380,220 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1880] = +static yyconst flex_int16_t yy_accept[1896] = { 0, - 1, 1, 170, 170, 174, 174, 178, 178, 182, 182, - 1, 1, 189, 186, 1, 168, 168, 187, 2, 187, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 170, 171, 171, 172, 187, 174, 175, 175, 176, 187, - 181, 178, 179, 179, 180, 187, 182, 183, 183, 184, - 187, 185, 169, 2, 173, 187, 185, 186, 0, 1, - 2, 2, 2, 2, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 1, 1, 173, 173, 177, 177, 181, 181, 185, 185, + 1, 1, 192, 189, 1, 171, 171, 190, 2, 190, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 173, 174, 174, 175, 190, 177, 178, 178, 179, 190, + 184, 181, 182, 182, 183, 190, 185, 186, 186, 187, + 190, 188, 172, 2, 176, 190, 188, 189, 0, 1, + 2, 2, 2, 2, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 170, 0, 174, 0, - 181, 0, 178, 182, 0, 185, 0, 2, 2, 185, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 173, 0, 177, + 0, 184, 0, 181, 185, 0, 188, 0, 2, 2, + 188, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 186, 186, 186, 186, 185, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 185, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 188, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 188, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 75, 186, 186, 186, 186, 186, 186, 7, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 185, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 75, 189, 189, 189, 189, 189, + 189, 7, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 84, 188, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 185, 186, 186, 186, 186, 186, 35, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 148, - 186, 13, 14, 186, 17, 16, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 188, 189, + 189, 189, 189, 189, 35, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 151, 189, 13, 14, 189, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 135, 186, - 186, 186, 186, 186, 186, 186, 3, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 185, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 17, 16, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 137, 189, 189, 189, 189, 189, + 189, 189, 3, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 188, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 177, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 38, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 39, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 19, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 90, 177, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 180, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 38, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 39, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 19, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 92, 189, 180, 189, 189, 189, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 89, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 73, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 24, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 36, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 91, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 73, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 24, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 37, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 26, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 162, 186, 186, - 186, 186, 186, 186, 30, 186, 31, 186, 186, 186, + 189, 189, 189, 36, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 37, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 26, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 165, 189, 189, 189, - 76, 186, 77, 186, 74, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 6, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 142, 186, 186, 186, 186, 92, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 27, 186, 186, 186, 186, 186, 186, - 118, 186, 117, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 15, + 189, 189, 189, 30, 189, 31, 189, 189, 189, 76, + 189, 77, 189, 74, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 6, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 144, 189, 189, 189, 189, 94, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 27, 189, 189, 189, 189, 189, 189, + 120, 189, 119, 189, 189, 189, 189, 189, 189, 189, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 40, - 186, 186, 186, 186, 186, 186, 186, 186, 79, 78, - 186, 186, 186, 186, 186, 186, 186, 114, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 58, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 62, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 34, 186, 186, - 186, 186, 186, 186, 186, 186, 116, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 15, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 40, + 189, 189, 189, 189, 189, 189, 189, 189, 79, 78, + 189, 189, 189, 189, 189, 189, 189, 116, 189, 189, + 189, 189, 189, 189, 189, 85, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 58, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 62, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 34, 189, - 186, 186, 186, 186, 186, 186, 5, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 110, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 128, 186, - 111, 186, 186, 140, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 25, 186, 186, 186, 186, 81, - 186, 82, 80, 186, 186, 186, 186, 186, 186, 186, - 88, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 189, 189, 189, 189, 118, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 5, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 112, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 130, + 189, 113, 189, 189, 142, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 25, 189, 189, 189, 189, + 81, 189, 82, 80, 189, 189, 189, 189, 189, 189, - 186, 186, 186, 112, 186, 186, 186, 186, 186, 186, - 139, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 72, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 32, - 186, 186, 21, 186, 186, 186, 18, 186, 97, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 47, 49, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 149, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 83, 186, - 186, 186, 186, 186, 186, 87, 186, 186, 186, 186, + 189, 90, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 114, 189, 189, 189, 189, 189, + 189, 141, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 72, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 32, 189, 189, 21, 189, 189, 189, 18, 189, 99, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 47, 49, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 152, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 83, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 91, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 134, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 101, 186, 105, 186, 186, 186, 186, 186, - 86, 186, 186, 68, 186, 126, 186, 186, 186, 186, - 186, 141, 186, 186, 186, 186, 186, 186, 186, 154, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 104, 186, 186, 186, 186, 186, 50, 51, 186, + 189, 189, 189, 189, 189, 189, 89, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 93, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 136, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 103, 189, 107, 189, 189, 189, 189, + 189, 88, 189, 189, 68, 189, 128, 189, 189, 189, + 189, 189, 143, 189, 189, 189, 189, 189, 189, 189, + 157, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 186, 33, 57, 106, 186, 119, 186, 143, 115, 186, - 186, 43, 186, 108, 186, 186, 186, 186, 186, 8, - 186, 186, 186, 71, 186, 186, 186, 186, 164, 186, - 125, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 93, 153, 186, 186, 186, 186, 186, 186, 186, 186, - 136, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 107, 186, 186, 42, - 44, 186, 186, 186, 186, 186, 186, 186, 70, 186, + 189, 189, 106, 189, 189, 189, 189, 189, 50, 51, + 189, 189, 33, 57, 108, 189, 121, 189, 145, 117, + 189, 189, 43, 189, 110, 189, 189, 189, 189, 189, + 8, 189, 189, 189, 71, 189, 189, 189, 189, 167, + 189, 127, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 95, 156, 189, 189, 189, 189, 189, 189, + 189, 189, 138, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 109, 189, - 186, 186, 186, 163, 186, 186, 186, 186, 130, 22, - 23, 186, 186, 186, 186, 186, 186, 186, 67, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 132, 129, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 41, 186, 186, 186, 186, 186, 186, 186, 12, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 11, 186, 186, 20, 186, 186, 186, 167, 186, 45, - 186, 138, 131, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 100, 99, 186, 186, 186, 133, - 127, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 189, 42, 44, 189, 189, 189, 189, 189, 189, 189, + 70, 189, 189, 189, 189, 166, 189, 189, 189, 189, + 132, 22, 23, 189, 189, 189, 189, 189, 189, 189, + 67, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 134, 131, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 41, 189, 189, 189, 189, 189, + 189, 189, 12, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 11, 189, 189, 20, 189, 189, 189, + 170, 189, 45, 189, 140, 133, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 102, 101, 189, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 52, 186, 186, 186, 137, 186, 186, 186, 186, 186, - 186, 186, 186, 46, 186, 186, 186, 94, 96, 120, - 186, 186, 186, 98, 186, 186, 144, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 150, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 121, - 186, 186, 186, 28, 186, 186, 186, 4, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 152, 186, 186, - 124, 186, 186, 186, 186, 186, 186, 186, 55, 186, + 189, 189, 189, 135, 129, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 52, 189, 189, 189, 139, 189, + 189, 189, 189, 189, 189, 189, 189, 46, 189, 189, + 189, 96, 98, 122, 189, 189, 189, 100, 189, 189, + 146, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 153, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 123, 189, 189, 189, 28, 189, + 189, 189, 4, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 149, 189, 189, 189, 189, 189, - 29, 147, 186, 10, 186, 186, 186, 186, 186, 122, - 59, 186, 186, 186, 103, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 151, 84, 186, 186, 186, - 186, 61, 65, 60, 186, 53, 186, 9, 186, 186, - 165, 186, 186, 102, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 66, 64, 186, - 54, 186, 113, 186, 123, 186, 186, 186, 186, 95, - 48, 186, 186, 186, 186, 186, 186, 186, 85, 63, - 56, 166, 186, 186, 186, 146, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 189, 189, 189, 155, 189, 189, 126, 189, 189, 189, + 189, 189, 189, 189, 55, 189, 29, 150, 189, 10, + 189, 189, 189, 189, 189, 124, 59, 189, 189, 189, + 105, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 154, 86, 189, 189, 189, 189, 61, 65, 60, + 189, 53, 189, 9, 189, 189, 168, 189, 189, 104, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 66, 64, 189, 54, 189, 115, 189, + 125, 189, 189, 189, 189, 97, 48, 189, 189, 189, + 189, 189, 189, 189, 87, 63, 56, 169, 189, 189, + + 189, 148, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 69, + 189, 147, 164, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 111, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 160, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 158, 189, 161, 162, 189, 189, 189, + 189, 189, 159, 163, 0 - 186, 186, 186, 69, 186, 145, 161, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 109, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 157, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 155, 186, 158, - 159, 186, 186, 186, 186, 186, 156, 160, 0 } ; -static yyconst YY_CHAR yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, @@ -629,7 +625,7 @@ static yyconst YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst YY_CHAR yy_meta[40] = +static yyconst flex_int32_t yy_meta[40] = { 0, 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, @@ -637,850 +633,855 @@ static yyconst YY_CHAR yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_uint16_t yy_base[1894] = +static yyconst flex_int16_t yy_base[1910] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 87, 108, 2706, 2627, 50, 3718, 3718, 3718, 129, 94, + 87, 108, 2353, 2241, 50, 3749, 3749, 3749, 129, 94, 70, 104, 130, 90, 92, 115, 127, 95, 84, 111, - 137, 148, 50, 170, 122, 150, 157, 160, 140, 166, - 2201, 3718, 3718, 3718, 70, 1940, 3718, 3718, 3718, 42, - 1888, 1804, 3718, 3718, 3718, 192, 1588, 3718, 3718, 3718, - 141, 1560, 3718, 198, 3718, 202, 197, 1310, 210, 120, - 0, 223, 0, 0, 103, 203, 180, 205, 164, 206, - 213, 210, 125, 216, 231, 218, 227, 224, 230, 233, - 234, 236, 240, 254, 238, 251, 255, 241, 252, 263, + 137, 148, 50, 170, 122, 150, 157, 160, 140, 181, + 2186, 3749, 3749, 3749, 70, 2176, 3749, 3749, 3749, 42, + 1744, 1619, 3749, 3749, 3749, 200, 1496, 3749, 3749, 3749, + 141, 1425, 3749, 207, 3749, 211, 166, 1292, 217, 120, + 0, 228, 0, 0, 103, 167, 164, 210, 197, 173, + 212, 214, 125, 174, 230, 221, 229, 223, 234, 236, + 237, 231, 244, 251, 238, 248, 255, 254, 256, 261, - 261, 264, 271, 269, 253, 270, 275, 272, 280, 274, - 173, 281, 283, 284, 286, 291, 292, 295, 297, 293, - 300, 302, 304, 303, 310, 312, 1006, 322, 879, 326, - 690, 337, 508, 321, 333, 245, 343, 347, 0, 340, - 344, 350, 333, 346, 342, 351, 352, 353, 363, 355, - 356, 370, 369, 390, 373, 359, 371, 49, 315, 375, - 368, 377, 381, 379, 383, 386, 400, 385, 387, 407, - 408, 417, 418, 415, 395, 419, 421, 427, 430, 428, - 429, 431, 432, 433, 434, 436, 438, 440, 443, 441, - 448, 446, 447, 454, 450, 455, 460, 464, 462, 463, + 259, 267, 268, 269, 271, 272, 277, 274, 279, 276, + 285, 283, 287, 289, 293, 295, 299, 297, 301, 298, + 305, 183, 306, 310, 307, 314, 318, 1039, 333, 888, + 326, 843, 339, 461, 386, 335, 311, 345, 349, 0, + 342, 346, 352, 335, 348, 344, 353, 354, 355, 365, + 357, 358, 372, 371, 392, 375, 361, 373, 49, 377, + 379, 383, 370, 387, 382, 388, 389, 403, 390, 395, + 419, 407, 420, 421, 418, 239, 422, 424, 430, 433, + 398, 431, 432, 434, 435, 436, 437, 439, 442, 440, + 443, 446, 448, 449, 461, 453, 457, 462, 465, 464, - 471, 474, 478, 477, 476, 480, 482, 489, 486, 498, - 485, 483, 384, 487, 494, 502, 504, 507, 512, 510, - 513, 515, 503, 517, 521, 523, 527, 516, 528, 533, - 539, 524, 535, 526, 536, 540, 542, 537, 546, 543, - 548, 551, 557, 556, 558, 554, 560, 562, 564, 567, - 573, 581, 565, 572, 578, 582, 585, 587, 590, 596, - 584, 598, 588, 601, 607, 604, 605, 606, 608, 612, - 614, 618, 615, 616, 619, 617, 626, 627, 634, 649, - 635, 636, 638, 625, 641, 642, 658, 643, 647, 654, - 655, 657, 675, 671, 673, 674, 681, 677, 678, 682, + 466, 471, 479, 480, 482, 476, 477, 481, 485, 491, + 487, 495, 488, 494, 496, 498, 502, 504, 509, 513, + 508, 515, 517, 519, 521, 520, 522, 524, 530, 528, + 531, 529, 543, 537, 540, 539, 541, 544, 546, 547, + 548, 550, 551, 555, 561, 559, 563, 553, 571, 564, + 566, 572, 574, 582, 583, 578, 587, 588, 590, 592, + 589, 600, 593, 604, 603, 596, 610, 606, 607, 614, + 611, 613, 618, 628, 630, 620, 622, 621, 624, 637, + 631, 657, 639, 643, 649, 646, 647, 650, 655, 658, + 651, 661, 662, 663, 664, 683, 670, 680, 682, 689, - 684, 686, 687, 692, 694, 695, 689, 697, 700, 701, - 708, 712, 705, 720, 698, 717, 721, 724, 726, 728, - 718, 734, 737, 730, 736, 738, 739, 740, 742, 744, - 748, 3718, 752, 746, 754, 755, 756, 757, 3718, 759, - 758, 760, 766, 763, 768, 775, 785, 770, 771, 781, - 782, 784, 787, 789, 790, 810, 794, 796, 791, 803, - 797, 801, 812, 795, 822, 804, 817, 824, 806, 827, - 828, 831, 832, 830, 834, 842, 835, 841, 843, 844, - 854, 846, 855, 848, 861, 857, 862, 863, 865, 874, - 870, 876, 878, 885, 887, 889, 895, 871, 891, 893, + 685, 686, 697, 687, 688, 693, 698, 700, 699, 705, + 706, 708, 710, 711, 714, 713, 726, 715, 725, 724, + 727, 733, 735, 729, 737, 744, 741, 743, 745, 746, + 747, 749, 751, 755, 3749, 758, 753, 760, 761, 763, + 764, 3749, 766, 765, 767, 778, 771, 777, 779, 793, + 789, 769, 775, 790, 795, 792, 798, 799, 819, 801, + 803, 800, 828, 802, 804, 808, 806, 811, 815, 817, + 826, 813, 834, 837, 838, 836, 839, 840, 3749, 844, + 857, 849, 850, 851, 858, 860, 853, 867, 863, 869, + 870, 871, 874, 873, 883, 880, 887, 891, 884, 895, - 899, 898, 900, 901, 908, 904, 868, 907, 906, 911, - 913, 917, 914, 923, 916, 926, 930, 927, 920, 935, - 936, 937, 943, 939, 941, 947, 946, 942, 948, 958, - 954, 966, 964, 963, 970, 971, 972, 978, 974, 976, - 982, 955, 980, 986, 975, 987, 989, 990, 991, 992, - 996, 997, 998, 1007, 1000, 1003, 1016, 1014, 1009, 1021, - 1012, 1004, 1024, 1025, 1029, 1031, 1030, 1036, 1027, 1033, - 1039, 1042, 1044, 1043, 1047, 1050, 1052, 1054, 3718, 1060, - 1057, 1058, 1064, 1065, 1072, 1066, 1068, 1059, 1087, 3718, - 1070, 3718, 3718, 1073, 3718, 3718, 1069, 1075, 1089, 1100, + 897, 903, 881, 899, 901, 911, 908, 909, 900, 915, + 913, 907, 916, 917, 922, 925, 926, 927, 934, 930, + 933, 938, 932, 940, 944, 945, 946, 952, 948, 956, + 957, 950, 951, 962, 968, 965, 971, 972, 973, 982, + 967, 974, 984, 983, 985, 991, 993, 989, 994, 997, + 998, 999, 1000, 1001, 1002, 1004, 1006, 1007, 1014, 1010, + 1012, 1025, 1013, 1021, 1023, 1027, 1030, 1033, 1034, 1035, + 1037, 1042, 1045, 1036, 1048, 1051, 1038, 1053, 1056, 1063, + 1064, 1057, 1058, 1065, 3749, 1075, 1069, 1072, 1071, 1073, + 1082, 1079, 1080, 1081, 1107, 3749, 1084, 3749, 3749, 1085, - 1110, 1097, 1080, 1079, 1088, 1108, 1094, 1115, 1103, 1119, - 1121, 1124, 1125, 1131, 1113, 1123, 1134, 1136, 1137, 1135, - 1139, 1140, 1142, 1151, 1152, 1155, 1148, 1156, 1159, 1160, - 1161, 1162, 1149, 1171, 1163, 1165, 1179, 1175, 3718, 1176, - 1177, 1180, 1181, 1187, 1182, 1189, 3718, 1184, 1191, 1190, - 1193, 1198, 1199, 1201, 1202, 1203, 1204, 1207, 1208, 1209, - 1218, 1212, 1214, 1229, 1230, 1227, 1226, 1234, 1233, 1235, - 1236, 1244, 1240, 1241, 1242, 1252, 1248, 1250, 1254, 1251, - 1257, 1258, 1260, 1262, 1263, 1285, 1264, 1267, 1272, 1270, - 1269, 1274, 1275, 1278, 1279, 1282, 1297, 1298, 1299, 1291, + 3749, 3749, 1086, 1088, 1092, 1105, 1130, 1103, 1093, 1090, + 1101, 1110, 1113, 1117, 1121, 1122, 1128, 1124, 1135, 1139, + 1125, 1138, 1143, 1145, 1146, 1150, 1151, 1152, 1155, 1161, + 1164, 1160, 1166, 1167, 1168, 1170, 1173, 1174, 1171, 1180, + 1177, 1183, 1187, 1184, 3749, 1185, 1189, 1192, 1193, 1196, + 1199, 1201, 3749, 1200, 1205, 1202, 1206, 1208, 1209, 1211, + 1213, 1215, 1216, 1218, 1222, 1219, 1232, 1224, 1228, 1239, + 1243, 1237, 1240, 1245, 1246, 1247, 1248, 1255, 1253, 1252, + 1254, 1263, 1260, 1262, 1264, 1266, 1269, 1271, 1272, 1273, + 1274, 1276, 1298, 1277, 1279, 1285, 1281, 1286, 1287, 1289, - 1281, 1300, 1309, 1316, 1317, 1307, 1321, 1308, 1320, 1327, - 1324, 1330, 1331, 1333, 1335, 1336, 3718, 1342, 1341, 1339, - 1346, 1353, 1349, 1347, 1351, 1355, 1356, 1350, 1357, 1361, - 1363, 1364, 1372, 3718, 1368, 1370, 1374, 1375, 1378, 1379, - 1376, 1390, 1397, 1382, 3718, 1386, 1399, 1400, 1393, 1403, - 1405, 1406, 1407, 1408, 1409, 1410, 1413, 1414, 1412, 1416, - 1424, 1426, 1419, 1429, 1431, 1433, 1434, 1438, 1436, 1439, - 3718, 1440, 1442, 1446, 1443, 1453, 1461, 1447, 1460, 1450, - 1463, 1464, 1470, 1465, 1471, 1467, 1468, 3718, 158, 1473, - 1474, 1472, 1484, 1490, 1491, 1494, 1481, 1488, 1498, 1482, + 1299, 1304, 1308, 1295, 1311, 1315, 1317, 1321, 1322, 1323, + 1330, 1327, 1293, 1332, 1324, 1334, 1339, 1343, 1341, 1344, + 1345, 1351, 1352, 3749, 1359, 1357, 1347, 1355, 1367, 1365, + 1361, 1363, 1369, 1373, 1371, 1374, 1375, 1377, 1378, 1381, + 3749, 1383, 1386, 1384, 1388, 1389, 1392, 1396, 1400, 1403, + 1406, 3749, 1407, 1413, 1410, 1415, 1416, 1409, 1417, 1420, + 1421, 1422, 1426, 1428, 1435, 1434, 1436, 1438, 1439, 1427, + 1444, 1446, 1449, 1451, 1452, 1453, 1454, 3749, 1455, 1457, + 1456, 1462, 1466, 1475, 1463, 1477, 1469, 1472, 1479, 1484, + 1481, 1483, 1482, 1485, 3749, 1487, 158, 1489, 1490, 1493, - 1500, 1501, 1505, 1504, 1507, 1510, 1509, 1511, 1512, 1513, - 1516, 1515, 1525, 1475, 1518, 1526, 1528, 1529, 1537, 1530, - 1534, 1531, 1541, 1543, 1544, 1545, 1546, 1547, 1552, 1553, - 1554, 1555, 1562, 3718, 1566, 1550, 1572, 1563, 1573, 1567, - 1582, 1574, 1576, 1584, 1586, 1587, 1594, 1591, 1595, 1597, - 1603, 1598, 1601, 1605, 1608, 1614, 1615, 1611, 1613, 1627, - 1620, 1624, 1612, 3718, 1625, 1618, 1628, 1630, 1649, 1637, - 1631, 1632, 1638, 1635, 1634, 1655, 1642, 1661, 3718, 1662, - 1658, 1656, 1667, 1664, 1669, 1671, 1673, 1670, 1674, 1677, - 1678, 1680, 1682, 1686, 1687, 3718, 1693, 1696, 1697, 1703, + 1500, 1502, 1504, 1507, 1494, 1511, 1514, 1515, 1498, 1516, + 1518, 1520, 1522, 1524, 1526, 1528, 1527, 1531, 1535, 1529, + 1537, 1542, 1541, 1543, 1548, 1546, 1549, 1550, 1556, 1555, + 1557, 1558, 1561, 1562, 1563, 1566, 1567, 1570, 1571, 1575, + 1579, 3749, 1583, 1577, 1581, 1580, 1592, 1584, 1599, 1590, + 1593, 1601, 1603, 1604, 1610, 1611, 1614, 1615, 1617, 1621, + 1622, 1623, 1606, 1631, 1633, 1629, 1632, 1638, 1639, 1643, + 1635, 3749, 1644, 1642, 1645, 1650, 1665, 1653, 1649, 1661, + 1662, 1655, 1666, 1671, 1672, 1675, 3749, 1677, 1678, 1679, + 1682, 1684, 1686, 1688, 1690, 1692, 1694, 1695, 1696, 1705, - 1695, 1689, 1699, 1706, 1701, 1082, 1712, 1709, 1711, 1713, - 1714, 1715, 1717, 1718, 1720, 1719, 1727, 1722, 1728, 3718, - 1730, 1740, 1741, 1734, 1744, 1747, 1753, 1751, 1752, 1754, - 1736, 1756, 1759, 1757, 1758, 1765, 1766, 1760, 1767, 1768, - 1770, 1771, 1772, 1780, 1786, 1776, 1788, 1789, 1792, 1782, - 1795, 1801, 1807, 1805, 1808, 3718, 1811, 1812, 1799, 1813, - 1814, 1815, 1824, 1826, 1820, 1822, 1827, 1829, 1830, 1837, - 1831, 1833, 1835, 1838, 1842, 1840, 1843, 1844, 1846, 1847, - 1863, 1855, 1864, 1865, 1866, 1867, 1870, 3718, 1851, 1874, - 1877, 1879, 1881, 1890, 3718, 1869, 3718, 1886, 1892, 1899, + 1697, 1702, 1700, 3749, 1714, 1716, 1713, 1722, 1710, 1720, + 1721, 1724, 1725, 1726, 1727, 1733, 1729, 1731, 1730, 1734, + 1735, 1737, 1738, 1740, 1748, 1755, 1741, 1756, 3749, 1747, + 1770, 1759, 1767, 1760, 1771, 1777, 1774, 1773, 1776, 1625, + 1779, 1781, 1780, 1782, 1783, 1788, 1789, 1790, 1792, 1794, + 1791, 1796, 1793, 1811, 1799, 1803, 1805, 1813, 1814, 1818, + 1826, 1827, 1824, 1828, 3749, 1831, 1832, 1815, 1834, 1837, + 1838, 1845, 1847, 1841, 1843, 1848, 1849, 1850, 1858, 1852, + 1854, 1859, 1861, 1855, 1863, 1864, 1865, 1867, 1875, 1877, + 1881, 1885, 1882, 1883, 1888, 1891, 3749, 1894, 1899, 1900, - 3718, 1896, 3718, 1898, 3718, 1900, 1904, 1902, 1884, 1906, - 1907, 1908, 1911, 1913, 1914, 1916, 1918, 1921, 1922, 1919, - 3718, 1926, 1928, 1930, 1927, 1934, 1935, 1936, 1937, 1946, - 1947, 1956, 1939, 1958, 3718, 1949, 1961, 1943, 1964, 3718, - 1950, 1965, 1967, 1968, 1969, 1976, 1973, 1977, 1980, 1981, - 1989, 1995, 1982, 1984, 1991, 1993, 1994, 2001, 1997, 1998, - 2005, 2007, 2000, 2008, 2009, 2011, 2014, 2017, 2021, 2015, - 2019, 2022, 2023, 3718, 2032, 2033, 2027, 2034, 2037, 2024, - 3718, 2043, 3718, 2048, 2050, 2051, 2045, 2055, 2052, 2057, - 2059, 2065, 2073, 2054, 2062, 2067, 2070, 2076, 2077, 3718, + 1902, 1896, 1908, 3749, 1872, 3749, 1904, 1911, 1918, 3749, + 1920, 3749, 1922, 3749, 1923, 1924, 1915, 1907, 1917, 1928, + 1927, 1935, 1929, 1936, 1938, 1939, 1940, 1943, 1941, 3749, + 1948, 1945, 1951, 1952, 1954, 1955, 1956, 1957, 1958, 1967, + 1968, 1977, 1961, 1979, 3749, 1970, 1983, 1971, 1980, 3749, + 1964, 1991, 1985, 1987, 1993, 1994, 1995, 2001, 1998, 2002, + 2005, 2009, 2012, 2006, 2014, 2015, 2016, 2022, 2018, 2020, + 2029, 2026, 2019, 2023, 2030, 2032, 2036, 2034, 2044, 2038, + 2040, 2042, 2045, 3749, 2052, 2049, 2053, 2055, 2061, 2059, + 3749, 2057, 3749, 2064, 2071, 2076, 2067, 2069, 2065, 2079, - 2078, 2079, 2080, 2082, 2086, 2083, 2090, 2087, 2093, 3718, - 2106, 2094, 2107, 2104, 2100, 2113, 2109, 2114, 3718, 3718, - 2116, 2115, 2118, 2119, 2126, 2125, 2127, 3718, 2129, 2130, - 2132, 2135, 2139, 2133, 2131, 2143, 2147, 2148, 2150, 2151, - 2152, 2153, 2160, 2156, 2159, 2161, 2166, 2170, 2175, 3718, - 2171, 2169, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2188, - 2189, 2190, 2195, 2203, 2199, 2202, 2204, 2207, 2208, 2212, - 2214, 2215, 2222, 2223, 3718, 2230, 2216, 2232, 2218, 2236, - 2237, 2244, 2233, 2229, 2231, 2253, 2240, 3718, 2241, 2242, - 2257, 2250, 2258, 2254, 2261, 2264, 3718, 2262, 2267, 2269, + 2080, 2087, 2086, 2090, 2092, 2093, 2094, 2096, 2095, 3749, + 2097, 2098, 2099, 2101, 2104, 2109, 2118, 2115, 2102, 3749, + 2126, 2123, 2130, 2128, 2129, 2136, 2132, 2135, 3749, 3749, + 2139, 2137, 2140, 2142, 2148, 2146, 2151, 3749, 2152, 2153, + 2154, 2155, 2163, 2156, 2164, 3749, 2166, 2171, 2174, 2173, + 2167, 2177, 2175, 2183, 2184, 2182, 2185, 2193, 2103, 2198, + 3749, 2190, 2199, 2202, 2203, 2204, 2205, 2206, 2207, 2211, + 2210, 2213, 2212, 2221, 2228, 2217, 2224, 2225, 2230, 2226, + 2235, 2237, 2240, 2247, 2248, 3749, 2254, 2239, 2255, 2231, + 2253, 2258, 2265, 2261, 2262, 2263, 2269, 2266, 3749, 2267, - 2268, 2270, 2272, 2277, 2273, 2280, 3718, 2281, 2287, 2285, - 2288, 2294, 2297, 2291, 2301, 2293, 2300, 2303, 2304, 2307, - 2308, 2309, 2311, 2313, 2314, 2315, 2317, 2318, 2325, 2321, - 2339, 2319, 2329, 2336, 2342, 2349, 2350, 2334, 2346, 2352, - 2351, 2353, 2354, 2355, 2361, 2359, 2367, 2364, 3718, 2365, - 2369, 2372, 2374, 2375, 2377, 2379, 2382, 2378, 3718, 2385, - 3718, 2386, 2391, 3718, 2392, 2394, 2396, 2397, 2399, 2400, - 2398, 2405, 2412, 2401, 3718, 2408, 2411, 2413, 2414, 3718, - 2425, 3718, 3718, 2418, 2421, 2431, 2427, 2436, 2428, 2439, - 3718, 2434, 2432, 2442, 2440, 2445, 2446, 2447, 2448, 2450, + 2268, 2271, 2272, 2276, 2279, 2278, 2284, 3749, 2287, 2291, + 2288, 2294, 2293, 2292, 2304, 2295, 2297, 3749, 2306, 2312, + 2308, 2309, 2315, 2319, 2323, 2320, 2317, 2324, 2327, 2329, + 2330, 2331, 2332, 2334, 2336, 2337, 2338, 2339, 2343, 2348, + 2350, 2355, 2342, 2357, 2364, 2368, 2370, 2377, 2360, 2362, + 2378, 2375, 2376, 2379, 2381, 2388, 2382, 2389, 2385, 3749, + 2390, 2394, 2399, 2401, 2392, 2396, 2403, 2405, 2407, 3749, + 2409, 3749, 2410, 2415, 3749, 2417, 2419, 2420, 2421, 2423, + 2424, 2422, 2428, 2436, 2425, 3749, 2434, 2432, 2438, 2442, + 3749, 2445, 3749, 3749, 2437, 2448, 2454, 1097, 2455, 2457, - 2453, 2451, 2454, 3718, 2456, 2455, 2462, 2464, 2463, 2472, - 3718, 2465, 2478, 2467, 2482, 2473, 2483, 2484, 2485, 2486, - 2495, 2491, 2492, 2494, 3718, 2497, 2498, 2500, 2507, 2504, - 2501, 2514, 2510, 2511, 2517, 2518, 2520, 2523, 2524, 3718, - 2526, 2528, 3718, 2525, 2534, 2535, 3718, 2537, 3718, 2539, - 2540, 2541, 2544, 2547, 2548, 2550, 2542, 2552, 2558, 2559, - 2565, 2562, 2567, 3718, 3718, 2569, 2571, 2574, 2575, 2577, - 2578, 2584, 2581, 2583, 3718, 2585, 2588, 2590, 2591, 2592, - 2594, 2595, 2599, 2600, 2601, 2602, 2603, 2605, 3718, 2608, - 2609, 2615, 2614, 2618, 2617, 3718, 2620, 2622, 2623, 2626, + 2461, 3749, 2458, 2453, 2463, 2466, 2467, 2468, 2469, 2470, + 2471, 2472, 2474, 2476, 3749, 2478, 2477, 2484, 2485, 2486, + 2489, 3749, 2491, 2500, 2492, 2501, 2507, 2503, 2510, 2495, + 2504, 2516, 2512, 2514, 2520, 3749, 2519, 2521, 2523, 2525, + 2529, 2530, 2536, 2532, 2539, 2533, 2534, 2540, 2547, 2548, + 3749, 2549, 2552, 3749, 2551, 2553, 2555, 3749, 2559, 3749, + 2561, 2562, 2558, 2563, 2569, 2566, 2579, 2570, 2576, 2581, + 2574, 2593, 2582, 2584, 3749, 3749, 2595, 2591, 2597, 2598, + 2601, 2585, 2607, 2605, 2609, 3749, 2606, 2611, 2612, 2614, + 2615, 2618, 2617, 2622, 2619, 2624, 2625, 2626, 2627, 3749, - 2628, 2642, 2645, 2647, 2637, 2648, 2650, 2654, 2656, 2632, - 2658, 2621, 2660, 2663, 2664, 3718, 2665, 2667, 2668, 2672, - 2673, 2669, 2674, 2678, 2681, 2676, 2682, 2684, 2686, 3718, - 2688, 2689, 2690, 2692, 2699, 2700, 2702, 2704, 2706, 2709, - 2710, 2711, 2713, 2714, 2715, 2720, 2717, 2724, 2726, 2723, - 2734, 2739, 3718, 2721, 3718, 2731, 2744, 2747, 2748, 2746, - 3718, 2750, 2751, 3718, 2752, 3718, 2753, 2754, 2755, 2758, - 2762, 3718, 2768, 2763, 2771, 2769, 2773, 2774, 2778, 3718, - 2776, 2782, 2784, 2786, 2788, 2789, 2790, 2792, 2795, 2801, - 2798, 3718, 2797, 2802, 2810, 2806, 2809, 3718, 3718, 2815, + 2628, 2632, 2634, 2637, 2638, 2640, 3749, 2642, 2644, 2649, + 2643, 2654, 2659, 2664, 2666, 2655, 2668, 2672, 2674, 2676, + 2669, 2678, 2679, 2683, 2685, 2680, 3749, 2686, 2690, 2687, + 2693, 2694, 2695, 2645, 2702, 2705, 2696, 2698, 2700, 2708, + 3749, 2709, 2710, 2711, 2716, 2722, 2717, 2724, 2714, 2727, + 2725, 2730, 2732, 2731, 2735, 2738, 2739, 2743, 2741, 2745, + 2746, 2752, 2749, 3749, 2751, 3749, 2755, 2761, 2768, 2765, + 2757, 3749, 2767, 2769, 3749, 2772, 3749, 2770, 2775, 2776, + 2781, 2786, 3749, 2788, 2783, 2789, 2791, 2792, 2794, 2798, + 3749, 2800, 2802, 2808, 2809, 2795, 2810, 2812, 2801, 2817, - 2816, 3718, 3718, 3718, 2819, 3718, 2820, 3718, 3718, 2821, - 2823, 3718, 2825, 3718, 2832, 2830, 2828, 2833, 2834, 3718, - 2835, 2836, 2841, 3718, 2837, 2847, 2843, 2845, 3718, 2850, - 3718, 2851, 2857, 2852, 2853, 2863, 2865, 2868, 2869, 2870, - 2871, 2872, 2873, 2874, 2875, 2877, 2878, 2880, 2882, 2886, - 2889, 2890, 2891, 2893, 2894, 2896, 2898, 2908, 2910, 2914, - 3718, 3718, 2897, 2900, 2905, 2912, 2919, 2920, 2921, 2922, - 3718, 2925, 2926, 2929, 2930, 2931, 2933, 2934, 2937, 2942, - 2943, 2944, 2946, 2947, 2948, 2952, 3718, 2954, 2955, 3718, - 3718, 2957, 2964, 2959, 2960, 2965, 2969, 2976, 3718, 2970, + 2823, 2819, 3749, 2811, 2826, 2833, 2829, 2830, 3749, 3749, + 2820, 2835, 3749, 3749, 3749, 2839, 3749, 2840, 3749, 3749, + 2841, 2843, 3749, 2845, 3749, 2852, 2848, 2850, 2851, 2854, + 3749, 2853, 2855, 2857, 3749, 2860, 2868, 2861, 2862, 3749, + 2865, 3749, 2870, 2874, 2871, 2878, 2881, 2887, 2889, 2882, + 2884, 2891, 2892, 2893, 2890, 2896, 2898, 2899, 2900, 2901, + 2906, 2907, 2909, 2910, 2913, 2912, 2914, 2915, 2924, 2918, + 2928, 2932, 3749, 3749, 2925, 2934, 2935, 2938, 2937, 2939, + 2942, 2940, 3749, 2944, 2947, 2948, 2949, 2950, 2951, 2954, + 2953, 2962, 2971, 2963, 2965, 2967, 2973, 2974, 3749, 2975, - 2978, 2987, 2971, 3718, 2989, 2973, 2991, 2994, 3718, 3718, - 3718, 2995, 2979, 2997, 2998, 2999, 2981, 3002, 3718, 3005, - 3007, 3008, 3009, 3015, 3017, 3011, 3026, 3022, 3029, 3031, - 3718, 3718, 3019, 3038, 3035, 3036, 3025, 3037, 3040, 3042, - 3043, 3718, 3046, 3044, 3045, 3050, 3051, 3053, 3056, 3718, - 3057, 3061, 3063, 3067, 3064, 3068, 3069, 3071, 3072, 3074, - 3718, 3075, 3078, 3718, 3085, 3086, 3087, 3718, 3092, 3718, - 3095, 3718, 3718, 3088, 3096, 3098, 3104, 3106, 3110, 3099, - 3107, 3116, 3113, 3114, 3718, 3718, 3120, 3122, 3129, 3718, - 3718, 3125, 3123, 3126, 3127, 3132, 3133, 3135, 3136, 3138, + 2976, 3749, 3749, 2977, 2979, 2988, 2983, 2985, 2990, 2992, + 3749, 2991, 3000, 3002, 2999, 3749, 3008, 3005, 3010, 3014, + 3749, 3749, 3749, 3015, 3011, 3017, 3018, 3020, 3019, 3021, + 3749, 3022, 3027, 3030, 3028, 3040, 3042, 3044, 3031, 3050, + 3047, 3049, 3054, 3749, 3749, 3046, 3060, 3057, 3058, 3056, + 3062, 3064, 3066, 3067, 3749, 3070, 3068, 3069, 3074, 3075, + 3080, 3076, 3749, 3078, 3087, 3089, 3091, 3092, 3093, 3094, + 3096, 3101, 3099, 3749, 3103, 3100, 3749, 3106, 3105, 3114, + 3749, 3115, 3749, 3118, 3749, 3749, 3120, 3121, 3123, 3125, + 3128, 3131, 3132, 3133, 3139, 3136, 3137, 3749, 3749, 3143, - 3137, 3142, 3148, 3144, 3153, 3139, 3150, 3154, 3151, 3157, - 3718, 3162, 3164, 3165, 3718, 3166, 3169, 3174, 3172, 3173, - 3180, 3182, 3183, 3718, 3185, 3175, 3186, 3718, 3718, 3718, - 3191, 3189, 3193, 3718, 3198, 3200, 3718, 3197, 3199, 3210, - 3207, 3208, 3209, 3217, 3214, 3216, 3718, 3218, 3220, 3222, - 3225, 3223, 3224, 3226, 3230, 3231, 3233, 3242, 3234, 3718, - 3244, 3247, 3249, 3718, 3251, 3248, 3252, 3718, 3255, 3257, - 3258, 3261, 3263, 3264, 3265, 3266, 3270, 3273, 3278, 3272, - 3267, 3282, 3288, 3281, 3294, 3274, 3296, 3718, 3298, 3290, - 3718, 3299, 3301, 3302, 3306, 3311, 3313, 3303, 3718, 3317, + 3144, 3145, 3153, 3749, 3749, 3149, 3146, 3152, 3155, 3156, + 3158, 3160, 3161, 3162, 3165, 3168, 3174, 3166, 3178, 3171, + 3177, 3179, 3181, 3185, 3749, 3187, 3189, 3190, 3749, 3193, + 3197, 3194, 3199, 3200, 3207, 3204, 3209, 3749, 3210, 3202, + 3212, 3749, 3749, 3749, 3216, 3222, 3220, 3749, 3225, 3227, + 3749, 3233, 3226, 3224, 3239, 3236, 3238, 3240, 3246, 3242, + 3248, 3749, 3245, 3250, 3252, 3249, 3254, 3255, 3256, 3260, + 3261, 3259, 3270, 3262, 3749, 3273, 3277, 3274, 3749, 3283, + 3278, 3280, 3749, 3286, 3288, 3284, 3290, 3292, 3293, 3295, + 3294, 3297, 3301, 3299, 3749, 3305, 3308, 3310, 3311, 3315, - 3718, 3718, 3318, 3718, 3321, 3314, 3322, 3324, 3325, 3718, - 3718, 3326, 3333, 3335, 3718, 3327, 3329, 3336, 3338, 3337, - 3339, 3342, 3343, 3344, 3346, 3718, 3718, 3348, 3353, 3355, - 3359, 3718, 3718, 3718, 3367, 3718, 3369, 3718, 3371, 3362, - 3718, 3375, 3364, 3718, 3372, 3377, 3380, 3383, 3385, 3387, - 3378, 3389, 3388, 3391, 3393, 3394, 3400, 3718, 3718, 3402, - 3718, 3406, 3718, 3408, 3718, 3410, 3411, 3414, 3416, 3718, - 3718, 3417, 3423, 3419, 3421, 3424, 3427, 3425, 3718, 3718, - 3718, 3718, 3428, 3430, 3434, 3718, 3431, 3436, 3435, 3437, - 3440, 3438, 3444, 3447, 3451, 3453, 3458, 3461, 3462, 3439, + 3323, 3309, 3320, 3749, 3322, 3324, 3749, 3325, 3331, 3332, + 3336, 3339, 3341, 3342, 3749, 3349, 3749, 3749, 3350, 3749, + 3353, 3344, 3346, 3357, 3354, 3749, 3749, 3360, 3362, 3364, + 3749, 3363, 3365, 3366, 3367, 3370, 3372, 3373, 3374, 3375, + 3376, 3749, 3749, 3377, 3387, 3394, 3329, 3749, 3749, 3749, + 3399, 3749, 3380, 3749, 3401, 3388, 3749, 3404, 3395, 3749, + 3405, 3406, 3407, 3412, 3414, 3416, 3409, 3417, 3418, 3419, + 3420, 3422, 3427, 3749, 3749, 3429, 3749, 3431, 3749, 3436, + 3749, 3433, 3437, 3440, 3443, 3749, 3749, 3444, 3451, 3448, + 3449, 3450, 3452, 3456, 3749, 3749, 3749, 3749, 3453, 3458, - 3465, 3473, 3469, 3718, 3470, 3718, 3718, 3471, 3477, 3479, - 3475, 3478, 3476, 3482, 3481, 3484, 3486, 3487, 3488, 3498, - 3492, 3501, 3504, 3505, 3507, 3494, 3519, 3516, 3517, 3508, - 3518, 3525, 3521, 3522, 3718, 3523, 3526, 3529, 3530, 3531, - 3533, 3534, 3541, 3546, 3539, 3549, 3536, 3551, 3552, 3554, - 3557, 3558, 3560, 3718, 3562, 3564, 3565, 3566, 3570, 3568, - 3572, 3573, 3578, 3575, 3581, 3589, 3583, 3718, 3592, 3718, - 3718, 3593, 3586, 3594, 3596, 3600, 3718, 3718, 3718, 3626, - 3633, 3640, 3647, 3654, 94, 3661, 3668, 3675, 3682, 3689, - 3696, 3703, 3710 + 3459, 3749, 3460, 3461, 3463, 3465, 3464, 3466, 3475, 3468, + 3476, 3487, 3489, 3479, 3492, 3477, 3481, 3498, 3494, 3749, + 3495, 3749, 3749, 3499, 3505, 3506, 3503, 3507, 3504, 3511, + 3509, 3513, 3514, 3512, 3516, 3519, 3515, 3529, 3532, 3533, + 3535, 3522, 3544, 3543, 3545, 3536, 3546, 3553, 3547, 3549, + 3749, 3551, 3550, 3554, 3557, 3558, 3563, 3560, 3571, 3574, + 3576, 3577, 3561, 3583, 3578, 3586, 3587, 3589, 3588, 3749, + 3590, 3591, 3592, 3597, 3598, 3600, 3601, 3602, 3605, 3608, + 3610, 3613, 3614, 3749, 3617, 3749, 3749, 3618, 3624, 3625, + 3627, 3629, 3749, 3749, 3749, 3657, 3664, 3671, 3678, 3685, + 94, 3692, 3699, 3706, 3713, 3720, 3727, 3734, 3741 } ; -static yyconst flex_int16_t yy_def[1894] = +static yyconst flex_int16_t yy_def[1910] = { 0, - 1879, 1, 1880, 1880, 1881, 1881, 1882, 1882, 1883, 1883, - 1884, 1884, 1879, 1885, 1879, 1879, 1879, 1879, 1886, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1887, 1879, 1879, 1879, 1887, 1888, 1879, 1879, 1879, 1888, - 1889, 1879, 1879, 1879, 1879, 1889, 1890, 1879, 1879, 1879, - 1890, 1891, 1879, 1892, 1879, 1891, 1891, 1885, 1885, 1879, - 1893, 1886, 1893, 1886, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1895, 1, 1896, 1896, 1897, 1897, 1898, 1898, 1899, 1899, + 1900, 1900, 1895, 1901, 1895, 1895, 1895, 1895, 1902, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1903, 1895, 1895, 1895, 1903, 1904, 1895, 1895, 1895, 1904, + 1905, 1895, 1895, 1895, 1895, 1905, 1906, 1895, 1895, 1895, + 1906, 1907, 1895, 1908, 1895, 1907, 1907, 1901, 1901, 1895, + 1909, 1902, 1909, 1902, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1887, 1887, 1888, 1888, - 1889, 1889, 1879, 1890, 1890, 1891, 1891, 1892, 1892, 1891, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1903, 1903, 1904, + 1904, 1905, 1905, 1895, 1906, 1906, 1907, 1907, 1908, 1908, + 1907, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, - 1885, 1885, 1885, 1885, 1891, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1891, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1901, 1901, 1901, 1901, 1901, 1901, 1907, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1907, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1891, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, + 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1907, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1891, 1885, 1885, 1885, 1885, 1885, 1879, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1879, 1879, 1885, 1879, 1879, 1885, 1885, 1885, 1885, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1907, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1895, 1895, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1891, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1907, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1891, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1907, 1901, 1901, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, - 1885, 1885, 1885, 1885, 1879, 1885, 1879, 1885, 1885, 1885, + 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, - 1879, 1885, 1879, 1885, 1879, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, + 1901, 1901, 1901, 1895, 1901, 1895, 1901, 1901, 1901, 1895, + 1901, 1895, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1895, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1879, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1895, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, - 1879, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1879, - 1885, 1879, 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, + 1901, 1895, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, + 1895, 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1879, 1885, 1885, 1885, 1879, 1885, 1879, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1879, 1879, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, - 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, + 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, + 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1901, 1895, 1901, 1901, 1901, 1895, 1901, 1895, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1879, 1885, 1879, 1885, 1885, 1885, 1885, 1885, - 1879, 1885, 1885, 1879, 1885, 1879, 1885, 1885, 1885, 1885, - 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1879, 1879, 1885, + 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1895, 1901, 1895, 1901, 1901, 1901, 1901, + 1901, 1895, 1901, 1901, 1895, 1901, 1895, 1901, 1901, 1901, + 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, - 1885, 1879, 1879, 1879, 1885, 1879, 1885, 1879, 1879, 1885, - 1885, 1879, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1879, 1885, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1879, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, + 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1895, 1895, + 1901, 1901, 1895, 1895, 1895, 1901, 1895, 1901, 1895, 1895, + 1901, 1901, 1895, 1901, 1895, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1895, + 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1879, 1879, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1885, 1885, 1879, 1885, 1885, 1885, 1879, 1885, 1879, - 1885, 1879, 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1879, 1879, 1885, 1885, 1885, 1879, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, + 1895, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1895, 1901, 1901, 1895, 1901, 1901, 1901, + 1895, 1901, 1895, 1901, 1895, 1895, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1895, 1901, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1879, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1879, 1879, 1879, - 1885, 1885, 1885, 1879, 1885, 1885, 1879, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1879, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1885, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, + 1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1895, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, + 1901, 1895, 1895, 1895, 1901, 1901, 1901, 1895, 1901, 1901, + 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1895, 1901, + 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, - 1879, 1879, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1879, - 1879, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1879, 1879, 1885, 1885, 1885, - 1885, 1879, 1879, 1879, 1885, 1879, 1885, 1879, 1885, 1885, - 1879, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1879, 1885, - 1879, 1885, 1879, 1885, 1879, 1885, 1885, 1885, 1885, 1879, - 1879, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1879, - 1879, 1879, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, + 1901, 1901, 1901, 1895, 1901, 1901, 1895, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1901, 1895, 1895, 1901, 1895, + 1901, 1901, 1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901, + 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1895, 1895, 1895, + 1901, 1895, 1901, 1895, 1901, 1901, 1895, 1901, 1901, 1895, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1895, 1895, 1901, 1895, 1901, 1895, 1901, + 1895, 1901, 1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1895, 1895, 1895, 1895, 1901, 1901, - 1885, 1885, 1885, 1879, 1885, 1879, 1879, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1879, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1879, 1885, 1879, - 1879, 1885, 1885, 1885, 1885, 1885, 1879, 1879, 0, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879 + 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, + 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1895, 1901, 1895, 1895, 1901, 1901, 1901, + 1901, 1901, 1895, 1895, 0, 1895, 1895, 1895, 1895, 1895, + 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895 } ; -static yyconst flex_uint16_t yy_nxt[3758] = +static yyconst flex_int16_t yy_nxt[3789] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 18, 20, 21, 14, 22, 23, 24, 25, 14, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 14, 14, 14, 14, 42, - 43, 44, 42, 43, 44, 129, 47, 48, 129, 45, + 43, 44, 42, 43, 44, 130, 47, 48, 130, 45, 49, 70, 45, 47, 48, 71, 50, 49, 58, 59, 60, 69, 69, 50, 52, 53, 54, 55, 61, 18, - 58, 59, 60, 127, 127, 56, 52, 53, 54, 55, - 61, 18, 69, 105, 229, 75, 76, 56, 15, 16, + 58, 59, 60, 128, 128, 56, 52, 53, 54, 55, + 61, 18, 69, 105, 231, 75, 76, 56, 15, 16, 17, 63, 64, 65, 68, 68, 69, 68, 68, 66, 68, 96, 69, 77, 69, 68, 86, 69, 67, 15, - 16, 17, 63, 64, 65, 69, 69, 78, 141, 88, + 16, 17, 63, 64, 65, 69, 69, 78, 142, 88, 66, 70, 95, 69, 79, 71, 87, 69, 89, 67, 73, 80, 73, 73, 69, 73, 90, 69, 97, 69, - 73, 74, 69, 91, 134, 134, 92, 81, 111, 69, - 98, 82, 69, 93, 83, 94, 84, 85, 99, 152, + 73, 74, 69, 91, 135, 135, 92, 81, 111, 69, + 98, 82, 69, 93, 83, 94, 84, 85, 99, 153, 69, 102, 69, 112, 100, 103, 123, 113, 101, 69, - 137, 124, 69, 120, 116, 121, 69, 114, 69, 125, - 115, 104, 69, 126, 117, 69, 187, 106, 118, 119, - 122, 107, 69, 131, 146, 131, 131, 108, 131, 73, + 138, 124, 69, 120, 116, 121, 69, 114, 138, 69, + 115, 104, 69, 143, 117, 69, 69, 106, 118, 119, + 122, 107, 141, 69, 125, 69, 144, 108, 126, 148, - 109, 73, 73, 136, 73, 136, 136, 110, 136, 137, - 139, 68, 143, 68, 68, 69, 68, 69, 69, 142, - 144, 68, 69, 140, 73, 69, 73, 73, 69, 73, - 69, 148, 147, 145, 73, 74, 69, 149, 154, 69, - 150, 151, 69, 69, 156, 69, 69, 153, 69, 160, - 69, 161, 69, 69, 158, 163, 155, 137, 164, 157, - 159, 167, 162, 69, 69, 69, 69, 69, 169, 168, - 171, 165, 166, 69, 172, 69, 69, 173, 174, 175, - 176, 69, 69, 69, 69, 180, 69, 69, 170, 177, - 178, 182, 69, 69, 179, 69, 69, 184, 69, 193, + 109, 132, 127, 132, 132, 154, 132, 110, 73, 69, + 73, 73, 137, 73, 137, 137, 200, 137, 68, 140, + 68, 68, 69, 68, 69, 145, 69, 147, 68, 73, + 149, 73, 73, 69, 73, 69, 150, 155, 146, 73, + 74, 69, 69, 69, 151, 152, 69, 157, 69, 69, + 69, 69, 161, 159, 162, 156, 69, 163, 168, 164, + 69, 158, 165, 69, 160, 170, 69, 69, 69, 169, + 172, 69, 252, 69, 173, 166, 167, 176, 177, 69, + 69, 69, 175, 69, 69, 171, 69, 179, 69, 69, + 174, 69, 178, 183, 180, 69, 185, 69, 188, 69, - 181, 185, 183, 69, 69, 69, 186, 69, 189, 69, - 195, 190, 69, 188, 69, 69, 69, 191, 200, 194, - 202, 192, 69, 197, 69, 127, 127, 69, 198, 129, - 196, 230, 129, 135, 203, 199, 134, 134, 131, 201, - 131, 131, 204, 131, 136, 69, 136, 136, 73, 136, - 73, 73, 137, 73, 69, 205, 69, 207, 69, 139, - 208, 206, 69, 69, 69, 69, 209, 69, 69, 217, - 214, 69, 216, 210, 213, 69, 215, 218, 211, 219, - 69, 69, 69, 69, 212, 69, 226, 69, 228, 69, - 227, 69, 231, 69, 232, 69, 69, 69, 69, 69, + 186, 69, 182, 181, 184, 69, 194, 69, 187, 69, + 69, 69, 190, 69, 196, 189, 191, 69, 69, 69, + 201, 195, 69, 138, 192, 193, 69, 203, 198, 130, + 69, 204, 130, 199, 197, 206, 128, 128, 135, 135, + 132, 202, 132, 132, 205, 132, 137, 69, 137, 137, + 73, 137, 73, 73, 138, 73, 69, 207, 69, 209, + 69, 140, 210, 208, 69, 69, 69, 69, 211, 69, + 69, 219, 216, 69, 218, 212, 215, 69, 217, 220, + 213, 221, 69, 69, 69, 69, 214, 69, 228, 69, + 230, 69, 229, 232, 69, 69, 233, 235, 136, 69, - 237, 220, 69, 238, 233, 234, 221, 69, 235, 236, - 291, 222, 69, 239, 244, 243, 223, 242, 240, 69, - 69, 245, 224, 225, 246, 248, 251, 69, 250, 69, - 69, 69, 241, 69, 253, 247, 249, 254, 252, 69, - 69, 69, 69, 69, 69, 69, 69, 255, 69, 257, - 69, 259, 69, 69, 256, 69, 261, 263, 69, 69, - 69, 270, 69, 262, 258, 266, 69, 69, 260, 272, - 264, 274, 69, 265, 69, 69, 69, 268, 269, 273, - 267, 278, 271, 69, 277, 280, 69, 276, 137, 69, - 69, 281, 69, 275, 69, 69, 286, 69, 69, 69, + 69, 69, 69, 222, 69, 239, 240, 69, 223, 234, + 69, 236, 238, 224, 237, 69, 241, 257, 225, 69, + 247, 242, 244, 245, 226, 227, 246, 248, 250, 253, + 69, 69, 69, 69, 69, 243, 69, 255, 249, 251, + 256, 254, 69, 69, 69, 69, 69, 69, 69, 69, + 259, 69, 69, 261, 69, 69, 258, 263, 69, 265, + 69, 69, 134, 268, 264, 69, 260, 266, 272, 69, + 262, 274, 276, 69, 69, 267, 69, 69, 69, 270, + 271, 275, 269, 69, 279, 273, 280, 282, 69, 138, + 278, 69, 69, 69, 69, 277, 283, 69, 289, 69, - 283, 69, 285, 287, 279, 288, 69, 292, 282, 133, - 69, 284, 289, 290, 69, 69, 69, 294, 295, 69, - 296, 297, 69, 298, 69, 69, 299, 69, 69, 69, - 301, 293, 302, 69, 305, 69, 69, 303, 69, 69, - 69, 307, 306, 300, 304, 69, 309, 69, 69, 69, - 308, 69, 69, 314, 69, 69, 310, 315, 69, 312, - 69, 313, 317, 69, 321, 311, 69, 316, 69, 69, - 69, 322, 69, 318, 69, 320, 69, 69, 319, 69, - 333, 326, 323, 324, 69, 69, 325, 330, 331, 328, - 69, 329, 332, 69, 69, 327, 69, 69, 339, 69, + 69, 286, 291, 69, 290, 288, 69, 69, 69, 281, + 69, 285, 287, 284, 69, 292, 69, 300, 295, 297, + 69, 69, 294, 298, 293, 69, 299, 69, 301, 69, + 302, 69, 69, 69, 69, 305, 69, 308, 306, 296, + 69, 69, 69, 69, 310, 307, 311, 303, 304, 69, + 312, 69, 69, 69, 309, 69, 69, 317, 69, 69, + 69, 318, 69, 69, 320, 69, 316, 69, 324, 313, + 314, 69, 315, 69, 325, 69, 69, 319, 69, 323, + 321, 322, 327, 69, 69, 328, 69, 326, 333, 334, + 69, 331, 329, 335, 69, 69, 332, 330, 336, 69, - 69, 334, 69, 337, 335, 336, 338, 340, 69, 341, - 69, 342, 344, 69, 346, 343, 69, 69, 69, 69, - 69, 349, 348, 350, 69, 356, 69, 69, 69, 69, - 69, 69, 357, 345, 351, 355, 347, 69, 69, 69, - 352, 358, 363, 353, 361, 354, 69, 69, 69, 359, - 137, 360, 362, 69, 69, 69, 376, 374, 364, 69, - 365, 69, 373, 366, 367, 379, 69, 69, 377, 69, - 69, 375, 383, 368, 378, 369, 370, 371, 380, 381, - 372, 382, 385, 69, 384, 69, 69, 69, 389, 69, - 69, 392, 393, 69, 69, 391, 69, 387, 69, 69, + 69, 69, 69, 342, 69, 69, 343, 337, 69, 340, + 338, 341, 69, 344, 339, 69, 69, 349, 69, 69, + 345, 346, 69, 69, 351, 69, 69, 347, 348, 352, + 69, 353, 69, 69, 69, 359, 69, 354, 350, 358, + 69, 355, 69, 69, 356, 361, 357, 360, 364, 69, + 365, 69, 366, 362, 363, 69, 378, 368, 138, 69, + 379, 69, 69, 69, 377, 384, 376, 69, 367, 69, + 69, 369, 370, 69, 69, 69, 69, 382, 381, 380, + 388, 371, 69, 372, 373, 374, 385, 383, 375, 387, + 390, 389, 69, 386, 69, 69, 394, 69, 69, 69, - 388, 69, 132, 386, 69, 390, 69, 69, 398, 69, - 69, 399, 69, 69, 395, 396, 394, 69, 397, 400, - 69, 402, 404, 401, 69, 405, 407, 408, 406, 69, - 69, 409, 69, 69, 403, 410, 69, 411, 69, 413, - 69, 412, 69, 415, 417, 414, 69, 416, 69, 69, - 69, 69, 69, 422, 69, 421, 69, 419, 69, 423, - 69, 425, 420, 418, 69, 426, 69, 69, 69, 69, - 69, 69, 69, 436, 428, 69, 429, 424, 69, 427, - 69, 431, 69, 69, 437, 438, 435, 69, 430, 432, - 434, 433, 440, 69, 69, 439, 69, 69, 444, 69, + 69, 69, 391, 396, 392, 69, 397, 398, 393, 69, + 69, 69, 69, 395, 403, 404, 400, 69, 69, 399, + 69, 401, 69, 69, 402, 69, 69, 69, 410, 407, + 411, 409, 406, 413, 412, 405, 69, 69, 69, 69, + 416, 69, 408, 415, 417, 69, 418, 69, 414, 69, + 421, 422, 419, 69, 420, 69, 69, 69, 69, 69, + 427, 69, 426, 69, 424, 69, 428, 69, 430, 425, + 69, 431, 69, 69, 423, 69, 69, 69, 69, 69, + 433, 69, 434, 69, 429, 441, 432, 69, 436, 69, + 69, 69, 442, 440, 443, 435, 437, 439, 438, 444, - 441, 69, 69, 69, 446, 442, 69, 69, 69, 69, - 457, 445, 459, 69, 443, 69, 69, 447, 69, 456, - 458, 448, 69, 449, 69, 461, 454, 455, 450, 69, - 451, 464, 462, 460, 69, 463, 69, 467, 452, 69, - 69, 465, 69, 69, 69, 469, 137, 69, 453, 474, - 473, 466, 470, 69, 69, 69, 69, 472, 69, 475, - 69, 468, 481, 471, 478, 479, 69, 69, 477, 69, - 480, 476, 482, 69, 69, 69, 483, 69, 486, 485, - 69, 489, 69, 69, 484, 490, 69, 492, 69, 493, - 69, 130, 494, 487, 507, 491, 488, 69, 495, 69, + 445, 69, 69, 447, 69, 69, 449, 69, 448, 451, + 69, 69, 69, 69, 69, 69, 69, 464, 69, 446, + 69, 466, 450, 69, 468, 69, 452, 69, 461, 69, + 453, 69, 454, 459, 460, 462, 465, 455, 69, 456, + 69, 470, 469, 467, 472, 463, 69, 457, 69, 69, + 69, 69, 69, 471, 474, 133, 138, 458, 478, 475, + 479, 69, 69, 69, 480, 69, 477, 476, 473, 69, + 69, 485, 69, 481, 487, 69, 483, 486, 484, 69, + 482, 69, 69, 69, 489, 69, 69, 488, 491, 492, + 495, 500, 69, 69, 496, 69, 69, 490, 498, 69, - 496, 69, 497, 69, 498, 69, 501, 69, 499, 500, - 69, 69, 69, 69, 502, 505, 69, 503, 69, 69, - 69, 506, 508, 69, 512, 69, 69, 509, 69, 69, - 516, 510, 69, 504, 514, 69, 511, 517, 69, 69, - 515, 518, 69, 513, 521, 522, 519, 69, 69, 69, - 526, 69, 523, 69, 69, 69, 528, 527, 69, 69, - 69, 525, 529, 530, 524, 533, 69, 69, 520, 548, - 69, 534, 531, 535, 532, 69, 69, 538, 69, 536, - 537, 539, 69, 69, 69, 542, 69, 69, 69, 546, - 69, 544, 69, 547, 69, 543, 540, 541, 69, 69, + 131, 493, 499, 69, 494, 497, 501, 69, 502, 69, + 503, 69, 69, 69, 504, 69, 505, 506, 507, 69, + 69, 69, 511, 69, 508, 69, 509, 69, 69, 69, + 512, 514, 510, 513, 69, 518, 515, 69, 69, 69, + 516, 522, 69, 520, 69, 69, 69, 517, 524, 527, + 69, 523, 69, 521, 525, 519, 69, 69, 69, 532, + 69, 529, 69, 69, 69, 528, 533, 536, 69, 69, + 531, 534, 535, 530, 69, 539, 526, 69, 541, 69, + 69, 537, 540, 69, 69, 69, 69, 542, 538, 544, + 543, 548, 546, 545, 69, 69, 69, 69, 552, 547, - 550, 69, 69, 69, 69, 551, 545, 555, 69, 69, - 69, 549, 69, 556, 560, 69, 69, 552, 128, 69, - 553, 69, 554, 557, 69, 559, 69, 558, 69, 563, - 564, 561, 565, 69, 562, 568, 69, 69, 566, 69, - 567, 69, 69, 69, 570, 69, 571, 573, 69, 569, - 572, 69, 576, 574, 69, 69, 137, 575, 580, 69, - 577, 579, 69, 581, 69, 583, 69, 586, 578, 69, - 69, 69, 69, 584, 588, 585, 69, 69, 69, 591, - 69, 69, 69, 582, 69, 69, 592, 69, 589, 587, - 602, 69, 69, 603, 69, 590, 594, 600, 593, 69, + 550, 69, 553, 69, 549, 69, 69, 554, 556, 69, + 69, 69, 69, 69, 69, 551, 69, 561, 69, 69, + 555, 566, 69, 562, 69, 69, 69, 557, 558, 570, + 559, 563, 560, 69, 565, 69, 564, 69, 569, 69, + 572, 567, 69, 568, 571, 69, 69, 69, 69, 69, + 69, 129, 577, 576, 69, 573, 578, 69, 575, 579, + 69, 574, 580, 69, 584, 69, 581, 582, 138, 69, + 69, 590, 583, 586, 585, 69, 69, 69, 587, 591, + 588, 69, 593, 69, 69, 69, 592, 69, 595, 598, + 589, 69, 69, 69, 69, 596, 69, 69, 69, 599, - 69, 69, 601, 616, 595, 604, 69, 605, 596, 69, - 614, 597, 69, 618, 613, 69, 615, 923, 598, 617, - 69, 599, 69, 606, 607, 69, 608, 69, 619, 609, - 620, 69, 621, 69, 610, 69, 69, 69, 622, 623, - 611, 612, 624, 69, 626, 625, 69, 69, 69, 69, - 630, 69, 69, 634, 69, 627, 629, 633, 635, 636, - 69, 69, 631, 69, 69, 628, 638, 69, 69, 632, - 637, 69, 69, 69, 69, 69, 639, 69, 642, 640, - 644, 643, 645, 69, 646, 647, 648, 69, 69, 69, - 641, 69, 69, 69, 69, 652, 69, 650, 651, 69, + 69, 594, 69, 597, 69, 69, 610, 609, 611, 69, + 600, 607, 612, 69, 608, 69, 623, 69, 601, 69, + 620, 624, 69, 621, 602, 69, 1304, 622, 603, 69, + 626, 604, 625, 69, 69, 628, 69, 69, 605, 630, + 69, 606, 69, 613, 614, 629, 615, 69, 627, 616, + 69, 69, 631, 632, 617, 69, 633, 69, 69, 637, + 618, 619, 69, 69, 69, 636, 641, 69, 642, 640, + 634, 643, 69, 69, 635, 644, 69, 638, 69, 69, + 69, 639, 69, 69, 645, 69, 69, 646, 647, 69, + 649, 652, 69, 650, 655, 69, 69, 69, 653, 69, - 654, 69, 69, 69, 656, 69, 649, 653, 659, 655, - 69, 69, 657, 69, 69, 69, 69, 658, 665, 69, - 69, 69, 664, 660, 69, 661, 69, 670, 668, 671, - 69, 663, 662, 666, 669, 667, 674, 675, 69, 69, - 673, 69, 69, 676, 672, 69, 69, 69, 69, 681, - 679, 682, 69, 69, 69, 683, 69, 677, 678, 686, - 69, 688, 69, 69, 69, 689, 137, 685, 680, 69, - 69, 684, 69, 691, 69, 69, 69, 702, 690, 69, - 687, 69, 69, 703, 69, 706, 69, 69, 694, 692, - 69, 69, 708, 69, 69, 695, 693, 69, 711, 704, + 648, 69, 651, 654, 69, 69, 657, 659, 69, 661, + 658, 69, 69, 69, 69, 656, 663, 69, 69, 660, + 69, 69, 666, 69, 664, 69, 662, 69, 69, 672, + 69, 69, 671, 665, 69, 667, 69, 677, 668, 675, + 69, 670, 669, 678, 69, 673, 681, 674, 676, 69, + 682, 69, 69, 683, 680, 69, 679, 69, 69, 69, + 69, 688, 689, 686, 69, 69, 69, 69, 690, 685, + 693, 684, 69, 695, 69, 69, 69, 697, 138, 692, + 687, 69, 691, 69, 69, 69, 69, 699, 69, 69, + 710, 69, 694, 69, 696, 711, 698, 69, 69, 69, - 696, 707, 697, 69, 709, 710, 698, 705, 699, 69, - 69, 69, 69, 700, 717, 713, 715, 716, 701, 69, - 69, 69, 69, 720, 712, 714, 718, 719, 69, 69, - 721, 725, 69, 69, 727, 722, 69, 723, 726, 69, - 729, 730, 69, 69, 728, 69, 734, 69, 69, 736, - 731, 69, 735, 69, 69, 724, 737, 732, 69, 69, - 740, 69, 69, 69, 733, 69, 741, 69, 69, 69, - 738, 739, 743, 69, 747, 69, 69, 745, 742, 751, - 69, 746, 69, 744, 69, 750, 69, 69, 69, 749, - 69, 69, 755, 748, 69, 756, 757, 758, 69, 752, + 702, 69, 714, 700, 69, 69, 716, 69, 703, 701, + 69, 69, 712, 704, 715, 705, 69, 733, 713, 706, + 69, 707, 720, 69, 719, 717, 708, 69, 721, 69, + 718, 709, 723, 69, 69, 69, 69, 728, 722, 69, + 729, 727, 69, 724, 69, 730, 69, 731, 726, 734, + 735, 69, 737, 69, 725, 69, 69, 69, 736, 69, + 738, 739, 742, 69, 69, 732, 744, 69, 743, 69, + 740, 69, 745, 69, 748, 69, 741, 69, 746, 69, + 747, 69, 749, 69, 751, 69, 69, 69, 759, 69, + 69, 755, 750, 69, 753, 69, 69, 752, 69, 758, - 753, 754, 69, 759, 760, 69, 763, 761, 767, 69, - 764, 69, 69, 765, 762, 69, 766, 69, 69, 69, - 69, 69, 69, 772, 69, 69, 69, 774, 69, 768, - 775, 69, 776, 770, 778, 779, 69, 769, 69, 771, - 777, 69, 773, 69, 782, 69, 69, 780, 69, 781, - 69, 69, 69, 787, 69, 69, 788, 790, 69, 69, - 793, 783, 69, 786, 784, 69, 785, 792, 794, 791, - 789, 796, 69, 69, 795, 69, 69, 69, 800, 69, - 69, 797, 69, 69, 69, 69, 69, 69, 799, 798, - 829, 808, 802, 69, 69, 801, 69, 809, 803, 805, + 69, 69, 754, 757, 69, 763, 764, 756, 69, 765, + 768, 762, 69, 767, 760, 69, 761, 766, 69, 69, + 771, 69, 69, 773, 772, 69, 774, 69, 69, 69, + 775, 769, 69, 69, 69, 770, 780, 138, 69, 69, + 69, 777, 776, 782, 778, 783, 69, 69, 69, 787, + 69, 69, 779, 784, 786, 781, 69, 789, 69, 790, + 788, 69, 785, 69, 69, 69, 69, 69, 69, 69, + 795, 796, 798, 801, 69, 69, 791, 794, 69, 799, + 792, 69, 802, 793, 69, 797, 800, 69, 804, 69, + 803, 69, 808, 69, 69, 69, 69, 69, 806, 69, - 69, 806, 69, 69, 807, 804, 69, 812, 810, 815, - 69, 811, 69, 69, 813, 814, 69, 69, 820, 69, - 817, 69, 69, 69, 69, 69, 825, 69, 69, 823, - 69, 816, 818, 826, 827, 819, 821, 69, 69, 822, - 69, 69, 69, 69, 824, 832, 69, 831, 830, 69, - 836, 828, 837, 69, 834, 69, 69, 69, 69, 69, - 833, 835, 69, 840, 69, 69, 69, 69, 838, 841, - 839, 845, 137, 849, 69, 69, 850, 842, 69, 69, - 843, 846, 844, 848, 69, 69, 69, 847, 69, 855, - 853, 854, 851, 856, 69, 852, 69, 859, 69, 69, + 805, 69, 69, 807, 810, 69, 69, 817, 136, 818, + 69, 809, 69, 811, 69, 814, 69, 815, 813, 69, + 821, 819, 812, 69, 820, 816, 69, 69, 69, 825, + 69, 823, 69, 829, 69, 826, 69, 822, 69, 69, + 69, 69, 824, 69, 834, 827, 832, 69, 836, 69, + 830, 828, 835, 69, 69, 69, 831, 838, 69, 833, + 69, 69, 69, 837, 840, 841, 843, 69, 69, 69, + 69, 839, 845, 69, 69, 69, 846, 842, 69, 69, + 849, 844, 69, 69, 847, 848, 850, 69, 854, 69, + 858, 69, 69, 69, 851, 69, 69, 853, 855, 852, - 135, 862, 858, 69, 863, 857, 69, 69, 861, 69, - 69, 860, 864, 69, 865, 69, 866, 69, 868, 867, - 69, 871, 872, 69, 69, 69, 69, 69, 873, 874, - 69, 869, 69, 880, 881, 882, 69, 69, 870, 69, - 69, 883, 69, 69, 69, 884, 69, 69, 875, 69, - 69, 886, 891, 876, 69, 877, 887, 878, 885, 879, - 888, 69, 890, 889, 892, 893, 895, 69, 69, 896, - 69, 894, 897, 69, 69, 899, 69, 898, 901, 69, - 903, 69, 69, 69, 905, 69, 69, 900, 904, 69, - 69, 907, 69, 910, 69, 909, 902, 908, 69, 69, + 857, 860, 69, 859, 69, 69, 864, 856, 863, 862, + 865, 69, 861, 69, 868, 69, 69, 871, 69, 867, + 134, 866, 69, 69, 872, 870, 69, 69, 869, 69, + 875, 873, 874, 69, 69, 69, 879, 69, 880, 877, + 881, 69, 876, 69, 69, 69, 882, 69, 883, 878, + 69, 69, 889, 890, 69, 69, 69, 69, 891, 884, + 892, 69, 69, 959, 885, 69, 886, 69, 887, 893, + 888, 895, 896, 69, 69, 894, 897, 69, 69, 898, + 899, 900, 904, 69, 69, 902, 906, 69, 901, 69, + 69, 69, 907, 910, 69, 908, 69, 912, 69, 905, - 914, 69, 906, 915, 912, 69, 913, 69, 69, 69, - 917, 69, 911, 69, 916, 69, 918, 921, 69, 924, - 919, 69, 920, 69, 69, 69, 69, 69, 930, 69, - 69, 69, 69, 922, 69, 925, 934, 928, 935, 69, - 69, 926, 69, 927, 929, 937, 69, 939, 69, 931, - 933, 940, 69, 69, 942, 932, 69, 936, 943, 69, - 945, 938, 941, 69, 69, 69, 69, 946, 69, 69, - 69, 69, 69, 944, 949, 947, 951, 69, 69, 69, - 69, 954, 69, 69, 69, 948, 950, 952, 69, 961, - 953, 956, 69, 957, 69, 958, 955, 959, 69, 962, + 69, 914, 69, 903, 69, 913, 69, 69, 69, 69, + 909, 916, 69, 918, 69, 917, 911, 69, 919, 922, + 921, 923, 69, 924, 915, 69, 69, 920, 69, 926, + 925, 927, 69, 69, 69, 930, 69, 69, 69, 69, + 934, 69, 69, 69, 929, 69, 69, 69, 940, 69, + 69, 928, 69, 69, 938, 935, 133, 931, 932, 69, + 69, 936, 933, 937, 939, 944, 945, 69, 69, 941, + 943, 69, 69, 947, 953, 942, 946, 949, 948, 69, + 951, 950, 69, 69, 955, 69, 69, 952, 69, 69, + 956, 69, 69, 69, 69, 69, 957, 954, 961, 964, - 69, 69, 960, 963, 69, 133, 964, 69, 970, 965, - 967, 69, 969, 69, 971, 968, 966, 69, 972, 69, - 69, 973, 974, 69, 69, 69, 69, 69, 975, 976, - 977, 980, 69, 982, 69, 981, 69, 983, 69, 69, - 978, 69, 69, 69, 989, 69, 979, 69, 988, 69, - 69, 984, 69, 985, 69, 69, 69, 997, 69, 69, - 987, 998, 990, 69, 991, 986, 992, 69, 994, 993, - 996, 999, 1001, 995, 1000, 69, 69, 69, 69, 69, - 1002, 69, 69, 1009, 1006, 1010, 69, 1004, 1007, 69, - 1003, 69, 1005, 69, 1011, 1012, 69, 1014, 69, 1015, + 69, 69, 69, 69, 69, 69, 69, 958, 69, 960, + 962, 69, 972, 971, 963, 69, 967, 69, 965, 968, + 966, 969, 970, 69, 975, 69, 69, 69, 973, 974, + 69, 977, 976, 980, 981, 979, 69, 982, 69, 69, + 69, 983, 984, 69, 69, 986, 69, 978, 985, 69, + 69, 987, 990, 69, 992, 69, 991, 69, 993, 69, + 69, 69, 69, 988, 69, 999, 69, 69, 998, 989, + 69, 69, 994, 69, 995, 69, 69, 69, 1007, 69, + 997, 1004, 1008, 1000, 69, 1001, 996, 69, 1010, 69, + 1002, 1006, 1003, 69, 69, 69, 1005, 69, 1011, 1009, - 132, 1008, 69, 1016, 69, 1017, 1018, 1019, 69, 1020, - 69, 69, 69, 1013, 69, 1021, 69, 1022, 69, 69, - 69, 1024, 1028, 69, 1026, 69, 69, 1030, 69, 1023, - 69, 69, 1025, 69, 69, 1027, 1035, 1033, 69, 69, - 69, 1032, 69, 1038, 1039, 1029, 69, 69, 69, 69, - 1031, 69, 130, 1034, 1037, 69, 1036, 1042, 69, 69, - 1044, 69, 69, 1046, 1045, 1048, 1040, 1041, 69, 1043, - 69, 1047, 1050, 69, 1051, 1049, 69, 69, 1054, 69, - 69, 69, 1052, 1060, 1057, 69, 1053, 1058, 69, 69, - 1061, 1055, 69, 69, 69, 1067, 69, 1063, 1062, 1059, + 69, 1012, 1025, 69, 1014, 1016, 69, 1013, 69, 1017, + 1020, 69, 69, 1015, 69, 1024, 69, 1021, 1022, 69, + 69, 1026, 1018, 69, 1027, 1028, 1019, 69, 1023, 69, + 69, 1029, 69, 1030, 69, 69, 69, 1032, 1031, 69, + 69, 69, 1033, 1035, 1034, 1036, 1038, 69, 69, 1040, + 69, 69, 69, 69, 1037, 69, 1043, 69, 1045, 1046, + 69, 1039, 1042, 69, 69, 1049, 69, 69, 69, 69, + 69, 1050, 1041, 69, 1044, 1047, 69, 1048, 1053, 69, + 69, 1055, 69, 69, 1057, 1056, 1059, 1051, 1052, 69, + 1054, 69, 69, 1058, 1061, 69, 1060, 69, 1063, 69, - 1056, 69, 1066, 69, 1065, 69, 69, 69, 1072, 69, - 69, 1071, 69, 69, 1068, 1074, 1075, 69, 1064, 69, - 69, 69, 1069, 69, 1076, 1070, 69, 69, 1083, 69, - 1077, 69, 1073, 69, 69, 69, 69, 1080, 1081, 69, - 1078, 1079, 1082, 1088, 69, 69, 69, 1084, 1086, 69, - 1089, 1085, 1094, 1091, 1090, 69, 1087, 69, 1092, 1097, - 69, 1093, 69, 69, 69, 1098, 69, 69, 1099, 69, - 1095, 69, 1106, 1100, 69, 1096, 1101, 69, 1103, 69, - 1105, 1104, 69, 1102, 1107, 69, 1108, 1109, 69, 69, - 69, 69, 69, 1116, 69, 69, 1111, 1110, 69, 69, + 1064, 1071, 1062, 69, 1065, 69, 69, 69, 1068, 1066, + 69, 1069, 1072, 69, 69, 1074, 1077, 69, 69, 1067, + 1076, 69, 1073, 1070, 69, 1078, 69, 69, 69, 1083, + 69, 69, 69, 1082, 69, 69, 1079, 1085, 69, 1075, + 1086, 69, 69, 1087, 69, 1080, 69, 1081, 69, 1088, + 69, 1094, 69, 1084, 69, 1089, 69, 69, 1091, 1093, + 1092, 69, 1090, 1099, 69, 69, 1100, 69, 1097, 69, + 1095, 69, 1096, 69, 1102, 1108, 69, 69, 1098, 69, + 1101, 69, 1103, 69, 1106, 1104, 1109, 1105, 69, 1107, + 1112, 69, 69, 1110, 1117, 1111, 1113, 1118, 69, 69, - 1119, 1113, 69, 1120, 1112, 69, 69, 1118, 1122, 1115, - 1117, 1123, 69, 1125, 1127, 1114, 69, 1121, 69, 69, - 1130, 69, 1128, 1124, 1126, 69, 69, 69, 69, 1132, - 69, 69, 1129, 1138, 1131, 1133, 1134, 69, 69, 69, - 1135, 69, 69, 69, 69, 69, 1142, 69, 1136, 1143, - 1137, 69, 1144, 1139, 1146, 69, 1145, 1140, 1149, 69, - 69, 1141, 69, 69, 69, 69, 1147, 1155, 69, 1151, - 1148, 69, 69, 69, 1150, 1152, 1153, 1159, 69, 1158, - 1156, 69, 69, 69, 1154, 1160, 1161, 69, 1162, 1157, - 1163, 1164, 69, 69, 69, 69, 69, 69, 69, 1166, + 1114, 1116, 69, 1115, 69, 69, 69, 69, 69, 69, + 69, 69, 1127, 69, 69, 69, 69, 1120, 1171, 1124, + 1122, 69, 1119, 1121, 1123, 1129, 1130, 69, 1126, 1128, + 69, 1131, 1135, 1136, 1125, 69, 1133, 1138, 69, 1134, + 69, 69, 69, 1141, 69, 1132, 1139, 69, 69, 69, + 1143, 69, 69, 1137, 69, 1149, 1144, 1142, 69, 1145, + 69, 1140, 1146, 69, 69, 69, 69, 69, 69, 1153, + 1147, 1154, 1155, 1148, 1150, 69, 69, 1157, 69, 69, + 1156, 1151, 1160, 69, 1152, 69, 69, 69, 131, 69, + 1166, 1163, 1162, 1159, 69, 69, 69, 69, 129, 1158, - 69, 69, 69, 1170, 1167, 1165, 1175, 69, 1168, 1171, - 1176, 69, 1169, 128, 69, 69, 69, 1174, 1180, 69, - 69, 1173, 1172, 1182, 69, 1183, 69, 69, 69, 1185, - 69, 1184, 1177, 1178, 69, 69, 1179, 1187, 1186, 1189, - 1181, 69, 69, 69, 69, 69, 1188, 1191, 69, 69, - 1192, 1193, 69, 69, 69, 1190, 69, 1194, 1195, 1196, - 1200, 1198, 69, 1199, 1197, 69, 69, 1202, 1204, 69, - 69, 1206, 1201, 69, 69, 1203, 69, 1209, 1211, 69, - 69, 69, 69, 1210, 69, 69, 1207, 1213, 1205, 69, - 1216, 1214, 69, 69, 1220, 1208, 1212, 69, 1219, 69, + 1161, 1164, 69, 1169, 1170, 69, 1165, 1173, 1167, 1172, + 69, 69, 1168, 1175, 69, 69, 69, 69, 69, 69, + 1174, 1177, 69, 69, 69, 69, 1178, 1176, 1181, 69, + 1179, 1182, 1186, 69, 1180, 1187, 69, 69, 69, 1185, + 69, 1191, 69, 69, 1183, 1184, 1193, 69, 1194, 69, + 1188, 69, 69, 69, 1196, 1189, 1195, 1190, 1192, 69, + 69, 1198, 1200, 1197, 1202, 69, 69, 69, 1201, 1199, + 69, 1203, 1204, 69, 69, 69, 1211, 69, 69, 69, + 69, 69, 1215, 69, 69, 1205, 1206, 1207, 69, 1217, + 69, 69, 1208, 1213, 1209, 1210, 69, 1220, 1212, 69, - 69, 1223, 1225, 69, 1224, 69, 69, 1222, 1218, 69, - 1215, 1217, 69, 69, 1227, 69, 69, 1221, 1226, 69, - 69, 69, 1231, 69, 1234, 69, 69, 69, 1230, 69, - 69, 69, 1228, 69, 1229, 1238, 1240, 69, 1232, 1239, - 1235, 69, 1237, 1246, 1241, 1236, 69, 1233, 69, 1242, - 1243, 69, 1244, 1247, 69, 1245, 1248, 1250, 69, 1253, - 1249, 69, 69, 69, 69, 69, 69, 69, 1258, 1255, - 1252, 69, 1251, 69, 1260, 1254, 69, 69, 1256, 69, - 1262, 69, 1263, 1264, 69, 1265, 69, 69, 1261, 69, - 69, 69, 1257, 1259, 69, 1267, 1268, 69, 69, 1270, + 69, 1214, 1222, 69, 69, 69, 69, 69, 1221, 69, + 1216, 1218, 1219, 1224, 1225, 1223, 69, 1227, 69, 1231, + 69, 69, 1234, 1230, 69, 1229, 1235, 69, 1233, 69, + 1226, 69, 69, 1228, 1236, 69, 69, 1237, 1238, 69, + 1232, 69, 69, 69, 69, 1242, 69, 1245, 69, 69, + 69, 69, 1895, 1241, 69, 69, 1239, 1249, 1240, 1251, + 69, 1243, 69, 1246, 1250, 1248, 1254, 69, 1247, 69, + 1244, 1257, 69, 1252, 69, 1255, 69, 1259, 1253, 1258, + 69, 1260, 69, 1256, 1261, 1264, 1263, 69, 69, 69, + 69, 69, 1266, 69, 69, 1269, 1271, 69, 1262, 1265, - 1269, 1272, 1271, 69, 69, 1275, 69, 1266, 69, 69, - 69, 69, 69, 69, 1280, 1273, 1274, 69, 1277, 1282, - 69, 1284, 1281, 69, 69, 69, 69, 1283, 1276, 1278, - 69, 1279, 1285, 69, 1287, 1288, 1289, 69, 1292, 69, - 69, 1286, 1295, 69, 69, 1290, 69, 1291, 69, 1294, - 1296, 69, 69, 1297, 69, 1299, 1293, 69, 69, 69, - 69, 1300, 69, 69, 1298, 69, 69, 69, 69, 1310, - 1302, 1303, 1304, 1309, 69, 69, 69, 69, 1301, 69, - 1306, 1312, 1313, 1307, 69, 69, 1308, 1319, 1305, 1316, - 69, 1315, 1311, 1314, 69, 69, 69, 69, 69, 1318, + 69, 69, 69, 1267, 69, 1273, 69, 1274, 69, 1272, + 1275, 69, 1276, 69, 1278, 69, 1270, 69, 1268, 69, + 1279, 69, 69, 1280, 1277, 1283, 1282, 69, 1281, 69, + 1286, 69, 69, 69, 69, 69, 69, 69, 1291, 1284, + 69, 1285, 1288, 1293, 69, 1292, 69, 1295, 69, 69, + 69, 1294, 1287, 1289, 69, 1290, 1300, 69, 1296, 1298, + 69, 1303, 1297, 1299, 1301, 69, 69, 69, 1305, 69, + 69, 1306, 1307, 69, 1302, 69, 1310, 1308, 69, 69, + 69, 69, 69, 69, 69, 1309, 69, 1311, 69, 69, + 69, 1321, 1313, 1314, 1315, 1320, 69, 69, 69, 1317, - 1320, 1321, 1324, 69, 69, 1317, 69, 69, 1325, 69, - 69, 1330, 69, 69, 1327, 1322, 69, 1326, 1323, 69, - 1331, 1334, 69, 69, 1329, 1336, 69, 1335, 1328, 69, - 69, 1332, 69, 1333, 1340, 69, 69, 69, 69, 1338, - 69, 1337, 1339, 1343, 1341, 1344, 69, 69, 1342, 69, - 1345, 69, 69, 69, 69, 1348, 69, 1349, 1353, 69, - 69, 1355, 69, 1347, 69, 1352, 1346, 1350, 1357, 1354, - 69, 69, 1360, 1356, 69, 1358, 1361, 69, 1351, 69, - 1364, 69, 1362, 69, 1359, 1366, 69, 69, 1367, 69, - 69, 1370, 1365, 69, 1372, 69, 69, 69, 1371, 1363, + 1312, 69, 1323, 69, 69, 1324, 1318, 69, 1319, 1316, + 1325, 1327, 69, 69, 1322, 69, 69, 1326, 1329, 69, + 1331, 1330, 69, 1335, 69, 1333, 69, 1332, 69, 1336, + 1328, 69, 69, 69, 1341, 69, 1334, 69, 1342, 1337, + 1338, 69, 69, 1345, 69, 69, 69, 1340, 69, 1346, + 1339, 69, 69, 1347, 1351, 1349, 1343, 1348, 1350, 69, + 69, 69, 1344, 69, 69, 69, 1354, 69, 1352, 1355, + 69, 69, 1353, 69, 69, 69, 1356, 1359, 69, 1360, + 1364, 69, 69, 1358, 1363, 1357, 69, 1365, 69, 1361, + 1366, 69, 1368, 69, 69, 1362, 69, 69, 1369, 1370, - 69, 1368, 69, 69, 69, 1374, 69, 69, 1369, 1377, - 1380, 69, 69, 69, 69, 69, 1381, 69, 1376, 1383, - 69, 69, 1373, 1379, 1378, 1375, 69, 69, 1382, 69, - 69, 1392, 69, 69, 69, 69, 1385, 1393, 69, 69, - 69, 1384, 1390, 1386, 69, 1387, 1388, 1389, 1394, 69, - 1391, 1407, 1395, 1396, 69, 1397, 1398, 69, 1399, 69, - 69, 1402, 69, 1405, 1400, 1403, 69, 1404, 69, 1406, - 69, 1408, 69, 1401, 1409, 69, 69, 69, 1412, 69, - 69, 69, 1411, 1414, 69, 69, 69, 1416, 69, 1417, - 69, 1418, 1420, 69, 69, 1410, 69, 1424, 69, 1413, + 1371, 1367, 1373, 69, 1372, 69, 1375, 69, 1377, 69, + 69, 1378, 1376, 69, 1381, 1380, 1374, 69, 69, 69, + 1383, 69, 1382, 69, 69, 1379, 69, 69, 1385, 69, + 69, 69, 1388, 1391, 69, 1392, 69, 69, 69, 69, + 69, 1387, 1394, 1384, 69, 1390, 69, 1386, 1389, 69, + 69, 1393, 69, 1403, 69, 69, 69, 69, 1396, 1404, + 1428, 69, 1401, 1397, 1395, 1399, 69, 69, 1398, 1406, + 1400, 69, 1408, 1402, 1405, 1409, 69, 1410, 69, 1407, + 69, 69, 1411, 1413, 69, 1414, 69, 1415, 69, 1417, + 69, 69, 69, 1412, 1419, 69, 1420, 69, 69, 69, - 69, 69, 69, 1415, 69, 1879, 1419, 1421, 1428, 1422, - 1429, 69, 69, 1431, 69, 1423, 69, 1427, 69, 1433, - 1425, 69, 69, 69, 1426, 69, 69, 69, 1436, 69, - 1434, 1430, 69, 69, 1435, 69, 69, 1440, 69, 1438, - 1879, 1445, 1432, 69, 1441, 1442, 69, 1443, 1439, 1444, - 1437, 69, 1448, 1447, 1450, 1446, 69, 1449, 69, 69, - 69, 1451, 69, 69, 69, 69, 69, 69, 1457, 1452, - 69, 1458, 1455, 1461, 69, 69, 1456, 1454, 1453, 1462, - 69, 69, 1460, 69, 1464, 69, 69, 1459, 69, 1463, - 69, 1468, 1469, 1465, 69, 1471, 69, 1470, 69, 1466, + 1416, 1423, 69, 1422, 1425, 69, 69, 69, 69, 1418, + 69, 1421, 69, 1427, 69, 1429, 1431, 69, 1424, 1435, + 69, 69, 69, 69, 1426, 1433, 69, 1432, 69, 69, + 1430, 1434, 1439, 1440, 69, 1442, 69, 69, 1438, 69, + 1444, 1436, 69, 69, 69, 1437, 1445, 69, 1441, 1447, + 69, 69, 1443, 69, 1446, 69, 1451, 69, 69, 1456, + 1449, 69, 1453, 69, 69, 1457, 1454, 69, 1448, 69, + 1452, 1450, 1455, 69, 1460, 1461, 1459, 69, 1462, 69, + 69, 69, 69, 1458, 69, 1469, 1463, 69, 69, 1464, + 1467, 1465, 1470, 69, 1466, 69, 1468, 1473, 69, 1474, - 69, 69, 69, 1472, 69, 1467, 1475, 69, 1478, 69, - 69, 1879, 1477, 69, 69, 1474, 1479, 1482, 69, 1481, - 1473, 69, 69, 1484, 1476, 1480, 1483, 69, 69, 1486, - 1487, 69, 69, 69, 1490, 69, 1491, 69, 1489, 1492, - 69, 1485, 69, 1493, 69, 69, 69, 69, 69, 69, - 1488, 1496, 1499, 69, 1501, 69, 1494, 69, 1500, 69, - 1498, 1504, 69, 69, 69, 69, 1497, 1495, 1505, 69, - 1508, 1506, 1503, 1502, 1509, 69, 1510, 69, 1507, 1511, - 69, 69, 69, 69, 69, 69, 69, 69, 1519, 69, - 69, 1517, 69, 1512, 69, 1514, 1515, 1516, 69, 1520, + 69, 69, 1476, 69, 69, 1472, 69, 69, 1471, 1475, + 69, 1480, 69, 69, 69, 1477, 1481, 1482, 1478, 1483, + 69, 69, 69, 69, 69, 1479, 1484, 1485, 1487, 69, + 1490, 69, 69, 1488, 1489, 69, 1486, 1491, 69, 1492, + 1494, 69, 69, 1493, 1496, 69, 1497, 69, 1498, 1495, + 1499, 69, 69, 69, 1502, 69, 1503, 69, 1501, 1504, + 69, 1505, 69, 69, 69, 69, 69, 69, 1511, 69, + 1500, 1508, 69, 69, 69, 1513, 1516, 69, 1506, 1510, + 69, 1512, 69, 69, 1509, 1507, 69, 1517, 1518, 1515, + 69, 1514, 1521, 69, 69, 1520, 69, 1519, 1522, 69, - 1513, 69, 69, 69, 1526, 69, 69, 1518, 69, 69, - 69, 1523, 69, 1529, 1522, 1530, 1525, 69, 1521, 1531, - 69, 1532, 69, 1527, 69, 1524, 69, 1533, 1528, 1534, - 1535, 69, 69, 69, 69, 1541, 1542, 69, 69, 1536, - 1538, 69, 69, 69, 1537, 69, 69, 1543, 1544, 69, - 1551, 1540, 1539, 1550, 69, 69, 69, 1545, 69, 69, - 69, 1546, 1548, 1547, 69, 1555, 69, 69, 1549, 69, - 1561, 69, 69, 1553, 1552, 1557, 69, 69, 1554, 1560, - 1564, 69, 69, 69, 1556, 69, 1558, 1562, 69, 1559, - 69, 69, 1565, 69, 1567, 1563, 1569, 1566, 1568, 69, + 1523, 69, 69, 69, 69, 69, 1524, 1529, 69, 1531, + 69, 69, 69, 69, 1525, 1526, 1527, 1528, 69, 69, + 1532, 69, 69, 1538, 69, 69, 69, 69, 1530, 1544, + 69, 1535, 1542, 1534, 1539, 1537, 69, 69, 1533, 1545, + 69, 1543, 1540, 1536, 69, 1546, 69, 69, 1541, 69, + 69, 69, 69, 1554, 69, 1555, 69, 1547, 1551, 69, + 69, 69, 69, 69, 1548, 69, 69, 1557, 1556, 1549, + 1550, 1552, 1553, 1563, 69, 69, 1558, 69, 1564, 69, + 1559, 1560, 1561, 69, 1562, 69, 69, 69, 69, 69, + 1568, 69, 1566, 1565, 1573, 69, 1570, 69, 1567, 1574, - 1570, 69, 1572, 69, 1571, 1573, 69, 69, 1574, 69, - 69, 69, 1579, 1575, 69, 1577, 1578, 69, 1576, 69, - 69, 69, 1580, 69, 1582, 1583, 1585, 69, 1586, 69, - 1587, 69, 1581, 1588, 69, 1879, 1584, 69, 69, 1589, - 1590, 69, 1591, 69, 1592, 1593, 1596, 69, 69, 69, - 69, 1594, 69, 1595, 69, 69, 69, 69, 69, 1599, - 1598, 1601, 69, 69, 1597, 69, 1606, 1600, 69, 69, - 1603, 1604, 1605, 69, 1602, 69, 69, 1607, 1611, 69, - 69, 69, 1615, 69, 69, 1614, 69, 69, 1608, 1613, - 69, 1617, 1616, 1609, 1610, 1612, 1618, 69, 69, 69, + 69, 1577, 69, 69, 69, 1895, 1569, 1571, 1578, 1572, + 1575, 69, 69, 1581, 69, 1576, 1580, 69, 1579, 1583, + 69, 1585, 69, 69, 1582, 1586, 69, 69, 1587, 69, + 69, 69, 69, 69, 69, 1590, 1584, 1591, 1589, 69, + 69, 1593, 69, 69, 1595, 1588, 1895, 1596, 1601, 1594, + 1592, 1598, 69, 1599, 69, 1597, 69, 1602, 69, 69, + 1604, 69, 69, 1600, 1603, 1605, 69, 1607, 69, 69, + 69, 1606, 69, 1608, 69, 1609, 69, 1610, 69, 69, + 69, 69, 69, 1613, 1612, 1615, 69, 69, 69, 1611, + 69, 1614, 69, 1620, 1617, 1618, 1619, 1621, 1616, 69, - 69, 1620, 1879, 1619, 69, 1623, 1624, 69, 69, 1626, - 69, 69, 1621, 1627, 1622, 1628, 69, 1629, 69, 69, - 1625, 1630, 69, 1633, 1634, 69, 69, 1636, 69, 1631, - 1635, 1637, 69, 1632, 69, 69, 1639, 69, 69, 69, - 1638, 69, 1640, 1643, 69, 69, 1647, 69, 69, 69, - 69, 69, 1641, 1642, 69, 1651, 69, 1644, 1649, 1646, - 69, 1652, 69, 69, 1645, 69, 69, 1648, 1650, 69, - 1654, 1655, 1653, 1660, 69, 1657, 69, 69, 69, 1661, - 1664, 69, 1662, 1658, 69, 69, 69, 69, 1656, 1659, - 1665, 1668, 69, 1666, 69, 69, 1663, 69, 69, 1672, + 1895, 69, 1625, 69, 69, 69, 69, 1629, 69, 1622, + 1628, 69, 69, 69, 1627, 69, 1631, 69, 69, 1623, + 1624, 1630, 1634, 1626, 1632, 1633, 69, 69, 1637, 1638, + 69, 1635, 69, 69, 1640, 69, 1642, 69, 1641, 1643, + 69, 1636, 1644, 69, 69, 69, 1647, 1648, 69, 69, + 1650, 69, 1639, 1649, 1651, 69, 69, 69, 69, 1646, + 1654, 69, 1645, 1653, 69, 69, 1655, 69, 69, 1658, + 69, 1662, 69, 69, 69, 1656, 1657, 69, 69, 1652, + 69, 1666, 1664, 69, 1661, 1659, 69, 1667, 1660, 69, + 69, 69, 1663, 69, 1668, 1669, 1665, 69, 1675, 69, - 1667, 69, 1675, 69, 1670, 69, 1671, 1669, 1674, 69, - 69, 69, 69, 1678, 1676, 1677, 1679, 1682, 1680, 69, - 69, 69, 69, 1673, 1686, 1684, 69, 1688, 69, 69, - 69, 1681, 69, 1691, 69, 69, 69, 69, 69, 1685, - 1683, 1692, 69, 69, 1693, 69, 69, 1690, 1697, 1689, - 1696, 1687, 1694, 1699, 69, 1701, 69, 1695, 1702, 69, - 69, 69, 1704, 69, 69, 1700, 1703, 69, 1707, 69, - 69, 1698, 1710, 69, 1711, 69, 69, 69, 69, 69, - 1705, 1715, 69, 1708, 69, 69, 69, 1706, 1716, 1713, - 69, 1717, 1709, 69, 69, 1712, 1718, 1720, 1714, 1719, + 1672, 69, 69, 1670, 1676, 69, 69, 1677, 1679, 69, + 1680, 69, 69, 1673, 69, 1671, 69, 1674, 1683, 69, + 1681, 69, 69, 1678, 69, 1895, 1687, 1682, 69, 1684, + 1685, 1686, 69, 1689, 69, 1690, 69, 69, 69, 69, + 1693, 1691, 1692, 1694, 1695, 69, 1698, 1696, 69, 1688, + 69, 69, 69, 1702, 69, 1700, 1697, 69, 69, 1704, + 69, 69, 69, 1707, 69, 1708, 69, 69, 69, 1699, + 1701, 69, 69, 69, 69, 1709, 1705, 1706, 1713, 1703, + 1712, 1715, 69, 1710, 1717, 69, 69, 1711, 1718, 69, + 69, 1719, 69, 1716, 1720, 69, 69, 1714, 69, 1723, - 69, 1723, 69, 1724, 1725, 1721, 69, 1726, 69, 1727, - 69, 69, 1722, 69, 69, 69, 1729, 1732, 69, 1731, - 1735, 1728, 1733, 69, 1734, 69, 69, 1730, 1736, 69, - 69, 1737, 1738, 69, 69, 1741, 69, 69, 69, 69, - 1739, 69, 1742, 1740, 1744, 69, 1743, 69, 69, 69, - 69, 69, 1745, 1748, 69, 69, 69, 1750, 69, 1746, - 69, 1747, 1749, 1756, 1758, 69, 1759, 69, 1879, 1751, - 1752, 69, 1753, 1754, 69, 1760, 69, 1755, 1761, 69, - 1757, 69, 1763, 69, 69, 1762, 1765, 69, 1764, 69, - 69, 1766, 69, 1769, 1770, 69, 1771, 69, 1768, 69, + 69, 1726, 69, 1727, 69, 69, 69, 69, 1731, 69, + 1721, 69, 1733, 69, 1724, 1722, 1732, 69, 1725, 1729, + 69, 69, 69, 69, 1728, 1736, 1730, 69, 1737, 1734, + 1739, 1742, 69, 1743, 69, 69, 69, 69, 1740, 1741, + 1735, 69, 1745, 69, 69, 1776, 1738, 1748, 69, 1747, + 1749, 69, 1750, 69, 69, 1744, 69, 1746, 69, 1751, + 1752, 69, 69, 1753, 1754, 69, 69, 1756, 1757, 69, + 1755, 1758, 69, 1760, 69, 69, 69, 69, 69, 69, + 1759, 1761, 69, 1764, 69, 69, 69, 69, 69, 69, + 1766, 1765, 69, 1772, 1895, 1762, 1778, 1763, 1774, 69, - 69, 69, 1767, 69, 1772, 69, 69, 1879, 1776, 1879, - 1777, 1779, 69, 1780, 69, 1773, 1774, 1781, 69, 1782, - 69, 1775, 69, 69, 1784, 1778, 69, 1786, 69, 69, - 1788, 69, 1787, 69, 1783, 69, 69, 69, 1790, 69, - 69, 1785, 69, 69, 1794, 1789, 69, 69, 69, 69, - 69, 69, 69, 1793, 1797, 1791, 69, 1792, 1804, 69, - 1796, 1798, 1795, 69, 1806, 69, 1799, 1800, 1801, 1807, - 69, 1803, 1805, 69, 69, 1802, 1810, 69, 1808, 1809, - 1812, 69, 69, 69, 1816, 69, 1817, 69, 69, 69, - 69, 69, 1811, 69, 69, 1813, 69, 1814, 69, 69, + 69, 1768, 1767, 1769, 1770, 1775, 69, 69, 1771, 1773, + 1777, 69, 1779, 69, 1780, 1781, 69, 69, 69, 69, + 1785, 69, 1782, 1786, 69, 1787, 69, 1784, 69, 69, + 69, 69, 69, 1788, 69, 1783, 1792, 1793, 1795, 69, + 1796, 69, 1797, 69, 1790, 69, 1789, 1798, 69, 69, + 1800, 1791, 69, 1794, 1802, 69, 69, 1799, 1804, 1803, + 69, 69, 69, 69, 69, 69, 1806, 1801, 69, 1810, + 69, 69, 69, 69, 1805, 69, 69, 69, 69, 1820, + 69, 1807, 1808, 1813, 1809, 1812, 1814, 69, 69, 69, + 1811, 69, 1817, 69, 1815, 1816, 1824, 1821, 1822, 69, - 69, 1818, 1815, 1819, 69, 1826, 69, 1820, 1821, 1823, - 69, 1824, 1822, 69, 1829, 1827, 69, 69, 1825, 69, - 69, 1830, 1831, 1828, 1832, 1833, 1834, 1835, 69, 69, - 69, 69, 1839, 69, 69, 69, 1836, 69, 69, 1837, - 1842, 69, 69, 69, 1846, 69, 69, 1841, 69, 1838, - 1847, 69, 1840, 69, 1849, 1845, 1851, 1843, 69, 1850, - 1844, 69, 1854, 69, 69, 1848, 69, 1853, 1852, 69, - 69, 1855, 69, 1856, 69, 1858, 69, 69, 69, 1860, - 69, 1861, 69, 1864, 69, 69, 1867, 69, 1857, 1868, - 69, 1859, 1870, 69, 1869, 69, 1862, 1863, 69, 1865, + 1823, 69, 1819, 1818, 69, 1828, 69, 69, 1827, 1825, + 69, 69, 1832, 1833, 1826, 69, 69, 69, 69, 69, + 1829, 69, 1830, 69, 69, 69, 69, 69, 69, 1834, + 1831, 69, 1835, 1842, 69, 1836, 1843, 1837, 1839, 1840, + 1838, 69, 1845, 1841, 69, 69, 1844, 69, 69, 1846, + 1847, 1850, 1848, 1849, 1851, 69, 69, 69, 69, 69, + 1855, 69, 69, 69, 1852, 69, 69, 1853, 1858, 69, + 69, 1862, 69, 69, 1857, 69, 1895, 1854, 1856, 1895, + 1863, 1859, 1861, 69, 1865, 1860, 69, 1866, 69, 69, + 69, 1864, 1869, 1867, 1870, 69, 1868, 1871, 69, 69, - 1871, 69, 1872, 1866, 69, 69, 69, 1877, 69, 1873, - 1874, 1878, 69, 1879, 1879, 1879, 1879, 1875, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1876, 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, 1879, 72, 72, 72, 72, 127, 127, - 1879, 1879, 1879, 127, 127, 129, 129, 1879, 1879, 129, - 1879, 129, 131, 1879, 1879, 1879, 1879, 1879, 131, 134, - 134, 1879, 1879, 1879, 134, 134, 136, 1879, 1879, 1879, + 69, 69, 69, 69, 69, 1872, 1874, 1876, 1877, 69, + 69, 1880, 69, 69, 69, 1883, 1884, 69, 1873, 1875, + 69, 1886, 69, 1878, 1887, 69, 69, 1885, 1879, 69, + 69, 1881, 1882, 1888, 1889, 1890, 69, 69, 1893, 69, + 1894, 69, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, + 1895, 1895, 1895, 1895, 1895, 1891, 1892, 41, 41, 41, + 41, 41, 41, 41, 46, 46, 46, 46, 46, 46, + 46, 51, 51, 51, 51, 51, 51, 51, 57, 57, + 57, 57, 57, 57, 57, 62, 62, 62, 62, 62, + 62, 62, 72, 72, 1895, 72, 72, 72, 72, 128, - 1879, 1879, 136, 138, 138, 1879, 138, 138, 138, 138, - 73, 73, 1879, 73, 73, 73, 73, 13, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879 + 128, 1895, 1895, 1895, 128, 128, 130, 130, 1895, 1895, + 130, 1895, 130, 132, 1895, 1895, 1895, 1895, 1895, 132, + 135, 135, 1895, 1895, 1895, 135, 135, 137, 1895, 1895, + 1895, 1895, 1895, 137, 139, 139, 1895, 139, 139, 139, + 139, 73, 73, 1895, 73, 73, 73, 73, 13, 1895, + 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, + 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, + 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, + 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895 } ; -static yyconst flex_int16_t yy_chk[3758] = +static yyconst flex_int16_t yy_chk[3789] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1488,10 +1489,10 @@ static yyconst flex_int16_t yy_chk[3758] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4, 4, 4, 50, 5, 5, 50, 3, 5, 15, 4, 6, 6, 15, 5, 6, 9, 9, - 9, 158, 33, 6, 7, 7, 7, 7, 9, 7, + 9, 159, 33, 6, 7, 7, 7, 7, 9, 7, 10, 10, 10, 45, 45, 7, 8, 8, 8, 8, - 10, 8, 21, 33, 158, 21, 21, 8, 11, 11, - 11, 11, 11, 11, 1885, 20, 29, 20, 20, 11, + 10, 8, 21, 33, 159, 21, 21, 8, 11, 11, + 11, 11, 11, 11, 1901, 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, @@ -1500,401 +1501,404 @@ static yyconst flex_int16_t yy_chk[3758] = 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, - 689, 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, + 697, 39, 38, 38, 37, 38, 77, 36, 67, 76, + 36, 32, 34, 76, 37, 80, 84, 34, 37, 37, + 38, 34, 67, 40, 40, 122, 77, 34, 40, 80, - 34, 64, 64, 66, 64, 66, 66, 34, 66, 67, - 64, 69, 77, 69, 69, 76, 69, 78, 80, 76, - 78, 69, 82, 67, 72, 81, 72, 72, 84, 72, - 86, 81, 80, 78, 72, 72, 88, 81, 85, 87, - 82, 82, 89, 85, 86, 90, 91, 84, 92, 90, - 95, 91, 93, 98, 88, 93, 85, 136, 93, 87, - 89, 94, 92, 96, 99, 105, 94, 97, 96, 95, - 97, 93, 93, 101, 97, 100, 102, 98, 99, 100, - 101, 104, 106, 103, 108, 105, 110, 107, 96, 102, - 103, 107, 109, 112, 104, 113, 114, 109, 115, 117, + 34, 56, 40, 56, 56, 84, 56, 34, 64, 79, + 64, 64, 66, 64, 66, 66, 122, 66, 69, 64, + 69, 69, 78, 69, 81, 78, 82, 79, 69, 72, + 81, 72, 72, 86, 72, 88, 81, 85, 78, 72, + 72, 87, 85, 92, 82, 82, 89, 86, 90, 91, + 95, 176, 90, 88, 91, 85, 93, 92, 94, 93, + 96, 87, 93, 94, 89, 96, 98, 97, 99, 95, + 97, 101, 176, 100, 97, 93, 93, 100, 101, 102, + 103, 104, 99, 105, 106, 96, 108, 103, 110, 107, + 98, 109, 102, 107, 104, 112, 109, 111, 111, 113, - 106, 109, 108, 116, 117, 120, 110, 118, 113, 119, - 119, 114, 121, 112, 122, 124, 123, 115, 123, 118, - 124, 116, 125, 120, 126, 128, 128, 159, 121, 130, - 119, 159, 130, 134, 125, 122, 135, 135, 132, 123, - 132, 132, 126, 132, 137, 143, 137, 137, 138, 137, - 138, 138, 140, 138, 145, 140, 141, 142, 144, 138, - 143, 141, 142, 146, 147, 148, 144, 150, 151, 151, - 149, 156, 150, 145, 148, 149, 149, 152, 146, 153, - 161, 153, 152, 157, 147, 155, 155, 160, 157, 162, - 156, 164, 160, 163, 161, 165, 213, 168, 166, 169, + 109, 114, 106, 105, 108, 115, 117, 116, 110, 118, + 120, 117, 113, 119, 119, 112, 114, 121, 123, 125, + 123, 118, 124, 137, 115, 116, 126, 124, 120, 131, + 127, 125, 131, 121, 119, 127, 129, 129, 136, 136, + 133, 123, 133, 133, 126, 133, 138, 144, 138, 138, + 139, 138, 139, 139, 141, 139, 146, 141, 142, 143, + 145, 139, 144, 142, 143, 147, 148, 149, 145, 151, + 152, 152, 150, 157, 151, 146, 149, 150, 150, 153, + 147, 154, 163, 154, 153, 158, 148, 156, 156, 160, + 158, 161, 157, 160, 165, 162, 161, 163, 135, 164, - 165, 153, 154, 166, 162, 163, 154, 175, 163, 164, - 213, 154, 167, 167, 170, 169, 154, 168, 167, 170, - 171, 171, 154, 154, 172, 173, 176, 174, 175, 172, - 173, 176, 167, 177, 178, 172, 174, 179, 177, 178, - 180, 181, 179, 182, 183, 184, 185, 180, 186, 182, - 187, 184, 188, 190, 181, 189, 186, 188, 192, 193, - 191, 194, 195, 187, 183, 191, 194, 196, 185, 196, - 189, 198, 197, 190, 199, 200, 198, 193, 193, 197, - 192, 202, 195, 201, 201, 203, 202, 200, 205, 204, - 203, 204, 206, 199, 207, 212, 208, 211, 209, 214, + 166, 167, 169, 154, 155, 166, 167, 170, 155, 162, + 181, 164, 165, 155, 164, 168, 168, 181, 155, 172, + 172, 168, 169, 170, 155, 155, 171, 173, 174, 177, + 175, 171, 173, 174, 177, 168, 178, 179, 173, 175, + 180, 178, 179, 182, 183, 180, 184, 185, 186, 187, + 183, 188, 190, 185, 189, 191, 182, 187, 192, 189, + 193, 194, 134, 192, 188, 196, 184, 190, 195, 197, + 186, 197, 199, 195, 198, 191, 200, 199, 201, 194, + 194, 198, 193, 202, 202, 196, 203, 204, 206, 207, + 201, 203, 204, 208, 205, 200, 205, 209, 210, 211, - 205, 208, 207, 209, 202, 210, 215, 214, 204, 133, - 210, 206, 211, 212, 216, 223, 217, 216, 217, 218, - 218, 219, 220, 220, 219, 221, 221, 222, 228, 224, - 223, 215, 224, 225, 227, 226, 232, 225, 234, 227, - 229, 229, 228, 222, 226, 230, 231, 233, 235, 238, - 230, 231, 236, 236, 237, 240, 232, 237, 239, 234, - 241, 235, 239, 242, 243, 233, 246, 238, 244, 243, - 245, 244, 247, 240, 248, 242, 249, 253, 241, 250, - 253, 247, 245, 246, 254, 251, 246, 251, 251, 249, - 255, 250, 252, 252, 256, 248, 261, 257, 258, 258, + 213, 207, 212, 210, 211, 209, 214, 212, 215, 203, + 216, 206, 208, 205, 217, 213, 218, 221, 216, 218, + 221, 219, 215, 219, 214, 220, 220, 222, 222, 223, + 223, 224, 226, 225, 227, 226, 228, 229, 227, 217, + 230, 232, 229, 231, 231, 228, 232, 224, 225, 234, + 233, 236, 235, 237, 230, 233, 238, 238, 239, 240, + 241, 239, 242, 243, 241, 248, 237, 244, 245, 234, + 235, 246, 236, 245, 246, 247, 250, 240, 251, 244, + 242, 243, 248, 249, 252, 248, 253, 247, 253, 253, + 256, 251, 249, 254, 254, 255, 252, 250, 255, 257, - 263, 254, 259, 256, 254, 255, 257, 259, 260, 260, - 262, 261, 263, 264, 265, 262, 266, 267, 268, 265, - 269, 268, 267, 268, 270, 272, 271, 273, 274, 276, - 272, 275, 273, 264, 269, 271, 266, 284, 277, 278, - 270, 274, 278, 270, 276, 270, 279, 281, 282, 274, - 283, 275, 277, 285, 286, 288, 284, 282, 278, 289, - 279, 280, 281, 280, 280, 287, 290, 291, 285, 292, - 287, 283, 291, 280, 286, 280, 280, 280, 288, 289, - 280, 290, 293, 294, 292, 295, 296, 293, 297, 298, - 299, 300, 300, 297, 300, 299, 301, 295, 302, 303, + 258, 261, 259, 260, 260, 263, 261, 256, 266, 258, + 256, 259, 262, 262, 257, 265, 264, 267, 268, 269, + 263, 264, 267, 271, 269, 272, 270, 265, 266, 270, + 273, 270, 276, 278, 277, 274, 279, 271, 268, 273, + 274, 272, 275, 281, 272, 276, 272, 275, 278, 280, + 279, 283, 280, 276, 277, 284, 285, 281, 286, 287, + 285, 285, 288, 291, 284, 290, 283, 289, 280, 282, + 290, 282, 282, 292, 293, 294, 295, 288, 287, 286, + 294, 282, 297, 282, 282, 282, 291, 289, 282, 293, + 296, 295, 298, 292, 299, 296, 300, 301, 302, 304, - 296, 307, 131, 294, 304, 298, 305, 306, 305, 308, - 315, 306, 309, 310, 302, 303, 301, 313, 304, 307, - 311, 309, 310, 308, 312, 311, 313, 314, 312, 316, - 321, 315, 314, 317, 309, 316, 318, 317, 319, 319, - 320, 318, 324, 321, 323, 320, 322, 322, 325, 323, - 326, 327, 328, 328, 329, 327, 330, 325, 334, 329, - 331, 331, 326, 324, 333, 333, 335, 336, 337, 338, - 341, 340, 342, 343, 335, 344, 336, 330, 343, 334, - 345, 338, 348, 349, 344, 345, 342, 346, 337, 340, - 341, 340, 347, 350, 351, 346, 352, 347, 351, 353, + 305, 300, 297, 302, 298, 306, 303, 303, 299, 303, + 307, 309, 308, 301, 308, 309, 305, 310, 311, 304, + 312, 306, 313, 314, 307, 316, 315, 318, 314, 312, + 315, 313, 311, 317, 316, 310, 320, 319, 317, 321, + 320, 324, 312, 319, 321, 322, 322, 323, 318, 325, + 325, 326, 323, 327, 324, 328, 326, 329, 330, 331, + 331, 332, 330, 333, 328, 337, 332, 334, 334, 329, + 336, 336, 338, 339, 327, 340, 341, 344, 343, 345, + 338, 352, 339, 347, 333, 346, 337, 353, 341, 348, + 346, 349, 347, 345, 348, 340, 343, 344, 343, 349, - 348, 354, 355, 359, 353, 349, 357, 364, 358, 361, - 360, 352, 361, 362, 350, 360, 366, 354, 369, 359, - 360, 355, 356, 356, 363, 363, 357, 358, 356, 367, - 356, 366, 364, 362, 365, 365, 368, 369, 356, 370, - 371, 367, 374, 372, 373, 371, 375, 377, 356, 376, - 375, 368, 372, 378, 376, 379, 380, 374, 382, 377, - 384, 370, 383, 373, 380, 381, 381, 383, 379, 386, - 382, 378, 384, 385, 387, 388, 385, 389, 388, 387, - 407, 390, 391, 398, 386, 390, 390, 392, 392, 393, - 393, 129, 394, 389, 407, 391, 389, 394, 395, 395, + 350, 351, 354, 352, 356, 350, 354, 355, 353, 356, + 357, 358, 362, 360, 364, 361, 365, 364, 367, 351, + 366, 366, 355, 368, 368, 372, 357, 369, 362, 370, + 358, 359, 359, 360, 361, 363, 365, 359, 371, 359, + 363, 370, 369, 367, 372, 363, 373, 359, 376, 374, + 375, 377, 378, 371, 374, 132, 380, 359, 378, 375, + 380, 382, 383, 384, 381, 387, 377, 376, 373, 381, + 385, 386, 386, 382, 388, 389, 384, 387, 385, 388, + 383, 390, 391, 392, 390, 394, 393, 389, 392, 393, + 395, 399, 396, 403, 395, 395, 399, 391, 397, 397, - 396, 396, 397, 399, 398, 400, 401, 397, 399, 400, - 402, 401, 403, 404, 402, 405, 406, 403, 409, 408, - 405, 406, 408, 410, 410, 411, 413, 408, 415, 412, - 414, 408, 419, 404, 412, 414, 409, 415, 416, 418, - 413, 416, 417, 411, 418, 419, 417, 420, 421, 422, - 423, 424, 420, 425, 428, 423, 425, 424, 427, 426, - 429, 422, 426, 427, 421, 430, 431, 442, 417, 442, - 430, 431, 428, 432, 429, 434, 433, 435, 432, 433, - 434, 435, 435, 436, 437, 438, 439, 445, 440, 441, - 438, 440, 443, 441, 441, 439, 436, 437, 444, 446, + 130, 394, 398, 398, 394, 396, 400, 400, 401, 401, + 402, 404, 409, 405, 403, 402, 404, 405, 406, 412, + 407, 408, 410, 406, 407, 411, 408, 410, 413, 414, + 411, 413, 409, 412, 415, 415, 413, 416, 417, 418, + 413, 419, 420, 417, 423, 421, 419, 414, 421, 423, + 422, 420, 424, 418, 422, 416, 425, 426, 427, 428, + 429, 425, 432, 433, 428, 424, 429, 432, 430, 431, + 427, 430, 431, 426, 434, 435, 422, 436, 437, 441, + 435, 433, 436, 437, 438, 439, 442, 438, 434, 440, + 439, 443, 441, 440, 440, 444, 443, 445, 446, 442, - 444, 447, 448, 449, 450, 445, 440, 449, 451, 452, - 453, 443, 455, 450, 454, 456, 462, 446, 127, 454, - 447, 459, 448, 451, 461, 453, 458, 452, 457, 457, - 458, 455, 459, 460, 456, 462, 463, 464, 460, 469, - 461, 465, 467, 466, 464, 470, 465, 467, 468, 463, - 466, 471, 470, 468, 472, 474, 473, 469, 474, 475, - 471, 473, 476, 475, 477, 477, 478, 480, 472, 481, - 482, 488, 480, 477, 482, 478, 483, 484, 486, 485, - 487, 497, 491, 476, 485, 494, 486, 498, 483, 481, - 497, 504, 503, 498, 806, 484, 488, 491, 487, 489, + 445, 448, 446, 446, 444, 447, 449, 447, 449, 450, + 451, 452, 453, 454, 455, 445, 456, 454, 457, 458, + 448, 459, 460, 455, 461, 463, 459, 450, 451, 463, + 452, 456, 453, 464, 458, 465, 457, 462, 462, 466, + 465, 460, 467, 461, 464, 468, 469, 470, 474, 471, + 477, 128, 470, 469, 472, 466, 471, 473, 468, 472, + 475, 467, 473, 476, 477, 478, 474, 475, 479, 482, + 483, 483, 476, 479, 478, 480, 481, 484, 480, 483, + 481, 487, 486, 489, 488, 490, 484, 486, 488, 491, + 482, 492, 493, 494, 491, 489, 497, 500, 503, 492, - 505, 499, 494, 505, 489, 499, 507, 500, 489, 502, - 503, 489, 500, 507, 502, 509, 504, 806, 489, 506, - 506, 489, 501, 501, 501, 515, 501, 508, 508, 501, - 509, 510, 510, 511, 501, 516, 512, 513, 511, 512, - 501, 501, 513, 514, 515, 514, 517, 520, 518, 519, - 519, 521, 522, 523, 523, 516, 518, 522, 524, 525, - 527, 533, 520, 524, 525, 517, 527, 526, 528, 521, - 526, 529, 530, 531, 532, 535, 528, 536, 531, 529, - 533, 532, 534, 534, 535, 536, 537, 538, 540, 541, - 530, 537, 542, 543, 545, 542, 548, 540, 541, 544, + 504, 487, 510, 490, 505, 509, 504, 503, 505, 1198, + 493, 497, 506, 511, 500, 508, 511, 506, 494, 495, + 508, 512, 512, 509, 495, 513, 1198, 510, 495, 514, + 514, 495, 513, 515, 516, 516, 518, 521, 495, 518, + 517, 495, 507, 507, 507, 517, 507, 519, 515, 507, + 522, 520, 519, 520, 507, 523, 521, 524, 525, 525, + 507, 507, 526, 527, 528, 524, 529, 529, 530, 528, + 522, 531, 532, 530, 523, 532, 531, 526, 533, 534, + 535, 527, 536, 539, 533, 537, 538, 534, 535, 541, + 537, 540, 540, 538, 543, 542, 544, 546, 541, 543, - 544, 546, 550, 549, 546, 551, 538, 543, 549, 545, - 552, 553, 546, 554, 555, 556, 557, 548, 555, 558, - 559, 560, 554, 550, 562, 551, 563, 560, 558, 561, - 561, 553, 552, 556, 559, 557, 564, 565, 567, 566, - 563, 564, 565, 566, 562, 569, 568, 570, 571, 571, - 569, 572, 573, 574, 575, 573, 572, 567, 568, 576, - 577, 578, 578, 580, 576, 579, 579, 575, 570, 581, - 582, 574, 583, 581, 584, 585, 587, 587, 580, 588, - 577, 591, 590, 588, 589, 591, 592, 593, 584, 582, - 594, 595, 593, 601, 596, 585, 583, 586, 596, 589, + 536, 547, 539, 542, 548, 549, 546, 548, 550, 550, + 547, 551, 554, 552, 556, 544, 552, 555, 557, 549, + 558, 559, 555, 560, 552, 561, 551, 562, 563, 561, + 564, 566, 560, 554, 565, 556, 568, 566, 557, 564, + 569, 559, 558, 567, 567, 562, 570, 563, 565, 572, + 571, 570, 573, 572, 569, 571, 568, 574, 575, 576, + 577, 577, 578, 575, 580, 579, 581, 578, 579, 574, + 582, 573, 583, 584, 584, 582, 585, 586, 586, 581, + 576, 587, 580, 588, 589, 590, 591, 588, 592, 594, + 594, 595, 583, 597, 585, 595, 587, 596, 598, 599, - 586, 592, 586, 600, 594, 595, 586, 590, 586, 597, - 598, 599, 602, 586, 601, 598, 599, 600, 586, 606, - 608, 603, 68, 604, 597, 598, 602, 603, 604, 605, - 605, 606, 609, 607, 608, 605, 611, 605, 607, 610, - 610, 611, 612, 613, 609, 614, 615, 615, 616, 618, - 612, 620, 616, 619, 618, 605, 619, 613, 621, 624, - 622, 623, 628, 625, 614, 622, 623, 626, 627, 629, - 620, 621, 625, 630, 629, 631, 632, 627, 624, 633, - 635, 628, 636, 626, 633, 632, 637, 638, 641, 631, - 639, 640, 638, 630, 644, 639, 640, 641, 646, 635, + 591, 600, 598, 589, 68, 613, 600, 604, 592, 590, + 593, 601, 596, 593, 599, 593, 602, 613, 597, 593, + 603, 593, 604, 605, 603, 601, 593, 606, 605, 607, + 602, 593, 606, 608, 609, 610, 615, 611, 605, 612, + 612, 610, 611, 607, 614, 612, 616, 612, 609, 614, + 615, 617, 617, 619, 608, 618, 620, 621, 616, 627, + 618, 619, 622, 622, 623, 612, 625, 628, 623, 626, + 620, 625, 626, 631, 629, 632, 621, 630, 627, 629, + 628, 633, 630, 635, 632, 634, 636, 637, 640, 638, + 639, 636, 631, 640, 634, 642, 644, 633, 643, 639, - 636, 637, 642, 642, 643, 649, 647, 644, 649, 643, - 647, 647, 648, 648, 646, 650, 648, 651, 652, 653, - 654, 655, 656, 654, 659, 657, 658, 656, 660, 650, - 657, 663, 658, 652, 660, 661, 661, 651, 662, 653, - 659, 664, 655, 665, 664, 666, 667, 662, 669, 663, - 668, 670, 672, 669, 673, 675, 670, 673, 674, 678, - 676, 665, 680, 668, 666, 676, 667, 675, 677, 674, - 672, 679, 679, 677, 678, 681, 682, 684, 683, 686, - 687, 680, 683, 685, 692, 690, 691, 714, 682, 681, - 714, 693, 685, 697, 700, 684, 693, 694, 686, 690, + 645, 646, 635, 638, 647, 645, 646, 637, 648, 647, + 650, 644, 649, 649, 642, 650, 643, 648, 651, 653, + 654, 658, 655, 655, 654, 654, 655, 656, 657, 659, + 656, 651, 660, 661, 662, 653, 661, 62, 663, 670, + 664, 658, 657, 663, 659, 664, 666, 665, 667, 668, + 668, 669, 660, 665, 667, 662, 671, 670, 672, 671, + 669, 673, 666, 674, 675, 676, 677, 679, 681, 680, + 676, 677, 680, 683, 682, 685, 672, 675, 683, 681, + 673, 687, 684, 674, 688, 679, 682, 684, 686, 686, + 685, 689, 690, 691, 693, 692, 690, 694, 688, 696, - 698, 691, 694, 695, 692, 687, 696, 697, 695, 700, - 699, 696, 701, 702, 698, 699, 704, 703, 705, 705, - 702, 707, 706, 708, 709, 710, 710, 712, 711, 708, - 715, 701, 703, 711, 712, 704, 706, 713, 716, 707, - 717, 718, 720, 722, 709, 717, 721, 716, 715, 719, - 721, 713, 722, 723, 719, 724, 725, 726, 727, 728, - 718, 720, 736, 725, 729, 730, 731, 732, 723, 726, - 724, 730, 62, 735, 733, 738, 736, 727, 735, 740, - 728, 731, 729, 733, 737, 739, 742, 732, 743, 741, - 739, 740, 737, 741, 741, 738, 744, 744, 745, 746, + 687, 698, 699, 689, 692, 700, 705, 701, 57, 702, + 709, 691, 701, 693, 702, 698, 703, 699, 696, 704, + 705, 703, 694, 706, 704, 700, 707, 708, 710, 709, + 711, 707, 712, 713, 713, 710, 714, 706, 715, 717, + 716, 720, 708, 718, 718, 711, 716, 719, 720, 721, + 714, 712, 719, 723, 722, 724, 715, 722, 726, 717, + 725, 727, 728, 721, 724, 725, 727, 730, 729, 731, + 732, 723, 729, 733, 734, 735, 730, 726, 736, 737, + 733, 728, 738, 739, 731, 732, 734, 740, 738, 744, + 743, 741, 746, 745, 735, 743, 748, 737, 739, 736, - 57, 747, 743, 748, 748, 742, 747, 749, 746, 750, - 752, 745, 749, 753, 750, 751, 751, 754, 753, 752, - 755, 756, 757, 758, 763, 759, 756, 757, 758, 759, - 766, 754, 761, 761, 762, 763, 762, 765, 755, 760, - 767, 765, 768, 771, 772, 766, 775, 774, 760, 770, - 773, 768, 772, 760, 777, 760, 769, 760, 767, 760, - 769, 769, 771, 770, 773, 774, 776, 776, 782, 777, - 781, 775, 778, 778, 780, 781, 784, 780, 783, 783, - 785, 785, 788, 786, 787, 787, 789, 782, 786, 790, - 791, 789, 792, 792, 793, 791, 784, 790, 794, 795, + 741, 745, 750, 744, 747, 751, 749, 740, 748, 747, + 749, 749, 746, 752, 752, 753, 754, 755, 763, 751, + 52, 750, 755, 756, 756, 754, 757, 758, 753, 759, + 759, 757, 758, 760, 761, 762, 763, 840, 764, 761, + 765, 766, 760, 764, 767, 765, 766, 771, 767, 762, + 768, 769, 769, 770, 774, 770, 773, 775, 771, 768, + 773, 779, 776, 840, 768, 778, 768, 782, 768, 774, + 768, 776, 777, 780, 781, 775, 777, 777, 783, 778, + 779, 780, 784, 784, 785, 782, 786, 786, 781, 788, + 789, 790, 788, 791, 791, 789, 792, 793, 793, 785, - 797, 802, 788, 798, 794, 797, 795, 801, 798, 799, - 800, 803, 793, 805, 799, 800, 801, 804, 804, 807, - 802, 808, 803, 809, 807, 810, 811, 812, 812, 813, - 814, 816, 815, 805, 818, 808, 816, 810, 817, 817, - 819, 808, 821, 809, 811, 819, 824, 822, 831, 813, - 815, 822, 822, 823, 824, 814, 825, 818, 825, 826, - 827, 821, 823, 828, 829, 827, 830, 828, 832, 834, - 835, 833, 838, 826, 831, 829, 833, 836, 837, 839, - 840, 836, 841, 842, 843, 830, 832, 834, 846, 843, - 835, 838, 844, 839, 850, 840, 837, 841, 845, 844, + 794, 795, 795, 783, 796, 794, 797, 798, 799, 801, + 790, 797, 803, 799, 802, 798, 792, 800, 800, 803, + 802, 805, 809, 806, 796, 807, 805, 801, 806, 808, + 807, 809, 810, 811, 808, 812, 812, 813, 814, 815, + 816, 817, 819, 818, 811, 816, 820, 821, 821, 822, + 823, 810, 824, 827, 819, 817, 51, 813, 814, 830, + 825, 817, 815, 818, 820, 825, 826, 826, 828, 822, + 824, 832, 834, 828, 834, 823, 827, 831, 830, 833, + 832, 831, 831, 835, 836, 838, 837, 833, 839, 836, + 837, 841, 843, 842, 844, 845, 838, 835, 842, 845, - 847, 848, 842, 845, 849, 52, 846, 851, 852, 847, - 849, 859, 851, 852, 853, 850, 848, 854, 854, 853, - 855, 855, 857, 857, 858, 860, 861, 862, 858, 859, - 860, 863, 865, 864, 866, 863, 863, 864, 864, 867, - 861, 868, 869, 871, 870, 872, 862, 873, 869, 870, - 874, 865, 876, 866, 875, 877, 878, 878, 879, 880, - 868, 879, 871, 889, 872, 867, 873, 882, 875, 874, - 877, 880, 882, 876, 881, 881, 883, 884, 885, 886, - 883, 896, 887, 889, 887, 890, 890, 885, 887, 891, - 884, 892, 886, 893, 891, 892, 909, 894, 898, 896, + 846, 847, 848, 851, 849, 853, 850, 839, 852, 841, + 843, 855, 853, 852, 844, 856, 848, 857, 846, 849, + 847, 850, 851, 854, 856, 858, 859, 868, 854, 855, + 860, 858, 857, 861, 862, 860, 863, 863, 861, 862, + 864, 864, 866, 866, 867, 868, 869, 859, 867, 870, + 871, 869, 872, 874, 873, 875, 872, 872, 873, 873, + 876, 877, 878, 870, 880, 879, 881, 884, 878, 871, + 879, 882, 874, 883, 875, 885, 886, 887, 887, 888, + 877, 884, 888, 880, 905, 881, 876, 889, 890, 890, + 882, 886, 883, 891, 893, 894, 885, 892, 891, 889, - 51, 887, 894, 898, 899, 899, 900, 902, 902, 904, - 904, 900, 906, 893, 908, 906, 907, 907, 910, 911, - 912, 909, 913, 913, 911, 914, 915, 915, 916, 908, - 917, 920, 910, 918, 919, 912, 920, 918, 922, 925, - 923, 917, 924, 924, 925, 914, 926, 927, 928, 929, - 916, 933, 46, 919, 923, 938, 922, 928, 930, 931, - 930, 936, 941, 932, 931, 934, 926, 927, 932, 929, - 934, 933, 937, 937, 938, 936, 939, 942, 942, 943, - 944, 945, 939, 946, 945, 947, 941, 945, 946, 948, - 947, 943, 949, 950, 953, 953, 954, 949, 948, 945, + 895, 892, 905, 896, 894, 896, 898, 893, 902, 896, + 899, 899, 900, 895, 901, 903, 907, 900, 901, 918, + 903, 907, 896, 908, 908, 909, 898, 917, 902, 919, + 909, 911, 911, 913, 913, 915, 916, 916, 915, 921, + 920, 923, 917, 919, 918, 920, 922, 922, 924, 924, + 925, 926, 927, 929, 921, 928, 927, 932, 929, 931, + 931, 923, 926, 933, 934, 934, 935, 936, 937, 938, + 939, 935, 925, 943, 928, 932, 951, 933, 938, 940, + 941, 940, 946, 948, 942, 941, 944, 936, 937, 942, + 939, 944, 949, 943, 947, 947, 946, 953, 949, 954, - 944, 951, 952, 955, 951, 956, 957, 952, 958, 959, - 960, 957, 963, 958, 954, 960, 961, 961, 950, 962, - 964, 965, 955, 966, 962, 956, 967, 970, 969, 968, - 963, 971, 959, 969, 972, 973, 980, 966, 967, 977, - 964, 965, 968, 975, 975, 976, 978, 970, 972, 979, - 976, 971, 980, 978, 977, 982, 973, 987, 979, 984, - 984, 979, 985, 986, 989, 985, 994, 988, 986, 990, - 982, 991, 992, 987, 995, 982, 988, 992, 990, 996, - 991, 990, 997, 989, 993, 993, 994, 995, 998, 999, - 1001, 1002, 1003, 1003, 1004, 1006, 997, 996, 1005, 1008, + 951, 956, 948, 952, 952, 955, 956, 957, 955, 953, + 959, 955, 957, 958, 960, 959, 962, 961, 964, 954, + 961, 962, 958, 955, 963, 963, 965, 966, 967, 968, + 969, 973, 970, 967, 968, 974, 964, 970, 972, 960, + 971, 971, 975, 972, 976, 965, 978, 966, 977, 973, + 980, 979, 981, 969, 982, 974, 979, 983, 976, 978, + 977, 986, 975, 985, 985, 987, 986, 988, 982, 992, + 980, 990, 981, 989, 988, 994, 994, 999, 983, 997, + 987, 998, 989, 995, 992, 989, 995, 990, 996, 992, + 998, 1000, 1001, 996, 1002, 997, 999, 1003, 1003, 1002, - 1006, 999, 1007, 1007, 998, 1009, 1012, 1005, 1008, 1002, - 1004, 1008, 1015, 1011, 1013, 1001, 1014, 1007, 1011, 1013, - 1016, 1017, 1014, 1009, 1012, 1016, 1018, 1022, 1021, 1018, - 1023, 1024, 1015, 1025, 1017, 1018, 1021, 1026, 1025, 1027, - 1022, 1029, 1030, 1035, 1031, 1034, 1030, 1032, 1023, 1031, - 1024, 1033, 1032, 1026, 1034, 1036, 1033, 1027, 1037, 1037, - 1038, 1029, 1039, 1040, 1041, 1042, 1035, 1043, 1044, 1039, - 1036, 1045, 1043, 1046, 1038, 1040, 1041, 1047, 1047, 1046, - 1044, 1052, 1048, 1051, 1042, 1048, 1049, 1049, 1051, 1045, - 1052, 1053, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1055, + 1000, 1001, 1004, 1000, 1005, 1006, 1007, 1009, 1008, 1011, + 1012, 1013, 1013, 1014, 1019, 1059, 1015, 1005, 1059, 1009, + 1007, 1016, 1004, 1006, 1008, 1015, 1016, 1018, 1012, 1014, + 1017, 1017, 1019, 1021, 1011, 1022, 1018, 1023, 1021, 1018, + 1024, 1025, 1023, 1026, 1027, 1017, 1024, 1028, 1026, 1032, + 1028, 1031, 1033, 1022, 1034, 1035, 1028, 1027, 1036, 1031, + 1035, 1025, 1032, 1037, 1039, 1040, 1041, 1042, 1044, 1040, + 1033, 1041, 1042, 1034, 1036, 1043, 1045, 1044, 1047, 1051, + 1043, 1037, 1048, 1048, 1039, 1050, 1049, 1053, 46, 1052, + 1054, 1051, 1050, 1047, 1056, 1054, 1055, 1057, 41, 1045, - 1060, 1061, 1062, 1059, 1056, 1054, 1063, 1063, 1057, 1060, - 1064, 1065, 1058, 41, 1066, 1064, 1067, 1062, 1068, 1068, - 1069, 1061, 1060, 1070, 1070, 1071, 1071, 1072, 1077, 1073, - 1079, 1072, 1065, 1066, 1073, 1074, 1067, 1076, 1074, 1078, - 1069, 1084, 1076, 1085, 1078, 1083, 1077, 1080, 1080, 1081, - 1081, 1082, 1087, 1089, 1090, 1079, 1082, 1083, 1083, 1083, - 1086, 1084, 1092, 1085, 1083, 1086, 1094, 1089, 1091, 1091, - 1093, 1093, 1087, 1095, 1098, 1090, 1096, 1096, 1099, 1099, - 1101, 1100, 1102, 1098, 1103, 1105, 1094, 1101, 1092, 1104, - 1104, 1102, 1106, 1108, 1109, 1095, 1100, 1110, 1108, 1109, + 1049, 1052, 1062, 1057, 1058, 1058, 1053, 1062, 1055, 1060, + 1060, 1063, 1056, 1064, 1064, 1065, 1066, 1067, 1068, 1069, + 1063, 1066, 1071, 1070, 1073, 1072, 1067, 1065, 1070, 1076, + 1068, 1071, 1074, 1074, 1069, 1075, 1077, 1078, 1080, 1073, + 1075, 1079, 1079, 1090, 1071, 1072, 1081, 1081, 1082, 1082, + 1076, 1088, 1083, 14, 1084, 1077, 1083, 1078, 1080, 1084, + 1085, 1087, 1089, 1085, 1091, 1091, 1087, 1089, 1090, 1088, + 1092, 1092, 1093, 1094, 1095, 1096, 1097, 1093, 1098, 1100, + 1101, 1097, 1102, 1102, 1103, 1094, 1094, 1094, 1104, 1104, + 1106, 1105, 1094, 1100, 1095, 1096, 1107, 1107, 1098, 1109, - 1111, 1112, 1114, 1114, 1113, 1116, 1112, 1111, 1106, 1113, - 1103, 1105, 1117, 1115, 1116, 1118, 1119, 1110, 1115, 1120, - 1121, 1122, 1120, 1123, 1123, 1124, 1125, 1126, 1119, 1127, - 1128, 1132, 1117, 1130, 1118, 1127, 1129, 1129, 1121, 1128, - 1124, 1133, 1126, 1134, 1130, 1125, 1138, 1122, 1134, 1130, - 1131, 1131, 1132, 1135, 1135, 1133, 1136, 1137, 1139, 1140, - 1136, 1136, 1137, 1141, 1140, 1142, 1143, 1144, 1145, 1142, - 1139, 1146, 1138, 1145, 1147, 1141, 1148, 1150, 1143, 1147, - 1150, 1151, 1151, 1152, 1152, 1153, 1153, 1154, 1148, 1155, - 1158, 1156, 1144, 1146, 1157, 1155, 1156, 1160, 1162, 1158, + 1111, 1101, 1110, 1110, 1114, 1113, 1112, 1116, 1109, 1117, + 1103, 1105, 1106, 1112, 1113, 1111, 1115, 1115, 1119, 1120, + 1121, 1122, 1123, 1119, 1120, 1117, 1124, 1123, 1122, 1127, + 1114, 1124, 1126, 1116, 1125, 1125, 1128, 1126, 1127, 1129, + 1121, 1130, 1131, 1132, 1133, 1131, 1134, 1134, 1135, 1136, + 1137, 1138, 13, 1130, 1143, 1139, 1128, 1138, 1129, 1140, + 1140, 1132, 1141, 1135, 1139, 1137, 1142, 1142, 1136, 1144, + 1133, 1145, 1149, 1141, 1150, 1143, 1145, 1147, 1141, 1146, + 1146, 1147, 1147, 1144, 1148, 1151, 1150, 1152, 1153, 1148, + 1151, 1154, 1153, 1155, 1157, 1156, 1158, 1159, 1149, 1152, - 1157, 1162, 1160, 1163, 1165, 1166, 1166, 1154, 1167, 1168, - 1171, 1169, 1170, 1174, 1171, 1163, 1165, 1172, 1168, 1173, - 1176, 1176, 1172, 1177, 1173, 1178, 1179, 1174, 1167, 1169, - 1184, 1170, 1176, 1185, 1178, 1179, 1181, 1181, 1186, 1187, - 1189, 1177, 1189, 1186, 1193, 1184, 1192, 1185, 1188, 1188, - 1190, 1190, 1195, 1192, 1194, 1194, 1187, 1196, 1197, 1198, - 1199, 1195, 1200, 1202, 1193, 1201, 1203, 1206, 1205, 1206, - 1197, 1198, 1199, 1205, 1207, 1209, 1208, 1212, 1196, 1214, - 1201, 1208, 1209, 1202, 1210, 1216, 1203, 1216, 1200, 1213, - 1213, 1212, 1207, 1210, 1215, 1217, 1218, 1219, 1220, 1215, + 1156, 1158, 1161, 1154, 1165, 1161, 1162, 1162, 1166, 1159, + 1163, 1163, 1164, 1164, 1166, 1167, 1157, 1168, 1155, 1169, + 1167, 1171, 1173, 1168, 1165, 1173, 1171, 1174, 1169, 1176, + 1177, 1177, 1178, 1179, 1182, 1180, 1181, 1185, 1182, 1174, + 1183, 1176, 1179, 1184, 1188, 1183, 1187, 1187, 1184, 1195, + 1189, 1185, 1178, 1180, 1190, 1181, 1192, 1192, 1187, 1189, + 1196, 1197, 1188, 1190, 1195, 1204, 1197, 1199, 1199, 1200, + 1203, 1200, 1201, 1201, 1196, 1205, 1205, 1203, 1206, 1207, + 1208, 1209, 1210, 1211, 1212, 1204, 1213, 1206, 1214, 1217, + 1216, 1217, 1208, 1209, 1210, 1216, 1218, 1219, 1220, 1212, - 1217, 1218, 1221, 1222, 1223, 1214, 1224, 1221, 1222, 1226, - 1227, 1228, 1228, 1231, 1224, 1219, 1230, 1223, 1220, 1229, - 1229, 1232, 1233, 1234, 1227, 1234, 1232, 1233, 1226, 1235, - 1236, 1230, 1237, 1231, 1237, 1238, 1239, 1244, 1241, 1236, - 1242, 1235, 1236, 1241, 1238, 1242, 1245, 1246, 1239, 1248, - 1244, 1250, 1251, 1252, 1257, 1248, 1253, 1250, 1254, 1254, - 1255, 1256, 1256, 1246, 1258, 1253, 1245, 1251, 1258, 1255, - 1259, 1260, 1261, 1257, 1262, 1259, 1261, 1261, 1252, 1263, - 1266, 1266, 1262, 1267, 1260, 1268, 1268, 1269, 1269, 1270, - 1271, 1272, 1267, 1273, 1274, 1274, 1272, 1276, 1273, 1263, + 1207, 1221, 1219, 1223, 1225, 1220, 1213, 1230, 1214, 1211, + 1221, 1224, 1224, 1226, 1218, 1228, 1231, 1223, 1226, 1227, + 1228, 1227, 1229, 1232, 1233, 1230, 1234, 1229, 1232, 1233, + 1225, 1237, 1235, 1238, 1239, 1239, 1231, 1240, 1240, 1234, + 1235, 1241, 1242, 1243, 1244, 1246, 1247, 1238, 1243, 1244, + 1237, 1245, 1248, 1245, 1248, 1247, 1241, 1246, 1247, 1249, + 1250, 1252, 1242, 1255, 1253, 1256, 1252, 1257, 1249, 1253, + 1263, 1259, 1250, 1261, 1262, 1264, 1255, 1259, 1266, 1261, + 1265, 1265, 1268, 1257, 1264, 1256, 1271, 1266, 1269, 1262, + 1267, 1267, 1269, 1270, 1273, 1263, 1274, 1282, 1270, 1271, - 1277, 1270, 1278, 1279, 1280, 1277, 1281, 1282, 1271, 1280, - 1283, 1283, 1284, 1285, 1286, 1287, 1284, 1288, 1279, 1286, - 1290, 1291, 1276, 1282, 1281, 1278, 1293, 1292, 1285, 1295, - 1294, 1297, 1297, 1312, 1298, 1299, 1288, 1298, 1300, 14, - 1301, 1287, 1294, 1290, 1310, 1291, 1292, 1293, 1299, 1305, - 1295, 1312, 1300, 1301, 1302, 1302, 1303, 1303, 1304, 1304, - 1306, 1307, 1307, 1310, 1305, 1308, 1308, 1309, 1309, 1311, - 1311, 1313, 1313, 1306, 1314, 1314, 1315, 1317, 1318, 1318, - 1319, 1322, 1317, 1320, 1320, 1321, 1323, 1322, 1326, 1323, - 1324, 1324, 1325, 1325, 1327, 1315, 1328, 1329, 1329, 1319, + 1272, 1268, 1273, 1278, 1272, 1272, 1277, 1277, 1279, 1279, + 1280, 1280, 1278, 1281, 1283, 1282, 1274, 1284, 1287, 1283, + 1285, 1285, 1284, 1288, 1289, 1281, 1290, 1291, 1288, 1293, + 1292, 1295, 1291, 1294, 1294, 1295, 1296, 1297, 1298, 1299, + 1301, 1290, 1297, 1287, 1302, 1293, 1303, 1289, 1292, 1304, + 1305, 1296, 1306, 1308, 1308, 1311, 1309, 1334, 1299, 1309, + 1334, 1310, 1305, 1301, 1298, 1303, 1312, 1316, 1302, 1311, + 1304, 1313, 1313, 1306, 1310, 1314, 1314, 1315, 1315, 1312, + 1317, 1321, 1316, 1318, 1318, 1319, 1319, 1320, 1320, 1322, + 1322, 1323, 1326, 1317, 1324, 1324, 1325, 1325, 1328, 1330, - 1331, 1332, 1333, 1321, 1334, 13, 1324, 1326, 1334, 1327, - 1335, 1335, 1336, 1337, 1337, 1328, 1338, 1333, 1339, 1339, - 1331, 1340, 1341, 1342, 1332, 1343, 1344, 1345, 1342, 1347, - 1340, 1336, 1346, 1354, 1341, 1350, 1348, 1346, 1349, 1344, - 0, 1351, 1338, 1356, 1347, 1348, 1351, 1349, 1345, 1350, - 1343, 1352, 1356, 1354, 1358, 1352, 1357, 1357, 1360, 1358, - 1359, 1359, 1362, 1363, 1365, 1367, 1368, 1369, 1367, 1359, - 1370, 1368, 1363, 1371, 1371, 1374, 1365, 1362, 1360, 1373, - 1373, 1376, 1370, 1375, 1375, 1377, 1378, 1369, 1381, 1374, - 1379, 1379, 1381, 1376, 1382, 1383, 1383, 1382, 1384, 1377, + 1321, 1329, 1329, 1328, 1331, 1331, 1332, 1333, 1337, 1323, + 1338, 1326, 1339, 1333, 1335, 1335, 1336, 1336, 1330, 1340, + 1340, 1342, 1343, 1344, 1332, 1338, 1349, 1337, 1345, 1347, + 1335, 1339, 1345, 1346, 1346, 1348, 1348, 1351, 1344, 1350, + 1350, 1342, 1352, 1354, 1353, 1343, 1351, 1355, 1347, 1353, + 1356, 1357, 1349, 1359, 1352, 1358, 1357, 1360, 1361, 1362, + 1355, 1363, 1359, 1365, 1362, 1363, 1360, 1367, 1354, 1371, + 1358, 1356, 1361, 1368, 1368, 1369, 1367, 1370, 1370, 1373, + 1369, 1374, 1378, 1365, 1376, 1378, 1370, 1379, 1380, 1371, + 1374, 1371, 1379, 1381, 1373, 1385, 1376, 1382, 1382, 1384, - 1385, 1386, 1387, 1384, 1388, 1378, 1387, 1389, 1390, 1393, - 1391, 0, 1389, 1390, 1394, 1386, 1391, 1395, 1396, 1394, - 1385, 1397, 1395, 1397, 1388, 1393, 1396, 1400, 1401, 1401, - 1405, 1405, 1407, 1410, 1411, 1411, 1413, 1413, 1410, 1415, - 1417, 1400, 1416, 1416, 1415, 1418, 1419, 1421, 1422, 1425, - 1407, 1419, 1423, 1423, 1426, 1427, 1417, 1428, 1425, 1426, - 1422, 1430, 1430, 1432, 1434, 1435, 1421, 1418, 1432, 1433, - 1435, 1433, 1428, 1427, 1436, 1436, 1437, 1437, 1434, 1438, - 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1446, - 1447, 1444, 1448, 1439, 1449, 1441, 1442, 1443, 1450, 1447, + 1384, 1386, 1386, 1387, 1388, 1381, 1389, 1396, 1380, 1385, + 1390, 1390, 1392, 1399, 1393, 1387, 1392, 1393, 1388, 1394, + 1394, 1395, 1397, 1404, 1398, 1389, 1395, 1396, 1398, 1400, + 1401, 1402, 1411, 1399, 1400, 1401, 1397, 1402, 1405, 1404, + 1406, 1407, 1408, 1405, 1408, 1406, 1411, 1412, 1412, 1407, + 1416, 1416, 1418, 1421, 1422, 1422, 1424, 1424, 1421, 1426, + 1427, 1427, 1428, 1429, 1426, 1432, 1430, 1433, 1434, 1434, + 1418, 1430, 1436, 1438, 1439, 1437, 1441, 1441, 1428, 1433, + 1437, 1436, 1443, 1445, 1432, 1429, 1444, 1443, 1444, 1439, + 1446, 1438, 1447, 1447, 1450, 1446, 1451, 1445, 1448, 1448, - 1440, 1451, 1452, 1453, 1453, 1454, 1455, 1445, 1456, 1463, - 1457, 1450, 1464, 1456, 1449, 1457, 1452, 1465, 1448, 1458, - 1458, 1459, 1459, 1454, 1466, 1451, 1460, 1460, 1455, 1463, - 1464, 1467, 1468, 1469, 1470, 1470, 1472, 1472, 1473, 1465, - 1467, 1474, 1475, 1476, 1466, 1477, 1478, 1473, 1474, 1479, - 1481, 1469, 1468, 1480, 1480, 1481, 1482, 1475, 1483, 1484, - 1485, 1476, 1478, 1477, 1486, 1485, 1488, 1489, 1479, 1492, - 1494, 1494, 1495, 1483, 1482, 1488, 1493, 1496, 1484, 1493, - 1497, 1497, 1500, 1503, 1486, 1506, 1489, 1495, 1498, 1492, - 1501, 1513, 1498, 1517, 1501, 1496, 1503, 1500, 1502, 1502, + 1449, 1449, 1455, 1452, 1453, 1454, 1450, 1455, 1456, 1457, + 1457, 1458, 1459, 1460, 1451, 1452, 1453, 1454, 1461, 1462, + 1458, 1463, 1464, 1464, 1466, 1465, 1467, 1468, 1456, 1470, + 1470, 1461, 1468, 1460, 1465, 1463, 1469, 1475, 1459, 1471, + 1471, 1469, 1466, 1462, 1472, 1472, 1476, 1477, 1467, 1479, + 1478, 1480, 1482, 1482, 1481, 1484, 1484, 1475, 1479, 1485, + 1486, 1487, 1488, 1489, 1476, 1491, 1490, 1486, 1485, 1477, + 1478, 1480, 1481, 1492, 1492, 1494, 1487, 1495, 1493, 1496, + 1488, 1489, 1490, 1493, 1491, 1497, 1498, 1500, 1501, 1504, + 1497, 1505, 1495, 1494, 1505, 1507, 1500, 1508, 1496, 1506, - 1505, 1505, 1507, 1507, 1506, 1508, 1508, 1512, 1512, 1514, - 1515, 1516, 1517, 1513, 1518, 1515, 1516, 1520, 1514, 1521, - 1522, 1523, 1518, 1526, 1521, 1522, 1524, 1524, 1525, 1525, - 1526, 1533, 1520, 1527, 1528, 0, 1523, 1537, 1527, 1528, - 1529, 1529, 1530, 1530, 1533, 1534, 1537, 1535, 1536, 1538, - 1534, 1535, 1539, 1536, 1540, 1541, 1544, 1545, 1543, 1540, - 1539, 1543, 1546, 1547, 1538, 1548, 1548, 1541, 1549, 1551, - 1545, 1546, 1547, 1552, 1544, 1553, 1555, 1549, 1554, 1554, - 1556, 1557, 1558, 1558, 1559, 1557, 1560, 1562, 1551, 1556, - 1563, 1560, 1559, 1552, 1553, 1555, 1562, 1565, 1566, 1567, + 1506, 1509, 1509, 1512, 1510, 0, 1498, 1501, 1510, 1504, + 1507, 1515, 1513, 1514, 1514, 1508, 1513, 1518, 1512, 1517, + 1517, 1519, 1519, 1525, 1515, 1520, 1520, 1524, 1524, 1526, + 1527, 1529, 1528, 1530, 1532, 1527, 1518, 1528, 1526, 1533, + 1535, 1530, 1534, 1539, 1533, 1525, 0, 1534, 1539, 1532, + 1529, 1536, 1536, 1537, 1537, 1535, 1538, 1540, 1546, 1541, + 1542, 1542, 1540, 1538, 1541, 1543, 1543, 1547, 1550, 1548, + 1549, 1546, 1547, 1548, 1551, 1549, 1552, 1550, 1553, 1554, + 1557, 1558, 1556, 1553, 1552, 1556, 1559, 1560, 1562, 1551, + 1564, 1554, 1561, 1561, 1558, 1559, 1560, 1562, 1557, 1565, - 1574, 1565, 0, 1563, 1569, 1569, 1571, 1571, 1575, 1575, - 1576, 1580, 1566, 1576, 1567, 1577, 1577, 1578, 1578, 1581, - 1574, 1579, 1579, 1582, 1583, 1583, 1584, 1587, 1582, 1580, - 1584, 1587, 1587, 1581, 1588, 1593, 1589, 1592, 1594, 1595, - 1588, 1589, 1592, 1594, 1596, 1597, 1598, 1598, 1599, 1601, - 1600, 1606, 1593, 1593, 1602, 1602, 1604, 1595, 1600, 1597, - 1603, 1603, 1607, 1609, 1596, 1605, 1608, 1599, 1601, 1610, - 1605, 1606, 1604, 1612, 1612, 1608, 1613, 1614, 1616, 1613, - 1617, 1617, 1614, 1609, 1619, 1620, 1618, 1626, 1607, 1610, - 1618, 1621, 1621, 1619, 1622, 1623, 1616, 1625, 1627, 1626, + 0, 1566, 1567, 1567, 1568, 1569, 1570, 1571, 1571, 1564, + 1570, 1573, 1576, 1572, 1569, 1575, 1573, 1579, 1578, 1565, + 1566, 1572, 1578, 1568, 1575, 1576, 1580, 1582, 1582, 1584, + 1584, 1579, 1587, 1588, 1588, 1589, 1590, 1590, 1589, 1591, + 1591, 1580, 1592, 1592, 1593, 1594, 1595, 1596, 1596, 1597, + 1600, 1595, 1587, 1597, 1600, 1600, 1601, 1602, 1607, 1594, + 1603, 1606, 1593, 1602, 1608, 1603, 1606, 1609, 1610, 1608, + 1611, 1612, 1612, 1613, 1614, 1607, 1607, 1615, 1618, 1601, + 1616, 1616, 1614, 1620, 1611, 1609, 1617, 1617, 1610, 1621, + 1619, 1622, 1613, 1623, 1618, 1619, 1615, 1624, 1626, 1626, - 1620, 1632, 1632, 1631, 1623, 1633, 1625, 1622, 1631, 1638, - 1635, 1639, 1636, 1636, 1633, 1635, 1636, 1640, 1638, 1641, - 1642, 1643, 1640, 1627, 1644, 1642, 1645, 1646, 1646, 1644, - 1648, 1639, 1649, 1650, 1650, 1652, 1653, 1651, 1654, 1643, - 1641, 1651, 1655, 1656, 1652, 1657, 1659, 1649, 1656, 1648, - 1655, 1645, 1653, 1658, 1658, 1661, 1661, 1654, 1662, 1662, - 1666, 1663, 1665, 1665, 1667, 1659, 1663, 1669, 1669, 1670, - 1671, 1657, 1672, 1672, 1673, 1673, 1674, 1675, 1676, 1681, - 1666, 1677, 1677, 1670, 1680, 1678, 1686, 1667, 1678, 1675, - 1679, 1679, 1671, 1684, 1682, 1674, 1680, 1682, 1676, 1681, + 1622, 1627, 1628, 1620, 1627, 1630, 1632, 1628, 1631, 1631, + 1632, 1633, 1634, 1623, 1640, 1621, 1636, 1624, 1635, 1635, + 1633, 1637, 1639, 1630, 1641, 0, 1640, 1634, 1645, 1636, + 1637, 1639, 1647, 1645, 1646, 1646, 1654, 1649, 1653, 1650, + 1650, 1647, 1649, 1650, 1652, 1652, 1655, 1653, 1656, 1641, + 1657, 1655, 1658, 1659, 1660, 1657, 1654, 1663, 1659, 1661, + 1661, 1666, 1664, 1665, 1665, 1666, 1667, 1668, 1669, 1656, + 1658, 1672, 1670, 1671, 1674, 1667, 1663, 1664, 1671, 1660, + 1670, 1673, 1673, 1668, 1676, 1676, 1678, 1669, 1677, 1677, + 1681, 1678, 1682, 1674, 1680, 1680, 1686, 1672, 1684, 1684, - 1683, 1685, 1690, 1686, 1686, 1683, 1685, 1687, 1687, 1689, - 1689, 1692, 1684, 1693, 1694, 1698, 1692, 1695, 1695, 1694, - 1698, 1690, 1696, 1696, 1697, 1697, 1706, 1693, 1700, 1700, - 1703, 1703, 1705, 1705, 1707, 1708, 1708, 1709, 1712, 1716, - 1706, 1717, 1709, 1707, 1713, 1713, 1712, 1714, 1718, 1720, - 1719, 1721, 1714, 1718, 1722, 1723, 1724, 1720, 1725, 1716, - 1728, 1717, 1719, 1725, 1729, 1729, 1730, 1730, 0, 1721, - 1722, 1731, 1723, 1723, 1740, 1731, 1743, 1724, 1735, 1735, - 1728, 1737, 1739, 1739, 1745, 1737, 1742, 1742, 1740, 1746, - 1751, 1743, 1747, 1747, 1748, 1748, 1749, 1749, 1746, 1750, + 1685, 1687, 1687, 1688, 1688, 1689, 1691, 1690, 1692, 1692, + 1681, 1694, 1694, 1693, 1685, 1682, 1693, 1696, 1686, 1690, + 1697, 1702, 1698, 1699, 1689, 1698, 1691, 1700, 1699, 1696, + 1701, 1703, 1703, 1705, 1705, 1701, 1706, 1708, 1702, 1702, + 1697, 1747, 1708, 1709, 1710, 1747, 1700, 1711, 1711, 1710, + 1712, 1712, 1713, 1713, 1714, 1706, 1722, 1709, 1723, 1714, + 1716, 1716, 1719, 1719, 1721, 1721, 1725, 1723, 1724, 1724, + 1722, 1725, 1728, 1729, 1729, 1732, 1730, 1733, 1734, 1735, + 1728, 1730, 1736, 1734, 1737, 1738, 1739, 1740, 1741, 1744, + 1736, 1735, 1753, 1741, 0, 1732, 1753, 1733, 1745, 1745, - 1753, 1752, 1745, 1754, 1750, 1755, 1756, 0, 1754, 0, - 1755, 1757, 1757, 1760, 1760, 1751, 1752, 1762, 1762, 1764, - 1764, 1753, 1766, 1767, 1767, 1756, 1768, 1769, 1769, 1772, - 1773, 1774, 1772, 1775, 1766, 1773, 1776, 1778, 1775, 1777, - 1783, 1768, 1784, 1787, 1783, 1774, 1785, 1789, 1788, 1790, - 1792, 1800, 1791, 1778, 1787, 1776, 1793, 1777, 1794, 1794, - 1785, 1788, 1784, 1795, 1796, 1796, 1789, 1790, 1791, 1797, - 1797, 1793, 1795, 1798, 1799, 1792, 1800, 1801, 1798, 1799, - 1802, 1803, 1805, 1808, 1809, 1802, 1810, 1811, 1813, 1809, - 1812, 1810, 1801, 1815, 1814, 1803, 1816, 1805, 1817, 1818, + 1756, 1738, 1737, 1739, 1739, 1746, 1746, 1759, 1740, 1744, + 1751, 1751, 1755, 1755, 1756, 1758, 1758, 1761, 1762, 1763, + 1763, 1767, 1759, 1764, 1764, 1765, 1765, 1762, 1766, 1768, + 1769, 1770, 1771, 1766, 1772, 1761, 1770, 1771, 1773, 1773, + 1776, 1776, 1778, 1778, 1768, 1782, 1767, 1780, 1780, 1783, + 1783, 1769, 1784, 1772, 1785, 1785, 1788, 1782, 1789, 1788, + 1790, 1791, 1792, 1789, 1793, 1799, 1791, 1784, 1794, 1799, + 1800, 1801, 1803, 1804, 1790, 1805, 1807, 1806, 1808, 1810, + 1810, 1792, 1793, 1803, 1794, 1801, 1804, 1809, 1811, 1816, + 1800, 1814, 1807, 1817, 1805, 1806, 1814, 1811, 1812, 1812, - 1819, 1811, 1808, 1812, 1821, 1819, 1826, 1813, 1814, 1816, - 1820, 1817, 1815, 1822, 1822, 1820, 1823, 1824, 1818, 1825, - 1830, 1823, 1824, 1821, 1825, 1826, 1827, 1828, 1828, 1829, - 1831, 1827, 1832, 1833, 1834, 1836, 1829, 1832, 1837, 1830, - 1836, 1838, 1839, 1840, 1840, 1841, 1842, 1834, 1847, 1831, - 1841, 1845, 1833, 1843, 1843, 1839, 1845, 1837, 1844, 1844, - 1838, 1846, 1848, 1848, 1849, 1842, 1850, 1847, 1846, 1851, - 1852, 1849, 1853, 1850, 1855, 1852, 1856, 1857, 1858, 1855, - 1860, 1856, 1859, 1859, 1861, 1862, 1862, 1864, 1851, 1863, - 1863, 1853, 1865, 1865, 1864, 1867, 1857, 1858, 1873, 1860, + 1813, 1813, 1809, 1808, 1815, 1818, 1819, 1821, 1817, 1815, + 1818, 1824, 1825, 1826, 1816, 1827, 1829, 1825, 1826, 1828, + 1819, 1831, 1821, 1830, 1834, 1832, 1833, 1837, 1835, 1827, + 1824, 1836, 1828, 1835, 1842, 1829, 1836, 1830, 1832, 1833, + 1831, 1838, 1838, 1834, 1839, 1840, 1837, 1841, 1846, 1839, + 1840, 1843, 1841, 1842, 1844, 1844, 1843, 1845, 1847, 1849, + 1848, 1850, 1853, 1852, 1845, 1848, 1854, 1846, 1852, 1855, + 1856, 1856, 1858, 1863, 1850, 1857, 0, 1847, 1849, 0, + 1857, 1853, 1855, 1859, 1859, 1854, 1860, 1860, 1861, 1862, + 1865, 1858, 1863, 1861, 1864, 1864, 1862, 1865, 1866, 1867, - 1866, 1866, 1867, 1861, 1869, 1872, 1874, 1875, 1875, 1869, - 1872, 1876, 1876, 0, 0, 0, 0, 1873, 0, 0, - 0, 0, 0, 0, 0, 1874, 1880, 1880, 1880, 1880, - 1880, 1880, 1880, 1881, 1881, 1881, 1881, 1881, 1881, 1881, - 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1883, 1883, 1883, - 1883, 1883, 1883, 1883, 1884, 1884, 1884, 1884, 1884, 1884, - 1884, 1886, 1886, 0, 1886, 1886, 1886, 1886, 1887, 1887, - 0, 0, 0, 1887, 1887, 1888, 1888, 0, 0, 1888, - 0, 1888, 1889, 0, 0, 0, 0, 0, 1889, 1890, - 1890, 0, 0, 0, 1890, 1890, 1891, 0, 0, 0, + 1869, 1868, 1871, 1872, 1873, 1866, 1868, 1871, 1872, 1874, + 1875, 1875, 1876, 1877, 1878, 1878, 1879, 1879, 1867, 1869, + 1880, 1881, 1881, 1873, 1882, 1882, 1883, 1880, 1874, 1885, + 1888, 1876, 1877, 1883, 1885, 1888, 1889, 1890, 1891, 1891, + 1892, 1892, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1889, 1890, 1896, 1896, 1896, + 1896, 1896, 1896, 1896, 1897, 1897, 1897, 1897, 1897, 1897, + 1897, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1899, 1899, + 1899, 1899, 1899, 1899, 1899, 1900, 1900, 1900, 1900, 1900, + 1900, 1900, 1902, 1902, 0, 1902, 1902, 1902, 1902, 1903, - 0, 0, 1891, 1892, 1892, 0, 1892, 1892, 1892, 1892, - 1893, 1893, 0, 1893, 1893, 1893, 1893, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879 + 1903, 0, 0, 0, 1903, 1903, 1904, 1904, 0, 0, + 1904, 0, 1904, 1905, 0, 0, 0, 0, 0, 1905, + 1906, 1906, 0, 0, 0, 1906, 1906, 1907, 0, 0, + 0, 0, 0, 1907, 1908, 1908, 0, 1908, 1908, 1908, + 1908, 1909, 1909, 0, 1909, 1909, 1909, 1909, 1895, 1895, + 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, + 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, + 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, + 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895 } ; static yy_state_type yy_last_accepting_state; @@ -2103,7 +2107,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 2105 "" +#line 2109 "" #define INITIAL 0 #define quotedstring 1 @@ -2141,19 +2145,19 @@ void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); -void yyset_in (FILE * _in_str ); +void yyset_in (FILE * in_str ); FILE *yyget_out (void ); -void yyset_out (FILE * _out_str ); +void yyset_out (FILE * out_str ); -yy_size_t yyget_leng (void ); +int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); -void yyset_lineno (int _line_number ); +void yyset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -2167,10 +2171,6 @@ extern int yywrap (void ); #endif #endif -#ifndef YY_NO_UNPUT - -#endif - #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif @@ -2283,7 +2283,7 @@ extern int yylex (void); /* Code executed at the end of each rule. */ #ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; +#define YY_BREAK break; #endif #define YY_RULE_SETUP \ @@ -2293,10 +2293,14 @@ extern int yylex (void); */ YY_DECL { - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; +#line 205 "./util/configlexer.lex" + +#line 2301 "" + if ( !(yy_init) ) { (yy_init) = 1; @@ -2323,12 +2327,7 @@ YY_DECL yy_load_buffer_state( ); } - { -#line 205 "./util/configlexer.lex" - -#line 2328 "" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + while ( 1 ) /* loops until end-of-file is reached */ { (yy_more_len) = 0; if ( (yy_more_flag) ) @@ -2350,7 +2349,7 @@ YY_DECL yy_match: do { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -2359,13 +2358,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 >= 1880 ) + if ( yy_current_state >= 1896 ) 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] != 3718 ); + while ( yy_base[yy_current_state] != 3749 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2810,465 +2809,480 @@ YY_RULE_SETUP case 84: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 85: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 86: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 87: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 88: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 89: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 90: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 91: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 92: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 93: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 94: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 95: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 96: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 97: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 98: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 99: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 100: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 101: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 102: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 103: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 104: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 105: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 106: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 107: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 108: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 109: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 110: YY_RULE_SETUP -#line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 318 "./util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 111: YY_RULE_SETUP -#line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +#line 319 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 112: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 113: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 114: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 115: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 116: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 117: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 118: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 119: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 120: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 121: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 122: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 123: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 124: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 125: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 126: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 127: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 128: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 129: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 130: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 131: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 132: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 133: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 134: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 135: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 136: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 137: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 138: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 139: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 140: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 141: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 142: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 143: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 144: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 145: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 146: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 147: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 148: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 149: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 150: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 151: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 152: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 153: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 154: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 155: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 156: YY_RULE_SETUP -#line 366 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 365 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 157: YY_RULE_SETUP -#line 368 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } +#line 366 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 158: YY_RULE_SETUP -#line 370 "./util/configlexer.lex" +#line 367 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 159: YY_RULE_SETUP -#line 372 "./util/configlexer.lex" +#line 369 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 160: YY_RULE_SETUP -#line 374 "./util/configlexer.lex" +#line 371 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 161: YY_RULE_SETUP -#line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 373 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 162: YY_RULE_SETUP -#line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +#line 375 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 163: YY_RULE_SETUP -#line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +#line 377 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 164: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 165: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 166: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 167: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 168: -/* rule 168 can match eol */ YY_RULE_SETUP #line 383 "./util/configlexer.lex" +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } + YY_BREAK +case 169: +YY_RULE_SETUP +#line 384 "./util/configlexer.lex" +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } + YY_BREAK +case 170: +YY_RULE_SETUP +#line 385 "./util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } + YY_BREAK +case 171: +/* rule 171 can match eol */ +YY_RULE_SETUP +#line 386 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 169: +case 172: YY_RULE_SETUP -#line 386 "./util/configlexer.lex" +#line 389 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 387 "./util/configlexer.lex" +#line 390 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 170: +case 173: YY_RULE_SETUP -#line 392 "./util/configlexer.lex" +#line 395 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 171: -/* rule 171 can match eol */ +case 174: +/* rule 174 can match eol */ YY_RULE_SETUP -#line 393 "./util/configlexer.lex" +#line 396 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 172: +case 175: YY_RULE_SETUP -#line 395 "./util/configlexer.lex" +#line 398 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3281,34 +3295,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 173: +case 176: YY_RULE_SETUP -#line 407 "./util/configlexer.lex" +#line 410 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 408 "./util/configlexer.lex" +#line 411 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 174: +case 177: YY_RULE_SETUP -#line 413 "./util/configlexer.lex" +#line 416 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 175: -/* rule 175 can match eol */ +case 178: +/* rule 178 can match eol */ YY_RULE_SETUP -#line 414 "./util/configlexer.lex" +#line 417 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 176: +case 179: YY_RULE_SETUP -#line 416 "./util/configlexer.lex" +#line 419 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -3321,38 +3335,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 177: +case 180: YY_RULE_SETUP -#line 428 "./util/configlexer.lex" +#line 431 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 430 "./util/configlexer.lex" +#line 433 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 178: -YY_RULE_SETUP -#line 434 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 179: -/* rule 179 can match eol */ -YY_RULE_SETUP -#line 435 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK -case 180: -YY_RULE_SETUP -#line 436 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } - YY_BREAK case 181: YY_RULE_SETUP #line 437 "./util/configlexer.lex" +{ LEXOUT(("ISP ")); /* ignore */ } + YY_BREAK +case 182: +/* rule 182 can match eol */ +YY_RULE_SETUP +#line 438 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 183: +YY_RULE_SETUP +#line 439 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 184: +YY_RULE_SETUP +#line 440 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -3360,27 +3374,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 442 "./util/configlexer.lex" +#line 445 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 182: +case 185: YY_RULE_SETUP -#line 446 "./util/configlexer.lex" +#line 449 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 183: -/* rule 183 can match eol */ +case 186: +/* rule 186 can match eol */ YY_RULE_SETUP -#line 447 "./util/configlexer.lex" +#line 450 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 184: +case 187: YY_RULE_SETUP -#line 449 "./util/configlexer.lex" +#line 452 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -3390,7 +3404,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 455 "./util/configlexer.lex" +#line 458 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -3402,33 +3416,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 185: +case 188: YY_RULE_SETUP -#line 466 "./util/configlexer.lex" +#line 469 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 186: +case 189: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" +#line 473 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 187: +case 190: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" +#line 477 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 188: +case 191: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" +#line 481 "./util/configlexer.lex" ECHO; YY_BREAK -#line 3430 "" +#line 3444 "" case YY_END_OF_BUFFER: { @@ -3557,7 +3571,6 @@ ECHO; "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -3569,9 +3582,9 @@ ECHO; */ static int yy_get_next_buffer (void) { - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - yy_size_t number_to_move, i; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -3600,7 +3613,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -3620,14 +3633,14 @@ static int yy_get_next_buffer (void) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -3658,7 +3671,7 @@ static int yy_get_next_buffer (void) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); + (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -3703,14 +3716,14 @@ static int yy_get_next_buffer (void) static yy_state_type yy_get_previous_state (void) { - yy_state_type yy_current_state; - char *yy_cp; + register yy_state_type yy_current_state; + register char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -3719,7 +3732,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 >= 1880 ) + if ( yy_current_state >= 1896 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3735,10 +3748,10 @@ static int yy_get_next_buffer (void) */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { - int yy_is_jam; - char *yy_cp = (yy_c_buf_p); + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); - YY_CHAR yy_c = 1; + register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -3747,19 +3760,15 @@ 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 >= 1880 ) + if ( yy_current_state >= 1896 ) 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 == 1879); + yy_is_jam = (yy_current_state == 1895); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } -#ifndef YY_NO_UNPUT - -#endif - #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) @@ -3784,7 +3793,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -3909,7 +3918,7 @@ static void yy_load_buffer_state (void) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - b->yy_buf_size = (yy_size_t)size; + b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. @@ -3944,6 +3953,10 @@ static void yy_load_buffer_state (void) yyfree((void *) b ); } +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. @@ -4056,7 +4069,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - yy_size_t num_to_alloc; + int num_to_alloc; if (!(yy_buffer_stack)) { @@ -4064,7 +4077,7 @@ static void yyensure_buffer_stack (void) * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ - num_to_alloc = 1; // After all that talk, this was set to 1 anyways... + num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); @@ -4081,7 +4094,7 @@ static void yyensure_buffer_stack (void) if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; + int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc @@ -4153,12 +4166,12 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - yy_size_t i; + int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -4189,7 +4202,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len static void yy_fatal_error (yyconst char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -4240,7 +4253,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -yy_size_t yyget_leng (void) +int yyget_leng (void) { return yyleng; } @@ -4255,29 +4268,29 @@ char *yyget_text (void) } /** Set the current line number. - * @param _line_number line number + * @param line_number * */ -void yyset_lineno (int _line_number ) +void yyset_lineno (int line_number ) { - yylineno = _line_number; + yylineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. - * @param _in_str A readable stream. + * @param in_str A readable stream. * * @see yy_switch_to_buffer */ -void yyset_in (FILE * _in_str ) +void yyset_in (FILE * in_str ) { - yyin = _in_str ; + yyin = in_str ; } -void yyset_out (FILE * _out_str ) +void yyset_out (FILE * out_str ) { - yyout = _out_str ; + yyout = out_str ; } int yyget_debug (void) @@ -4285,9 +4298,9 @@ int yyget_debug (void) return yy_flex_debug; } -void yyset_debug (int _bdebug ) +void yyset_debug (int bdebug ) { - yy_flex_debug = _bdebug ; + yy_flex_debug = bdebug ; } static int yy_init_globals (void) @@ -4347,8 +4360,7 @@ int yylex_destroy (void) #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { - - int i; + register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } @@ -4357,7 +4369,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { - int n; + register int n; for ( n = 0; s[n]; ++n ) ; @@ -4367,12 +4379,11 @@ static int yy_flex_strlen (yyconst char * s ) void *yyalloc (yy_size_t size ) { - return (void *) malloc( size ); + return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) { - /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter @@ -4385,12 +4396,12 @@ void *yyrealloc (void * ptr, yy_size_t size ) void yyfree (void * ptr ) { - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" -#line 478 "./util/configlexer.lex" +#line 481 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 369f9034a..5bae3d138 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -289,6 +289,8 @@ forward-zone{COLON} { YDVAR(0, VAR_FORWARD_ZONE) } forward-addr{COLON} { YDVAR(1, VAR_FORWARD_ADDR) } forward-host{COLON} { YDVAR(1, VAR_FORWARD_HOST) } forward-first{COLON} { YDVAR(1, VAR_FORWARD_FIRST) } +view{COLON} { YDVAR(0, VAR_VIEW) } +view-first{COLON} { YDVAR(1, VAR_VIEW_FIRST) } do-not-query-address{COLON} { YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } do-not-query-localhost{COLON} { YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } access-control{COLON} { YDVAR(2, VAR_ACCESS_CONTROL) } @@ -353,6 +355,7 @@ local-zone-tag{COLON} { YDVAR(2, VAR_LOCAL_ZONE_TAG) } access-control-tag{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_TAG) } access-control-tag-action{COLON} { YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } access-control-tag-data{COLON} { YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +access-control-view{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } local-zone-override{COLON} { YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } dnstap{COLON} { YDVAR(0, VAR_DNSTAP) } dnstap-enable{COLON} { YDVAR(1, VAR_DNSTAP_ENABLE) } diff --git a/util/configparser.c b/util/configparser.c index 25fabc6a4..1172c44ab 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "3.0.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -295,7 +295,10 @@ extern int yydebug; VAR_ACCESS_CONTROL_TAG = 426, VAR_LOCAL_ZONE_OVERRIDE = 427, VAR_ACCESS_CONTROL_TAG_ACTION = 428, - VAR_ACCESS_CONTROL_TAG_DATA = 429 + VAR_ACCESS_CONTROL_TAG_DATA = 429, + VAR_VIEW = 430, + VAR_ACCESS_CONTROL_VIEW = 431, + VAR_VIEW_FIRST = 432 }; #endif /* Tokens. */ @@ -471,20 +474,21 @@ extern int yydebug; #define VAR_LOCAL_ZONE_OVERRIDE 427 #define VAR_ACCESS_CONTROL_TAG_ACTION 428 #define VAR_ACCESS_CONTROL_TAG_DATA 429 +#define VAR_VIEW 430 +#define VAR_ACCESS_CONTROL_VIEW 431 +#define VAR_VIEW_FIRST 432 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - +typedef union YYSTYPE YYSTYPE; union YYSTYPE { #line 64 "./util/configparser.y" /* yacc.c:355 */ char* str; -#line 485 "util/configparser.c" /* yacc.c:355 */ +#line 491 "util/configparser.c" /* yacc.c:355 */ }; - -typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -498,7 +502,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 502 "util/configparser.c" /* yacc.c:358 */ +#line 506 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -740,21 +744,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 337 +#define YYLAST 350 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 175 +#define YYNTOKENS 178 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 180 +#define YYNNTS 188 /* YYNRULES -- Number of rules. */ -#define YYNRULES 345 +#define YYNRULES 359 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 517 +#define YYNSTATES 538 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 429 +#define YYMAXUTOK 432 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -805,48 +809,50 @@ 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, 166, 167, 168, 169, 170, 171, 172, 173, 174 + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 133, 133, 133, 134, 134, 135, 135, 136, 136, - 140, 145, 146, 147, 147, 147, 148, 148, 149, 149, - 150, 150, 151, 151, 152, 152, 152, 153, 153, 153, - 154, 154, 155, 155, 156, 156, 157, 157, 158, 158, - 159, 159, 160, 160, 161, 161, 162, 162, 162, 163, - 163, 163, 164, 164, 164, 165, 165, 166, 166, 167, - 167, 168, 168, 169, 169, 169, 170, 170, 171, 171, - 172, 172, 172, 173, 173, 174, 174, 175, 175, 176, - 176, 176, 177, 177, 178, 178, 179, 179, 180, 180, - 181, 181, 182, 182, 182, 183, 183, 184, 184, 184, - 185, 185, 185, 186, 186, 186, 187, 187, 187, 188, - 188, 188, 189, 189, 189, 190, 190, 191, 191, 192, - 192, 193, 193, 194, 194, 194, 195, 195, 196, 196, - 197, 197, 198, 198, 199, 199, 199, 200, 200, 201, - 201, 202, 204, 216, 217, 218, 218, 218, 218, 218, - 220, 232, 233, 234, 234, 234, 234, 236, 245, 254, - 265, 274, 283, 292, 305, 320, 329, 338, 347, 356, - 365, 374, 383, 392, 401, 410, 419, 428, 437, 446, - 455, 462, 469, 478, 487, 501, 510, 519, 526, 533, - 557, 565, 572, 579, 586, 593, 601, 609, 617, 624, - 631, 640, 649, 656, 663, 671, 679, 689, 699, 709, - 722, 733, 741, 754, 763, 772, 781, 791, 801, 809, - 822, 831, 839, 848, 856, 869, 878, 885, 895, 905, - 915, 925, 935, 945, 955, 965, 972, 979, 986, 995, - 1004, 1013, 1020, 1030, 1047, 1054, 1072, 1085, 1098, 1107, - 1116, 1125, 1134, 1144, 1154, 1163, 1172, 1179, 1188, 1197, - 1206, 1215, 1223, 1236, 1244, 1272, 1279, 1294, 1304, 1314, - 1321, 1328, 1337, 1351, 1370, 1389, 1401, 1413, 1425, 1434, - 1442, 1455, 1468, 1481, 1490, 1500, 1510, 1517, 1524, 1533, - 1543, 1553, 1560, 1567, 1576, 1581, 1582, 1583, 1583, 1583, - 1584, 1584, 1584, 1585, 1585, 1587, 1597, 1606, 1613, 1623, - 1630, 1637, 1644, 1651, 1656, 1657, 1658, 1658, 1659, 1659, - 1660, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1668, 1676, - 1683, 1691, 1699, 1706, 1713, 1722, 1731, 1740, 1749, 1758, - 1767, 1772, 1773, 1774, 1776, 1782 + 0, 134, 134, 134, 135, 135, 136, 136, 137, 137, + 137, 142, 147, 148, 149, 149, 149, 150, 150, 151, + 151, 152, 152, 153, 153, 154, 154, 154, 155, 155, + 155, 156, 156, 157, 157, 158, 158, 159, 159, 160, + 160, 161, 161, 162, 162, 163, 163, 164, 164, 164, + 165, 165, 165, 166, 166, 166, 167, 167, 168, 168, + 169, 169, 170, 170, 171, 171, 171, 172, 172, 173, + 173, 174, 174, 174, 175, 175, 176, 176, 177, 177, + 178, 178, 178, 179, 179, 180, 180, 181, 181, 182, + 182, 183, 183, 184, 184, 184, 185, 185, 186, 186, + 186, 187, 187, 187, 188, 188, 188, 189, 189, 189, + 190, 190, 190, 191, 191, 191, 192, 192, 193, 193, + 194, 194, 195, 195, 196, 196, 196, 197, 197, 198, + 198, 199, 199, 200, 200, 201, 201, 201, 202, 202, + 203, 203, 204, 204, 206, 218, 219, 220, 220, 220, + 220, 220, 222, 234, 235, 236, 236, 236, 236, 238, + 252, 253, 254, 254, 254, 254, 256, 265, 274, 285, + 294, 303, 312, 325, 340, 349, 358, 367, 376, 385, + 394, 403, 412, 421, 430, 439, 448, 457, 466, 475, + 482, 489, 498, 507, 521, 530, 539, 546, 553, 577, + 585, 592, 599, 606, 613, 621, 629, 637, 644, 651, + 660, 669, 676, 683, 691, 699, 709, 719, 729, 742, + 753, 761, 774, 783, 792, 801, 811, 821, 829, 842, + 851, 859, 868, 876, 889, 898, 905, 915, 925, 935, + 945, 955, 965, 975, 985, 992, 999, 1006, 1015, 1024, + 1033, 1040, 1050, 1067, 1074, 1092, 1105, 1118, 1127, 1136, + 1145, 1154, 1164, 1174, 1183, 1192, 1199, 1208, 1217, 1226, + 1235, 1243, 1256, 1264, 1292, 1299, 1314, 1324, 1334, 1341, + 1348, 1357, 1371, 1390, 1409, 1421, 1433, 1445, 1456, 1465, + 1473, 1486, 1499, 1512, 1521, 1531, 1541, 1548, 1555, 1564, + 1574, 1584, 1591, 1598, 1607, 1617, 1646, 1655, 1664, 1669, + 1670, 1671, 1671, 1671, 1672, 1672, 1672, 1673, 1673, 1675, + 1685, 1694, 1701, 1711, 1718, 1725, 1732, 1739, 1744, 1745, + 1746, 1746, 1747, 1747, 1748, 1748, 1749, 1750, 1751, 1752, + 1753, 1754, 1756, 1764, 1771, 1779, 1787, 1794, 1801, 1810, + 1819, 1828, 1837, 1846, 1855, 1860, 1861, 1862, 1864, 1870 }; #endif @@ -916,29 +922,30 @@ static const char *const yytname[] = "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG", "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION", - "VAR_ACCESS_CONTROL_TAG_DATA", "$accept", "toplevelvars", "toplevelvar", + "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", + "VAR_VIEW_FIRST", "$accept", "toplevelvars", "toplevelvar", "serverstart", "contents_server", "content_server", "stubstart", "contents_stub", "content_stub", "forwardstart", "contents_forward", - "content_forward", "server_num_threads", "server_verbosity", - "server_statistics_interval", "server_statistics_cumulative", - "server_extended_statistics", "server_port", "server_interface", - "server_outgoing_interface", "server_outgoing_range", - "server_outgoing_port_permit", "server_outgoing_port_avoid", - "server_outgoing_num_tcp", "server_incoming_num_tcp", - "server_interface_automatic", "server_do_ip4", "server_do_ip6", - "server_do_udp", "server_do_tcp", "server_prefer_ip6", "server_tcp_mss", - "server_outgoing_tcp_mss", "server_tcp_upstream", "server_ssl_upstream", - "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", - "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", - "server_log_queries", "server_chroot", "server_username", - "server_directory", "server_logfile", "server_pidfile", - "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", - "server_auto_trust_anchor_file", "server_trust_anchor_file", - "server_trusted_keys_file", "server_trust_anchor", - "server_domain_insecure", "server_hide_identity", "server_hide_version", - "server_identity", "server_version", "server_so_rcvbuf", - "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", - "server_ip_freebind", "server_edns_buffer_size", + "content_forward", "viewstart", "contents_view", "content_view", + "server_num_threads", "server_verbosity", "server_statistics_interval", + "server_statistics_cumulative", "server_extended_statistics", + "server_port", "server_interface", "server_outgoing_interface", + "server_outgoing_range", "server_outgoing_port_permit", + "server_outgoing_port_avoid", "server_outgoing_num_tcp", + "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4", + "server_do_ip6", "server_do_udp", "server_do_tcp", "server_prefer_ip6", + "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_upstream", + "server_ssl_upstream", "server_ssl_service_key", + "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize", + "server_use_syslog", "server_log_time_ascii", "server_log_queries", + "server_chroot", "server_username", "server_directory", "server_logfile", + "server_pidfile", "server_root_hints", "server_dlv_anchor_file", + "server_dlv_anchor", "server_auto_trust_anchor_file", + "server_trust_anchor_file", "server_trusted_keys_file", + "server_trust_anchor", "server_domain_insecure", "server_hide_identity", + "server_hide_version", "server_identity", "server_version", + "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", + "server_ip_transparent", "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", @@ -970,11 +977,13 @@ static const char *const yytname[] = "server_dns64_synthall", "server_define_tag", "server_local_zone_tag", "server_access_control_tag", "server_access_control_tag_action", "server_access_control_tag_data", "server_local_zone_override", - "server_ratelimit", "server_ratelimit_size", "server_ratelimit_slabs", + "server_access_control_view", "server_ratelimit", + "server_ratelimit_size", "server_ratelimit_slabs", "server_ratelimit_for_domain", "server_ratelimit_below_domain", "server_ratelimit_factor", "server_qname_minimisation", "stub_name", "stub_host", "stub_addr", "stub_first", "stub_prime", "forward_name", - "forward_host", "forward_addr", "forward_first", "rcstart", + "forward_host", "forward_addr", "forward_first", "view_name", + "view_local_zone", "view_local_data", "view_first", "rcstart", "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", @@ -1014,14 +1023,14 @@ static const yytype_uint16 yytoknum[] = 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429 + 425, 426, 427, 428, 429, 430, 431, 432 }; # endif -#define YYPACT_NINF -81 +#define YYPACT_NINF -128 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-81))) + (!!((Yystate) == (-128))) #define YYTABLE_NINF -1 @@ -1032,58 +1041,60 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -81, 130, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -12, 91, 47, -13, - 36, -80, 19, 20, 21, 25, 26, 27, 81, 109, - 110, 122, 125, 126, 127, 128, 129, 132, 153, 154, - 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, - 166, 181, 182, 183, 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, - 212, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 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, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, 286, 287, 288, 289, 290, -81, -81, -81, -81, - -81, -81, 291, 292, 293, 294, -81, -81, -81, -81, - -81, 295, 296, 297, 298, 299, 300, 301, 302, -81, - -81, -81, -81, -81, -81, -81, -81, -81, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, 315, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, 316, 317, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, 318, 319, -81, -81, -81, -81, -81, -81, -81, - 320, 321, 322, 323, 324, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, 325, 326, 327, -81, -81, -81 + -128, 0, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, 132, -38, + -34, -39, -64, -127, -105, -3, -2, -1, 2, 3, + 26, 29, 30, 32, 33, 34, 35, 36, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 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, + 82, 83, 85, 86, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 129, 130, 131, 133, 162, 163, 164, + 169, 170, 171, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 225, 229, 230, 253, 254, 264, 265, 266, + 267, 268, 269, 270, 271, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, 272, 273, 274, 275, + 276, -128, -128, -128, -128, -128, -128, 297, 299, 300, + 301, -128, -128, -128, -128, -128, 302, 303, 304, 305, + -128, -128, -128, -128, -128, 306, 307, 308, 309, 310, + 311, 312, 313, -128, -128, -128, -128, -128, -128, -128, + -128, -128, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, 326, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, 327, 328, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, 329, 330, -128, -128, -128, + -128, -128, -128, -128, 331, 332, 333, 334, 335, 336, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + 337, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + 338, 339, 340, -128, -128, -128, -128, -128 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1091,9 +1102,9 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 10, 142, 150, 294, 340, 313, 3, - 12, 144, 152, 296, 315, 342, 4, 5, 6, 8, - 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 11, 144, 152, 308, 354, 327, 159, + 3, 13, 146, 154, 161, 310, 329, 356, 4, 5, + 6, 10, 8, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1106,89 +1117,93 @@ 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, 11, 13, 14, 73, 76, 85, 15, 24, 64, - 16, 77, 78, 35, 57, 72, 17, 18, 20, 21, - 19, 22, 23, 107, 108, 109, 110, 111, 74, 63, - 89, 106, 25, 26, 27, 28, 29, 65, 79, 80, - 95, 51, 61, 52, 90, 45, 46, 47, 48, 99, - 103, 115, 123, 134, 100, 58, 30, 31, 32, 87, - 116, 117, 118, 33, 34, 36, 37, 39, 40, 38, - 121, 41, 42, 43, 49, 68, 104, 82, 122, 75, - 130, 83, 84, 101, 102, 88, 44, 66, 69, 50, - 53, 91, 92, 67, 131, 93, 54, 55, 56, 105, - 94, 62, 96, 97, 98, 132, 59, 60, 81, 70, - 71, 86, 112, 113, 114, 119, 120, 135, 136, 138, - 140, 141, 139, 124, 126, 125, 127, 128, 129, 133, - 137, 0, 0, 0, 0, 0, 143, 145, 146, 147, - 149, 148, 0, 0, 0, 0, 151, 153, 154, 155, - 156, 0, 0, 0, 0, 0, 0, 0, 0, 295, - 297, 299, 298, 304, 300, 301, 302, 303, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 314, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 0, 341, 343, 158, 157, 162, 165, - 163, 171, 172, 175, 173, 174, 176, 177, 187, 188, - 189, 190, 191, 211, 212, 213, 218, 219, 168, 220, - 221, 224, 222, 223, 226, 227, 228, 241, 200, 201, - 202, 203, 229, 244, 196, 198, 245, 251, 252, 253, - 169, 210, 261, 262, 197, 256, 184, 164, 192, 242, - 248, 230, 0, 0, 265, 170, 159, 183, 234, 160, - 166, 167, 193, 194, 263, 232, 236, 237, 161, 266, - 214, 240, 185, 199, 246, 247, 250, 255, 195, 259, - 257, 258, 204, 209, 238, 239, 205, 206, 231, 254, - 186, 178, 179, 180, 181, 182, 267, 268, 269, 215, - 216, 217, 225, 270, 271, 233, 207, 345, 278, 280, - 279, 0, 0, 283, 235, 249, 260, 284, 208, 272, - 0, 0, 0, 0, 0, 285, 286, 287, 289, 288, - 290, 291, 292, 293, 305, 307, 306, 309, 310, 311, - 312, 308, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 344, 243, 264, 281, 282, 273, - 274, 0, 0, 0, 277, 275, 276 + 0, 0, 0, 0, 0, 12, 14, 15, 74, 77, + 86, 16, 25, 65, 17, 78, 79, 36, 58, 73, + 18, 19, 21, 22, 20, 23, 24, 108, 109, 110, + 111, 112, 75, 64, 90, 107, 26, 27, 28, 29, + 30, 66, 80, 81, 96, 52, 62, 53, 91, 46, + 47, 48, 49, 100, 104, 116, 124, 135, 101, 59, + 31, 32, 33, 88, 117, 118, 119, 34, 35, 37, + 38, 40, 41, 39, 122, 42, 43, 44, 50, 69, + 105, 83, 123, 76, 131, 84, 85, 102, 103, 89, + 45, 67, 70, 51, 54, 92, 93, 68, 132, 94, + 55, 56, 57, 106, 95, 63, 97, 98, 99, 133, + 60, 61, 82, 71, 72, 87, 113, 114, 115, 120, + 121, 136, 137, 139, 141, 142, 140, 143, 125, 127, + 126, 128, 129, 130, 134, 138, 0, 0, 0, 0, + 0, 145, 147, 148, 149, 151, 150, 0, 0, 0, + 0, 153, 155, 156, 157, 158, 0, 0, 0, 0, + 160, 162, 163, 164, 165, 0, 0, 0, 0, 0, + 0, 0, 0, 309, 311, 313, 312, 318, 314, 315, + 316, 317, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 328, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 0, 355, 357, + 167, 166, 171, 174, 172, 180, 181, 184, 182, 183, + 185, 186, 196, 197, 198, 199, 200, 220, 221, 222, + 227, 228, 177, 229, 230, 233, 231, 232, 235, 236, + 237, 250, 209, 210, 211, 212, 238, 253, 205, 207, + 254, 260, 261, 262, 178, 219, 270, 271, 206, 265, + 193, 173, 201, 251, 257, 239, 0, 0, 274, 179, + 168, 192, 243, 169, 175, 176, 202, 203, 272, 241, + 245, 246, 170, 275, 223, 249, 194, 208, 255, 256, + 259, 264, 204, 268, 266, 267, 213, 218, 247, 248, + 214, 215, 240, 263, 195, 187, 188, 189, 190, 191, + 276, 277, 278, 224, 225, 226, 234, 279, 280, 242, + 216, 359, 288, 290, 289, 0, 0, 293, 244, 258, + 269, 294, 217, 281, 0, 0, 0, 0, 0, 0, + 295, 296, 297, 299, 298, 300, 301, 302, 303, 304, + 0, 306, 307, 319, 321, 320, 323, 324, 325, 326, + 322, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 358, 252, 273, 291, 292, 282, 283, + 0, 0, 0, 287, 305, 286, 284, 285 }; /* YYPGOTO[NTERM-NUM]. */ 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, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, -81, -81, -81, -81, -81 + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 9, 10, 16, 151, 11, 17, 286, 12, - 18, 296, 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, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 287, 288, 289, 290, 291, 297, 298, 299, 300, 13, - 19, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 14, 20, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 15, 21, 344, 345, 280 + -1, 1, 10, 11, 18, 155, 12, 19, 291, 13, + 20, 301, 14, 21, 310, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 292, 293, 294, 295, 296, 302, + 303, 304, 305, 311, 312, 313, 314, 15, 22, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 16, 23, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 17, 24, 358, 359, 285 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1196,72 +1211,136 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ 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, 49, 343, 346, - 347, 348, 50, 51, 52, 349, 350, 351, 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, 93, 301, - 302, 303, 304, 305, 306, 307, 308, 292, 94, 95, - 96, 352, 97, 98, 99, 293, 294, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 353, - 354, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 2, 281, 355, 282, 283, 356, 357, 358, 359, 360, - 0, 3, 361, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 362, 363, 364, 365, 366, 367, 368, - 369, 4, 370, 371, 372, 373, 374, 5, 295, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 375, 376, 377, 284, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 6, 404, 285, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 7, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 2, 306, 286, 357, 287, 288, 297, 360, 361, 362, + 0, 3, 363, 364, 298, 299, 332, 333, 334, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 315, 316, + 317, 318, 319, 320, 321, 322, 365, 307, 308, 366, + 367, 4, 368, 369, 370, 371, 372, 5, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 289, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 6, 415, 416, 290, 417, 418, 300, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 7, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 8, 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, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 515, 516 + 450, 451, 452, 453, 454, 455, 456, 457, 309, 458, + 459, 460, 8, 461, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 462, 463, 464, 9, 53, 54, 55, 465, + 466, 467, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 97, 98, 99, 477, 100, 101, 102, 478, + 479, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 480, 481, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 492, 493, 494, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 495, 154, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537 }; static const yytype_int16 yycheck[] = { - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 108, 10, - 10, 10, 44, 45, 46, 10, 10, 10, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 92, - 93, 94, 95, 96, 97, 98, 99, 40, 100, 101, - 102, 10, 104, 105, 106, 48, 49, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 10, - 10, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 0, 40, 10, 42, 43, 10, 10, 10, 10, 10, - -1, 11, 10, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 10, 10, 10, 10, 10, 10, 10, - 10, 41, 10, 10, 10, 10, 10, 47, 131, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 10, 10, 10, 103, 10, 10, 10, 10, 10, + 0, 40, 40, 108, 42, 43, 40, 10, 10, 10, + -1, 11, 10, 10, 48, 49, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 92, 93, + 94, 95, 96, 97, 98, 99, 10, 76, 77, 10, + 10, 41, 10, 10, 10, 10, 10, 47, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 103, 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, 91, 10, 132, 10, 10, 10, 10, 10, 10, + 10, 91, 10, 10, 132, 10, 10, 131, 10, 10, 10, 10, 10, 10, 10, 10, 10, 107, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 177, 10, + 10, 10, 142, 10, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 10, 10, 10, 175, 44, 45, 46, 10, + 10, 10, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 100, 101, 102, 10, 104, 105, 106, 10, + 10, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 10, 10, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 10, 176, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10 +}; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 179, 0, 11, 41, 47, 91, 107, 142, 175, + 180, 181, 184, 187, 190, 335, 346, 361, 182, 185, + 188, 191, 336, 347, 362, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 44, 45, 46, 50, 51, 52, 53, + 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, 100, 101, 102, + 104, 105, 106, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 176, 183, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 365, 40, 42, 43, 103, + 132, 186, 322, 323, 324, 325, 326, 40, 48, 49, + 131, 189, 327, 328, 329, 330, 40, 76, 77, 177, + 192, 331, 332, 333, 334, 92, 93, 94, 95, 96, + 97, 98, 99, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 108, 363, 364, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 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, 142, 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, @@ -1270,109 +1349,52 @@ static const yytype_int16 yycheck[] = 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, 176, 0, 11, 41, 47, 91, 107, 142, 177, - 178, 181, 184, 324, 335, 350, 179, 182, 185, 325, - 336, 351, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 44, 45, 46, 50, 51, 52, 53, 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, 100, 101, 102, 104, 105, 106, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 180, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 354, 40, 42, 43, 103, 132, 183, 315, 316, 317, - 318, 319, 40, 48, 49, 131, 186, 320, 321, 322, - 323, 92, 93, 94, 95, 96, 97, 98, 99, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 108, 352, 353, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10 -}; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 175, 176, 176, 177, 177, 177, 177, 177, 177, - 178, 179, 179, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 181, 182, 182, 183, 183, 183, 183, 183, - 184, 185, 185, 186, 186, 186, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 325, 326, 326, 326, - 326, 326, 326, 326, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 336, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 351, 352, 353, 354 + 0, 178, 179, 179, 180, 180, 180, 180, 180, 180, + 180, 181, 182, 182, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, 184, 185, 185, 186, 186, 186, + 186, 186, 187, 188, 188, 189, 189, 189, 189, 190, + 191, 191, 192, 192, 192, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 336, 337, 337, 337, 337, 337, 337, 337, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 362, 363, 364, 365 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1385,8 +1407,9 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 2, 0, 1, 1, 1, 1, 2, 2, 2, + 2, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1395,17 +1418,17 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 3, 4, 4, 4, 2, 2, + 2, 2, 3, 3, 4, 4, 4, 3, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 2, 2 + 2, 2, 2, 2, 2, 3, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 2, 2 }; @@ -2081,16 +2104,16 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 10: -#line 141 "./util/configparser.y" /* yacc.c:1646 */ + case 11: +#line 143 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } -#line 2090 "util/configparser.c" /* yacc.c:1646 */ +#line 2113 "util/configparser.c" /* yacc.c:1646 */ break; - case 142: -#line 205 "./util/configparser.y" /* yacc.c:1646 */ + case 144: +#line 207 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2101,11 +2124,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2105 "util/configparser.c" /* yacc.c:1646 */ +#line 2128 "util/configparser.c" /* yacc.c:1646 */ break; - case 150: -#line 221 "./util/configparser.y" /* yacc.c:1646 */ + case 152: +#line 223 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2116,11 +2139,28 @@ yyreduce: } else yyerror("out of memory"); } -#line 2120 "util/configparser.c" /* yacc.c:1646 */ +#line 2143 "util/configparser.c" /* yacc.c:1646 */ break; - case 157: -#line 237 "./util/configparser.y" /* yacc.c:1646 */ + case 159: +#line 239 "./util/configparser.y" /* yacc.c:1646 */ + { + struct config_view* s; + OUTYY(("\nP(view:)\n")); + s = (struct config_view*)calloc(1, sizeof(struct config_view)); + if(s) { + s->next = cfg_parser->cfg->views; + if(s->next && !s->next->name) + yyerror("view without name"); + cfg_parser->cfg->views = s; + } else + yyerror("out of memory"); + } +#line 2160 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 166: +#line 257 "./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) @@ -2128,11 +2168,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2132 "util/configparser.c" /* yacc.c:1646 */ +#line 2172 "util/configparser.c" /* yacc.c:1646 */ break; - case 158: -#line 246 "./util/configparser.y" /* yacc.c:1646 */ + case 167: +#line 266 "./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) @@ -2140,11 +2180,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2144 "util/configparser.c" /* yacc.c:1646 */ +#line 2184 "util/configparser.c" /* yacc.c:1646 */ break; - case 159: -#line 255 "./util/configparser.y" /* yacc.c:1646 */ + case 168: +#line 275 "./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) @@ -2154,11 +2194,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2158 "util/configparser.c" /* yacc.c:1646 */ +#line 2198 "util/configparser.c" /* yacc.c:1646 */ break; - case 160: -#line 266 "./util/configparser.y" /* yacc.c:1646 */ + case 169: +#line 286 "./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) @@ -2166,11 +2206,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2170 "util/configparser.c" /* yacc.c:1646 */ +#line 2210 "util/configparser.c" /* yacc.c:1646 */ break; - case 161: -#line 275 "./util/configparser.y" /* yacc.c:1646 */ + case 170: +#line 295 "./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) @@ -2178,11 +2218,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2182 "util/configparser.c" /* yacc.c:1646 */ +#line 2222 "util/configparser.c" /* yacc.c:1646 */ break; - case 162: -#line 284 "./util/configparser.y" /* yacc.c:1646 */ + case 171: +#line 304 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2190,11 +2230,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2194 "util/configparser.c" /* yacc.c:1646 */ +#line 2234 "util/configparser.c" /* yacc.c:1646 */ break; - case 163: -#line 293 "./util/configparser.y" /* yacc.c:1646 */ + case 172: +#line 313 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2206,11 +2246,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 2210 "util/configparser.c" /* yacc.c:1646 */ +#line 2250 "util/configparser.c" /* yacc.c:1646 */ break; - case 164: -#line 306 "./util/configparser.y" /* yacc.c:1646 */ + case 173: +#line 326 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2224,11 +2264,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 2228 "util/configparser.c" /* yacc.c:1646 */ +#line 2268 "util/configparser.c" /* yacc.c:1646 */ break; - case 165: -#line 321 "./util/configparser.y" /* yacc.c:1646 */ + case 174: +#line 341 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2236,11 +2276,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2240 "util/configparser.c" /* yacc.c:1646 */ +#line 2280 "util/configparser.c" /* yacc.c:1646 */ break; - case 166: -#line 330 "./util/configparser.y" /* yacc.c:1646 */ + case 175: +#line 350 "./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, @@ -2248,11 +2288,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2252 "util/configparser.c" /* yacc.c:1646 */ +#line 2292 "util/configparser.c" /* yacc.c:1646 */ break; - case 167: -#line 339 "./util/configparser.y" /* yacc.c:1646 */ + case 176: +#line 359 "./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, @@ -2260,11 +2300,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2264 "util/configparser.c" /* yacc.c:1646 */ +#line 2304 "util/configparser.c" /* yacc.c:1646 */ break; - case 168: -#line 348 "./util/configparser.y" /* yacc.c:1646 */ + case 177: +#line 368 "./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) @@ -2272,11 +2312,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2276 "util/configparser.c" /* yacc.c:1646 */ +#line 2316 "util/configparser.c" /* yacc.c:1646 */ break; - case 169: -#line 357 "./util/configparser.y" /* yacc.c:1646 */ + case 178: +#line 377 "./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) @@ -2284,11 +2324,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2288 "util/configparser.c" /* yacc.c:1646 */ +#line 2328 "util/configparser.c" /* yacc.c:1646 */ break; - case 170: -#line 366 "./util/configparser.y" /* yacc.c:1646 */ + case 179: +#line 386 "./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) @@ -2296,11 +2336,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2300 "util/configparser.c" /* yacc.c:1646 */ +#line 2340 "util/configparser.c" /* yacc.c:1646 */ break; - case 171: -#line 375 "./util/configparser.y" /* yacc.c:1646 */ + case 180: +#line 395 "./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) @@ -2308,11 +2348,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2312 "util/configparser.c" /* yacc.c:1646 */ +#line 2352 "util/configparser.c" /* yacc.c:1646 */ break; - case 172: -#line 384 "./util/configparser.y" /* yacc.c:1646 */ + case 181: +#line 404 "./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) @@ -2320,11 +2360,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2324 "util/configparser.c" /* yacc.c:1646 */ +#line 2364 "util/configparser.c" /* yacc.c:1646 */ break; - case 173: -#line 393 "./util/configparser.y" /* yacc.c:1646 */ + case 182: +#line 413 "./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) @@ -2332,11 +2372,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2336 "util/configparser.c" /* yacc.c:1646 */ +#line 2376 "util/configparser.c" /* yacc.c:1646 */ break; - case 174: -#line 402 "./util/configparser.y" /* yacc.c:1646 */ + case 183: +#line 422 "./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) @@ -2344,11 +2384,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2348 "util/configparser.c" /* yacc.c:1646 */ +#line 2388 "util/configparser.c" /* yacc.c:1646 */ break; - case 175: -#line 411 "./util/configparser.y" /* yacc.c:1646 */ + case 184: +#line 431 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2356,11 +2396,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2360 "util/configparser.c" /* yacc.c:1646 */ +#line 2400 "util/configparser.c" /* yacc.c:1646 */ break; - case 176: -#line 420 "./util/configparser.y" /* yacc.c:1646 */ + case 185: +#line 440 "./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) @@ -2368,11 +2408,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2372 "util/configparser.c" /* yacc.c:1646 */ +#line 2412 "util/configparser.c" /* yacc.c:1646 */ break; - case 177: -#line 429 "./util/configparser.y" /* yacc.c:1646 */ + case 186: +#line 449 "./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) @@ -2380,11 +2420,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2384 "util/configparser.c" /* yacc.c:1646 */ +#line 2424 "util/configparser.c" /* yacc.c:1646 */ break; - case 178: -#line 438 "./util/configparser.y" /* yacc.c:1646 */ + case 187: +#line 458 "./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) @@ -2392,11 +2432,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2396 "util/configparser.c" /* yacc.c:1646 */ +#line 2436 "util/configparser.c" /* yacc.c:1646 */ break; - case 179: -#line 447 "./util/configparser.y" /* yacc.c:1646 */ + case 188: +#line 467 "./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) @@ -2404,31 +2444,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2408 "util/configparser.c" /* yacc.c:1646 */ +#line 2448 "util/configparser.c" /* yacc.c:1646 */ break; - case 180: -#line 456 "./util/configparser.y" /* yacc.c:1646 */ + case 189: +#line 476 "./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 2418 "util/configparser.c" /* yacc.c:1646 */ +#line 2458 "util/configparser.c" /* yacc.c:1646 */ break; - case 181: -#line 463 "./util/configparser.y" /* yacc.c:1646 */ + case 190: +#line 483 "./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 2428 "util/configparser.c" /* yacc.c:1646 */ +#line 2468 "util/configparser.c" /* yacc.c:1646 */ break; - case 182: -#line 470 "./util/configparser.y" /* yacc.c:1646 */ + case 191: +#line 490 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2436,11 +2476,11 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2440 "util/configparser.c" /* yacc.c:1646 */ +#line 2480 "util/configparser.c" /* yacc.c:1646 */ break; - case 183: -#line 479 "./util/configparser.y" /* yacc.c:1646 */ + case 192: +#line 499 "./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) @@ -2448,11 +2488,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2452 "util/configparser.c" /* yacc.c:1646 */ +#line 2492 "util/configparser.c" /* yacc.c:1646 */ break; - case 184: -#line 488 "./util/configparser.y" /* yacc.c:1646 */ + case 193: +#line 508 "./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) @@ -2465,11 +2505,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2469 "util/configparser.c" /* yacc.c:1646 */ +#line 2509 "util/configparser.c" /* yacc.c:1646 */ break; - case 185: -#line 502 "./util/configparser.y" /* yacc.c:1646 */ + case 194: +#line 522 "./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) @@ -2477,11 +2517,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2481 "util/configparser.c" /* yacc.c:1646 */ +#line 2521 "util/configparser.c" /* yacc.c:1646 */ break; - case 186: -#line 511 "./util/configparser.y" /* yacc.c:1646 */ + case 195: +#line 531 "./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) @@ -2489,31 +2529,31 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2493 "util/configparser.c" /* yacc.c:1646 */ +#line 2533 "util/configparser.c" /* yacc.c:1646 */ break; - case 187: -#line 520 "./util/configparser.y" /* yacc.c:1646 */ + case 196: +#line 540 "./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 2503 "util/configparser.c" /* yacc.c:1646 */ +#line 2543 "util/configparser.c" /* yacc.c:1646 */ break; - case 188: -#line 527 "./util/configparser.y" /* yacc.c:1646 */ + case 197: +#line 547 "./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 2513 "util/configparser.c" /* yacc.c:1646 */ +#line 2553 "util/configparser.c" /* yacc.c:1646 */ break; - case 189: -#line 534 "./util/configparser.y" /* yacc.c:1646 */ + case 198: +#line 554 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -2536,115 +2576,115 @@ yyreduce: d, strerror(errno)); } } -#line 2540 "util/configparser.c" /* yacc.c:1646 */ +#line 2580 "util/configparser.c" /* yacc.c:1646 */ break; - case 190: -#line 558 "./util/configparser.y" /* yacc.c:1646 */ + case 199: +#line 578 "./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 2551 "util/configparser.c" /* yacc.c:1646 */ +#line 2591 "util/configparser.c" /* yacc.c:1646 */ break; - case 191: -#line 566 "./util/configparser.y" /* yacc.c:1646 */ + case 200: +#line 586 "./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 2561 "util/configparser.c" /* yacc.c:1646 */ +#line 2601 "util/configparser.c" /* yacc.c:1646 */ break; - case 192: -#line 573 "./util/configparser.y" /* yacc.c:1646 */ + case 201: +#line 593 "./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 2571 "util/configparser.c" /* yacc.c:1646 */ +#line 2611 "util/configparser.c" /* yacc.c:1646 */ break; - case 193: -#line 580 "./util/configparser.y" /* yacc.c:1646 */ + case 202: +#line 600 "./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 2581 "util/configparser.c" /* yacc.c:1646 */ +#line 2621 "util/configparser.c" /* yacc.c:1646 */ break; - case 194: -#line 587 "./util/configparser.y" /* yacc.c:1646 */ + case 203: +#line 607 "./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 2591 "util/configparser.c" /* yacc.c:1646 */ +#line 2631 "util/configparser.c" /* yacc.c:1646 */ break; - case 195: -#line 594 "./util/configparser.y" /* yacc.c:1646 */ + case 204: +#line 614 "./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 2602 "util/configparser.c" /* yacc.c:1646 */ +#line 2642 "util/configparser.c" /* yacc.c:1646 */ break; - case 196: -#line 602 "./util/configparser.y" /* yacc.c:1646 */ + case 205: +#line 622 "./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 2613 "util/configparser.c" /* yacc.c:1646 */ +#line 2653 "util/configparser.c" /* yacc.c:1646 */ break; - case 197: -#line 610 "./util/configparser.y" /* yacc.c:1646 */ + case 206: +#line 630 "./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 2624 "util/configparser.c" /* yacc.c:1646 */ +#line 2664 "util/configparser.c" /* yacc.c:1646 */ break; - case 198: -#line 618 "./util/configparser.y" /* yacc.c:1646 */ + case 207: +#line 638 "./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 2634 "util/configparser.c" /* yacc.c:1646 */ +#line 2674 "util/configparser.c" /* yacc.c:1646 */ break; - case 199: -#line 625 "./util/configparser.y" /* yacc.c:1646 */ + case 208: +#line 645 "./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 2644 "util/configparser.c" /* yacc.c:1646 */ +#line 2684 "util/configparser.c" /* yacc.c:1646 */ break; - case 200: -#line 632 "./util/configparser.y" /* yacc.c:1646 */ + case 209: +#line 652 "./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) @@ -2652,11 +2692,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2656 "util/configparser.c" /* yacc.c:1646 */ +#line 2696 "util/configparser.c" /* yacc.c:1646 */ break; - case 201: -#line 641 "./util/configparser.y" /* yacc.c:1646 */ + case 210: +#line 661 "./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) @@ -2664,53 +2704,53 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2668 "util/configparser.c" /* yacc.c:1646 */ +#line 2708 "util/configparser.c" /* yacc.c:1646 */ break; - case 202: -#line 650 "./util/configparser.y" /* yacc.c:1646 */ + case 211: +#line 670 "./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 2678 "util/configparser.c" /* yacc.c:1646 */ +#line 2718 "util/configparser.c" /* yacc.c:1646 */ break; - case 203: -#line 657 "./util/configparser.y" /* yacc.c:1646 */ + case 212: +#line 677 "./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 2688 "util/configparser.c" /* yacc.c:1646 */ +#line 2728 "util/configparser.c" /* yacc.c:1646 */ break; - case 204: -#line 664 "./util/configparser.y" /* yacc.c:1646 */ + case 213: +#line 684 "./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 2699 "util/configparser.c" /* yacc.c:1646 */ +#line 2739 "util/configparser.c" /* yacc.c:1646 */ break; - case 205: -#line 672 "./util/configparser.y" /* yacc.c:1646 */ + case 214: +#line 692 "./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 2710 "util/configparser.c" /* yacc.c:1646 */ +#line 2750 "util/configparser.c" /* yacc.c:1646 */ break; - case 206: -#line 680 "./util/configparser.y" /* yacc.c:1646 */ + case 215: +#line 700 "./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) @@ -2719,11 +2759,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2723 "util/configparser.c" /* yacc.c:1646 */ +#line 2763 "util/configparser.c" /* yacc.c:1646 */ break; - case 207: -#line 690 "./util/configparser.y" /* yacc.c:1646 */ + case 216: +#line 710 "./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) @@ -2732,11 +2772,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2736 "util/configparser.c" /* yacc.c:1646 */ +#line 2776 "util/configparser.c" /* yacc.c:1646 */ break; - case 208: -#line 700 "./util/configparser.y" /* yacc.c:1646 */ + case 217: +#line 720 "./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) @@ -2745,11 +2785,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2749 "util/configparser.c" /* yacc.c:1646 */ +#line 2789 "util/configparser.c" /* yacc.c:1646 */ break; - case 209: -#line 710 "./util/configparser.y" /* yacc.c:1646 */ + case 218: +#line 730 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2761,11 +2801,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2765 "util/configparser.c" /* yacc.c:1646 */ +#line 2805 "util/configparser.c" /* yacc.c:1646 */ break; - case 210: -#line 723 "./util/configparser.y" /* yacc.c:1646 */ + case 219: +#line 743 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2775,22 +2815,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2779 "util/configparser.c" /* yacc.c:1646 */ +#line 2819 "util/configparser.c" /* yacc.c:1646 */ break; - case 211: -#line 734 "./util/configparser.y" /* yacc.c:1646 */ + case 220: +#line 754 "./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 2790 "util/configparser.c" /* yacc.c:1646 */ +#line 2830 "util/configparser.c" /* yacc.c:1646 */ break; - case 212: -#line 742 "./util/configparser.y" /* yacc.c:1646 */ + case 221: +#line 762 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2802,11 +2842,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2806 "util/configparser.c" /* yacc.c:1646 */ +#line 2846 "util/configparser.c" /* yacc.c:1646 */ break; - case 213: -#line 755 "./util/configparser.y" /* yacc.c:1646 */ + case 222: +#line 775 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2814,11 +2854,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2818 "util/configparser.c" /* yacc.c:1646 */ +#line 2858 "util/configparser.c" /* yacc.c:1646 */ break; - case 214: -#line 764 "./util/configparser.y" /* yacc.c:1646 */ + case 223: +#line 784 "./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) @@ -2826,11 +2866,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2830 "util/configparser.c" /* yacc.c:1646 */ +#line 2870 "util/configparser.c" /* yacc.c:1646 */ break; - case 215: -#line 773 "./util/configparser.y" /* yacc.c:1646 */ + case 224: +#line 793 "./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) @@ -2838,11 +2878,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2842 "util/configparser.c" /* yacc.c:1646 */ +#line 2882 "util/configparser.c" /* yacc.c:1646 */ break; - case 216: -#line 782 "./util/configparser.y" /* yacc.c:1646 */ + case 225: +#line 802 "./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) @@ -2851,11 +2891,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2855 "util/configparser.c" /* yacc.c:1646 */ +#line 2895 "util/configparser.c" /* yacc.c:1646 */ break; - case 217: -#line 792 "./util/configparser.y" /* yacc.c:1646 */ + case 226: +#line 812 "./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) @@ -2864,22 +2904,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2868 "util/configparser.c" /* yacc.c:1646 */ +#line 2908 "util/configparser.c" /* yacc.c:1646 */ break; - case 218: -#line 802 "./util/configparser.y" /* yacc.c:1646 */ + case 227: +#line 822 "./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 2879 "util/configparser.c" /* yacc.c:1646 */ +#line 2919 "util/configparser.c" /* yacc.c:1646 */ break; - case 219: -#line 810 "./util/configparser.y" /* yacc.c:1646 */ + case 228: +#line 830 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2891,11 +2931,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2895 "util/configparser.c" /* yacc.c:1646 */ +#line 2935 "util/configparser.c" /* yacc.c:1646 */ break; - case 220: -#line 823 "./util/configparser.y" /* yacc.c:1646 */ + case 229: +#line 843 "./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) @@ -2903,22 +2943,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2907 "util/configparser.c" /* yacc.c:1646 */ +#line 2947 "util/configparser.c" /* yacc.c:1646 */ break; - case 221: -#line 832 "./util/configparser.y" /* yacc.c:1646 */ + case 230: +#line 852 "./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 2918 "util/configparser.c" /* yacc.c:1646 */ +#line 2958 "util/configparser.c" /* yacc.c:1646 */ break; - case 222: -#line 840 "./util/configparser.y" /* yacc.c:1646 */ + case 231: +#line 860 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2926,22 +2966,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2930 "util/configparser.c" /* yacc.c:1646 */ +#line 2970 "util/configparser.c" /* yacc.c:1646 */ break; - case 223: -#line 849 "./util/configparser.y" /* yacc.c:1646 */ + case 232: +#line 869 "./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 2941 "util/configparser.c" /* yacc.c:1646 */ +#line 2981 "util/configparser.c" /* yacc.c:1646 */ break; - case 224: -#line 857 "./util/configparser.y" /* yacc.c:1646 */ + case 233: +#line 877 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2953,11 +2993,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 2957 "util/configparser.c" /* yacc.c:1646 */ +#line 2997 "util/configparser.c" /* yacc.c:1646 */ break; - case 225: -#line 870 "./util/configparser.y" /* yacc.c:1646 */ + case 234: +#line 890 "./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) @@ -2965,21 +3005,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2969 "util/configparser.c" /* yacc.c:1646 */ +#line 3009 "util/configparser.c" /* yacc.c:1646 */ break; - case 226: -#line 879 "./util/configparser.y" /* yacc.c:1646 */ + case 235: +#line 899 "./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 2979 "util/configparser.c" /* yacc.c:1646 */ +#line 3019 "util/configparser.c" /* yacc.c:1646 */ break; - case 227: -#line 886 "./util/configparser.y" /* yacc.c:1646 */ + case 236: +#line 906 "./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) @@ -2988,11 +3028,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2992 "util/configparser.c" /* yacc.c:1646 */ +#line 3032 "util/configparser.c" /* yacc.c:1646 */ break; - case 228: -#line 896 "./util/configparser.y" /* yacc.c:1646 */ + case 237: +#line 916 "./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) @@ -3001,11 +3041,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3005 "util/configparser.c" /* yacc.c:1646 */ +#line 3045 "util/configparser.c" /* yacc.c:1646 */ break; - case 229: -#line 906 "./util/configparser.y" /* yacc.c:1646 */ + case 238: +#line 926 "./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) @@ -3014,11 +3054,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3018 "util/configparser.c" /* yacc.c:1646 */ +#line 3058 "util/configparser.c" /* yacc.c:1646 */ break; - case 230: -#line 916 "./util/configparser.y" /* yacc.c:1646 */ + case 239: +#line 936 "./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) @@ -3027,11 +3067,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3031 "util/configparser.c" /* yacc.c:1646 */ +#line 3071 "util/configparser.c" /* yacc.c:1646 */ break; - case 231: -#line 926 "./util/configparser.y" /* yacc.c:1646 */ + case 240: +#line 946 "./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) @@ -3040,11 +3080,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3044 "util/configparser.c" /* yacc.c:1646 */ +#line 3084 "util/configparser.c" /* yacc.c:1646 */ break; - case 232: -#line 936 "./util/configparser.y" /* yacc.c:1646 */ + case 241: +#line 956 "./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) @@ -3053,11 +3093,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3057 "util/configparser.c" /* yacc.c:1646 */ +#line 3097 "util/configparser.c" /* yacc.c:1646 */ break; - case 233: -#line 946 "./util/configparser.y" /* yacc.c:1646 */ + case 242: +#line 966 "./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) @@ -3066,11 +3106,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3070 "util/configparser.c" /* yacc.c:1646 */ +#line 3110 "util/configparser.c" /* yacc.c:1646 */ break; - case 234: -#line 956 "./util/configparser.y" /* yacc.c:1646 */ + case 243: +#line 976 "./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) @@ -3079,41 +3119,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3083 "util/configparser.c" /* yacc.c:1646 */ +#line 3123 "util/configparser.c" /* yacc.c:1646 */ break; - case 235: -#line 966 "./util/configparser.y" /* yacc.c:1646 */ + case 244: +#line 986 "./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 3093 "util/configparser.c" /* yacc.c:1646 */ +#line 3133 "util/configparser.c" /* yacc.c:1646 */ break; - case 236: -#line 973 "./util/configparser.y" /* yacc.c:1646 */ + case 245: +#line 993 "./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 3103 "util/configparser.c" /* yacc.c:1646 */ +#line 3143 "util/configparser.c" /* yacc.c:1646 */ break; - case 237: -#line 980 "./util/configparser.y" /* yacc.c:1646 */ + case 246: +#line 1000 "./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 3113 "util/configparser.c" /* yacc.c:1646 */ +#line 3153 "util/configparser.c" /* yacc.c:1646 */ break; - case 238: -#line 987 "./util/configparser.y" /* yacc.c:1646 */ + case 247: +#line 1007 "./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) @@ -3121,11 +3161,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3125 "util/configparser.c" /* yacc.c:1646 */ +#line 3165 "util/configparser.c" /* yacc.c:1646 */ break; - case 239: -#line 996 "./util/configparser.y" /* yacc.c:1646 */ + case 248: +#line 1016 "./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) @@ -3133,11 +3173,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3137 "util/configparser.c" /* yacc.c:1646 */ +#line 3177 "util/configparser.c" /* yacc.c:1646 */ break; - case 240: -#line 1005 "./util/configparser.y" /* yacc.c:1646 */ + case 249: +#line 1025 "./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) @@ -3145,21 +3185,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3149 "util/configparser.c" /* yacc.c:1646 */ +#line 3189 "util/configparser.c" /* yacc.c:1646 */ break; - case 241: -#line 1014 "./util/configparser.y" /* yacc.c:1646 */ + case 250: +#line 1034 "./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 3159 "util/configparser.c" /* yacc.c:1646 */ +#line 3199 "util/configparser.c" /* yacc.c:1646 */ break; - case 242: -#line 1021 "./util/configparser.y" /* yacc.c:1646 */ + case 251: +#line 1041 "./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) @@ -3168,11 +3208,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3172 "util/configparser.c" /* yacc.c:1646 */ +#line 3212 "util/configparser.c" /* yacc.c:1646 */ break; - case 243: -#line 1031 "./util/configparser.y" /* yacc.c:1646 */ + case 252: +#line 1051 "./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 && @@ -3188,21 +3228,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 3192 "util/configparser.c" /* yacc.c:1646 */ +#line 3232 "util/configparser.c" /* yacc.c:1646 */ break; - case 244: -#line 1048 "./util/configparser.y" /* yacc.c:1646 */ + case 253: +#line 1068 "./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 3202 "util/configparser.c" /* yacc.c:1646 */ +#line 3242 "util/configparser.c" /* yacc.c:1646 */ break; - case 245: -#line 1055 "./util/configparser.y" /* yacc.c:1646 */ + case 254: +#line 1075 "./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) { @@ -3219,11 +3259,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3223 "util/configparser.c" /* yacc.c:1646 */ +#line 3263 "util/configparser.c" /* yacc.c:1646 */ break; - case 246: -#line 1073 "./util/configparser.y" /* yacc.c:1646 */ + case 255: +#line 1093 "./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) { @@ -3235,11 +3275,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3239 "util/configparser.c" /* yacc.c:1646 */ +#line 3279 "util/configparser.c" /* yacc.c:1646 */ break; - case 247: -#line 1086 "./util/configparser.y" /* yacc.c:1646 */ + case 256: +#line 1106 "./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) { @@ -3251,11 +3291,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3255 "util/configparser.c" /* yacc.c:1646 */ +#line 3295 "util/configparser.c" /* yacc.c:1646 */ break; - case 248: -#line 1099 "./util/configparser.y" /* yacc.c:1646 */ + case 257: +#line 1119 "./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) @@ -3263,11 +3303,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3267 "util/configparser.c" /* yacc.c:1646 */ +#line 3307 "util/configparser.c" /* yacc.c:1646 */ break; - case 249: -#line 1108 "./util/configparser.y" /* yacc.c:1646 */ + case 258: +#line 1128 "./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) @@ -3275,11 +3315,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3279 "util/configparser.c" /* yacc.c:1646 */ +#line 3319 "util/configparser.c" /* yacc.c:1646 */ break; - case 250: -#line 1117 "./util/configparser.y" /* yacc.c:1646 */ + case 259: +#line 1137 "./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) @@ -3287,11 +3327,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3291 "util/configparser.c" /* yacc.c:1646 */ +#line 3331 "util/configparser.c" /* yacc.c:1646 */ break; - case 251: -#line 1126 "./util/configparser.y" /* yacc.c:1646 */ + case 260: +#line 1146 "./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) @@ -3299,11 +3339,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3303 "util/configparser.c" /* yacc.c:1646 */ +#line 3343 "util/configparser.c" /* yacc.c:1646 */ break; - case 252: -#line 1135 "./util/configparser.y" /* yacc.c:1646 */ + case 261: +#line 1155 "./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) @@ -3312,11 +3352,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3316 "util/configparser.c" /* yacc.c:1646 */ +#line 3356 "util/configparser.c" /* yacc.c:1646 */ break; - case 253: -#line 1145 "./util/configparser.y" /* yacc.c:1646 */ + case 262: +#line 1165 "./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) @@ -3325,11 +3365,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3329 "util/configparser.c" /* yacc.c:1646 */ +#line 3369 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 1155 "./util/configparser.y" /* yacc.c:1646 */ + case 263: +#line 1175 "./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) @@ -3337,11 +3377,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3341 "util/configparser.c" /* yacc.c:1646 */ +#line 3381 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 1164 "./util/configparser.y" /* yacc.c:1646 */ + case 264: +#line 1184 "./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) @@ -3349,21 +3389,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3353 "util/configparser.c" /* yacc.c:1646 */ +#line 3393 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 1173 "./util/configparser.y" /* yacc.c:1646 */ + case 265: +#line 1193 "./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 3363 "util/configparser.c" /* yacc.c:1646 */ +#line 3403 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -#line 1180 "./util/configparser.y" /* yacc.c:1646 */ + case 266: +#line 1200 "./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) @@ -3371,11 +3411,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3375 "util/configparser.c" /* yacc.c:1646 */ +#line 3415 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -#line 1189 "./util/configparser.y" /* yacc.c:1646 */ + case 267: +#line 1209 "./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) @@ -3383,11 +3423,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3387 "util/configparser.c" /* yacc.c:1646 */ +#line 3427 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -#line 1198 "./util/configparser.y" /* yacc.c:1646 */ + case 268: +#line 1218 "./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) @@ -3395,11 +3435,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3399 "util/configparser.c" /* yacc.c:1646 */ +#line 3439 "util/configparser.c" /* yacc.c:1646 */ break; - case 260: -#line 1207 "./util/configparser.y" /* yacc.c:1646 */ + case 269: +#line 1227 "./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) @@ -3408,22 +3448,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3412 "util/configparser.c" /* yacc.c:1646 */ +#line 3452 "util/configparser.c" /* yacc.c:1646 */ break; - case 261: -#line 1216 "./util/configparser.y" /* yacc.c:1646 */ + case 270: +#line 1236 "./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 3423 "util/configparser.c" /* yacc.c:1646 */ +#line 3463 "util/configparser.c" /* yacc.c:1646 */ break; - case 262: -#line 1224 "./util/configparser.y" /* yacc.c:1646 */ + case 271: +#line 1244 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3435,22 +3475,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3439 "util/configparser.c" /* yacc.c:1646 */ +#line 3479 "util/configparser.c" /* yacc.c:1646 */ break; - case 263: -#line 1237 "./util/configparser.y" /* yacc.c:1646 */ + case 272: +#line 1257 "./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 3450 "util/configparser.c" /* yacc.c:1646 */ +#line 3490 "util/configparser.c" /* yacc.c:1646 */ break; - case 264: -#line 1245 "./util/configparser.y" /* yacc.c:1646 */ + case 273: +#line 1265 "./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 && @@ -3477,21 +3517,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 3481 "util/configparser.c" /* yacc.c:1646 */ +#line 3521 "util/configparser.c" /* yacc.c:1646 */ break; - case 265: -#line 1273 "./util/configparser.y" /* yacc.c:1646 */ + case 274: +#line 1293 "./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 3491 "util/configparser.c" /* yacc.c:1646 */ +#line 3531 "util/configparser.c" /* yacc.c:1646 */ break; - case 266: -#line 1280 "./util/configparser.y" /* yacc.c:1646 */ + case 275: +#line 1300 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -3505,11 +3545,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 3509 "util/configparser.c" /* yacc.c:1646 */ +#line 3549 "util/configparser.c" /* yacc.c:1646 */ break; - case 267: -#line 1295 "./util/configparser.y" /* yacc.c:1646 */ + case 276: +#line 1315 "./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) @@ -3518,11 +3558,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3522 "util/configparser.c" /* yacc.c:1646 */ +#line 3562 "util/configparser.c" /* yacc.c:1646 */ break; - case 268: -#line 1305 "./util/configparser.y" /* yacc.c:1646 */ + case 277: +#line 1325 "./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) @@ -3531,31 +3571,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3535 "util/configparser.c" /* yacc.c:1646 */ +#line 3575 "util/configparser.c" /* yacc.c:1646 */ break; - case 269: -#line 1315 "./util/configparser.y" /* yacc.c:1646 */ + case 278: +#line 1335 "./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 3545 "util/configparser.c" /* yacc.c:1646 */ +#line 3585 "util/configparser.c" /* yacc.c:1646 */ break; - case 270: -#line 1322 "./util/configparser.y" /* yacc.c:1646 */ + case 279: +#line 1342 "./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 3555 "util/configparser.c" /* yacc.c:1646 */ +#line 3595 "util/configparser.c" /* yacc.c:1646 */ break; - case 271: -#line 1329 "./util/configparser.y" /* yacc.c:1646 */ + case 280: +#line 1349 "./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) @@ -3563,11 +3603,11 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3567 "util/configparser.c" /* yacc.c:1646 */ +#line 3607 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 1338 "./util/configparser.y" /* yacc.c:1646 */ + case 281: +#line 1358 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -3580,11 +3620,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3584 "util/configparser.c" /* yacc.c:1646 */ +#line 3624 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 1352 "./util/configparser.y" /* yacc.c:1646 */ + case 282: +#line 1372 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -3602,11 +3642,11 @@ yyreduce: } } } -#line 3606 "util/configparser.c" /* yacc.c:1646 */ +#line 3646 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 1371 "./util/configparser.y" /* yacc.c:1646 */ + case 283: +#line 1391 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -3624,11 +3664,11 @@ yyreduce: } } } -#line 3628 "util/configparser.c" /* yacc.c:1646 */ +#line 3668 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 1390 "./util/configparser.y" /* yacc.c:1646 */ + case 284: +#line 1410 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -3639,11 +3679,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3643 "util/configparser.c" /* yacc.c:1646 */ +#line 3683 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 1402 "./util/configparser.y" /* yacc.c:1646 */ + case 285: +#line 1422 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -3654,11 +3694,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3658 "util/configparser.c" /* yacc.c:1646 */ +#line 3698 "util/configparser.c" /* yacc.c:1646 */ break; - case 277: -#line 1414 "./util/configparser.y" /* yacc.c:1646 */ + case 286: +#line 1434 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -3669,11 +3709,25 @@ yyreduce: free((yyvsp[0].str)); } } -#line 3673 "util/configparser.c" /* yacc.c:1646 */ +#line 3713 "util/configparser.c" /* yacc.c:1646 */ break; - case 278: -#line 1426 "./util/configparser.y" /* yacc.c:1646 */ + case 287: +#line 1446 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); + if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, + (yyvsp[-1].str), (yyvsp[0].str))) { + yyerror("out of memory"); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); + } + } +#line 3727 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 288: +#line 1457 "./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) @@ -3681,22 +3735,22 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3685 "util/configparser.c" /* yacc.c:1646 */ +#line 3739 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 1435 "./util/configparser.y" /* yacc.c:1646 */ + case 289: +#line 1466 "./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 3696 "util/configparser.c" /* yacc.c:1646 */ +#line 3750 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 1443 "./util/configparser.y" /* yacc.c:1646 */ + case 290: +#line 1474 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3708,11 +3762,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3712 "util/configparser.c" /* yacc.c:1646 */ +#line 3766 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 1456 "./util/configparser.y" /* yacc.c:1646 */ + case 291: +#line 1487 "./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) { @@ -3724,11 +3778,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 3728 "util/configparser.c" /* yacc.c:1646 */ +#line 3782 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 1469 "./util/configparser.y" /* yacc.c:1646 */ + case 292: +#line 1500 "./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) { @@ -3740,11 +3794,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 3744 "util/configparser.c" /* yacc.c:1646 */ +#line 3798 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 1482 "./util/configparser.y" /* yacc.c:1646 */ + case 293: +#line 1513 "./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) @@ -3752,11 +3806,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3756 "util/configparser.c" /* yacc.c:1646 */ +#line 3810 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 1491 "./util/configparser.y" /* yacc.c:1646 */ + case 294: +#line 1522 "./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) @@ -3765,11 +3819,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3769 "util/configparser.c" /* yacc.c:1646 */ +#line 3823 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -#line 1501 "./util/configparser.y" /* yacc.c:1646 */ + case 295: +#line 1532 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -3778,31 +3832,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 3782 "util/configparser.c" /* yacc.c:1646 */ +#line 3836 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -#line 1511 "./util/configparser.y" /* yacc.c:1646 */ + case 296: +#line 1542 "./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 3792 "util/configparser.c" /* yacc.c:1646 */ +#line 3846 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -#line 1518 "./util/configparser.y" /* yacc.c:1646 */ + case 297: +#line 1549 "./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 3802 "util/configparser.c" /* yacc.c:1646 */ +#line 3856 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -#line 1525 "./util/configparser.y" /* yacc.c:1646 */ + case 298: +#line 1556 "./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) @@ -3810,11 +3864,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3814 "util/configparser.c" /* yacc.c:1646 */ +#line 3868 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -#line 1534 "./util/configparser.y" /* yacc.c:1646 */ + case 299: +#line 1565 "./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) @@ -3823,11 +3877,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3827 "util/configparser.c" /* yacc.c:1646 */ +#line 3881 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -#line 1544 "./util/configparser.y" /* yacc.c:1646 */ + case 300: +#line 1575 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -3836,31 +3890,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 3840 "util/configparser.c" /* yacc.c:1646 */ +#line 3894 "util/configparser.c" /* yacc.c:1646 */ break; - case 291: -#line 1554 "./util/configparser.y" /* yacc.c:1646 */ + case 301: +#line 1585 "./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 3850 "util/configparser.c" /* yacc.c:1646 */ +#line 3904 "util/configparser.c" /* yacc.c:1646 */ break; - case 292: -#line 1561 "./util/configparser.y" /* yacc.c:1646 */ + case 302: +#line 1592 "./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 3860 "util/configparser.c" /* yacc.c:1646 */ +#line 3914 "util/configparser.c" /* yacc.c:1646 */ break; - case 293: -#line 1568 "./util/configparser.y" /* yacc.c:1646 */ + case 303: +#line 1599 "./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) @@ -3868,19 +3922,88 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3872 "util/configparser.c" /* yacc.c:1646 */ +#line 3926 "util/configparser.c" /* yacc.c:1646 */ break; - case 294: -#line 1577 "./util/configparser.y" /* yacc.c:1646 */ - { - OUTYY(("\nP(remote-control:)\n")); + case 304: +#line 1608 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(name:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->views->name) + yyerror("view name override, there must be one " + "name for one view"); + free(cfg_parser->cfg->views->name); + cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 3880 "util/configparser.c" /* yacc.c:1646 */ +#line 3939 "util/configparser.c" /* yacc.c:1646 */ break; case 305: -#line 1588 "./util/configparser.y" /* yacc.c:1646 */ +#line 1618 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && + strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && + strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 + && strcmp((yyvsp[0].str), "typetransparent")!=0 + && strcmp((yyvsp[0].str), "always_transparent")!=0 + && strcmp((yyvsp[0].str), "always_refuse")!=0 + && strcmp((yyvsp[0].str), "always_nxdomain")!=0 + && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent, " + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain or nodefault"); + else if(strcmp((yyvsp[0].str), "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_nodefault, (yyvsp[-1].str))) + fatal_exit("out of memory adding local-zone"); + free((yyvsp[0].str)); + } else { + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->local_zones, + (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding local-zone"); + } + } +#line 3971 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 306: +#line 1647 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { + fatal_exit("out of memory adding local-data"); + free((yyvsp[0].str)); + } + } +#line 3983 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 307: +#line 1656 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3995 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 308: +#line 1665 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(remote-control:)\n")); + } +#line 4003 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 319: +#line 1676 "./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) @@ -3889,11 +4012,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3893 "util/configparser.c" /* yacc.c:1646 */ +#line 4016 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -#line 1598 "./util/configparser.y" /* yacc.c:1646 */ + case 320: +#line 1686 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3901,21 +4024,21 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3905 "util/configparser.c" /* yacc.c:1646 */ +#line 4028 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -#line 1607 "./util/configparser.y" /* yacc.c:1646 */ + case 321: +#line 1695 "./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 3915 "util/configparser.c" /* yacc.c:1646 */ +#line 4038 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -#line 1614 "./util/configparser.y" /* yacc.c:1646 */ + case 322: +#line 1702 "./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) @@ -3924,122 +4047,122 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3928 "util/configparser.c" /* yacc.c:1646 */ +#line 4051 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -#line 1624 "./util/configparser.y" /* yacc.c:1646 */ + case 323: +#line 1712 "./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 3938 "util/configparser.c" /* yacc.c:1646 */ +#line 4061 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -#line 1631 "./util/configparser.y" /* yacc.c:1646 */ + case 324: +#line 1719 "./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 3948 "util/configparser.c" /* yacc.c:1646 */ +#line 4071 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -#line 1638 "./util/configparser.y" /* yacc.c:1646 */ + case 325: +#line 1726 "./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 3958 "util/configparser.c" /* yacc.c:1646 */ +#line 4081 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -#line 1645 "./util/configparser.y" /* yacc.c:1646 */ + case 326: +#line 1733 "./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 3968 "util/configparser.c" /* yacc.c:1646 */ +#line 4091 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -#line 1652 "./util/configparser.y" /* yacc.c:1646 */ + case 327: +#line 1740 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 3976 "util/configparser.c" /* yacc.c:1646 */ +#line 4099 "util/configparser.c" /* yacc.c:1646 */ break; - case 328: -#line 1669 "./util/configparser.y" /* yacc.c:1646 */ + case 342: +#line 1757 "./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 3987 "util/configparser.c" /* yacc.c:1646 */ +#line 4110 "util/configparser.c" /* yacc.c:1646 */ break; - case 329: -#line 1677 "./util/configparser.y" /* yacc.c:1646 */ + case 343: +#line 1765 "./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 3997 "util/configparser.c" /* yacc.c:1646 */ +#line 4120 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1684 "./util/configparser.y" /* yacc.c:1646 */ + case 344: +#line 1772 "./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 4008 "util/configparser.c" /* yacc.c:1646 */ +#line 4131 "util/configparser.c" /* yacc.c:1646 */ break; - case 331: -#line 1692 "./util/configparser.y" /* yacc.c:1646 */ + case 345: +#line 1780 "./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 4019 "util/configparser.c" /* yacc.c:1646 */ +#line 4142 "util/configparser.c" /* yacc.c:1646 */ break; - case 332: -#line 1700 "./util/configparser.y" /* yacc.c:1646 */ + case 346: +#line 1788 "./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 4029 "util/configparser.c" /* yacc.c:1646 */ +#line 4152 "util/configparser.c" /* yacc.c:1646 */ break; - case 333: -#line 1707 "./util/configparser.y" /* yacc.c:1646 */ + case 347: +#line 1795 "./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 4039 "util/configparser.c" /* yacc.c:1646 */ +#line 4162 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1714 "./util/configparser.y" /* yacc.c:1646 */ + case 348: +#line 1802 "./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) @@ -4047,11 +4170,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4051 "util/configparser.c" /* yacc.c:1646 */ +#line 4174 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1723 "./util/configparser.y" /* yacc.c:1646 */ + case 349: +#line 1811 "./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) @@ -4059,11 +4182,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4063 "util/configparser.c" /* yacc.c:1646 */ +#line 4186 "util/configparser.c" /* yacc.c:1646 */ break; - case 336: -#line 1732 "./util/configparser.y" /* yacc.c:1646 */ + case 350: +#line 1820 "./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) @@ -4071,11 +4194,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4075 "util/configparser.c" /* yacc.c:1646 */ +#line 4198 "util/configparser.c" /* yacc.c:1646 */ break; - case 337: -#line 1741 "./util/configparser.y" /* yacc.c:1646 */ + case 351: +#line 1829 "./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) @@ -4083,11 +4206,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4087 "util/configparser.c" /* yacc.c:1646 */ +#line 4210 "util/configparser.c" /* yacc.c:1646 */ break; - case 338: -#line 1750 "./util/configparser.y" /* yacc.c:1646 */ + case 352: +#line 1838 "./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) @@ -4095,11 +4218,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4099 "util/configparser.c" /* yacc.c:1646 */ +#line 4222 "util/configparser.c" /* yacc.c:1646 */ break; - case 339: -#line 1759 "./util/configparser.y" /* yacc.c:1646 */ + case 353: +#line 1847 "./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) @@ -4107,29 +4230,29 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4111 "util/configparser.c" /* yacc.c:1646 */ +#line 4234 "util/configparser.c" /* yacc.c:1646 */ break; - case 340: -#line 1768 "./util/configparser.y" /* yacc.c:1646 */ + case 354: +#line 1856 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 4119 "util/configparser.c" /* yacc.c:1646 */ +#line 4242 "util/configparser.c" /* yacc.c:1646 */ break; - case 344: -#line 1777 "./util/configparser.y" /* yacc.c:1646 */ + case 358: +#line 1865 "./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 4129 "util/configparser.c" /* yacc.c:1646 */ +#line 4252 "util/configparser.c" /* yacc.c:1646 */ break; - case 345: -#line 1783 "./util/configparser.y" /* yacc.c:1646 */ + case 359: +#line 1871 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4138,11 +4261,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4142 "util/configparser.c" /* yacc.c:1646 */ +#line 4265 "util/configparser.c" /* yacc.c:1646 */ break; -#line 4146 "util/configparser.c" /* yacc.c:1646 */ +#line 4269 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4370,7 +4493,7 @@ yyreturn: #endif return yyresult; } -#line 1791 "./util/configparser.y" /* yacc.c:1906 */ +#line 1879 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index f7abdbab1..eeb39f60d 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -216,7 +216,10 @@ extern int yydebug; VAR_ACCESS_CONTROL_TAG = 426, VAR_LOCAL_ZONE_OVERRIDE = 427, VAR_ACCESS_CONTROL_TAG_ACTION = 428, - VAR_ACCESS_CONTROL_TAG_DATA = 429 + VAR_ACCESS_CONTROL_TAG_DATA = 429, + VAR_VIEW = 430, + VAR_ACCESS_CONTROL_VIEW = 431, + VAR_VIEW_FIRST = 432 }; #endif /* Tokens. */ @@ -392,20 +395,21 @@ extern int yydebug; #define VAR_LOCAL_ZONE_OVERRIDE 427 #define VAR_ACCESS_CONTROL_TAG_ACTION 428 #define VAR_ACCESS_CONTROL_TAG_DATA 429 +#define VAR_VIEW 430 +#define VAR_ACCESS_CONTROL_VIEW 431 +#define VAR_VIEW_FIRST 432 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - +typedef union YYSTYPE YYSTYPE; union YYSTYPE { #line 64 "./util/configparser.y" /* yacc.c:1909 */ char* str; -#line 406 "util/configparser.h" /* yacc.c:1909 */ +#line 412 "util/configparser.h" /* yacc.c:1909 */ }; - -typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif diff --git a/util/configparser.y b/util/configparser.y index 7240ee4bd..775057e54 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -128,12 +128,14 @@ extern struct config_parser_state* cfg_parser; %token VAR_QNAME_MINIMISATION VAR_IP_FREEBIND VAR_DEFINE_TAG VAR_LOCAL_ZONE_TAG %token VAR_ACCESS_CONTROL_TAG VAR_LOCAL_ZONE_OVERRIDE %token VAR_ACCESS_CONTROL_TAG_ACTION VAR_ACCESS_CONTROL_TAG_DATA +%token VAR_VIEW VAR_ACCESS_CONTROL_VIEW VAR_VIEW_FIRST %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; toplevelvar: serverstart contents_server | stubstart contents_stub | forwardstart contents_forward | pythonstart contents_py | - rcstart contents_rc | dtstart contents_dt + rcstart contents_rc | dtstart contents_dt | viewstart + contents_view ; /* server: declaration */ @@ -199,7 +201,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_ip_freebind | server_define_tag | server_local_zone_tag | server_disable_dnssec_lame_check | server_access_control_tag | server_local_zone_override | server_access_control_tag_action | - server_access_control_tag_data + server_access_control_tag_data | server_access_control_view ; stubstart: VAR_STUB_ZONE { @@ -233,6 +235,24 @@ contents_forward: contents_forward content_forward | ; content_forward: forward_name | forward_host | forward_addr | forward_first ; +viewstart: VAR_VIEW + { + struct config_view* s; + OUTYY(("\nP(view:)\n")); + s = (struct config_view*)calloc(1, sizeof(struct config_view)); + if(s) { + s->next = cfg_parser->cfg->views; + if(s->next && !s->next->name) + yyerror("view without name"); + cfg_parser->cfg->views = s; + } else + yyerror("out of memory"); + } + ; +contents_view: contents_view content_view + | ; +content_view: view_name | view_local_zone | view_local_data | view_first + ; server_num_threads: VAR_NUM_THREADS STRING_ARG { OUTYY(("P(server_num_threads:%s)\n", $2)); @@ -1422,6 +1442,17 @@ server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING } } ; +server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG + { + OUTYY(("P(server_access_control_view:%s %s)\n", $2, $3)); + if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, + $2, $3)) { + yyerror("out of memory"); + free($2); + free($3); + } + } + ; server_ratelimit: VAR_RATELIMIT STRING_ARG { OUTYY(("P(server_ratelimit:%s)\n", $2)); @@ -1573,6 +1604,63 @@ forward_first: VAR_FORWARD_FIRST STRING_ARG free($2); } ; +view_name: VAR_NAME STRING_ARG + { + OUTYY(("P(name:%s)\n", $2)); + if(cfg_parser->cfg->views->name) + yyerror("view name override, there must be one " + "name for one view"); + free(cfg_parser->cfg->views->name); + cfg_parser->cfg->views->name = $2; + } + ; +view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG + { + OUTYY(("P(view_local_zone:%s %s)\n", $2, $3)); + if(strcmp($3, "static")!=0 && strcmp($3, "deny")!=0 && + strcmp($3, "refuse")!=0 && strcmp($3, "redirect")!=0 && + strcmp($3, "transparent")!=0 && strcmp($3, "nodefault")!=0 + && strcmp($3, "typetransparent")!=0 + && strcmp($3, "always_transparent")!=0 + && strcmp($3, "always_refuse")!=0 + && strcmp($3, "always_nxdomain")!=0 + && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0) + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent, " + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain or nodefault"); + else if(strcmp($3, "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_nodefault, $2)) + fatal_exit("out of memory adding local-zone"); + free($3); + } else { + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->local_zones, + $2, $3)) + fatal_exit("out of memory adding local-zone"); + } + } + ; +view_local_data: VAR_LOCAL_DATA STRING_ARG + { + OUTYY(("P(view_local_data:%s)\n", $2)); + if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, $2)) { + fatal_exit("out of memory adding local-data"); + free($2); + } + } + ; +view_first: VAR_VIEW_FIRST STRING_ARG + { + OUTYY(("P(view-first:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->views->isfirst=(strcmp($2, "yes")==0); + free($2); + } + ; rcstart: VAR_REMOTE_CONTROL { OUTYY(("\nP(remote-control:)\n")); diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index 80a23f203..d16a0bb1f 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -51,6 +51,7 @@ #include "services/localzone.h" #include "services/cache/infra.h" #include "services/cache/rrset.h" +#include "services/view.h" #include "dns64/dns64.h" #include "iterator/iterator.h" #include "iterator/iter_fwd.h" @@ -203,6 +204,7 @@ fptr_whitelist_rbtree_cmp(int (*fptr) (const void *, const void *)) else if(fptr == &val_neg_zone_compare) return 1; else if(fptr == &probetree_cmp) return 1; else if(fptr == &replay_var_compare) return 1; + else if(fptr == &view_cmp) return 1; return 0; }