From b4a9031cdbb5503b61aea611af4b3196524c36b6 Mon Sep 17 00:00:00 2001 From: Philipp Serr Date: Fri, 27 Jan 2017 18:16:30 +0100 Subject: [PATCH 01/22] Add module_restart_next definition to swig file --- pythonmod/interface.i | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 5f2559bac..c76d017aa 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1128,6 +1128,7 @@ struct delegpt { %rename ("MODULE_STATE_INITIAL") "module_state_initial"; %rename ("MODULE_WAIT_REPLY") "module_wait_reply"; %rename ("MODULE_WAIT_MODULE") "module_wait_module"; +%rename ("MODULE_RESTART_NEXT") "module_restart_next"; %rename ("MODULE_WAIT_SUBQUERY") "module_wait_subquery"; %rename ("MODULE_ERROR") "module_error"; %rename ("MODULE_FINISHED") "module_finished"; @@ -1136,6 +1137,7 @@ enum module_ext_state { module_state_initial = 0, module_wait_reply, module_wait_module, + module_restart_next, module_wait_subquery, module_error, module_finished From 7cc4ff05ad7e4a324be5a9fd948ae5230f832934 Mon Sep 17 00:00:00 2001 From: Philipp Serr Date: Sat, 21 Jan 2017 15:47:54 +0100 Subject: [PATCH 02/22] Initialize per-query qdata and per-module mod_env The python module used to assign None to the per-query (qdata argument) and per-module (mod_env variable) data stores. Hence, there was no obvious way for python code to use these data stores. This commit initializes both data stores with a dict instance. --- pythonmod/pythonmod.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index a668ecc23..02908af56 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -317,8 +317,7 @@ int pythonmod_init(struct module_env* env, int id) /* Load file */ pe->module = PyImport_AddModule("__main__"); pe->dict = PyModule_GetDict(pe->module); - pe->data = Py_None; - Py_INCREF(pe->data); + pe->data = PyDict_New(); PyModule_AddObject(pe->module, "mod_env", pe->data); /* TODO: deallocation of pe->... if an error occurs */ @@ -485,8 +484,7 @@ void pythonmod_operate(struct module_qstate* qstate, enum module_ev event, pq = qstate->minfo[id] = malloc(sizeof(struct pythonmod_qstate)); /* Initialize per query data */ - pq->data = Py_None; - Py_INCREF(pq->data); + pq->data = PyDict_New(); } /* Call operate */ From b248654aabe5e03c9502ad2c8991514cbcd897d3 Mon Sep 17 00:00:00 2001 From: Philipp Serr Date: Sun, 22 Jan 2017 11:58:28 +0100 Subject: [PATCH 03/22] Support multiple python module instances This commit adds proper support for multiple instances of the python module: When more than one instance is added to the module list, the first instance loads the first script specified in the `python:` configuration section. The second instance loads the second script, and so on. When there are more module instances in the module list than there are scripts in the `python:` section, an error is raised during initialization and unbound won't start. When more scripts than module instances are provided, the surplus scripts are ignored. --- pythonmod/interface.i | 2 +- pythonmod/pythonmod.c | 79 ++++++++++++++++++++++++++++--------------- util/config_file.c | 30 ++++++++++++++-- util/config_file.h | 10 +++++- util/configparser.c | 4 +-- util/configparser.y | 4 +-- 6 files changed, 93 insertions(+), 36 deletions(-) diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 5f2559bac..465a9184d 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1026,7 +1026,7 @@ struct config_file { char* control_key_file; char* control_cert_file; int do_daemonize; - char* python_script; + struct config_strlist* python_script; }; /* ************************************************************************************ * diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index a668ecc23..a098c326e 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -64,6 +64,15 @@ typedef struct PyThreadState PyThreadState; typedef void* PyGILState_STATE; #endif +/** + * counter for python module instances + * incremented by pythonmod_init(...) + */ +int py_mod_count = 0; + +/** Python main thread */ +PyThreadState* mainthr; + /** * Global state for the module. */ @@ -72,8 +81,6 @@ struct pythonmod_env { /** Python script filename. */ const char* fname; - /** Python main thread */ - PyThreadState* mainthr; /** Python module. */ PyObject* module; @@ -242,11 +249,15 @@ log_py_err(void) int pythonmod_init(struct module_env* env, int id) { + int py_mod_idx = py_mod_count++; + /* Initialize module */ FILE* script_py = NULL; PyObject* py_init_arg, *res; PyGILState_STATE gil; - int init_standard = 1; + int init_standard = 1, i = 0; + + struct config_strlist* cfg_item = env->cfg->python_script; struct pythonmod_env* pe = (struct pythonmod_env*)calloc(1, sizeof(struct pythonmod_env)); if (!pe) @@ -258,14 +269,21 @@ int pythonmod_init(struct module_env* env, int id) env->modinfo[id] = (void*) pe; /* Initialize module */ - pe->fname = env->cfg->python_script; + pe->fname=NULL; i = 0; + while (cfg_item!=NULL) { + if (py_mod_idx==i++) { + pe->fname=cfg_item->str; + break; + } + cfg_item = cfg_item->next; + } if(pe->fname==NULL || pe->fname[0]==0) { - log_err("pythonmod: no script given."); + log_err("pythonmod[%d]: no script given.", py_mod_idx); return 0; } /* Initialize Python libraries */ - if (!Py_IsInitialized()) + if (py_mod_count==1 && !Py_IsInitialized()) { #if PY_MAJOR_VERSION >= 3 wchar_t progname[8]; @@ -281,29 +299,31 @@ int pythonmod_init(struct module_env* env, int id) Py_Initialize(); PyEval_InitThreads(); SWIG_init(); - pe->mainthr = PyEval_SaveThread(); + mainthr = PyEval_SaveThread(); } gil = PyGILState_Ensure(); - /* Initialize Python */ - PyRun_SimpleString("import sys \n"); - PyRun_SimpleString("sys.path.append('.') \n"); - if(env->cfg->directory && env->cfg->directory[0]) { - char wdir[1524]; - snprintf(wdir, sizeof(wdir), "sys.path.append('%s') \n", - env->cfg->directory); - PyRun_SimpleString(wdir); - } - PyRun_SimpleString("sys.path.append('"RUN_DIR"') \n"); - PyRun_SimpleString("sys.path.append('"SHARE_DIR"') \n"); - PyRun_SimpleString("import distutils.sysconfig \n"); - PyRun_SimpleString("sys.path.append(distutils.sysconfig.get_python_lib(1,0)) \n"); - if (PyRun_SimpleString("from unboundmodule import *\n") < 0) - { - log_err("pythonmod: cannot initialize core module: unboundmodule.py"); - PyGILState_Release(gil); - return 0; + if (py_mod_count==1) { + /* Initialize Python */ + PyRun_SimpleString("import sys \n"); + PyRun_SimpleString("sys.path.append('.') \n"); + if(env->cfg->directory && env->cfg->directory[0]) { + char wdir[1524]; + snprintf(wdir, sizeof(wdir), "sys.path.append('%s') \n", + env->cfg->directory); + PyRun_SimpleString(wdir); + } + PyRun_SimpleString("sys.path.append('"RUN_DIR"') \n"); + PyRun_SimpleString("sys.path.append('"SHARE_DIR"') \n"); + PyRun_SimpleString("import distutils.sysconfig \n"); + PyRun_SimpleString("sys.path.append(distutils.sysconfig.get_python_lib(1,0)) \n"); + if (PyRun_SimpleString("from unboundmodule import *\n") < 0) + { + log_err("pythonmod: cannot initialize core module: unboundmodule.py"); + PyGILState_Release(gil); + return 0; + } } /* Check Python file load */ @@ -341,6 +361,7 @@ int pythonmod_init(struct module_env* env, int id) (void)PyParser_SimpleParseFile(script_py, pe->fname, Py_file_input); log_py_err(); PyGILState_Release(gil); + fclose(script_py); return 0; } fclose(script_py); @@ -425,9 +446,11 @@ void pythonmod_deinit(struct module_env* env, int id) Py_XDECREF(pe->data); PyGILState_Release(gil); - PyEval_RestoreThread(pe->mainthr); - Py_Finalize(); - pe->mainthr = NULL; + if(--py_mod_count==0) { + PyEval_RestoreThread(mainthr); + Py_Finalize(); + mainthr = NULL; + } } pe->fname = NULL; free(pe); diff --git a/util/config_file.c b/util/config_file.c index 9b60254d7..8d6bdf5ea 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -602,7 +602,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("control-key-file:", control_key_file) else S_STR("control-cert-file:", control_cert_file) else S_STR("module-config:", module_conf) - else S_STR("python-script:", python_script) + else S_STRLIST("python-script:", python_script) else S_YNO("disable-dnssec-lame-check:", disable_dnssec_lame_check) #ifdef CLIENT_SUBNET /* Can't set max subnet prefix here, since that value is used when @@ -1054,7 +1054,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "unblock-lan-zones", unblock_lan_zones) else O_YNO(opt, "insecure-lan-zones", insecure_lan_zones) else O_DEC(opt, "max-udp-size", max_udp_size) - else O_STR(opt, "python-script", python_script) + else O_LST(opt, "python-script", python_script) else O_YNO(opt, "disable-dnssec-lame-check", disable_dnssec_lame_check) else O_DEC(opt, "ip-ratelimit", ip_ratelimit) else O_DEC(opt, "ratelimit", ratelimit) @@ -1420,6 +1420,7 @@ config_delete(struct config_file* cfg) free(cfg->dnstap_version); config_deldblstrlist(cfg->ratelimit_for_domain); config_deldblstrlist(cfg->ratelimit_below_domain); + config_delstrlist(cfg->python_script); #ifdef USE_IPSECMOD free(cfg->ipsecmod_hook); config_delstrlist(cfg->ipsecmod_whitelist); @@ -1630,6 +1631,31 @@ cfg_strlist_insert(struct config_strlist** head, char* item) return 1; } +int +cfg_strlist_append_ex(struct config_strlist** head, char* item) +{ + struct config_strlist *s; + if(!item || !head) + return 0; + s = (struct config_strlist*)calloc(1, sizeof(struct config_strlist)); + if(!s) + return 0; + s->str = item; + s->next = NULL; + + if (*head==NULL) { + *head = s; + } else { + struct config_strlist *last = *head; + while (last->next!=NULL) { + last = last->next; + } + last->next = s; + } + + return 1; +} + int cfg_str2list_insert(struct config_str2list** head, char* item, char* i2) { diff --git a/util/config_file.h b/util/config_file.h index 3cffdbff9..68d1c911c 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -433,7 +433,7 @@ struct config_file { char* control_cert_file; /** Python script file */ - char* python_script; + struct config_strlist* python_script; /** Use systemd socket activation. */ int use_systemd; @@ -820,6 +820,14 @@ char* config_collate_cat(struct config_strlist* list); */ int cfg_strlist_append(struct config_strlist_head* list, char* item); +/** + * Searches the end of a string list and appends the given text. + * @param head: pointer to strlist head variable. + * @param item: new item. malloced by caller. if NULL the insertion fails. + * @return true on success. + */ +int cfg_strlist_append_ex(struct config_strlist** head, char* item); + /** * Find string in strlist. * @param head: pointer to strlist head variable. diff --git a/util/configparser.c b/util/configparser.c index 9674aa283..2b5ed3f68 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -5716,8 +5716,8 @@ yyparse (void) #line 2721 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->python_script); - cfg_parser->cfg->python_script = (yyvsp[0].str); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) + yyerror("out of memory"); } #line 5723 "util/configparser.c" /* yacc.c:1648 */ break; diff --git a/util/configparser.y b/util/configparser.y index 5f52f4d77..9ca2c35ec 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -2720,8 +2720,8 @@ content_py: py_script py_script: VAR_PYTHON_SCRIPT STRING_ARG { OUTYY(("P(python-script:%s)\n", $2)); - free(cfg_parser->cfg->python_script); - cfg_parser->cfg->python_script = $2; + if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, $2)) + yyerror("out of memory"); } server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG { From bfae29866bed4e0162432758875a5ac72ffd535f Mon Sep 17 00:00:00 2001 From: Philipp Serr Date: Thu, 26 Jan 2017 21:24:29 +0100 Subject: [PATCH 04/22] Document how to configure multiple python modules --- doc/unbound.conf.5.in | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index cbb7b654b..d8a2a3513 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1752,7 +1752,8 @@ clause gives the settings for the \fIpython\fR(1) script module. This module acts like the iterator and validator modules do, on queries and answers. To enable the script module it has to be compiled into the daemon, and the word "python" has to be put in the \fBmodule\-config:\fR option -(usually first, or between the validator and iterator). +(usually first, or between the validator and iterator). Multiple instances of +the python module are supported by adding the word "python" more than once. .LP If the \fBchroot:\fR option is enabled, you should make sure Python's library directory structure is bind mounted in the new root environment, see @@ -1761,7 +1762,8 @@ absolute path relative to the new root, or as a relative path to the working directory. .TP .B python\-script: \fI\fR -The script file to load. +The script file to load. Repeat this option for every python module instance +added to the \fBmodule\-config:\fR option. .SS "DNS64 Module Options" .LP The dns64 module must be configured in the \fBmodule\-config:\fR "dns64 From 1a48bdebb553fe25823f796e0da457bd0d8dfcd3 Mon Sep 17 00:00:00 2001 From: Kevin Chu Date: Thu, 2 May 2019 19:43:30 +0800 Subject: [PATCH 05/22] Add support for ipset --- Makefile.in | 20 +- config.h.in | 3 + configure | 59 + configure.ac | 41 + ipset/ipset.c | 289 +++ ipset/ipset.h | 56 + services/modstack.c | 9 + smallapp/unbound-checkconf.c | 4 + util/config_file.c | 14 +- util/config_file.h | 6 + util/configlexer.c | 4489 +++++++++++++++++----------------- util/configlexer.lex | 3 + util/configparser.c | 2819 ++++++++++----------- util/configparser.h | 20 +- util/configparser.y | 43 +- util/fptr_wlist.c | 26 +- 16 files changed, 4275 insertions(+), 3626 deletions(-) create mode 100755 ipset/ipset.c create mode 100755 ipset/ipset.h diff --git a/Makefile.in b/Makefile.in index 03a63476a..e2f9ade5b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -176,11 +176,11 @@ DAEMON_OBJ=acl_list.lo cachedump.lo daemon.lo \ shm_main.lo remote.lo stats.lo unbound.lo \ worker.lo @WIN_DAEMON_OBJ@ DAEMON_OBJ_LINK=$(DAEMON_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) $(SLDNS_OBJ) \ -$(COMPAT_OBJ) @WIN_DAEMON_OBJ_LINK@ +$(COMPAT_OBJ) $(IPSET_OBJ) @WIN_DAEMON_OBJ_LINK@ CHECKCONF_SRC=smallapp/unbound-checkconf.c smallapp/worker_cb.c CHECKCONF_OBJ=unbound-checkconf.lo worker_cb.lo CHECKCONF_OBJ_LINK=$(CHECKCONF_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) $(SLDNS_OBJ) \ -$(COMPAT_OBJ) @WIN_CHECKCONF_OBJ_LINK@ +$(COMPAT_OBJ) $(IPSET_OBJ) @WIN_CHECKCONF_OBJ_LINK@ CONTROL_SRC=smallapp/unbound-control.c CONTROL_OBJ=unbound-control.lo CONTROL_OBJ_LINK=$(CONTROL_OBJ) worker_cb.lo $(COMMON_OBJ_ALL_SYMBOLS) \ @@ -229,10 +229,12 @@ DELAYER_SRC=testcode/delayer.c DELAYER_OBJ=delayer.lo DELAYER_OBJ_LINK=$(DELAYER_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \ $(SLDNS_OBJ) +IPSET_SRC=@IPSET_SRC@ +IPSET_OBJ=@IPSET_OBJ@ LIBUNBOUND_SRC=libunbound/context.c libunbound/libunbound.c \ libunbound/libworker.c LIBUNBOUND_OBJ=context.lo libunbound.lo libworker.lo ub_event_pluggable.lo -LIBUNBOUND_OBJ_LINK=$(LIBUNBOUND_OBJ) $(COMMON_OBJ_WITHOUT_UB_EVENT) $(SLDNS_OBJ) $(COMPAT_OBJ) +LIBUNBOUND_OBJ_LINK=$(LIBUNBOUND_OBJ) $(COMMON_OBJ_WITHOUT_UB_EVENT) $(SLDNS_OBJ) $(COMPAT_OBJ) $(IPSET_OBJ) # win apps or "" if not on windows WINAPPS=@WINAPPS@ @@ -256,15 +258,18 @@ ALL_SRC=$(COMMON_SRC) $(UNITTEST_SRC) $(DAEMON_SRC) \ $(MEMSTATS_SRC) $(CHECKCONF_SRC) $(LIBUNBOUND_SRC) $(HOST_SRC) \ $(ASYNCLOOK_SRC) $(STREAMTCP_SRC) $(PERF_SRC) $(DELAYER_SRC) \ $(CONTROL_SRC) $(UBANCHOR_SRC) $(PETAL_SRC) \ - $(PYTHONMOD_SRC) $(PYUNBOUND_SRC) $(WIN_DAEMON_THE_SRC)\ - $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) $(SLDNS_SRC) + $(PYTHONMOD_SRC) $(PYUNBOUND_SRC) $(WIN_DAEMON_THE_SRC) \ + $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) $(SLDNS_SRC) \ + $(IPSET_SRC) + ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(TESTBOUND_OBJ) $(LOCKVERIFY_OBJ) $(PKTVIEW_OBJ) \ $(MEMSTATS_OBJ) $(CHECKCONF_OBJ) $(LIBUNBOUND_OBJ) $(HOST_OBJ) \ $(ASYNCLOOK_OBJ) $(STREAMTCP_OBJ) $(PERF_OBJ) $(DELAYER_OBJ) \ $(CONTROL_OBJ) $(UBANCHOR_OBJ) $(PETAL_OBJ) \ $(COMPAT_OBJ) $(PYUNBOUND_OBJ) \ - $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ) + $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ) \ + $(IPSET_OBJ) COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ LINK=$(LIBTOOL) --tag=CC --mode=link $(CC) $(staticexe) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) @@ -1462,3 +1467,6 @@ sha512.lo sha512.o: $(srcdir)/compat/sha512.c config.h reallocarray.lo reallocarray.o: $(srcdir)/compat/reallocarray.c config.h isblank.lo isblank.o: $(srcdir)/compat/isblank.c config.h strsep.lo strsep.o: $(srcdir)/compat/strsep.c config.h + +ipset.lo ipset.o: $(srcdir)/ipset/ipset.c $(srcdir)/ipset/ipset.h config.h $(srcdir)/util/module.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/services/cache/dns.h diff --git a/config.h.in b/config.h.in index 74c14d161..a5230865b 100644 --- a/config.h.in +++ b/config.h.in @@ -775,6 +775,9 @@ /* Define to 1 to use ipsecmod support. */ #undef USE_IPSECMOD +/* Define to 1 to use ipset support */ +#undef USE_IPSET + /* Define if you want to use internal select based events */ #undef USE_MINI_EVENT diff --git a/configure b/configure index 777649c66..64aafead7 100755 --- a/configure +++ b/configure @@ -638,6 +638,8 @@ INSTALLTARGET ALLTARGET SOURCEFILE SOURCEDETERMINE +IPSET_OBJ +IPSET_SRC IPSECMOD_HEADER IPSECMOD_OBJ DNSCRYPT_OBJ @@ -878,6 +880,8 @@ enable_dnscrypt with_libsodium enable_cachedb enable_ipsecmod +enable_ipset +with_libmnl with_libunbound_only ' ac_precious_vars='build_alias @@ -1565,6 +1569,7 @@ Optional Features: storage --enable-ipsecmod Enable ipsecmod module that facilitates opportunistic IPsec + --enable-ipset enable ipset module Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1619,6 +1624,7 @@ Optional Packages: --with-protobuf-c=path Path where protobuf-c is installed, for dnstap --with-libfstrm=path Path where libfstrm is installed, for dnstap --with-libsodium=path Path where libsodium is installed, for dnscrypt + --with-libmnl=path specify explicit path for libmnl. --with-libunbound-only do not build daemon and tool programs Some influential environment variables: @@ -21025,6 +21031,59 @@ $as_echo "#define USE_IPSECMOD 1" >>confdefs.h ;; esac +# check for ipset if requested +# Check whether --enable-ipset was given. +if test "${enable_ipset+set}" = set; then : + enableval=$enable_ipset; +fi + +case "$enable_ipset" in + yes) + +$as_echo "#define USE_IPSET 1" >>confdefs.h + + IPSET_SRC="ipset/ipset.c" + + IPSET_OBJ="ipset.lo" + + + # mnl + +# Check whether --with-libmnl was given. +if test "${with_libmnl+set}" = set; then : + withval=$with_libmnl; +else + withval="yes" +fi + + found_libmnl="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libmnl" >&5 +$as_echo_n "checking for libmnl... " >&6; } + if test x_$withval = x_ -o x_$withval = x_yes; then + withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" + fi + for dir in $withval ; do + if test -f "$dir/include/libmnl/libmnl.h"; then + found_libmnl="yes" + if test "$dir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5 +$as_echo "found in $dir" >&6; } + LIBS="$LIBS -lmnl" + break; + fi + done + if test x_$found_libmnl != x_yes; then + as_fn_error $? "Could not find libmnl, libmnl.h" "$LINENO" 5 + fi + ;; + no|*) + # nothing + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${MAKE:-make} supports $< with implicit rule in scope" >&5 $as_echo_n "checking if ${MAKE:-make} supports $< with implicit rule in scope... " >&6; } # on openBSD, the implicit rule make $< work. diff --git a/configure.ac b/configure.ac index abbecf0ba..c334f54db 100644 --- a/configure.ac +++ b/configure.ac @@ -1586,6 +1586,47 @@ case "$enable_ipsecmod" in ;; esac +# check for ipset if requested +AC_ARG_ENABLE(ipset, AC_HELP_STRING([--enable-ipset], [enable ipset module])) +case "$enable_ipset" in + yes) + AC_DEFINE([USE_IPSET], [1], [Define to 1 to use ipset support]) + IPSET_SRC="ipset/ipset.c" + AC_SUBST(IPSET_SRC) + IPSET_OBJ="ipset.lo" + AC_SUBST(IPSET_OBJ) + + # mnl + AC_ARG_WITH(libmnl, AC_HELP_STRING([--with-libmnl=path], + [specify explicit path for libmnl.]), + [ ],[ withval="yes" ]) + found_libmnl="no" + AC_MSG_CHECKING(for libmnl) + if test x_$withval = x_ -o x_$withval = x_yes; then + withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" + fi + for dir in $withval ; do + if test -f "$dir/include/libmnl/libmnl.h"; then + found_libmnl="yes" + dnl assume /usr is in default path. + if test "$dir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + AC_MSG_RESULT(found in $dir) + LIBS="$LIBS -lmnl" + break; + fi + done + if test x_$found_libmnl != x_yes; then + AC_ERROR([Could not find libmnl, libmnl.h]) + fi + ;; + no|*) + # nothing + ;; +esac + AC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) # on openBSD, the implicit rule make $< work. # on Solaris, it does not work ($? is changed sources, $^ lists dependencies). diff --git a/ipset/ipset.c b/ipset/ipset.c new file mode 100755 index 000000000..957932693 --- /dev/null +++ b/ipset/ipset.c @@ -0,0 +1,289 @@ +#include "config.h" +#include "ipset/ipset.h" +#include "util/regional.h" +#include "util/config_file.h" +#include "services/cache/dns.h" +#include "sldns/parseutil.h" +#include "sldns/sbuffer.h" +#include "sldns/wire2str.h" + +#include +#include +#include + +#define BUFF_LEN 256 + +/** + * Return an error + * @param qstate: our query state + * @param id: module id + * @param rcode: error code (DNS errcode). + * @return: 0 for use by caller, to make notation easy, like: + * return error_response(..). + */ +static int error_response(struct module_qstate* qstate, int id, int rcode) +{ + verbose(VERB_QUERY, "return error response %s", + sldns_lookup_by_id(sldns_rcodes, rcode)? + sldns_lookup_by_id(sldns_rcodes, rcode)->name:"??"); + qstate->return_rcode = rcode; + qstate->return_msg = NULL; + qstate->ext_state[id] = module_finished; + return 0; +} + +static int add_to_ipset(struct mnl_socket *mnl, const char *setname, const void *ipaddr, int af) { + struct nlmsghdr *nlh; + struct nfgenmsg *nfg; + struct nlattr *nested[2]; + char buffer[BUFF_LEN]; + + if (strlen(setname) >= IPSET_MAXNAMELEN) { + errno = ENAMETOOLONG; + return -1; + } + if (af != AF_INET && af != AF_INET6) { + errno = EAFNOSUPPORT; + return -1; + } + + nlh = mnl_nlmsg_put_header(buffer); + nlh->nlmsg_type = IPSET_CMD_ADD | (NFNL_SUBSYS_IPSET << 8); + nlh->nlmsg_flags = NLM_F_REQUEST|NLM_F_ACK|NLM_F_EXCL; + + nfg = mnl_nlmsg_put_extra_header(nlh, sizeof(struct nfgenmsg)); + nfg->nfgen_family = af; + nfg->version = NFNETLINK_V0; + nfg->res_id = htons(0); + + mnl_attr_put_u8(nlh, IPSET_ATTR_PROTOCOL, IPSET_PROTOCOL); + mnl_attr_put(nlh, IPSET_ATTR_SETNAME, strlen(setname) + 1, setname); + nested[0] = mnl_attr_nest_start(nlh, IPSET_ATTR_DATA); + nested[1] = mnl_attr_nest_start(nlh, IPSET_ATTR_IP); + mnl_attr_put(nlh, (af == AF_INET ? IPSET_ATTR_IPADDR_IPV4 : IPSET_ATTR_IPADDR_IPV6) + | NLA_F_NET_BYTEORDER, (af == AF_INET ? sizeof(struct in_addr) : sizeof(struct in6_addr)), ipaddr); + mnl_attr_nest_end(nlh, nested[1]); + mnl_attr_nest_end(nlh, nested[0]); + + if (mnl_socket_sendto(mnl, nlh, nlh->nlmsg_len) < 0) { + return -1; + } + return 0; +} + +int ipset_update(struct dns_msg* return_msg, struct ipset_env *ie) { + int i, j; + int ret; + int af; + uint16_t rrtype; + size_t rr_len, rd_len; + struct ub_packed_rrset_key *rrset; + struct packed_rrset_data* d; + uint8_t *rr_data; + + const char *setname; + + struct mnl_socket *mnl; + + mnl = (struct mnl_socket *)ie->mnl; + if (mnl == NULL) { + return -1; + } + + for (i = 0; i < return_msg->rep->rrset_count; ++i) { + setname = NULL; + + rrset = return_msg->rep->rrsets[i]; + + if (rrset->rk.type == htons(LDNS_RR_TYPE_A)) { + af = AF_INET; + if ((ie->v4_enabled == 1)) { + setname = ie->name_v4; + } + } else { + af = AF_INET6; + if ((ie->v6_enabled == 1)) { + setname = ie->name_v6; + } + } + + if (setname != NULL) { + d = (struct packed_rrset_data*)rrset->entry.data; + for (j = 0; j < d->count + d->rrsig_count; j++) { + rr_len = d->rr_len[j]; + rr_data = d->rr_data[j]; + + rd_len = sldns_read_uint16(rr_data); + if (rr_len - 2 >= rd_len) { + ret = add_to_ipset(mnl, setname, rr_data + 2, af); + if (ret < 0) { + return ret; + } + } + } + } + } + + return 0; +} + +int ipset_init(struct module_env* env, int id) { + struct mnl_socket *mnl; + + struct ipset_env *ipset_env = (struct ipset_env *)calloc(1, + sizeof(struct ipset_env)); + if(!ipset_env) { + log_err("malloc failure"); + return 0; + } + env->modinfo[id] = (void*)ipset_env; + + ipset_env->name_v4 = env->cfg->ipset_name_v4; + ipset_env->name_v6 = env->cfg->ipset_name_v6; + + ipset_env->v4_enabled = (ipset_env->name_v4 == NULL) || (strlen(ipset_env->name_v4) == 0) ? 0 : 1; + ipset_env->v6_enabled = (ipset_env->name_v6 == NULL) || (strlen(ipset_env->name_v6) == 0) ? 0 : 1; + + if ((ipset_env->v4_enabled < 1) && (ipset_env->v6_enabled < 1)) { + log_err("ipset: set name no configuration?"); + return 0; + } + + mnl = mnl_socket_open(NETLINK_NETFILTER); + if (mnl <= 0) { + log_err("ipset: could not open netfilter."); + return 0; + } + + if (mnl_socket_bind(mnl, 0, MNL_SOCKET_AUTOPID) < 0) { + mnl_socket_close(mnl); + log_err("ipset: could not bind netfilter."); + return 0; + } + + ipset_env->mnl = mnl; + + return 1; +} + +void ipset_deinit(struct module_env *env, int id) { + struct mnl_socket *mnl; + + struct ipset_env* ipset_env; + if(!env || !env->modinfo[id]) + return; + ipset_env = (struct ipset_env*)env->modinfo[id]; + + mnl = (struct mnl_socket *)ipset_env->mnl; + if (mnl) { + mnl_socket_close(mnl); + ipset_env->mnl = NULL; + } + + free(ipset_env); + env->modinfo[id] = NULL; +} + +static int ipset_new(struct module_qstate* qstate, int id) { + struct ipset_qstate* iq = (struct ipset_qstate*)regional_alloc( + qstate->region, sizeof(struct ipset_qstate)); + qstate->minfo[id] = iq; + if(!iq) + return 0; + memset(iq, 0, sizeof(*iq)); + /* initialise it */ + /* TODO */ + + return 1; +} + +void ipset_operate(struct module_qstate *qstate, enum module_ev event, int id, + struct outbound_entry *outbound) { + struct ipset_env *ie = (struct ipset_env *)qstate->env->modinfo[id]; + struct ipset_qstate *iq = (struct ipset_qstate *)qstate->minfo[id]; + verbose(VERB_QUERY, "ipset[module %d] operate: extstate:%s event:%s", + id, strextstate(qstate->ext_state[id]), strmodulevent(event)); + if(iq) log_query_info(VERB_QUERY, "ipset operate: query", + &qstate->qinfo); + + /* perform ipset state machine */ + if((event == module_event_new || event == module_event_pass) && + iq == NULL) { + if(!ipset_new(qstate, id)) { + (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); + return; + } + iq = (struct ipset_qstate*)qstate->minfo[id]; + } + + if(iq && (event == module_event_pass || event == module_event_new)) { + qstate->ext_state[id] = module_wait_module; + return; + } + + if(iq && (event == module_event_moddone)) { + ipset_update(qstate->return_msg, ie); + qstate->ext_state[id] = module_finished; + return; + } + if(iq && outbound) { + /* ipset does not need to process responses at this time + * ignore it. + ipset_process_response(qstate, iq, ie, id, outbound, event); + */ + return; + } + if(event == module_event_error) { + verbose(VERB_ALGO, "got called with event error, giving up"); + (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); + return; + } + if(!iq && (event == module_event_moddone)) { + /* during priming, module done but we never started */ + qstate->ext_state[id] = module_finished; + return; + } + + log_err("bad event for ipset"); + (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); +} + +void ipset_inform_super(struct module_qstate* ATTR_UNUSED(qstate), + int ATTR_UNUSED(id), struct module_qstate* ATTR_UNUSED(super)) { + /* ipset does not use subordinate requests at this time */ + verbose(VERB_ALGO, "ipset inform_super was called"); +} + +void ipset_clear(struct module_qstate* qstate, int id) { + struct cachedb_qstate* iq; + if(!qstate) + return; + iq = (struct cachedb_qstate*)qstate->minfo[id]; + if(iq) { + /* free contents of iq */ + /* TODO */ + } + qstate->minfo[id] = NULL; +} + +size_t ipset_get_mem(struct module_env* env, int id) { + struct ipset_env *ie = (struct ipset_env *)env->modinfo[id]; + if (!ie) { + return 0; + } + return sizeof(*ie); +} + +/** + * The ipset function block + */ +static struct module_func_block ipset_block = { + "ipset", + &ipset_init, &ipset_deinit, &ipset_operate, + &ipset_inform_super, &ipset_clear, &ipset_get_mem +}; + +struct module_func_block * ipset_get_funcblock(void) { + return &ipset_block; +} + diff --git a/ipset/ipset.h b/ipset/ipset.h new file mode 100755 index 000000000..19a12e038 --- /dev/null +++ b/ipset/ipset.h @@ -0,0 +1,56 @@ +/** + * ipset.h + * + * Author: Kevin Chou + * Email: k9982874@gmail.com + */ +#ifndef IPSET_H +#define IPSET_H + +#include "util/module.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct ipset_env { + void* mnl; + + int v4_enabled; + int v6_enabled; + + const char *name_v4; + const char *name_v6; +}; + +struct ipset_qstate { + int dummy; +}; + +/** Init the ipset module */ +int ipset_init(struct module_env* env, int id); +/** Deinit the ipset module */ +void ipset_deinit(struct module_env* env, int id); +/** Operate on an event on a query (in qstate). */ +void ipset_operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* outbound); +/** Subordinate query done, inform this super request of its conclusion */ +void ipset_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super); +/** clear the ipset query-specific contents out of qstate */ +void ipset_clear(struct module_qstate* qstate, int id); +/** return memory estimate for ipset module */ +size_t ipset_get_mem(struct module_env* env, int id); + +/** + * Get the function block with pointers to the ipset functions + * @return the function block for "ipset". + */ +struct module_func_block* ipset_get_funcblock(void); + +#ifdef __cplusplus +} +#endif + +#endif /* IPSET_H */ + diff --git a/services/modstack.c b/services/modstack.c index 05b949d1e..68e592814 100644 --- a/services/modstack.c +++ b/services/modstack.c @@ -60,6 +60,9 @@ #ifdef CLIENT_SUBNET #include "edns-subnet/subnetmod.h" #endif +#ifdef USE_IPSET +#include "ipset/ipset.h" +#endif /** count number of modules (words) in the string */ static int @@ -145,6 +148,9 @@ module_list_avail(void) #endif #ifdef CLIENT_SUBNET "subnetcache", +#endif +#ifdef USE_IPSET + "ipset", #endif "respip", "validator", @@ -173,6 +179,9 @@ module_funcs_avail(void) #endif #ifdef CLIENT_SUBNET &subnetmod_get_funcblock, +#endif +#ifdef USE_IPSET + &ipset_get_funcblock, #endif &respip_get_funcblock, &val_get_funcblock, diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index eddd3e172..6b78216eb 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -573,6 +573,10 @@ morechecks(struct config_file* cfg) && strcmp(cfg->module_conf, "python ipsecmod validator iterator") != 0 && strcmp(cfg->module_conf, "ipsecmod python validator iterator") != 0 && strcmp(cfg->module_conf, "ipsecmod validator python iterator") != 0 +#endif +#ifdef USE_IPSET + && strcmp(cfg->module_conf, "validator ipset iterator") != 0 + && strcmp(cfg->module_conf, "ipset iterator") != 0 #endif ) { fatal_exit("module conf '%s' is not known to work", diff --git a/util/config_file.c b/util/config_file.c index 9b60254d7..205220eab 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -326,10 +326,14 @@ config_create(void) #ifdef USE_CACHEDB cfg->cachedb_backend = NULL; cfg->cachedb_secret = NULL; +#endif +#ifdef USE_IPSET + cfg->ipset_name_v4 = NULL; + cfg->ipset_name_v6 = NULL; #endif return cfg; error_exit: - config_delete(cfg); + config_delete(cfg); return NULL; } @@ -1091,6 +1095,10 @@ config_get_option(struct config_file* cfg, const char* opt, #ifdef USE_CACHEDB else O_STR(opt, "backend", cachedb_backend) else O_STR(opt, "secret-seed", cachedb_secret) +#endif +#ifdef USE_IPSET + else O_STR(opt, "name-v4", ipset_name_v4) + else O_STR(opt, "name-v6", ipset_name_v6) #endif /* not here: * outgoing-permit, outgoing-avoid - have list of ports @@ -1427,6 +1435,10 @@ config_delete(struct config_file* cfg) #ifdef USE_CACHEDB free(cfg->cachedb_backend); free(cfg->cachedb_secret); +#endif +#ifdef USE_IPSET + free(cfg->ipset_name_v4); + free(cfg->ipset_name_v6); #endif free(cfg); } diff --git a/util/config_file.h b/util/config_file.h index 3cffdbff9..033037463 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -574,6 +574,12 @@ struct config_file { /** timeout (in ms) for communication with the redis server */ int redis_timeout; #endif +#endif + + /* ipset module */ +#ifdef USE_IPSET + char* ipset_name_v4; + char* ipset_name_v6; #endif }; diff --git a/util/configlexer.c b/util/configlexer.c index 2d9be6217..72622a0c0 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 3 "" +#line 2 "" #define YY_INT_ALIGNED short int @@ -10,7 +10,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 1 +#define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -85,10 +85,16 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + #endif /* ! C99 */ #endif /* ! FLEXINT_H */ +/* begin standard C++ headers. */ + /* TODO: this is always defined, so inline it */ #define yyconst const @@ -101,32 +107,26 @@ typedef unsigned int flex_uint32_t; /* Returned upon end-of-file. */ #define YY_NULL 0 -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * - /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START - /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin ) - +#define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ @@ -163,7 +163,7 @@ extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) @@ -172,7 +172,7 @@ extern FILE *yyin, *yyout; do \ { \ /* Undo effects of setting up yytext. */ \ - yy_size_t yyless_macro_arg = (n); \ + int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ @@ -180,7 +180,6 @@ extern FILE *yyin, *yyout; YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) - #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -223,7 +222,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -262,7 +261,6 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) - /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ @@ -283,62 +281,56 @@ static int yy_start = 0; /* start state number */ */ static int yy_did_buffer_switch_on_eof; -void yyrestart (FILE *input_file ); -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); -void yy_delete_buffer (YY_BUFFER_STATE b ); -void yy_flush_buffer (YY_BUFFER_STATE b ); -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state (void ); - -static void yyensure_buffer_stack (void ); -static void yy_load_buffer_state (void ); -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) -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,int len ); +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); #define yy_new_buffer yy_create_buffer - #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } - #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } - #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ - -typedef unsigned char YY_CHAR; +typedef flex_uint8_t YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; - int yylineno = 1; extern char *yytext; @@ -347,10 +339,10 @@ extern char *yytext; #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 ); -static void yynoreturn yy_fatal_error (yyconst char* msg ); +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 ); +static void yynoreturn yy_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. @@ -362,9 +354,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 291 -#define YY_END_OF_BUFFER 292 +#define YY_NUM_RULES 294 +#define YY_END_OF_BUFFER 295 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,331 +363,332 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[2905] = +static const flex_int16_t yy_accept[2913] = { 0, - 1, 1, 273, 273, 277, 277, 281, 281, 285, 285, - 1, 1, 292, 289, 1, 271, 271, 290, 2, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 273, 274, 274, 275, 290, 277, 278, 278, - 279, 290, 284, 281, 282, 282, 283, 290, 285, 286, - 286, 287, 290, 288, 272, 2, 276, 290, 288, 289, - 0, 1, 2, 2, 2, 2, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 273, - 0, 277, 0, 284, 0, 281, 285, 0, 288, 0, - 2, 2, 288, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 288, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 114, - 289, 289, 289, 289, 289, 289, 289, 288, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 96, 289, 289, 289, 289, 289, 289, 8, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 119, 289, 288, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 288, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 54, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 214, 289, 14, 15, 289, 18, - 17, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 113, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 198, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 3, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 288, 289, 289, 289, 289, 289, 289, 289, 264, - 289, 289, 263, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 280, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 57, 289, 238, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 58, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 187, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 20, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 138, 289, 289, - 280, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 94, 289, 289, 289, 289, 289, 289, 289, 246, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 159, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 137, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 93, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 31, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 32, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 55, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 112, 289, 289, 289, 289, 289, - 111, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 56, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 160, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 45, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 229, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 49, 289, 50, 289, 289, 289, 289, 289, 97, 289, - 98, 289, 289, 289, 289, 95, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 7, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 207, 289, 289, 289, 289, 140, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 46, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 179, 289, 178, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 16, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 59, 289, 289, 289, 289, 289, 289, - 289, 289, 186, 289, 289, 289, 289, 289, 289, 100, - 289, 99, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 170, 289, 289, 289, 289, 289, 289, 289, - - 289, 120, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 78, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 82, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 53, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 173, 174, 289, 289, 289, 240, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 6, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 244, 289, 289, 289, 265, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 41, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 43, 289, 289, 289, 289, 289, 289, 289, 289, 166, - 289, 289, 289, 115, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 191, 289, 167, 289, 289, 289, - - 204, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 44, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 117, 105, 289, - 106, 289, 289, 289, 104, 289, 289, 289, 289, 289, - 289, 289, 289, 135, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 228, 289, 289, 289, 289, - 289, 289, 289, 289, 168, 289, 289, 289, 289, 289, - 171, 289, 177, 289, 289, 289, 289, 289, 203, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 92, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 51, 289, 289, 289, 25, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 19, - 289, 289, 289, 289, 289, 289, 26, 35, 289, 145, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 67, - 69, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 248, 289, 289, 289, 215, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 107, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 134, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 259, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 139, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 197, 289, 289, 289, - 289, 289, 289, 289, 289, 268, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 156, 289, 289, 289, 289, - 289, 289, 289, 289, 101, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 289, 289, 289, 151, 289, 161, 289, 289, 289, - 289, 289, 123, 289, 289, 289, 289, 289, 88, 289, - 289, 289, 289, 189, 289, 289, 289, 289, 289, 289, - 205, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 220, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 116, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 155, 289, 289, 289, 289, 289, - 70, 71, 289, 289, 289, 289, 289, 52, 289, 289, - 289, 289, 289, 77, 162, 289, 180, 289, 208, 289, - 289, 172, 241, 289, 289, 289, 289, 289, 63, 289, - - 164, 289, 289, 289, 289, 289, 9, 289, 289, 289, - 91, 289, 289, 289, 289, 233, 289, 289, 289, 188, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 154, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 141, 289, 247, 289, - 289, 289, 289, 219, 289, 289, 289, 289, 289, 289, - 289, 289, 199, 289, 289, 289, 289, 239, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 262, 289, 163, 289, 289, 289, 289, 289, - 289, 289, 62, 64, 289, 289, 289, 289, 289, 289, - 289, 90, 289, 289, 289, 289, 231, 289, 289, 289, - 243, 289, 289, 289, 289, 289, 289, 289, 193, 33, - 27, 29, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 34, 289, 28, 30, 289, 289, 289, 289, 289, - 289, 289, 289, 87, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - - 289, 195, 192, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 61, 289, 289, - 118, 289, 108, 289, 289, 289, 289, 289, 289, 289, - 289, 136, 13, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 257, 289, 260, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 12, 289, 289, 21, 289, - 289, 289, 237, 289, 289, 289, 245, 289, 65, 289, - 201, 289, 289, 194, 289, 289, 60, 289, 289, 289, - 289, 22, 289, 42, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 150, 149, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 196, 190, 289, - 206, 289, 289, 249, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 72, 289, - 289, 289, 232, 289, 289, 289, 289, 176, 289, 289, - 289, 289, 200, 289, 289, 289, 289, 289, 289, 289, - 289, 266, 267, 147, 66, 289, 289, 157, 289, 289, - 102, 103, 289, 289, 289, 289, 142, 289, 144, 289, - 181, 289, 289, 289, 289, 148, 289, 289, 209, 289, - 289, 289, 289, 289, 289, 289, 125, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 289, 289, 216, 289, - 289, 289, 23, 289, 242, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 182, 289, 289, 230, - 289, 261, 289, 175, 289, 289, 289, 289, 47, 289, - 289, 289, 289, 4, 289, 289, 124, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 212, 36, 37, 289, 289, 289, 289, - 289, 289, 289, 250, 289, 289, 289, 289, 289, 289, - 218, 289, 289, 289, 185, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 75, 289, 48, 236, 289, 213, - - 289, 289, 289, 289, 11, 289, 289, 289, 289, 289, - 289, 289, 183, 79, 289, 39, 289, 289, 289, 289, - 289, 289, 289, 289, 153, 289, 289, 289, 289, 289, - 127, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 217, 121, 289, 289, 109, 110, 289, 289, 289, 81, - 85, 80, 289, 73, 289, 289, 289, 289, 289, 10, - 289, 289, 289, 234, 289, 289, 270, 38, 289, 289, - 289, 289, 289, 152, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 86, 84, 289, 74, 258, 289, 289, 289, - - 289, 289, 289, 289, 169, 289, 289, 289, 184, 289, - 289, 289, 289, 289, 289, 289, 289, 143, 68, 289, - 289, 289, 289, 289, 251, 289, 289, 289, 289, 289, - 289, 289, 122, 289, 83, 128, 129, 132, 133, 130, - 131, 76, 289, 235, 289, 289, 146, 289, 289, 289, - 289, 289, 211, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 158, 40, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 89, 289, 210, 289, 227, 255, 289, 289, 289, 289, - - 289, 289, 289, 289, 289, 289, 5, 289, 202, 289, - 289, 256, 289, 289, 289, 289, 289, 289, 289, 289, - 24, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 126, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 165, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 252, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 269, 289, 289, 223, 289, 289, 289, 289, - 289, 253, 289, 289, 289, 289, 289, 289, 254, 289, - 289, 289, 221, 289, 224, 225, 289, 289, 289, 289, - - 289, 222, 226, 0 + 1, 1, 276, 276, 280, 280, 284, 284, 288, 288, + 1, 1, 295, 292, 1, 274, 274, 293, 2, 293, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 276, 277, 277, 278, 293, 280, 281, 281, + 282, 293, 287, 284, 285, 285, 286, 293, 288, 289, + 289, 290, 293, 291, 275, 2, 279, 293, 291, 292, + 0, 1, 2, 2, 2, 2, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 276, + 0, 280, 0, 287, 0, 284, 288, 0, 291, 0, + 2, 2, 291, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 291, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 114, + 292, 292, 292, 292, 292, 292, 292, 291, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 96, 292, 292, 292, 292, 292, 292, 8, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 119, 292, 291, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 269, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 291, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 54, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 214, 292, + 14, 15, 292, 18, 17, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 113, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 198, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 3, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 291, 292, 292, + 292, 292, 292, 292, 292, 264, 292, 292, 263, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 283, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 57, 292, 238, + 292, 292, 292, 292, 292, 292, 292, 292, 270, 271, + + 292, 292, 292, 292, 292, 58, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 187, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 20, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 138, 292, 292, 283, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 94, + + 292, 292, 292, 292, 292, 292, 292, 246, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 159, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 137, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 93, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 31, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 32, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 55, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 112, 292, 292, 292, 292, 292, 111, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 56, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 160, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 45, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 229, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 49, 292, + 50, 292, 292, 292, 292, 292, 97, 292, 98, 292, + + 292, 292, 292, 95, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 7, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 207, 292, 292, 292, 292, 140, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 46, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 179, + 292, 178, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 16, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 59, 292, 292, 292, 292, 292, 292, 292, 292, + 186, 292, 292, 292, 292, 292, 292, 100, 292, 99, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 170, 292, 292, 292, 292, 292, 292, 292, 292, 120, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 78, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 82, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 53, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 173, 174, 292, 292, 292, 240, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 6, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 244, 292, 292, 292, 265, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 41, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 43, 292, + 292, 292, 292, 292, 292, 292, 292, 166, 292, 292, + 292, 115, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 191, 292, 167, 292, 292, 292, 204, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 44, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 117, 105, 292, 106, 292, + 292, 292, 104, 292, 292, 292, 292, 292, 292, 292, + 292, 135, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 228, 292, 292, 292, 292, 292, 292, + 292, 292, 168, 292, 292, 292, 292, 292, 171, 292, + 177, 292, 292, 292, 292, 292, 203, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 92, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 51, 292, 292, 292, 25, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 19, 292, 292, + 292, 292, 292, 292, 26, 35, 292, 145, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 67, 69, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 248, 292, 292, 292, 215, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 107, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 134, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 259, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 139, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 197, 292, 292, 292, 292, 292, + 292, 292, 292, 268, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 156, 292, 292, 292, 292, 292, 292, + 292, 292, 101, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 151, 292, 161, 292, 292, 292, 292, 292, + 123, 292, 292, 292, 292, 292, 88, 292, 292, 292, + 292, 189, 292, 292, 292, 292, 292, 292, 205, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 220, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 116, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 155, 292, 292, 292, 292, 292, 70, 71, + 292, 292, 292, 292, 292, 52, 292, 292, 292, 292, + 292, 77, 162, 292, 180, 292, 208, 292, 292, 172, + + 241, 292, 292, 292, 292, 292, 63, 292, 164, 292, + 292, 292, 292, 292, 9, 292, 292, 292, 91, 292, + 292, 292, 292, 233, 292, 292, 292, 188, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 154, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 141, 292, 247, 292, 292, 292, + 292, 219, 292, 292, 292, 292, 292, 292, 292, 292, + + 199, 292, 292, 292, 292, 239, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 262, 292, 163, 292, 292, 292, 292, 292, 292, 292, + 62, 64, 292, 292, 292, 292, 292, 292, 292, 90, + 292, 292, 292, 292, 231, 292, 292, 292, 243, 292, + 292, 292, 292, 292, 292, 292, 193, 33, 27, 29, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 34, + 292, 28, 30, 292, 292, 292, 292, 292, 292, 292, + 292, 87, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 292, 292, 292, 292, 292, 195, + 192, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 61, 292, 292, 118, 292, + 108, 292, 292, 292, 292, 292, 292, 292, 292, 136, + 13, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 257, 292, 260, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 12, 292, 292, 21, 292, 292, 292, + 237, 292, 292, 292, 245, 292, 65, 292, 201, 292, + 292, 194, 292, 292, 60, 292, 292, 292, 292, 22, + 292, 42, 292, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 292, 292, 150, 149, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 196, 190, 292, 206, 292, + 292, 249, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 72, 292, 292, 292, + 232, 292, 292, 292, 292, 176, 292, 292, 292, 292, + 200, 292, 292, 292, 292, 292, 292, 292, 292, 266, + 267, 147, 66, 292, 292, 157, 292, 292, 102, 103, + 292, 292, 292, 292, 142, 292, 144, 292, 181, 292, + 292, 292, 292, 148, 292, 292, 209, 292, 292, 292, + + 292, 292, 292, 292, 125, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 216, 292, 292, 292, + 23, 292, 242, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 182, 292, 292, 230, 292, 261, + 292, 175, 292, 292, 292, 292, 47, 292, 292, 292, + 292, 4, 292, 292, 124, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 212, 36, 37, 292, 292, 292, 292, 292, 292, + 292, 250, 292, 292, 292, 292, 292, 292, 218, 292, + 292, 292, 185, 292, 292, 292, 292, 292, 292, 292, + + 292, 292, 75, 292, 48, 236, 292, 213, 292, 292, + 292, 292, 11, 292, 292, 292, 292, 292, 292, 292, + 183, 79, 292, 39, 292, 292, 292, 292, 292, 292, + 292, 292, 153, 292, 292, 292, 292, 292, 127, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 217, 121, + 292, 292, 109, 110, 292, 292, 292, 81, 85, 80, + 292, 73, 292, 292, 292, 292, 292, 10, 292, 292, + 292, 234, 292, 292, 273, 38, 292, 292, 292, 292, + 292, 152, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + + 86, 84, 292, 74, 258, 292, 292, 292, 292, 292, + 292, 292, 169, 292, 292, 292, 184, 292, 292, 292, + 292, 292, 292, 292, 292, 143, 68, 292, 292, 292, + 292, 292, 251, 292, 292, 292, 292, 292, 292, 292, + 122, 292, 83, 128, 129, 132, 133, 130, 131, 76, + 292, 235, 292, 292, 146, 292, 292, 292, 292, 292, + 211, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 158, 40, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 89, 292, + + 210, 292, 227, 255, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 5, 292, 202, 292, 292, 256, + 292, 292, 292, 292, 292, 292, 292, 292, 24, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 126, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 165, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 252, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 272, 292, 292, 223, 292, 292, 292, 292, 292, 253, + 292, 292, 292, 292, 292, 292, 254, 292, 292, 292, + + 221, 292, 224, 225, 292, 292, 292, 292, 292, 222, + 226, 0 } ; -static yyconst YY_CHAR yy_ec[256] = +static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, @@ -728,7 +720,7 @@ static yyconst YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst YY_CHAR yy_meta[41] = +static const YY_CHAR yy_meta[41] = { 0, 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, @@ -736,15 +728,15 @@ static yyconst YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_uint16_t yy_base[2919] = +static const flex_int16_t yy_base[2927] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2146, 1869, 81, 5674, 5674, 5674, 96, 52, + 90, 112, 2420, 2266, 81, 5685, 5685, 5685, 96, 52, 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, 76, 135, 141, 117, 148, 145, 160, 164, 185, 176, - 191, 152, 1830, 5674, 5674, 5674, 107, 1790, 5674, 5674, - 5674, 165, 1674, 1331, 5674, 5674, 5674, 211, 1221, 5674, - 5674, 5674, 180, 1211, 5674, 217, 5674, 221, 168, 962, + 191, 152, 2154, 5685, 5685, 5685, 107, 1925, 5685, 5685, + 5685, 165, 1534, 1291, 5685, 5685, 5685, 211, 1056, 5685, + 5685, 5685, 180, 911, 5685, 217, 5685, 221, 168, 758, 225, 189, 0, 232, 0, 0, 226, 189, 85, 221, 114, 227, 234, 156, 219, 235, 239, 236, 238, 132, 246, 242, 241, 252, 244, 247, 266, 243, 258, 273, @@ -752,8 +744,8 @@ static yyconst flex_uint16_t yy_base[2919] = 275, 187, 277, 278, 267, 274, 280, 283, 287, 289, 295, 297, 298, 299, 304, 305, 306, 311, 307, 315, 309, 313, 330, 318, 329, 325, 320, 335, 336, 339, - 340, 343, 345, 342, 346, 350, 349, 355, 357, 907, - 373, 754, 376, 671, 382, 632, 365, 386, 198, 390, + 340, 343, 345, 342, 346, 350, 349, 355, 357, 713, + 373, 703, 376, 671, 382, 632, 365, 386, 198, 390, 394, 0, 386, 374, 396, 388, 392, 393, 257, 391, 395, 397, 398, 400, 402, 415, 404, 413, 421, 423, 427, 424, 431, 434, 435, 436, 437, 419, 448, 446, @@ -769,624 +761,626 @@ static yyconst flex_uint16_t yy_base[2919] = 622, 628, 612, 626, 631, 618, 614, 633, 635, 637, 644, 640, 647, 643, 648, 649, 650, 652, 661, 656, 659, 658, 660, 662, 664, 665, 668, 666, 674, 669, - 678, 680, 688, 686, 685, 698, 690, 691, 695, 701, - - 693, 708, 702, 723, 712, 724, 713, 705, 694, 719, - 732, 729, 735, 737, 738, 739, 740, 741, 742, 750, - 745, 748, 755, 758, 762, 766, 746, 772, 747, 776, - 770, 774, 781, 803, 778, 768, 780, 782, 785, 5674, - 808, 786, 828, 792, 787, 815, 810, 812, 801, 817, - 825, 818, 829, 813, 821, 835, 851, 836, 838, 846, - 848, 852, 850, 860, 861, 853, 856, 864, 875, 867, - 870, 871, 882, 874, 872, 877, 881, 883, 887, 896, - 889, 897, 884, 898, 901, 904, 902, 908, 905, 909, - 912, 926, 906, 923, 928, 925, 931, 933, 935, 936, - - 937, 938, 946, 943, 942, 944, 949, 953, 955, 959, - 952, 945, 961, 966, 970, 967, 975, 977, 960, 983, - 5674, 985, 968, 980, 978, 990, 991, 5674, 993, 992, - 994, 1001, 996, 1004, 997, 1000, 1007, 1022, 999, 1006, - 1023, 1020, 1021, 783, 1024, 1025, 1027, 1028, 1030, 1031, - 1033, 1036, 1053, 1037, 1040, 1038, 1039, 1044, 1046, 1065, - 1048, 1051, 1062, 1066, 1077, 1064, 1081, 1068, 1076, 1085, - 1083, 1087, 1089, 1090, 1092, 1093, 1094, 1095, 1097, 1098, - 1099, 1103, 5674, 1101, 1111, 1119, 1118, 1105, 1121, 1122, - 1123, 1124, 1125, 1126, 1131, 1127, 1144, 1134, 1137, 1147, - - 1145, 1148, 1132, 1150, 1153, 1152, 1154, 1156, 1167, 1162, - 1160, 1169, 1177, 1179, 1181, 1182, 1164, 1183, 1184, 1174, - 1187, 1188, 1192, 1190, 1196, 1194, 1205, 1200, 1201, 1202, - 1203, 1212, 1209, 1208, 1217, 1210, 1226, 1216, 1230, 1231, - 1218, 1224, 1243, 1233, 1238, 1240, 1245, 1246, 1247, 1248, - 1251, 1253, 1254, 1256, 1255, 1258, 1259, 1262, 1263, 1265, - 1270, 1277, 1272, 1273, 1280, 1284, 1285, 1286, 1293, 1290, - 1294, 1296, 1292, 1307, 1291, 1298, 1302, 1314, 1305, 1309, - 1310, 1313, 1323, 1320, 1325, 1334, 1326, 1312, 1336, 1329, - 1339, 1335, 1340, 1342, 1343, 1344, 1351, 1346, 1347, 1352, - - 1354, 1355, 1349, 1359, 1357, 1376, 1361, 1365, 1363, 1366, - 1374, 1379, 1380, 1381, 1383, 1384, 1386, 1387, 1389, 1390, - 1394, 1392, 1407, 1395, 1391, 1404, 1408, 1413, 1414, 1419, - 1420, 1398, 1422, 1423, 1426, 1427, 1430, 1428, 1431, 1435, - 1437, 1438, 1441, 1443, 1444, 1446, 1449, 1453, 1454, 5674, - 1448, 1461, 1459, 1460, 1462, 1466, 1468, 1475, 1470, 1473, - 1471, 1472, 1476, 1483, 5674, 1484, 5674, 5674, 1477, 5674, - 5674, 1481, 1487, 1482, 1500, 1506, 1508, 1501, 1485, 1510, - 1511, 1519, 1532, 1515, 1514, 1522, 1516, 1518, 1526, 1523, - 1527, 1537, 1542, 1548, 1546, 1554, 1545, 1517, 1538, 1556, - - 1555, 1558, 1561, 1562, 1564, 1566, 1567, 1565, 1570, 1571, - 1578, 1576, 1574, 1590, 5674, 1586, 1594, 1598, 1595, 1602, - 1601, 1597, 1599, 1605, 1606, 1609, 1608, 1610, 1612, 1616, - 1618, 1623, 1619, 5674, 1621, 1622, 1627, 1628, 1633, 1634, - 1635, 1620, 1640, 1642, 1643, 1644, 1646, 1647, 5674, 1585, - 1652, 1648, 1654, 1655, 1660, 1661, 1656, 1663, 1664, 1665, - 1667, 1666, 1668, 1685, 1677, 1682, 1672, 1675, 1690, 1692, - 1693, 1700, 1695, 1701, 1697, 1703, 1702, 1704, 1705, 1707, - 1714, 1709, 1718, 1713, 1725, 1734, 1716, 1721, 1729, 1730, - 1731, 1736, 1738, 1739, 1743, 1744, 1751, 1746, 1748, 1750, - - 1753, 1755, 1756, 1759, 1764, 1760, 1767, 1769, 1762, 5674, - 1770, 1772, 5674, 1773, 1775, 1797, 1776, 1779, 1780, 1785, - 1778, 1788, 1789, 1791, 1807, 1801, 1817, 1809, 1810, 1819, - 1820, 1821, 1822, 1824, 1827, 1831, 1838, 1839, 1799, 1847, - 1846, 1828, 1829, 1843, 1862, 1844, 1849, 1851, 1852, 1857, - 1855, 1859, 1866, 1853, 1871, 1874, 1875, 5674, 1883, 1884, - 1878, 1885, 1892, 1889, 1891, 1893, 1895, 1896, 1905, 1900, - 1901, 1903, 1906, 1907, 1911, 1913, 1914, 1915, 1916, 1917, - 1933, 5674, 1919, 5674, 1918, 1928, 1930, 1929, 1936, 1937, - 1939, 1940, 1941, 1938, 1950, 1959, 1942, 5674, 1956, 1963, - - 1960, 1965, 1966, 1958, 1967, 1969, 1971, 1976, 1973, 1981, - 1974, 1979, 1983, 1984, 1987, 1990, 1991, 1992, 5674, 1999, - 1994, 2001, 2008, 1998, 2006, 2009, 2011, 2012, 2016, 2017, - 2018, 2019, 2020, 2029, 2030, 2021, 2032, 2035, 2031, 5674, - 2028, 2039, 2047, 2043, 2045, 2042, 2049, 2050, 2052, 2053, - 2054, 2057, 2060, 2061, 2069, 2070, 2062, 2066, 2074, 2067, - 2076, 2079, 2082, 2081, 2083, 2084, 2085, 5674, 2087, 2089, - 124, 2093, 2094, 2096, 2095, 2102, 2098, 2101, 2118, 2119, - 2115, 2114, 2117, 2123, 2124, 2125, 2126, 2127, 2128, 2129, - 2131, 5674, 2105, 2133, 2134, 2136, 2139, 2140, 2143, 5674, - - 2153, 2156, 2142, 2155, 2163, 2158, 2164, 2165, 2167, 2172, - 2168, 2171, 5674, 2175, 2178, 2180, 2181, 2182, 2184, 2189, - 2191, 2192, 2193, 2196, 2194, 2195, 2199, 2197, 2200, 2204, - 2213, 2203, 2205, 2210, 2214, 5674, 2226, 2215, 2224, 2217, - 2228, 2227, 2241, 2231, 2234, 2236, 2242, 2251, 2244, 2238, - 2252, 2253, 2258, 2262, 2261, 2267, 2268, 2265, 2269, 2275, - 2277, 2278, 2279, 2283, 2281, 2284, 2285, 2286, 2293, 2294, - 2291, 2302, 2300, 2307, 2305, 2310, 5674, 2311, 2312, 2295, - 2317, 2325, 2322, 2323, 2329, 2330, 2331, 2332, 2333, 2334, - 2335, 2338, 2336, 2337, 2342, 2349, 2347, 2353, 2357, 2358, - - 5674, 2359, 2361, 2363, 2364, 2370, 2365, 2372, 2374, 2376, - 2377, 2378, 2380, 2383, 2384, 2386, 2388, 2391, 2390, 2389, - 5674, 2394, 2395, 2396, 2404, 2405, 2411, 2412, 2414, 2418, - 2402, 2419, 2421, 2422, 5674, 2430, 2432, 2429, 2433, 2431, - 2436, 2437, 2439, 2441, 5674, 2442, 2443, 2450, 2451, 2446, - 5674, 2453, 2449, 2454, 2456, 2457, 2458, 2459, 2464, 2465, - 2467, 2470, 2473, 2477, 2478, 5674, 2479, 2487, 2488, 2480, - 2491, 2482, 2492, 2493, 2497, 2501, 2495, 2510, 2512, 2513, - 2514, 2494, 2517, 2518, 2519, 2521, 2522, 5674, 2515, 2525, - 2527, 2530, 2528, 2534, 2536, 2544, 2539, 2540, 2546, 2541, - - 2547, 2548, 2549, 2550, 2553, 2561, 2563, 2564, 2566, 2568, - 2569, 2570, 2577, 2582, 2583, 2585, 5674, 2588, 2589, 2591, - 2578, 2580, 2592, 2595, 2597, 2599, 2601, 2603, 2604, 2605, - 2612, 2616, 2613, 2620, 2617, 2622, 2614, 2625, 2626, 2627, - 2628, 2635, 2632, 2631, 2640, 2639, 2638, 2648, 2643, 2649, - 2650, 2651, 2652, 2653, 2656, 2654, 2660, 2661, 2665, 2667, - 2675, 2676, 2677, 2678, 2681, 5674, 2680, 2682, 2684, 2690, - 2693, 2694, 2696, 2698, 2703, 2688, 2695, 2705, 2715, 2711, - 5674, 2712, 5674, 2714, 2716, 2717, 2726, 2719, 5674, 2723, - 5674, 2724, 2729, 2731, 2732, 5674, 2733, 2734, 2737, 2740, - - 2738, 2742, 2743, 2744, 2745, 2750, 2752, 2756, 2755, 2757, - 2760, 2761, 2764, 2766, 2768, 2772, 2765, 2777, 2773, 2775, - 2783, 2782, 2784, 5674, 2791, 2788, 2793, 2792, 2794, 2796, - 2797, 2799, 2800, 2802, 2805, 2810, 2803, 2816, 2819, 2831, - 2809, 2832, 5674, 2813, 2834, 2817, 2835, 5674, 2837, 2828, - 2838, 2843, 2840, 2830, 2845, 2846, 2850, 2847, 2853, 2858, - 2862, 2863, 2857, 2865, 2855, 2869, 2877, 2874, 2881, 2883, - 2891, 2887, 2875, 2878, 2867, 2889, 2890, 2900, 2901, 2897, - 2904, 2899, 2903, 2906, 2907, 2910, 2911, 2913, 2915, 2916, - 2914, 2919, 2923, 2918, 2920, 2921, 2924, 5674, 2937, 2927, - - 2934, 2941, 2943, 2946, 2925, 2944, 2948, 2950, 2952, 2954, - 2951, 5674, 2953, 5674, 2955, 2961, 2970, 2972, 2974, 2975, - 2976, 2978, 2981, 2982, 2983, 2984, 2985, 2987, 2990, 2991, - 2996, 2997, 2998, 3012, 2995, 3000, 3002, 3007, 3009, 3014, - 5674, 3016, 3017, 3018, 3022, 3023, 3024, 3027, 3031, 3030, - 3033, 3034, 3045, 5674, 3036, 3053, 3037, 3057, 3064, 3046, - 3065, 3060, 5674, 3049, 3061, 3068, 3063, 3070, 3077, 5674, - 3072, 5674, 3067, 3074, 3081, 3078, 3082, 3083, 3084, 3085, - 3091, 3094, 3103, 3092, 3100, 3101, 3102, 3104, 3113, 3106, - 3108, 3109, 5674, 3111, 3114, 3118, 3125, 3126, 3132, 3129, - - 3116, 5674, 3133, 3136, 3123, 3140, 3141, 3144, 3145, 3146, - 3149, 3150, 3147, 3151, 3163, 3155, 3154, 3158, 3169, 3170, - 3175, 5674, 3176, 3156, 3183, 3179, 3180, 3182, 3185, 3186, - 3187, 3189, 3190, 3191, 3193, 3198, 3197, 3194, 3195, 3200, - 3201, 3214, 3211, 3203, 3215, 3219, 3218, 3221, 3225, 3226, - 3229, 3231, 3222, 3233, 3236, 3240, 3243, 3245, 3246, 3253, - 3248, 5674, 3255, 3252, 3260, 3256, 3259, 3258, 3265, 3269, - 3271, 3267, 3268, 3278, 3273, 5674, 3280, 3275, 3292, 3286, - 3276, 3301, 3296, 3282, 3277, 3300, 3303, 3306, 3304, 3308, - 3309, 3312, 3313, 5674, 5674, 3315, 3316, 3317, 5674, 3318, - - 3319, 3328, 3321, 3323, 3331, 3325, 3334, 3335, 3336, 3338, - 3339, 5674, 3342, 3351, 3348, 3349, 3358, 3359, 3363, 3360, - 3357, 3350, 3354, 3367, 3369, 3371, 3374, 3375, 3383, 3378, - 3380, 3381, 5674, 3382, 3384, 3390, 5674, 3387, 3388, 3391, - 3399, 3394, 3407, 3404, 3410, 3396, 3412, 3413, 3414, 3416, - 3418, 3427, 3422, 3423, 3425, 3429, 3431, 5674, 3433, 3434, - 3439, 3441, 3444, 3452, 3453, 3454, 3449, 3455, 3456, 3463, - 5674, 3458, 3461, 3462, 3464, 3472, 3469, 3473, 3471, 5674, - 3476, 3477, 3479, 5674, 3478, 3485, 3493, 3495, 3480, 3503, - 3498, 3482, 3499, 3501, 5674, 3502, 5674, 3506, 3508, 3511, - - 5674, 3513, 3514, 3516, 3518, 3515, 3522, 3523, 3530, 3519, - 3531, 3532, 3533, 3534, 3536, 3543, 3535, 5674, 3544, 3542, - 3546, 3547, 3553, 3551, 3554, 3559, 3557, 5674, 5674, 3566, - 5674, 3558, 3567, 3568, 5674, 3571, 3573, 3578, 3574, 3576, - 3579, 3589, 3582, 5674, 3585, 3580, 3593, 3595, 3596, 3597, - 3598, 3599, 3601, 3603, 3602, 5674, 3605, 3607, 3613, 3606, - 3614, 3620, 3626, 3615, 5674, 3628, 3630, 3622, 3636, 3637, - 5674, 3629, 5674, 3639, 3642, 3643, 3645, 3646, 5674, 3648, - 3649, 3653, 3654, 3656, 3658, 3659, 3662, 3666, 3668, 3675, - 3671, 3670, 3673, 5674, 3672, 3678, 3686, 3689, 3679, 3677, - - 3693, 3695, 3696, 3699, 3702, 3704, 3705, 3708, 3703, 3710, - 3711, 3714, 3724, 3717, 3720, 5674, 3721, 3725, 3729, 5674, - 3727, 3728, 3736, 3738, 3731, 3739, 3742, 3741, 3744, 5674, - 3750, 3751, 3746, 3747, 3756, 3760, 5674, 5674, 3764, 5674, - 3765, 3753, 3767, 3754, 3743, 3775, 3774, 3777, 3779, 3780, - 3781, 3787, 3788, 3795, 3796, 3797, 3800, 3674, 3793, 5674, - 5674, 3805, 3806, 3802, 3809, 3814, 3798, 3812, 3822, 3818, - 3819, 3825, 3826, 3833, 5674, 3834, 3817, 3835, 5674, 3828, - 3836, 3829, 3840, 3842, 3843, 3844, 3846, 3850, 3848, 3851, - 3849, 3857, 3858, 3859, 3865, 3862, 3867, 5674, 3868, 3870, - - 3871, 3872, 3873, 3874, 3879, 3882, 3881, 5674, 3883, 3885, - 3888, 3886, 3887, 3892, 3903, 3907, 3909, 3896, 3910, 3912, - 3915, 3917, 3914, 5674, 3920, 3918, 3921, 3922, 3929, 3931, - 3926, 3933, 3935, 3937, 3939, 3942, 3944, 3949, 3946, 3950, - 3951, 3952, 5674, 3956, 3958, 3955, 3963, 3964, 3966, 3967, - 3968, 3976, 3973, 3978, 3977, 3980, 5674, 3981, 3983, 3985, - 3986, 3988, 3989, 3994, 3995, 5674, 3998, 3991, 4005, 3999, - 4002, 4003, 4007, 4015, 4014, 5674, 4018, 4019, 4020, 4021, - 4022, 4023, 4026, 4027, 5674, 4032, 4033, 4036, 4045, 4029, - 4047, 4043, 4049, 4040, 4042, 4056, 4052, 4057, 4058, 4060, - - 4062, 4070, 4074, 4071, 5674, 4063, 5674, 4072, 4077, 4079, - 4084, 4080, 5674, 4082, 4087, 4089, 4086, 4090, 5674, 4092, - 4091, 4094, 4096, 5674, 4110, 4106, 4095, 4105, 4119, 4120, - 5674, 4123, 4124, 4125, 4132, 4134, 4136, 4129, 4137, 4133, - 4139, 4097, 4140, 5674, 4142, 4144, 4149, 4150, 4151, 4152, - 4154, 4157, 4161, 5674, 4159, 4162, 4163, 4165, 4166, 4167, - 4168, 4175, 4171, 4176, 5674, 4180, 4181, 4184, 4185, 4112, - 5674, 5674, 4188, 4189, 4192, 4191, 4197, 5674, 4199, 4206, - 4201, 4205, 4207, 5674, 5674, 4209, 5674, 4210, 5674, 4211, - 4214, 5674, 5674, 4215, 4212, 4218, 4219, 4222, 5674, 4227, - - 5674, 4235, 4231, 4233, 4234, 4236, 5674, 4239, 4240, 4243, - 5674, 4237, 4250, 4245, 4247, 5674, 4254, 4248, 4251, 5674, - 4259, 4265, 4261, 4268, 4255, 4270, 4271, 4272, 4274, 4276, - 4278, 4281, 4283, 4286, 4287, 4288, 4289, 4294, 4291, 4296, - 4297, 4299, 4301, 4302, 4307, 4310, 4311, 4304, 4312, 4313, - 4314, 4318, 4320, 4324, 4327, 4328, 4329, 4330, 4332, 4333, - 4335, 4338, 4342, 4331, 4341, 5674, 4336, 4343, 4347, 4358, - 4348, 4359, 4363, 4353, 4367, 4371, 5674, 4373, 5674, 4375, - 4360, 4369, 4377, 5674, 4379, 4382, 4381, 4384, 4383, 4385, - 4388, 4386, 5674, 4390, 4391, 4393, 4395, 5674, 4398, 4409, - - 4397, 4401, 4410, 4411, 4412, 4414, 4418, 4416, 4421, 4423, - 4431, 4424, 4428, 4427, 4433, 4429, 4436, 4439, 4445, 4441, - 4448, 4452, 5674, 4453, 5674, 4454, 4455, 4457, 4458, 4459, - 4460, 4462, 5674, 5674, 4465, 4467, 4476, 4468, 4461, 4487, - 4473, 5674, 4482, 4484, 4490, 4491, 5674, 4492, 4493, 4495, - 5674, 4496, 4499, 4500, 4502, 4466, 4503, 4506, 5674, 5674, - 5674, 5674, 4509, 4507, 4517, 4511, 4514, 4521, 4522, 4526, - 4518, 5674, 4535, 5674, 5674, 4523, 4532, 4536, 4538, 4539, - 4540, 4542, 4541, 5674, 4545, 4548, 4552, 4546, 4555, 4563, - 4558, 4564, 4556, 4566, 4573, 4570, 4571, 4568, 4576, 4578, - - 4580, 5674, 5674, 4582, 4586, 4587, 4594, 4591, 4592, 4604, - 4599, 4600, 4601, 4602, 4606, 4607, 4608, 5674, 4611, 4615, - 5674, 4609, 5674, 4619, 4622, 4613, 4623, 4625, 4626, 4628, - 4630, 5674, 5674, 4632, 4633, 4637, 4641, 4638, 4643, 4644, - 4646, 4642, 5674, 4647, 5674, 4648, 4650, 4664, 4649, 4666, - 4671, 4673, 4670, 4672, 4676, 5674, 4675, 4677, 5674, 4678, - 4679, 4683, 5674, 4685, 4688, 4692, 5674, 4695, 5674, 4697, - 5674, 4689, 4705, 5674, 4700, 4701, 5674, 4707, 4711, 4655, - 4703, 5674, 4708, 5674, 4712, 4714, 4717, 4722, 4715, 4724, - 4725, 4719, 4727, 4734, 4736, 4729, 5674, 5674, 4745, 4731, - - 4740, 4742, 4743, 4752, 4747, 4751, 4757, 5674, 5674, 4748, - 5674, 4750, 4761, 5674, 4759, 4763, 4765, 4768, 4767, 4769, - 4774, 4771, 4775, 4778, 4793, 4776, 4780, 4790, 4796, 4798, - 4800, 4802, 4803, 4804, 4781, 4805, 4806, 4809, 5674, 4811, - 4812, 4813, 5674, 4817, 4820, 4822, 4823, 5674, 4833, 4825, - 4830, 4835, 5674, 4819, 4841, 4838, 4836, 4843, 4852, 4847, - 4848, 5674, 5674, 5674, 5674, 4850, 4853, 5674, 4854, 4855, - 5674, 5674, 4856, 4859, 4862, 4870, 5674, 4861, 5674, 4865, - 5674, 4869, 4872, 4875, 4878, 5674, 4879, 4888, 5674, 4891, - 4894, 4896, 4897, 4880, 4866, 4898, 5674, 4905, 4902, 4904, - - 4911, 4883, 4908, 4912, 4913, 4920, 4915, 4919, 5674, 4916, - 4921, 4922, 5674, 4924, 5674, 4925, 4926, 4928, 4934, 4930, - 4933, 4937, 4944, 4927, 4948, 4941, 5674, 4951, 4955, 5674, - 4956, 5674, 4958, 5674, 4959, 4962, 4963, 4961, 5674, 4965, - 4967, 4968, 4969, 5674, 4970, 4972, 5674, 4976, 4973, 4983, - 4985, 4974, 4990, 4992, 4993, 4980, 5004, 4996, 4999, 4997, - 5006, 5007, 5012, 5674, 5674, 5674, 5008, 5001, 5022, 5019, - 5023, 5030, 5014, 5674, 5028, 5029, 5025, 5037, 5035, 5039, - 5674, 5041, 5027, 5036, 5674, 5043, 5048, 5049, 5050, 5051, - 5058, 5060, 5062, 5063, 5674, 5066, 5674, 5674, 5055, 5674, - - 5067, 5069, 5070, 5071, 5674, 5076, 5073, 5077, 5079, 5081, - 5082, 5078, 5674, 5674, 5085, 5674, 5094, 5090, 5086, 5102, - 5098, 5099, 5104, 5106, 5674, 5105, 5108, 5109, 5112, 5113, - 5674, 5115, 5116, 5117, 5118, 5121, 5120, 5126, 5127, 5129, - 5674, 5674, 5122, 5132, 5674, 5674, 5131, 5141, 5146, 5674, - 5674, 5674, 5152, 5674, 5154, 5158, 5162, 5166, 5157, 5674, - 5168, 5147, 5169, 5674, 5170, 5172, 5674, 5674, 5149, 5173, - 5177, 5176, 5178, 5674, 5179, 5182, 5186, 5189, 5195, 5184, - 5196, 5198, 5206, 5208, 5190, 5203, 5192, 5204, 5211, 5212, - 5220, 5217, 5674, 5674, 5224, 5674, 5674, 5226, 5228, 5230, - - 5233, 5235, 5237, 5239, 5674, 5240, 5242, 5243, 5674, 5245, - 5247, 5244, 5248, 5250, 5251, 5253, 5255, 5674, 5674, 5256, - 5257, 5258, 5265, 5267, 5674, 5269, 5276, 5273, 5275, 5271, - 5277, 5278, 5674, 5281, 5674, 5674, 5674, 5674, 5674, 5674, - 5674, 5674, 5279, 5674, 5289, 5292, 5674, 5283, 5293, 5297, - 5298, 5286, 5674, 5299, 5303, 5304, 5305, 5308, 5310, 5312, - 5313, 5315, 5319, 5316, 5321, 5317, 5320, 5674, 5674, 5328, - 5324, 5327, 5330, 5346, 5347, 5350, 5352, 5334, 5337, 5355, - 5354, 5356, 5343, 5360, 5369, 5362, 5364, 5366, 5367, 5371, - 5674, 5372, 5674, 5373, 5674, 5674, 5378, 5379, 5374, 5381, - - 5389, 5394, 5385, 5390, 5392, 5396, 5674, 5393, 5674, 5398, - 5397, 5674, 5402, 5404, 5405, 5406, 5407, 5408, 5410, 5416, - 5674, 5414, 5417, 5426, 5418, 5434, 5429, 5433, 5435, 5437, - 5431, 5445, 5441, 5444, 5674, 5447, 5448, 5214, 5449, 5452, - 5459, 5454, 5456, 5457, 5674, 5461, 5463, 5465, 5455, 5462, - 5464, 5478, 5480, 5476, 5674, 5466, 5482, 5484, 5486, 5490, - 5488, 5494, 5495, 5497, 5499, 5329, 5506, 5500, 5502, 5498, - 5508, 5510, 5674, 5512, 5515, 5674, 5516, 5518, 5519, 5520, - 5524, 5674, 5527, 5522, 5528, 5530, 5533, 5535, 5674, 5537, - 5544, 5545, 5674, 5546, 5674, 5674, 5548, 5540, 5549, 5555, - - 5557, 5674, 5674, 5674, 5582, 5589, 5596, 5603, 5610, 88, - 5617, 5624, 5631, 5638, 5645, 5652, 5659, 5666 + 678, 680, 688, 686, 685, 699, 691, 694, 690, 701, + + 693, 702, 709, 723, 730, 707, 714, 705, 727, 728, + 733, 735, 738, 741, 742, 743, 744, 745, 746, 754, + 749, 752, 759, 762, 766, 770, 750, 776, 751, 780, + 774, 778, 785, 807, 782, 772, 784, 786, 789, 5685, + 812, 790, 832, 796, 791, 819, 814, 816, 805, 821, + 829, 822, 833, 817, 825, 839, 855, 840, 842, 850, + 852, 856, 854, 864, 865, 857, 860, 868, 879, 871, + 874, 875, 886, 878, 876, 881, 885, 887, 891, 900, + 893, 901, 888, 902, 905, 908, 906, 912, 909, 913, + 916, 930, 910, 927, 932, 929, 935, 937, 939, 941, + + 942, 943, 944, 954, 946, 949, 951, 953, 957, 959, + 961, 963, 966, 965, 967, 971, 969, 978, 980, 974, + 986, 787, 5685, 988, 976, 982, 991, 992, 993, 5685, + 996, 998, 994, 1007, 1002, 1009, 999, 1006, 1013, 1023, + 1010, 1019, 1031, 1015, 1027, 1026, 1033, 1034, 1035, 1028, + 1036, 1037, 1039, 1042, 1059, 1044, 1046, 1047, 1050, 1052, + 1062, 1071, 1057, 1077, 1070, 1074, 1087, 1084, 1088, 1089, + 1090, 1093, 1095, 1096, 1098, 1099, 1101, 1102, 1103, 1104, + 1105, 1107, 1108, 1118, 5685, 1106, 1127, 1128, 1117, 1119, + 1130, 1132, 1133, 1045, 1135, 1137, 1136, 1143, 1141, 1153, + + 1142, 1158, 1144, 1157, 1145, 1155, 1161, 1162, 1163, 1164, + 1174, 1171, 1176, 1178, 1187, 1186, 1189, 1196, 1183, 1191, + 1192, 1193, 1195, 1198, 1200, 1199, 1202, 1206, 1213, 1211, + 1208, 1209, 1216, 1223, 1219, 1218, 1225, 1220, 1229, 1227, + 1234, 1235, 1241, 1231, 5685, 1248, 1243, 1244, 1249, 1251, + 1254, 1258, 1250, 1259, 1260, 1261, 1264, 1262, 1271, 1272, + 1265, 1273, 1276, 1268, 1292, 1287, 1288, 1297, 1296, 1278, + 1290, 1298, 1306, 1302, 1309, 1301, 1305, 1317, 1313, 1314, + 1315, 1324, 1319, 1320, 1323, 1322, 1336, 1321, 1332, 1345, + 1341, 1331, 1167, 1343, 1346, 1347, 1349, 1350, 1351, 1352, + + 1359, 1354, 1355, 1360, 1361, 1363, 1366, 1357, 1371, 1379, + 1374, 1377, 1378, 1380, 1383, 1382, 1390, 1384, 1391, 1392, + 1393, 1394, 1401, 1396, 1403, 1398, 1408, 1404, 1416, 1417, + 1418, 1419, 1421, 1422, 1426, 1423, 1429, 1433, 1432, 1434, + 1437, 1439, 1445, 1447, 1438, 1450, 1440, 1453, 1454, 1457, + 1460, 1463, 1464, 5685, 1458, 1471, 1466, 1468, 1470, 1474, + 1476, 1484, 1479, 1481, 1480, 1483, 1485, 1491, 5685, 1489, + 5685, 5685, 1490, 5685, 5685, 1492, 1506, 1493, 1511, 1516, + 1518, 1514, 1502, 1521, 1522, 1529, 1543, 1526, 1527, 1528, + 1524, 1530, 1537, 1532, 1540, 1538, 1551, 1554, 1557, 1558, + + 1495, 1556, 1564, 1565, 1566, 1570, 1567, 1571, 1573, 1576, + 1577, 1574, 1579, 1580, 1587, 1593, 1585, 1600, 5685, 1596, + 1603, 1610, 1606, 1613, 1605, 1609, 1612, 1617, 1619, 1614, + 1621, 1623, 1624, 1625, 1627, 1629, 1632, 1636, 1633, 5685, + 1634, 1637, 1642, 1641, 1645, 1649, 1651, 1635, 1655, 1653, + 1657, 1658, 1659, 1661, 5685, 1669, 1663, 1666, 1670, 1673, + 1677, 1678, 1674, 1679, 1680, 1681, 1682, 1684, 1688, 1691, + 1692, 1693, 1690, 1700, 1706, 1703, 1708, 1711, 1695, 1716, + 1718, 1719, 1720, 1721, 1722, 1724, 1729, 1728, 1732, 1730, + 1737, 1739, 1745, 1734, 1735, 1746, 1736, 1758, 1754, 1760, + + 1752, 1582, 1762, 1761, 1765, 1766, 1767, 1769, 1771, 1773, + 1774, 1776, 1779, 1778, 1782, 5685, 1780, 1788, 5685, 1785, + 1787, 1809, 1789, 1791, 1792, 1794, 1796, 1806, 1800, 1797, + 1817, 1813, 1829, 1819, 1831, 1824, 1832, 1836, 1826, 1834, + 1838, 1842, 1849, 1850, 1846, 1856, 1859, 1854, 1858, 1857, + 1878, 1860, 1861, 1867, 1862, 1863, 1865, 1880, 1868, 1871, + 1883, 1894, 1869, 5685, 1891, 1896, 1887, 1803, 1895, 1900, + 1901, 1903, 1907, 1908, 1915, 1910, 1911, 1913, 1914, 1917, + 1921, 1923, 1927, 1928, 1926, 1922, 1944, 5685, 1929, 5685, + 1933, 1940, 1942, 1943, 1946, 1948, 1949, 1950, 5685, 5685, + + 1951, 1953, 1958, 1971, 1966, 5685, 1952, 1973, 1974, 1977, + 1969, 1970, 1976, 1982, 1981, 1991, 1984, 1992, 1997, 1987, + 1988, 1998, 1989, 2001, 2002, 1999, 5685, 2009, 2010, 2012, + 2019, 2017, 2014, 2020, 2021, 2027, 2022, 2025, 2029, 2030, + 2032, 2037, 2041, 2034, 2042, 2043, 2052, 5685, 2036, 2050, + 2057, 2053, 2056, 2059, 2060, 2061, 2062, 2063, 2064, 2067, + 2071, 2072, 2080, 2082, 2073, 2081, 2078, 2084, 2087, 2090, + 2093, 2092, 2095, 2094, 2096, 5685, 2097, 2099, 124, 2100, + 2105, 2106, 2107, 2108, 2123, 2109, 2125, 2130, 2126, 2132, + 2128, 2127, 2135, 2137, 2136, 2138, 2139, 2140, 2143, 5685, + + 2145, 2147, 2148, 2150, 2152, 2153, 2163, 5685, 2159, 2164, + 2167, 2156, 2172, 2171, 2176, 2178, 2180, 2181, 2184, 2187, + 5685, 2191, 2188, 2192, 2194, 2196, 2111, 2198, 2200, 2202, + 2203, 2204, 2205, 2211, 2209, 2208, 2210, 2212, 2213, 2223, + 2224, 2225, 2226, 5685, 2234, 2229, 2232, 2233, 2236, 2237, + 2248, 2239, 2246, 2250, 2251, 2264, 2254, 2256, 2261, 2270, + 2257, 2259, 2280, 2276, 2279, 2285, 2275, 2288, 2290, 2278, + 2282, 2292, 2291, 2294, 2302, 2297, 2309, 2310, 2307, 2313, + 2305, 2326, 2308, 2318, 5685, 2320, 2322, 2328, 2330, 2341, + 2331, 2333, 2334, 2336, 2332, 2342, 2344, 2343, 2349, 2350, + + 2347, 2355, 2358, 2360, 2363, 2359, 2367, 2368, 5685, 2369, + 2371, 2375, 2377, 2379, 2380, 2382, 2384, 2387, 2388, 2389, + 2391, 2393, 2395, 2396, 2397, 2399, 2401, 2404, 5685, 2411, + 2405, 2407, 2418, 2417, 2419, 2421, 2427, 2429, 2415, 2430, + 2431, 2432, 5685, 2441, 2443, 2439, 2446, 2442, 2447, 2448, + 2450, 2452, 5685, 2453, 2454, 2461, 2462, 2457, 5685, 2464, + 2460, 2465, 2467, 2468, 2469, 2470, 2475, 2476, 2478, 2481, + 2484, 2488, 2489, 5685, 2490, 2498, 2499, 2491, 2502, 2493, + 2503, 2504, 2508, 2512, 2506, 2521, 2523, 2524, 2525, 2505, + 2528, 2529, 2530, 2532, 2533, 5685, 2526, 2536, 2538, 2541, + + 2539, 2545, 2547, 2555, 2550, 2551, 2557, 2552, 2558, 2559, + 2560, 2561, 2564, 2572, 2574, 2575, 2577, 2579, 2580, 2581, + 2588, 2593, 2594, 2596, 5685, 2599, 2600, 2602, 2589, 2591, + 2603, 2606, 2608, 2610, 2612, 2614, 2615, 2616, 2623, 2627, + 2624, 2631, 2628, 2633, 2625, 2636, 2637, 2638, 2639, 2646, + 2643, 2642, 2651, 2650, 2649, 2659, 2654, 2660, 2661, 2662, + 2663, 2664, 2667, 2665, 2671, 2672, 2676, 2678, 2686, 2687, + 2688, 2689, 2692, 5685, 2691, 2693, 2695, 2701, 2704, 2705, + 2707, 2709, 2714, 2699, 2706, 2716, 2726, 2722, 5685, 2723, + 5685, 2725, 2727, 2728, 2737, 2730, 5685, 2734, 5685, 2735, + + 2740, 2742, 2743, 5685, 2744, 2745, 2748, 2751, 2749, 2753, + 2754, 2755, 2756, 2761, 2763, 2767, 2766, 2768, 2771, 2772, + 2775, 2777, 2779, 2783, 2776, 2788, 2784, 2786, 2794, 2793, + 2795, 5685, 2802, 2799, 2804, 2803, 2805, 2807, 2808, 2810, + 2811, 2813, 2816, 2821, 2814, 2827, 2830, 2842, 2820, 2843, + 5685, 2824, 2845, 2828, 2846, 5685, 2848, 2839, 2849, 2854, + 2851, 2841, 2856, 2857, 2861, 2858, 2864, 2869, 2873, 2874, + 2868, 2876, 2866, 2880, 2888, 2885, 2892, 2894, 2902, 2898, + 2886, 2889, 2878, 2900, 2901, 2911, 2912, 2908, 2915, 2910, + 2914, 2917, 2918, 2921, 2922, 2924, 2926, 2927, 2925, 2930, + + 2934, 2929, 2931, 2932, 2935, 5685, 2948, 2938, 2945, 2952, + 2954, 2957, 2936, 2955, 2959, 2961, 2963, 2965, 2962, 5685, + 2964, 5685, 2966, 2972, 2981, 2983, 2985, 2986, 2987, 2989, + 2992, 2993, 2994, 2995, 2996, 2998, 3001, 3002, 3007, 3008, + 3009, 3023, 3006, 3011, 3013, 3018, 3020, 3025, 5685, 3027, + 3028, 3029, 3033, 3034, 3035, 3038, 3042, 3041, 3044, 3045, + 3056, 5685, 3047, 3064, 3048, 3068, 3075, 3057, 3076, 3071, + 5685, 3060, 3072, 3079, 3074, 3081, 3088, 5685, 3083, 5685, + 3078, 3085, 3092, 3089, 3093, 3094, 3095, 3096, 3102, 3105, + 3114, 3103, 3111, 3112, 3113, 3115, 3124, 3117, 3119, 3120, + + 5685, 3122, 3125, 3129, 3136, 3137, 3143, 3140, 3127, 5685, + 3144, 3147, 3134, 3151, 3152, 3155, 3156, 3157, 3160, 3161, + 3158, 3162, 3174, 3166, 3165, 3169, 3180, 3181, 3186, 5685, + 3187, 3167, 3194, 3190, 3191, 3193, 3196, 3197, 3198, 3200, + 3201, 3202, 3204, 3209, 3208, 3205, 3206, 3211, 3212, 3225, + 3222, 3214, 3226, 3230, 3229, 3232, 3236, 3237, 3240, 3242, + 3233, 3244, 3247, 3251, 3254, 3256, 3257, 3264, 3259, 5685, + 3266, 3263, 3271, 3267, 3270, 3269, 3276, 3280, 3282, 3278, + 3279, 3289, 3284, 5685, 3291, 3286, 3303, 3297, 3287, 3312, + 3307, 3293, 3288, 3311, 3314, 3317, 3315, 3319, 3320, 3323, + + 3324, 5685, 5685, 3326, 3327, 3328, 5685, 3329, 3330, 3339, + 3332, 3334, 3342, 3336, 3345, 3346, 3347, 3349, 3350, 5685, + 3353, 3362, 3359, 3360, 3369, 3370, 3374, 3371, 3368, 3361, + 3365, 3378, 3380, 3382, 3385, 3386, 3394, 3389, 3391, 3392, + 5685, 3393, 3395, 3401, 5685, 3398, 3399, 3402, 3410, 3405, + 3418, 3415, 3421, 3407, 3423, 3424, 3425, 3427, 3429, 3438, + 3433, 3434, 3436, 3440, 3442, 5685, 3444, 3445, 3450, 3452, + 3455, 3463, 3464, 3465, 3460, 3466, 3467, 3474, 5685, 3469, + 3472, 3473, 3475, 3483, 3480, 3484, 3482, 5685, 3487, 3488, + 3490, 5685, 3489, 3496, 3504, 3506, 3491, 3514, 3509, 3493, + + 3510, 3512, 5685, 3513, 5685, 3517, 3519, 3522, 5685, 3524, + 3525, 3527, 3529, 3526, 3533, 3534, 3541, 3530, 3542, 3543, + 3544, 3545, 3547, 3554, 3546, 5685, 3555, 3553, 3557, 3558, + 3564, 3562, 3565, 3570, 3568, 5685, 5685, 3577, 5685, 3569, + 3578, 3579, 5685, 3582, 3584, 3589, 3585, 3587, 3590, 3600, + 3593, 5685, 3596, 3591, 3604, 3606, 3607, 3608, 3609, 3610, + 3612, 3614, 3613, 5685, 3616, 3618, 3624, 3617, 3625, 3631, + 3637, 3626, 5685, 3639, 3641, 3633, 3647, 3648, 5685, 3640, + 5685, 3650, 3653, 3654, 3656, 3657, 5685, 3659, 3660, 3664, + 3665, 3667, 3669, 3670, 3673, 3677, 3679, 3686, 3682, 3681, + + 3684, 5685, 3683, 3689, 3697, 3700, 3690, 3688, 3704, 3706, + 3707, 3710, 3713, 3715, 3716, 3719, 3714, 3721, 3722, 3725, + 3735, 3728, 3731, 5685, 3732, 3736, 3740, 5685, 3738, 3739, + 3747, 3749, 3742, 3750, 3753, 3752, 3755, 5685, 3761, 3762, + 3757, 3758, 3767, 3771, 5685, 5685, 3775, 5685, 3776, 3764, + 3778, 3765, 3754, 3786, 3785, 3788, 3790, 3791, 3792, 3798, + 3799, 3806, 3807, 3808, 3811, 3685, 3804, 5685, 5685, 3816, + 3817, 3813, 3820, 3825, 3809, 3823, 3833, 3829, 3830, 3836, + 3837, 3844, 5685, 3845, 3828, 3846, 5685, 3839, 3847, 3840, + 3851, 3853, 3854, 3855, 3857, 3861, 3859, 3862, 3860, 3868, + + 3869, 3870, 3876, 3873, 3878, 5685, 3879, 3881, 3882, 3883, + 3884, 3885, 3890, 3893, 3892, 5685, 3894, 3896, 3899, 3897, + 3898, 3903, 3914, 3918, 3920, 3907, 3921, 3923, 3926, 3928, + 3925, 5685, 3931, 3929, 3932, 3933, 3940, 3942, 3937, 3944, + 3946, 3948, 3950, 3953, 3955, 3960, 3957, 3961, 3962, 3963, + 5685, 3967, 3969, 3966, 3974, 3975, 3977, 3978, 3979, 3987, + 3984, 3989, 3988, 3991, 5685, 3992, 3994, 3996, 3997, 3999, + 4000, 4005, 4006, 5685, 4009, 4002, 4016, 4010, 4013, 4014, + 4018, 4026, 4025, 5685, 4029, 4030, 4031, 4032, 4033, 4034, + 4037, 4038, 5685, 4043, 4044, 4047, 4056, 4040, 4058, 4054, + + 4060, 4051, 4053, 4067, 4063, 4068, 4069, 4071, 4073, 4081, + 4085, 4082, 5685, 4074, 5685, 4083, 4088, 4090, 4095, 4091, + 5685, 4093, 4098, 4100, 4097, 4101, 5685, 4103, 4102, 4105, + 4107, 5685, 4121, 4117, 4106, 4116, 4130, 4131, 5685, 4134, + 4135, 4136, 4143, 4145, 4147, 4140, 4148, 4144, 4150, 4108, + 4151, 5685, 4153, 4155, 4160, 4161, 4162, 4163, 4165, 4168, + 4172, 5685, 4170, 4173, 4174, 4176, 4177, 4178, 4179, 4186, + 4182, 4187, 5685, 4191, 4192, 4195, 4196, 4123, 5685, 5685, + 4199, 4200, 4203, 4202, 4208, 5685, 4210, 4217, 4212, 4216, + 4218, 5685, 5685, 4220, 5685, 4221, 5685, 4222, 4225, 5685, + + 5685, 4226, 4223, 4229, 4230, 4233, 5685, 4238, 5685, 4246, + 4242, 4244, 4245, 4247, 5685, 4250, 4251, 4254, 5685, 4248, + 4261, 4256, 4258, 5685, 4265, 4259, 4262, 5685, 4270, 4276, + 4272, 4279, 4266, 4281, 4282, 4283, 4285, 4287, 4289, 4292, + 4294, 4297, 4298, 4299, 4300, 4305, 4302, 4307, 4308, 4310, + 4312, 4313, 4318, 4321, 4322, 4315, 4323, 4324, 4325, 4329, + 4331, 4335, 4338, 4339, 4340, 4341, 4343, 4344, 4346, 4349, + 4353, 4342, 4352, 5685, 4347, 4354, 4358, 4369, 4359, 4370, + 4374, 4364, 4378, 4382, 5685, 4384, 5685, 4386, 4371, 4380, + 4388, 5685, 4390, 4393, 4392, 4395, 4394, 4396, 4399, 4397, + + 5685, 4401, 4402, 4404, 4406, 5685, 4409, 4420, 4408, 4412, + 4421, 4422, 4423, 4425, 4429, 4427, 4432, 4434, 4442, 4435, + 4439, 4438, 4444, 4440, 4447, 4450, 4456, 4452, 4459, 4463, + 5685, 4464, 5685, 4465, 4466, 4468, 4469, 4470, 4471, 4473, + 5685, 5685, 4476, 4478, 4487, 4479, 4472, 4498, 4484, 5685, + 4493, 4495, 4501, 4502, 5685, 4503, 4504, 4506, 5685, 4507, + 4510, 4511, 4513, 4477, 4514, 4517, 5685, 5685, 5685, 5685, + 4520, 4518, 4528, 4522, 4525, 4532, 4533, 4537, 4529, 5685, + 4546, 5685, 5685, 4534, 4543, 4547, 4549, 4550, 4551, 4553, + 4552, 5685, 4556, 4559, 4563, 4557, 4566, 4574, 4569, 4575, + + 4567, 4577, 4584, 4581, 4582, 4579, 4587, 4589, 4591, 5685, + 5685, 4593, 4597, 4598, 4605, 4602, 4603, 4615, 4610, 4611, + 4612, 4613, 4617, 4618, 4619, 5685, 4622, 4626, 5685, 4620, + 5685, 4630, 4633, 4624, 4634, 4636, 4637, 4639, 4641, 5685, + 5685, 4643, 4644, 4648, 4652, 4649, 4654, 4655, 4657, 4653, + 5685, 4658, 5685, 4659, 4661, 4675, 4660, 4677, 4682, 4684, + 4681, 4683, 4687, 5685, 4686, 4688, 5685, 4689, 4690, 4694, + 5685, 4696, 4699, 4703, 5685, 4706, 5685, 4708, 5685, 4700, + 4716, 5685, 4711, 4712, 5685, 4718, 4722, 4666, 4714, 5685, + 4719, 5685, 4723, 4725, 4728, 4733, 4726, 4735, 4736, 4730, + + 4738, 4745, 4747, 4740, 5685, 5685, 4756, 4742, 4751, 4753, + 4754, 4763, 4758, 4762, 4768, 5685, 5685, 4759, 5685, 4761, + 4772, 5685, 4770, 4774, 4776, 4779, 4778, 4780, 4785, 4782, + 4786, 4789, 4804, 4787, 4791, 4801, 4807, 4809, 4811, 4813, + 4814, 4815, 4792, 4816, 4817, 4820, 5685, 4822, 4823, 4824, + 5685, 4828, 4831, 4833, 4834, 5685, 4844, 4836, 4841, 4846, + 5685, 4830, 4852, 4849, 4847, 4854, 4863, 4858, 4859, 5685, + 5685, 5685, 5685, 4861, 4864, 5685, 4865, 4866, 5685, 5685, + 4867, 4870, 4873, 4881, 5685, 4872, 5685, 4876, 5685, 4880, + 4883, 4886, 4889, 5685, 4890, 4899, 5685, 4902, 4905, 4907, + + 4908, 4891, 4877, 4909, 5685, 4916, 4913, 4915, 4922, 4894, + 4919, 4923, 4924, 4931, 4926, 4930, 5685, 4927, 4932, 4933, + 5685, 4935, 5685, 4936, 4937, 4939, 4945, 4941, 4944, 4948, + 4955, 4938, 4959, 4952, 5685, 4962, 4966, 5685, 4967, 5685, + 4969, 5685, 4970, 4973, 4974, 4972, 5685, 4976, 4978, 4979, + 4980, 5685, 4981, 4983, 5685, 4987, 4984, 4994, 4996, 4985, + 5001, 5003, 5004, 4991, 5015, 5007, 5010, 5008, 5017, 5018, + 5023, 5685, 5685, 5685, 5019, 5012, 5033, 5030, 5034, 5041, + 5025, 5685, 5039, 5040, 5036, 5048, 5046, 5050, 5685, 5052, + 5038, 5047, 5685, 5054, 5059, 5060, 5061, 5062, 5069, 5071, + + 5073, 5074, 5685, 5077, 5685, 5685, 5066, 5685, 5078, 5080, + 5081, 5082, 5685, 5087, 5084, 5088, 5090, 5092, 5093, 5089, + 5685, 5685, 5096, 5685, 5105, 5101, 5097, 5113, 5109, 5110, + 5115, 5117, 5685, 5116, 5119, 5120, 5123, 5124, 5685, 5126, + 5127, 5128, 5129, 5132, 5131, 5137, 5138, 5140, 5685, 5685, + 5133, 5143, 5685, 5685, 5142, 5152, 5157, 5685, 5685, 5685, + 5163, 5685, 5165, 5169, 5173, 5177, 5168, 5685, 5179, 5158, + 5180, 5685, 5181, 5183, 5685, 5685, 5160, 5184, 5188, 5187, + 5189, 5685, 5190, 5193, 5197, 5200, 5206, 5195, 5207, 5209, + 5217, 5219, 5201, 5214, 5203, 5215, 5222, 5223, 5231, 5228, + + 5685, 5685, 5235, 5685, 5685, 5237, 5239, 5241, 5244, 5246, + 5248, 5250, 5685, 5251, 5253, 5254, 5685, 5256, 5258, 5255, + 5259, 5261, 5262, 5264, 5266, 5685, 5685, 5267, 5268, 5269, + 5276, 5278, 5685, 5280, 5287, 5284, 5286, 5282, 5288, 5289, + 5685, 5292, 5685, 5685, 5685, 5685, 5685, 5685, 5685, 5685, + 5290, 5685, 5300, 5303, 5685, 5294, 5304, 5308, 5309, 5297, + 5685, 5310, 5314, 5315, 5316, 5319, 5321, 5323, 5324, 5326, + 5330, 5327, 5332, 5328, 5331, 5685, 5685, 5339, 5335, 5338, + 5341, 5357, 5358, 5361, 5363, 5345, 5348, 5366, 5365, 5367, + 5354, 5371, 5380, 5373, 5375, 5377, 5378, 5382, 5685, 5383, + + 5685, 5384, 5685, 5685, 5389, 5390, 5385, 5392, 5400, 5405, + 5396, 5401, 5403, 5407, 5685, 5404, 5685, 5409, 5408, 5685, + 5413, 5415, 5416, 5417, 5418, 5419, 5421, 5427, 5685, 5425, + 5428, 5437, 5429, 5445, 5440, 5444, 5446, 5448, 5442, 5456, + 5452, 5455, 5685, 5458, 5459, 5225, 5460, 5463, 5470, 5465, + 5467, 5468, 5685, 5472, 5474, 5476, 5466, 5473, 5475, 5489, + 5491, 5487, 5685, 5477, 5493, 5495, 5497, 5501, 5499, 5505, + 5506, 5508, 5510, 5340, 5517, 5511, 5513, 5509, 5519, 5521, + 5685, 5523, 5526, 5685, 5527, 5529, 5530, 5531, 5535, 5685, + 5538, 5533, 5539, 5541, 5544, 5546, 5685, 5548, 5555, 5556, + + 5685, 5557, 5685, 5685, 5559, 5551, 5560, 5566, 5568, 5685, + 5685, 5685, 5593, 5600, 5607, 5614, 5621, 88, 5628, 5635, + 5642, 5649, 5656, 5663, 5670, 5677 } ; -static yyconst flex_int16_t yy_def[2919] = +static const flex_int16_t yy_def[2927] = { 0, - 2904, 1, 2905, 2905, 2906, 2906, 2907, 2907, 2908, 2908, - 2909, 2909, 2904, 2910, 2904, 2904, 2904, 2904, 2911, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2912, 2904, 2904, 2904, 2912, 2913, 2904, 2904, - 2904, 2913, 2914, 2904, 2904, 2904, 2904, 2914, 2915, 2904, - 2904, 2904, 2915, 2916, 2904, 2917, 2904, 2916, 2916, 2910, - 2910, 2904, 2918, 2911, 2918, 2911, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2912, - 2912, 2913, 2913, 2914, 2914, 2904, 2915, 2915, 2916, 2916, - 2917, 2917, 2916, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2916, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2916, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2916, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2916, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2904, 2910, 2904, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2916, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2916, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2904, 2910, 2910, 2910, 2904, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, - - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, - 2904, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2904, 2904, 2910, 2904, 2910, 2904, 2910, - 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - - 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, - 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - - 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2904, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2904, 2910, 2904, 2910, - 2904, 2910, 2910, 2904, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, - 2904, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2904, 2904, 2904, 2910, 2910, 2904, 2910, 2910, - 2904, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, - 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2904, - 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2904, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2904, 2910, 2904, - - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2904, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2904, 2910, 2910, 2904, 2904, 2910, 2910, 2910, 2904, - 2904, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2904, 2910, 2910, 2904, 2904, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2904, 2910, 2904, 2904, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2910, 2904, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2904, 2910, 2904, 2904, 2910, 2910, 2910, 2910, - - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2904, 2910, 2904, 2904, 2910, 2910, 2910, 2910, - - 2910, 2904, 2904, 0, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904 + 2912, 1, 2913, 2913, 2914, 2914, 2915, 2915, 2916, 2916, + 2917, 2917, 2912, 2918, 2912, 2912, 2912, 2912, 2919, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2920, 2912, 2912, 2912, 2920, 2921, 2912, 2912, + 2912, 2921, 2922, 2912, 2912, 2912, 2912, 2922, 2923, 2912, + 2912, 2912, 2923, 2924, 2912, 2925, 2912, 2924, 2924, 2918, + 2918, 2912, 2926, 2919, 2926, 2919, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2920, + 2920, 2921, 2921, 2922, 2922, 2912, 2923, 2923, 2924, 2924, + 2925, 2925, 2924, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2924, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2924, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2924, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2924, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2912, 2912, 2918, 2912, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2924, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2912, + + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2924, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2912, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2912, 2918, + + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2912, 2912, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2912, 2918, 2912, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2912, 2918, 2912, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2912, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2912, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2912, 2918, 2912, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2912, 2912, + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2918, 2912, 2912, 2918, 2912, 2918, 2912, 2918, 2918, 2912, + + 2912, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2912, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2912, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2912, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2912, 2912, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2912, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2912, 2918, + 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2912, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2912, 2918, 2912, 2918, 2912, 2918, + 2918, 2912, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2912, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2912, 2912, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2912, 2918, 2912, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, + 2912, 2912, 2912, 2918, 2918, 2912, 2918, 2918, 2912, 2912, + 2918, 2918, 2918, 2918, 2912, 2918, 2912, 2918, 2912, 2918, + 2918, 2918, 2918, 2912, 2918, 2918, 2912, 2918, 2918, 2918, + + 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + 2912, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2912, 2918, 2912, + 2918, 2912, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2912, 2912, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2912, 2918, 2912, 2912, 2918, 2912, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2912, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2912, + 2918, 2918, 2912, 2912, 2918, 2918, 2918, 2912, 2912, 2912, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, + 2918, 2912, 2918, 2918, 2912, 2912, 2918, 2918, 2918, 2918, + 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2912, 2912, 2918, 2912, 2912, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2912, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2918, 2912, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2912, 2912, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + + 2912, 2918, 2912, 2912, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2912, 2918, 2912, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2912, 2918, 2918, 2912, 2918, 2918, 2918, 2918, 2918, 2912, + 2918, 2918, 2918, 2918, 2918, 2918, 2912, 2918, 2918, 2918, + + 2912, 2918, 2912, 2912, 2918, 2918, 2918, 2918, 2918, 2912, + 2912, 0, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2912, 2912 } ; -static yyconst flex_uint16_t yy_nxt[5715] = +static const flex_int16_t yy_nxt[5726] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1463,563 +1457,564 @@ static yyconst flex_uint16_t yy_nxt[5715] = 71, 71, 71, 71, 385, 71, 383, 379, 387, 71, 386, 71, 71, 71, 71, 71, 392, 71, 71, 71, 393, 71, 71, 384, 145, 395, 391, 71, 397, 388, - 389, 71, 390, 71, 399, 401, 394, 396, 71, 71, - - 398, 71, 402, 71, 71, 400, 71, 71, 71, 416, - 403, 71, 410, 412, 71, 71, 426, 413, 71, 414, - 404, 71, 411, 405, 421, 71, 71, 418, 406, 407, - 408, 409, 71, 425, 417, 415, 71, 71, 419, 420, - 422, 427, 71, 423, 428, 71, 424, 429, 71, 430, - 71, 71, 71, 71, 71, 71, 432, 437, 71, 71, - 71, 71, 440, 71, 433, 431, 439, 143, 71, 451, - 436, 71, 434, 446, 435, 71, 441, 453, 438, 71, - 442, 71, 444, 71, 445, 71, 443, 71, 447, 71, - 452, 71, 454, 71, 71, 71, 71, 455, 71, 71, - - 71, 448, 466, 456, 449, 71, 450, 457, 467, 481, - 468, 465, 469, 472, 71, 458, 71, 459, 589, 460, - 480, 71, 482, 71, 470, 150, 71, 483, 71, 484, - 71, 71, 461, 486, 71, 462, 490, 463, 71, 464, - 471, 71, 71, 473, 474, 487, 485, 488, 71, 71, - 489, 71, 491, 475, 492, 476, 477, 478, 494, 71, - 479, 71, 493, 71, 71, 71, 71, 502, 495, 71, - 500, 497, 496, 71, 71, 503, 499, 71, 501, 498, - 71, 505, 507, 71, 71, 71, 504, 71, 71, 510, - 71, 506, 511, 512, 71, 71, 71, 71, 517, 509, - - 71, 514, 71, 522, 519, 508, 515, 513, 516, 71, - 71, 71, 524, 520, 71, 71, 518, 71, 71, 71, - 141, 71, 71, 532, 528, 71, 533, 525, 521, 523, - 531, 527, 526, 535, 534, 529, 71, 530, 71, 71, - 536, 71, 537, 539, 71, 538, 71, 541, 71, 71, - 71, 71, 545, 546, 543, 71, 71, 71, 71, 71, - 547, 542, 71, 544, 540, 71, 71, 550, 71, 552, - 548, 551, 71, 71, 71, 71, 556, 553, 549, 71, - 71, 71, 558, 71, 554, 555, 557, 559, 71, 561, - 71, 71, 560, 71, 563, 562, 71, 564, 71, 565, - - 568, 567, 566, 71, 71, 71, 71, 71, 575, 71, - 71, 577, 71, 71, 71, 578, 570, 71, 576, 71, - 71, 574, 584, 569, 571, 573, 572, 579, 580, 582, - 585, 581, 583, 71, 71, 71, 71, 71, 71, 588, - 71, 71, 591, 71, 71, 592, 71, 587, 594, 71, - 71, 71, 71, 71, 586, 608, 593, 71, 590, 71, - 595, 71, 597, 611, 71, 596, 71, 598, 607, 615, - 606, 609, 599, 610, 600, 71, 614, 71, 71, 71, - 601, 71, 602, 612, 618, 603, 604, 613, 617, 71, - 71, 616, 605, 620, 71, 619, 71, 621, 71, 624, - - 71, 626, 71, 71, 622, 71, 71, 71, 71, 623, - 71, 71, 71, 632, 71, 628, 71, 627, 71, 633, - 629, 625, 636, 637, 150, 630, 639, 635, 638, 631, - 634, 71, 71, 641, 71, 71, 71, 71, 71, 71, - 71, 651, 646, 640, 71, 71, 648, 71, 649, 643, - 71, 644, 647, 642, 653, 645, 650, 71, 71, 656, - 71, 71, 652, 71, 655, 71, 71, 71, 659, 71, - 654, 658, 667, 71, 664, 71, 660, 71, 657, 665, - 71, 668, 71, 661, 669, 663, 662, 71, 666, 672, - 71, 670, 71, 671, 71, 71, 71, 71, 673, 674, - - 71, 71, 675, 71, 678, 71, 676, 71, 677, 71, - 679, 682, 683, 71, 71, 71, 71, 684, 71, 688, - 686, 71, 71, 71, 150, 71, 680, 689, 681, 71, - 71, 71, 685, 691, 148, 690, 687, 71, 692, 71, - 695, 694, 693, 71, 71, 699, 71, 696, 697, 698, - 701, 71, 700, 71, 703, 702, 71, 704, 71, 71, - 71, 71, 707, 706, 71, 708, 71, 71, 71, 71, - 715, 71, 71, 711, 713, 71, 71, 709, 71, 705, - 712, 716, 710, 71, 721, 71, 71, 719, 714, 723, - 71, 722, 718, 71, 717, 720, 724, 71, 71, 71, - - 728, 730, 725, 71, 71, 71, 71, 71, 729, 71, - 732, 71, 731, 727, 733, 71, 726, 735, 71, 734, - 71, 739, 71, 71, 736, 71, 71, 71, 742, 743, - 745, 741, 146, 71, 737, 738, 71, 740, 71, 71, - 750, 748, 71, 747, 744, 746, 749, 71, 71, 71, - 751, 752, 71, 71, 754, 71, 71, 71, 760, 71, - 71, 753, 71, 761, 71, 71, 755, 71, 71, 762, - 71, 756, 71, 757, 71, 758, 71, 759, 71, 71, - 763, 766, 764, 769, 767, 768, 765, 71, 770, 71, - 771, 774, 71, 71, 71, 772, 71, 71, 773, 71, - - 71, 782, 71, 71, 71, 71, 783, 71, 71, 776, - 775, 71, 777, 781, 778, 779, 780, 71, 785, 786, - 71, 71, 784, 789, 788, 787, 71, 71, 791, 796, - 790, 792, 71, 71, 793, 71, 71, 794, 795, 71, - 71, 150, 797, 71, 71, 798, 802, 803, 71, 800, - 71, 71, 804, 799, 71, 801, 71, 71, 810, 71, - 806, 71, 71, 811, 805, 813, 71, 71, 816, 807, - 808, 812, 71, 71, 71, 71, 814, 818, 809, 71, - 815, 71, 822, 71, 71, 71, 71, 819, 71, 71, - 71, 823, 817, 824, 71, 71, 71, 71, 71, 821, - - 71, 828, 825, 835, 820, 829, 836, 834, 830, 827, - 826, 837, 833, 71, 71, 831, 842, 838, 832, 71, - 839, 71, 840, 71, 71, 841, 845, 71, 71, 71, - 71, 71, 71, 853, 857, 71, 71, 843, 858, 71, - 71, 860, 867, 859, 844, 71, 846, 847, 854, 848, - 71, 71, 849, 855, 856, 71, 862, 850, 71, 71, - 866, 71, 864, 851, 852, 861, 863, 71, 71, 71, - 868, 71, 865, 869, 71, 71, 873, 71, 71, 71, - 71, 876, 872, 71, 71, 880, 882, 71, 870, 71, - 871, 71, 874, 875, 881, 878, 877, 883, 71, 71, - - 918, 886, 884, 71, 885, 887, 879, 71, 71, 889, - 71, 71, 71, 888, 71, 71, 891, 890, 71, 71, - 892, 71, 71, 71, 898, 71, 893, 895, 896, 71, - 901, 71, 71, 71, 71, 71, 71, 894, 899, 900, - 71, 71, 897, 903, 904, 905, 71, 71, 71, 907, - 906, 902, 908, 71, 911, 71, 71, 71, 910, 71, - 71, 71, 909, 916, 919, 71, 914, 71, 71, 71, - 912, 917, 921, 71, 71, 913, 71, 71, 71, 71, - 71, 71, 920, 915, 929, 71, 927, 145, 71, 922, - 71, 925, 932, 923, 924, 71, 926, 930, 71, 933, - - 931, 928, 936, 71, 935, 71, 71, 934, 71, 937, - 71, 939, 940, 71, 71, 71, 71, 71, 71, 938, - 71, 949, 71, 942, 944, 951, 71, 71, 941, 71, - 943, 71, 953, 955, 71, 945, 950, 947, 71, 946, - 948, 954, 71, 71, 71, 962, 952, 71, 959, 71, - 961, 71, 71, 956, 957, 963, 71, 71, 966, 71, - 968, 71, 958, 71, 71, 960, 71, 971, 150, 71, - 965, 970, 71, 71, 964, 71, 973, 71, 974, 967, - 71, 969, 71, 71, 972, 71, 71, 977, 71, 71, - 989, 71, 71, 71, 978, 975, 990, 992, 71, 980, - - 976, 71, 71, 143, 71, 994, 981, 979, 991, 982, - 71, 1013, 71, 983, 71, 984, 993, 995, 996, 985, - 71, 986, 71, 71, 999, 997, 987, 1002, 998, 1000, - 71, 988, 71, 71, 71, 71, 1001, 71, 1004, 1006, - 71, 71, 71, 141, 71, 1011, 1012, 1003, 1005, 1007, - 1010, 71, 71, 1015, 1009, 1014, 71, 71, 1008, 71, - 71, 1017, 71, 1016, 71, 71, 71, 1027, 71, 1026, - 71, 1030, 71, 1031, 1018, 71, 1019, 1029, 1028, 71, - 1032, 1020, 71, 1021, 71, 1034, 1036, 71, 71, 1022, - 1038, 71, 1037, 1033, 1023, 1024, 71, 71, 71, 1042, - - 1039, 1025, 71, 1035, 71, 71, 71, 1043, 71, 71, - 1040, 1041, 1048, 71, 71, 1045, 71, 1046, 71, 71, - 71, 1051, 1049, 1044, 71, 1047, 71, 71, 71, 71, - 71, 71, 71, 1050, 1053, 1058, 1056, 1057, 1055, 1052, - 1060, 71, 71, 71, 1054, 1062, 71, 1059, 1061, 71, - 71, 71, 71, 71, 71, 71, 1065, 1068, 1069, 1070, - 1071, 1063, 1064, 71, 1072, 1067, 1073, 1066, 1074, 71, - 1076, 71, 71, 71, 1078, 1077, 71, 1079, 71, 71, - 71, 1080, 71, 1086, 71, 1075, 71, 71, 1088, 71, - 1089, 1082, 71, 1081, 71, 1084, 71, 71, 1083, 1085, - - 71, 1091, 1092, 71, 71, 71, 1087, 71, 1094, 1095, - 1101, 71, 71, 1090, 71, 1100, 1093, 1096, 1097, 71, - 1099, 71, 71, 1098, 71, 71, 1105, 1104, 1102, 71, - 71, 71, 71, 71, 71, 1109, 1111, 1112, 1116, 1113, - 1103, 71, 71, 71, 71, 71, 1110, 1106, 71, 1107, - 1114, 1108, 71, 1115, 1119, 71, 71, 1121, 71, 1117, - 71, 1120, 71, 71, 1122, 71, 71, 71, 1125, 1126, - 71, 1123, 1118, 71, 71, 71, 1131, 1132, 1127, 71, - 71, 1124, 71, 71, 1134, 1129, 1135, 71, 1128, 71, - 1133, 1139, 71, 1130, 71, 71, 71, 71, 71, 1136, - - 71, 1145, 71, 1137, 1138, 1141, 71, 71, 71, 71, - 1151, 71, 1140, 1149, 71, 71, 1142, 1166, 71, 1144, - 1146, 1148, 1147, 1143, 1150, 1153, 1154, 71, 71, 1156, - 71, 71, 71, 1155, 1152, 1157, 71, 71, 71, 71, - 71, 71, 71, 1160, 71, 2904, 71, 71, 1163, 71, - 1158, 1159, 71, 71, 1161, 71, 71, 1164, 1170, 1162, - 1167, 1172, 1178, 1165, 1169, 1168, 71, 1176, 71, 71, - 1173, 71, 1174, 1171, 1177, 1175, 71, 71, 71, 1180, - 71, 71, 1179, 1183, 71, 71, 1182, 1188, 71, 1181, - 1185, 71, 1186, 71, 71, 71, 1189, 71, 1190, 1184, - - 1192, 1193, 71, 1187, 71, 71, 71, 71, 71, 71, - 71, 1194, 71, 71, 1191, 1200, 71, 71, 71, 1195, - 1196, 1198, 1199, 71, 1201, 1197, 71, 71, 71, 1202, - 71, 1206, 1205, 1210, 1203, 1204, 1209, 71, 1207, 71, - 71, 71, 1211, 1208, 71, 1212, 1214, 71, 1216, 71, - 1213, 71, 1215, 1217, 71, 71, 1221, 71, 2904, 1230, - 1229, 1219, 1220, 1218, 71, 71, 71, 1231, 1234, 1222, - 1228, 71, 1223, 1224, 71, 71, 1232, 1225, 71, 1237, - 71, 71, 71, 1226, 1233, 1235, 1236, 1227, 71, 1239, - 71, 71, 71, 1240, 71, 1241, 71, 71, 71, 71, - - 1249, 1250, 1246, 1238, 71, 1244, 71, 71, 71, 1251, - 1243, 1242, 1247, 71, 1245, 71, 1259, 1248, 71, 1252, - 71, 1258, 1253, 71, 71, 71, 1263, 1254, 1261, 1255, - 71, 1256, 1265, 1257, 1260, 71, 71, 1266, 71, 1264, - 1262, 1268, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 1270, 1275, 1273, 71, 1269, 1267, 1277, 1281, - 71, 1274, 71, 1271, 1272, 1276, 71, 1280, 1278, 1283, - 71, 71, 71, 1284, 71, 1285, 71, 71, 71, 1286, - 1279, 1282, 1289, 71, 1291, 71, 1288, 71, 1292, 71, - 71, 71, 1296, 71, 1293, 1287, 71, 71, 1290, 71, - - 1298, 71, 71, 71, 71, 1302, 1300, 71, 71, 71, - 1304, 1294, 1295, 1301, 1306, 71, 1297, 71, 71, 1299, - 1303, 2904, 1307, 1305, 71, 71, 1308, 71, 1311, 1309, - 1310, 71, 71, 1313, 71, 71, 1312, 1317, 1314, 1318, - 1320, 1315, 71, 71, 71, 71, 71, 1319, 1316, 71, - 71, 1324, 71, 1321, 71, 71, 71, 1328, 1329, 71, - 1331, 1323, 71, 71, 71, 1330, 71, 71, 1322, 71, - 71, 71, 71, 1338, 1325, 1326, 1332, 71, 71, 1327, - 71, 1335, 1333, 71, 1336, 1343, 71, 1334, 1342, 1337, - 71, 71, 71, 71, 1347, 71, 1345, 1339, 1341, 1348, - - 71, 71, 1350, 1340, 71, 71, 71, 71, 71, 1352, - 71, 1346, 1351, 1344, 71, 1356, 1358, 1360, 1357, 1349, - 1353, 1354, 1359, 71, 1355, 71, 71, 71, 71, 1361, - 71, 71, 71, 1364, 71, 71, 1366, 1362, 71, 1368, - 71, 71, 1370, 71, 1373, 1374, 1363, 71, 1365, 71, - 1367, 1377, 71, 71, 71, 1369, 1371, 71, 1372, 71, - 71, 71, 71, 71, 1378, 1375, 71, 1384, 1376, 1381, - 1385, 1386, 1379, 1380, 71, 1382, 71, 71, 1389, 71, - 1383, 71, 71, 71, 1394, 1388, 2904, 1391, 1393, 1395, - 71, 71, 1387, 71, 1390, 71, 71, 1396, 71, 1397, - - 1398, 71, 71, 1392, 71, 71, 1399, 1402, 71, 1401, - 71, 1405, 71, 1400, 71, 1404, 71, 71, 71, 1411, - 1403, 1408, 1407, 1413, 1412, 71, 71, 71, 1414, 71, - 71, 1409, 1406, 71, 1416, 71, 1419, 1410, 71, 71, - 71, 71, 1424, 1420, 71, 71, 1415, 1427, 71, 1417, - 1425, 71, 71, 71, 1418, 1430, 71, 1429, 1421, 1423, - 1422, 71, 71, 71, 71, 71, 71, 71, 1438, 71, - 1426, 1428, 2904, 71, 71, 1431, 1439, 1441, 71, 1435, - 71, 1432, 1433, 1434, 1437, 1442, 1440, 1436, 71, 71, - 71, 71, 1443, 71, 71, 71, 1447, 71, 1450, 1445, - - 1448, 71, 1444, 71, 1446, 1454, 71, 71, 71, 71, - 1451, 71, 1455, 1449, 1456, 1457, 71, 1452, 71, 1453, - 1458, 1459, 1462, 1463, 71, 71, 1460, 71, 71, 71, - 71, 1467, 71, 1468, 1466, 1470, 71, 71, 1461, 71, - 1471, 1472, 71, 1464, 71, 71, 71, 71, 1465, 1475, - 71, 71, 1469, 71, 1478, 71, 71, 71, 71, 1477, - 1473, 1474, 1482, 71, 1484, 71, 1479, 1476, 71, 71, - 71, 1488, 1483, 71, 71, 1481, 1480, 71, 71, 71, - 1493, 71, 1491, 1485, 1486, 71, 71, 1489, 71, 1494, - 71, 1496, 1490, 1487, 1492, 71, 71, 71, 1495, 1498, - - 1499, 71, 1501, 1502, 71, 71, 71, 71, 1497, 71, - 71, 1509, 71, 71, 1500, 71, 71, 1510, 71, 1503, - 1504, 1507, 71, 71, 1505, 1506, 71, 1513, 1514, 71, - 71, 1516, 71, 1511, 1508, 1512, 1515, 1517, 1518, 1520, - 1521, 71, 1519, 71, 71, 71, 1522, 71, 71, 1523, - 71, 71, 1527, 71, 1524, 1525, 71, 1528, 71, 71, - 71, 1530, 1532, 71, 1533, 1526, 71, 1529, 71, 1539, - 71, 71, 1534, 1531, 1536, 71, 71, 1537, 71, 1541, - 71, 1540, 71, 1542, 1545, 1544, 1535, 71, 71, 1538, - 71, 71, 1546, 1543, 71, 1547, 71, 1548, 1549, 1553, - - 71, 1551, 71, 71, 71, 1550, 1555, 1556, 1557, 1552, - 71, 1559, 71, 71, 71, 1558, 71, 71, 1562, 71, - 71, 1561, 1554, 71, 71, 1563, 71, 71, 71, 71, - 1571, 71, 71, 71, 71, 1560, 71, 71, 71, 1569, - 71, 1564, 1567, 1568, 1565, 1570, 1566, 71, 1574, 1576, - 71, 1572, 1578, 1573, 71, 1579, 71, 71, 1575, 71, - 1577, 71, 1582, 71, 71, 71, 71, 71, 71, 2904, - 1584, 1580, 1586, 1581, 71, 1583, 1587, 1593, 1585, 1588, - 1589, 1590, 1594, 71, 1595, 71, 1591, 71, 71, 71, - 1599, 71, 1598, 1592, 71, 71, 71, 71, 71, 1596, - - 71, 1602, 1603, 71, 71, 1611, 1597, 1600, 71, 71, - 71, 71, 1606, 71, 1601, 71, 1605, 1604, 1608, 1610, - 71, 1609, 71, 1607, 1612, 71, 1614, 71, 1613, 71, - 71, 71, 1621, 1615, 1616, 71, 71, 71, 1617, 1618, - 71, 1625, 1624, 71, 71, 1623, 71, 71, 1620, 71, - 71, 1622, 1632, 1627, 1619, 1626, 1628, 1633, 71, 71, - 1635, 1629, 71, 1634, 1639, 1631, 71, 1630, 1636, 1637, - 71, 1638, 1640, 71, 71, 1644, 71, 71, 71, 1641, - 71, 71, 1642, 71, 1648, 71, 1646, 71, 1643, 1645, - 71, 71, 1647, 1649, 71, 71, 71, 71, 71, 1650, - - 1653, 1660, 1652, 1658, 71, 71, 1651, 71, 1654, 1655, - 1661, 1656, 1657, 71, 71, 71, 71, 71, 1662, 71, - 1667, 71, 71, 1671, 71, 1659, 71, 71, 2904, 71, - 1666, 71, 1664, 1663, 1665, 1673, 71, 1669, 71, 71, - 1670, 1668, 71, 1674, 1675, 71, 71, 1672, 1680, 71, - 1676, 1677, 1678, 71, 71, 1681, 1684, 71, 71, 71, - 71, 1679, 71, 71, 71, 1682, 1686, 71, 71, 71, - 1691, 71, 1685, 1683, 1687, 1688, 71, 1694, 1699, 1689, - 1692, 1695, 71, 71, 1690, 1693, 1696, 1697, 71, 71, - 1700, 1701, 71, 71, 1698, 71, 71, 1703, 71, 71, - - 71, 1704, 71, 71, 71, 1702, 71, 71, 71, 1709, - 71, 71, 1713, 71, 71, 1710, 71, 1714, 1719, 1705, - 1707, 1708, 1706, 1711, 71, 1712, 1718, 71, 71, 1717, - 1715, 71, 71, 1716, 71, 71, 1724, 1720, 71, 71, - 1727, 1728, 71, 1729, 71, 1731, 71, 1721, 1722, 71, - 1732, 1723, 1725, 71, 1726, 1730, 71, 1735, 71, 71, - 1737, 71, 1739, 1736, 1738, 71, 71, 1741, 71, 71, - 1744, 71, 71, 71, 1733, 1743, 1746, 1734, 71, 1745, - 71, 71, 71, 1740, 71, 1753, 71, 1755, 71, 71, - 71, 71, 1756, 71, 1742, 71, 1747, 1748, 1749, 71, - - 1751, 1752, 1757, 1750, 1760, 71, 1754, 1758, 1761, 71, - 1759, 1764, 1765, 71, 71, 1763, 71, 71, 1762, 71, - 1767, 71, 71, 1770, 1771, 71, 71, 1773, 71, 71, - 71, 71, 71, 1779, 71, 1778, 71, 1768, 71, 1775, - 1776, 71, 1766, 1769, 71, 1782, 1772, 71, 71, 71, - 1785, 71, 71, 1777, 1774, 71, 1783, 1780, 1789, 1781, - 1788, 71, 71, 71, 71, 1792, 1793, 71, 1787, 1791, - 71, 71, 71, 71, 1784, 1794, 71, 1786, 1795, 1796, - 71, 1790, 71, 1797, 71, 1800, 1798, 71, 71, 1803, - 1804, 71, 1799, 71, 71, 71, 71, 71, 1807, 2904, - - 71, 71, 1801, 71, 71, 1813, 1816, 71, 1806, 71, - 1814, 1805, 71, 1802, 1808, 1809, 1810, 71, 1811, 1812, - 71, 1815, 1820, 71, 1817, 71, 71, 71, 1818, 71, - 1821, 71, 1824, 1819, 1827, 71, 71, 1830, 71, 1822, - 71, 1829, 71, 1831, 71, 1823, 71, 71, 1832, 1825, - 1828, 1826, 71, 1837, 71, 1833, 1838, 71, 1834, 1839, - 1841, 1842, 71, 1835, 1840, 71, 71, 71, 71, 71, - 1846, 71, 1836, 1844, 71, 71, 71, 71, 1848, 1851, - 1853, 1845, 71, 1847, 71, 71, 71, 1849, 1843, 71, - 71, 71, 71, 71, 1858, 71, 1854, 1857, 71, 1859, - - 1865, 1855, 1850, 2904, 1852, 1860, 71, 1861, 71, 1856, - 1863, 71, 71, 1862, 71, 71, 71, 1864, 1866, 71, - 1868, 71, 1869, 1867, 71, 1871, 71, 71, 71, 71, - 1875, 71, 71, 1870, 1874, 71, 71, 1876, 1872, 1873, - 1877, 1878, 1879, 71, 71, 71, 71, 71, 71, 71, - 1886, 1884, 1880, 1881, 1885, 71, 71, 71, 1888, 71, - 71, 1892, 1887, 1882, 71, 1883, 71, 71, 1891, 1889, - 71, 71, 71, 1890, 1899, 1893, 1894, 1896, 1898, 71, - 71, 71, 2904, 1897, 71, 1904, 71, 71, 1895, 71, - 1906, 71, 71, 71, 1907, 71, 1900, 1901, 71, 1902, - - 1903, 1908, 71, 1909, 1905, 1910, 71, 1912, 71, 71, - 71, 71, 71, 1911, 71, 71, 71, 1913, 71, 71, - 71, 1920, 1915, 1916, 1917, 1924, 71, 71, 71, 2904, - 1914, 1919, 1923, 71, 1921, 71, 1927, 1925, 1922, 71, - 1918, 71, 71, 71, 1928, 1931, 1930, 1926, 1929, 71, - 71, 1935, 71, 1932, 1933, 71, 71, 1934, 71, 71, - 1939, 71, 71, 1941, 1937, 1943, 71, 71, 1938, 71, - 1936, 71, 71, 1946, 1945, 71, 1942, 1947, 1940, 71, - 1948, 71, 1951, 71, 71, 71, 71, 71, 71, 1952, - 71, 71, 71, 1944, 1954, 2017, 1953, 1949, 1957, 71, - - 1961, 1950, 71, 1958, 1955, 1956, 71, 1959, 71, 71, - 1960, 1963, 71, 1962, 1966, 71, 71, 71, 71, 1968, - 1964, 71, 1969, 71, 71, 1970, 1973, 71, 1965, 1967, - 71, 1975, 1971, 71, 71, 1972, 1976, 71, 71, 1977, - 71, 71, 71, 1980, 71, 1978, 1979, 1981, 1974, 71, - 1985, 71, 71, 1982, 71, 71, 71, 71, 1984, 71, - 71, 1983, 1986, 71, 71, 1994, 71, 71, 1989, 71, - 1987, 1988, 1990, 71, 1995, 1991, 1992, 71, 71, 1993, - 71, 2003, 1996, 1997, 1999, 2002, 2005, 71, 71, 2000, - 71, 2007, 71, 71, 71, 2001, 1998, 2004, 2009, 2006, - - 71, 71, 2012, 2014, 2015, 2010, 71, 2013, 71, 71, - 71, 71, 2008, 71, 2011, 71, 2016, 2019, 71, 71, - 2020, 2024, 71, 2026, 2023, 71, 2018, 71, 2025, 2028, - 71, 71, 71, 2030, 2021, 71, 2029, 2031, 71, 71, - 2033, 71, 71, 2027, 2032, 2022, 71, 71, 71, 71, - 2035, 2034, 2036, 71, 2038, 71, 71, 71, 2044, 71, - 2041, 71, 71, 71, 71, 2039, 2037, 2045, 2040, 2047, - 71, 71, 71, 2043, 2042, 71, 2046, 2051, 71, 2054, - 71, 71, 2049, 71, 71, 71, 71, 71, 2048, 2055, - 2050, 2052, 71, 2053, 71, 71, 71, 2065, 71, 71, - - 71, 71, 2056, 2057, 2066, 71, 2060, 2062, 2058, 71, - 2059, 2064, 2067, 2061, 2068, 2063, 71, 2070, 2069, 2071, - 71, 2072, 71, 71, 2073, 71, 2075, 71, 71, 2078, - 71, 71, 2079, 71, 71, 71, 2074, 2076, 2080, 71, - 2077, 2084, 71, 2085, 71, 2087, 71, 2083, 71, 2089, - 71, 2081, 71, 2904, 2082, 71, 2092, 71, 2086, 71, - 2091, 2093, 71, 71, 71, 71, 2088, 2090, 71, 71, - 2099, 71, 2095, 2094, 2098, 2101, 71, 71, 2096, 71, - 71, 71, 2105, 2104, 2097, 2103, 71, 2100, 2107, 71, - 71, 71, 2111, 71, 71, 2102, 71, 2106, 71, 71, - - 2116, 71, 71, 2115, 71, 2108, 2109, 71, 71, 2110, - 2120, 71, 71, 2114, 2112, 71, 71, 2125, 71, 2113, - 71, 2117, 2118, 2119, 2121, 2122, 2123, 71, 71, 2126, - 2127, 71, 71, 71, 71, 71, 71, 2130, 2131, 71, - 71, 2124, 71, 2129, 2135, 71, 71, 2128, 2133, 71, - 2137, 2138, 2140, 71, 2142, 71, 71, 2134, 71, 2132, - 71, 2143, 71, 2141, 2139, 71, 2136, 2144, 2146, 71, - 71, 71, 2147, 71, 2148, 71, 71, 2153, 2145, 2149, - 2150, 2154, 2151, 71, 71, 71, 2159, 71, 2155, 2152, - 71, 2158, 71, 71, 2157, 71, 2156, 71, 2160, 71, - - 71, 2166, 71, 71, 71, 71, 2161, 71, 71, 71, - 71, 2164, 2168, 2162, 2167, 2163, 2165, 2169, 71, 71, - 2170, 2172, 2171, 71, 2174, 71, 2173, 2214, 2175, 2189, - 2176, 2177, 71, 71, 2178, 2179, 71, 71, 71, 2182, - 2180, 2183, 71, 2181, 2904, 71, 71, 71, 2184, 71, - 71, 2186, 71, 71, 2190, 71, 2185, 71, 2187, 2191, - 2192, 2193, 71, 71, 71, 71, 2188, 71, 2194, 2198, - 71, 2197, 71, 2195, 71, 71, 71, 2200, 71, 71, - 71, 71, 2207, 2204, 71, 2196, 2206, 2199, 71, 71, - 2208, 2212, 2203, 71, 71, 2201, 2202, 71, 71, 2211, - - 2205, 71, 71, 2216, 71, 71, 2213, 2209, 2217, 2210, - 71, 2219, 71, 2221, 71, 2215, 2220, 2223, 71, 71, - 71, 2225, 71, 71, 71, 71, 2222, 71, 71, 2224, - 2218, 71, 71, 2229, 2233, 71, 2231, 2232, 2227, 2234, - 71, 2226, 2235, 2228, 71, 2236, 71, 71, 71, 71, - 71, 2230, 71, 71, 2239, 2242, 71, 2244, 71, 2243, - 71, 71, 2237, 71, 71, 2241, 2247, 71, 71, 2238, - 2254, 2240, 71, 2250, 71, 2246, 2245, 2251, 71, 2252, - 2248, 71, 2249, 71, 71, 71, 2253, 71, 2259, 71, - 2260, 71, 2258, 2261, 71, 2262, 71, 2255, 2256, 71, - - 71, 71, 71, 2266, 71, 2257, 2265, 71, 2267, 71, - 71, 2263, 71, 2272, 71, 71, 2268, 71, 2264, 2274, - 71, 2269, 2275, 71, 71, 71, 71, 71, 2271, 2277, - 2270, 71, 2278, 71, 2273, 2276, 2281, 71, 2279, 2284, - 71, 71, 71, 71, 71, 71, 71, 2280, 71, 71, - 2285, 71, 2291, 2282, 71, 71, 71, 2283, 2288, 2293, - 71, 71, 2290, 2287, 2292, 2302, 71, 2295, 2286, 2294, - 2289, 71, 71, 71, 2298, 2299, 71, 2300, 2296, 2303, - 71, 2301, 71, 2297, 71, 2304, 71, 2305, 71, 2306, - 71, 2307, 71, 2308, 71, 71, 71, 71, 71, 71, - - 2317, 71, 2318, 71, 71, 2314, 71, 2321, 71, 2309, - 71, 71, 2310, 2311, 71, 2320, 2312, 2313, 2315, 2316, - 2322, 2323, 71, 71, 71, 71, 2319, 71, 2324, 71, - 2326, 71, 2325, 2332, 71, 2333, 71, 71, 2334, 2327, - 71, 71, 71, 2328, 71, 2329, 71, 2330, 2331, 71, - 2904, 2338, 71, 2343, 71, 2335, 2336, 2341, 71, 2337, - 2342, 71, 2339, 2344, 2345, 71, 71, 71, 71, 2340, - 71, 71, 71, 71, 71, 71, 2347, 2351, 71, 71, - 71, 71, 2349, 2355, 2372, 2346, 71, 2348, 2356, 71, - 2360, 2350, 2358, 2352, 2353, 71, 2357, 71, 2354, 2359, - - 71, 2362, 2363, 71, 71, 71, 71, 2367, 71, 71, - 2361, 2369, 71, 71, 2371, 71, 71, 2364, 2374, 71, - 71, 2368, 71, 2375, 71, 2365, 2366, 71, 2373, 2377, - 71, 71, 2370, 2904, 71, 71, 71, 2378, 2382, 71, - 2379, 2385, 2376, 2380, 2381, 71, 2383, 2384, 71, 71, - 2386, 71, 71, 71, 71, 71, 2388, 2904, 71, 71, - 2389, 71, 2392, 2387, 2391, 71, 2394, 2397, 71, 71, - 2395, 71, 2390, 2393, 2396, 2398, 71, 71, 2399, 71, - 2403, 71, 2400, 71, 71, 2405, 71, 2401, 2404, 71, - 2408, 71, 2409, 71, 2407, 71, 2406, 2402, 2411, 71, - - 71, 2413, 2904, 2412, 71, 71, 2414, 71, 2410, 2415, - 2416, 2417, 71, 71, 71, 71, 2418, 71, 2419, 71, - 71, 71, 71, 2420, 71, 2423, 71, 2422, 71, 2425, - 2421, 2426, 71, 2424, 2427, 71, 71, 2428, 71, 71, - 2429, 71, 2434, 71, 2430, 71, 71, 2432, 2433, 2431, - 71, 71, 2435, 2439, 71, 71, 71, 71, 2443, 71, - 71, 71, 71, 71, 2436, 2441, 2437, 2447, 71, 2438, - 2440, 2473, 2442, 2450, 2444, 2445, 2448, 71, 2451, 71, - 2452, 2446, 2453, 71, 71, 71, 71, 2449, 71, 71, - 71, 71, 71, 2454, 2455, 2458, 71, 2456, 71, 2461, - - 2462, 71, 71, 2457, 2463, 71, 2459, 2464, 71, 2465, - 71, 2460, 2467, 71, 71, 2470, 71, 2468, 71, 2471, - 71, 71, 2466, 2472, 71, 71, 2477, 71, 71, 2474, - 71, 2478, 71, 2469, 2479, 71, 2481, 71, 71, 2475, - 71, 2485, 71, 2480, 71, 2476, 2487, 71, 2486, 71, - 2483, 2482, 2488, 71, 2484, 71, 71, 2489, 71, 2494, - 71, 71, 2493, 71, 71, 71, 2498, 2490, 2496, 2497, - 71, 2499, 71, 2491, 71, 2492, 71, 2500, 71, 2502, - 71, 71, 71, 2509, 71, 2495, 2505, 71, 71, 71, - 2904, 71, 2515, 71, 71, 2503, 2504, 2501, 2506, 2511, - - 2512, 2508, 2507, 71, 2516, 2513, 71, 2510, 2514, 71, - 2517, 71, 2518, 71, 2519, 71, 71, 71, 71, 71, - 2523, 2521, 71, 2527, 71, 71, 71, 2524, 2528, 2530, - 71, 2520, 71, 71, 2532, 71, 71, 2522, 71, 2525, - 2531, 2533, 2526, 71, 2529, 2534, 71, 2535, 71, 71, - 2538, 71, 2536, 2539, 71, 2540, 71, 2537, 2541, 2543, - 71, 71, 2547, 71, 2544, 71, 71, 71, 71, 71, - 2546, 2542, 71, 2545, 71, 71, 2549, 2554, 71, 71, - 2550, 2552, 71, 71, 2548, 71, 2555, 2557, 71, 2559, - 2558, 71, 71, 71, 2551, 2553, 71, 2561, 2569, 2556, - - 2560, 71, 2562, 2564, 71, 2563, 2565, 71, 2566, 71, - 71, 71, 2571, 2568, 2575, 71, 2570, 71, 71, 2567, - 2572, 71, 2573, 2574, 71, 71, 71, 2579, 71, 71, - 2577, 2581, 71, 71, 71, 71, 2585, 71, 71, 71, - 71, 71, 2576, 71, 2578, 2588, 71, 71, 2582, 2583, - 71, 2586, 2587, 2580, 71, 2584, 2589, 71, 2592, 2590, - 2595, 71, 2593, 2597, 71, 2591, 2594, 2598, 71, 71, - 2600, 71, 71, 2596, 71, 71, 71, 2605, 71, 2604, - 71, 71, 71, 71, 2609, 71, 71, 71, 2601, 71, - 2599, 2602, 2603, 71, 2611, 2613, 71, 2614, 71, 2610, - - 2606, 2608, 2616, 71, 2607, 71, 71, 2615, 2612, 71, - 71, 2621, 71, 2620, 71, 2619, 2618, 71, 2625, 71, - 71, 71, 2617, 2626, 2623, 71, 2627, 71, 2622, 2630, - 2624, 2631, 71, 2628, 2629, 71, 71, 2633, 71, 2632, - 71, 71, 71, 71, 2638, 2634, 2635, 2636, 71, 71, - 71, 2641, 71, 2642, 71, 2645, 71, 2637, 2644, 2643, - 2646, 71, 71, 71, 71, 2639, 2640, 2647, 71, 2649, - 2650, 71, 2651, 71, 2652, 71, 71, 2648, 2654, 71, - 71, 2653, 71, 71, 71, 2659, 71, 2655, 2660, 71, - 71, 71, 71, 2664, 71, 71, 2666, 2667, 71, 71, - - 2661, 2663, 2656, 71, 2657, 2658, 2668, 71, 2669, 2671, - 2662, 71, 71, 2670, 2665, 71, 2674, 71, 71, 71, - 2673, 71, 71, 2672, 2675, 71, 71, 2678, 71, 71, - 71, 71, 2680, 71, 71, 71, 2681, 2679, 2676, 71, - 71, 2677, 71, 2693, 71, 71, 2904, 2690, 2682, 2686, - 2683, 2684, 2685, 2694, 71, 2691, 2687, 2688, 2692, 71, - 71, 2689, 71, 2695, 2696, 71, 2697, 71, 2698, 2699, - 71, 71, 2700, 2701, 2704, 71, 2702, 2703, 2706, 71, - 2705, 71, 71, 71, 2709, 71, 71, 2710, 2708, 71, - 71, 71, 71, 2711, 2712, 71, 2707, 71, 2713, 71, - - 2717, 2718, 71, 71, 2716, 71, 2714, 2719, 71, 71, - 2715, 71, 2720, 2724, 2721, 2726, 71, 71, 2725, 71, - 2722, 71, 2730, 2723, 71, 71, 2729, 71, 2727, 2731, - 71, 2728, 2733, 71, 2848, 2734, 2735, 71, 2736, 71, - 2737, 71, 2738, 71, 2732, 2739, 71, 2740, 71, 2741, - 71, 2742, 71, 71, 2744, 71, 71, 71, 71, 2747, - 71, 71, 2743, 71, 71, 2751, 71, 2753, 71, 71, - 71, 71, 2748, 2755, 2749, 2750, 2745, 2746, 71, 2757, - 71, 2752, 71, 2760, 71, 2759, 71, 2754, 71, 71, - 71, 71, 71, 2762, 71, 2767, 71, 2756, 2758, 71, - - 2761, 2768, 71, 2763, 2769, 71, 71, 2765, 2764, 2766, - 71, 71, 71, 2774, 2772, 2771, 71, 71, 71, 2770, - 2778, 71, 2777, 71, 2780, 71, 71, 2776, 71, 71, - 71, 2773, 71, 71, 71, 2775, 2779, 71, 2781, 2791, - 71, 71, 71, 71, 2875, 2782, 2783, 71, 2784, 2786, - 71, 2787, 2792, 2788, 2785, 2789, 71, 2790, 2793, 71, - 71, 2794, 2795, 71, 2796, 71, 2797, 71, 71, 71, - 2798, 2799, 2800, 71, 2801, 71, 2804, 71, 2807, 71, - 71, 2802, 71, 2809, 71, 71, 71, 71, 2803, 2805, - 2812, 71, 71, 2813, 71, 2814, 2816, 2806, 71, 2808, - - 2810, 2817, 71, 71, 2811, 71, 71, 71, 2821, 71, - 71, 71, 2818, 2815, 2824, 71, 2819, 71, 71, 71, - 71, 71, 2826, 71, 2820, 2823, 2822, 71, 2831, 71, - 71, 71, 2828, 2829, 2832, 2825, 2836, 2827, 2835, 71, - 2830, 2837, 71, 2838, 71, 2833, 71, 71, 71, 2834, - 71, 2839, 2843, 2840, 71, 2841, 2845, 71, 71, 2844, - 71, 71, 71, 2842, 2846, 71, 2851, 71, 71, 71, - 71, 2854, 71, 2855, 71, 71, 71, 71, 71, 71, - 2847, 2849, 2853, 2858, 2850, 2856, 2852, 2859, 2857, 71, - 2861, 71, 2862, 71, 2860, 71, 2866, 71, 2863, 71, - - 2868, 71, 2864, 71, 2869, 2865, 2870, 71, 71, 2873, - 71, 71, 71, 71, 2871, 71, 2867, 2874, 2876, 71, - 2877, 71, 2878, 71, 2882, 71, 2880, 2872, 71, 71, - 2879, 71, 71, 71, 2884, 71, 2885, 71, 2888, 2889, - 71, 71, 2881, 71, 2892, 2893, 71, 2883, 71, 2895, - 71, 2886, 2887, 71, 2890, 2894, 2896, 71, 71, 71, - 2891, 71, 71, 2904, 2898, 2897, 2899, 2902, 71, 2903, - 71, 2904, 2900, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2901, 43, 43, 43, 43, 43, 43, 43, 48, - 48, 48, 48, 48, 48, 48, 53, 53, 53, 53, - - 53, 53, 53, 59, 59, 59, 59, 59, 59, 59, - 64, 64, 64, 64, 64, 64, 64, 74, 74, 2904, - 74, 74, 74, 74, 140, 140, 2904, 2904, 2904, 140, - 140, 142, 142, 2904, 2904, 142, 2904, 142, 144, 2904, - 2904, 2904, 2904, 2904, 144, 147, 147, 2904, 2904, 2904, - 147, 147, 149, 2904, 2904, 2904, 2904, 2904, 149, 151, - 151, 2904, 151, 151, 151, 151, 75, 75, 2904, 75, - 75, 75, 75, 13, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904 + 389, 71, 390, 71, 399, 402, 394, 396, 71, 71, + + 398, 71, 403, 71, 71, 401, 71, 71, 413, 417, + 404, 400, 71, 411, 71, 71, 143, 414, 71, 415, + 71, 405, 71, 424, 406, 412, 141, 71, 418, 407, + 408, 409, 410, 427, 419, 416, 71, 422, 420, 421, + 71, 71, 423, 71, 425, 430, 71, 426, 71, 428, + 429, 71, 432, 431, 71, 71, 71, 71, 71, 71, + 434, 439, 71, 71, 71, 71, 442, 71, 435, 433, + 441, 71, 71, 453, 438, 71, 436, 448, 437, 71, + 443, 455, 440, 71, 444, 71, 446, 71, 447, 71, + 445, 71, 449, 71, 454, 71, 456, 71, 71, 71, + + 71, 457, 71, 71, 71, 450, 468, 458, 451, 71, + 452, 459, 469, 483, 470, 467, 471, 474, 71, 460, + 71, 461, 568, 462, 482, 71, 484, 71, 472, 150, + 71, 485, 71, 486, 71, 71, 463, 488, 71, 464, + 492, 465, 71, 466, 473, 71, 71, 475, 476, 489, + 487, 490, 71, 71, 491, 71, 493, 477, 494, 478, + 479, 480, 496, 71, 481, 71, 495, 71, 71, 71, + 71, 504, 497, 71, 502, 499, 498, 71, 71, 505, + 501, 71, 503, 500, 71, 507, 509, 71, 71, 71, + 506, 71, 71, 512, 71, 508, 513, 514, 71, 71, + + 71, 71, 519, 511, 71, 516, 71, 524, 521, 510, + 517, 515, 518, 71, 71, 71, 526, 522, 71, 71, + 520, 71, 71, 71, 150, 71, 71, 534, 530, 71, + 535, 527, 523, 525, 533, 529, 528, 537, 536, 531, + 71, 532, 71, 71, 538, 71, 539, 541, 71, 540, + 71, 543, 71, 545, 71, 71, 71, 71, 548, 71, + 546, 549, 71, 550, 71, 544, 71, 71, 542, 547, + 71, 553, 71, 555, 71, 554, 71, 551, 71, 71, + 71, 556, 71, 561, 71, 552, 557, 71, 562, 71, + 560, 71, 564, 71, 563, 71, 558, 559, 565, 71, + + 567, 71, 569, 571, 71, 71, 71, 71, 566, 71, + 570, 71, 71, 572, 579, 71, 581, 582, 574, 71, + 71, 578, 71, 71, 580, 573, 71, 575, 71, 576, + 586, 577, 71, 583, 584, 588, 71, 585, 589, 71, + 71, 71, 591, 587, 71, 592, 71, 71, 71, 71, + 71, 595, 71, 596, 598, 71, 597, 71, 71, 71, + 71, 593, 590, 71, 612, 71, 599, 594, 601, 148, + 71, 600, 71, 602, 611, 71, 649, 610, 603, 615, + 604, 614, 613, 71, 71, 618, 605, 71, 606, 616, + 71, 607, 608, 617, 622, 619, 621, 71, 609, 620, + + 71, 71, 71, 71, 625, 623, 71, 628, 71, 71, + 630, 71, 71, 624, 71, 71, 71, 71, 71, 71, + 71, 71, 636, 627, 632, 626, 631, 637, 641, 633, + 71, 71, 71, 629, 634, 643, 639, 640, 635, 638, + 150, 71, 644, 71, 642, 71, 71, 645, 71, 71, + 71, 652, 650, 654, 71, 71, 71, 71, 71, 647, + 655, 648, 646, 651, 653, 657, 71, 656, 71, 658, + 71, 71, 660, 659, 71, 71, 71, 71, 663, 662, + 71, 668, 758, 661, 71, 664, 669, 71, 671, 71, + 672, 71, 665, 667, 673, 666, 71, 670, 674, 71, + + 71, 675, 71, 676, 71, 71, 71, 678, 71, 71, + 679, 71, 71, 71, 682, 71, 681, 677, 683, 71, + 687, 71, 71, 686, 71, 680, 71, 690, 688, 71, + 692, 71, 71, 71, 685, 684, 71, 693, 71, 689, + 71, 695, 71, 699, 71, 694, 696, 71, 71, 691, + 697, 698, 701, 702, 71, 705, 71, 71, 700, 704, + 707, 71, 71, 71, 71, 706, 708, 71, 703, 710, + 711, 71, 71, 71, 71, 71, 712, 71, 71, 713, + 715, 71, 717, 719, 71, 71, 71, 716, 709, 71, + 714, 71, 146, 724, 720, 718, 731, 721, 723, 725, + + 71, 71, 722, 71, 727, 71, 726, 728, 729, 71, + 71, 71, 730, 734, 71, 71, 736, 737, 71, 71, + 735, 732, 71, 738, 739, 733, 71, 71, 71, 740, + 71, 745, 71, 71, 71, 71, 71, 71, 749, 741, + 742, 748, 747, 751, 71, 71, 752, 743, 744, 71, + 753, 746, 754, 750, 71, 756, 71, 755, 71, 71, + 71, 760, 71, 71, 71, 71, 766, 71, 71, 757, + 71, 767, 71, 71, 71, 759, 71, 768, 761, 71, + 762, 763, 773, 764, 71, 765, 775, 71, 769, 770, + 71, 71, 71, 71, 771, 71, 71, 71, 772, 774, + + 780, 776, 777, 71, 71, 71, 71, 71, 788, 71, + 778, 71, 779, 781, 71, 783, 71, 71, 789, 782, + 787, 71, 784, 785, 786, 792, 793, 791, 790, 71, + 71, 71, 71, 794, 71, 71, 71, 798, 797, 71, + 800, 799, 71, 796, 801, 71, 71, 71, 795, 803, + 71, 71, 150, 71, 802, 804, 806, 808, 71, 805, + 71, 809, 807, 71, 810, 811, 71, 71, 813, 816, + 71, 71, 812, 71, 817, 819, 71, 71, 822, 71, + 814, 71, 818, 71, 71, 824, 820, 71, 815, 71, + 821, 828, 71, 71, 71, 825, 71, 71, 71, 823, + + 829, 830, 71, 71, 71, 71, 71, 827, 71, 834, + 872, 831, 826, 835, 841, 71, 836, 839, 833, 71, + 840, 832, 843, 837, 71, 842, 838, 71, 844, 71, + 845, 71, 846, 848, 71, 71, 851, 71, 847, 71, + 71, 71, 71, 71, 859, 71, 863, 145, 849, 864, + 71, 71, 865, 71, 866, 850, 71, 852, 853, 861, + 854, 860, 862, 855, 71, 868, 867, 71, 856, 71, + 71, 71, 869, 870, 857, 858, 871, 71, 71, 71, + 71, 873, 875, 71, 71, 879, 71, 71, 878, 71, + 71, 882, 71, 71, 886, 71, 874, 888, 71, 876, + + 71, 880, 877, 881, 884, 883, 71, 889, 973, 71, + 892, 887, 890, 71, 891, 885, 71, 893, 71, 71, + 895, 896, 71, 71, 894, 71, 71, 71, 897, 899, + 71, 900, 71, 898, 71, 901, 71, 71, 71, 906, + 71, 903, 71, 909, 904, 71, 71, 71, 71, 71, + 71, 907, 902, 908, 71, 71, 911, 905, 71, 912, + 913, 915, 71, 914, 71, 910, 71, 916, 71, 919, + 71, 71, 71, 918, 71, 927, 71, 924, 917, 71, + 922, 920, 71, 71, 926, 925, 71, 71, 929, 921, + 71, 71, 71, 71, 71, 71, 923, 71, 940, 937, + + 928, 71, 935, 71, 71, 71, 71, 930, 71, 933, + 931, 932, 934, 71, 941, 938, 71, 936, 942, 71, + 939, 71, 943, 948, 71, 945, 947, 944, 949, 71, + 946, 71, 71, 71, 71, 71, 957, 71, 950, 959, + 952, 71, 71, 71, 961, 71, 962, 71, 71, 71, + 71, 951, 71, 953, 955, 958, 954, 956, 71, 71, + 965, 970, 963, 960, 967, 71, 964, 71, 966, 974, + 968, 71, 969, 71, 71, 71, 971, 976, 71, 71, + 71, 979, 150, 972, 71, 978, 71, 71, 982, 71, + 981, 71, 71, 71, 975, 71, 985, 977, 71, 980, + + 71, 71, 71, 997, 71, 71, 1000, 71, 998, 71, + 71, 983, 984, 71, 986, 988, 71, 987, 989, 71, + 999, 990, 71, 1002, 1004, 991, 71, 992, 1003, 1049, + 71, 993, 71, 994, 1001, 1005, 1007, 71, 995, 71, + 1006, 1008, 71, 996, 71, 71, 1009, 71, 1010, 71, + 1012, 71, 1011, 1015, 1014, 71, 1019, 1020, 1021, 71, + 1013, 1018, 71, 71, 1022, 1017, 1023, 71, 1016, 71, + 71, 71, 71, 71, 71, 71, 71, 1038, 71, 1035, + 71, 71, 71, 1039, 71, 1034, 1045, 1037, 1026, 1024, + 1025, 71, 1027, 71, 1036, 1041, 71, 1028, 1046, 1029, + + 71, 1040, 1050, 1042, 71, 1030, 1044, 71, 71, 71, + 1031, 1032, 1047, 71, 71, 1043, 71, 1033, 1051, 1048, + 71, 71, 1056, 71, 71, 1053, 71, 71, 71, 1054, + 71, 1059, 1057, 1052, 71, 71, 71, 1055, 143, 71, + 71, 71, 71, 1058, 1061, 1066, 71, 1060, 1063, 1064, + 1065, 1068, 1067, 71, 1062, 71, 71, 71, 1069, 71, + 1070, 71, 71, 71, 71, 71, 71, 1076, 1077, 1078, + 1073, 71, 1080, 1071, 1072, 1079, 1075, 1074, 1081, 71, + 1084, 1083, 71, 71, 71, 1085, 71, 71, 1086, 71, + 71, 1087, 1082, 1088, 71, 71, 1089, 71, 1094, 1096, + + 71, 71, 71, 1090, 71, 71, 1099, 1091, 1092, 1093, + 71, 71, 71, 1097, 71, 71, 1100, 1095, 1101, 1102, + 1103, 1098, 71, 71, 1104, 71, 1108, 71, 1105, 1109, + 71, 1107, 71, 71, 71, 71, 1110, 1112, 71, 1106, + 71, 1113, 71, 71, 1119, 71, 1117, 71, 1120, 71, + 71, 1111, 1121, 1114, 71, 71, 71, 1115, 1118, 1124, + 1122, 1123, 1116, 71, 1127, 71, 71, 1125, 1129, 71, + 71, 1128, 71, 71, 71, 71, 71, 71, 1133, 1134, + 71, 1130, 1131, 1126, 71, 71, 71, 1139, 1135, 1140, + 1143, 71, 1132, 71, 71, 71, 1137, 71, 1136, 1142, + + 71, 1141, 1147, 71, 1138, 71, 71, 71, 71, 71, + 71, 1153, 71, 71, 1145, 1146, 1144, 1149, 71, 71, + 71, 71, 71, 1148, 71, 1157, 1150, 1154, 1201, 1152, + 1158, 1156, 1161, 1155, 1151, 1159, 71, 1162, 71, 71, + 71, 71, 1160, 71, 1163, 71, 1165, 1164, 71, 71, + 71, 71, 71, 71, 1166, 1168, 71, 1174, 71, 1171, + 71, 71, 1167, 71, 1169, 71, 71, 141, 1172, 71, + 1170, 1178, 71, 1184, 1175, 1173, 71, 71, 1177, 1176, + 71, 1180, 1185, 1187, 71, 71, 1179, 1186, 1188, 71, + 1181, 71, 1182, 71, 71, 1183, 1191, 71, 1190, 1193, + + 71, 71, 1189, 1196, 71, 71, 1197, 71, 1194, 71, + 1198, 71, 1192, 71, 1200, 71, 71, 71, 71, 1195, + 1202, 71, 71, 71, 71, 71, 71, 1199, 1203, 1206, + 1204, 1208, 1213, 1207, 1209, 1205, 71, 71, 71, 71, + 1210, 1218, 71, 1212, 1211, 71, 71, 71, 1217, 71, + 71, 1214, 71, 1220, 1222, 1224, 1219, 1215, 1216, 71, + 1225, 71, 1223, 71, 71, 1229, 1221, 71, 1238, 71, + 71, 1226, 71, 1227, 71, 1240, 1228, 71, 1237, 71, + 1236, 1241, 1230, 71, 1239, 1231, 1232, 1242, 71, 71, + 1233, 71, 71, 71, 1243, 71, 1234, 1244, 71, 1245, + + 1235, 71, 1247, 71, 71, 71, 1248, 71, 1249, 1246, + 71, 1250, 1254, 1251, 1252, 71, 1257, 1258, 71, 1267, + 71, 71, 71, 71, 1253, 1259, 71, 1261, 1256, 1255, + 1260, 71, 1262, 71, 1263, 71, 1264, 1269, 1265, 71, + 1266, 71, 1268, 71, 71, 71, 71, 71, 1273, 71, + 1270, 1276, 1272, 1274, 71, 71, 71, 71, 1278, 1271, + 71, 1277, 71, 71, 1279, 1281, 1275, 1283, 71, 1285, + 1282, 71, 71, 71, 1280, 1289, 71, 1284, 1288, 1291, + 71, 71, 71, 1292, 71, 1293, 1286, 1290, 71, 1294, + 71, 1297, 71, 71, 1299, 71, 1287, 71, 1300, 1296, + + 71, 71, 71, 1304, 71, 1301, 71, 1295, 71, 71, + 71, 1306, 71, 1298, 71, 1308, 1310, 71, 71, 2912, + 71, 1309, 1302, 1303, 71, 1314, 1305, 1312, 71, 1307, + 71, 71, 71, 1313, 71, 1311, 1315, 1317, 1316, 1318, + 71, 1319, 71, 71, 71, 71, 1321, 1320, 1325, 1322, + 1326, 1323, 71, 1328, 71, 71, 71, 1327, 1324, 71, + 71, 71, 1332, 71, 1329, 71, 71, 71, 1336, 1337, + 71, 1339, 1331, 71, 71, 71, 1338, 71, 71, 1330, + 71, 71, 71, 71, 1346, 1333, 1334, 1340, 71, 71, + 1335, 71, 1343, 1341, 71, 1344, 1351, 71, 1342, 1350, + + 1345, 71, 71, 71, 71, 1355, 71, 1353, 1347, 1349, + 1356, 71, 71, 1358, 1348, 71, 71, 71, 71, 71, + 1360, 71, 1354, 1359, 1352, 71, 1364, 1366, 1368, 1365, + 1357, 1361, 1362, 1367, 71, 1363, 71, 71, 71, 71, + 1369, 71, 71, 71, 1372, 71, 71, 1374, 1370, 71, + 1376, 71, 71, 1378, 71, 1381, 1382, 1371, 71, 1373, + 71, 1375, 1385, 71, 71, 71, 1377, 1379, 71, 1380, + 71, 71, 71, 71, 71, 1386, 1383, 71, 1392, 1384, + 1389, 1393, 1394, 1387, 1388, 71, 1390, 71, 71, 1397, + 71, 1391, 71, 71, 71, 1402, 1396, 2912, 1399, 1401, + + 1403, 71, 71, 1395, 71, 1398, 71, 71, 1404, 71, + 1405, 1406, 71, 71, 1400, 71, 71, 1407, 1410, 71, + 1409, 71, 1413, 71, 1408, 71, 1412, 71, 71, 71, + 1419, 1411, 1416, 1415, 1421, 1420, 71, 71, 71, 1422, + 71, 71, 1417, 1414, 71, 1424, 71, 1427, 1418, 71, + 71, 71, 71, 1432, 1428, 71, 71, 1423, 1435, 71, + 1425, 1433, 71, 71, 71, 1426, 1438, 71, 1437, 1429, + 1431, 1430, 71, 71, 71, 71, 71, 71, 71, 1446, + 71, 1434, 1436, 2912, 71, 71, 1439, 1447, 1449, 71, + 1443, 71, 1440, 1441, 1442, 1445, 1450, 1448, 1444, 71, + + 71, 71, 71, 1451, 71, 71, 71, 1455, 71, 1458, + 1453, 1456, 71, 1452, 71, 1454, 1462, 71, 71, 71, + 71, 1459, 71, 1463, 1457, 1464, 1465, 71, 1460, 71, + 1461, 1466, 1467, 1470, 1471, 71, 71, 1468, 71, 71, + 71, 71, 1475, 71, 1476, 1474, 1478, 71, 71, 1469, + 71, 1479, 1480, 71, 1472, 71, 71, 71, 71, 1473, + 1483, 71, 71, 1477, 71, 1486, 71, 71, 71, 71, + 1485, 1481, 1482, 1490, 71, 1492, 71, 1487, 1484, 71, + 71, 71, 1496, 1491, 71, 71, 1489, 1488, 71, 71, + 71, 1501, 71, 1499, 1493, 1494, 71, 71, 1497, 71, + + 1502, 71, 1504, 1498, 1495, 1500, 71, 71, 71, 1503, + 1506, 1507, 71, 1509, 1510, 71, 71, 71, 71, 1505, + 71, 71, 1517, 71, 71, 1508, 71, 71, 1518, 71, + 1511, 1512, 1515, 71, 71, 1513, 1514, 71, 1521, 1522, + 71, 71, 1524, 71, 1519, 1516, 1520, 1523, 1525, 1526, + 1528, 1529, 71, 1527, 71, 71, 71, 1530, 71, 71, + 1531, 71, 71, 1535, 71, 1532, 1533, 71, 1536, 71, + 71, 71, 1538, 1540, 71, 1541, 1534, 71, 1537, 71, + 1547, 71, 71, 1542, 1539, 1544, 71, 71, 1545, 71, + 1549, 71, 1548, 71, 1550, 1553, 1552, 1543, 71, 71, + + 1546, 71, 71, 1554, 1551, 71, 1555, 71, 1556, 1557, + 1561, 71, 1559, 71, 71, 71, 1558, 1563, 1564, 1565, + 1560, 71, 1567, 71, 71, 71, 1566, 71, 71, 1570, + 71, 71, 1569, 1562, 71, 71, 1571, 71, 71, 71, + 71, 1579, 71, 71, 71, 71, 1568, 71, 71, 71, + 1577, 71, 1572, 1575, 1576, 1573, 1578, 1574, 71, 1582, + 1584, 71, 1580, 1586, 1581, 71, 1587, 71, 71, 1583, + 71, 1585, 71, 1590, 71, 71, 71, 71, 71, 71, + 2912, 1592, 1588, 1594, 1589, 71, 1591, 1595, 1601, 1593, + 1596, 1597, 1598, 1602, 71, 1603, 71, 1599, 71, 71, + + 71, 1607, 71, 1606, 1600, 71, 71, 71, 71, 71, + 1604, 71, 1610, 1611, 71, 71, 1619, 1605, 1608, 71, + 71, 71, 71, 1614, 71, 1609, 71, 1613, 1612, 1616, + 1618, 71, 1617, 71, 1615, 1620, 71, 1622, 71, 1621, + 71, 71, 71, 1629, 1623, 1624, 71, 71, 71, 1625, + 1626, 71, 1633, 1632, 71, 71, 1631, 71, 71, 1628, + 71, 71, 1630, 1640, 1635, 1627, 1634, 1636, 1641, 71, + 71, 1643, 1637, 71, 1642, 1647, 1639, 71, 1638, 1644, + 1645, 71, 1646, 1648, 71, 71, 1652, 71, 71, 71, + 1649, 71, 71, 1650, 71, 1656, 71, 1654, 71, 1651, + + 1653, 71, 71, 1655, 1657, 71, 71, 71, 71, 71, + 1658, 1661, 1668, 1660, 1666, 71, 71, 1659, 71, 1662, + 1663, 1669, 1664, 1665, 71, 71, 71, 71, 71, 1670, + 71, 1675, 71, 71, 1679, 71, 1667, 71, 71, 2912, + 71, 1674, 71, 1672, 1671, 1673, 1681, 71, 1677, 71, + 71, 1678, 1676, 71, 1682, 1683, 71, 71, 1680, 1688, + 71, 1684, 1685, 1686, 71, 71, 1689, 1692, 71, 71, + 71, 71, 1687, 71, 71, 71, 1690, 1694, 71, 71, + 71, 1699, 71, 1693, 1691, 1695, 1696, 71, 1702, 1707, + 1697, 1700, 1703, 71, 71, 1698, 1701, 1704, 1705, 71, + + 71, 1708, 1709, 71, 71, 1706, 71, 71, 1711, 71, + 71, 71, 1712, 71, 71, 71, 1710, 71, 71, 71, + 1717, 71, 71, 1721, 71, 71, 1718, 71, 1722, 1727, + 1713, 1715, 1716, 1714, 1719, 71, 1720, 1726, 71, 71, + 1725, 1723, 71, 71, 1724, 71, 71, 1732, 1728, 71, + 71, 1735, 1736, 71, 1737, 71, 1739, 71, 1729, 1730, + 71, 1740, 1731, 1733, 71, 1734, 1738, 71, 1743, 71, + 71, 1745, 71, 1747, 1744, 1746, 71, 71, 1749, 71, + 71, 1752, 71, 71, 71, 1741, 1751, 1754, 1742, 71, + 1753, 71, 71, 71, 1748, 71, 1761, 71, 1763, 71, + + 71, 71, 71, 1764, 71, 1750, 71, 1755, 1756, 1757, + 71, 1759, 1760, 1765, 1758, 1768, 71, 1762, 1766, 1769, + 71, 1767, 1772, 1773, 71, 71, 1771, 71, 71, 1770, + 71, 1775, 71, 71, 1778, 1779, 71, 71, 1781, 71, + 71, 71, 71, 71, 1787, 71, 1786, 71, 1776, 71, + 1783, 1784, 71, 1774, 1777, 71, 1790, 1780, 71, 71, + 71, 1793, 71, 71, 1785, 1782, 71, 1791, 1788, 1797, + 1789, 1796, 71, 71, 71, 71, 1800, 1801, 71, 1795, + 1799, 71, 71, 71, 71, 1792, 1802, 71, 1794, 1803, + 1804, 71, 1798, 71, 1805, 71, 1808, 1806, 71, 71, + + 1811, 1812, 71, 1807, 71, 71, 71, 71, 71, 1815, + 2912, 71, 71, 1809, 71, 71, 1821, 1824, 71, 1814, + 71, 1822, 1813, 71, 1810, 1816, 1817, 1818, 71, 1819, + 1820, 71, 1823, 1828, 71, 1825, 71, 71, 71, 1826, + 71, 1829, 71, 1832, 1827, 1835, 71, 71, 1838, 71, + 1830, 71, 1837, 71, 1839, 71, 1831, 71, 71, 1840, + 1833, 1836, 1834, 71, 1845, 71, 1841, 1846, 71, 1842, + 1847, 1849, 1850, 71, 1843, 1848, 71, 71, 71, 71, + 71, 1854, 71, 1844, 1852, 71, 71, 71, 71, 1856, + 1859, 1861, 1853, 71, 1855, 71, 71, 71, 1857, 1851, + + 71, 71, 71, 71, 71, 1866, 71, 1862, 1865, 71, + 1867, 1873, 1863, 1858, 2912, 1860, 1868, 71, 1869, 71, + 1864, 1871, 71, 71, 1870, 71, 71, 71, 1872, 1874, + 71, 1876, 71, 1877, 1875, 71, 1879, 71, 71, 71, + 71, 1883, 71, 71, 1878, 1882, 71, 71, 1884, 1880, + 1881, 1885, 1886, 1887, 71, 71, 71, 71, 71, 71, + 71, 1894, 1892, 1888, 1889, 1893, 71, 71, 71, 1896, + 71, 71, 1900, 1895, 1890, 71, 1891, 71, 71, 1899, + 1897, 71, 71, 71, 1898, 1907, 1901, 1902, 1904, 1906, + 71, 71, 71, 2912, 1905, 71, 1912, 71, 71, 1903, + + 71, 1914, 71, 71, 71, 1915, 71, 1908, 1909, 71, + 1910, 1911, 1916, 71, 1917, 1913, 1918, 71, 1920, 71, + 71, 71, 71, 71, 1919, 71, 71, 71, 1921, 71, + 71, 71, 1928, 1923, 1924, 1925, 1932, 71, 71, 71, + 2912, 1922, 1927, 1931, 71, 1929, 71, 1935, 1933, 1930, + 71, 1926, 71, 71, 71, 1936, 1939, 1938, 1934, 1937, + 71, 71, 1943, 71, 1940, 1941, 71, 71, 1942, 71, + 71, 1947, 71, 71, 1949, 1945, 1951, 71, 71, 1946, + 71, 1944, 71, 71, 1954, 1953, 71, 1950, 1955, 1948, + 71, 1956, 71, 1959, 71, 71, 71, 71, 71, 71, + + 1960, 71, 71, 71, 1952, 1962, 2025, 1961, 1957, 1965, + 71, 1969, 1958, 71, 1966, 1963, 1964, 71, 1967, 71, + 71, 1968, 1971, 71, 1970, 1974, 71, 71, 71, 71, + 1976, 1972, 71, 1977, 71, 71, 1978, 1981, 71, 1973, + 1975, 71, 1983, 1979, 71, 71, 1980, 1984, 71, 71, + 1985, 71, 71, 71, 1988, 71, 1986, 1987, 1989, 1982, + 71, 1993, 71, 71, 1990, 71, 71, 71, 71, 1992, + 71, 71, 1991, 1994, 71, 71, 2002, 71, 71, 1997, + 71, 1995, 1996, 1998, 71, 2003, 1999, 2000, 71, 71, + 2001, 71, 2011, 2004, 2005, 2007, 2010, 2013, 71, 71, + + 2008, 71, 2015, 71, 71, 71, 2009, 2006, 2012, 2017, + 2014, 71, 71, 2020, 2022, 2023, 2018, 71, 2021, 71, + 71, 71, 71, 2016, 71, 2019, 71, 2024, 2027, 71, + 71, 2028, 2032, 71, 2034, 2031, 71, 2026, 71, 2033, + 2036, 71, 71, 71, 2038, 2029, 71, 2037, 2039, 71, + 71, 2041, 71, 71, 2035, 2040, 2030, 71, 71, 71, + 71, 2043, 2042, 2044, 71, 2046, 71, 71, 71, 2052, + 71, 2049, 71, 71, 71, 71, 2047, 2045, 2053, 2048, + 2055, 71, 71, 71, 2051, 2050, 71, 2054, 2059, 71, + 2062, 71, 71, 2057, 71, 71, 71, 71, 71, 2056, + + 2063, 2058, 2060, 71, 2061, 71, 71, 71, 2073, 71, + 71, 71, 71, 2064, 2065, 2074, 71, 2068, 2070, 2066, + 71, 2067, 2072, 2075, 2069, 2076, 2071, 71, 2078, 2077, + 2079, 71, 2080, 71, 71, 2081, 71, 2083, 71, 71, + 2086, 71, 71, 2087, 71, 71, 71, 2082, 2084, 2088, + 71, 2085, 2092, 71, 2093, 71, 2095, 71, 2091, 71, + 2097, 71, 2089, 71, 2912, 2090, 71, 2100, 71, 2094, + 71, 2099, 2101, 71, 71, 71, 71, 2096, 2098, 71, + 71, 2107, 71, 2103, 2102, 2106, 2109, 71, 71, 2104, + 71, 71, 71, 2113, 2112, 2105, 2111, 71, 2108, 2115, + + 71, 71, 71, 2119, 71, 71, 2110, 71, 2114, 71, + 71, 2124, 71, 71, 2123, 71, 2116, 2117, 71, 71, + 2118, 2128, 71, 71, 2122, 2120, 71, 71, 2133, 71, + 2121, 71, 2125, 2126, 2127, 2129, 2130, 2131, 71, 71, + 2134, 2135, 71, 71, 71, 71, 71, 71, 2138, 2139, + 71, 71, 2132, 71, 2137, 2143, 71, 71, 2136, 2141, + 71, 2145, 2146, 2148, 71, 2150, 71, 71, 2142, 71, + 2140, 71, 2151, 71, 2149, 2147, 71, 2144, 2152, 2154, + 71, 71, 71, 2155, 71, 2156, 71, 71, 2161, 2153, + 2157, 2158, 2162, 2159, 71, 71, 71, 2167, 71, 2163, + + 2160, 71, 2166, 71, 71, 2165, 71, 2164, 71, 2168, + 71, 71, 2174, 71, 71, 71, 71, 2169, 71, 71, + 71, 71, 2172, 2176, 2170, 2175, 2171, 2173, 2177, 71, + 71, 2178, 2180, 2179, 71, 2182, 71, 2181, 2222, 2183, + 2197, 2184, 2185, 71, 71, 2186, 2187, 71, 71, 71, + 2190, 2188, 2191, 71, 2189, 2912, 71, 71, 71, 2192, + 71, 71, 2194, 71, 71, 2198, 71, 2193, 71, 2195, + 2199, 2200, 2201, 71, 71, 71, 71, 2196, 71, 2202, + 2206, 71, 2205, 71, 2203, 71, 71, 71, 2208, 71, + 71, 71, 71, 2215, 2212, 71, 2204, 2214, 2207, 71, + + 71, 2216, 2220, 2211, 71, 71, 2209, 2210, 71, 71, + 2219, 2213, 71, 71, 2224, 71, 71, 2221, 2217, 2225, + 2218, 71, 2227, 71, 2229, 71, 2223, 2228, 2231, 71, + 71, 71, 2233, 71, 71, 71, 71, 2230, 71, 71, + 2232, 2226, 71, 71, 2237, 2241, 71, 2239, 2240, 2235, + 2242, 71, 2234, 2243, 2236, 71, 2244, 71, 71, 71, + 71, 71, 2238, 71, 71, 2247, 2250, 71, 2252, 71, + 2251, 71, 71, 2245, 71, 71, 2249, 2255, 71, 71, + 2246, 2262, 2248, 71, 2258, 71, 2254, 2253, 2259, 71, + 2260, 2256, 71, 2257, 71, 71, 71, 2261, 71, 2267, + + 71, 2268, 71, 2266, 2269, 71, 2270, 71, 2263, 2264, + 71, 71, 71, 71, 2274, 71, 2265, 2273, 71, 2275, + 71, 71, 2271, 71, 2280, 71, 71, 2276, 71, 2272, + 2282, 71, 2277, 2283, 71, 71, 71, 71, 71, 2279, + 2285, 2278, 71, 2286, 71, 2281, 2284, 2289, 71, 2287, + 2292, 71, 71, 71, 71, 71, 71, 71, 2288, 71, + 71, 2293, 71, 2299, 2290, 71, 71, 71, 2291, 2296, + 2301, 71, 71, 2298, 2295, 2300, 2310, 71, 2303, 2294, + 2302, 2297, 71, 71, 71, 2306, 2307, 71, 2308, 2304, + 2311, 71, 2309, 71, 2305, 71, 2312, 71, 2313, 71, + + 2314, 71, 2315, 71, 2316, 71, 71, 71, 71, 71, + 71, 2325, 71, 2326, 71, 71, 2322, 71, 2329, 71, + 2317, 71, 71, 2318, 2319, 71, 2328, 2320, 2321, 2323, + 2324, 2330, 2331, 71, 71, 71, 71, 2327, 71, 2332, + 71, 2334, 71, 2333, 2340, 71, 2341, 71, 71, 2342, + 2335, 71, 71, 71, 2336, 71, 2337, 71, 2338, 2339, + 71, 2912, 2346, 71, 2351, 71, 2343, 2344, 2349, 71, + 2345, 2350, 71, 2347, 2352, 2353, 71, 71, 71, 71, + 2348, 71, 71, 71, 71, 71, 71, 2355, 2359, 71, + 71, 71, 71, 2357, 2363, 2380, 2354, 71, 2356, 2364, + + 71, 2368, 2358, 2366, 2360, 2361, 71, 2365, 71, 2362, + 2367, 71, 2370, 2371, 71, 71, 71, 71, 2375, 71, + 71, 2369, 2377, 71, 71, 2379, 71, 71, 2372, 2382, + 71, 71, 2376, 71, 2383, 71, 2373, 2374, 71, 2381, + 2385, 71, 71, 2378, 2912, 71, 71, 71, 2386, 2390, + 71, 2387, 2393, 2384, 2388, 2389, 71, 2391, 2392, 71, + 71, 2394, 71, 71, 71, 71, 71, 2396, 2912, 71, + 71, 2397, 71, 2400, 2395, 2399, 71, 2402, 2405, 71, + 71, 2403, 71, 2398, 2401, 2404, 2406, 71, 71, 2407, + 71, 2411, 71, 2408, 71, 71, 2413, 71, 2409, 2412, + + 71, 2416, 71, 2417, 71, 2415, 71, 2414, 2410, 2419, + 71, 71, 2421, 2912, 2420, 71, 71, 2422, 71, 2418, + 2423, 2424, 2425, 71, 71, 71, 71, 2426, 71, 2427, + 71, 71, 71, 71, 2428, 71, 2431, 71, 2430, 71, + 2433, 2429, 2434, 71, 2432, 2435, 71, 71, 2436, 71, + 71, 2437, 71, 2442, 71, 2438, 71, 71, 2440, 2441, + 2439, 71, 71, 2443, 2447, 71, 71, 71, 71, 2451, + 71, 71, 71, 71, 71, 2444, 2449, 2445, 2455, 71, + 2446, 2448, 2481, 2450, 2458, 2452, 2453, 2456, 71, 2459, + 71, 2460, 2454, 2461, 71, 71, 71, 71, 2457, 71, + + 71, 71, 71, 71, 2462, 2463, 2466, 71, 2464, 71, + 2469, 2470, 71, 71, 2465, 2471, 71, 2467, 2472, 71, + 2473, 71, 2468, 2475, 71, 71, 2478, 71, 2476, 71, + 2479, 71, 71, 2474, 2480, 71, 71, 2485, 71, 71, + 2482, 71, 2486, 71, 2477, 2487, 71, 2489, 71, 71, + 2483, 71, 2493, 71, 2488, 71, 2484, 2495, 71, 2494, + 71, 2491, 2490, 2496, 71, 2492, 71, 71, 2497, 71, + 2502, 71, 71, 2501, 71, 71, 71, 2506, 2498, 2504, + 2505, 71, 2507, 71, 2499, 71, 2500, 71, 2508, 71, + 2510, 71, 71, 71, 2517, 71, 2503, 2513, 71, 71, + + 71, 2912, 71, 2523, 71, 71, 2511, 2512, 2509, 2514, + 2519, 2520, 2516, 2515, 71, 2524, 2521, 71, 2518, 2522, + 71, 2525, 71, 2526, 71, 2527, 71, 71, 71, 71, + 71, 2531, 2529, 71, 2535, 71, 71, 71, 2532, 2536, + 2538, 71, 2528, 71, 71, 2540, 71, 71, 2530, 71, + 2533, 2539, 2541, 2534, 71, 2537, 2542, 71, 2543, 71, + 71, 2546, 71, 2544, 2547, 71, 2548, 71, 2545, 2549, + 2551, 71, 71, 2555, 71, 2552, 71, 71, 71, 71, + 71, 2554, 2550, 71, 2553, 71, 71, 2557, 2562, 71, + 71, 2558, 2560, 71, 71, 2556, 71, 2563, 2565, 71, + + 2567, 2566, 71, 71, 71, 2559, 2561, 71, 2569, 2577, + 2564, 2568, 71, 2570, 2572, 71, 2571, 2573, 71, 2574, + 71, 71, 71, 2579, 2576, 2583, 71, 2578, 71, 71, + 2575, 2580, 71, 2581, 2582, 71, 71, 71, 2587, 71, + 71, 2585, 2589, 71, 71, 71, 71, 2593, 71, 71, + 71, 71, 71, 2584, 71, 2586, 2596, 71, 71, 2590, + 2591, 71, 2594, 2595, 2588, 71, 2592, 2597, 71, 2600, + 2598, 2603, 71, 2601, 2605, 71, 2599, 2602, 2606, 71, + 71, 2608, 71, 71, 2604, 71, 71, 71, 2613, 71, + 2612, 71, 71, 71, 71, 2617, 71, 71, 71, 2609, + + 71, 2607, 2610, 2611, 71, 2619, 2621, 71, 2622, 71, + 2618, 2614, 2616, 2624, 71, 2615, 71, 71, 2623, 2620, + 71, 71, 2629, 71, 2628, 71, 2627, 2626, 71, 2633, + 71, 71, 71, 2625, 2634, 2631, 71, 2635, 71, 2630, + 2638, 2632, 2639, 71, 2636, 2637, 71, 71, 2641, 71, + 2640, 71, 71, 71, 71, 2646, 2642, 2643, 2644, 71, + 71, 71, 2649, 71, 2650, 71, 2653, 71, 2645, 2652, + 2651, 2654, 71, 71, 71, 71, 2647, 2648, 2655, 71, + 2657, 2658, 71, 2659, 71, 2660, 71, 71, 2656, 2662, + 71, 71, 2661, 71, 71, 71, 2667, 71, 2663, 2668, + + 71, 71, 71, 71, 2672, 71, 71, 2674, 2675, 71, + 71, 2669, 2671, 2664, 71, 2665, 2666, 2676, 71, 2677, + 2679, 2670, 71, 71, 2678, 2673, 71, 2682, 71, 71, + 71, 2681, 71, 71, 2680, 2683, 71, 71, 2686, 71, + 71, 71, 71, 2688, 71, 71, 71, 2689, 2687, 2684, + 71, 71, 2685, 71, 2701, 71, 71, 2912, 2698, 2690, + 2694, 2691, 2692, 2693, 2702, 71, 2699, 2695, 2696, 2700, + 71, 71, 2697, 71, 2703, 2704, 71, 2705, 71, 2706, + 2707, 71, 71, 2708, 2709, 2712, 71, 2710, 2711, 2714, + 71, 2713, 71, 71, 71, 2717, 71, 71, 2718, 2716, + + 71, 71, 71, 71, 2719, 2720, 71, 2715, 71, 2721, + 71, 2725, 2726, 71, 71, 2724, 71, 2722, 2727, 71, + 71, 2723, 71, 2728, 2732, 2729, 2734, 71, 71, 2733, + 71, 2730, 71, 2738, 2731, 71, 71, 2737, 71, 2735, + 2739, 71, 2736, 2741, 71, 2856, 2742, 2743, 71, 2744, + 71, 2745, 71, 2746, 71, 2740, 2747, 71, 2748, 71, + 2749, 71, 2750, 71, 71, 2752, 71, 71, 71, 71, + 2755, 71, 71, 2751, 71, 71, 2759, 71, 2761, 71, + 71, 71, 71, 2756, 2763, 2757, 2758, 2753, 2754, 71, + 2765, 71, 2760, 71, 2768, 71, 2767, 71, 2762, 71, + + 71, 71, 71, 71, 2770, 71, 2775, 71, 2764, 2766, + 71, 2769, 2776, 71, 2771, 2777, 71, 71, 2773, 2772, + 2774, 71, 71, 71, 2782, 2780, 2779, 71, 71, 71, + 2778, 2786, 71, 2785, 71, 2788, 71, 71, 2784, 71, + 71, 71, 2781, 71, 71, 71, 2783, 2787, 71, 2789, + 2799, 71, 71, 71, 71, 2883, 2790, 2791, 71, 2792, + 2794, 71, 2795, 2800, 2796, 2793, 2797, 71, 2798, 2801, + 71, 71, 2802, 2803, 71, 2804, 71, 2805, 71, 71, + 71, 2806, 2807, 2808, 71, 2809, 71, 2812, 71, 2815, + 71, 71, 2810, 71, 2817, 71, 71, 71, 71, 2811, + + 2813, 2820, 71, 71, 2821, 71, 2822, 2824, 2814, 71, + 2816, 2818, 2825, 71, 71, 2819, 71, 71, 71, 2829, + 71, 71, 71, 2826, 2823, 2832, 71, 2827, 71, 71, + 71, 71, 71, 2834, 71, 2828, 2831, 2830, 71, 2839, + 71, 71, 71, 2836, 2837, 2840, 2833, 2844, 2835, 2843, + 71, 2838, 2845, 71, 2846, 71, 2841, 71, 71, 71, + 2842, 71, 2847, 2851, 2848, 71, 2849, 2853, 71, 71, + 2852, 71, 71, 71, 2850, 2854, 71, 2859, 71, 71, + 71, 71, 2862, 71, 2863, 71, 71, 71, 71, 71, + 71, 2855, 2857, 2861, 2866, 2858, 2864, 2860, 2867, 2865, + + 71, 2869, 71, 2870, 71, 2868, 71, 2874, 71, 2871, + 71, 2876, 71, 2872, 71, 2877, 2873, 2878, 71, 71, + 2881, 71, 71, 71, 71, 2879, 71, 2875, 2882, 2884, + 71, 2885, 71, 2886, 71, 2890, 71, 2888, 2880, 71, + 71, 2887, 71, 71, 71, 2892, 71, 2893, 71, 2896, + 2897, 71, 71, 2889, 71, 2900, 2901, 71, 2891, 71, + 2903, 71, 2894, 2895, 71, 2898, 2902, 2904, 71, 71, + 71, 2899, 71, 71, 2912, 2906, 2905, 2907, 2910, 71, + 2911, 71, 2912, 2908, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2909, 43, 43, 43, 43, 43, 43, 43, + + 48, 48, 48, 48, 48, 48, 48, 53, 53, 53, + 53, 53, 53, 53, 59, 59, 59, 59, 59, 59, + 59, 64, 64, 64, 64, 64, 64, 64, 74, 74, + 2912, 74, 74, 74, 74, 140, 140, 2912, 2912, 2912, + 140, 140, 142, 142, 2912, 2912, 142, 2912, 142, 144, + 2912, 2912, 2912, 2912, 2912, 144, 147, 147, 2912, 2912, + 2912, 147, 147, 149, 2912, 2912, 2912, 2912, 2912, 149, + 151, 151, 2912, 151, 151, 151, 151, 75, 75, 2912, + 75, 75, 75, 75, 13, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2912 } ; -static yyconst flex_int16_t yy_chk[5715] = +static const flex_int16_t yy_chk[5726] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2029,13 +2024,13 @@ static yyconst flex_int16_t yy_chk[5715] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 2910, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 2918, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, - 34, 21, 23, 24, 12, 23, 24, 971, 24, 24, + 34, 21, 23, 24, 12, 23, 24, 979, 24, 24, 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, @@ -2098,558 +2093,559 @@ static yyconst flex_int16_t yy_chk[5715] = 285, 287, 290, 276, 144, 287, 283, 289, 289, 280, 281, 291, 282, 292, 291, 293, 286, 288, 295, 294, - 290, 293, 294, 297, 298, 292, 301, 309, 299, 301, - 295, 296, 297, 299, 300, 303, 309, 300, 308, 300, - 296, 302, 298, 296, 305, 305, 307, 303, 296, 296, - 296, 296, 310, 308, 302, 300, 304, 306, 304, 304, - 306, 310, 312, 307, 311, 311, 307, 312, 313, 313, - 314, 315, 316, 317, 318, 319, 315, 320, 321, 327, - 329, 322, 323, 320, 316, 314, 322, 142, 323, 329, - 319, 324, 317, 327, 318, 325, 324, 331, 321, 326, - 325, 336, 326, 331, 326, 328, 325, 332, 328, 330, - 330, 335, 332, 337, 333, 338, 444, 333, 339, 342, - - 345, 328, 336, 333, 328, 344, 328, 333, 337, 345, - 338, 335, 339, 342, 349, 333, 334, 334, 444, 334, - 344, 341, 346, 347, 341, 348, 354, 346, 346, 347, - 350, 352, 334, 349, 355, 334, 353, 334, 351, 334, - 341, 343, 353, 343, 343, 350, 348, 351, 356, 358, - 352, 359, 354, 343, 355, 343, 343, 343, 357, 360, - 343, 361, 356, 363, 357, 362, 366, 364, 357, 367, - 362, 359, 358, 364, 365, 365, 361, 368, 363, 360, - 370, 367, 369, 371, 372, 375, 366, 374, 369, 372, - 376, 368, 373, 373, 377, 373, 378, 383, 378, 371, - - 379, 375, 381, 381, 379, 370, 376, 374, 377, 380, - 382, 384, 383, 380, 385, 387, 378, 386, 389, 393, - 140, 388, 390, 389, 387, 391, 390, 384, 380, 382, - 388, 386, 385, 392, 391, 387, 394, 387, 396, 392, - 393, 395, 394, 396, 397, 395, 398, 398, 399, 400, - 401, 402, 402, 403, 400, 405, 404, 406, 412, 403, - 404, 399, 407, 401, 397, 411, 408, 407, 409, 409, - 405, 408, 410, 419, 413, 70, 412, 409, 406, 414, - 416, 423, 414, 415, 410, 411, 413, 415, 417, 417, - 418, 425, 416, 424, 419, 418, 420, 420, 422, 422, - - 425, 424, 423, 426, 427, 430, 429, 431, 432, 433, - 435, 434, 439, 436, 432, 435, 427, 434, 433, 440, - 437, 431, 440, 426, 429, 430, 429, 436, 437, 438, - 441, 437, 439, 442, 443, 438, 441, 445, 446, 443, - 447, 448, 446, 449, 450, 447, 451, 442, 449, 452, - 454, 456, 457, 455, 441, 456, 448, 458, 445, 459, - 450, 461, 452, 459, 462, 451, 453, 453, 455, 462, - 454, 457, 453, 458, 453, 463, 461, 466, 460, 464, - 453, 468, 453, 460, 465, 453, 453, 460, 464, 469, - 465, 463, 453, 466, 467, 465, 471, 467, 470, 470, - - 472, 472, 473, 474, 468, 475, 476, 477, 478, 469, - 479, 480, 481, 478, 484, 474, 482, 473, 488, 479, - 475, 471, 482, 484, 485, 476, 486, 481, 485, 477, - 480, 487, 486, 488, 489, 490, 491, 492, 493, 494, - 496, 498, 493, 487, 495, 503, 495, 498, 496, 490, - 499, 491, 494, 489, 500, 492, 497, 497, 501, 503, - 500, 502, 499, 504, 502, 506, 505, 507, 506, 508, - 501, 505, 511, 511, 509, 510, 507, 517, 504, 509, - 509, 512, 512, 507, 513, 508, 507, 520, 510, 516, - 513, 514, 514, 515, 515, 516, 518, 519, 517, 518, - - 521, 522, 519, 524, 522, 523, 520, 526, 521, 525, - 523, 526, 527, 528, 529, 530, 531, 528, 527, 532, - 530, 534, 533, 536, 64, 532, 524, 533, 525, 538, - 535, 541, 529, 535, 59, 534, 531, 542, 535, 537, - 537, 536, 535, 539, 540, 541, 544, 538, 539, 540, - 543, 545, 542, 546, 545, 544, 543, 546, 547, 548, - 549, 550, 548, 547, 551, 549, 552, 553, 555, 554, - 556, 556, 557, 552, 554, 558, 559, 550, 560, 546, - 553, 557, 551, 561, 562, 563, 564, 560, 555, 564, - 562, 563, 559, 565, 558, 561, 565, 566, 567, 568, - - 569, 571, 566, 570, 575, 573, 569, 571, 570, 572, - 573, 576, 572, 568, 574, 577, 567, 575, 579, 574, - 574, 578, 580, 581, 576, 588, 582, 578, 581, 582, - 583, 580, 54, 584, 577, 577, 583, 579, 585, 587, - 587, 586, 590, 585, 582, 584, 586, 586, 592, 589, - 588, 589, 591, 593, 591, 594, 595, 596, 597, 598, - 599, 590, 603, 598, 597, 600, 592, 601, 602, 599, - 605, 593, 604, 594, 607, 595, 609, 596, 608, 610, - 600, 603, 601, 606, 604, 605, 602, 611, 607, 606, - 608, 611, 612, 613, 614, 609, 615, 616, 610, 617, - - 618, 618, 619, 620, 625, 622, 619, 621, 624, 613, - 612, 632, 614, 617, 615, 615, 616, 626, 621, 622, - 623, 627, 620, 625, 624, 623, 628, 629, 627, 632, - 626, 628, 630, 631, 629, 633, 634, 630, 631, 635, - 636, 638, 633, 637, 639, 634, 638, 639, 640, 636, - 641, 642, 640, 635, 643, 637, 644, 645, 646, 646, - 642, 651, 647, 647, 641, 648, 648, 649, 652, 643, - 644, 647, 653, 654, 652, 655, 649, 654, 645, 656, - 651, 657, 658, 659, 661, 662, 660, 655, 658, 663, - 669, 659, 653, 660, 672, 674, 664, 666, 679, 657, - - 673, 664, 661, 672, 656, 664, 673, 669, 664, 663, - 662, 674, 666, 675, 678, 664, 679, 675, 664, 676, - 676, 677, 677, 680, 681, 678, 682, 685, 684, 687, - 698, 688, 682, 684, 688, 686, 690, 680, 689, 689, - 691, 691, 698, 690, 681, 683, 683, 683, 685, 683, - 692, 699, 683, 686, 687, 693, 693, 683, 697, 695, - 697, 694, 695, 683, 683, 692, 694, 696, 701, 700, - 699, 702, 696, 700, 703, 704, 704, 705, 708, 706, - 707, 707, 703, 709, 710, 711, 713, 713, 701, 712, - 702, 711, 705, 706, 712, 709, 708, 714, 750, 716, - - 750, 717, 714, 714, 716, 718, 710, 717, 719, 720, - 722, 718, 723, 719, 721, 720, 722, 721, 724, 725, - 723, 727, 726, 728, 729, 729, 724, 726, 727, 730, - 732, 731, 733, 742, 735, 736, 732, 725, 730, 731, - 737, 738, 728, 735, 736, 737, 739, 740, 741, 739, - 738, 733, 740, 743, 743, 744, 745, 746, 742, 747, - 748, 752, 741, 748, 751, 751, 746, 753, 754, 757, - 744, 748, 753, 755, 756, 745, 758, 759, 760, 762, - 761, 763, 752, 747, 761, 767, 759, 53, 768, 754, - 765, 757, 764, 755, 756, 766, 758, 762, 764, 765, - - 763, 760, 768, 769, 767, 770, 771, 766, 773, 769, - 775, 771, 772, 772, 774, 777, 776, 778, 779, 770, - 780, 781, 782, 774, 776, 783, 784, 781, 773, 787, - 775, 783, 785, 787, 788, 777, 782, 779, 785, 778, - 780, 786, 789, 790, 791, 793, 784, 786, 790, 792, - 792, 793, 794, 788, 789, 794, 795, 796, 797, 798, - 799, 799, 789, 800, 797, 791, 801, 802, 802, 803, - 796, 801, 804, 806, 795, 809, 804, 805, 805, 798, - 807, 800, 808, 811, 803, 812, 814, 808, 815, 817, - 817, 821, 818, 819, 809, 806, 818, 820, 820, 812, - - 807, 822, 823, 48, 824, 822, 814, 811, 819, 815, - 816, 839, 839, 816, 826, 816, 821, 823, 824, 816, - 825, 816, 828, 829, 827, 825, 816, 829, 826, 827, - 827, 816, 830, 831, 832, 833, 828, 834, 831, 832, - 835, 842, 843, 43, 836, 837, 838, 830, 831, 833, - 836, 837, 838, 841, 835, 840, 844, 846, 834, 841, - 840, 843, 847, 842, 848, 849, 854, 847, 851, 846, - 850, 850, 852, 851, 844, 845, 845, 849, 848, 853, - 852, 845, 14, 845, 855, 854, 856, 856, 857, 845, - 859, 861, 857, 853, 845, 845, 859, 860, 862, 863, - - 860, 845, 864, 855, 865, 863, 866, 864, 867, 868, - 861, 862, 869, 870, 871, 866, 872, 867, 869, 873, - 874, 872, 870, 865, 875, 868, 876, 877, 878, 879, - 880, 885, 883, 871, 874, 879, 877, 878, 876, 873, - 881, 886, 888, 887, 875, 885, 881, 880, 883, 889, - 890, 894, 891, 892, 893, 897, 888, 891, 892, 893, - 894, 886, 887, 895, 895, 890, 896, 889, 897, 899, - 900, 904, 896, 901, 901, 900, 900, 901, 902, 903, - 905, 902, 906, 908, 907, 899, 909, 911, 910, 908, - 911, 904, 912, 903, 910, 906, 913, 914, 905, 907, - - 915, 913, 914, 916, 917, 918, 909, 921, 916, 917, - 924, 924, 920, 912, 922, 923, 915, 918, 920, 925, - 922, 923, 926, 921, 927, 928, 928, 927, 925, 929, - 930, 931, 932, 933, 936, 932, 934, 935, 939, 936, - 926, 941, 934, 935, 939, 937, 933, 929, 938, 930, - 937, 931, 942, 938, 943, 946, 944, 945, 945, 941, - 943, 944, 947, 948, 946, 949, 950, 951, 949, 950, - 952, 947, 942, 953, 954, 957, 955, 956, 951, 958, - 960, 948, 955, 956, 958, 953, 959, 959, 952, 961, - 957, 963, 962, 954, 964, 963, 965, 966, 967, 960, - - 969, 970, 970, 961, 962, 965, 972, 973, 975, 974, - 977, 977, 964, 975, 978, 976, 966, 993, 993, 969, - 972, 974, 973, 967, 976, 979, 980, 982, 981, 982, - 983, 979, 980, 981, 978, 983, 984, 985, 986, 987, - 988, 989, 990, 986, 991, 13, 994, 995, 989, 996, - 984, 985, 997, 998, 987, 1003, 999, 990, 997, 988, - 994, 999, 1003, 991, 996, 995, 1001, 1001, 1004, 1002, - 999, 1006, 999, 998, 1002, 999, 1005, 1007, 1008, 1005, - 1009, 1011, 1004, 1008, 1012, 1010, 1007, 1014, 1014, 1006, - 1010, 1015, 1011, 1016, 1017, 1018, 1015, 1019, 1016, 1009, - - 1018, 1019, 1020, 1012, 1021, 1022, 1023, 1025, 1026, 1024, - 1028, 1020, 1027, 1029, 1017, 1026, 1032, 1030, 1033, 1021, - 1022, 1024, 1025, 1034, 1027, 1023, 1031, 1035, 1038, 1028, - 1040, 1032, 1031, 1037, 1029, 1030, 1035, 1039, 1033, 1037, - 1042, 1041, 1038, 1034, 1044, 1039, 1041, 1045, 1043, 1046, - 1040, 1050, 1042, 1043, 1043, 1047, 1047, 1049, 0, 1051, - 1050, 1045, 1046, 1044, 1048, 1051, 1052, 1052, 1055, 1048, - 1049, 1053, 1048, 1048, 1055, 1054, 1053, 1048, 1058, 1058, - 1056, 1057, 1059, 1048, 1054, 1056, 1057, 1048, 1060, 1060, - 1061, 1062, 1063, 1061, 1065, 1061, 1064, 1066, 1067, 1068, - - 1069, 1070, 1066, 1059, 1071, 1064, 1069, 1070, 1080, 1071, - 1063, 1062, 1067, 1073, 1065, 1072, 1075, 1068, 1075, 1072, - 1074, 1074, 1073, 1076, 1078, 1079, 1080, 1073, 1078, 1073, - 1081, 1073, 1082, 1073, 1076, 1083, 1084, 1082, 1082, 1081, - 1079, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1093, - 1094, 1092, 1086, 1091, 1089, 1095, 1085, 1083, 1093, 1097, - 1097, 1090, 1096, 1087, 1088, 1092, 1098, 1096, 1094, 1099, - 1099, 1100, 1102, 1100, 1103, 1102, 1104, 1105, 1107, 1103, - 1095, 1098, 1106, 1106, 1108, 1108, 1105, 1109, 1109, 1110, - 1111, 1112, 1113, 1113, 1110, 1104, 1114, 1115, 1107, 1116, - - 1115, 1117, 1120, 1119, 1118, 1119, 1117, 1122, 1123, 1124, - 1122, 1111, 1112, 1118, 1124, 1131, 1114, 1125, 1126, 1116, - 1120, 0, 1125, 1123, 1127, 1128, 1126, 1129, 1129, 1127, - 1128, 1130, 1132, 1131, 1133, 1134, 1130, 1136, 1132, 1137, - 1139, 1133, 1138, 1136, 1140, 1137, 1139, 1138, 1134, 1141, - 1142, 1143, 1143, 1140, 1144, 1146, 1147, 1148, 1149, 1150, - 1152, 1142, 1153, 1148, 1149, 1150, 1152, 1154, 1141, 1155, - 1156, 1157, 1158, 1158, 1144, 1146, 1153, 1159, 1160, 1147, - 1161, 1155, 1153, 1162, 1156, 1163, 1163, 1154, 1162, 1157, - 1164, 1165, 1167, 1170, 1168, 1172, 1165, 1159, 1161, 1168, - - 1168, 1169, 1170, 1160, 1171, 1173, 1174, 1182, 1177, 1172, - 1175, 1167, 1171, 1164, 1176, 1175, 1176, 1178, 1175, 1169, - 1173, 1174, 1177, 1178, 1174, 1179, 1180, 1181, 1189, 1179, - 1183, 1184, 1185, 1182, 1186, 1187, 1184, 1180, 1190, 1186, - 1191, 1193, 1189, 1192, 1192, 1193, 1181, 1194, 1183, 1195, - 1185, 1196, 1197, 1198, 1200, 1187, 1190, 1196, 1191, 1199, - 1201, 1202, 1203, 1204, 1197, 1194, 1205, 1203, 1195, 1200, - 1204, 1205, 1198, 1199, 1206, 1201, 1207, 1208, 1208, 1209, - 1202, 1210, 1211, 1212, 1213, 1207, 0, 1210, 1212, 1214, - 1213, 1221, 1206, 1222, 1209, 1214, 1215, 1215, 1216, 1216, - - 1218, 1218, 1219, 1211, 1220, 1223, 1219, 1222, 1224, 1221, - 1225, 1225, 1226, 1220, 1227, 1224, 1228, 1229, 1230, 1231, - 1223, 1228, 1227, 1232, 1231, 1231, 1233, 1237, 1232, 1232, - 1235, 1229, 1226, 1234, 1234, 1236, 1237, 1230, 1238, 1239, - 1240, 1241, 1242, 1238, 1244, 1243, 1233, 1245, 1242, 1235, - 1243, 1247, 1246, 1245, 1236, 1248, 1249, 1247, 1239, 1241, - 1240, 1248, 1250, 1251, 1252, 1253, 1254, 1256, 1256, 1255, - 1244, 1246, 0, 1257, 1258, 1249, 1257, 1259, 1259, 1253, - 1260, 1250, 1251, 1252, 1255, 1260, 1258, 1254, 1261, 1262, - 1263, 1264, 1261, 1267, 1265, 1268, 1265, 1269, 1267, 1263, - - 1265, 1276, 1262, 1270, 1264, 1271, 1271, 1272, 1277, 1273, - 1268, 1274, 1272, 1265, 1273, 1274, 1275, 1269, 1278, 1270, - 1275, 1276, 1279, 1280, 1280, 1282, 1277, 1284, 1279, 1285, - 1286, 1286, 1288, 1287, 1285, 1290, 1290, 1292, 1278, 1287, - 1292, 1293, 1293, 1282, 1294, 1295, 1297, 1298, 1284, 1297, - 1299, 1301, 1288, 1300, 1300, 1302, 1303, 1304, 1305, 1299, - 1294, 1295, 1304, 1306, 1306, 1307, 1301, 1298, 1309, 1308, - 1310, 1310, 1305, 1311, 1312, 1303, 1302, 1313, 1317, 1314, - 1315, 1315, 1313, 1307, 1308, 1316, 1319, 1311, 1320, 1316, - 1318, 1318, 1312, 1309, 1314, 1322, 1321, 1323, 1317, 1320, - - 1321, 1326, 1323, 1325, 1325, 1328, 1327, 1329, 1319, 1330, - 1331, 1331, 1332, 1333, 1322, 1334, 1337, 1332, 1335, 1326, - 1327, 1329, 1341, 1336, 1328, 1328, 1344, 1335, 1336, 1338, - 1346, 1338, 1339, 1333, 1330, 1334, 1337, 1339, 1340, 1342, - 1344, 1350, 1341, 1354, 1340, 1342, 1345, 1345, 1347, 1346, - 1349, 1351, 1351, 1353, 1347, 1349, 1352, 1352, 1355, 1356, - 1358, 1354, 1356, 1357, 1357, 1350, 1359, 1353, 1365, 1361, - 1363, 1360, 1358, 1355, 1360, 1361, 1362, 1360, 1364, 1363, - 1375, 1362, 1366, 1364, 1367, 1366, 1359, 1368, 1373, 1360, - 1367, 1374, 1368, 1365, 1369, 1369, 1370, 1370, 1371, 1375, - - 1372, 1373, 1376, 1377, 1371, 1372, 1377, 1378, 1379, 1374, - 1380, 1381, 1382, 1378, 1379, 1380, 1383, 1381, 1384, 1384, - 1385, 1383, 1376, 1386, 1387, 1385, 1388, 1391, 1389, 1390, - 1393, 1394, 1392, 1395, 1396, 1382, 1393, 1397, 1405, 1391, - 1400, 1386, 1389, 1390, 1387, 1392, 1388, 1401, 1396, 1399, - 1399, 1394, 1401, 1395, 1402, 1402, 1403, 1406, 1397, 1404, - 1400, 1407, 1405, 1408, 1411, 1409, 1413, 1410, 1415, 0, - 1407, 1403, 1409, 1404, 1416, 1406, 1410, 1416, 1408, 1410, - 1411, 1413, 1417, 1417, 1418, 1418, 1413, 1419, 1420, 1421, - 1422, 1422, 1421, 1415, 1423, 1424, 1425, 1426, 1427, 1419, - - 1428, 1425, 1426, 1429, 1430, 1433, 1420, 1423, 1435, 1431, - 1432, 1433, 1429, 1436, 1424, 1437, 1428, 1427, 1431, 1432, - 1438, 1431, 1439, 1430, 1434, 1434, 1436, 1440, 1435, 1442, - 1443, 1444, 1444, 1437, 1438, 1445, 1446, 1447, 1439, 1440, - 1448, 1448, 1447, 1450, 1449, 1446, 1451, 1452, 1443, 1455, - 1457, 1445, 1453, 1449, 1442, 1448, 1449, 1453, 1453, 1460, - 1456, 1450, 1464, 1455, 1460, 1452, 1456, 1451, 1457, 1458, - 1458, 1459, 1461, 1462, 1465, 1466, 1467, 1459, 1461, 1462, - 1473, 1466, 1464, 1468, 1469, 1471, 1468, 1474, 1465, 1467, - 1469, 1476, 1468, 1471, 1475, 1477, 1478, 1479, 1480, 1473, - - 1476, 1482, 1475, 1481, 1481, 1484, 1474, 1482, 1477, 1478, - 1483, 1479, 1480, 1485, 1486, 1487, 1483, 1488, 1484, 1490, - 1489, 1491, 1492, 1494, 1494, 1481, 1489, 1495, 0, 1501, - 1488, 1496, 1486, 1485, 1487, 1496, 1505, 1491, 1497, 1498, - 1492, 1490, 1500, 1497, 1498, 1499, 1503, 1495, 1504, 1504, - 1499, 1500, 1501, 1506, 1507, 1505, 1508, 1508, 1509, 1510, - 1513, 1503, 1511, 1512, 1514, 1506, 1510, 1517, 1516, 1524, - 1515, 1518, 1509, 1507, 1511, 1512, 1515, 1518, 1524, 1513, - 1516, 1519, 1519, 1520, 1514, 1517, 1520, 1521, 1521, 1523, - 1525, 1526, 1526, 1527, 1523, 1528, 1525, 1528, 1529, 1530, - - 1531, 1529, 1532, 1533, 1534, 1527, 1535, 1538, 1539, 1534, - 1537, 1536, 1538, 1540, 1541, 1535, 1544, 1539, 1543, 1530, - 1532, 1533, 1531, 1536, 1543, 1537, 1542, 1542, 1545, 1541, - 1539, 1547, 1546, 1540, 1548, 1553, 1548, 1544, 1549, 1550, - 1550, 1551, 1551, 1552, 1552, 1554, 1554, 1545, 1546, 1555, - 1555, 1547, 1549, 1556, 1549, 1553, 1557, 1558, 1558, 1559, - 1560, 1561, 1563, 1559, 1561, 1564, 1560, 1565, 1563, 1566, - 1568, 1568, 1567, 1565, 1556, 1567, 1570, 1557, 1569, 1569, - 1572, 1573, 1570, 1564, 1571, 1574, 1575, 1577, 1578, 1581, - 1585, 1574, 1577, 1577, 1566, 1584, 1571, 1571, 1571, 1580, - - 1572, 1573, 1578, 1571, 1581, 1579, 1575, 1579, 1582, 1583, - 1580, 1585, 1586, 1586, 1582, 1584, 1587, 1589, 1583, 1588, - 1588, 1590, 1591, 1591, 1592, 1592, 1593, 1596, 1596, 1597, - 1598, 1600, 1601, 1603, 1603, 1602, 1604, 1589, 1606, 1598, - 1600, 1602, 1587, 1590, 1605, 1606, 1593, 1607, 1608, 1609, - 1609, 1610, 1611, 1601, 1597, 1613, 1607, 1604, 1614, 1605, - 1613, 1615, 1616, 1622, 1614, 1617, 1618, 1623, 1611, 1616, - 1621, 1617, 1618, 1620, 1608, 1619, 1619, 1610, 1620, 1621, - 1624, 1615, 1625, 1622, 1626, 1625, 1623, 1627, 1628, 1628, - 1629, 1630, 1624, 1631, 1632, 1634, 1629, 1635, 1632, 0, - - 1638, 1639, 1626, 1636, 1640, 1639, 1642, 1642, 1631, 1646, - 1640, 1630, 1641, 1627, 1632, 1634, 1635, 1644, 1636, 1638, - 1643, 1641, 1645, 1645, 1643, 1647, 1648, 1649, 1644, 1650, - 1646, 1651, 1649, 1644, 1652, 1653, 1654, 1655, 1655, 1647, - 1652, 1654, 1656, 1656, 1657, 1648, 1659, 1660, 1657, 1650, - 1653, 1651, 1661, 1662, 1662, 1659, 1663, 1663, 1660, 1664, - 1665, 1666, 1667, 1660, 1664, 1664, 1665, 1666, 1668, 1669, - 1670, 1672, 1661, 1668, 1673, 1674, 1670, 1675, 1673, 1676, - 1678, 1669, 1677, 1672, 1679, 1676, 1678, 1674, 1667, 1681, - 1682, 1685, 1683, 1689, 1685, 1692, 1679, 1683, 1686, 1686, - - 1692, 1681, 1675, 0, 1677, 1687, 1687, 1688, 1688, 1682, - 1690, 1691, 1693, 1689, 1694, 1696, 1690, 1691, 1693, 1698, - 1696, 1699, 1698, 1694, 1700, 1700, 1702, 1703, 1706, 1704, - 1705, 1705, 1710, 1699, 1704, 1707, 1708, 1706, 1702, 1703, - 1707, 1708, 1709, 1709, 1711, 1712, 1713, 1714, 1717, 1715, - 1716, 1714, 1710, 1711, 1715, 1720, 1716, 1719, 1719, 1721, - 1722, 1722, 1717, 1712, 1724, 1713, 1723, 1725, 1721, 1719, - 1727, 1732, 1726, 1720, 1732, 1723, 1724, 1726, 1730, 1730, - 1733, 1734, 0, 1727, 1736, 1738, 1737, 1739, 1725, 1740, - 1740, 1738, 1741, 1746, 1741, 1743, 1733, 1734, 1745, 1736, - - 1737, 1742, 1742, 1743, 1739, 1745, 1747, 1747, 1748, 1749, - 1750, 1751, 1752, 1746, 1753, 1755, 1754, 1748, 1757, 1760, - 1758, 1755, 1750, 1751, 1752, 1759, 1759, 1761, 1764, 0, - 1749, 1754, 1758, 1762, 1755, 1768, 1762, 1760, 1757, 1763, - 1753, 1766, 1772, 1767, 1763, 1767, 1766, 1761, 1764, 1769, - 1770, 1772, 1774, 1768, 1769, 1775, 1776, 1770, 1777, 1778, - 1777, 1780, 1781, 1780, 1775, 1782, 1782, 1783, 1776, 1784, - 1774, 1785, 1786, 1785, 1784, 1787, 1781, 1786, 1778, 1788, - 1787, 1789, 1790, 1792, 1791, 1795, 1793, 1858, 1790, 1791, - 1800, 1796, 1799, 1783, 1793, 1858, 1792, 1788, 1797, 1797, - - 1801, 1789, 1798, 1798, 1795, 1796, 1801, 1799, 1802, 1803, - 1800, 1803, 1804, 1802, 1805, 1805, 1809, 1806, 1807, 1807, - 1804, 1808, 1808, 1810, 1811, 1809, 1811, 1812, 1804, 1806, - 1814, 1813, 1810, 1815, 1817, 1810, 1813, 1813, 1818, 1814, - 1821, 1822, 1819, 1818, 1825, 1815, 1817, 1819, 1812, 1823, - 1824, 1824, 1826, 1821, 1828, 1827, 1845, 1829, 1823, 1833, - 1834, 1822, 1825, 1831, 1832, 1834, 1842, 1844, 1828, 1835, - 1826, 1827, 1829, 1836, 1835, 1831, 1832, 1839, 1841, 1833, - 1843, 1845, 1836, 1839, 1841, 1844, 1847, 1847, 1846, 1842, - 1848, 1849, 1849, 1850, 1851, 1843, 1839, 1846, 1851, 1848, - - 1852, 1853, 1854, 1855, 1856, 1852, 1859, 1854, 1854, 1855, - 1856, 1867, 1850, 1857, 1853, 1864, 1857, 1862, 1862, 1863, - 1863, 1865, 1865, 1867, 1864, 1868, 1859, 1866, 1866, 1869, - 1877, 1870, 1871, 1871, 1863, 1869, 1870, 1872, 1872, 1873, - 1874, 1880, 1882, 1868, 1873, 1863, 1874, 1876, 1878, 1881, - 1877, 1876, 1878, 1883, 1881, 1884, 1885, 1886, 1887, 1887, - 1884, 1889, 1891, 1888, 1890, 1882, 1880, 1888, 1883, 1890, - 1892, 1893, 1894, 1886, 1885, 1896, 1889, 1894, 1895, 1897, - 1897, 1899, 1892, 1900, 1901, 1902, 1903, 1904, 1891, 1899, - 1893, 1895, 1905, 1896, 1907, 1906, 1909, 1910, 1910, 1912, - - 1913, 1911, 1900, 1901, 1911, 1914, 1904, 1906, 1902, 1918, - 1903, 1909, 1912, 1905, 1913, 1907, 1915, 1915, 1914, 1916, - 1916, 1917, 1917, 1919, 1918, 1920, 1920, 1923, 1921, 1922, - 1922, 1926, 1923, 1925, 1927, 1928, 1919, 1921, 1925, 1931, - 1921, 1929, 1929, 1930, 1930, 1932, 1932, 1928, 1933, 1934, - 1934, 1926, 1935, 0, 1927, 1936, 1937, 1937, 1931, 1939, - 1936, 1938, 1938, 1940, 1941, 1942, 1933, 1935, 1946, 1944, - 1945, 1945, 1940, 1939, 1944, 1947, 1947, 1948, 1941, 1949, - 1950, 1951, 1951, 1950, 1942, 1949, 1953, 1946, 1952, 1952, - 1955, 1954, 1956, 1956, 1958, 1948, 1959, 1951, 1960, 1961, - - 1962, 1962, 1963, 1961, 1968, 1953, 1954, 1964, 1965, 1955, - 1967, 1967, 1970, 1960, 1958, 1971, 1972, 1972, 1969, 1959, - 1973, 1963, 1964, 1965, 1968, 1969, 1970, 1975, 1974, 1973, - 1974, 1977, 1978, 1979, 1980, 1981, 1982, 1978, 1979, 1983, - 1984, 1971, 1990, 1977, 1983, 1986, 1987, 1975, 1981, 1988, - 1986, 1987, 1989, 1994, 1991, 1995, 1992, 1982, 1989, 1980, - 1991, 1992, 1993, 1990, 1988, 1997, 1984, 1993, 1995, 1996, - 1998, 1999, 1996, 2000, 1997, 2001, 2006, 2002, 1994, 1998, - 1999, 2003, 2000, 2002, 2004, 2008, 2010, 2003, 2004, 2001, - 2009, 2009, 2010, 2012, 2008, 2014, 2006, 2011, 2011, 2017, - - 2015, 2016, 2016, 2018, 2021, 2020, 2011, 2022, 2027, 2023, - 2042, 2014, 2018, 2012, 2017, 2012, 2015, 2020, 2028, 2026, - 2021, 2023, 2022, 2025, 2026, 2070, 2025, 2070, 2027, 2042, - 2028, 2029, 2029, 2030, 2030, 2032, 2032, 2033, 2034, 2035, - 2033, 2036, 2038, 2034, 0, 2035, 2040, 2036, 2037, 2037, - 2039, 2039, 2041, 2043, 2043, 2045, 2038, 2046, 2040, 2045, - 2046, 2047, 2047, 2048, 2049, 2050, 2041, 2051, 2048, 2052, - 2052, 2051, 2055, 2049, 2053, 2056, 2057, 2055, 2058, 2059, - 2060, 2061, 2062, 2059, 2063, 2050, 2061, 2053, 2062, 2064, - 2063, 2068, 2058, 2066, 2067, 2056, 2057, 2068, 2069, 2067, - - 2060, 2073, 2074, 2074, 2076, 2075, 2069, 2064, 2075, 2066, - 2077, 2077, 2079, 2080, 2081, 2073, 2079, 2082, 2082, 2080, - 2083, 2086, 2086, 2088, 2090, 2095, 2081, 2091, 2094, 2083, - 2076, 2096, 2097, 2094, 2098, 2098, 2096, 2097, 2090, 2100, - 2100, 2088, 2102, 2091, 2103, 2103, 2104, 2105, 2102, 2106, - 2112, 2095, 2108, 2109, 2106, 2110, 2110, 2113, 2114, 2112, - 2115, 2118, 2104, 2113, 2119, 2109, 2117, 2117, 2125, 2105, - 2125, 2108, 2121, 2121, 2123, 2115, 2114, 2122, 2122, 2123, - 2118, 2124, 2119, 2126, 2127, 2128, 2124, 2129, 2130, 2130, - 2131, 2131, 2129, 2132, 2132, 2133, 2133, 2126, 2127, 2134, - - 2135, 2136, 2137, 2137, 2139, 2128, 2136, 2138, 2138, 2140, - 2141, 2134, 2142, 2143, 2143, 2144, 2139, 2148, 2135, 2145, - 2145, 2140, 2146, 2146, 2147, 2149, 2150, 2151, 2142, 2148, - 2141, 2152, 2149, 2153, 2144, 2147, 2152, 2154, 2150, 2155, - 2155, 2156, 2157, 2158, 2164, 2159, 2160, 2151, 2161, 2167, - 2156, 2162, 2162, 2153, 2165, 2163, 2168, 2154, 2159, 2164, - 2169, 2171, 2161, 2158, 2163, 2174, 2174, 2167, 2157, 2165, - 2160, 2170, 2172, 2181, 2170, 2171, 2173, 2172, 2168, 2175, - 2175, 2173, 2182, 2169, 2176, 2176, 2178, 2178, 2180, 2180, - 2183, 2181, 2185, 2182, 2187, 2186, 2189, 2188, 2190, 2192, - - 2192, 2191, 2194, 2194, 2195, 2189, 2196, 2197, 2197, 2183, - 2201, 2199, 2185, 2186, 2202, 2196, 2187, 2188, 2190, 2191, - 2199, 2200, 2200, 2203, 2204, 2205, 2195, 2206, 2201, 2208, - 2203, 2207, 2202, 2209, 2209, 2210, 2210, 2212, 2211, 2204, - 2214, 2213, 2216, 2205, 2211, 2206, 2215, 2207, 2208, 2217, - 0, 2215, 2218, 2220, 2220, 2212, 2213, 2218, 2219, 2214, - 2219, 2221, 2216, 2221, 2222, 2222, 2224, 2226, 2227, 2217, - 2228, 2229, 2230, 2231, 2239, 2232, 2226, 2230, 2235, 2256, - 2236, 2238, 2228, 2236, 2256, 2224, 2241, 2227, 2237, 2237, - 2241, 2229, 2239, 2231, 2232, 2243, 2238, 2244, 2235, 2240, - - 2240, 2244, 2245, 2245, 2246, 2248, 2249, 2250, 2250, 2252, - 2243, 2253, 2253, 2254, 2255, 2255, 2257, 2246, 2258, 2258, - 2264, 2252, 2263, 2263, 2266, 2248, 2249, 2267, 2257, 2265, - 2265, 2271, 2254, 0, 2268, 2269, 2276, 2266, 2270, 2270, - 2267, 2276, 2264, 2268, 2269, 2277, 2271, 2273, 2273, 2278, - 2277, 2279, 2280, 2281, 2283, 2282, 2279, 0, 2285, 2288, - 2280, 2286, 2283, 2278, 2282, 2287, 2286, 2289, 2289, 2293, - 2287, 2291, 2281, 2285, 2288, 2290, 2290, 2292, 2291, 2294, - 2295, 2298, 2292, 2296, 2297, 2297, 2295, 2293, 2296, 2299, - 2300, 2300, 2301, 2301, 2299, 2304, 2298, 2294, 2305, 2305, - - 2306, 2307, 0, 2306, 2308, 2309, 2307, 2307, 2304, 2308, - 2309, 2310, 2311, 2312, 2313, 2314, 2311, 2310, 2312, 2315, - 2316, 2317, 2322, 2313, 2319, 2316, 2326, 2315, 2320, 2319, - 2314, 2320, 2324, 2317, 2322, 2325, 2327, 2324, 2328, 2329, - 2325, 2330, 2330, 2331, 2326, 2334, 2335, 2328, 2329, 2327, - 2336, 2338, 2331, 2337, 2337, 2342, 2339, 2340, 2341, 2341, - 2344, 2346, 2349, 2347, 2334, 2339, 2335, 2347, 2380, 2336, - 2338, 2380, 2340, 2350, 2342, 2344, 2348, 2348, 2351, 2350, - 2352, 2346, 2353, 2353, 2351, 2354, 2352, 2349, 2357, 2355, - 2358, 2360, 2361, 2354, 2355, 2360, 2362, 2357, 2364, 2364, - - 2365, 2365, 2372, 2358, 2366, 2366, 2361, 2368, 2368, 2370, - 2370, 2362, 2373, 2375, 2376, 2376, 2381, 2373, 2373, 2378, - 2378, 2383, 2372, 2379, 2379, 2385, 2386, 2386, 2389, 2381, - 2387, 2387, 2392, 2375, 2388, 2388, 2390, 2390, 2391, 2383, - 2393, 2394, 2396, 2389, 2400, 2385, 2396, 2394, 2395, 2395, - 2392, 2391, 2399, 2401, 2393, 2402, 2403, 2399, 2399, 2404, - 2405, 2410, 2403, 2412, 2406, 2404, 2410, 2400, 2406, 2407, - 2407, 2412, 2415, 2401, 2413, 2402, 2416, 2413, 2417, 2416, - 2419, 2418, 2420, 2422, 2422, 2405, 2418, 2421, 2423, 2426, - 0, 2424, 2427, 2427, 2435, 2417, 2417, 2415, 2419, 2424, - - 2425, 2421, 2420, 2428, 2428, 2425, 2425, 2423, 2426, 2429, - 2429, 2430, 2430, 2431, 2431, 2432, 2433, 2434, 2436, 2437, - 2435, 2433, 2438, 2440, 2440, 2441, 2442, 2436, 2441, 2444, - 2444, 2432, 2454, 2445, 2446, 2446, 2447, 2434, 2450, 2437, - 2445, 2447, 2438, 2451, 2442, 2449, 2449, 2450, 2452, 2457, - 2454, 2456, 2451, 2455, 2455, 2456, 2458, 2452, 2457, 2459, - 2460, 2461, 2466, 2466, 2459, 2459, 2467, 2469, 2470, 2473, - 2461, 2458, 2474, 2460, 2478, 2475, 2469, 2476, 2480, 2495, - 2470, 2474, 2482, 2476, 2467, 2483, 2478, 2482, 2484, 2484, - 2483, 2485, 2487, 2494, 2473, 2475, 2502, 2487, 2495, 2480, - - 2485, 2488, 2488, 2490, 2490, 2488, 2491, 2491, 2492, 2492, - 2493, 2496, 2498, 2494, 2502, 2499, 2496, 2500, 2498, 2493, - 2499, 2503, 2500, 2501, 2501, 2504, 2505, 2506, 2507, 2510, - 2504, 2508, 2508, 2506, 2511, 2512, 2514, 2514, 2516, 2517, - 2524, 2518, 2503, 2520, 2505, 2518, 2521, 2519, 2510, 2511, - 2522, 2516, 2517, 2507, 2526, 2512, 2519, 2523, 2522, 2520, - 2525, 2525, 2523, 2528, 2528, 2521, 2524, 2529, 2529, 2531, - 2533, 2533, 2535, 2526, 2538, 2536, 2537, 2540, 2540, 2538, - 2541, 2542, 2543, 2545, 2545, 2546, 2549, 2552, 2535, 2548, - 2531, 2536, 2537, 2556, 2548, 2550, 2550, 2551, 2551, 2546, - - 2541, 2543, 2553, 2553, 2542, 2554, 2555, 2552, 2549, 2558, - 2560, 2557, 2559, 2556, 2568, 2555, 2554, 2557, 2561, 2561, - 2562, 2567, 2553, 2562, 2559, 2563, 2563, 2573, 2558, 2569, - 2560, 2570, 2570, 2567, 2568, 2569, 2571, 2572, 2577, 2571, - 2583, 2575, 2576, 2572, 2578, 2573, 2575, 2576, 2579, 2584, - 2578, 2580, 2580, 2582, 2582, 2586, 2586, 2577, 2584, 2583, - 2587, 2587, 2588, 2589, 2590, 2579, 2579, 2588, 2599, 2590, - 2591, 2591, 2592, 2592, 2593, 2593, 2594, 2589, 2596, 2596, - 2601, 2594, 2602, 2603, 2604, 2604, 2607, 2599, 2606, 2606, - 2608, 2612, 2609, 2610, 2610, 2611, 2612, 2615, 2615, 2619, - - 2607, 2609, 2601, 2618, 2602, 2603, 2617, 2617, 2618, 2620, - 2608, 2621, 2622, 2619, 2611, 2620, 2623, 2623, 2626, 2624, - 2622, 2627, 2628, 2621, 2624, 2629, 2630, 2628, 2632, 2633, - 2634, 2635, 2630, 2637, 2636, 2643, 2632, 2629, 2626, 2638, - 2639, 2627, 2640, 2647, 2647, 2644, 0, 2640, 2633, 2637, - 2634, 2635, 2636, 2648, 2648, 2643, 2638, 2638, 2644, 2649, - 2662, 2639, 2669, 2649, 2653, 2653, 2655, 2655, 2656, 2656, - 2659, 2656, 2657, 2657, 2659, 2657, 2658, 2658, 2662, 2658, - 2661, 2661, 2663, 2665, 2666, 2666, 2670, 2669, 2665, 2672, - 2671, 2673, 2675, 2670, 2671, 2676, 2663, 2680, 2672, 2677, - - 2677, 2678, 2678, 2685, 2676, 2687, 2673, 2679, 2679, 2681, - 2675, 2682, 2680, 2683, 2681, 2684, 2686, 2688, 2683, 2683, - 2682, 2684, 2688, 2682, 2689, 2690, 2687, 2838, 2685, 2689, - 2692, 2686, 2691, 2691, 2838, 2692, 2695, 2695, 2698, 2698, - 2699, 2699, 2700, 2700, 2690, 2701, 2701, 2702, 2702, 2703, - 2703, 2704, 2704, 2706, 2707, 2707, 2708, 2712, 2710, 2711, - 2711, 2713, 2706, 2714, 2715, 2715, 2716, 2717, 2717, 2720, - 2721, 2722, 2712, 2721, 2713, 2714, 2708, 2710, 2723, 2723, - 2724, 2716, 2726, 2727, 2730, 2726, 2728, 2720, 2729, 2727, - 2731, 2732, 2743, 2729, 2734, 2743, 2748, 2722, 2724, 2752, - - 2728, 2745, 2745, 2730, 2746, 2746, 2749, 2732, 2731, 2734, - 2750, 2751, 2754, 2752, 2750, 2749, 2755, 2756, 2757, 2748, - 2757, 2758, 2756, 2759, 2759, 2760, 2761, 2755, 2762, 2764, - 2766, 2751, 2763, 2767, 2765, 2754, 2758, 2771, 2760, 2772, - 2772, 2770, 2866, 2773, 2866, 2761, 2762, 2778, 2763, 2765, - 2779, 2766, 2773, 2767, 2764, 2770, 2783, 2771, 2774, 2774, - 2775, 2775, 2776, 2776, 2777, 2777, 2778, 2781, 2780, 2782, - 2779, 2780, 2781, 2784, 2782, 2786, 2785, 2787, 2788, 2788, - 2789, 2783, 2785, 2790, 2790, 2792, 2794, 2799, 2784, 2786, - 2797, 2797, 2798, 2798, 2800, 2799, 2801, 2787, 2803, 2789, - - 2792, 2802, 2801, 2804, 2794, 2805, 2808, 2802, 2806, 2806, - 2811, 2810, 2803, 2800, 2811, 2813, 2804, 2814, 2815, 2816, - 2817, 2818, 2814, 2819, 2805, 2810, 2808, 2822, 2819, 2820, - 2823, 2825, 2816, 2817, 2820, 2813, 2825, 2815, 2824, 2824, - 2818, 2826, 2827, 2827, 2831, 2822, 2828, 2826, 2829, 2823, - 2830, 2828, 2832, 2829, 2833, 2830, 2834, 2834, 2832, 2833, - 2836, 2837, 2839, 2831, 2836, 2840, 2841, 2842, 2849, 2843, - 2844, 2844, 2841, 2846, 2846, 2850, 2847, 2851, 2848, 2856, - 2837, 2839, 2843, 2848, 2840, 2847, 2842, 2849, 2847, 2854, - 2851, 2852, 2852, 2853, 2850, 2857, 2857, 2858, 2853, 2859, - - 2859, 2861, 2854, 2860, 2860, 2856, 2861, 2862, 2863, 2864, - 2864, 2870, 2865, 2868, 2862, 2869, 2858, 2865, 2867, 2867, - 2868, 2871, 2869, 2872, 2874, 2874, 2871, 2863, 2875, 2877, - 2870, 2878, 2879, 2880, 2877, 2884, 2878, 2881, 2881, 2883, - 2883, 2885, 2872, 2886, 2886, 2887, 2887, 2875, 2888, 2890, - 2890, 2879, 2880, 2898, 2884, 2888, 2891, 2891, 2892, 2894, - 2885, 2897, 2899, 0, 2894, 2892, 2897, 2900, 2900, 2901, - 2901, 0, 2898, 0, 0, 0, 0, 0, 0, 0, - 0, 2899, 2905, 2905, 2905, 2905, 2905, 2905, 2905, 2906, - 2906, 2906, 2906, 2906, 2906, 2906, 2907, 2907, 2907, 2907, - - 2907, 2907, 2907, 2908, 2908, 2908, 2908, 2908, 2908, 2908, - 2909, 2909, 2909, 2909, 2909, 2909, 2909, 2911, 2911, 0, - 2911, 2911, 2911, 2911, 2912, 2912, 0, 0, 0, 2912, - 2912, 2913, 2913, 0, 0, 2913, 0, 2913, 2914, 0, - 0, 0, 0, 0, 2914, 2915, 2915, 0, 0, 0, - 2915, 2915, 2916, 0, 0, 0, 0, 0, 2916, 2917, - 2917, 0, 2917, 2917, 2917, 2917, 2918, 2918, 0, 2918, - 2918, 2918, 2918, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904 + 290, 293, 294, 299, 297, 292, 301, 298, 299, 301, + 295, 291, 296, 297, 300, 302, 142, 300, 308, 300, + 306, 296, 303, 306, 296, 298, 140, 307, 302, 296, + 296, 296, 296, 308, 303, 300, 304, 305, 304, 304, + 309, 310, 305, 305, 307, 311, 311, 307, 312, 309, + 310, 313, 313, 312, 314, 315, 316, 317, 318, 319, + 315, 320, 321, 327, 329, 322, 323, 320, 316, 314, + 322, 70, 323, 329, 319, 324, 317, 327, 318, 325, + 324, 331, 321, 326, 325, 336, 326, 331, 326, 328, + 325, 332, 328, 330, 330, 335, 332, 337, 333, 338, + + 422, 333, 339, 342, 345, 328, 336, 333, 328, 344, + 328, 333, 337, 345, 338, 335, 339, 342, 349, 333, + 334, 334, 422, 334, 344, 341, 346, 347, 341, 348, + 354, 346, 346, 347, 350, 352, 334, 349, 355, 334, + 353, 334, 351, 334, 341, 343, 353, 343, 343, 350, + 348, 351, 356, 358, 352, 359, 354, 343, 355, 343, + 343, 343, 357, 360, 343, 361, 356, 363, 357, 362, + 366, 364, 357, 367, 362, 359, 358, 364, 365, 365, + 361, 368, 363, 360, 370, 367, 369, 371, 372, 375, + 366, 374, 369, 372, 376, 368, 373, 373, 377, 373, + + 378, 383, 378, 371, 379, 375, 381, 381, 379, 370, + 376, 374, 377, 380, 382, 384, 383, 380, 385, 387, + 378, 386, 389, 393, 64, 388, 390, 389, 387, 391, + 390, 384, 380, 382, 388, 386, 385, 392, 391, 387, + 394, 387, 396, 392, 393, 395, 394, 396, 397, 395, + 398, 398, 399, 400, 400, 401, 402, 403, 403, 405, + 401, 404, 406, 405, 407, 399, 408, 404, 397, 402, + 409, 408, 410, 410, 411, 409, 412, 406, 414, 413, + 415, 410, 417, 415, 416, 407, 411, 420, 416, 425, + 414, 418, 418, 419, 417, 426, 412, 413, 419, 421, + + 421, 424, 424, 426, 427, 428, 429, 433, 420, 431, + 425, 432, 437, 427, 434, 435, 436, 437, 429, 438, + 434, 433, 436, 441, 435, 428, 439, 431, 444, 431, + 440, 432, 442, 438, 439, 442, 440, 439, 443, 446, + 445, 450, 444, 441, 443, 445, 447, 448, 449, 451, + 452, 448, 453, 449, 451, 454, 450, 456, 494, 457, + 458, 446, 443, 459, 458, 460, 452, 447, 454, 59, + 463, 453, 455, 455, 457, 461, 494, 456, 455, 461, + 455, 460, 459, 465, 462, 463, 455, 466, 455, 462, + 464, 455, 455, 462, 467, 464, 466, 468, 455, 465, + + 467, 469, 470, 471, 469, 467, 472, 472, 473, 474, + 474, 475, 476, 468, 477, 478, 479, 480, 481, 486, + 482, 483, 480, 471, 476, 470, 475, 481, 486, 477, + 489, 484, 490, 473, 478, 488, 483, 484, 479, 482, + 487, 488, 489, 491, 487, 492, 493, 490, 495, 497, + 496, 497, 495, 499, 499, 501, 498, 503, 505, 492, + 500, 493, 491, 496, 498, 502, 500, 501, 506, 503, + 504, 502, 505, 504, 507, 508, 509, 510, 508, 507, + 593, 511, 593, 506, 512, 509, 511, 511, 513, 513, + 514, 514, 509, 510, 515, 509, 519, 512, 516, 516, + + 515, 517, 517, 518, 520, 521, 522, 520, 523, 518, + 521, 524, 526, 525, 524, 527, 523, 519, 525, 528, + 529, 531, 532, 528, 530, 522, 529, 532, 530, 533, + 534, 536, 535, 538, 527, 526, 534, 535, 537, 531, + 540, 537, 539, 539, 544, 536, 537, 541, 542, 533, + 537, 538, 541, 542, 543, 546, 547, 548, 540, 544, + 548, 546, 549, 553, 550, 547, 549, 551, 543, 550, + 551, 552, 554, 555, 556, 558, 552, 557, 561, 553, + 555, 564, 557, 559, 559, 560, 562, 556, 549, 563, + 554, 570, 54, 564, 560, 558, 570, 561, 563, 565, + + 566, 567, 562, 571, 567, 565, 566, 568, 568, 569, + 568, 572, 569, 573, 576, 574, 575, 576, 577, 573, + 574, 571, 575, 577, 578, 572, 579, 580, 581, 578, + 578, 582, 583, 584, 588, 586, 585, 582, 586, 579, + 580, 585, 584, 587, 592, 589, 588, 581, 581, 587, + 589, 583, 590, 586, 591, 591, 594, 590, 590, 595, + 596, 595, 597, 598, 599, 600, 601, 602, 603, 592, + 608, 602, 601, 604, 605, 594, 606, 603, 596, 607, + 597, 598, 608, 599, 609, 600, 610, 611, 604, 605, + 612, 613, 610, 614, 606, 616, 615, 618, 607, 609, + + 615, 611, 612, 617, 619, 620, 621, 622, 622, 624, + 613, 626, 614, 616, 623, 618, 625, 628, 623, 617, + 621, 627, 619, 619, 620, 626, 627, 625, 624, 629, + 630, 631, 632, 628, 633, 634, 636, 632, 631, 635, + 634, 633, 637, 630, 635, 639, 638, 640, 629, 637, + 641, 645, 642, 647, 636, 638, 640, 642, 643, 639, + 644, 643, 641, 646, 644, 645, 648, 649, 647, 650, + 650, 655, 646, 651, 651, 652, 652, 653, 656, 657, + 648, 658, 651, 659, 656, 658, 653, 660, 649, 661, + 655, 662, 663, 665, 664, 659, 666, 662, 667, 657, + + 663, 664, 670, 673, 668, 676, 678, 661, 701, 668, + 701, 665, 660, 668, 676, 683, 668, 670, 667, 677, + 673, 666, 678, 668, 679, 677, 668, 682, 679, 680, + 680, 681, 681, 683, 684, 685, 686, 691, 682, 688, + 689, 690, 686, 692, 688, 694, 692, 53, 684, 693, + 693, 696, 694, 695, 695, 685, 687, 687, 687, 690, + 687, 689, 691, 687, 697, 697, 696, 698, 687, 702, + 699, 700, 698, 699, 687, 687, 700, 703, 704, 705, + 707, 702, 704, 706, 708, 708, 709, 712, 707, 710, + 711, 711, 713, 714, 715, 802, 703, 717, 717, 705, + + 715, 709, 706, 710, 713, 712, 716, 718, 802, 720, + 721, 716, 718, 718, 720, 714, 721, 722, 725, 723, + 724, 725, 726, 722, 723, 727, 724, 730, 726, 728, + 728, 729, 729, 727, 731, 730, 732, 733, 734, 735, + 735, 732, 736, 738, 733, 737, 739, 741, 748, 738, + 742, 736, 731, 737, 744, 743, 741, 734, 745, 742, + 743, 745, 746, 744, 747, 739, 750, 746, 749, 749, + 751, 752, 753, 748, 754, 757, 757, 754, 747, 758, + 752, 750, 756, 759, 756, 754, 760, 763, 759, 751, + 761, 762, 764, 765, 766, 767, 753, 768, 770, 767, + + 758, 769, 765, 773, 770, 771, 772, 760, 779, 763, + 761, 762, 764, 774, 771, 768, 776, 766, 772, 775, + 769, 777, 773, 778, 778, 775, 777, 774, 779, 780, + 776, 781, 782, 783, 784, 785, 787, 786, 780, 789, + 782, 788, 787, 790, 791, 789, 792, 794, 795, 797, + 791, 781, 792, 783, 785, 788, 784, 786, 793, 796, + 795, 799, 793, 790, 796, 801, 794, 799, 795, 803, + 797, 798, 798, 800, 804, 803, 800, 805, 805, 806, + 807, 808, 808, 801, 809, 807, 810, 811, 811, 812, + 810, 814, 813, 817, 804, 815, 814, 806, 820, 809, + + 821, 818, 823, 823, 824, 825, 826, 826, 824, 827, + 830, 812, 813, 829, 815, 818, 868, 817, 820, 828, + 825, 821, 822, 828, 830, 822, 832, 822, 829, 868, + 831, 822, 834, 822, 827, 831, 833, 836, 822, 839, + 832, 833, 833, 822, 835, 837, 834, 840, 835, 838, + 837, 841, 836, 839, 838, 842, 843, 844, 845, 845, + 837, 842, 843, 844, 846, 841, 847, 848, 840, 846, + 850, 849, 847, 852, 853, 855, 856, 856, 857, 853, + 854, 859, 863, 857, 860, 852, 863, 855, 850, 848, + 849, 851, 851, 858, 854, 859, 861, 851, 865, 851, + + 867, 858, 869, 860, 865, 851, 862, 862, 869, 866, + 851, 851, 866, 870, 871, 861, 872, 851, 870, 867, + 873, 874, 875, 876, 877, 872, 878, 879, 875, 873, + 880, 878, 876, 871, 881, 886, 882, 874, 48, 885, + 883, 884, 889, 877, 880, 885, 891, 879, 882, 883, + 884, 887, 886, 892, 881, 893, 894, 887, 889, 895, + 891, 896, 897, 898, 901, 907, 902, 897, 898, 901, + 894, 903, 903, 892, 893, 902, 896, 895, 904, 905, + 908, 907, 911, 912, 904, 908, 908, 909, 909, 913, + 910, 909, 905, 910, 915, 914, 911, 917, 916, 918, + + 920, 921, 923, 912, 916, 918, 921, 913, 914, 915, + 919, 922, 926, 919, 924, 925, 922, 917, 923, 924, + 925, 920, 928, 929, 926, 930, 931, 933, 928, 932, + 932, 930, 931, 934, 935, 937, 933, 935, 938, 929, + 936, 936, 939, 940, 942, 941, 940, 944, 943, 949, + 942, 934, 944, 937, 943, 945, 946, 938, 941, 947, + 945, 946, 939, 950, 951, 947, 952, 949, 953, 953, + 951, 952, 954, 955, 956, 957, 958, 959, 957, 958, + 960, 954, 955, 950, 961, 962, 965, 963, 959, 964, + 967, 967, 956, 963, 966, 964, 961, 968, 960, 966, + + 969, 965, 971, 970, 962, 972, 971, 974, 973, 975, + 977, 978, 978, 980, 969, 970, 968, 973, 981, 982, + 983, 984, 986, 972, 1027, 983, 974, 980, 1027, 977, + 984, 982, 987, 981, 975, 985, 985, 988, 987, 989, + 992, 991, 986, 988, 989, 990, 991, 990, 993, 995, + 994, 996, 997, 998, 992, 994, 999, 1001, 1001, 997, + 1002, 1003, 993, 1004, 995, 1005, 1006, 43, 998, 1012, + 996, 1005, 1009, 1009, 1002, 999, 1007, 1010, 1004, 1003, + 1011, 1007, 1010, 1012, 1014, 1013, 1006, 1011, 1013, 1015, + 1007, 1016, 1007, 1017, 1018, 1007, 1016, 1019, 1015, 1018, + + 1020, 1023, 1014, 1022, 1022, 1024, 1023, 1025, 1019, 1026, + 1024, 1028, 1017, 1029, 1026, 1030, 1031, 1032, 1033, 1020, + 1028, 1036, 1035, 1037, 1034, 1038, 1039, 1025, 1029, 1032, + 1030, 1034, 1039, 1033, 1035, 1031, 1040, 1041, 1042, 1043, + 1036, 1045, 1046, 1038, 1037, 1047, 1048, 1045, 1043, 1049, + 1050, 1040, 1052, 1047, 1049, 1051, 1046, 1041, 1042, 1053, + 1051, 1051, 1050, 1054, 1055, 1055, 1048, 1057, 1059, 1058, + 1061, 1052, 1062, 1053, 1059, 1061, 1054, 1056, 1058, 14, + 1057, 1062, 1056, 1060, 1060, 1056, 1056, 1063, 1067, 1064, + 1056, 1070, 1065, 1063, 1064, 1071, 1056, 1065, 1066, 1066, + + 1056, 1068, 1068, 1069, 1073, 1072, 1069, 1074, 1069, 1067, + 1076, 1070, 1074, 1071, 1072, 1075, 1077, 1078, 1081, 1083, + 1079, 1083, 1077, 1078, 1073, 1079, 1080, 1081, 1076, 1075, + 1080, 1084, 1081, 1086, 1081, 1087, 1081, 1086, 1081, 1082, + 1082, 1088, 1084, 1089, 1091, 1095, 1092, 1093, 1090, 1094, + 1087, 1092, 1089, 1090, 1090, 1096, 1098, 1097, 1094, 1088, + 1101, 1093, 1099, 1100, 1095, 1097, 1091, 1099, 1102, 1101, + 1098, 1103, 1106, 1104, 1096, 1105, 1105, 1100, 1104, 1107, + 1107, 1108, 1110, 1108, 1111, 1110, 1102, 1106, 1112, 1111, + 1113, 1114, 1114, 1115, 1116, 1116, 1103, 1117, 1117, 1113, + + 1118, 1119, 1120, 1121, 1121, 1118, 1122, 1112, 1123, 1124, + 1125, 1123, 1126, 1115, 1127, 1125, 1127, 1128, 1131, 13, + 1132, 1126, 1119, 1120, 1130, 1132, 1122, 1130, 1139, 1124, + 1134, 1133, 1135, 1131, 1136, 1128, 1133, 1135, 1134, 1136, + 1137, 1137, 1138, 1140, 1141, 1142, 1139, 1138, 1144, 1140, + 1145, 1141, 1146, 1147, 1144, 1148, 1145, 1146, 1142, 1147, + 1149, 1150, 1151, 1151, 1148, 1152, 1154, 1155, 1156, 1157, + 1158, 1160, 1150, 1161, 1156, 1157, 1158, 1160, 1162, 1149, + 1163, 1164, 1165, 1166, 1166, 1152, 1154, 1161, 1167, 1168, + 1155, 1169, 1163, 1161, 1170, 1164, 1171, 1171, 1162, 1170, + + 1165, 1172, 1173, 1175, 1178, 1176, 1180, 1173, 1167, 1169, + 1176, 1176, 1177, 1178, 1168, 1179, 1181, 1182, 1190, 1185, + 1180, 1183, 1175, 1179, 1172, 1184, 1183, 1184, 1186, 1183, + 1177, 1181, 1182, 1185, 1186, 1182, 1187, 1188, 1189, 1197, + 1187, 1191, 1192, 1193, 1190, 1194, 1195, 1192, 1188, 1198, + 1194, 1199, 1201, 1197, 1200, 1200, 1201, 1189, 1202, 1191, + 1203, 1193, 1204, 1205, 1206, 1208, 1195, 1198, 1204, 1199, + 1207, 1209, 1210, 1211, 1212, 1205, 1202, 1213, 1211, 1203, + 1208, 1212, 1213, 1206, 1207, 1214, 1209, 1215, 1216, 1216, + 1217, 1210, 1218, 1219, 1220, 1221, 1215, 0, 1218, 1220, + + 1222, 1221, 1229, 1214, 1230, 1217, 1222, 1223, 1223, 1224, + 1224, 1226, 1226, 1227, 1219, 1228, 1231, 1227, 1230, 1232, + 1229, 1233, 1233, 1234, 1228, 1235, 1232, 1236, 1237, 1238, + 1239, 1231, 1236, 1235, 1240, 1239, 1239, 1241, 1245, 1240, + 1240, 1243, 1237, 1234, 1242, 1242, 1244, 1245, 1238, 1246, + 1247, 1248, 1249, 1250, 1246, 1252, 1251, 1241, 1253, 1250, + 1243, 1251, 1255, 1254, 1253, 1244, 1256, 1257, 1255, 1247, + 1249, 1248, 1256, 1258, 1259, 1260, 1261, 1262, 1264, 1264, + 1263, 1252, 1254, 0, 1265, 1266, 1257, 1265, 1267, 1267, + 1261, 1268, 1258, 1259, 1260, 1263, 1268, 1266, 1262, 1269, + + 1270, 1271, 1272, 1269, 1275, 1273, 1276, 1273, 1277, 1275, + 1271, 1273, 1284, 1270, 1278, 1272, 1279, 1279, 1280, 1285, + 1281, 1276, 1282, 1280, 1273, 1281, 1282, 1283, 1277, 1286, + 1278, 1283, 1284, 1287, 1288, 1288, 1290, 1285, 1292, 1287, + 1293, 1294, 1294, 1296, 1295, 1293, 1298, 1298, 1300, 1286, + 1295, 1300, 1301, 1301, 1290, 1302, 1303, 1305, 1306, 1292, + 1305, 1307, 1309, 1296, 1308, 1308, 1310, 1311, 1312, 1313, + 1307, 1302, 1303, 1312, 1314, 1314, 1315, 1309, 1306, 1317, + 1316, 1318, 1318, 1313, 1319, 1320, 1311, 1310, 1321, 1325, + 1322, 1323, 1323, 1321, 1315, 1316, 1324, 1327, 1319, 1328, + + 1324, 1326, 1326, 1320, 1317, 1322, 1330, 1329, 1331, 1325, + 1328, 1329, 1334, 1331, 1333, 1333, 1336, 1335, 1337, 1327, + 1338, 1339, 1339, 1340, 1341, 1330, 1342, 1345, 1340, 1343, + 1334, 1335, 1337, 1349, 1344, 1336, 1336, 1352, 1343, 1344, + 1346, 1354, 1346, 1347, 1341, 1338, 1342, 1345, 1347, 1348, + 1350, 1352, 1358, 1349, 1362, 1348, 1350, 1353, 1353, 1355, + 1354, 1357, 1359, 1359, 1361, 1355, 1357, 1360, 1360, 1363, + 1364, 1366, 1362, 1364, 1365, 1365, 1358, 1367, 1361, 1373, + 1369, 1371, 1368, 1366, 1363, 1368, 1369, 1370, 1368, 1372, + 1371, 1383, 1370, 1374, 1372, 1375, 1374, 1367, 1376, 1381, + + 1368, 1375, 1382, 1376, 1373, 1377, 1377, 1378, 1378, 1379, + 1383, 1380, 1381, 1384, 1385, 1379, 1380, 1385, 1386, 1387, + 1382, 1388, 1389, 1390, 1386, 1387, 1388, 1391, 1389, 1392, + 1392, 1393, 1391, 1384, 1394, 1395, 1393, 1396, 1399, 1397, + 1398, 1401, 1402, 1400, 1403, 1404, 1390, 1401, 1405, 1413, + 1399, 1408, 1394, 1397, 1398, 1395, 1400, 1396, 1409, 1404, + 1407, 1407, 1402, 1409, 1403, 1410, 1410, 1411, 1414, 1405, + 1412, 1408, 1415, 1413, 1416, 1419, 1417, 1421, 1418, 1423, + 0, 1415, 1411, 1417, 1412, 1424, 1414, 1418, 1424, 1416, + 1418, 1419, 1421, 1425, 1425, 1426, 1426, 1421, 1427, 1428, + + 1429, 1430, 1430, 1429, 1423, 1431, 1432, 1433, 1434, 1435, + 1427, 1436, 1433, 1434, 1437, 1438, 1441, 1428, 1431, 1443, + 1439, 1440, 1441, 1437, 1444, 1432, 1445, 1436, 1435, 1439, + 1440, 1446, 1439, 1447, 1438, 1442, 1442, 1444, 1448, 1443, + 1450, 1451, 1452, 1452, 1445, 1446, 1453, 1454, 1455, 1447, + 1448, 1456, 1456, 1455, 1458, 1457, 1454, 1459, 1460, 1451, + 1463, 1465, 1453, 1461, 1457, 1450, 1456, 1457, 1461, 1461, + 1468, 1464, 1458, 1472, 1463, 1468, 1460, 1464, 1459, 1465, + 1466, 1466, 1467, 1469, 1470, 1473, 1474, 1475, 1467, 1469, + 1470, 1481, 1474, 1472, 1476, 1477, 1479, 1476, 1482, 1473, + + 1475, 1477, 1484, 1476, 1479, 1483, 1485, 1486, 1487, 1488, + 1481, 1484, 1490, 1483, 1489, 1489, 1492, 1482, 1490, 1485, + 1486, 1491, 1487, 1488, 1493, 1494, 1495, 1491, 1496, 1492, + 1498, 1497, 1499, 1500, 1502, 1502, 1489, 1497, 1503, 0, + 1509, 1496, 1504, 1494, 1493, 1495, 1504, 1513, 1499, 1505, + 1506, 1500, 1498, 1508, 1505, 1506, 1507, 1511, 1503, 1512, + 1512, 1507, 1508, 1509, 1514, 1515, 1513, 1516, 1516, 1517, + 1518, 1521, 1511, 1519, 1520, 1522, 1514, 1518, 1525, 1524, + 1532, 1523, 1526, 1517, 1515, 1519, 1520, 1523, 1526, 1532, + 1521, 1524, 1527, 1527, 1528, 1522, 1525, 1528, 1529, 1529, + + 1531, 1533, 1534, 1534, 1535, 1531, 1536, 1533, 1536, 1537, + 1538, 1539, 1537, 1540, 1541, 1542, 1535, 1543, 1546, 1547, + 1542, 1545, 1544, 1546, 1548, 1549, 1543, 1552, 1547, 1551, + 1538, 1540, 1541, 1539, 1544, 1551, 1545, 1550, 1550, 1553, + 1549, 1547, 1555, 1554, 1548, 1556, 1561, 1556, 1552, 1557, + 1558, 1558, 1559, 1559, 1560, 1560, 1562, 1562, 1553, 1554, + 1563, 1563, 1555, 1557, 1564, 1557, 1561, 1565, 1566, 1566, + 1567, 1568, 1569, 1571, 1567, 1569, 1572, 1568, 1573, 1571, + 1574, 1576, 1576, 1575, 1573, 1564, 1575, 1578, 1565, 1577, + 1577, 1580, 1581, 1578, 1572, 1579, 1582, 1583, 1585, 1586, + + 1589, 1593, 1582, 1585, 1585, 1574, 1592, 1579, 1579, 1579, + 1588, 1580, 1581, 1586, 1579, 1589, 1587, 1583, 1587, 1590, + 1591, 1588, 1593, 1594, 1594, 1590, 1592, 1595, 1597, 1591, + 1596, 1596, 1598, 1599, 1599, 1600, 1600, 1601, 1604, 1604, + 1605, 1606, 1608, 1609, 1611, 1611, 1610, 1612, 1597, 1614, + 1606, 1608, 1610, 1595, 1598, 1613, 1614, 1601, 1615, 1616, + 1617, 1617, 1618, 1619, 1609, 1605, 1621, 1615, 1612, 1622, + 1613, 1621, 1623, 1624, 1630, 1622, 1625, 1626, 1631, 1619, + 1624, 1629, 1625, 1626, 1628, 1616, 1627, 1627, 1618, 1628, + 1629, 1632, 1623, 1633, 1630, 1634, 1633, 1631, 1635, 1636, + + 1636, 1637, 1638, 1632, 1639, 1640, 1642, 1637, 1643, 1640, + 0, 1646, 1647, 1634, 1644, 1648, 1647, 1650, 1650, 1639, + 1654, 1648, 1638, 1649, 1635, 1640, 1642, 1643, 1652, 1644, + 1646, 1651, 1649, 1653, 1653, 1651, 1655, 1656, 1657, 1652, + 1658, 1654, 1659, 1657, 1652, 1660, 1661, 1662, 1663, 1663, + 1655, 1660, 1662, 1664, 1664, 1665, 1656, 1667, 1668, 1665, + 1658, 1661, 1659, 1669, 1670, 1670, 1667, 1671, 1671, 1668, + 1672, 1673, 1674, 1675, 1668, 1672, 1672, 1673, 1674, 1676, + 1677, 1678, 1680, 1669, 1676, 1681, 1682, 1678, 1683, 1681, + 1684, 1686, 1677, 1685, 1680, 1687, 1684, 1686, 1682, 1675, + + 1689, 1690, 1693, 1691, 1697, 1693, 1700, 1687, 1691, 1694, + 1694, 1700, 1689, 1683, 0, 1685, 1695, 1695, 1696, 1696, + 1690, 1698, 1699, 1701, 1697, 1702, 1704, 1698, 1699, 1701, + 1706, 1704, 1707, 1706, 1702, 1708, 1708, 1710, 1711, 1714, + 1712, 1713, 1713, 1718, 1707, 1712, 1715, 1716, 1714, 1710, + 1711, 1715, 1716, 1717, 1717, 1719, 1720, 1721, 1722, 1725, + 1723, 1724, 1722, 1718, 1719, 1723, 1728, 1724, 1727, 1727, + 1729, 1730, 1730, 1725, 1720, 1732, 1721, 1731, 1733, 1729, + 1727, 1735, 1740, 1734, 1728, 1740, 1731, 1732, 1734, 1738, + 1738, 1741, 1742, 0, 1735, 1744, 1746, 1745, 1747, 1733, + + 1748, 1748, 1746, 1749, 1754, 1749, 1751, 1741, 1742, 1753, + 1744, 1745, 1750, 1750, 1751, 1747, 1753, 1755, 1755, 1756, + 1757, 1758, 1759, 1760, 1754, 1761, 1763, 1762, 1756, 1765, + 1768, 1766, 1763, 1758, 1759, 1760, 1767, 1767, 1769, 1772, + 0, 1757, 1762, 1766, 1770, 1763, 1776, 1770, 1768, 1765, + 1771, 1761, 1774, 1780, 1775, 1771, 1775, 1774, 1769, 1772, + 1777, 1778, 1780, 1782, 1776, 1777, 1783, 1784, 1778, 1785, + 1786, 1785, 1788, 1789, 1788, 1783, 1790, 1790, 1791, 1784, + 1792, 1782, 1793, 1794, 1793, 1792, 1795, 1789, 1794, 1786, + 1796, 1795, 1797, 1798, 1800, 1799, 1803, 1801, 1866, 1798, + + 1799, 1808, 1804, 1807, 1791, 1801, 1866, 1800, 1796, 1805, + 1805, 1809, 1797, 1806, 1806, 1803, 1804, 1809, 1807, 1810, + 1811, 1808, 1811, 1812, 1810, 1813, 1813, 1817, 1814, 1815, + 1815, 1812, 1816, 1816, 1818, 1819, 1817, 1819, 1820, 1812, + 1814, 1822, 1821, 1818, 1823, 1825, 1818, 1821, 1821, 1826, + 1822, 1829, 1830, 1827, 1826, 1833, 1823, 1825, 1827, 1820, + 1831, 1832, 1832, 1834, 1829, 1836, 1835, 1853, 1837, 1831, + 1841, 1842, 1830, 1833, 1839, 1840, 1842, 1850, 1852, 1836, + 1843, 1834, 1835, 1837, 1844, 1843, 1839, 1840, 1847, 1849, + 1841, 1851, 1853, 1844, 1847, 1849, 1852, 1855, 1855, 1854, + + 1850, 1856, 1857, 1857, 1858, 1859, 1851, 1847, 1854, 1859, + 1856, 1860, 1861, 1862, 1863, 1864, 1860, 1867, 1862, 1862, + 1863, 1864, 1875, 1858, 1865, 1861, 1872, 1865, 1870, 1870, + 1871, 1871, 1873, 1873, 1875, 1872, 1876, 1867, 1874, 1874, + 1877, 1885, 1878, 1879, 1879, 1871, 1877, 1878, 1880, 1880, + 1881, 1882, 1888, 1890, 1876, 1881, 1871, 1882, 1884, 1886, + 1889, 1885, 1884, 1886, 1891, 1889, 1892, 1893, 1894, 1895, + 1895, 1892, 1897, 1899, 1896, 1898, 1890, 1888, 1896, 1891, + 1898, 1900, 1901, 1902, 1894, 1893, 1904, 1897, 1902, 1903, + 1905, 1905, 1907, 1900, 1908, 1909, 1910, 1911, 1912, 1899, + + 1907, 1901, 1903, 1913, 1904, 1915, 1914, 1917, 1918, 1918, + 1920, 1921, 1919, 1908, 1909, 1919, 1922, 1912, 1914, 1910, + 1926, 1911, 1917, 1920, 1913, 1921, 1915, 1923, 1923, 1922, + 1924, 1924, 1925, 1925, 1927, 1926, 1928, 1928, 1931, 1929, + 1930, 1930, 1934, 1931, 1933, 1935, 1936, 1927, 1929, 1933, + 1939, 1929, 1937, 1937, 1938, 1938, 1940, 1940, 1936, 1941, + 1942, 1942, 1934, 1943, 0, 1935, 1944, 1945, 1945, 1939, + 1947, 1944, 1946, 1946, 1948, 1949, 1950, 1941, 1943, 1954, + 1952, 1953, 1953, 1948, 1947, 1952, 1955, 1955, 1956, 1949, + 1957, 1958, 1959, 1959, 1958, 1950, 1957, 1961, 1954, 1960, + + 1960, 1963, 1962, 1964, 1964, 1966, 1956, 1967, 1959, 1968, + 1969, 1970, 1970, 1971, 1969, 1976, 1961, 1962, 1972, 1973, + 1963, 1975, 1975, 1978, 1968, 1966, 1979, 1980, 1980, 1977, + 1967, 1981, 1971, 1972, 1973, 1976, 1977, 1978, 1983, 1982, + 1981, 1982, 1985, 1986, 1987, 1988, 1989, 1990, 1986, 1987, + 1991, 1992, 1979, 1998, 1985, 1991, 1994, 1995, 1983, 1989, + 1996, 1994, 1995, 1997, 2002, 1999, 2003, 2000, 1990, 1997, + 1988, 1999, 2000, 2001, 1998, 1996, 2005, 1992, 2001, 2003, + 2004, 2006, 2007, 2004, 2008, 2005, 2009, 2014, 2010, 2002, + 2006, 2007, 2011, 2008, 2010, 2012, 2016, 2018, 2011, 2012, + + 2009, 2017, 2017, 2018, 2020, 2016, 2022, 2014, 2019, 2019, + 2025, 2023, 2024, 2024, 2026, 2029, 2028, 2019, 2030, 2035, + 2031, 2050, 2022, 2026, 2020, 2025, 2020, 2023, 2028, 2036, + 2034, 2029, 2031, 2030, 2033, 2034, 2078, 2033, 2078, 2035, + 2050, 2036, 2037, 2037, 2038, 2038, 2040, 2040, 2041, 2042, + 2043, 2041, 2044, 2046, 2042, 0, 2043, 2048, 2044, 2045, + 2045, 2047, 2047, 2049, 2051, 2051, 2053, 2046, 2054, 2048, + 2053, 2054, 2055, 2055, 2056, 2057, 2058, 2049, 2059, 2056, + 2060, 2060, 2059, 2063, 2057, 2061, 2064, 2065, 2063, 2066, + 2067, 2068, 2069, 2070, 2067, 2071, 2058, 2069, 2061, 2070, + + 2072, 2071, 2076, 2066, 2074, 2075, 2064, 2065, 2076, 2077, + 2075, 2068, 2081, 2082, 2082, 2084, 2083, 2077, 2072, 2083, + 2074, 2085, 2085, 2087, 2088, 2089, 2081, 2087, 2090, 2090, + 2088, 2091, 2094, 2094, 2096, 2098, 2103, 2089, 2099, 2102, + 2091, 2084, 2104, 2105, 2102, 2106, 2106, 2104, 2105, 2098, + 2108, 2108, 2096, 2110, 2099, 2111, 2111, 2112, 2113, 2110, + 2114, 2120, 2103, 2116, 2117, 2114, 2118, 2118, 2121, 2122, + 2120, 2123, 2126, 2112, 2121, 2127, 2117, 2125, 2125, 2133, + 2113, 2133, 2116, 2129, 2129, 2131, 2123, 2122, 2130, 2130, + 2131, 2126, 2132, 2127, 2134, 2135, 2136, 2132, 2137, 2138, + + 2138, 2139, 2139, 2137, 2140, 2140, 2141, 2141, 2134, 2135, + 2142, 2143, 2144, 2145, 2145, 2147, 2136, 2144, 2146, 2146, + 2148, 2149, 2142, 2150, 2151, 2151, 2152, 2147, 2156, 2143, + 2153, 2153, 2148, 2154, 2154, 2155, 2157, 2158, 2159, 2150, + 2156, 2149, 2160, 2157, 2161, 2152, 2155, 2160, 2162, 2158, + 2163, 2163, 2164, 2165, 2166, 2172, 2167, 2168, 2159, 2169, + 2175, 2164, 2170, 2170, 2161, 2173, 2171, 2176, 2162, 2167, + 2172, 2177, 2179, 2169, 2166, 2171, 2182, 2182, 2175, 2165, + 2173, 2168, 2178, 2180, 2189, 2178, 2179, 2181, 2180, 2176, + 2183, 2183, 2181, 2190, 2177, 2184, 2184, 2186, 2186, 2188, + + 2188, 2191, 2189, 2193, 2190, 2195, 2194, 2197, 2196, 2198, + 2200, 2200, 2199, 2202, 2202, 2203, 2197, 2204, 2205, 2205, + 2191, 2209, 2207, 2193, 2194, 2210, 2204, 2195, 2196, 2198, + 2199, 2207, 2208, 2208, 2211, 2212, 2213, 2203, 2214, 2209, + 2216, 2211, 2215, 2210, 2217, 2217, 2218, 2218, 2220, 2219, + 2212, 2222, 2221, 2224, 2213, 2219, 2214, 2223, 2215, 2216, + 2225, 0, 2223, 2226, 2228, 2228, 2220, 2221, 2226, 2227, + 2222, 2227, 2229, 2224, 2229, 2230, 2230, 2232, 2234, 2235, + 2225, 2236, 2237, 2238, 2239, 2247, 2240, 2234, 2238, 2243, + 2264, 2244, 2246, 2236, 2244, 2264, 2232, 2249, 2235, 2245, + + 2245, 2249, 2237, 2247, 2239, 2240, 2251, 2246, 2252, 2243, + 2248, 2248, 2252, 2253, 2253, 2254, 2256, 2257, 2258, 2258, + 2260, 2251, 2261, 2261, 2262, 2263, 2263, 2265, 2254, 2266, + 2266, 2272, 2260, 2271, 2271, 2274, 2256, 2257, 2275, 2265, + 2273, 2273, 2279, 2262, 0, 2276, 2277, 2284, 2274, 2278, + 2278, 2275, 2284, 2272, 2276, 2277, 2285, 2279, 2281, 2281, + 2286, 2285, 2287, 2288, 2289, 2291, 2290, 2287, 0, 2293, + 2296, 2288, 2294, 2291, 2286, 2290, 2295, 2294, 2297, 2297, + 2301, 2295, 2299, 2289, 2293, 2296, 2298, 2298, 2300, 2299, + 2302, 2303, 2306, 2300, 2304, 2305, 2305, 2303, 2301, 2304, + + 2307, 2308, 2308, 2309, 2309, 2307, 2312, 2306, 2302, 2313, + 2313, 2314, 2315, 0, 2314, 2316, 2317, 2315, 2315, 2312, + 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2319, 2318, 2320, + 2323, 2324, 2325, 2330, 2321, 2327, 2324, 2334, 2323, 2328, + 2327, 2322, 2328, 2332, 2325, 2330, 2333, 2335, 2332, 2336, + 2337, 2333, 2338, 2338, 2339, 2334, 2342, 2343, 2336, 2337, + 2335, 2344, 2346, 2339, 2345, 2345, 2350, 2347, 2348, 2349, + 2349, 2352, 2354, 2357, 2355, 2342, 2347, 2343, 2355, 2388, + 2344, 2346, 2388, 2348, 2358, 2350, 2352, 2356, 2356, 2359, + 2358, 2360, 2354, 2361, 2361, 2359, 2362, 2360, 2357, 2365, + + 2363, 2366, 2368, 2369, 2362, 2363, 2368, 2370, 2365, 2372, + 2372, 2373, 2373, 2380, 2366, 2374, 2374, 2369, 2376, 2376, + 2378, 2378, 2370, 2381, 2383, 2384, 2384, 2389, 2381, 2381, + 2386, 2386, 2391, 2380, 2387, 2387, 2393, 2394, 2394, 2397, + 2389, 2395, 2395, 2400, 2383, 2396, 2396, 2398, 2398, 2399, + 2391, 2401, 2402, 2404, 2397, 2408, 2393, 2404, 2402, 2403, + 2403, 2400, 2399, 2407, 2409, 2401, 2410, 2411, 2407, 2407, + 2412, 2413, 2418, 2411, 2420, 2414, 2412, 2418, 2408, 2414, + 2415, 2415, 2420, 2423, 2409, 2421, 2410, 2424, 2421, 2425, + 2424, 2427, 2426, 2428, 2430, 2430, 2413, 2426, 2429, 2431, + + 2434, 0, 2432, 2435, 2435, 2443, 2425, 2425, 2423, 2427, + 2432, 2433, 2429, 2428, 2436, 2436, 2433, 2433, 2431, 2434, + 2437, 2437, 2438, 2438, 2439, 2439, 2440, 2441, 2442, 2444, + 2445, 2443, 2441, 2446, 2448, 2448, 2449, 2450, 2444, 2449, + 2452, 2452, 2440, 2462, 2453, 2454, 2454, 2455, 2442, 2458, + 2445, 2453, 2455, 2446, 2459, 2450, 2457, 2457, 2458, 2460, + 2465, 2462, 2464, 2459, 2463, 2463, 2464, 2466, 2460, 2465, + 2467, 2468, 2469, 2474, 2474, 2467, 2467, 2475, 2477, 2478, + 2481, 2469, 2466, 2482, 2468, 2486, 2483, 2477, 2484, 2488, + 2503, 2478, 2482, 2490, 2484, 2475, 2491, 2486, 2490, 2492, + + 2492, 2491, 2493, 2495, 2502, 2481, 2483, 2510, 2495, 2503, + 2488, 2493, 2496, 2496, 2498, 2498, 2496, 2499, 2499, 2500, + 2500, 2501, 2504, 2506, 2502, 2510, 2507, 2504, 2508, 2506, + 2501, 2507, 2511, 2508, 2509, 2509, 2512, 2513, 2514, 2515, + 2518, 2512, 2516, 2516, 2514, 2519, 2520, 2522, 2522, 2524, + 2525, 2532, 2526, 2511, 2528, 2513, 2526, 2529, 2527, 2518, + 2519, 2530, 2524, 2525, 2515, 2534, 2520, 2527, 2531, 2530, + 2528, 2533, 2533, 2531, 2536, 2536, 2529, 2532, 2537, 2537, + 2539, 2541, 2541, 2543, 2534, 2546, 2544, 2545, 2548, 2548, + 2546, 2549, 2550, 2551, 2553, 2553, 2554, 2557, 2560, 2543, + + 2556, 2539, 2544, 2545, 2564, 2556, 2558, 2558, 2559, 2559, + 2554, 2549, 2551, 2561, 2561, 2550, 2562, 2563, 2560, 2557, + 2566, 2568, 2565, 2567, 2564, 2576, 2563, 2562, 2565, 2569, + 2569, 2570, 2575, 2561, 2570, 2567, 2571, 2571, 2581, 2566, + 2577, 2568, 2578, 2578, 2575, 2576, 2577, 2579, 2580, 2585, + 2579, 2591, 2583, 2584, 2580, 2586, 2581, 2583, 2584, 2587, + 2592, 2586, 2588, 2588, 2590, 2590, 2594, 2594, 2585, 2592, + 2591, 2595, 2595, 2596, 2597, 2598, 2587, 2587, 2596, 2607, + 2598, 2599, 2599, 2600, 2600, 2601, 2601, 2602, 2597, 2604, + 2604, 2609, 2602, 2610, 2611, 2612, 2612, 2615, 2607, 2614, + + 2614, 2616, 2620, 2617, 2618, 2618, 2619, 2620, 2623, 2623, + 2627, 2615, 2617, 2609, 2626, 2610, 2611, 2625, 2625, 2626, + 2628, 2616, 2629, 2630, 2627, 2619, 2628, 2631, 2631, 2634, + 2632, 2630, 2635, 2636, 2629, 2632, 2637, 2638, 2636, 2640, + 2641, 2642, 2643, 2638, 2645, 2644, 2651, 2640, 2637, 2634, + 2646, 2647, 2635, 2648, 2655, 2655, 2652, 0, 2648, 2641, + 2645, 2642, 2643, 2644, 2656, 2656, 2651, 2646, 2646, 2652, + 2657, 2670, 2647, 2677, 2657, 2661, 2661, 2663, 2663, 2664, + 2664, 2667, 2664, 2665, 2665, 2667, 2665, 2666, 2666, 2670, + 2666, 2669, 2669, 2671, 2673, 2674, 2674, 2678, 2677, 2673, + + 2680, 2679, 2681, 2683, 2678, 2679, 2684, 2671, 2688, 2680, + 2685, 2685, 2686, 2686, 2693, 2684, 2695, 2681, 2687, 2687, + 2689, 2683, 2690, 2688, 2691, 2689, 2692, 2694, 2696, 2691, + 2691, 2690, 2692, 2696, 2690, 2697, 2698, 2695, 2846, 2693, + 2697, 2700, 2694, 2699, 2699, 2846, 2700, 2703, 2703, 2706, + 2706, 2707, 2707, 2708, 2708, 2698, 2709, 2709, 2710, 2710, + 2711, 2711, 2712, 2712, 2714, 2715, 2715, 2716, 2720, 2718, + 2719, 2719, 2721, 2714, 2722, 2723, 2723, 2724, 2725, 2725, + 2728, 2729, 2730, 2720, 2729, 2721, 2722, 2716, 2718, 2731, + 2731, 2732, 2724, 2734, 2735, 2738, 2734, 2736, 2728, 2737, + + 2735, 2739, 2740, 2751, 2737, 2742, 2751, 2756, 2730, 2732, + 2760, 2736, 2753, 2753, 2738, 2754, 2754, 2757, 2740, 2739, + 2742, 2758, 2759, 2762, 2760, 2758, 2757, 2763, 2764, 2765, + 2756, 2765, 2766, 2764, 2767, 2767, 2768, 2769, 2763, 2770, + 2772, 2774, 2759, 2771, 2775, 2773, 2762, 2766, 2779, 2768, + 2780, 2780, 2778, 2874, 2781, 2874, 2769, 2770, 2786, 2771, + 2773, 2787, 2774, 2781, 2775, 2772, 2778, 2791, 2779, 2782, + 2782, 2783, 2783, 2784, 2784, 2785, 2785, 2786, 2789, 2788, + 2790, 2787, 2788, 2789, 2792, 2790, 2794, 2793, 2795, 2796, + 2796, 2797, 2791, 2793, 2798, 2798, 2800, 2802, 2807, 2792, + + 2794, 2805, 2805, 2806, 2806, 2808, 2807, 2809, 2795, 2811, + 2797, 2800, 2810, 2809, 2812, 2802, 2813, 2816, 2810, 2814, + 2814, 2819, 2818, 2811, 2808, 2819, 2821, 2812, 2822, 2823, + 2824, 2825, 2826, 2822, 2827, 2813, 2818, 2816, 2830, 2827, + 2828, 2831, 2833, 2824, 2825, 2828, 2821, 2833, 2823, 2832, + 2832, 2826, 2834, 2835, 2835, 2839, 2830, 2836, 2834, 2837, + 2831, 2838, 2836, 2840, 2837, 2841, 2838, 2842, 2842, 2840, + 2841, 2844, 2845, 2847, 2839, 2844, 2848, 2849, 2850, 2857, + 2851, 2852, 2852, 2849, 2854, 2854, 2858, 2855, 2859, 2856, + 2864, 2845, 2847, 2851, 2856, 2848, 2855, 2850, 2857, 2855, + + 2862, 2859, 2860, 2860, 2861, 2858, 2865, 2865, 2866, 2861, + 2867, 2867, 2869, 2862, 2868, 2868, 2864, 2869, 2870, 2871, + 2872, 2872, 2878, 2873, 2876, 2870, 2877, 2866, 2873, 2875, + 2875, 2876, 2879, 2877, 2880, 2882, 2882, 2879, 2871, 2883, + 2885, 2878, 2886, 2887, 2888, 2885, 2892, 2886, 2889, 2889, + 2891, 2891, 2893, 2880, 2894, 2894, 2895, 2895, 2883, 2896, + 2898, 2898, 2887, 2888, 2906, 2892, 2896, 2899, 2899, 2900, + 2902, 2893, 2905, 2907, 0, 2902, 2900, 2905, 2908, 2908, + 2909, 2909, 0, 2906, 0, 0, 0, 0, 0, 0, + 0, 0, 2907, 2913, 2913, 2913, 2913, 2913, 2913, 2913, + + 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2916, 2916, 2916, 2916, 2916, 2916, + 2916, 2917, 2917, 2917, 2917, 2917, 2917, 2917, 2919, 2919, + 0, 2919, 2919, 2919, 2919, 2920, 2920, 0, 0, 0, + 2920, 2920, 2921, 2921, 0, 0, 2921, 0, 2921, 2922, + 0, 0, 0, 0, 0, 2922, 2923, 2923, 0, 0, + 0, 2923, 2923, 2924, 0, 0, 0, 0, 0, 2924, + 2925, 2925, 0, 2925, 2925, 2925, 2925, 2926, 2926, 0, + 2926, 2926, 2926, 2926, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2912 } ; static yy_state_type yy_last_accepting_state; @@ -2774,7 +2770,7 @@ static void config_start_include(const char* filename) config_include_stack = s; cfg_parser->filename = nm; cfg_parser->line = 1; - yy_switch_to_buffer(yy_create_buffer(input,YY_BUF_SIZE)); + yy_switch_to_buffer(yy_create_buffer(input, YY_BUF_SIZE)); } static void config_start_include_glob(const char* filename) @@ -2844,11 +2840,12 @@ static void config_end_include(void) #define yy_set_bol(at_bol) \ { \ if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ yy_current_buffer->yy_ch_buf[0] = ((at_bol)?'\n':' '); \ } #endif +#line 2846 "" #define YY_NO_INPUT 1 #line 185 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2857,8 +2854,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif +#line 2855 "" -#line 2860 "" +#line 2857 "" #define INITIAL 0 #define quotedstring 1 @@ -2879,36 +2877,36 @@ static void config_end_include(void) #define YY_EXTRA_TYPE void * #endif -static int yy_init_globals (void ); +static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy (void ); +int yylex_destroy ( void ); -int yyget_debug (void ); +int yyget_debug ( void ); -void yyset_debug (int debug_flag ); +void yyset_debug ( int debug_flag ); -YY_EXTRA_TYPE yyget_extra (void ); +YY_EXTRA_TYPE yyget_extra ( void ); -void yyset_extra (YY_EXTRA_TYPE user_defined ); +void yyset_extra ( YY_EXTRA_TYPE user_defined ); -FILE *yyget_in (void ); +FILE *yyget_in ( void ); -void yyset_in (FILE * _in_str ); +void yyset_in ( FILE * _in_str ); -FILE *yyget_out (void ); +FILE *yyget_out ( void ); -void yyset_out (FILE * _out_str ); +void yyset_out ( FILE * _out_str ); - int yyget_leng (void ); + int yyget_leng ( void ); -char *yyget_text (void ); +char *yyget_text ( void ); -int yyget_lineno (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. @@ -2916,9 +2914,9 @@ void yyset_lineno (int _line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap (void ); +extern "C" int yywrap ( void ); #else -extern int yywrap (void ); +extern int yywrap ( void ); #endif #endif @@ -2927,19 +2925,18 @@ extern int yywrap (void ); #endif #ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); +static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); +static int yy_flex_strlen ( const char * ); #endif #ifndef YY_NO_INPUT - #ifdef __cplusplus -static int yyinput (void ); +static int yyinput ( void ); #else -static int input (void ); +static int input ( void ); #endif #endif @@ -3072,23 +3069,23 @@ YY_DECL if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_load_buffer_state( ); + yy_load_buffer_state( ); } { #line 205 "./util/configlexer.lex" -#line 3083 "" +#line 3079 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { (yy_more_len) = 0; if ( (yy_more_flag) ) { - (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); + (yy_more_len) = (int) ((yy_c_buf_p) - (yytext_ptr)); (yy_more_flag) = 0; } yy_cp = (yy_c_buf_p); @@ -3114,13 +3111,13 @@ YY_DECL 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 >= 2905 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 2913 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 5674 ); + while ( yy_base[yy_current_state] != 5685 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4499,48 +4496,63 @@ YY_RULE_SETUP case 269: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 270: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 271: -/* rule 271 can match eol */ YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK -/* Quoted strings. Strip leading and ending quotes */ case 272: YY_RULE_SETUP +#line 489 "./util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 273: +YY_RULE_SETUP +#line 490 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 274: +/* rule 274 can match eol */ +YY_RULE_SETUP #line 491 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +/* Quoted strings. Strip leading and ending quotes */ +case 275: +YY_RULE_SETUP +#line 494 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 492 "./util/configlexer.lex" +#line 495 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 273: +case 276: YY_RULE_SETUP -#line 497 "./util/configlexer.lex" +#line 500 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 274: -/* rule 274 can match eol */ +case 277: +/* rule 277 can match eol */ YY_RULE_SETUP -#line 498 "./util/configlexer.lex" +#line 501 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 275: +case 278: YY_RULE_SETUP -#line 500 "./util/configlexer.lex" +#line 503 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4553,34 +4565,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 276: +case 279: YY_RULE_SETUP -#line 512 "./util/configlexer.lex" +#line 515 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 513 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 277: +case 280: YY_RULE_SETUP -#line 518 "./util/configlexer.lex" +#line 521 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 278: -/* rule 278 can match eol */ +case 281: +/* rule 281 can match eol */ YY_RULE_SETUP -#line 519 "./util/configlexer.lex" +#line 522 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 279: +case 282: YY_RULE_SETUP -#line 521 "./util/configlexer.lex" +#line 524 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4593,38 +4605,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 280: +case 283: YY_RULE_SETUP -#line 533 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 535 "./util/configlexer.lex" +#line 538 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 281: +case 284: YY_RULE_SETUP -#line 539 "./util/configlexer.lex" +#line 542 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 282: -/* rule 282 can match eol */ +case 285: +/* rule 285 can match eol */ YY_RULE_SETUP -#line 540 "./util/configlexer.lex" +#line 543 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 283: +case 286: YY_RULE_SETUP -#line 541 "./util/configlexer.lex" +#line 544 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 284: +case 287: YY_RULE_SETUP -#line 542 "./util/configlexer.lex" +#line 545 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4632,27 +4644,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 547 "./util/configlexer.lex" +#line 550 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 285: +case 288: YY_RULE_SETUP -#line 551 "./util/configlexer.lex" +#line 554 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 286: -/* rule 286 can match eol */ +case 289: +/* rule 289 can match eol */ YY_RULE_SETUP -#line 552 "./util/configlexer.lex" +#line 555 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 287: +case 290: YY_RULE_SETUP -#line 554 "./util/configlexer.lex" +#line 557 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4662,7 +4674,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 560 "./util/configlexer.lex" +#line 563 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4674,33 +4686,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 288: +case 291: YY_RULE_SETUP -#line 571 "./util/configlexer.lex" +#line 574 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 289: +case 292: YY_RULE_SETUP -#line 575 "./util/configlexer.lex" +#line 578 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 290: +case 293: YY_RULE_SETUP -#line 579 "./util/configlexer.lex" +#line 582 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 291: +case 294: YY_RULE_SETUP -#line 583 "./util/configlexer.lex" +#line 586 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4702 "" +#line 4713 "" case YY_END_OF_BUFFER: { @@ -4776,7 +4788,7 @@ ECHO; { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up @@ -4843,7 +4855,7 @@ 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; + int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -4872,7 +4884,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++); @@ -4908,7 +4920,8 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ); + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ @@ -4940,7 +4953,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); + yyrestart( yyin ); } else @@ -4954,12 +4967,15 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -4991,10 +5007,10 @@ 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 >= 2905 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 2913 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; @@ -5019,11 +5035,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2905 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 2913 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; - yy_is_jam = (yy_current_state == 2904); + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 2912); return yy_is_jam ? 0 : yy_current_state; } @@ -5056,7 +5072,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -5073,13 +5089,13 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart(yyin ); + yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) + if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) @@ -5117,11 +5133,11 @@ static int yy_get_next_buffer (void) if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); } /** Switch to a different input buffer. @@ -5149,7 +5165,7 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag @@ -5177,7 +5193,7 @@ static void yy_load_buffer_state (void) { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -5186,13 +5202,13 @@ static void yy_load_buffer_state (void) /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2) ); + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer(b,file ); + yy_init_buffer( b, file ); return b; } @@ -5211,9 +5227,9 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); + yyfree( (void *) b->yy_ch_buf ); - yyfree((void *) b ); + yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. @@ -5225,7 +5241,7 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer(b ); + yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; @@ -5268,7 +5284,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes @@ -5299,7 +5315,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } @@ -5318,7 +5334,7 @@ void yypop_buffer_state (void) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -5328,7 +5344,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - int num_to_alloc; + yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { @@ -5342,9 +5358,9 @@ static void yyensure_buffer_stack (void) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -5373,7 +5389,7 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { @@ -5385,7 +5401,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) /* They forgot to leave room for the EOB's. */ return NULL; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); @@ -5399,7 +5415,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer(b ); + yy_switch_to_buffer( b ); return b; } @@ -5412,10 +5428,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +YY_BUFFER_STATE yy_scan_string (const char * yystr ) { - return yy_scan_bytes(yystr,(int) strlen(yystr) ); + return yy_scan_bytes( yystr, (int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -5425,7 +5441,7 @@ 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, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -5434,7 +5450,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc(n ); + buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -5443,7 +5459,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer(buf,n ); + b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); @@ -5459,9 +5475,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (yyconst char* msg ) +static void yynoreturn yy_fatal_error (const char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -5472,7 +5488,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - yy_size_t yyless_macro_arg = (n); \ + int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -5489,7 +5505,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ) */ int yyget_lineno (void) { - + return yylineno; } @@ -5596,7 +5612,7 @@ int yylex_destroy (void) /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); + yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } @@ -5617,7 +5633,7 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +static void yy_flex_strncpy (char* s1, const char * s2, int n ) { int i; @@ -5627,7 +5643,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) +static int yy_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) @@ -5662,7 +5678,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 583 "./util/configlexer.lex" - +#line 586 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 16b5bc547..7a9729086 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -483,6 +483,9 @@ secret-seed{COLON} { YDVAR(1, VAR_CACHEDB_SECRETSEED) } redis-server-host{COLON} { YDVAR(1, VAR_CACHEDB_REDISHOST) } redis-server-port{COLON} { YDVAR(1, VAR_CACHEDB_REDISPORT) } redis-timeout{COLON} { YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +ipset{COLON} { YDVAR(0, VAR_IPSET) } +name-v4{COLON} { YDVAR(1, VAR_IPSET_NAME_V4) } +name-v6{COLON} { YDVAR(1, VAR_IPSET_NAME_V6) } udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } diff --git a/util/configparser.c b/util/configparser.c index 9253702bc..9e4fd60d9 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.5. */ +/* A Bison parser, made by GNU Bison 3.3.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 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 @@ -40,11 +41,14 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.5" +#define YYBISON_VERSION "3.3.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -61,8 +65,8 @@ -/* Copy the first part of user declarations. */ -#line 38 "./util/configparser.y" /* yacc.c:339 */ +/* First part of user prologue. */ +#line 38 "./util/configparser.y" /* yacc.c:337 */ #include "config.h" @@ -91,13 +95,16 @@ extern struct config_parser_state* cfg_parser; #endif -#line 95 "util/configparser.c" /* yacc.c:339 */ - +#line 99 "util/configparser.c" /* yacc.c:337 */ # ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif # else -# define YY_NULLPTR 0 +# define YY_NULLPTR ((void*)0) # endif # endif @@ -389,7 +396,10 @@ extern int yydebug; VAR_STREAM_WAIT_SIZE = 518, VAR_TLS_CIPHERS = 519, VAR_TLS_CIPHERSUITES = 520, - VAR_TLS_SESSION_TICKET_KEYS = 521 + VAR_TLS_SESSION_TICKET_KEYS = 521, + VAR_IPSET = 522, + VAR_IPSET_NAME_V4 = 523, + VAR_IPSET_NAME_V6 = 524 }; #endif /* Tokens. */ @@ -657,17 +667,20 @@ extern int yydebug; #define VAR_TLS_CIPHERS 519 #define VAR_TLS_CIPHERSUITES 520 #define VAR_TLS_SESSION_TICKET_KEYS 521 +#define VAR_IPSET 522 +#define VAR_IPSET_NAME_V4 523 +#define VAR_IPSET_NAME_V6 524 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 66 "./util/configparser.y" /* yacc.c:355 */ +#line 66 "./util/configparser.y" /* yacc.c:352 */ char* str; -#line 671 "util/configparser.c" /* yacc.c:355 */ +#line 684 "util/configparser.c" /* yacc.c:352 */ }; typedef union YYSTYPE YYSTYPE; @@ -682,9 +695,7 @@ int yyparse (void); #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ -/* Copy the second part of user declarations. */ -#line 688 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -705,13 +716,13 @@ typedef signed char yytype_int8; #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short int yytype_uint16; +typedef unsigned short yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short int yytype_int16; +typedef short yytype_int16; #endif #ifndef YYSIZE_T @@ -723,7 +734,7 @@ typedef short int yytype_int16; # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif @@ -759,15 +770,6 @@ typedef short int yytype_int16; # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -775,7 +777,7 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -926,27 +928,27 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 536 +#define YYLAST 543 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 267 +#define YYNTOKENS 270 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 286 +#define YYNNTS 291 /* YYNRULES -- Number of rules. */ -#define YYNRULES 549 +#define YYNRULES 557 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 823 +#define YYNSTATES 833 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 521 +#define YYMAXUTOK 524 +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ + as returned by yylex. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1001,68 +1003,69 @@ static const yytype_uint16 yytranslate[] = 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 + 265, 266, 267, 268, 269 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 172, 172, 172, 173, 173, 174, 174, 175, 175, - 175, 176, 176, 177, 181, 186, 187, 188, 188, 188, - 189, 189, 190, 190, 191, 191, 192, 192, 192, 193, - 193, 194, 194, 194, 195, 195, 195, 196, 196, 197, - 197, 198, 198, 199, 199, 200, 200, 201, 201, 202, - 202, 203, 203, 204, 204, 204, 205, 205, 205, 206, - 206, 206, 207, 207, 208, 208, 209, 209, 210, 210, - 211, 211, 211, 212, 212, 213, 213, 214, 214, 214, - 215, 215, 216, 216, 217, 217, 218, 218, 218, 219, - 219, 220, 220, 221, 221, 222, 222, 223, 223, 224, - 224, 224, 225, 225, 226, 226, 226, 227, 227, 227, - 228, 228, 228, 229, 229, 229, 229, 230, 231, 231, - 231, 232, 232, 232, 233, 233, 234, 234, 235, 235, - 235, 236, 236, 237, 237, 237, 238, 238, 239, 239, - 240, 241, 241, 242, 242, 243, 243, 244, 245, 245, - 246, 246, 247, 247, 248, 248, 249, 249, 250, 250, - 250, 251, 251, 252, 252, 253, 253, 254, 254, 255, - 255, 256, 256, 256, 257, 257, 257, 258, 258, 258, - 259, 259, 260, 261, 261, 262, 262, 263, 263, 264, - 264, 265, 265, 265, 266, 266, 266, 267, 267, 267, - 268, 268, 269, 269, 270, 270, 272, 284, 285, 286, - 286, 286, 286, 286, 287, 287, 289, 301, 302, 303, - 303, 303, 303, 304, 304, 306, 320, 321, 322, 322, - 322, 322, 323, 323, 323, 325, 341, 342, 343, 343, - 343, 343, 344, 344, 344, 345, 347, 356, 365, 376, - 385, 394, 403, 414, 423, 434, 447, 462, 473, 490, - 507, 524, 541, 556, 571, 584, 599, 608, 617, 626, - 635, 644, 653, 662, 671, 680, 689, 698, 707, 716, - 729, 738, 751, 760, 769, 778, 785, 792, 801, 808, - 817, 825, 832, 839, 847, 856, 865, 879, 888, 897, - 906, 915, 924, 933, 940, 947, 973, 981, 988, 995, - 1002, 1009, 1017, 1025, 1033, 1040, 1051, 1062, 1069, 1078, - 1087, 1096, 1103, 1110, 1118, 1126, 1136, 1146, 1156, 1164, - 1177, 1188, 1196, 1209, 1218, 1227, 1236, 1246, 1256, 1264, - 1277, 1286, 1294, 1303, 1311, 1324, 1333, 1340, 1350, 1360, - 1370, 1380, 1390, 1400, 1410, 1420, 1427, 1434, 1441, 1450, - 1459, 1468, 1477, 1484, 1494, 1514, 1521, 1539, 1552, 1565, - 1574, 1583, 1592, 1601, 1611, 1621, 1632, 1641, 1650, 1659, - 1668, 1681, 1694, 1703, 1710, 1719, 1728, 1737, 1746, 1754, - 1767, 1775, 1808, 1815, 1830, 1840, 1850, 1857, 1864, 1871, - 1880, 1888, 1902, 1923, 1944, 1956, 1968, 1980, 1989, 2010, - 2020, 2029, 2037, 2045, 2058, 2071, 2086, 2101, 2110, 2119, - 2125, 2134, 2143, 2153, 2163, 2176, 2189, 2201, 2215, 2227, - 2241, 2251, 2258, 2265, 2274, 2283, 2293, 2303, 2313, 2320, - 2327, 2336, 2345, 2355, 2365, 2372, 2379, 2386, 2394, 2404, - 2414, 2424, 2434, 2466, 2476, 2484, 2492, 2507, 2516, 2521, - 2522, 2523, 2523, 2523, 2524, 2524, 2524, 2525, 2525, 2527, - 2537, 2546, 2553, 2560, 2567, 2574, 2581, 2588, 2593, 2594, - 2595, 2595, 2596, 2596, 2597, 2597, 2598, 2599, 2600, 2601, - 2602, 2603, 2605, 2614, 2621, 2630, 2639, 2646, 2653, 2663, - 2673, 2683, 2693, 2703, 2713, 2718, 2719, 2720, 2722, 2728, - 2738, 2745, 2754, 2762, 2767, 2768, 2770, 2770, 2770, 2771, - 2771, 2772, 2773, 2774, 2775, 2776, 2778, 2788, 2797, 2804, - 2813, 2820, 2829, 2837, 2850, 2858, 2871, 2876, 2877, 2878, - 2878, 2879, 2879, 2879, 2881, 2896, 2911, 2923, 2938, 2951 + 0, 173, 173, 173, 174, 174, 175, 175, 176, 176, + 176, 177, 177, 178, 178, 182, 187, 188, 189, 189, + 189, 190, 190, 191, 191, 192, 192, 193, 193, 193, + 194, 194, 195, 195, 195, 196, 196, 196, 197, 197, + 198, 198, 199, 199, 200, 200, 201, 201, 202, 202, + 203, 203, 204, 204, 205, 205, 205, 206, 206, 206, + 207, 207, 207, 208, 208, 209, 209, 210, 210, 211, + 211, 212, 212, 212, 213, 213, 214, 214, 215, 215, + 215, 216, 216, 217, 217, 218, 218, 219, 219, 219, + 220, 220, 221, 221, 222, 222, 223, 223, 224, 224, + 225, 225, 225, 226, 226, 227, 227, 227, 228, 228, + 228, 229, 229, 229, 230, 230, 230, 230, 231, 232, + 232, 232, 233, 233, 233, 234, 234, 235, 235, 236, + 236, 236, 237, 237, 238, 238, 238, 239, 239, 240, + 240, 241, 242, 242, 243, 243, 244, 244, 245, 246, + 246, 247, 247, 248, 248, 249, 249, 250, 250, 251, + 251, 251, 252, 252, 253, 253, 254, 254, 255, 255, + 256, 256, 257, 257, 257, 258, 258, 258, 259, 259, + 259, 260, 260, 261, 262, 262, 263, 263, 264, 264, + 265, 265, 266, 266, 266, 267, 267, 267, 268, 268, + 268, 269, 269, 270, 270, 271, 271, 273, 285, 286, + 287, 287, 287, 287, 287, 288, 288, 290, 302, 303, + 304, 304, 304, 304, 305, 305, 307, 321, 322, 323, + 323, 323, 323, 324, 324, 324, 326, 342, 343, 344, + 344, 344, 344, 345, 345, 345, 346, 348, 357, 366, + 377, 386, 395, 404, 415, 424, 435, 448, 463, 474, + 491, 508, 525, 542, 557, 572, 585, 600, 609, 618, + 627, 636, 645, 654, 663, 672, 681, 690, 699, 708, + 717, 730, 739, 752, 761, 770, 779, 786, 793, 802, + 809, 818, 826, 833, 840, 848, 857, 866, 880, 889, + 898, 907, 916, 925, 934, 941, 948, 974, 982, 989, + 996, 1003, 1010, 1018, 1026, 1034, 1041, 1052, 1063, 1070, + 1079, 1088, 1097, 1104, 1111, 1119, 1127, 1137, 1147, 1157, + 1165, 1178, 1189, 1197, 1210, 1219, 1228, 1237, 1247, 1257, + 1265, 1278, 1287, 1295, 1304, 1312, 1325, 1334, 1341, 1351, + 1361, 1371, 1381, 1391, 1401, 1411, 1421, 1428, 1435, 1442, + 1451, 1460, 1469, 1478, 1485, 1495, 1515, 1522, 1540, 1553, + 1566, 1575, 1584, 1593, 1602, 1612, 1622, 1633, 1642, 1651, + 1660, 1669, 1682, 1695, 1704, 1711, 1720, 1729, 1738, 1747, + 1755, 1768, 1776, 1809, 1816, 1831, 1841, 1851, 1858, 1865, + 1872, 1881, 1889, 1903, 1924, 1945, 1957, 1969, 1981, 1990, + 2011, 2021, 2030, 2038, 2046, 2059, 2072, 2087, 2102, 2111, + 2120, 2126, 2135, 2144, 2154, 2164, 2177, 2190, 2202, 2216, + 2228, 2242, 2252, 2259, 2266, 2275, 2284, 2294, 2304, 2314, + 2321, 2328, 2337, 2346, 2356, 2366, 2373, 2380, 2387, 2395, + 2405, 2415, 2425, 2435, 2467, 2477, 2485, 2493, 2508, 2517, + 2522, 2523, 2524, 2524, 2524, 2525, 2525, 2525, 2526, 2526, + 2528, 2538, 2547, 2554, 2561, 2568, 2575, 2582, 2589, 2594, + 2595, 2596, 2596, 2597, 2597, 2598, 2598, 2599, 2600, 2601, + 2602, 2603, 2604, 2606, 2615, 2622, 2631, 2640, 2647, 2654, + 2664, 2674, 2684, 2694, 2704, 2714, 2719, 2720, 2721, 2723, + 2729, 2739, 2746, 2755, 2763, 2768, 2769, 2771, 2771, 2771, + 2772, 2772, 2773, 2774, 2775, 2776, 2777, 2779, 2789, 2798, + 2805, 2814, 2821, 2830, 2838, 2851, 2859, 2872, 2877, 2878, + 2879, 2879, 2880, 2880, 2880, 2882, 2897, 2912, 2924, 2939, + 2952, 2963, 2968, 2969, 2970, 2970, 2972, 2987 }; #endif @@ -1169,7 +1172,8 @@ static const char *const yytname[] = "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY", "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", - "VAR_TLS_SESSION_TICKET_KEYS", "$accept", "toplevelvars", "toplevelvar", + "VAR_TLS_SESSION_TICKET_KEYS", "VAR_IPSET", "VAR_IPSET_NAME_V4", + "VAR_IPSET_NAME_V6", "$accept", "toplevelvars", "toplevelvar", "serverstart", "contents_server", "content_server", "stubstart", "contents_stub", "content_stub", "forwardstart", "contents_forward", "content_forward", "viewstart", "contents_view", "content_view", @@ -1285,7 +1289,9 @@ static const char *const yytname[] = "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs", "cachedbstart", "contents_cachedb", "content_cachedb", "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", - "redis_server_port", "redis_timeout", "server_tcp_connection_limit", YY_NULLPTR + "redis_server_port", "redis_timeout", "server_tcp_connection_limit", + "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4", + "ipset_name_v6", YY_NULLPTR }; #endif @@ -1320,14 +1326,14 @@ static const yytype_uint16 yytoknum[] = 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, 517, 518, 519, 520, 521 + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524 }; # endif -#define YYPACT_NINF -154 +#define YYPACT_NINF -262 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-154))) + (!!((Yystate) == (-262))) #define YYTABLE_NINF -1 @@ -1338,89 +1344,90 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -154, 212, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -12, 102, 98, 166, 39, 213, - 142, -80, 52, -153, 22, 23, 24, 28, 29, 30, - 78, 79, 80, 84, 88, 89, 114, 115, 116, 118, - 129, 130, 132, 133, 134, 136, 141, 180, 182, 196, - 197, 200, 201, 203, 204, 205, 206, 214, 215, 216, - 217, 218, 220, 221, 222, 223, 225, 245, 247, 248, - 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, - 272, 278, 279, 280, 281, 282, 297, 306, 307, 308, - 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, - 320, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 346, 347, 348, 349, 351, 352, 354, - 355, 356, 357, 358, 359, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 438, - 439, 440, 441, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, 442, 443, 444, 446, 447, 448, 449, - -154, -154, -154, -154, -154, -154, -154, -154, 450, 451, - 452, 453, 454, 455, -154, -154, -154, -154, -154, -154, - -154, 456, 457, 458, 459, 460, 461, 462, -154, -154, - -154, -154, -154, -154, -154, -154, 463, 464, 465, 466, - 467, 468, 469, 470, -154, -154, -154, -154, -154, -154, - -154, -154, -154, 471, 472, 473, 474, 475, 476, 477, - 478, -154, -154, -154, -154, -154, -154, -154, -154, -154, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, 491, -154, -154, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, 502, - 503, 504, 505, 506, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, 507, - 508, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, 509, 510, 511, -154, - -154, -154, -154, -154, -154, -154, -154, -154, 512, 513, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, 514, - 515, 516, 517, 518, 519, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - 520, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, 521, -154, -154, 522, 523, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, 524, 525, 526, -154, -154, -154, -154, -154, - -154, -154, -154 + -262, 0, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, 256, -42, -37, -38, + -41, -44, -136, -102, -191, -177, -261, 2, 3, 28, + 29, 30, 33, 35, 36, 37, 38, 39, 55, 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, 86, 87, 90, 92, + 93, 94, 95, 96, 97, 98, 99, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 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, 198, 199, 200, 201, 202, 204, 205, + 207, 209, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, + 230, 231, 232, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 289, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, 290, 291, 292, 296, + 297, 298, 340, -262, -262, -262, -262, -262, -262, -262, + -262, 341, 342, 343, 344, 345, 346, -262, -262, -262, + -262, -262, -262, -262, 347, 348, 352, 356, 357, 382, + 383, -262, -262, -262, -262, -262, -262, -262, -262, 384, + 386, 397, 398, 399, 400, 401, 402, -262, -262, -262, + -262, -262, -262, -262, -262, -262, 403, 404, 405, 406, + 407, 408, 409, 448, -262, -262, -262, -262, -262, -262, + -262, -262, -262, 450, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, 481, -262, + -262, 482, 483, 484, 485, 486, 488, 489, 490, 491, + 492, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, 493, 494, 497, 500, 503, -262, -262, -262, + -262, -262, -262, 504, 513, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, 514, 515, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, 516, 517, 518, -262, -262, -262, + -262, -262, -262, -262, -262, -262, 519, 520, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, 521, 522, 523, + 524, 525, 526, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, 527, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, 528, -262, -262, 529, 530, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, 531, 532, 533, -262, -262, -262, -262, -262, + -262, -262, -262 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1428,11 +1435,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 14, 206, 216, 458, 504, 477, 225, - 513, 536, 235, 3, 16, 208, 218, 227, 237, 460, - 479, 506, 515, 538, 4, 5, 6, 10, 13, 8, - 9, 7, 11, 12, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 15, 207, 217, 459, 505, 478, 226, + 514, 537, 236, 551, 3, 17, 209, 219, 228, 238, + 461, 480, 507, 516, 539, 553, 4, 5, 6, 10, + 14, 8, 9, 7, 11, 12, 13, 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, @@ -1450,135 +1456,139 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 17, 18, 80, 83, 92, 177, - 178, 19, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 31, 71, 20, 84, 85, 42, 64, 79, - 21, 22, 24, 25, 23, 26, 27, 28, 29, 30, - 115, 189, 116, 118, 119, 120, 191, 196, 192, 203, - 204, 205, 173, 81, 70, 96, 113, 114, 201, 198, - 117, 32, 33, 34, 35, 36, 72, 86, 87, 102, - 58, 68, 59, 181, 182, 97, 52, 53, 180, 54, - 55, 106, 110, 124, 133, 158, 202, 107, 65, 37, - 38, 39, 94, 125, 126, 127, 40, 41, 43, 44, - 46, 47, 45, 131, 48, 49, 50, 56, 75, 111, - 89, 132, 82, 154, 90, 91, 108, 109, 199, 95, - 51, 73, 76, 57, 60, 98, 99, 74, 155, 100, - 61, 62, 63, 190, 112, 168, 169, 170, 171, 179, - 101, 69, 103, 104, 105, 156, 66, 67, 88, 77, - 78, 93, 121, 122, 200, 123, 128, 129, 130, 159, - 160, 162, 164, 165, 163, 166, 174, 134, 135, 138, - 139, 136, 137, 140, 141, 143, 142, 193, 195, 194, - 157, 167, 183, 185, 184, 186, 187, 188, 161, 172, - 175, 176, 197, 0, 0, 0, 0, 0, 0, 0, - 207, 209, 210, 211, 213, 214, 215, 212, 0, 0, - 0, 0, 0, 0, 217, 219, 220, 221, 222, 223, - 224, 0, 0, 0, 0, 0, 0, 0, 226, 228, - 229, 232, 233, 230, 234, 231, 0, 0, 0, 0, - 0, 0, 0, 0, 236, 238, 239, 240, 241, 245, - 242, 243, 244, 0, 0, 0, 0, 0, 0, 0, - 0, 459, 461, 463, 462, 468, 464, 465, 466, 467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 478, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 0, 505, 507, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 514, 516, - 517, 518, 520, 521, 519, 522, 523, 524, 525, 0, - 0, 0, 0, 0, 537, 539, 540, 541, 542, 543, - 247, 246, 253, 266, 264, 272, 273, 276, 274, 275, - 277, 278, 279, 280, 281, 303, 304, 305, 306, 307, - 331, 332, 333, 338, 339, 269, 340, 341, 344, 342, - 343, 346, 347, 348, 362, 318, 319, 321, 322, 349, - 365, 312, 314, 366, 372, 373, 374, 270, 330, 388, - 389, 313, 383, 296, 265, 308, 363, 369, 350, 0, - 0, 392, 271, 248, 295, 354, 249, 267, 268, 309, - 310, 390, 352, 356, 357, 250, 393, 334, 361, 297, - 317, 367, 368, 371, 382, 311, 386, 384, 385, 323, - 329, 358, 359, 324, 325, 351, 376, 298, 299, 302, - 282, 284, 285, 286, 287, 288, 394, 395, 397, 335, - 336, 337, 345, 398, 399, 400, 0, 0, 0, 353, - 326, 509, 409, 413, 411, 410, 414, 412, 0, 0, - 417, 418, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 355, 370, 387, 422, 423, 327, 401, 0, - 0, 0, 0, 0, 0, 377, 378, 379, 380, 381, - 510, 320, 315, 375, 294, 251, 252, 316, 424, 426, - 425, 427, 428, 429, 283, 290, 419, 421, 420, 289, - 0, 301, 360, 396, 300, 328, 291, 292, 293, 430, - 431, 432, 436, 435, 433, 434, 437, 438, 439, 440, - 442, 441, 451, 0, 455, 456, 0, 0, 457, 443, - 449, 444, 445, 446, 448, 450, 447, 469, 471, 470, - 473, 474, 475, 476, 472, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 508, 526, 527, - 528, 531, 529, 530, 532, 533, 534, 535, 544, 545, - 546, 547, 548, 364, 391, 408, 511, 512, 415, 416, - 402, 403, 0, 0, 0, 407, 549, 452, 453, 454, - 406, 404, 405 + 0, 0, 0, 0, 0, 0, 16, 18, 19, 81, + 84, 93, 178, 179, 20, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 32, 72, 21, 85, 86, + 43, 65, 80, 22, 23, 25, 26, 24, 27, 28, + 29, 30, 31, 116, 190, 117, 119, 120, 121, 192, + 197, 193, 204, 205, 206, 174, 82, 71, 97, 114, + 115, 202, 199, 118, 33, 34, 35, 36, 37, 73, + 87, 88, 103, 59, 69, 60, 182, 183, 98, 53, + 54, 181, 55, 56, 107, 111, 125, 134, 159, 203, + 108, 66, 38, 39, 40, 95, 126, 127, 128, 41, + 42, 44, 45, 47, 48, 46, 132, 49, 50, 51, + 57, 76, 112, 90, 133, 83, 155, 91, 92, 109, + 110, 200, 96, 52, 74, 77, 58, 61, 99, 100, + 75, 156, 101, 62, 63, 64, 191, 113, 169, 170, + 171, 172, 180, 102, 70, 104, 105, 106, 157, 67, + 68, 89, 78, 79, 94, 122, 123, 201, 124, 129, + 130, 131, 160, 161, 163, 165, 166, 164, 167, 175, + 135, 136, 139, 140, 137, 138, 141, 142, 144, 143, + 194, 196, 195, 158, 168, 184, 186, 185, 187, 188, + 189, 162, 173, 176, 177, 198, 0, 0, 0, 0, + 0, 0, 0, 208, 210, 211, 212, 214, 215, 216, + 213, 0, 0, 0, 0, 0, 0, 218, 220, 221, + 222, 223, 224, 225, 0, 0, 0, 0, 0, 0, + 0, 227, 229, 230, 233, 234, 231, 235, 232, 0, + 0, 0, 0, 0, 0, 0, 0, 237, 239, 240, + 241, 242, 246, 243, 244, 245, 0, 0, 0, 0, + 0, 0, 0, 0, 460, 462, 464, 463, 469, 465, + 466, 467, 468, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 479, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 0, 506, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 515, 517, 518, 519, 521, 522, 520, 523, 524, + 525, 526, 0, 0, 0, 0, 0, 538, 540, 541, + 542, 543, 544, 0, 0, 552, 554, 555, 248, 247, + 254, 267, 265, 273, 274, 277, 275, 276, 278, 279, + 280, 281, 282, 304, 305, 306, 307, 308, 332, 333, + 334, 339, 340, 270, 341, 342, 345, 343, 344, 347, + 348, 349, 363, 319, 320, 322, 323, 350, 366, 313, + 315, 367, 373, 374, 375, 271, 331, 389, 390, 314, + 384, 297, 266, 309, 364, 370, 351, 0, 0, 393, + 272, 249, 296, 355, 250, 268, 269, 310, 311, 391, + 353, 357, 358, 251, 394, 335, 362, 298, 318, 368, + 369, 372, 383, 312, 387, 385, 386, 324, 330, 359, + 360, 325, 326, 352, 377, 299, 300, 303, 283, 285, + 286, 287, 288, 289, 395, 396, 398, 336, 337, 338, + 346, 399, 400, 401, 0, 0, 0, 354, 327, 510, + 410, 414, 412, 411, 415, 413, 0, 0, 418, 419, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 356, 371, 388, 423, 424, 328, 402, 0, 0, 0, + 0, 0, 0, 378, 379, 380, 381, 382, 511, 321, + 316, 376, 295, 252, 253, 317, 425, 427, 426, 428, + 429, 430, 284, 291, 420, 422, 421, 290, 0, 302, + 361, 397, 301, 329, 292, 293, 294, 431, 432, 433, + 437, 436, 434, 435, 438, 439, 440, 441, 443, 442, + 452, 0, 456, 457, 0, 0, 458, 444, 450, 445, + 446, 447, 449, 451, 448, 470, 472, 471, 474, 475, + 476, 477, 473, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 509, 527, 528, 529, 532, + 530, 531, 533, 534, 535, 536, 545, 546, 547, 548, + 549, 556, 557, 365, 392, 409, 512, 513, 416, 417, + 403, 404, 0, 0, 0, 408, 550, 453, 454, 455, + 407, 405, 406 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154 + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 13, 14, 24, 223, 15, 25, 420, 16, - 26, 434, 17, 27, 448, 18, 28, 464, 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, 337, 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 421, 422, 423, 424, 425, 426, 427, 435, - 436, 437, 438, 439, 440, 465, 466, 467, 468, 469, - 470, 471, 472, 449, 450, 451, 452, 453, 454, 455, - 19, 29, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 20, 30, 502, 503, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 21, 31, 516, 517, - 408, 409, 410, 411, 22, 32, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 23, 33, 544, - 545, 546, 547, 548, 549, 412 + -1, 1, 14, 15, 26, 226, 16, 27, 423, 17, + 28, 437, 18, 29, 451, 19, 30, 467, 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, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 424, 425, 426, 427, 428, 429, 430, 438, + 439, 440, 441, 442, 443, 468, 469, 470, 471, 472, + 473, 474, 475, 452, 453, 454, 455, 456, 457, 458, + 20, 31, 484, 485, 486, 487, 488, 489, 490, 491, + 492, 21, 32, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 22, 33, 519, 520, + 411, 412, 413, 414, 23, 34, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 24, 35, 547, + 548, 549, 550, 551, 552, 415, 25, 36, 555, 556, + 557 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1586,147 +1596,149 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 515, 550, 551, 552, 65, 66, 67, 553, 554, - 555, 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, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 456, 539, 540, 541, 542, 543, 556, 557, - 558, 109, 110, 111, 559, 112, 113, 114, 560, 561, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 562, 563, 564, 139, 565, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 566, - 567, 428, 568, 569, 570, 413, 571, 414, 415, 429, - 430, 572, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 573, 188, 574, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 575, 576, 416, 441, - 577, 578, 2, 579, 580, 581, 582, 202, 203, 204, - 205, 206, 207, 3, 583, 584, 585, 586, 587, 208, - 588, 589, 590, 591, 431, 592, 432, 209, 210, 417, - 211, 212, 418, 213, 214, 442, 443, 215, 216, 217, - 218, 219, 220, 221, 222, 593, 4, 594, 595, 596, - 597, 598, 5, 599, 600, 601, 602, 603, 604, 605, - 444, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 457, 606, 458, 459, 460, 461, 462, 607, 608, - 609, 610, 611, 463, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 6, 612, 473, 474, - 475, 476, 477, 478, 479, 480, 613, 614, 615, 616, - 617, 618, 7, 619, 620, 621, 622, 623, 624, 625, - 626, 445, 446, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 646, 647, 648, 433, 649, 650, 651, 652, - 419, 653, 654, 8, 655, 656, 657, 658, 659, 660, - 447, 661, 662, 663, 664, 665, 666, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, - 700, 701, 702, 703, 9, 704, 705, 706, 707, 708, - 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 10, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 11, 735, 736, - 737, 738, 739, 740, 741, 12, 742, 743, 744, 745, - 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, - 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, - 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822 + 2, 416, 459, 417, 418, 444, 431, 553, 554, 518, + 0, 3, 558, 559, 432, 433, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 521, 522, + 523, 524, 525, 526, 527, 528, 529, 530, 560, 561, + 562, 445, 446, 563, 4, 564, 565, 566, 567, 568, + 5, 476, 477, 478, 479, 480, 481, 482, 483, 542, + 543, 544, 545, 546, 419, 569, 447, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 6, 420, 597, 598, 421, 434, + 599, 435, 600, 601, 602, 603, 604, 605, 606, 607, + 7, 608, 609, 610, 611, 612, 613, 614, 615, 616, + 617, 618, 619, 620, 621, 622, 623, 448, 449, 624, + 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 8, 646, 647, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 658, 659, 450, 660, 661, 662, + 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, + 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, + 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, + 693, 460, 9, 461, 462, 463, 464, 465, 694, 695, + 696, 697, 698, 466, 699, 700, 422, 701, 10, 702, + 436, 703, 704, 705, 706, 707, 708, 709, 710, 711, + 712, 713, 714, 715, 716, 11, 717, 718, 719, 720, + 721, 722, 723, 12, 724, 725, 726, 727, 728, 729, + 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, + 740, 741, 742, 743, 744, 745, 0, 13, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 746, + 747, 748, 749, 68, 69, 70, 750, 751, 752, 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, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 753, 754, 755, 756, 757, 758, 759, 760, 761, 112, + 113, 114, 762, 115, 116, 117, 763, 764, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 765, 766, 767, 142, 768, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 769, 770, 771, + 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, + 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, 782, 191, + 783, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 784, 785, 786, 787, 788, 789, + 790, 791, 792, 793, 794, 205, 206, 207, 208, 209, + 210, 795, 796, 797, 798, 799, 800, 211, 801, 802, + 803, 804, 805, 806, 807, 212, 213, 808, 214, 215, + 809, 216, 217, 810, 811, 218, 219, 220, 221, 222, + 223, 224, 225, 812, 813, 814, 815, 816, 817, 818, + 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, + 829, 830, 831, 832 }; -static const yytype_uint16 yycheck[] = +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, 40, 41, - 42, 111, 10, 10, 10, 47, 48, 49, 10, 10, - 10, 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, 43, 236, 237, 238, 239, 240, 10, 10, - 10, 103, 104, 105, 10, 107, 108, 109, 10, 10, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 10, 10, 10, 139, 10, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 10, - 10, 43, 10, 10, 10, 43, 10, 45, 46, 51, - 52, 10, 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, - 10, 203, 10, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 10, 10, 106, 43, - 10, 10, 0, 10, 10, 10, 10, 229, 230, 231, - 232, 233, 234, 11, 10, 10, 10, 10, 10, 241, - 10, 10, 10, 10, 136, 10, 138, 249, 250, 137, - 252, 253, 140, 255, 256, 79, 80, 259, 260, 261, - 262, 263, 264, 265, 266, 10, 44, 10, 10, 10, - 10, 10, 50, 10, 10, 10, 10, 10, 10, 10, - 104, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 242, 10, 244, 245, 246, 247, 248, 10, 10, - 10, 10, 10, 254, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 94, 10, 95, 96, - 97, 98, 99, 100, 101, 102, 10, 10, 10, 10, - 10, 10, 110, 10, 10, 10, 10, 10, 10, 10, - 10, 165, 166, 10, 10, 10, 10, 10, 10, 10, + 0, 43, 43, 45, 46, 43, 43, 268, 269, 111, + -1, 11, 10, 10, 51, 52, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 10, 10, + 10, 79, 80, 10, 44, 10, 10, 10, 10, 10, + 50, 95, 96, 97, 98, 99, 100, 101, 102, 236, + 237, 238, 239, 240, 106, 10, 104, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 257, 10, 10, 10, 10, - 258, 10, 10, 151, 10, 10, 10, 10, 10, 10, - 204, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 94, 137, 10, 10, 140, 136, + 10, 138, 10, 10, 10, 10, 10, 10, 10, 10, + 110, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 165, 166, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 202, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 218, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 235, 10, 10, - 10, 10, 10, 10, 10, 243, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 151, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 204, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 242, 202, 244, 245, 246, 247, 248, 10, 10, + 10, 10, 10, 254, 10, 10, 258, 10, 218, 10, + 257, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 235, 10, 10, 10, 10, + 10, 10, 10, 243, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, -1, 267, 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, 40, 41, 42, 10, + 10, 10, 10, 47, 48, 49, 10, 10, 10, 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, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 103, + 104, 105, 10, 107, 108, 109, 10, 10, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 10, 10, 10, 139, 10, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 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, 10, 203, + 10, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 229, 230, 231, 232, 233, + 234, 10, 10, 10, 10, 10, 10, 241, 10, 10, + 10, 10, 10, 10, 10, 249, 250, 10, 252, 253, + 10, 255, 256, 10, 10, 259, 260, 261, 262, 263, + 264, 265, 266, 10, 10, 10, 10, 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, 268, 0, 11, 44, 50, 94, 110, 151, 202, - 218, 235, 243, 269, 270, 273, 276, 279, 282, 497, - 508, 523, 531, 544, 271, 274, 277, 280, 283, 498, - 509, 524, 532, 545, 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, 40, 41, 42, 47, 48, 49, 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, 103, - 104, 105, 107, 108, 109, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 139, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 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, 203, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 229, 230, 231, 232, 233, 234, 241, 249, - 250, 252, 253, 255, 256, 259, 260, 261, 262, 263, - 264, 265, 266, 272, 285, 286, 287, 288, 289, 290, + 0, 271, 0, 11, 44, 50, 94, 110, 151, 202, + 218, 235, 243, 267, 272, 273, 276, 279, 282, 285, + 500, 511, 526, 534, 547, 556, 274, 277, 280, 283, + 286, 501, 512, 527, 535, 548, 557, 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, 40, 41, 42, 47, 48, + 49, 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, 103, 104, 105, 107, 108, 109, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 139, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 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, 203, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 229, 230, 231, 232, 233, + 234, 241, 249, 250, 252, 253, 255, 256, 259, 260, + 261, 262, 263, 264, 265, 266, 275, 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, @@ -1744,21 +1756,22 @@ static const yytype_uint16 yystos[] = 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 527, 528, - 529, 530, 552, 43, 45, 46, 106, 137, 140, 258, - 275, 469, 470, 471, 472, 473, 474, 475, 43, 51, - 52, 136, 138, 257, 278, 476, 477, 478, 479, 480, - 481, 43, 79, 80, 104, 165, 166, 204, 281, 490, - 491, 492, 493, 494, 495, 496, 43, 242, 244, 245, - 246, 247, 248, 254, 284, 482, 483, 484, 485, 486, - 487, 488, 489, 95, 96, 97, 98, 99, 100, 101, - 102, 499, 500, 501, 502, 503, 504, 505, 506, 507, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 111, 525, 526, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 236, - 237, 238, 239, 240, 546, 547, 548, 549, 550, 551, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 530, 531, 532, 533, 555, 43, 45, 46, 106, + 137, 140, 258, 278, 472, 473, 474, 475, 476, 477, + 478, 43, 51, 52, 136, 138, 257, 281, 479, 480, + 481, 482, 483, 484, 43, 79, 80, 104, 165, 166, + 204, 284, 493, 494, 495, 496, 497, 498, 499, 43, + 242, 244, 245, 246, 247, 248, 254, 287, 485, 486, + 487, 488, 489, 490, 491, 492, 95, 96, 97, 98, + 99, 100, 101, 102, 502, 503, 504, 505, 506, 507, + 508, 509, 510, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 525, 111, 528, + 529, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 236, 237, 238, 239, 240, 549, 550, 551, + 552, 553, 554, 268, 269, 558, 559, 560, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1792,68 +1805,69 @@ static const yytype_uint16 yystos[] = /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 267, 268, 268, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 270, 271, 271, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 273, 274, 274, 275, - 275, 275, 275, 275, 275, 275, 276, 277, 277, 278, - 278, 278, 278, 278, 278, 279, 280, 280, 281, 281, - 281, 281, 281, 281, 281, 282, 283, 283, 284, 284, - 284, 284, 284, 284, 284, 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, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 498, 499, 499, 499, 499, 499, 499, 499, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 509, - 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, - 510, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 524, 525, 526, 527, - 528, 529, 530, 531, 532, 532, 533, 533, 533, 533, - 533, 533, 533, 533, 533, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 545, 546, - 546, 546, 546, 546, 547, 548, 549, 550, 551, 552 + 0, 270, 271, 271, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 273, 274, 274, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 276, 277, 277, + 278, 278, 278, 278, 278, 278, 278, 279, 280, 280, + 281, 281, 281, 281, 281, 281, 282, 283, 283, 284, + 284, 284, 284, 284, 284, 284, 285, 286, 286, 287, + 287, 287, 287, 287, 287, 287, 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, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 501, 502, 502, 502, 502, 502, 502, 502, 502, + 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 512, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 513, 513, 513, 514, 515, 516, 517, 518, 519, 520, + 521, 522, 523, 524, 525, 526, 527, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 535, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 537, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 548, + 549, 549, 549, 549, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 557, 558, 558, 559, 560 }; /* 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, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1872,11 +1886,11 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 1, 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, @@ -1888,25 +1902,26 @@ 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, 2, 2, 3, 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, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, - 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 4, 4, 4, 3, 3, + 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 3, 3, 3, 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, 3, 3, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 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, 3, 3, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 3 + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -1922,22 +1937,22 @@ static const yytype_uint8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) /* Error token number */ #define YYTERROR 1 @@ -1977,37 +1992,37 @@ do { \ } while (0) -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { - FILE *yyo = yyoutput; - YYUSE (yyo); + FILE *yyoutput = yyo; + YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); + YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { - YYFPRINTF (yyoutput, "%s %s (", + YYFPRINTF (yyo, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); + yy_symbol_value_print (yyo, yytype, yyvaluep); + YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. @@ -2041,7 +2056,7 @@ do { \ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -2052,7 +2067,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) + &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); } @@ -2156,7 +2171,10 @@ yytnamerr (char *yyres, const char *yystr) case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - /* Fall through. */ + else + goto append; + + append: default: if (yyres) yyres[yyn] = *yyp; @@ -2174,7 +2192,7 @@ yytnamerr (char *yyres, const char *yystr) if (! yyres) return yystrlen (yystr); - return yystpcpy (yyres, yystr) - yyres; + return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -2252,10 +2270,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else return 2; - yysize = yysize1; } } } @@ -2279,9 +2297,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else return 2; - yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -2407,23 +2426,31 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; + /*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | +| yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ - yynewstate: +yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - yysetstate: - *yyssp = yystate; + +/*--------------------------------------------------------------------. +| yynewstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + goto yyexhaustedlab; +#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); -#ifdef yyoverflow +# if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into @@ -2439,14 +2466,10 @@ yyparse (void) &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); - yyss = yyss1; yyvs = yyvs1; } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else +# else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -2462,22 +2485,22 @@ yyparse (void) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif -#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -2486,11 +2509,11 @@ yyparse (void) goto yybackup; + /*-----------. | yybackup. | `-----------*/ yybackup: - /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -2563,7 +2586,7 @@ yyparse (void) /*-----------------------------. -| yyreduce -- Do a reduction. | +| yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -2583,16 +2606,16 @@ yyparse (void) YY_REDUCE_PRINT (yyn); switch (yyn) { - case 14: -#line 182 "./util/configparser.y" /* yacc.c:1648 */ + case 15: +#line 183 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(server:)\n")); } -#line 2592 "util/configparser.c" /* yacc.c:1648 */ +#line 2615 "util/configparser.c" /* yacc.c:1652 */ break; - case 206: -#line 273 "./util/configparser.y" /* yacc.c:1648 */ + case 207: +#line 274 "./util/configparser.y" /* yacc.c:1652 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2603,11 +2626,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2607 "util/configparser.c" /* yacc.c:1648 */ +#line 2630 "util/configparser.c" /* yacc.c:1652 */ break; - case 216: -#line 290 "./util/configparser.y" /* yacc.c:1648 */ + case 217: +#line 291 "./util/configparser.y" /* yacc.c:1652 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2618,11 +2641,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2622 "util/configparser.c" /* yacc.c:1648 */ +#line 2645 "util/configparser.c" /* yacc.c:1652 */ break; - case 225: -#line 307 "./util/configparser.y" /* yacc.c:1648 */ + case 226: +#line 308 "./util/configparser.y" /* yacc.c:1652 */ { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2635,11 +2658,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2639 "util/configparser.c" /* yacc.c:1648 */ +#line 2662 "util/configparser.c" /* yacc.c:1652 */ break; - case 235: -#line 326 "./util/configparser.y" /* yacc.c:1648 */ + case 236: +#line 327 "./util/configparser.y" /* yacc.c:1652 */ { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2654,11 +2677,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2658 "util/configparser.c" /* yacc.c:1648 */ +#line 2681 "util/configparser.c" /* yacc.c:1652 */ break; - case 246: -#line 348 "./util/configparser.y" /* yacc.c:1648 */ + case 247: +#line 349 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2666,11 +2689,11 @@ yyparse (void) else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2670 "util/configparser.c" /* yacc.c:1648 */ +#line 2693 "util/configparser.c" /* yacc.c:1652 */ break; - case 247: -#line 357 "./util/configparser.y" /* yacc.c:1648 */ + case 248: +#line 358 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2678,11 +2701,11 @@ yyparse (void) else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2682 "util/configparser.c" /* yacc.c:1648 */ +#line 2705 "util/configparser.c" /* yacc.c:1652 */ break; - case 248: -#line 366 "./util/configparser.y" /* yacc.c:1648 */ + case 249: +#line 367 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2692,11 +2715,11 @@ yyparse (void) else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2696 "util/configparser.c" /* yacc.c:1648 */ +#line 2719 "util/configparser.c" /* yacc.c:1652 */ break; - case 249: -#line 377 "./util/configparser.y" /* yacc.c:1648 */ + case 250: +#line 378 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2704,11 +2727,11 @@ yyparse (void) else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2708 "util/configparser.c" /* yacc.c:1648 */ +#line 2731 "util/configparser.c" /* yacc.c:1652 */ break; - case 250: -#line 386 "./util/configparser.y" /* yacc.c:1648 */ + case 251: +#line 387 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2716,11 +2739,11 @@ yyparse (void) else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2720 "util/configparser.c" /* yacc.c:1648 */ +#line 2743 "util/configparser.c" /* yacc.c:1652 */ break; - case 251: -#line 395 "./util/configparser.y" /* yacc.c:1648 */ + case 252: +#line 396 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2728,11 +2751,11 @@ yyparse (void) else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2732 "util/configparser.c" /* yacc.c:1648 */ +#line 2755 "util/configparser.c" /* yacc.c:1652 */ break; - case 252: -#line 404 "./util/configparser.y" /* yacc.c:1648 */ + case 253: +#line 405 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2742,11 +2765,11 @@ yyparse (void) else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2746 "util/configparser.c" /* yacc.c:1648 */ +#line 2769 "util/configparser.c" /* yacc.c:1652 */ break; - case 253: -#line 415 "./util/configparser.y" /* yacc.c:1648 */ + case 254: +#line 416 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2754,11 +2777,11 @@ yyparse (void) else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2758 "util/configparser.c" /* yacc.c:1648 */ +#line 2781 "util/configparser.c" /* yacc.c:1652 */ break; - case 254: -#line 424 "./util/configparser.y" /* yacc.c:1648 */ + case 255: +#line 425 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2768,11 +2791,11 @@ yyparse (void) OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2772 "util/configparser.c" /* yacc.c:1648 */ +#line 2795 "util/configparser.c" /* yacc.c:1652 */ break; - case 255: -#line 435 "./util/configparser.y" /* yacc.c:1648 */ + case 256: +#line 436 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -2783,11 +2806,11 @@ yyparse (void) OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2787 "util/configparser.c" /* yacc.c:1648 */ +#line 2810 "util/configparser.c" /* yacc.c:1652 */ break; - case 256: -#line 448 "./util/configparser.y" /* yacc.c:1648 */ + case 257: +#line 449 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -2801,11 +2824,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2805 "util/configparser.c" /* yacc.c:1648 */ +#line 2828 "util/configparser.c" /* yacc.c:1652 */ break; - case 257: -#line 463 "./util/configparser.y" /* yacc.c:1648 */ + case 258: +#line 464 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -2815,11 +2838,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2819 "util/configparser.c" /* yacc.c:1648 */ +#line 2842 "util/configparser.c" /* yacc.c:1652 */ break; - case 258: -#line 474 "./util/configparser.y" /* yacc.c:1648 */ + case 259: +#line 475 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2835,11 +2858,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2839 "util/configparser.c" /* yacc.c:1648 */ +#line 2862 "util/configparser.c" /* yacc.c:1652 */ break; - case 259: -#line 491 "./util/configparser.y" /* yacc.c:1648 */ + case 260: +#line 492 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2855,11 +2878,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2859 "util/configparser.c" /* yacc.c:1648 */ +#line 2882 "util/configparser.c" /* yacc.c:1652 */ break; - case 260: -#line 508 "./util/configparser.y" /* yacc.c:1648 */ + case 261: +#line 509 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2875,11 +2898,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2879 "util/configparser.c" /* yacc.c:1648 */ +#line 2902 "util/configparser.c" /* yacc.c:1652 */ break; - case 261: -#line 525 "./util/configparser.y" /* yacc.c:1648 */ + case 262: +#line 526 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2895,11 +2918,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2899 "util/configparser.c" /* yacc.c:1648 */ +#line 2922 "util/configparser.c" /* yacc.c:1652 */ break; - case 262: -#line 542 "./util/configparser.y" /* yacc.c:1648 */ + case 263: +#line 543 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -2913,11 +2936,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2917 "util/configparser.c" /* yacc.c:1648 */ +#line 2940 "util/configparser.c" /* yacc.c:1652 */ break; - case 263: -#line 557 "./util/configparser.y" /* yacc.c:1648 */ + case 264: +#line 558 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -2931,11 +2954,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2935 "util/configparser.c" /* yacc.c:1648 */ +#line 2958 "util/configparser.c" /* yacc.c:1652 */ break; - case 264: -#line 572 "./util/configparser.y" /* yacc.c:1648 */ + case 265: +#line 573 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2947,11 +2970,11 @@ yyparse (void) else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 2951 "util/configparser.c" /* yacc.c:1648 */ +#line 2974 "util/configparser.c" /* yacc.c:1652 */ break; - case 265: -#line 585 "./util/configparser.y" /* yacc.c:1648 */ + case 266: +#line 586 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2965,11 +2988,11 @@ yyparse (void) cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 2969 "util/configparser.c" /* yacc.c:1648 */ +#line 2992 "util/configparser.c" /* yacc.c:1652 */ break; - case 266: -#line 600 "./util/configparser.y" /* yacc.c:1648 */ + case 267: +#line 601 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2977,11 +3000,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2981 "util/configparser.c" /* yacc.c:1648 */ +#line 3004 "util/configparser.c" /* yacc.c:1652 */ break; - case 267: -#line 609 "./util/configparser.y" /* yacc.c:1648 */ + case 268: +#line 610 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -2989,11 +3012,11 @@ yyparse (void) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2993 "util/configparser.c" /* yacc.c:1648 */ +#line 3016 "util/configparser.c" /* yacc.c:1652 */ break; - case 268: -#line 618 "./util/configparser.y" /* yacc.c:1648 */ + case 269: +#line 619 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3001,11 +3024,11 @@ yyparse (void) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3005 "util/configparser.c" /* yacc.c:1648 */ +#line 3028 "util/configparser.c" /* yacc.c:1652 */ break; - case 269: -#line 627 "./util/configparser.y" /* yacc.c:1648 */ + case 270: +#line 628 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3013,11 +3036,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3017 "util/configparser.c" /* yacc.c:1648 */ +#line 3040 "util/configparser.c" /* yacc.c:1652 */ break; - case 270: -#line 636 "./util/configparser.y" /* yacc.c:1648 */ + case 271: +#line 637 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3025,11 +3048,11 @@ yyparse (void) else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3029 "util/configparser.c" /* yacc.c:1648 */ +#line 3052 "util/configparser.c" /* yacc.c:1652 */ break; - case 271: -#line 645 "./util/configparser.y" /* yacc.c:1648 */ + case 272: +#line 646 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3037,11 +3060,11 @@ yyparse (void) else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3041 "util/configparser.c" /* yacc.c:1648 */ +#line 3064 "util/configparser.c" /* yacc.c:1652 */ break; - case 272: -#line 654 "./util/configparser.y" /* yacc.c:1648 */ + case 273: +#line 655 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3049,11 +3072,11 @@ yyparse (void) else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3053 "util/configparser.c" /* yacc.c:1648 */ +#line 3076 "util/configparser.c" /* yacc.c:1652 */ break; - case 273: -#line 663 "./util/configparser.y" /* yacc.c:1648 */ + case 274: +#line 664 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3061,11 +3084,11 @@ yyparse (void) else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3065 "util/configparser.c" /* yacc.c:1648 */ +#line 3088 "util/configparser.c" /* yacc.c:1652 */ break; - case 274: -#line 672 "./util/configparser.y" /* yacc.c:1648 */ + case 275: +#line 673 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3073,11 +3096,11 @@ yyparse (void) else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3077 "util/configparser.c" /* yacc.c:1648 */ +#line 3100 "util/configparser.c" /* yacc.c:1652 */ break; - case 275: -#line 681 "./util/configparser.y" /* yacc.c:1648 */ + case 276: +#line 682 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3085,11 +3108,11 @@ yyparse (void) else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3089 "util/configparser.c" /* yacc.c:1648 */ +#line 3112 "util/configparser.c" /* yacc.c:1652 */ break; - case 276: -#line 690 "./util/configparser.y" /* yacc.c:1648 */ + case 277: +#line 691 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3097,11 +3120,11 @@ yyparse (void) else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3101 "util/configparser.c" /* yacc.c:1648 */ +#line 3124 "util/configparser.c" /* yacc.c:1652 */ break; - case 277: -#line 699 "./util/configparser.y" /* yacc.c:1648 */ + case 278: +#line 700 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3109,11 +3132,11 @@ yyparse (void) else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3113 "util/configparser.c" /* yacc.c:1648 */ +#line 3136 "util/configparser.c" /* yacc.c:1652 */ break; - case 278: -#line 708 "./util/configparser.y" /* yacc.c:1648 */ + case 279: +#line 709 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3121,11 +3144,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3125 "util/configparser.c" /* yacc.c:1648 */ +#line 3148 "util/configparser.c" /* yacc.c:1652 */ break; - case 279: -#line 717 "./util/configparser.y" /* yacc.c:1648 */ + case 280: +#line 718 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3137,11 +3160,11 @@ yyparse (void) else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3141 "util/configparser.c" /* yacc.c:1648 */ +#line 3164 "util/configparser.c" /* yacc.c:1652 */ break; - case 280: -#line 730 "./util/configparser.y" /* yacc.c:1648 */ + case 281: +#line 731 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3149,11 +3172,11 @@ yyparse (void) else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3153 "util/configparser.c" /* yacc.c:1648 */ +#line 3176 "util/configparser.c" /* yacc.c:1652 */ break; - case 281: -#line 739 "./util/configparser.y" /* yacc.c:1648 */ + case 282: +#line 740 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3165,11 +3188,11 @@ yyparse (void) else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3169 "util/configparser.c" /* yacc.c:1648 */ +#line 3192 "util/configparser.c" /* yacc.c:1652 */ break; - case 282: -#line 752 "./util/configparser.y" /* yacc.c:1648 */ + case 283: +#line 753 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3177,11 +3200,11 @@ yyparse (void) else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3181 "util/configparser.c" /* yacc.c:1648 */ +#line 3204 "util/configparser.c" /* yacc.c:1652 */ break; - case 283: -#line 761 "./util/configparser.y" /* yacc.c:1648 */ + case 284: +#line 762 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3189,11 +3212,11 @@ yyparse (void) else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3193 "util/configparser.c" /* yacc.c:1648 */ +#line 3216 "util/configparser.c" /* yacc.c:1652 */ break; - case 284: -#line 770 "./util/configparser.y" /* yacc.c:1648 */ + case 285: +#line 771 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3201,31 +3224,31 @@ yyparse (void) else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3205 "util/configparser.c" /* yacc.c:1648 */ +#line 3228 "util/configparser.c" /* yacc.c:1652 */ break; - case 285: -#line 779 "./util/configparser.y" /* yacc.c:1648 */ + case 286: +#line 780 "./util/configparser.y" /* yacc.c:1652 */ { 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 3215 "util/configparser.c" /* yacc.c:1648 */ +#line 3238 "util/configparser.c" /* yacc.c:1652 */ break; - case 286: -#line 786 "./util/configparser.y" /* yacc.c:1648 */ + case 287: +#line 787 "./util/configparser.y" /* yacc.c:1652 */ { 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 3225 "util/configparser.c" /* yacc.c:1648 */ +#line 3248 "util/configparser.c" /* yacc.c:1652 */ break; - case 287: -#line 793 "./util/configparser.y" /* yacc.c:1648 */ + case 288: +#line 794 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3233,21 +3256,21 @@ yyparse (void) else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3237 "util/configparser.c" /* yacc.c:1648 */ +#line 3260 "util/configparser.c" /* yacc.c:1652 */ break; - case 288: -#line 802 "./util/configparser.y" /* yacc.c:1648 */ + case 289: +#line 803 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3247 "util/configparser.c" /* yacc.c:1648 */ +#line 3270 "util/configparser.c" /* yacc.c:1652 */ break; - case 289: -#line 809 "./util/configparser.y" /* yacc.c:1648 */ + case 290: +#line 810 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3255,53 +3278,53 @@ yyparse (void) else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3259 "util/configparser.c" /* yacc.c:1648 */ +#line 3282 "util/configparser.c" /* yacc.c:1652 */ break; - case 290: -#line 818 "./util/configparser.y" /* yacc.c:1648 */ + case 291: +#line 819 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3270 "util/configparser.c" /* yacc.c:1648 */ +#line 3293 "util/configparser.c" /* yacc.c:1652 */ break; - case 291: -#line 826 "./util/configparser.y" /* yacc.c:1648 */ + case 292: +#line 827 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3280 "util/configparser.c" /* yacc.c:1648 */ +#line 3303 "util/configparser.c" /* yacc.c:1652 */ break; - case 292: -#line 833 "./util/configparser.y" /* yacc.c:1648 */ + case 293: +#line 834 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3290 "util/configparser.c" /* yacc.c:1648 */ +#line 3313 "util/configparser.c" /* yacc.c:1652 */ break; - case 293: -#line 840 "./util/configparser.y" /* yacc.c:1648 */ + case 294: +#line 841 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3301 "util/configparser.c" /* yacc.c:1648 */ +#line 3324 "util/configparser.c" /* yacc.c:1652 */ break; - case 294: -#line 848 "./util/configparser.y" /* yacc.c:1648 */ + case 295: +#line 849 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3309,11 +3332,11 @@ yyparse (void) else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3313 "util/configparser.c" /* yacc.c:1648 */ +#line 3336 "util/configparser.c" /* yacc.c:1652 */ break; - case 295: -#line 857 "./util/configparser.y" /* yacc.c:1648 */ + case 296: +#line 858 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3321,11 +3344,11 @@ yyparse (void) else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3325 "util/configparser.c" /* yacc.c:1648 */ +#line 3348 "util/configparser.c" /* yacc.c:1652 */ break; - case 296: -#line 866 "./util/configparser.y" /* yacc.c:1648 */ + case 297: +#line 867 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3338,11 +3361,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3342 "util/configparser.c" /* yacc.c:1648 */ +#line 3365 "util/configparser.c" /* yacc.c:1652 */ break; - case 297: -#line 880 "./util/configparser.y" /* yacc.c:1648 */ + case 298: +#line 881 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3350,11 +3373,11 @@ yyparse (void) else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3354 "util/configparser.c" /* yacc.c:1648 */ +#line 3377 "util/configparser.c" /* yacc.c:1652 */ break; - case 298: -#line 889 "./util/configparser.y" /* yacc.c:1648 */ + case 299: +#line 890 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3362,11 +3385,11 @@ yyparse (void) else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3366 "util/configparser.c" /* yacc.c:1648 */ +#line 3389 "util/configparser.c" /* yacc.c:1652 */ break; - case 299: -#line 898 "./util/configparser.y" /* yacc.c:1648 */ + case 300: +#line 899 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3374,11 +3397,11 @@ yyparse (void) else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3378 "util/configparser.c" /* yacc.c:1648 */ +#line 3401 "util/configparser.c" /* yacc.c:1652 */ break; - case 300: -#line 907 "./util/configparser.y" /* yacc.c:1648 */ + case 301: +#line 908 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3386,11 +3409,11 @@ yyparse (void) else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3390 "util/configparser.c" /* yacc.c:1648 */ +#line 3413 "util/configparser.c" /* yacc.c:1652 */ break; - case 301: -#line 916 "./util/configparser.y" /* yacc.c:1648 */ + case 302: +#line 917 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3398,11 +3421,11 @@ yyparse (void) else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" /* yacc.c:1648 */ +#line 3425 "util/configparser.c" /* yacc.c:1652 */ break; - case 302: -#line 925 "./util/configparser.y" /* yacc.c:1648 */ + case 303: +#line 926 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3410,31 +3433,31 @@ yyparse (void) else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3414 "util/configparser.c" /* yacc.c:1648 */ +#line 3437 "util/configparser.c" /* yacc.c:1652 */ break; - case 303: -#line 934 "./util/configparser.y" /* yacc.c:1648 */ + case 304: +#line 935 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3424 "util/configparser.c" /* yacc.c:1648 */ +#line 3447 "util/configparser.c" /* yacc.c:1652 */ break; - case 304: -#line 941 "./util/configparser.y" /* yacc.c:1648 */ + case 305: +#line 942 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3434 "util/configparser.c" /* yacc.c:1648 */ +#line 3457 "util/configparser.c" /* yacc.c:1652 */ break; - case 305: -#line 948 "./util/configparser.y" /* yacc.c:1648 */ + case 306: +#line 949 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3459,105 +3482,105 @@ yyparse (void) } } } -#line 3463 "util/configparser.c" /* yacc.c:1648 */ +#line 3486 "util/configparser.c" /* yacc.c:1652 */ break; - case 306: -#line 974 "./util/configparser.y" /* yacc.c:1648 */ + case 307: +#line 975 "./util/configparser.y" /* yacc.c:1652 */ { 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 3474 "util/configparser.c" /* yacc.c:1648 */ +#line 3497 "util/configparser.c" /* yacc.c:1652 */ break; - case 307: -#line 982 "./util/configparser.y" /* yacc.c:1648 */ + case 308: +#line 983 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3484 "util/configparser.c" /* yacc.c:1648 */ +#line 3507 "util/configparser.c" /* yacc.c:1652 */ break; - case 308: -#line 989 "./util/configparser.y" /* yacc.c:1648 */ + case 309: +#line 990 "./util/configparser.y" /* yacc.c:1652 */ { 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 3494 "util/configparser.c" /* yacc.c:1648 */ +#line 3517 "util/configparser.c" /* yacc.c:1652 */ break; - case 309: -#line 996 "./util/configparser.y" /* yacc.c:1648 */ + case 310: +#line 997 "./util/configparser.y" /* yacc.c:1652 */ { 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 3504 "util/configparser.c" /* yacc.c:1648 */ +#line 3527 "util/configparser.c" /* yacc.c:1652 */ break; - case 310: -#line 1003 "./util/configparser.y" /* yacc.c:1648 */ + case 311: +#line 1004 "./util/configparser.y" /* yacc.c:1652 */ { 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 3514 "util/configparser.c" /* yacc.c:1648 */ +#line 3537 "util/configparser.c" /* yacc.c:1652 */ break; - case 311: -#line 1010 "./util/configparser.y" /* yacc.c:1648 */ + case 312: +#line 1011 "./util/configparser.y" /* yacc.c:1652 */ { 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 3525 "util/configparser.c" /* yacc.c:1648 */ +#line 3548 "util/configparser.c" /* yacc.c:1652 */ break; - case 312: -#line 1018 "./util/configparser.y" /* yacc.c:1648 */ + case 313: +#line 1019 "./util/configparser.y" /* yacc.c:1652 */ { 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 3536 "util/configparser.c" /* yacc.c:1648 */ +#line 3559 "util/configparser.c" /* yacc.c:1652 */ break; - case 313: -#line 1026 "./util/configparser.y" /* yacc.c:1648 */ + case 314: +#line 1027 "./util/configparser.y" /* yacc.c:1652 */ { 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 3547 "util/configparser.c" /* yacc.c:1648 */ +#line 3570 "util/configparser.c" /* yacc.c:1652 */ break; - case 314: -#line 1034 "./util/configparser.y" /* yacc.c:1648 */ + case 315: +#line 1035 "./util/configparser.y" /* yacc.c:1652 */ { 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 3557 "util/configparser.c" /* yacc.c:1648 */ +#line 3580 "util/configparser.c" /* yacc.c:1652 */ break; - case 315: -#line 1041 "./util/configparser.y" /* yacc.c:1648 */ + case 316: +#line 1042 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3567,11 +3590,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3571 "util/configparser.c" /* yacc.c:1648 */ +#line 3594 "util/configparser.c" /* yacc.c:1652 */ break; - case 316: -#line 1052 "./util/configparser.y" /* yacc.c:1648 */ + case 317: +#line 1053 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3581,21 +3604,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3585 "util/configparser.c" /* yacc.c:1648 */ +#line 3608 "util/configparser.c" /* yacc.c:1652 */ break; - case 317: -#line 1063 "./util/configparser.y" /* yacc.c:1648 */ + case 318: +#line 1064 "./util/configparser.y" /* yacc.c:1652 */ { 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 3595 "util/configparser.c" /* yacc.c:1648 */ +#line 3618 "util/configparser.c" /* yacc.c:1652 */ break; - case 318: -#line 1070 "./util/configparser.y" /* yacc.c:1648 */ + case 319: +#line 1071 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3603,11 +3626,11 @@ yyparse (void) else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3607 "util/configparser.c" /* yacc.c:1648 */ +#line 3630 "util/configparser.c" /* yacc.c:1652 */ break; - case 319: -#line 1079 "./util/configparser.y" /* yacc.c:1648 */ + case 320: +#line 1080 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3615,11 +3638,11 @@ yyparse (void) else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3619 "util/configparser.c" /* yacc.c:1648 */ +#line 3642 "util/configparser.c" /* yacc.c:1652 */ break; - case 320: -#line 1088 "./util/configparser.y" /* yacc.c:1648 */ + case 321: +#line 1089 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3627,53 +3650,53 @@ yyparse (void) else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3631 "util/configparser.c" /* yacc.c:1648 */ +#line 3654 "util/configparser.c" /* yacc.c:1652 */ break; - case 321: -#line 1097 "./util/configparser.y" /* yacc.c:1648 */ + case 322: +#line 1098 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3641 "util/configparser.c" /* yacc.c:1648 */ +#line 3664 "util/configparser.c" /* yacc.c:1652 */ break; - case 322: -#line 1104 "./util/configparser.y" /* yacc.c:1648 */ + case 323: +#line 1105 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3651 "util/configparser.c" /* yacc.c:1648 */ +#line 3674 "util/configparser.c" /* yacc.c:1652 */ break; - case 323: -#line 1111 "./util/configparser.y" /* yacc.c:1648 */ + case 324: +#line 1112 "./util/configparser.y" /* yacc.c:1652 */ { 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 3662 "util/configparser.c" /* yacc.c:1648 */ +#line 3685 "util/configparser.c" /* yacc.c:1652 */ break; - case 324: -#line 1119 "./util/configparser.y" /* yacc.c:1648 */ + case 325: +#line 1120 "./util/configparser.y" /* yacc.c:1652 */ { 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 3673 "util/configparser.c" /* yacc.c:1648 */ +#line 3696 "util/configparser.c" /* yacc.c:1652 */ break; - case 325: -#line 1127 "./util/configparser.y" /* yacc.c:1648 */ + case 326: +#line 1128 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3682,11 +3705,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3686 "util/configparser.c" /* yacc.c:1648 */ +#line 3709 "util/configparser.c" /* yacc.c:1652 */ break; - case 326: -#line 1137 "./util/configparser.y" /* yacc.c:1648 */ + case 327: +#line 1138 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3695,11 +3718,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3699 "util/configparser.c" /* yacc.c:1648 */ +#line 3722 "util/configparser.c" /* yacc.c:1652 */ break; - case 327: -#line 1147 "./util/configparser.y" /* yacc.c:1648 */ + case 328: +#line 1148 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3708,22 +3731,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3712 "util/configparser.c" /* yacc.c:1648 */ +#line 3735 "util/configparser.c" /* yacc.c:1652 */ break; - case 328: -#line 1157 "./util/configparser.y" /* yacc.c:1648 */ + case 329: +#line 1158 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3723 "util/configparser.c" /* yacc.c:1648 */ +#line 3746 "util/configparser.c" /* yacc.c:1652 */ break; - case 329: -#line 1165 "./util/configparser.y" /* yacc.c:1648 */ + case 330: +#line 1166 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3735,11 +3758,11 @@ yyparse (void) else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3739 "util/configparser.c" /* yacc.c:1648 */ +#line 3762 "util/configparser.c" /* yacc.c:1652 */ break; - case 330: -#line 1178 "./util/configparser.y" /* yacc.c:1648 */ + case 331: +#line 1179 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3749,22 +3772,22 @@ yyparse (void) else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3753 "util/configparser.c" /* yacc.c:1648 */ +#line 3776 "util/configparser.c" /* yacc.c:1652 */ break; - case 331: -#line 1189 "./util/configparser.y" /* yacc.c:1648 */ + case 332: +#line 1190 "./util/configparser.y" /* yacc.c:1652 */ { 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 3764 "util/configparser.c" /* yacc.c:1648 */ +#line 3787 "util/configparser.c" /* yacc.c:1652 */ break; - case 332: -#line 1197 "./util/configparser.y" /* yacc.c:1648 */ + case 333: +#line 1198 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3776,11 +3799,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3780 "util/configparser.c" /* yacc.c:1648 */ +#line 3803 "util/configparser.c" /* yacc.c:1652 */ break; - case 333: -#line 1210 "./util/configparser.y" /* yacc.c:1648 */ + case 334: +#line 1211 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3788,11 +3811,11 @@ yyparse (void) else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3792 "util/configparser.c" /* yacc.c:1648 */ +#line 3815 "util/configparser.c" /* yacc.c:1652 */ break; - case 334: -#line 1219 "./util/configparser.y" /* yacc.c:1648 */ + case 335: +#line 1220 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3800,11 +3823,11 @@ yyparse (void) else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3804 "util/configparser.c" /* yacc.c:1648 */ +#line 3827 "util/configparser.c" /* yacc.c:1652 */ break; - case 335: -#line 1228 "./util/configparser.y" /* yacc.c:1648 */ + case 336: +#line 1229 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3812,11 +3835,11 @@ yyparse (void) else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" /* yacc.c:1648 */ +#line 3839 "util/configparser.c" /* yacc.c:1652 */ break; - case 336: -#line 1237 "./util/configparser.y" /* yacc.c:1648 */ + case 337: +#line 1238 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3825,11 +3848,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3829 "util/configparser.c" /* yacc.c:1648 */ +#line 3852 "util/configparser.c" /* yacc.c:1652 */ break; - case 337: -#line 1247 "./util/configparser.y" /* yacc.c:1648 */ + case 338: +#line 1248 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3838,22 +3861,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3842 "util/configparser.c" /* yacc.c:1648 */ +#line 3865 "util/configparser.c" /* yacc.c:1652 */ break; - case 338: -#line 1257 "./util/configparser.y" /* yacc.c:1648 */ + case 339: +#line 1258 "./util/configparser.y" /* yacc.c:1652 */ { 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 3853 "util/configparser.c" /* yacc.c:1648 */ +#line 3876 "util/configparser.c" /* yacc.c:1652 */ break; - case 339: -#line 1265 "./util/configparser.y" /* yacc.c:1648 */ + case 340: +#line 1266 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3865,11 +3888,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3869 "util/configparser.c" /* yacc.c:1648 */ +#line 3892 "util/configparser.c" /* yacc.c:1652 */ break; - case 340: -#line 1278 "./util/configparser.y" /* yacc.c:1648 */ + case 341: +#line 1279 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3877,22 +3900,22 @@ yyparse (void) else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3881 "util/configparser.c" /* yacc.c:1648 */ +#line 3904 "util/configparser.c" /* yacc.c:1652 */ break; - case 341: -#line 1287 "./util/configparser.y" /* yacc.c:1648 */ + case 342: +#line 1288 "./util/configparser.y" /* yacc.c:1652 */ { 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 3892 "util/configparser.c" /* yacc.c:1648 */ +#line 3915 "util/configparser.c" /* yacc.c:1652 */ break; - case 342: -#line 1295 "./util/configparser.y" /* yacc.c:1648 */ + case 343: +#line 1296 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3900,22 +3923,22 @@ yyparse (void) else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3904 "util/configparser.c" /* yacc.c:1648 */ +#line 3927 "util/configparser.c" /* yacc.c:1652 */ break; - case 343: -#line 1304 "./util/configparser.y" /* yacc.c:1648 */ + case 344: +#line 1305 "./util/configparser.y" /* yacc.c:1652 */ { 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 3915 "util/configparser.c" /* yacc.c:1648 */ +#line 3938 "util/configparser.c" /* yacc.c:1652 */ break; - case 344: -#line 1312 "./util/configparser.y" /* yacc.c:1648 */ + case 345: +#line 1313 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3927,11 +3950,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3931 "util/configparser.c" /* yacc.c:1648 */ +#line 3954 "util/configparser.c" /* yacc.c:1652 */ break; - case 345: -#line 1325 "./util/configparser.y" /* yacc.c:1648 */ + case 346: +#line 1326 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3939,21 +3962,21 @@ yyparse (void) else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3943 "util/configparser.c" /* yacc.c:1648 */ +#line 3966 "util/configparser.c" /* yacc.c:1652 */ break; - case 346: -#line 1334 "./util/configparser.y" /* yacc.c:1648 */ + case 347: +#line 1335 "./util/configparser.y" /* yacc.c:1652 */ { 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 3953 "util/configparser.c" /* yacc.c:1648 */ +#line 3976 "util/configparser.c" /* yacc.c:1652 */ break; - case 347: -#line 1341 "./util/configparser.y" /* yacc.c:1648 */ + case 348: +#line 1342 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3962,11 +3985,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3966 "util/configparser.c" /* yacc.c:1648 */ +#line 3989 "util/configparser.c" /* yacc.c:1652 */ break; - case 348: -#line 1351 "./util/configparser.y" /* yacc.c:1648 */ + case 349: +#line 1352 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3975,11 +3998,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3979 "util/configparser.c" /* yacc.c:1648 */ +#line 4002 "util/configparser.c" /* yacc.c:1652 */ break; - case 349: -#line 1361 "./util/configparser.y" /* yacc.c:1648 */ + case 350: +#line 1362 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3988,11 +4011,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3992 "util/configparser.c" /* yacc.c:1648 */ +#line 4015 "util/configparser.c" /* yacc.c:1652 */ break; - case 350: -#line 1371 "./util/configparser.y" /* yacc.c:1648 */ + case 351: +#line 1372 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4001,11 +4024,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4005 "util/configparser.c" /* yacc.c:1648 */ +#line 4028 "util/configparser.c" /* yacc.c:1652 */ break; - case 351: -#line 1381 "./util/configparser.y" /* yacc.c:1648 */ + case 352: +#line 1382 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4014,11 +4037,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4018 "util/configparser.c" /* yacc.c:1648 */ +#line 4041 "util/configparser.c" /* yacc.c:1652 */ break; - case 352: -#line 1391 "./util/configparser.y" /* yacc.c:1648 */ + case 353: +#line 1392 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4027,11 +4050,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4031 "util/configparser.c" /* yacc.c:1648 */ +#line 4054 "util/configparser.c" /* yacc.c:1652 */ break; - case 353: -#line 1401 "./util/configparser.y" /* yacc.c:1648 */ + case 354: +#line 1402 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4040,11 +4063,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4044 "util/configparser.c" /* yacc.c:1648 */ +#line 4067 "util/configparser.c" /* yacc.c:1652 */ break; - case 354: -#line 1411 "./util/configparser.y" /* yacc.c:1648 */ + case 355: +#line 1412 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -4053,41 +4076,41 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4057 "util/configparser.c" /* yacc.c:1648 */ +#line 4080 "util/configparser.c" /* yacc.c:1652 */ break; - case 355: -#line 1421 "./util/configparser.y" /* yacc.c:1648 */ + case 356: +#line 1422 "./util/configparser.y" /* yacc.c:1652 */ { 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 4067 "util/configparser.c" /* yacc.c:1648 */ +#line 4090 "util/configparser.c" /* yacc.c:1652 */ break; - case 356: -#line 1428 "./util/configparser.y" /* yacc.c:1648 */ + case 357: +#line 1429 "./util/configparser.y" /* yacc.c:1652 */ { 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 4077 "util/configparser.c" /* yacc.c:1648 */ +#line 4100 "util/configparser.c" /* yacc.c:1652 */ break; - case 357: -#line 1435 "./util/configparser.y" /* yacc.c:1648 */ + case 358: +#line 1436 "./util/configparser.y" /* yacc.c:1652 */ { 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 4087 "util/configparser.c" /* yacc.c:1648 */ +#line 4110 "util/configparser.c" /* yacc.c:1652 */ break; - case 358: -#line 1442 "./util/configparser.y" /* yacc.c:1648 */ + case 359: +#line 1443 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4095,11 +4118,11 @@ yyparse (void) else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4099 "util/configparser.c" /* yacc.c:1648 */ +#line 4122 "util/configparser.c" /* yacc.c:1652 */ break; - case 359: -#line 1451 "./util/configparser.y" /* yacc.c:1648 */ + case 360: +#line 1452 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4107,11 +4130,11 @@ yyparse (void) else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4111 "util/configparser.c" /* yacc.c:1648 */ +#line 4134 "util/configparser.c" /* yacc.c:1652 */ break; - case 360: -#line 1460 "./util/configparser.y" /* yacc.c:1648 */ + case 361: +#line 1461 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4119,11 +4142,11 @@ yyparse (void) else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4123 "util/configparser.c" /* yacc.c:1648 */ +#line 4146 "util/configparser.c" /* yacc.c:1652 */ break; - case 361: -#line 1469 "./util/configparser.y" /* yacc.c:1648 */ + case 362: +#line 1470 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4131,21 +4154,21 @@ yyparse (void) else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4135 "util/configparser.c" /* yacc.c:1648 */ +#line 4158 "util/configparser.c" /* yacc.c:1652 */ break; - case 362: -#line 1478 "./util/configparser.y" /* yacc.c:1648 */ + case 363: +#line 1479 "./util/configparser.y" /* yacc.c:1652 */ { 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 4145 "util/configparser.c" /* yacc.c:1648 */ +#line 4168 "util/configparser.c" /* yacc.c:1652 */ break; - case 363: -#line 1485 "./util/configparser.y" /* yacc.c:1648 */ + case 364: +#line 1486 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -4154,11 +4177,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4158 "util/configparser.c" /* yacc.c:1648 */ +#line 4181 "util/configparser.c" /* yacc.c:1652 */ break; - case 364: -#line 1495 "./util/configparser.y" /* yacc.c:1648 */ + case 365: +#line 1496 "./util/configparser.y" /* yacc.c:1652 */ { 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 && @@ -4177,21 +4200,21 @@ yyparse (void) fatal_exit("out of memory adding acl"); } } -#line 4181 "util/configparser.c" /* yacc.c:1648 */ +#line 4204 "util/configparser.c" /* yacc.c:1652 */ break; - case 365: -#line 1515 "./util/configparser.y" /* yacc.c:1648 */ + case 366: +#line 1516 "./util/configparser.y" /* yacc.c:1652 */ { 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 4191 "util/configparser.c" /* yacc.c:1648 */ +#line 4214 "util/configparser.c" /* yacc.c:1652 */ break; - case 366: -#line 1522 "./util/configparser.y" /* yacc.c:1648 */ + case 367: +#line 1523 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4208,11 +4231,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4212 "util/configparser.c" /* yacc.c:1648 */ +#line 4235 "util/configparser.c" /* yacc.c:1652 */ break; - case 367: -#line 1540 "./util/configparser.y" /* yacc.c:1648 */ + case 368: +#line 1541 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4224,11 +4247,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" /* yacc.c:1648 */ +#line 4251 "util/configparser.c" /* yacc.c:1652 */ break; - case 368: -#line 1553 "./util/configparser.y" /* yacc.c:1648 */ + case 369: +#line 1554 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4240,11 +4263,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4244 "util/configparser.c" /* yacc.c:1648 */ +#line 4267 "util/configparser.c" /* yacc.c:1652 */ break; - case 369: -#line 1566 "./util/configparser.y" /* yacc.c:1648 */ + case 370: +#line 1567 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4252,11 +4275,11 @@ yyparse (void) else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4256 "util/configparser.c" /* yacc.c:1648 */ +#line 4279 "util/configparser.c" /* yacc.c:1652 */ break; - case 370: -#line 1575 "./util/configparser.y" /* yacc.c:1648 */ + case 371: +#line 1576 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4264,11 +4287,11 @@ yyparse (void) else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4268 "util/configparser.c" /* yacc.c:1648 */ +#line 4291 "util/configparser.c" /* yacc.c:1652 */ break; - case 371: -#line 1584 "./util/configparser.y" /* yacc.c:1648 */ + case 372: +#line 1585 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4276,11 +4299,11 @@ yyparse (void) else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" /* yacc.c:1648 */ +#line 4303 "util/configparser.c" /* yacc.c:1652 */ break; - case 372: -#line 1593 "./util/configparser.y" /* yacc.c:1648 */ + case 373: +#line 1594 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4288,11 +4311,11 @@ yyparse (void) else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4292 "util/configparser.c" /* yacc.c:1648 */ +#line 4315 "util/configparser.c" /* yacc.c:1652 */ break; - case 373: -#line 1602 "./util/configparser.y" /* yacc.c:1648 */ + case 374: +#line 1603 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4301,11 +4324,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4305 "util/configparser.c" /* yacc.c:1648 */ +#line 4328 "util/configparser.c" /* yacc.c:1652 */ break; - case 374: -#line 1612 "./util/configparser.y" /* yacc.c:1648 */ + case 375: +#line 1613 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4314,11 +4337,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4318 "util/configparser.c" /* yacc.c:1648 */ +#line 4341 "util/configparser.c" /* yacc.c:1652 */ break; - case 375: -#line 1622 "./util/configparser.y" /* yacc.c:1648 */ + case 376: +#line 1623 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4328,11 +4351,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4332 "util/configparser.c" /* yacc.c:1648 */ +#line 4355 "util/configparser.c" /* yacc.c:1652 */ break; - case 376: -#line 1633 "./util/configparser.y" /* yacc.c:1648 */ + case 377: +#line 1634 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4340,11 +4363,11 @@ yyparse (void) else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4344 "util/configparser.c" /* yacc.c:1648 */ +#line 4367 "util/configparser.c" /* yacc.c:1652 */ break; - case 377: -#line 1642 "./util/configparser.y" /* yacc.c:1648 */ + case 378: +#line 1643 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4352,11 +4375,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4356 "util/configparser.c" /* yacc.c:1648 */ +#line 4379 "util/configparser.c" /* yacc.c:1652 */ break; - case 378: -#line 1651 "./util/configparser.y" /* yacc.c:1648 */ + case 379: +#line 1652 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4364,11 +4387,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4368 "util/configparser.c" /* yacc.c:1648 */ +#line 4391 "util/configparser.c" /* yacc.c:1652 */ break; - case 379: -#line 1660 "./util/configparser.y" /* yacc.c:1648 */ + case 380: +#line 1661 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4376,11 +4399,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4380 "util/configparser.c" /* yacc.c:1648 */ +#line 4403 "util/configparser.c" /* yacc.c:1652 */ break; - case 380: -#line 1669 "./util/configparser.y" /* yacc.c:1648 */ + case 381: +#line 1670 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4392,11 +4415,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 4396 "util/configparser.c" /* yacc.c:1648 */ +#line 4419 "util/configparser.c" /* yacc.c:1652 */ break; - case 381: -#line 1682 "./util/configparser.y" /* yacc.c:1648 */ + case 382: +#line 1683 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4408,11 +4431,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 4412 "util/configparser.c" /* yacc.c:1648 */ +#line 4435 "util/configparser.c" /* yacc.c:1652 */ break; - case 382: -#line 1695 "./util/configparser.y" /* yacc.c:1648 */ + case 383: +#line 1696 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4420,21 +4443,21 @@ yyparse (void) else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4424 "util/configparser.c" /* yacc.c:1648 */ +#line 4447 "util/configparser.c" /* yacc.c:1652 */ break; - case 383: -#line 1704 "./util/configparser.y" /* yacc.c:1648 */ + case 384: +#line 1705 "./util/configparser.y" /* yacc.c:1652 */ { 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 4434 "util/configparser.c" /* yacc.c:1648 */ +#line 4457 "util/configparser.c" /* yacc.c:1652 */ break; - case 384: -#line 1711 "./util/configparser.y" /* yacc.c:1648 */ + case 385: +#line 1712 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4442,11 +4465,11 @@ yyparse (void) else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4446 "util/configparser.c" /* yacc.c:1648 */ +#line 4469 "util/configparser.c" /* yacc.c:1652 */ break; - case 385: -#line 1720 "./util/configparser.y" /* yacc.c:1648 */ + case 386: +#line 1721 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4454,11 +4477,11 @@ yyparse (void) else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4458 "util/configparser.c" /* yacc.c:1648 */ +#line 4481 "util/configparser.c" /* yacc.c:1652 */ break; - case 386: -#line 1729 "./util/configparser.y" /* yacc.c:1648 */ + case 387: +#line 1730 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4466,11 +4489,11 @@ yyparse (void) else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4470 "util/configparser.c" /* yacc.c:1648 */ +#line 4493 "util/configparser.c" /* yacc.c:1652 */ break; - case 387: -#line 1738 "./util/configparser.y" /* yacc.c:1648 */ + case 388: +#line 1739 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4479,22 +4502,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4483 "util/configparser.c" /* yacc.c:1648 */ +#line 4506 "util/configparser.c" /* yacc.c:1652 */ break; - case 388: -#line 1747 "./util/configparser.y" /* yacc.c:1648 */ + case 389: +#line 1748 "./util/configparser.y" /* yacc.c:1652 */ { 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 4494 "util/configparser.c" /* yacc.c:1648 */ +#line 4517 "util/configparser.c" /* yacc.c:1652 */ break; - case 389: -#line 1755 "./util/configparser.y" /* yacc.c:1648 */ + case 390: +#line 1756 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4506,22 +4529,22 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4510 "util/configparser.c" /* yacc.c:1648 */ +#line 4533 "util/configparser.c" /* yacc.c:1652 */ break; - case 390: -#line 1768 "./util/configparser.y" /* yacc.c:1648 */ + case 391: +#line 1769 "./util/configparser.y" /* yacc.c:1652 */ { 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 4521 "util/configparser.c" /* yacc.c:1648 */ +#line 4544 "util/configparser.c" /* yacc.c:1652 */ break; - case 391: -#line 1776 "./util/configparser.y" /* yacc.c:1648 */ + case 392: +#line 1777 "./util/configparser.y" /* yacc.c:1652 */ { 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 && @@ -4553,21 +4576,21 @@ yyparse (void) fatal_exit("out of memory adding local-zone"); } } -#line 4557 "util/configparser.c" /* yacc.c:1648 */ +#line 4580 "util/configparser.c" /* yacc.c:1652 */ break; - case 392: -#line 1809 "./util/configparser.y" /* yacc.c:1648 */ + case 393: +#line 1810 "./util/configparser.y" /* yacc.c:1652 */ { 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 4567 "util/configparser.c" /* yacc.c:1648 */ +#line 4590 "util/configparser.c" /* yacc.c:1652 */ break; - case 393: -#line 1816 "./util/configparser.y" /* yacc.c:1648 */ + case 394: +#line 1817 "./util/configparser.y" /* yacc.c:1652 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4581,11 +4604,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 4585 "util/configparser.c" /* yacc.c:1648 */ +#line 4608 "util/configparser.c" /* yacc.c:1652 */ break; - case 394: -#line 1831 "./util/configparser.y" /* yacc.c:1648 */ + case 395: +#line 1832 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4594,11 +4617,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4598 "util/configparser.c" /* yacc.c:1648 */ +#line 4621 "util/configparser.c" /* yacc.c:1652 */ break; - case 395: -#line 1841 "./util/configparser.y" /* yacc.c:1648 */ + case 396: +#line 1842 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4607,41 +4630,41 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4611 "util/configparser.c" /* yacc.c:1648 */ +#line 4634 "util/configparser.c" /* yacc.c:1652 */ break; - case 396: -#line 1851 "./util/configparser.y" /* yacc.c:1648 */ + case 397: +#line 1852 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" /* yacc.c:1648 */ +#line 4644 "util/configparser.c" /* yacc.c:1652 */ break; - case 397: -#line 1858 "./util/configparser.y" /* yacc.c:1648 */ + case 398: +#line 1859 "./util/configparser.y" /* yacc.c:1652 */ { 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 4631 "util/configparser.c" /* yacc.c:1648 */ +#line 4654 "util/configparser.c" /* yacc.c:1652 */ break; - case 398: -#line 1865 "./util/configparser.y" /* yacc.c:1648 */ + case 399: +#line 1866 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4641 "util/configparser.c" /* yacc.c:1648 */ +#line 4664 "util/configparser.c" /* yacc.c:1652 */ break; - case 399: -#line 1872 "./util/configparser.y" /* yacc.c:1648 */ + case 400: +#line 1873 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4649,22 +4672,22 @@ yyparse (void) else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4653 "util/configparser.c" /* yacc.c:1648 */ +#line 4676 "util/configparser.c" /* yacc.c:1652 */ break; - case 400: -#line 1881 "./util/configparser.y" /* yacc.c:1648 */ + case 401: +#line 1882 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4664 "util/configparser.c" /* yacc.c:1648 */ +#line 4687 "util/configparser.c" /* yacc.c:1652 */ break; - case 401: -#line 1889 "./util/configparser.y" /* yacc.c:1648 */ + case 402: +#line 1890 "./util/configparser.y" /* yacc.c:1652 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4677,11 +4700,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4681 "util/configparser.c" /* yacc.c:1648 */ +#line 4704 "util/configparser.c" /* yacc.c:1652 */ break; - case 402: -#line 1903 "./util/configparser.y" /* yacc.c:1648 */ + case 403: +#line 1904 "./util/configparser.y" /* yacc.c:1652 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4701,11 +4724,11 @@ yyparse (void) } } } -#line 4705 "util/configparser.c" /* yacc.c:1648 */ +#line 4728 "util/configparser.c" /* yacc.c:1652 */ break; - case 403: -#line 1924 "./util/configparser.y" /* yacc.c:1648 */ + case 404: +#line 1925 "./util/configparser.y" /* yacc.c:1652 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4725,11 +4748,11 @@ yyparse (void) } } } -#line 4729 "util/configparser.c" /* yacc.c:1648 */ +#line 4752 "util/configparser.c" /* yacc.c:1652 */ break; - case 404: -#line 1945 "./util/configparser.y" /* yacc.c:1648 */ + case 405: +#line 1946 "./util/configparser.y" /* yacc.c:1652 */ { 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, @@ -4740,11 +4763,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4744 "util/configparser.c" /* yacc.c:1648 */ +#line 4767 "util/configparser.c" /* yacc.c:1652 */ break; - case 405: -#line 1957 "./util/configparser.y" /* yacc.c:1648 */ + case 406: +#line 1958 "./util/configparser.y" /* yacc.c:1652 */ { 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, @@ -4755,11 +4778,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4759 "util/configparser.c" /* yacc.c:1648 */ +#line 4782 "util/configparser.c" /* yacc.c:1652 */ break; - case 406: -#line 1969 "./util/configparser.y" /* yacc.c:1648 */ + case 407: +#line 1970 "./util/configparser.y" /* yacc.c:1652 */ { 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, @@ -4770,11 +4793,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4774 "util/configparser.c" /* yacc.c:1648 */ +#line 4797 "util/configparser.c" /* yacc.c:1652 */ break; - case 407: -#line 1981 "./util/configparser.y" /* yacc.c:1648 */ + case 408: +#line 1982 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -4782,11 +4805,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 4786 "util/configparser.c" /* yacc.c:1648 */ +#line 4809 "util/configparser.c" /* yacc.c:1652 */ break; - case 408: -#line 1990 "./util/configparser.y" /* yacc.c:1648 */ + case 409: +#line 1991 "./util/configparser.y" /* yacc.c:1652 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4806,11 +4829,11 @@ yyparse (void) } } } -#line 4810 "util/configparser.c" /* yacc.c:1648 */ +#line 4833 "util/configparser.c" /* yacc.c:1652 */ break; - case 409: -#line 2011 "./util/configparser.y" /* yacc.c:1648 */ + case 410: +#line 2012 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4818,11 +4841,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4822 "util/configparser.c" /* yacc.c:1648 */ +#line 4845 "util/configparser.c" /* yacc.c:1652 */ break; - case 410: -#line 2021 "./util/configparser.y" /* yacc.c:1648 */ + case 411: +#line 2022 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4830,33 +4853,33 @@ yyparse (void) else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4834 "util/configparser.c" /* yacc.c:1648 */ +#line 4857 "util/configparser.c" /* yacc.c:1652 */ break; - case 411: -#line 2030 "./util/configparser.y" /* yacc.c:1648 */ + case 412: +#line 2031 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4845 "util/configparser.c" /* yacc.c:1648 */ +#line 4868 "util/configparser.c" /* yacc.c:1652 */ break; - case 412: -#line 2038 "./util/configparser.y" /* yacc.c:1648 */ + case 413: +#line 2039 "./util/configparser.y" /* yacc.c:1652 */ { 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 4856 "util/configparser.c" /* yacc.c:1648 */ +#line 4879 "util/configparser.c" /* yacc.c:1652 */ break; - case 413: -#line 2046 "./util/configparser.y" /* yacc.c:1648 */ + case 414: +#line 2047 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4868,11 +4891,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4872 "util/configparser.c" /* yacc.c:1648 */ +#line 4895 "util/configparser.c" /* yacc.c:1652 */ break; - case 414: -#line 2059 "./util/configparser.y" /* yacc.c:1648 */ + case 415: +#line 2060 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4884,11 +4907,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4888 "util/configparser.c" /* yacc.c:1648 */ +#line 4911 "util/configparser.c" /* yacc.c:1652 */ break; - case 415: -#line 2072 "./util/configparser.y" /* yacc.c:1648 */ + case 416: +#line 2073 "./util/configparser.y" /* yacc.c:1652 */ { 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) { @@ -4902,11 +4925,11 @@ yyparse (void) "ratelimit-for-domain"); } } -#line 4906 "util/configparser.c" /* yacc.c:1648 */ +#line 4929 "util/configparser.c" /* yacc.c:1652 */ break; - case 416: -#line 2087 "./util/configparser.y" /* yacc.c:1648 */ + case 417: +#line 2088 "./util/configparser.y" /* yacc.c:1652 */ { 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) { @@ -4920,11 +4943,11 @@ yyparse (void) "ratelimit-below-domain"); } } -#line 4924 "util/configparser.c" /* yacc.c:1648 */ +#line 4947 "util/configparser.c" /* yacc.c:1652 */ break; - case 417: -#line 2102 "./util/configparser.y" /* yacc.c:1648 */ + case 418: +#line 2103 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4932,11 +4955,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4936 "util/configparser.c" /* yacc.c:1648 */ +#line 4959 "util/configparser.c" /* yacc.c:1652 */ break; - case 418: -#line 2111 "./util/configparser.y" /* yacc.c:1648 */ + case 419: +#line 2112 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4944,20 +4967,20 @@ yyparse (void) else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4948 "util/configparser.c" /* yacc.c:1648 */ +#line 4971 "util/configparser.c" /* yacc.c:1652 */ break; - case 419: -#line 2120 "./util/configparser.y" /* yacc.c:1648 */ + case 420: +#line 2121 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 4957 "util/configparser.c" /* yacc.c:1648 */ +#line 4980 "util/configparser.c" /* yacc.c:1652 */ break; - case 420: -#line 2126 "./util/configparser.y" /* yacc.c:1648 */ + case 421: +#line 2127 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -4965,11 +4988,11 @@ yyparse (void) else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4969 "util/configparser.c" /* yacc.c:1648 */ +#line 4992 "util/configparser.c" /* yacc.c:1652 */ break; - case 421: -#line 2135 "./util/configparser.y" /* yacc.c:1648 */ + case 422: +#line 2136 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4977,11 +5000,11 @@ yyparse (void) else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4981 "util/configparser.c" /* yacc.c:1648 */ +#line 5004 "util/configparser.c" /* yacc.c:1652 */ break; - case 422: -#line 2144 "./util/configparser.y" /* yacc.c:1648 */ + case 423: +#line 2145 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4990,11 +5013,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4994 "util/configparser.c" /* yacc.c:1648 */ +#line 5017 "util/configparser.c" /* yacc.c:1652 */ break; - case 423: -#line 2154 "./util/configparser.y" /* yacc.c:1648 */ + case 424: +#line 2155 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5003,11 +5026,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5007 "util/configparser.c" /* yacc.c:1648 */ +#line 5030 "util/configparser.c" /* yacc.c:1652 */ break; - case 424: -#line 2164 "./util/configparser.y" /* yacc.c:1648 */ + case 425: +#line 2165 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5019,11 +5042,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5023 "util/configparser.c" /* yacc.c:1648 */ +#line 5046 "util/configparser.c" /* yacc.c:1652 */ break; - case 425: -#line 2177 "./util/configparser.y" /* yacc.c:1648 */ + case 426: +#line 2178 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5035,11 +5058,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5039 "util/configparser.c" /* yacc.c:1648 */ +#line 5062 "util/configparser.c" /* yacc.c:1652 */ break; - case 426: -#line 2190 "./util/configparser.y" /* yacc.c:1648 */ + case 427: +#line 2191 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5050,11 +5073,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5054 "util/configparser.c" /* yacc.c:1648 */ +#line 5077 "util/configparser.c" /* yacc.c:1652 */ break; - case 427: -#line 2202 "./util/configparser.y" /* yacc.c:1648 */ + case 428: +#line 2203 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5067,11 +5090,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5071 "util/configparser.c" /* yacc.c:1648 */ +#line 5094 "util/configparser.c" /* yacc.c:1652 */ break; - case 428: -#line 2216 "./util/configparser.y" /* yacc.c:1648 */ + case 429: +#line 2217 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5082,11 +5105,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5086 "util/configparser.c" /* yacc.c:1648 */ +#line 5109 "util/configparser.c" /* yacc.c:1652 */ break; - case 429: -#line 2228 "./util/configparser.y" /* yacc.c:1648 */ + case 430: +#line 2229 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5099,11 +5122,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5103 "util/configparser.c" /* yacc.c:1648 */ +#line 5126 "util/configparser.c" /* yacc.c:1652 */ break; - case 430: -#line 2242 "./util/configparser.y" /* yacc.c:1648 */ + case 431: +#line 2243 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5112,31 +5135,31 @@ yyparse (void) free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5116 "util/configparser.c" /* yacc.c:1648 */ +#line 5139 "util/configparser.c" /* yacc.c:1652 */ break; - case 431: -#line 2252 "./util/configparser.y" /* yacc.c:1648 */ + case 432: +#line 2253 "./util/configparser.y" /* yacc.c:1652 */ { 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 5126 "util/configparser.c" /* yacc.c:1648 */ +#line 5149 "util/configparser.c" /* yacc.c:1652 */ break; - case 432: -#line 2259 "./util/configparser.y" /* yacc.c:1648 */ + case 433: +#line 2260 "./util/configparser.y" /* yacc.c:1652 */ { 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 5136 "util/configparser.c" /* yacc.c:1648 */ +#line 5159 "util/configparser.c" /* yacc.c:1652 */ break; - case 433: -#line 2266 "./util/configparser.y" /* yacc.c:1648 */ + case 434: +#line 2267 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5144,11 +5167,11 @@ yyparse (void) else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5148 "util/configparser.c" /* yacc.c:1648 */ +#line 5171 "util/configparser.c" /* yacc.c:1652 */ break; - case 434: -#line 2275 "./util/configparser.y" /* yacc.c:1648 */ + case 435: +#line 2276 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5156,11 +5179,11 @@ yyparse (void) else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5160 "util/configparser.c" /* yacc.c:1648 */ +#line 5183 "util/configparser.c" /* yacc.c:1652 */ break; - case 435: -#line 2284 "./util/configparser.y" /* yacc.c:1648 */ + case 436: +#line 2285 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5169,11 +5192,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5173 "util/configparser.c" /* yacc.c:1648 */ +#line 5196 "util/configparser.c" /* yacc.c:1652 */ break; - case 436: -#line 2294 "./util/configparser.y" /* yacc.c:1648 */ + case 437: +#line 2295 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5182,11 +5205,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5186 "util/configparser.c" /* yacc.c:1648 */ +#line 5209 "util/configparser.c" /* yacc.c:1652 */ break; - case 437: -#line 2304 "./util/configparser.y" /* yacc.c:1648 */ + case 438: +#line 2305 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5195,31 +5218,31 @@ yyparse (void) free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5199 "util/configparser.c" /* yacc.c:1648 */ +#line 5222 "util/configparser.c" /* yacc.c:1652 */ break; - case 438: -#line 2314 "./util/configparser.y" /* yacc.c:1648 */ + case 439: +#line 2315 "./util/configparser.y" /* yacc.c:1652 */ { 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 5209 "util/configparser.c" /* yacc.c:1648 */ +#line 5232 "util/configparser.c" /* yacc.c:1652 */ break; - case 439: -#line 2321 "./util/configparser.y" /* yacc.c:1648 */ + case 440: +#line 2322 "./util/configparser.y" /* yacc.c:1652 */ { 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 5219 "util/configparser.c" /* yacc.c:1648 */ +#line 5242 "util/configparser.c" /* yacc.c:1652 */ break; - case 440: -#line 2328 "./util/configparser.y" /* yacc.c:1648 */ + case 441: +#line 2329 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5227,11 +5250,11 @@ yyparse (void) else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5231 "util/configparser.c" /* yacc.c:1648 */ +#line 5254 "util/configparser.c" /* yacc.c:1652 */ break; - case 441: -#line 2337 "./util/configparser.y" /* yacc.c:1648 */ + case 442: +#line 2338 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5239,11 +5262,11 @@ yyparse (void) else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5243 "util/configparser.c" /* yacc.c:1648 */ +#line 5266 "util/configparser.c" /* yacc.c:1652 */ break; - case 442: -#line 2346 "./util/configparser.y" /* yacc.c:1648 */ + case 443: +#line 2347 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5252,11 +5275,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5256 "util/configparser.c" /* yacc.c:1648 */ +#line 5279 "util/configparser.c" /* yacc.c:1652 */ break; - case 443: -#line 2356 "./util/configparser.y" /* yacc.c:1648 */ + case 444: +#line 2357 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5265,52 +5288,52 @@ yyparse (void) free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5269 "util/configparser.c" /* yacc.c:1648 */ +#line 5292 "util/configparser.c" /* yacc.c:1652 */ break; - case 444: -#line 2366 "./util/configparser.y" /* yacc.c:1648 */ + case 445: +#line 2367 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5279 "util/configparser.c" /* yacc.c:1648 */ +#line 5302 "util/configparser.c" /* yacc.c:1652 */ break; - case 445: -#line 2373 "./util/configparser.y" /* yacc.c:1648 */ + case 446: +#line 2374 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5289 "util/configparser.c" /* yacc.c:1648 */ +#line 5312 "util/configparser.c" /* yacc.c:1652 */ break; - case 446: -#line 2380 "./util/configparser.y" /* yacc.c:1648 */ + case 447: +#line 2381 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5299 "util/configparser.c" /* yacc.c:1648 */ +#line 5322 "util/configparser.c" /* yacc.c:1652 */ break; - case 447: -#line 2387 "./util/configparser.y" /* yacc.c:1648 */ + case 448: +#line 2388 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5310 "util/configparser.c" /* yacc.c:1648 */ +#line 5333 "util/configparser.c" /* yacc.c:1652 */ break; - case 448: -#line 2395 "./util/configparser.y" /* yacc.c:1648 */ + case 449: +#line 2396 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5319,11 +5342,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5323 "util/configparser.c" /* yacc.c:1648 */ +#line 5346 "util/configparser.c" /* yacc.c:1652 */ break; - case 449: -#line 2405 "./util/configparser.y" /* yacc.c:1648 */ + case 450: +#line 2406 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5332,11 +5355,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5336 "util/configparser.c" /* yacc.c:1648 */ +#line 5359 "util/configparser.c" /* yacc.c:1652 */ break; - case 450: -#line 2415 "./util/configparser.y" /* yacc.c:1648 */ + case 451: +#line 2416 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5345,11 +5368,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" /* yacc.c:1648 */ +#line 5372 "util/configparser.c" /* yacc.c:1652 */ break; - case 451: -#line 2425 "./util/configparser.y" /* yacc.c:1648 */ + case 452: +#line 2426 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5358,11 +5381,11 @@ yyparse (void) free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5362 "util/configparser.c" /* yacc.c:1648 */ +#line 5385 "util/configparser.c" /* yacc.c:1652 */ break; - case 452: -#line 2435 "./util/configparser.y" /* yacc.c:1648 */ + case 453: +#line 2436 "./util/configparser.y" /* yacc.c:1652 */ { 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 && @@ -5393,11 +5416,11 @@ yyparse (void) fatal_exit("out of memory adding local-zone"); } } -#line 5397 "util/configparser.c" /* yacc.c:1648 */ +#line 5420 "util/configparser.c" /* yacc.c:1652 */ break; - case 453: -#line 2467 "./util/configparser.y" /* yacc.c:1648 */ + case 454: +#line 2468 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5406,33 +5429,33 @@ yyparse (void) fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5410 "util/configparser.c" /* yacc.c:1648 */ +#line 5433 "util/configparser.c" /* yacc.c:1652 */ break; - case 454: -#line 2477 "./util/configparser.y" /* yacc.c:1648 */ + case 455: +#line 2478 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5421 "util/configparser.c" /* yacc.c:1648 */ +#line 5444 "util/configparser.c" /* yacc.c:1652 */ break; - case 455: -#line 2485 "./util/configparser.y" /* yacc.c:1648 */ + case 456: +#line 2486 "./util/configparser.y" /* yacc.c:1652 */ { 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"); } } -#line 5432 "util/configparser.c" /* yacc.c:1648 */ +#line 5455 "util/configparser.c" /* yacc.c:1652 */ break; - case 456: -#line 2493 "./util/configparser.y" /* yacc.c:1648 */ + case 457: +#line 2494 "./util/configparser.y" /* yacc.c:1652 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5446,11 +5469,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 5450 "util/configparser.c" /* yacc.c:1648 */ +#line 5473 "util/configparser.c" /* yacc.c:1652 */ break; - case 457: -#line 2508 "./util/configparser.y" /* yacc.c:1648 */ + case 458: +#line 2509 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5458,19 +5481,19 @@ yyparse (void) else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5462 "util/configparser.c" /* yacc.c:1648 */ +#line 5485 "util/configparser.c" /* yacc.c:1652 */ break; - case 458: -#line 2517 "./util/configparser.y" /* yacc.c:1648 */ + case 459: +#line 2518 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 5470 "util/configparser.c" /* yacc.c:1648 */ +#line 5493 "util/configparser.c" /* yacc.c:1652 */ break; - case 469: -#line 2528 "./util/configparser.y" /* yacc.c:1648 */ + case 470: +#line 2529 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5479,11 +5502,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5483 "util/configparser.c" /* yacc.c:1648 */ +#line 5506 "util/configparser.c" /* yacc.c:1652 */ break; - case 470: -#line 2538 "./util/configparser.y" /* yacc.c:1648 */ + case 471: +#line 2539 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5491,79 +5514,79 @@ yyparse (void) else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5495 "util/configparser.c" /* yacc.c:1648 */ +#line 5518 "util/configparser.c" /* yacc.c:1652 */ break; - case 471: -#line 2547 "./util/configparser.y" /* yacc.c:1648 */ + case 472: +#line 2548 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5505 "util/configparser.c" /* yacc.c:1648 */ +#line 5528 "util/configparser.c" /* yacc.c:1652 */ break; - case 472: -#line 2554 "./util/configparser.y" /* yacc.c:1648 */ + case 473: +#line 2555 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5515 "util/configparser.c" /* yacc.c:1648 */ +#line 5538 "util/configparser.c" /* yacc.c:1652 */ break; - case 473: -#line 2561 "./util/configparser.y" /* yacc.c:1648 */ + case 474: +#line 2562 "./util/configparser.y" /* yacc.c:1652 */ { 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 5525 "util/configparser.c" /* yacc.c:1648 */ +#line 5548 "util/configparser.c" /* yacc.c:1652 */ break; - case 474: -#line 2568 "./util/configparser.y" /* yacc.c:1648 */ + case 475: +#line 2569 "./util/configparser.y" /* yacc.c:1652 */ { 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 5535 "util/configparser.c" /* yacc.c:1648 */ +#line 5558 "util/configparser.c" /* yacc.c:1652 */ break; - case 475: -#line 2575 "./util/configparser.y" /* yacc.c:1648 */ + case 476: +#line 2576 "./util/configparser.y" /* yacc.c:1652 */ { 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 5545 "util/configparser.c" /* yacc.c:1648 */ +#line 5568 "util/configparser.c" /* yacc.c:1652 */ break; - case 476: -#line 2582 "./util/configparser.y" /* yacc.c:1648 */ + case 477: +#line 2583 "./util/configparser.y" /* yacc.c:1652 */ { 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 5555 "util/configparser.c" /* yacc.c:1648 */ +#line 5578 "util/configparser.c" /* yacc.c:1652 */ break; - case 477: -#line 2589 "./util/configparser.y" /* yacc.c:1648 */ + case 478: +#line 2590 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5563 "util/configparser.c" /* yacc.c:1648 */ +#line 5586 "util/configparser.c" /* yacc.c:1652 */ break; - case 492: -#line 2606 "./util/configparser.y" /* yacc.c:1648 */ + case 493: +#line 2607 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5571,21 +5594,21 @@ yyparse (void) else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5575 "util/configparser.c" /* yacc.c:1648 */ +#line 5598 "util/configparser.c" /* yacc.c:1652 */ break; - case 493: -#line 2615 "./util/configparser.y" /* yacc.c:1648 */ + case 494: +#line 2616 "./util/configparser.y" /* yacc.c:1652 */ { 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 5585 "util/configparser.c" /* yacc.c:1648 */ +#line 5608 "util/configparser.c" /* yacc.c:1652 */ break; - case 494: -#line 2622 "./util/configparser.y" /* yacc.c:1648 */ + case 495: +#line 2623 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5593,11 +5616,11 @@ yyparse (void) else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5597 "util/configparser.c" /* yacc.c:1648 */ +#line 5620 "util/configparser.c" /* yacc.c:1652 */ break; - case 495: -#line 2631 "./util/configparser.y" /* yacc.c:1648 */ + case 496: +#line 2632 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5605,31 +5628,31 @@ yyparse (void) else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5609 "util/configparser.c" /* yacc.c:1648 */ +#line 5632 "util/configparser.c" /* yacc.c:1652 */ break; - case 496: -#line 2640 "./util/configparser.y" /* yacc.c:1648 */ + case 497: +#line 2641 "./util/configparser.y" /* yacc.c:1652 */ { 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 5619 "util/configparser.c" /* yacc.c:1648 */ +#line 5642 "util/configparser.c" /* yacc.c:1652 */ break; - case 497: -#line 2647 "./util/configparser.y" /* yacc.c:1648 */ + case 498: +#line 2648 "./util/configparser.y" /* yacc.c:1652 */ { 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 5629 "util/configparser.c" /* yacc.c:1648 */ +#line 5652 "util/configparser.c" /* yacc.c:1652 */ break; - case 498: -#line 2654 "./util/configparser.y" /* yacc.c:1648 */ + case 499: +#line 2655 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5638,11 +5661,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5642 "util/configparser.c" /* yacc.c:1648 */ +#line 5665 "util/configparser.c" /* yacc.c:1652 */ break; - case 499: -#line 2664 "./util/configparser.y" /* yacc.c:1648 */ + case 500: +#line 2665 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5651,11 +5674,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5655 "util/configparser.c" /* yacc.c:1648 */ +#line 5678 "util/configparser.c" /* yacc.c:1652 */ break; - case 500: -#line 2674 "./util/configparser.y" /* yacc.c:1648 */ + case 501: +#line 2675 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5664,11 +5687,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5668 "util/configparser.c" /* yacc.c:1648 */ +#line 5691 "util/configparser.c" /* yacc.c:1652 */ break; - case 501: -#line 2684 "./util/configparser.y" /* yacc.c:1648 */ + case 502: +#line 2685 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5677,11 +5700,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5681 "util/configparser.c" /* yacc.c:1648 */ +#line 5704 "util/configparser.c" /* yacc.c:1652 */ break; - case 502: -#line 2694 "./util/configparser.y" /* yacc.c:1648 */ + case 503: +#line 2695 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5690,11 +5713,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5694 "util/configparser.c" /* yacc.c:1648 */ +#line 5717 "util/configparser.c" /* yacc.c:1652 */ break; - case 503: -#line 2704 "./util/configparser.y" /* yacc.c:1648 */ + case 504: +#line 2705 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5703,29 +5726,29 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5707 "util/configparser.c" /* yacc.c:1648 */ +#line 5730 "util/configparser.c" /* yacc.c:1652 */ break; - case 504: -#line 2714 "./util/configparser.y" /* yacc.c:1648 */ + case 505: +#line 2715 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(python:)\n")); } -#line 5715 "util/configparser.c" /* yacc.c:1648 */ +#line 5738 "util/configparser.c" /* yacc.c:1652 */ break; - case 508: -#line 2723 "./util/configparser.y" /* yacc.c:1648 */ + case 509: +#line 2724 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = (yyvsp[0].str); } -#line 5725 "util/configparser.c" /* yacc.c:1648 */ +#line 5748 "util/configparser.c" /* yacc.c:1652 */ break; - case 509: -#line 2729 "./util/configparser.y" /* yacc.c:1648 */ + case 510: +#line 2730 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5734,21 +5757,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5738 "util/configparser.c" /* yacc.c:1648 */ +#line 5761 "util/configparser.c" /* yacc.c:1652 */ break; - case 510: -#line 2739 "./util/configparser.y" /* yacc.c:1648 */ + case 511: +#line 2740 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 5748 "util/configparser.c" /* yacc.c:1648 */ +#line 5771 "util/configparser.c" /* yacc.c:1652 */ break; - case 511: -#line 2746 "./util/configparser.y" /* yacc.c:1648 */ + case 512: +#line 2747 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5756,30 +5779,30 @@ yyparse (void) (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 5760 "util/configparser.c" /* yacc.c:1648 */ +#line 5783 "util/configparser.c" /* yacc.c:1652 */ break; - case 512: -#line 2755 "./util/configparser.y" /* yacc.c:1648 */ + case 513: +#line 2756 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5771 "util/configparser.c" /* yacc.c:1648 */ +#line 5794 "util/configparser.c" /* yacc.c:1652 */ break; - case 513: -#line 2763 "./util/configparser.y" /* yacc.c:1648 */ + case 514: +#line 2764 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 5779 "util/configparser.c" /* yacc.c:1648 */ +#line 5802 "util/configparser.c" /* yacc.c:1652 */ break; - case 526: -#line 2779 "./util/configparser.y" /* yacc.c:1648 */ + case 527: +#line 2780 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5787,11 +5810,11 @@ yyparse (void) else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5791 "util/configparser.c" /* yacc.c:1648 */ +#line 5814 "util/configparser.c" /* yacc.c:1652 */ break; - case 527: -#line 2789 "./util/configparser.y" /* yacc.c:1648 */ + case 528: +#line 2790 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5799,21 +5822,21 @@ yyparse (void) else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5803 "util/configparser.c" /* yacc.c:1648 */ +#line 5826 "util/configparser.c" /* yacc.c:1652 */ break; - case 528: -#line 2798 "./util/configparser.y" /* yacc.c:1648 */ + case 529: +#line 2799 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 5813 "util/configparser.c" /* yacc.c:1648 */ +#line 5836 "util/configparser.c" /* yacc.c:1652 */ break; - case 529: -#line 2805 "./util/configparser.y" /* yacc.c:1648 */ + case 530: +#line 2806 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -5821,21 +5844,21 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 5825 "util/configparser.c" /* yacc.c:1648 */ +#line 5848 "util/configparser.c" /* yacc.c:1652 */ break; - case 530: -#line 2814 "./util/configparser.y" /* yacc.c:1648 */ + case 531: +#line 2815 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 5835 "util/configparser.c" /* yacc.c:1648 */ +#line 5858 "util/configparser.c" /* yacc.c:1652 */ break; - case 531: -#line 2821 "./util/configparser.y" /* yacc.c:1648 */ + case 532: +#line 2822 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -5843,22 +5866,22 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 5847 "util/configparser.c" /* yacc.c:1648 */ +#line 5870 "util/configparser.c" /* yacc.c:1652 */ break; - case 532: -#line 2830 "./util/configparser.y" /* yacc.c:1648 */ + case 533: +#line 2831 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5858 "util/configparser.c" /* yacc.c:1648 */ +#line 5881 "util/configparser.c" /* yacc.c:1652 */ break; - case 533: -#line 2838 "./util/configparser.y" /* yacc.c:1648 */ + case 534: +#line 2839 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5870,22 +5893,22 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5874 "util/configparser.c" /* yacc.c:1648 */ +#line 5897 "util/configparser.c" /* yacc.c:1652 */ break; - case 534: -#line 2851 "./util/configparser.y" /* yacc.c:1648 */ + case 535: +#line 2852 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5885 "util/configparser.c" /* yacc.c:1648 */ +#line 5908 "util/configparser.c" /* yacc.c:1652 */ break; - case 535: -#line 2859 "./util/configparser.y" /* yacc.c:1648 */ + case 536: +#line 2860 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5897,19 +5920,19 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5901 "util/configparser.c" /* yacc.c:1648 */ +#line 5924 "util/configparser.c" /* yacc.c:1652 */ break; - case 536: -#line 2872 "./util/configparser.y" /* yacc.c:1648 */ + case 537: +#line 2873 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 5909 "util/configparser.c" /* yacc.c:1648 */ +#line 5932 "util/configparser.c" /* yacc.c:1652 */ break; - case 544: -#line 2882 "./util/configparser.y" /* yacc.c:1648 */ + case 545: +#line 2883 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -5923,11 +5946,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5927 "util/configparser.c" /* yacc.c:1648 */ +#line 5950 "util/configparser.c" /* yacc.c:1652 */ break; - case 545: -#line 2897 "./util/configparser.y" /* yacc.c:1648 */ + case 546: +#line 2898 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -5941,11 +5964,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5945 "util/configparser.c" /* yacc.c:1648 */ +#line 5968 "util/configparser.c" /* yacc.c:1652 */ break; - case 546: -#line 2912 "./util/configparser.y" /* yacc.c:1648 */ + case 547: +#line 2913 "./util/configparser.y" /* yacc.c:1652 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -5956,11 +5979,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5960 "util/configparser.c" /* yacc.c:1648 */ +#line 5983 "util/configparser.c" /* yacc.c:1652 */ break; - case 547: -#line 2924 "./util/configparser.y" /* yacc.c:1648 */ + case 548: +#line 2925 "./util/configparser.y" /* yacc.c:1652 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -5974,11 +5997,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5978 "util/configparser.c" /* yacc.c:1648 */ +#line 6001 "util/configparser.c" /* yacc.c:1652 */ break; - case 548: -#line 2939 "./util/configparser.y" /* yacc.c:1648 */ + case 549: +#line 2940 "./util/configparser.y" /* yacc.c:1652 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -5990,11 +6013,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5994 "util/configparser.c" /* yacc.c:1648 */ +#line 6017 "util/configparser.c" /* yacc.c:1652 */ break; - case 549: -#line 2952 "./util/configparser.y" /* yacc.c:1648 */ + case 550: +#line 2953 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6004,11 +6027,55 @@ yyparse (void) fatal_exit("out of memory adding tcp connection limit"); } } -#line 6008 "util/configparser.c" /* yacc.c:1648 */ +#line 6031 "util/configparser.c" /* yacc.c:1652 */ break; + case 551: +#line 2964 "./util/configparser.y" /* yacc.c:1652 */ + { + OUTYY(("\nP(ipset:)\n")); + } +#line 6039 "util/configparser.c" /* yacc.c:1652 */ + break; + + case 556: +#line 2973 "./util/configparser.y" /* yacc.c:1652 */ + { + #ifdef USE_IPSET + OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->ipset_name_v4) + yyerror("ipset name v4 override, there must be one " + "name for ip v4"); + free(cfg_parser->cfg->ipset_name_v4); + cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free((yyvsp[0].str)); + #endif + } +#line 6057 "util/configparser.c" /* yacc.c:1652 */ + break; + + case 557: +#line 2988 "./util/configparser.y" /* yacc.c:1652 */ + { + #ifdef USE_IPSET + OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->ipset_name_v6) + yyerror("ipset name v6 override, there must be one " + "name for ip v6"); + free(cfg_parser->cfg->ipset_name_v6); + cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free((yyvsp[0].str)); + #endif + } +#line 6075 "util/configparser.c" /* yacc.c:1652 */ + break; -#line 6012 "util/configparser.c" /* yacc.c:1648 */ + +#line 6079 "util/configparser.c" /* yacc.c:1652 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6033,14 +6100,13 @@ yyparse (void) /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } goto yynewstate; @@ -6123,12 +6189,10 @@ yyparse (void) | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -6190,6 +6254,7 @@ yyparse (void) yyresult = 0; goto yyreturn; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -6197,6 +6262,7 @@ yyparse (void) yyresult = 1; goto yyreturn; + #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -6207,6 +6273,10 @@ yyparse (void) /* Fall through. */ #endif + +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -6236,7 +6306,7 @@ yyparse (void) #endif return yyresult; } -#line 2962 "./util/configparser.y" /* yacc.c:1907 */ +#line 3002 "./util/configparser.y" /* yacc.c:1918 */ /* parse helper routines could be here */ @@ -6256,3 +6326,4 @@ validate_respip_action(const char* action) "always_refuse or always_nxdomain"); } } + diff --git a/util/configparser.h b/util/configparser.h index db6e94714..895137a63 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.5. */ +/* A Bison parser, made by GNU Bison 3.3.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 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 @@ -30,6 +31,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Debug traces. */ @@ -308,7 +312,10 @@ extern int yydebug; VAR_STREAM_WAIT_SIZE = 518, VAR_TLS_CIPHERS = 519, VAR_TLS_CIPHERSUITES = 520, - VAR_TLS_SESSION_TICKET_KEYS = 521 + VAR_TLS_SESSION_TICKET_KEYS = 521, + VAR_IPSET = 522, + VAR_IPSET_NAME_V4 = 523, + VAR_IPSET_NAME_V6 = 524 }; #endif /* Tokens. */ @@ -576,17 +583,20 @@ extern int yydebug; #define VAR_TLS_CIPHERS 519 #define VAR_TLS_CIPHERSUITES 520 #define VAR_TLS_SESSION_TICKET_KEYS 521 +#define VAR_IPSET 522 +#define VAR_IPSET_NAME_V4 523 +#define VAR_IPSET_NAME_V6 524 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 66 "./util/configparser.y" /* yacc.c:1910 */ +#line 66 "./util/configparser.y" /* yacc.c:1921 */ char* str; -#line 590 "util/configparser.h" /* yacc.c:1910 */ +#line 600 "util/configparser.h" /* yacc.c:1921 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index c7b916966..cf0740c39 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -167,6 +167,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_UNKNOWN_SERVER_TIME_LIMIT VAR_LOG_TAG_QUERYREPLY %token VAR_STREAM_WAIT_SIZE VAR_TLS_CIPHERS VAR_TLS_CIPHERSUITES %token VAR_TLS_SESSION_TICKET_KEYS +%token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6 %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -174,7 +175,7 @@ toplevelvar: serverstart contents_server | stubstart contents_stub | forwardstart contents_forward | pythonstart contents_py | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | dnscstart contents_dnsc | cachedbstart contents_cachedb | - authstart contents_auth + ipsetstart contents_ipset | authstart contents_auth ; /* server: declaration */ @@ -2959,6 +2960,45 @@ server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG } } ; + ipsetstart: VAR_IPSET + { + OUTYY(("\nP(ipset:)\n")); + } + ; + contents_ipset: contents_ipset content_ipset + | ; + content_ipset: ipset_name_v4 | ipset_name_v6 + ; + ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG + { + #ifdef USE_IPSET + OUTYY(("P(name-v4:%s)\n", $2)); + if(cfg_parser->cfg->ipset_name_v4) + yyerror("ipset name v4 override, there must be one " + "name for ip v4"); + free(cfg_parser->cfg->ipset_name_v4); + cfg_parser->cfg->ipset_name_v4 = $2; + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free($2); + #endif + } + ; + ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG + { + #ifdef USE_IPSET + OUTYY(("P(name-v6:%s)\n", $2)); + if(cfg_parser->cfg->ipset_name_v6) + yyerror("ipset name v6 override, there must be one " + "name for ip v6"); + free(cfg_parser->cfg->ipset_name_v6); + cfg_parser->cfg->ipset_name_v6 = $2; + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free($2); + #endif + } + ; %% /* parse helper routines could be here */ @@ -2978,3 +3018,4 @@ validate_respip_action(const char* action) "always_refuse or always_nxdomain"); } } + diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index 94d23fa3a..f5da501de 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -90,6 +90,9 @@ #ifdef CLIENT_SUBNET #include "edns-subnet/subnetmod.h" #endif +#ifdef USE_IPSET +#include "ipset/ipset.h" +#endif int fptr_whitelist_comm_point(comm_point_callback_type *fptr) @@ -358,8 +361,8 @@ fptr_whitelist_modenv_kill_sub(void (*fptr)(struct module_qstate* newq)) } int -fptr_whitelist_modenv_detect_cycle(int (*fptr)( - struct module_qstate* qstate, struct query_info* qinfo, +fptr_whitelist_modenv_detect_cycle(int (*fptr)( + struct module_qstate* qstate, struct query_info* qinfo, uint16_t flags, int prime, int valrec)) { if(fptr == &mesh_detect_cycle) return 1; @@ -384,6 +387,9 @@ fptr_whitelist_mod_init(int (*fptr)(struct module_env* env, int id)) #endif #ifdef CLIENT_SUBNET else if(fptr == &subnetmod_init) return 1; +#endif +#ifdef USE_IPSET + else if(fptr == &ipset_init) return 1; #endif return 0; } @@ -406,6 +412,9 @@ fptr_whitelist_mod_deinit(void (*fptr)(struct module_env* env, int id)) #endif #ifdef CLIENT_SUBNET else if(fptr == &subnetmod_deinit) return 1; +#endif +#ifdef USE_IPSET + else if(fptr == &ipset_deinit) return 1; #endif return 0; } @@ -429,6 +438,9 @@ fptr_whitelist_mod_operate(void (*fptr)(struct module_qstate* qstate, #endif #ifdef CLIENT_SUBNET else if(fptr == &subnetmod_operate) return 1; +#endif +#ifdef USE_IPSET + else if(fptr == &ipset_operate) return 1; #endif return 0; } @@ -452,6 +464,9 @@ fptr_whitelist_mod_inform_super(void (*fptr)( #endif #ifdef CLIENT_SUBNET else if(fptr == &subnetmod_inform_super) return 1; +#endif +#ifdef USE_IPSET + else if(fptr == &ipset_inform_super) return 1; #endif return 0; } @@ -475,6 +490,9 @@ fptr_whitelist_mod_clear(void (*fptr)(struct module_qstate* qstate, #endif #ifdef CLIENT_SUBNET else if(fptr == &subnetmod_clear) return 1; +#endif +#ifdef USE_IPSET + else if(fptr == &ipset_clear) return 1; #endif return 0; } @@ -497,6 +515,9 @@ fptr_whitelist_mod_get_mem(size_t (*fptr)(struct module_env* env, int id)) #endif #ifdef CLIENT_SUBNET else if(fptr == &subnetmod_get_mem) return 1; +#endif +#ifdef USE_IPSET + else if(fptr == &ipset_get_mem) return 1; #endif return 0; } @@ -597,3 +618,4 @@ int fptr_whitelist_inplace_cb_query_response( #endif return 0; } + From 56af87e2f3899175b159845ae73e8c56c205ac48 Mon Sep 17 00:00:00 2001 From: Kevin Chu Date: Fri, 3 May 2019 17:45:34 +0800 Subject: [PATCH 06/22] edit config parser to support ipset --- doc/example.conf.in | 14 ++ ipset/ipset.c | 99 ++++++--- util/config_file.c | 15 ++ util/config_file.h | 9 + util/configparser.c | 520 +++++++++++++++++++++++--------------------- util/configparser.y | 22 +- 6 files changed, 394 insertions(+), 285 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index c78156fe1..b2644cb8a 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -653,6 +653,9 @@ server: # local-zone: "8.b.d.0.1.0.0.2.ip6.arpa." nodefault # And for 64.100.in-addr.arpa. to 127.100.in-addr.arpa. + # Add example.com into ipset + # local-zone: "example.com" ipset + # If unbound is running service for the local host then it is useful # to perform lan-wide lookups to the upstream, and unblock the # long list of local-zones above. If this unbound is a dns server @@ -991,3 +994,14 @@ remote-control: # redis-server-port: 6379 # # timeout (in ms) for communication with the redis server # redis-timeout: 100 + +# IPSet +# Add specify domain into set via ipset. +# Note: To enable ipset needs run unbound as root user. +# ipset: +# # set name for ip v4 addresses +# name-v4: "list-v4" +# # set name for ip v6 addresses +# name-v6: "list-v6" +# + diff --git a/ipset/ipset.c b/ipset/ipset.c index 957932693..2e2c374aa 100755 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -2,10 +2,12 @@ #include "ipset/ipset.h" #include "util/regional.h" #include "util/config_file.h" + #include "services/cache/dns.h" -#include "sldns/parseutil.h" + #include "sldns/sbuffer.h" #include "sldns/wire2str.h" +#include "sldns/parseutil.h" #include #include @@ -21,8 +23,7 @@ * @return: 0 for use by caller, to make notation easy, like: * return error_response(..). */ -static int error_response(struct module_qstate* qstate, int id, int rcode) -{ +static int error_response(struct module_qstate* qstate, int id, int rcode) { verbose(VERB_QUERY, "return error response %s", sldns_lookup_by_id(sldns_rcodes, rcode)? sldns_lookup_by_id(sldns_rcodes, rcode)->name:"??"); @@ -36,7 +37,7 @@ static int add_to_ipset(struct mnl_socket *mnl, const char *setname, const void struct nlmsghdr *nlh; struct nfgenmsg *nfg; struct nlattr *nested[2]; - char buffer[BUFF_LEN]; + static char buffer[BUFF_LEN]; if (strlen(setname) >= IPSET_MAXNAMELEN) { errno = ENAMETOOLONG; @@ -49,7 +50,7 @@ static int add_to_ipset(struct mnl_socket *mnl, const char *setname, const void nlh = mnl_nlmsg_put_header(buffer); nlh->nlmsg_type = IPSET_CMD_ADD | (NFNL_SUBSYS_IPSET << 8); - nlh->nlmsg_flags = NLM_F_REQUEST|NLM_F_ACK|NLM_F_EXCL; + nlh->nlmsg_flags = NLM_F_REQUEST|NLM_F_ACK|NLM_F_EXCL; nfg = mnl_nlmsg_put_extra_header(nlh, sizeof(struct nfgenmsg)); nfg->nfgen_family = af; @@ -71,29 +72,40 @@ static int add_to_ipset(struct mnl_socket *mnl, const char *setname, const void return 0; } -int ipset_update(struct dns_msg* return_msg, struct ipset_env *ie) { - int i, j; +static int ipset_update(struct module_env *env, struct dns_msg *return_msg, struct ipset_env *ie) { int ret; + + struct mnl_socket *mnl; + + int i, j; + + const char *setname; + + struct ub_packed_rrset_key *rrset; + struct packed_rrset_data *d; + int af; + + static char dname[BUFF_LEN]; + const char *s; + int dlen, plen; + + struct config_strlist *p; + uint16_t rrtype; size_t rr_len, rd_len; - struct ub_packed_rrset_key *rrset; - struct packed_rrset_data* d; - uint8_t *rr_data; - const char *setname; - - struct mnl_socket *mnl; + uint8_t *rr_data; mnl = (struct mnl_socket *)ie->mnl; if (mnl == NULL) { return -1; } - for (i = 0; i < return_msg->rep->rrset_count; ++i) { + for (i = 0; i < return_msg->rep->rrset_count; ++i) { setname = NULL; - rrset = return_msg->rep->rrsets[i]; + rrset = return_msg->rep->rrsets[i]; if (rrset->rk.type == htons(LDNS_RR_TYPE_A)) { af = AF_INET; @@ -107,20 +119,46 @@ int ipset_update(struct dns_msg* return_msg, struct ipset_env *ie) { } } - if (setname != NULL) { - d = (struct packed_rrset_data*)rrset->entry.data; - for (j = 0; j < d->count + d->rrsig_count; j++) { - rr_len = d->rr_len[j]; - rr_data = d->rr_data[j]; - - rd_len = sldns_read_uint16(rr_data); - if (rr_len - 2 >= rd_len) { - ret = add_to_ipset(mnl, setname, rr_data + 2, af); - if (ret < 0) { - return ret; - } - } - } + if (setname != NULL) { + dlen = sldns_wire2str_dname_buf(rrset->rk.dname, rrset->rk.dname_len, dname, BUFF_LEN); + if (dlen == 0) { + log_err("bad domain name"); + return -1; + } + if (dname[dlen - 1] == '.') { + dlen--; + dname[dlen] = 0; + } + + verbose(VERB_QUERY, "ipset domain name %d %s", dlen, dname); + + for (p = env->cfg->local_zones_ipset; p; p = p->next) { + plen = strlen(p->str); + + verbose(VERB_QUERY, "ipset local_zones_ipset name %d %s", plen, p->str); + + if (dlen >= plen) { + s = dname + (dlen - plen); + verbose(VERB_QUERY, "ipset start name %s", s); + + if (strncasecmp(p->str, s, plen) == 0) { + d = (struct packed_rrset_data*)rrset->entry.data; + for (j = 0; j < d->count + d->rrsig_count; j++) { + rr_len = d->rr_len[j]; + rr_data = d->rr_data[j]; + + rd_len = sldns_read_uint16(rr_data); + if (rr_len - 2 >= rd_len) { + ret = add_to_ipset(mnl, setname, rr_data + 2, af); + if (ret < 0) { + return ret; + } + } + } + + } + } + } } } @@ -222,7 +260,7 @@ void ipset_operate(struct module_qstate *qstate, enum module_ev event, int id, } if(iq && (event == module_event_moddone)) { - ipset_update(qstate->return_msg, ie); + ipset_update(qstate->env, qstate->return_msg, ie); qstate->ext_state[id] = module_finished; return; } @@ -287,3 +325,4 @@ struct module_func_block * ipset_get_funcblock(void) { return &ipset_block; } + diff --git a/util/config_file.c b/util/config_file.c index 205220eab..b5e4da347 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -255,6 +255,9 @@ config_create(void) cfg->neg_cache_size = 1 * 1024 * 1024; cfg->local_zones = NULL; cfg->local_zones_nodefault = NULL; +#ifdef USE_IPSET + cfg->local_zones_ipset = NULL; +#endif cfg->local_zones_disable_default = 0; cfg->local_data = NULL; cfg->local_zone_overrides = NULL; @@ -1318,6 +1321,9 @@ config_delview(struct config_view* p) free(p->name); config_deldblstrlist(p->local_zones); config_delstrlist(p->local_zones_nodefault); +#ifdef USE_IPSET + config_delstrlist(p->local_zones_ipset); +#endif config_delstrlist(p->local_data); free(p); } @@ -1408,6 +1414,9 @@ config_delete(struct config_file* cfg) free(cfg->val_nsec3_key_iterations); config_deldblstrlist(cfg->local_zones); config_delstrlist(cfg->local_zones_nodefault); +#ifdef USE_IPSET + config_delstrlist(cfg->local_zones_ipset); +#endif config_delstrlist(cfg->local_data); config_deltrplstrlist(cfg->local_zone_overrides); config_del_strarray(cfg->tagname, cfg->num_tags); @@ -2119,6 +2128,11 @@ cfg_parse_local_zone(struct config_file* cfg, const char* val) if(strcmp(type, "nodefault")==0) { return cfg_strlist_insert(&cfg->local_zones_nodefault, strdup(name)); +#ifdef USE_IPSET + } else if(strcmp(type, "ipset")==0) { + return cfg_strlist_insert(&cfg->local_zones_ipset, + strdup(name)); +#endif } else { return cfg_str2list_insert(&cfg->local_zones, strdup(buf), strdup(type)); @@ -2393,3 +2407,4 @@ int options_remote_is_address(struct config_file* cfg) if(cfg->control_ifs.first->str[0] == 0) return 1; return (cfg->control_ifs.first->str[0] != '/'); } + diff --git a/util/config_file.h b/util/config_file.h index 033037463..51850f649 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -384,6 +384,10 @@ struct config_file { struct config_str2list* local_zones; /** local zones nodefault list */ struct config_strlist* local_zones_nodefault; +#ifdef USE_IPSET + /** local zones ipset list */ + struct config_strlist* local_zones_ipset; +#endif /** do not add any default local zone */ int local_zones_disable_default; /** local data RRs configured */ @@ -653,6 +657,10 @@ struct config_view { struct config_strlist* local_data; /** local zones nodefault list */ struct config_strlist* local_zones_nodefault; +#ifdef USE_IPSET + /** local zones ipset list */ + struct config_strlist* local_zones_ipset; +#endif /** Fallback to global local_zones when there is no match in the view * view specific tree. 1 for yes, 0 for no */ int isfirst; @@ -1187,3 +1195,4 @@ void w_config_adjust_directory(struct config_file* cfg); extern int fake_dsa, fake_sha1; #endif /* UTIL_CONFIG_FILE_H */ + diff --git a/util/configparser.c b/util/configparser.c index 9e4fd60d9..d15ca602d 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1049,23 +1049,23 @@ static const yytype_uint16 yyrline[] = 1451, 1460, 1469, 1478, 1485, 1495, 1515, 1522, 1540, 1553, 1566, 1575, 1584, 1593, 1602, 1612, 1622, 1633, 1642, 1651, 1660, 1669, 1682, 1695, 1704, 1711, 1720, 1729, 1738, 1747, - 1755, 1768, 1776, 1809, 1816, 1831, 1841, 1851, 1858, 1865, - 1872, 1881, 1889, 1903, 1924, 1945, 1957, 1969, 1981, 1990, - 2011, 2021, 2030, 2038, 2046, 2059, 2072, 2087, 2102, 2111, - 2120, 2126, 2135, 2144, 2154, 2164, 2177, 2190, 2202, 2216, - 2228, 2242, 2252, 2259, 2266, 2275, 2284, 2294, 2304, 2314, - 2321, 2328, 2337, 2346, 2356, 2366, 2373, 2380, 2387, 2395, - 2405, 2415, 2425, 2435, 2467, 2477, 2485, 2493, 2508, 2517, - 2522, 2523, 2524, 2524, 2524, 2525, 2525, 2525, 2526, 2526, - 2528, 2538, 2547, 2554, 2561, 2568, 2575, 2582, 2589, 2594, - 2595, 2596, 2596, 2597, 2597, 2598, 2598, 2599, 2600, 2601, - 2602, 2603, 2604, 2606, 2615, 2622, 2631, 2640, 2647, 2654, - 2664, 2674, 2684, 2694, 2704, 2714, 2719, 2720, 2721, 2723, - 2729, 2739, 2746, 2755, 2763, 2768, 2769, 2771, 2771, 2771, - 2772, 2772, 2773, 2774, 2775, 2776, 2777, 2779, 2789, 2798, - 2805, 2814, 2821, 2830, 2838, 2851, 2859, 2872, 2877, 2878, - 2879, 2879, 2880, 2880, 2880, 2882, 2897, 2912, 2924, 2939, - 2952, 2963, 2968, 2969, 2970, 2970, 2972, 2987 + 1755, 1768, 1776, 1817, 1824, 1839, 1849, 1859, 1866, 1873, + 1880, 1889, 1897, 1911, 1932, 1953, 1965, 1977, 1989, 1998, + 2019, 2029, 2038, 2046, 2054, 2067, 2080, 2095, 2110, 2119, + 2128, 2134, 2143, 2152, 2162, 2172, 2185, 2198, 2210, 2224, + 2236, 2250, 2260, 2267, 2274, 2283, 2292, 2302, 2312, 2322, + 2329, 2336, 2345, 2354, 2364, 2374, 2381, 2388, 2395, 2403, + 2413, 2423, 2433, 2443, 2482, 2492, 2500, 2508, 2523, 2532, + 2537, 2538, 2539, 2539, 2539, 2540, 2540, 2540, 2541, 2541, + 2543, 2553, 2562, 2569, 2576, 2583, 2590, 2597, 2604, 2609, + 2610, 2611, 2611, 2612, 2612, 2613, 2613, 2614, 2615, 2616, + 2617, 2618, 2619, 2621, 2630, 2637, 2646, 2655, 2662, 2669, + 2679, 2689, 2699, 2709, 2719, 2729, 2734, 2735, 2736, 2738, + 2744, 2754, 2761, 2770, 2778, 2783, 2784, 2786, 2786, 2786, + 2787, 2787, 2788, 2789, 2790, 2791, 2792, 2794, 2804, 2813, + 2820, 2829, 2836, 2845, 2853, 2866, 2874, 2887, 2892, 2893, + 2894, 2894, 2895, 2895, 2895, 2897, 2912, 2927, 2939, 2954, + 2967, 2978, 2983, 2984, 2985, 2985, 2987, 3002 }; #endif @@ -4556,13 +4556,14 @@ yyparse (void) && strcmp((yyvsp[0].str), "always_nxdomain")!=0 && strcmp((yyvsp[0].str), "noview")!=0 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 - && strcmp((yyvsp[0].str), "inform_redirect") != 0) { + && strcmp((yyvsp[0].str), "inform_redirect") != 0 + && strcmp((yyvsp[0].str), "ipset") != 0) { yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " "inform_redirect, always_transparent, " "always_refuse, always_nxdomain, noview " - "or nodefault"); + ", nodefault or ipset"); free((yyvsp[-1].str)); free((yyvsp[0].str)); } else if(strcmp((yyvsp[0].str), "nodefault")==0) { @@ -4570,27 +4571,34 @@ yyparse (void) local_zones_nodefault, (yyvsp[-1].str))) fatal_exit("out of memory adding local-zone"); free((yyvsp[0].str)); +#ifdef USE_IPSET + } else if(strcmp((yyvsp[0].str), "ipset")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_zones_ipset, (yyvsp[-1].str))) + fatal_exit("out of memory adding local-zone"); + free((yyvsp[0].str)); +#endif } else { if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding local-zone"); } } -#line 4580 "util/configparser.c" /* yacc.c:1652 */ +#line 4588 "util/configparser.c" /* yacc.c:1652 */ break; case 393: -#line 1810 "./util/configparser.y" /* yacc.c:1652 */ +#line 1818 "./util/configparser.y" /* yacc.c:1652 */ { 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 4590 "util/configparser.c" /* yacc.c:1652 */ +#line 4598 "util/configparser.c" /* yacc.c:1652 */ break; case 394: -#line 1817 "./util/configparser.y" /* yacc.c:1652 */ +#line 1825 "./util/configparser.y" /* yacc.c:1652 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4604,11 +4612,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 4608 "util/configparser.c" /* yacc.c:1652 */ +#line 4616 "util/configparser.c" /* yacc.c:1652 */ break; case 395: -#line 1832 "./util/configparser.y" /* yacc.c:1652 */ +#line 1840 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4617,11 +4625,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" /* yacc.c:1652 */ +#line 4629 "util/configparser.c" /* yacc.c:1652 */ break; case 396: -#line 1842 "./util/configparser.y" /* yacc.c:1652 */ +#line 1850 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4630,41 +4638,41 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4634 "util/configparser.c" /* yacc.c:1652 */ +#line 4642 "util/configparser.c" /* yacc.c:1652 */ break; case 397: -#line 1852 "./util/configparser.y" /* yacc.c:1652 */ +#line 1860 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4644 "util/configparser.c" /* yacc.c:1652 */ +#line 4652 "util/configparser.c" /* yacc.c:1652 */ break; case 398: -#line 1859 "./util/configparser.y" /* yacc.c:1652 */ +#line 1867 "./util/configparser.y" /* yacc.c:1652 */ { 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 4654 "util/configparser.c" /* yacc.c:1652 */ +#line 4662 "util/configparser.c" /* yacc.c:1652 */ break; case 399: -#line 1866 "./util/configparser.y" /* yacc.c:1652 */ +#line 1874 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4664 "util/configparser.c" /* yacc.c:1652 */ +#line 4672 "util/configparser.c" /* yacc.c:1652 */ break; case 400: -#line 1873 "./util/configparser.y" /* yacc.c:1652 */ +#line 1881 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4672,22 +4680,22 @@ yyparse (void) else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4676 "util/configparser.c" /* yacc.c:1652 */ +#line 4684 "util/configparser.c" /* yacc.c:1652 */ break; case 401: -#line 1882 "./util/configparser.y" /* yacc.c:1652 */ +#line 1890 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4687 "util/configparser.c" /* yacc.c:1652 */ +#line 4695 "util/configparser.c" /* yacc.c:1652 */ break; case 402: -#line 1890 "./util/configparser.y" /* yacc.c:1652 */ +#line 1898 "./util/configparser.y" /* yacc.c:1652 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4700,11 +4708,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4704 "util/configparser.c" /* yacc.c:1652 */ +#line 4712 "util/configparser.c" /* yacc.c:1652 */ break; case 403: -#line 1904 "./util/configparser.y" /* yacc.c:1652 */ +#line 1912 "./util/configparser.y" /* yacc.c:1652 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4724,11 +4732,11 @@ yyparse (void) } } } -#line 4728 "util/configparser.c" /* yacc.c:1652 */ +#line 4736 "util/configparser.c" /* yacc.c:1652 */ break; case 404: -#line 1925 "./util/configparser.y" /* yacc.c:1652 */ +#line 1933 "./util/configparser.y" /* yacc.c:1652 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4748,11 +4756,11 @@ yyparse (void) } } } -#line 4752 "util/configparser.c" /* yacc.c:1652 */ +#line 4760 "util/configparser.c" /* yacc.c:1652 */ break; case 405: -#line 1946 "./util/configparser.y" /* yacc.c:1652 */ +#line 1954 "./util/configparser.y" /* yacc.c:1652 */ { 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, @@ -4763,11 +4771,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4767 "util/configparser.c" /* yacc.c:1652 */ +#line 4775 "util/configparser.c" /* yacc.c:1652 */ break; case 406: -#line 1958 "./util/configparser.y" /* yacc.c:1652 */ +#line 1966 "./util/configparser.y" /* yacc.c:1652 */ { 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, @@ -4778,11 +4786,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4782 "util/configparser.c" /* yacc.c:1652 */ +#line 4790 "util/configparser.c" /* yacc.c:1652 */ break; case 407: -#line 1970 "./util/configparser.y" /* yacc.c:1652 */ +#line 1978 "./util/configparser.y" /* yacc.c:1652 */ { 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, @@ -4793,11 +4801,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4797 "util/configparser.c" /* yacc.c:1652 */ +#line 4805 "util/configparser.c" /* yacc.c:1652 */ break; case 408: -#line 1982 "./util/configparser.y" /* yacc.c:1652 */ +#line 1990 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -4805,11 +4813,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 4809 "util/configparser.c" /* yacc.c:1652 */ +#line 4817 "util/configparser.c" /* yacc.c:1652 */ break; case 409: -#line 1991 "./util/configparser.y" /* yacc.c:1652 */ +#line 1999 "./util/configparser.y" /* yacc.c:1652 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4829,11 +4837,11 @@ yyparse (void) } } } -#line 4833 "util/configparser.c" /* yacc.c:1652 */ +#line 4841 "util/configparser.c" /* yacc.c:1652 */ break; case 410: -#line 2012 "./util/configparser.y" /* yacc.c:1652 */ +#line 2020 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4841,11 +4849,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4845 "util/configparser.c" /* yacc.c:1652 */ +#line 4853 "util/configparser.c" /* yacc.c:1652 */ break; case 411: -#line 2022 "./util/configparser.y" /* yacc.c:1652 */ +#line 2030 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4853,33 +4861,33 @@ yyparse (void) else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4857 "util/configparser.c" /* yacc.c:1652 */ +#line 4865 "util/configparser.c" /* yacc.c:1652 */ break; case 412: -#line 2031 "./util/configparser.y" /* yacc.c:1652 */ +#line 2039 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4868 "util/configparser.c" /* yacc.c:1652 */ +#line 4876 "util/configparser.c" /* yacc.c:1652 */ break; case 413: -#line 2039 "./util/configparser.y" /* yacc.c:1652 */ +#line 2047 "./util/configparser.y" /* yacc.c:1652 */ { 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 4879 "util/configparser.c" /* yacc.c:1652 */ +#line 4887 "util/configparser.c" /* yacc.c:1652 */ break; case 414: -#line 2047 "./util/configparser.y" /* yacc.c:1652 */ +#line 2055 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4891,11 +4899,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4895 "util/configparser.c" /* yacc.c:1652 */ +#line 4903 "util/configparser.c" /* yacc.c:1652 */ break; case 415: -#line 2060 "./util/configparser.y" /* yacc.c:1652 */ +#line 2068 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4907,11 +4915,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4911 "util/configparser.c" /* yacc.c:1652 */ +#line 4919 "util/configparser.c" /* yacc.c:1652 */ break; case 416: -#line 2073 "./util/configparser.y" /* yacc.c:1652 */ +#line 2081 "./util/configparser.y" /* yacc.c:1652 */ { 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) { @@ -4925,11 +4933,11 @@ yyparse (void) "ratelimit-for-domain"); } } -#line 4929 "util/configparser.c" /* yacc.c:1652 */ +#line 4937 "util/configparser.c" /* yacc.c:1652 */ break; case 417: -#line 2088 "./util/configparser.y" /* yacc.c:1652 */ +#line 2096 "./util/configparser.y" /* yacc.c:1652 */ { 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) { @@ -4943,11 +4951,11 @@ yyparse (void) "ratelimit-below-domain"); } } -#line 4947 "util/configparser.c" /* yacc.c:1652 */ +#line 4955 "util/configparser.c" /* yacc.c:1652 */ break; case 418: -#line 2103 "./util/configparser.y" /* yacc.c:1652 */ +#line 2111 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4955,11 +4963,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4959 "util/configparser.c" /* yacc.c:1652 */ +#line 4967 "util/configparser.c" /* yacc.c:1652 */ break; case 419: -#line 2112 "./util/configparser.y" /* yacc.c:1652 */ +#line 2120 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4967,20 +4975,20 @@ yyparse (void) else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4971 "util/configparser.c" /* yacc.c:1652 */ +#line 4979 "util/configparser.c" /* yacc.c:1652 */ break; case 420: -#line 2121 "./util/configparser.y" /* yacc.c:1652 */ +#line 2129 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 4980 "util/configparser.c" /* yacc.c:1652 */ +#line 4988 "util/configparser.c" /* yacc.c:1652 */ break; case 421: -#line 2127 "./util/configparser.y" /* yacc.c:1652 */ +#line 2135 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -4988,11 +4996,11 @@ yyparse (void) else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4992 "util/configparser.c" /* yacc.c:1652 */ +#line 5000 "util/configparser.c" /* yacc.c:1652 */ break; case 422: -#line 2136 "./util/configparser.y" /* yacc.c:1652 */ +#line 2144 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5000,11 +5008,11 @@ yyparse (void) else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5004 "util/configparser.c" /* yacc.c:1652 */ +#line 5012 "util/configparser.c" /* yacc.c:1652 */ break; case 423: -#line 2145 "./util/configparser.y" /* yacc.c:1652 */ +#line 2153 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5013,11 +5021,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5017 "util/configparser.c" /* yacc.c:1652 */ +#line 5025 "util/configparser.c" /* yacc.c:1652 */ break; case 424: -#line 2155 "./util/configparser.y" /* yacc.c:1652 */ +#line 2163 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5026,11 +5034,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5030 "util/configparser.c" /* yacc.c:1652 */ +#line 5038 "util/configparser.c" /* yacc.c:1652 */ break; case 425: -#line 2165 "./util/configparser.y" /* yacc.c:1652 */ +#line 2173 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5042,11 +5050,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5046 "util/configparser.c" /* yacc.c:1652 */ +#line 5054 "util/configparser.c" /* yacc.c:1652 */ break; case 426: -#line 2178 "./util/configparser.y" /* yacc.c:1652 */ +#line 2186 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5058,11 +5066,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5062 "util/configparser.c" /* yacc.c:1652 */ +#line 5070 "util/configparser.c" /* yacc.c:1652 */ break; case 427: -#line 2191 "./util/configparser.y" /* yacc.c:1652 */ +#line 2199 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5073,11 +5081,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5077 "util/configparser.c" /* yacc.c:1652 */ +#line 5085 "util/configparser.c" /* yacc.c:1652 */ break; case 428: -#line 2203 "./util/configparser.y" /* yacc.c:1652 */ +#line 2211 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5090,11 +5098,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5094 "util/configparser.c" /* yacc.c:1652 */ +#line 5102 "util/configparser.c" /* yacc.c:1652 */ break; case 429: -#line 2217 "./util/configparser.y" /* yacc.c:1652 */ +#line 2225 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5105,11 +5113,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5109 "util/configparser.c" /* yacc.c:1652 */ +#line 5117 "util/configparser.c" /* yacc.c:1652 */ break; case 430: -#line 2229 "./util/configparser.y" /* yacc.c:1652 */ +#line 2237 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5122,11 +5130,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5126 "util/configparser.c" /* yacc.c:1652 */ +#line 5134 "util/configparser.c" /* yacc.c:1652 */ break; case 431: -#line 2243 "./util/configparser.y" /* yacc.c:1652 */ +#line 2251 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5135,31 +5143,31 @@ yyparse (void) free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5139 "util/configparser.c" /* yacc.c:1652 */ +#line 5147 "util/configparser.c" /* yacc.c:1652 */ break; case 432: -#line 2253 "./util/configparser.y" /* yacc.c:1652 */ +#line 2261 "./util/configparser.y" /* yacc.c:1652 */ { 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 5149 "util/configparser.c" /* yacc.c:1652 */ +#line 5157 "util/configparser.c" /* yacc.c:1652 */ break; case 433: -#line 2260 "./util/configparser.y" /* yacc.c:1652 */ +#line 2268 "./util/configparser.y" /* yacc.c:1652 */ { 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 5159 "util/configparser.c" /* yacc.c:1652 */ +#line 5167 "util/configparser.c" /* yacc.c:1652 */ break; case 434: -#line 2267 "./util/configparser.y" /* yacc.c:1652 */ +#line 2275 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5167,11 +5175,11 @@ yyparse (void) else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5171 "util/configparser.c" /* yacc.c:1652 */ +#line 5179 "util/configparser.c" /* yacc.c:1652 */ break; case 435: -#line 2276 "./util/configparser.y" /* yacc.c:1652 */ +#line 2284 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5179,11 +5187,11 @@ yyparse (void) else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5183 "util/configparser.c" /* yacc.c:1652 */ +#line 5191 "util/configparser.c" /* yacc.c:1652 */ break; case 436: -#line 2285 "./util/configparser.y" /* yacc.c:1652 */ +#line 2293 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5192,11 +5200,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5196 "util/configparser.c" /* yacc.c:1652 */ +#line 5204 "util/configparser.c" /* yacc.c:1652 */ break; case 437: -#line 2295 "./util/configparser.y" /* yacc.c:1652 */ +#line 2303 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5205,11 +5213,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5209 "util/configparser.c" /* yacc.c:1652 */ +#line 5217 "util/configparser.c" /* yacc.c:1652 */ break; case 438: -#line 2305 "./util/configparser.y" /* yacc.c:1652 */ +#line 2313 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5218,31 +5226,31 @@ yyparse (void) free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5222 "util/configparser.c" /* yacc.c:1652 */ +#line 5230 "util/configparser.c" /* yacc.c:1652 */ break; case 439: -#line 2315 "./util/configparser.y" /* yacc.c:1652 */ +#line 2323 "./util/configparser.y" /* yacc.c:1652 */ { 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 5232 "util/configparser.c" /* yacc.c:1652 */ +#line 5240 "util/configparser.c" /* yacc.c:1652 */ break; case 440: -#line 2322 "./util/configparser.y" /* yacc.c:1652 */ +#line 2330 "./util/configparser.y" /* yacc.c:1652 */ { 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 5242 "util/configparser.c" /* yacc.c:1652 */ +#line 5250 "util/configparser.c" /* yacc.c:1652 */ break; case 441: -#line 2329 "./util/configparser.y" /* yacc.c:1652 */ +#line 2337 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5250,11 +5258,11 @@ yyparse (void) else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5254 "util/configparser.c" /* yacc.c:1652 */ +#line 5262 "util/configparser.c" /* yacc.c:1652 */ break; case 442: -#line 2338 "./util/configparser.y" /* yacc.c:1652 */ +#line 2346 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5262,11 +5270,11 @@ yyparse (void) else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5266 "util/configparser.c" /* yacc.c:1652 */ +#line 5274 "util/configparser.c" /* yacc.c:1652 */ break; case 443: -#line 2347 "./util/configparser.y" /* yacc.c:1652 */ +#line 2355 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5275,11 +5283,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5279 "util/configparser.c" /* yacc.c:1652 */ +#line 5287 "util/configparser.c" /* yacc.c:1652 */ break; case 444: -#line 2357 "./util/configparser.y" /* yacc.c:1652 */ +#line 2365 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5288,52 +5296,52 @@ yyparse (void) free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5292 "util/configparser.c" /* yacc.c:1652 */ +#line 5300 "util/configparser.c" /* yacc.c:1652 */ break; case 445: -#line 2367 "./util/configparser.y" /* yacc.c:1652 */ +#line 2375 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5302 "util/configparser.c" /* yacc.c:1652 */ +#line 5310 "util/configparser.c" /* yacc.c:1652 */ break; case 446: -#line 2374 "./util/configparser.y" /* yacc.c:1652 */ +#line 2382 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5312 "util/configparser.c" /* yacc.c:1652 */ +#line 5320 "util/configparser.c" /* yacc.c:1652 */ break; case 447: -#line 2381 "./util/configparser.y" /* yacc.c:1652 */ +#line 2389 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5322 "util/configparser.c" /* yacc.c:1652 */ +#line 5330 "util/configparser.c" /* yacc.c:1652 */ break; case 448: -#line 2388 "./util/configparser.y" /* yacc.c:1652 */ +#line 2396 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5333 "util/configparser.c" /* yacc.c:1652 */ +#line 5341 "util/configparser.c" /* yacc.c:1652 */ break; case 449: -#line 2396 "./util/configparser.y" /* yacc.c:1652 */ +#line 2404 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5342,11 +5350,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5346 "util/configparser.c" /* yacc.c:1652 */ +#line 5354 "util/configparser.c" /* yacc.c:1652 */ break; case 450: -#line 2406 "./util/configparser.y" /* yacc.c:1652 */ +#line 2414 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5355,11 +5363,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5359 "util/configparser.c" /* yacc.c:1652 */ +#line 5367 "util/configparser.c" /* yacc.c:1652 */ break; case 451: -#line 2416 "./util/configparser.y" /* yacc.c:1652 */ +#line 2424 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5368,11 +5376,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5372 "util/configparser.c" /* yacc.c:1652 */ +#line 5380 "util/configparser.c" /* yacc.c:1652 */ break; case 452: -#line 2426 "./util/configparser.y" /* yacc.c:1652 */ +#line 2434 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5381,11 +5389,11 @@ yyparse (void) free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5385 "util/configparser.c" /* yacc.c:1652 */ +#line 5393 "util/configparser.c" /* yacc.c:1652 */ break; case 453: -#line 2436 "./util/configparser.y" /* yacc.c:1652 */ +#line 2444 "./util/configparser.y" /* yacc.c:1652 */ { 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 && @@ -5409,6 +5417,13 @@ yyparse (void) local_zones_nodefault, (yyvsp[-1].str))) fatal_exit("out of memory adding local-zone"); free((yyvsp[0].str)); +#ifdef USE_IPSET + } else if(strcmp((yyvsp[0].str), "ipset")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_ipset, (yyvsp[-1].str))) + fatal_exit("out of memory adding local-zone"); + free((yyvsp[0].str)); +#endif } else { if(!cfg_str2list_insert( &cfg_parser->cfg->views->local_zones, @@ -5416,11 +5431,11 @@ yyparse (void) fatal_exit("out of memory adding local-zone"); } } -#line 5420 "util/configparser.c" /* yacc.c:1652 */ +#line 5435 "util/configparser.c" /* yacc.c:1652 */ break; case 454: -#line 2468 "./util/configparser.y" /* yacc.c:1652 */ +#line 2483 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5429,33 +5444,33 @@ yyparse (void) fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5433 "util/configparser.c" /* yacc.c:1652 */ +#line 5448 "util/configparser.c" /* yacc.c:1652 */ break; case 455: -#line 2478 "./util/configparser.y" /* yacc.c:1652 */ +#line 2493 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5444 "util/configparser.c" /* yacc.c:1652 */ +#line 5459 "util/configparser.c" /* yacc.c:1652 */ break; case 456: -#line 2486 "./util/configparser.y" /* yacc.c:1652 */ +#line 2501 "./util/configparser.y" /* yacc.c:1652 */ { 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"); } } -#line 5455 "util/configparser.c" /* yacc.c:1652 */ +#line 5470 "util/configparser.c" /* yacc.c:1652 */ break; case 457: -#line 2494 "./util/configparser.y" /* yacc.c:1652 */ +#line 2509 "./util/configparser.y" /* yacc.c:1652 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5469,11 +5484,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 5473 "util/configparser.c" /* yacc.c:1652 */ +#line 5488 "util/configparser.c" /* yacc.c:1652 */ break; case 458: -#line 2509 "./util/configparser.y" /* yacc.c:1652 */ +#line 2524 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5481,19 +5496,19 @@ yyparse (void) else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5485 "util/configparser.c" /* yacc.c:1652 */ +#line 5500 "util/configparser.c" /* yacc.c:1652 */ break; case 459: -#line 2518 "./util/configparser.y" /* yacc.c:1652 */ +#line 2533 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 5493 "util/configparser.c" /* yacc.c:1652 */ +#line 5508 "util/configparser.c" /* yacc.c:1652 */ break; case 470: -#line 2529 "./util/configparser.y" /* yacc.c:1652 */ +#line 2544 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5502,11 +5517,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5506 "util/configparser.c" /* yacc.c:1652 */ +#line 5521 "util/configparser.c" /* yacc.c:1652 */ break; case 471: -#line 2539 "./util/configparser.y" /* yacc.c:1652 */ +#line 2554 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5514,79 +5529,79 @@ yyparse (void) else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5518 "util/configparser.c" /* yacc.c:1652 */ +#line 5533 "util/configparser.c" /* yacc.c:1652 */ break; case 472: -#line 2548 "./util/configparser.y" /* yacc.c:1652 */ +#line 2563 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5528 "util/configparser.c" /* yacc.c:1652 */ +#line 5543 "util/configparser.c" /* yacc.c:1652 */ break; case 473: -#line 2555 "./util/configparser.y" /* yacc.c:1652 */ +#line 2570 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5538 "util/configparser.c" /* yacc.c:1652 */ +#line 5553 "util/configparser.c" /* yacc.c:1652 */ break; case 474: -#line 2562 "./util/configparser.y" /* yacc.c:1652 */ +#line 2577 "./util/configparser.y" /* yacc.c:1652 */ { 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 5548 "util/configparser.c" /* yacc.c:1652 */ +#line 5563 "util/configparser.c" /* yacc.c:1652 */ break; case 475: -#line 2569 "./util/configparser.y" /* yacc.c:1652 */ +#line 2584 "./util/configparser.y" /* yacc.c:1652 */ { 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 5558 "util/configparser.c" /* yacc.c:1652 */ +#line 5573 "util/configparser.c" /* yacc.c:1652 */ break; case 476: -#line 2576 "./util/configparser.y" /* yacc.c:1652 */ +#line 2591 "./util/configparser.y" /* yacc.c:1652 */ { 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 5568 "util/configparser.c" /* yacc.c:1652 */ +#line 5583 "util/configparser.c" /* yacc.c:1652 */ break; case 477: -#line 2583 "./util/configparser.y" /* yacc.c:1652 */ +#line 2598 "./util/configparser.y" /* yacc.c:1652 */ { 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 5578 "util/configparser.c" /* yacc.c:1652 */ +#line 5593 "util/configparser.c" /* yacc.c:1652 */ break; case 478: -#line 2590 "./util/configparser.y" /* yacc.c:1652 */ +#line 2605 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5586 "util/configparser.c" /* yacc.c:1652 */ +#line 5601 "util/configparser.c" /* yacc.c:1652 */ break; case 493: -#line 2607 "./util/configparser.y" /* yacc.c:1652 */ +#line 2622 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5594,21 +5609,21 @@ yyparse (void) else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5598 "util/configparser.c" /* yacc.c:1652 */ +#line 5613 "util/configparser.c" /* yacc.c:1652 */ break; case 494: -#line 2616 "./util/configparser.y" /* yacc.c:1652 */ +#line 2631 "./util/configparser.y" /* yacc.c:1652 */ { 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 5608 "util/configparser.c" /* yacc.c:1652 */ +#line 5623 "util/configparser.c" /* yacc.c:1652 */ break; case 495: -#line 2623 "./util/configparser.y" /* yacc.c:1652 */ +#line 2638 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5616,11 +5631,11 @@ yyparse (void) else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5620 "util/configparser.c" /* yacc.c:1652 */ +#line 5635 "util/configparser.c" /* yacc.c:1652 */ break; case 496: -#line 2632 "./util/configparser.y" /* yacc.c:1652 */ +#line 2647 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5628,31 +5643,31 @@ yyparse (void) else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5632 "util/configparser.c" /* yacc.c:1652 */ +#line 5647 "util/configparser.c" /* yacc.c:1652 */ break; case 497: -#line 2641 "./util/configparser.y" /* yacc.c:1652 */ +#line 2656 "./util/configparser.y" /* yacc.c:1652 */ { 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 5642 "util/configparser.c" /* yacc.c:1652 */ +#line 5657 "util/configparser.c" /* yacc.c:1652 */ break; case 498: -#line 2648 "./util/configparser.y" /* yacc.c:1652 */ +#line 2663 "./util/configparser.y" /* yacc.c:1652 */ { 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 5652 "util/configparser.c" /* yacc.c:1652 */ +#line 5667 "util/configparser.c" /* yacc.c:1652 */ break; case 499: -#line 2655 "./util/configparser.y" /* yacc.c:1652 */ +#line 2670 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5661,11 +5676,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5665 "util/configparser.c" /* yacc.c:1652 */ +#line 5680 "util/configparser.c" /* yacc.c:1652 */ break; case 500: -#line 2665 "./util/configparser.y" /* yacc.c:1652 */ +#line 2680 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5674,11 +5689,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5678 "util/configparser.c" /* yacc.c:1652 */ +#line 5693 "util/configparser.c" /* yacc.c:1652 */ break; case 501: -#line 2675 "./util/configparser.y" /* yacc.c:1652 */ +#line 2690 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5687,11 +5702,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5691 "util/configparser.c" /* yacc.c:1652 */ +#line 5706 "util/configparser.c" /* yacc.c:1652 */ break; case 502: -#line 2685 "./util/configparser.y" /* yacc.c:1652 */ +#line 2700 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5700,11 +5715,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5704 "util/configparser.c" /* yacc.c:1652 */ +#line 5719 "util/configparser.c" /* yacc.c:1652 */ break; case 503: -#line 2695 "./util/configparser.y" /* yacc.c:1652 */ +#line 2710 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5713,11 +5728,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5717 "util/configparser.c" /* yacc.c:1652 */ +#line 5732 "util/configparser.c" /* yacc.c:1652 */ break; case 504: -#line 2705 "./util/configparser.y" /* yacc.c:1652 */ +#line 2720 "./util/configparser.y" /* yacc.c:1652 */ { 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) @@ -5726,29 +5741,29 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5730 "util/configparser.c" /* yacc.c:1652 */ +#line 5745 "util/configparser.c" /* yacc.c:1652 */ break; case 505: -#line 2715 "./util/configparser.y" /* yacc.c:1652 */ +#line 2730 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(python:)\n")); } -#line 5738 "util/configparser.c" /* yacc.c:1652 */ +#line 5753 "util/configparser.c" /* yacc.c:1652 */ break; case 509: -#line 2724 "./util/configparser.y" /* yacc.c:1652 */ +#line 2739 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = (yyvsp[0].str); } -#line 5748 "util/configparser.c" /* yacc.c:1652 */ +#line 5763 "util/configparser.c" /* yacc.c:1652 */ break; case 510: -#line 2730 "./util/configparser.y" /* yacc.c:1652 */ +#line 2745 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5757,21 +5772,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5761 "util/configparser.c" /* yacc.c:1652 */ +#line 5776 "util/configparser.c" /* yacc.c:1652 */ break; case 511: -#line 2740 "./util/configparser.y" /* yacc.c:1652 */ +#line 2755 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 5771 "util/configparser.c" /* yacc.c:1652 */ +#line 5786 "util/configparser.c" /* yacc.c:1652 */ break; case 512: -#line 2747 "./util/configparser.y" /* yacc.c:1652 */ +#line 2762 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5779,30 +5794,30 @@ yyparse (void) (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 5783 "util/configparser.c" /* yacc.c:1652 */ +#line 5798 "util/configparser.c" /* yacc.c:1652 */ break; case 513: -#line 2756 "./util/configparser.y" /* yacc.c:1652 */ +#line 2771 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5794 "util/configparser.c" /* yacc.c:1652 */ +#line 5809 "util/configparser.c" /* yacc.c:1652 */ break; case 514: -#line 2764 "./util/configparser.y" /* yacc.c:1652 */ +#line 2779 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 5802 "util/configparser.c" /* yacc.c:1652 */ +#line 5817 "util/configparser.c" /* yacc.c:1652 */ break; case 527: -#line 2780 "./util/configparser.y" /* yacc.c:1652 */ +#line 2795 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5810,11 +5825,11 @@ yyparse (void) else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5814 "util/configparser.c" /* yacc.c:1652 */ +#line 5829 "util/configparser.c" /* yacc.c:1652 */ break; case 528: -#line 2790 "./util/configparser.y" /* yacc.c:1652 */ +#line 2805 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5822,21 +5837,21 @@ yyparse (void) else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5826 "util/configparser.c" /* yacc.c:1652 */ +#line 5841 "util/configparser.c" /* yacc.c:1652 */ break; case 529: -#line 2799 "./util/configparser.y" /* yacc.c:1652 */ +#line 2814 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 5836 "util/configparser.c" /* yacc.c:1652 */ +#line 5851 "util/configparser.c" /* yacc.c:1652 */ break; case 530: -#line 2806 "./util/configparser.y" /* yacc.c:1652 */ +#line 2821 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -5844,21 +5859,21 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 5848 "util/configparser.c" /* yacc.c:1652 */ +#line 5863 "util/configparser.c" /* yacc.c:1652 */ break; case 531: -#line 2815 "./util/configparser.y" /* yacc.c:1652 */ +#line 2830 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 5858 "util/configparser.c" /* yacc.c:1652 */ +#line 5873 "util/configparser.c" /* yacc.c:1652 */ break; case 532: -#line 2822 "./util/configparser.y" /* yacc.c:1652 */ +#line 2837 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -5866,22 +5881,22 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 5870 "util/configparser.c" /* yacc.c:1652 */ +#line 5885 "util/configparser.c" /* yacc.c:1652 */ break; case 533: -#line 2831 "./util/configparser.y" /* yacc.c:1652 */ +#line 2846 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5881 "util/configparser.c" /* yacc.c:1652 */ +#line 5896 "util/configparser.c" /* yacc.c:1652 */ break; case 534: -#line 2839 "./util/configparser.y" /* yacc.c:1652 */ +#line 2854 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5893,22 +5908,22 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5897 "util/configparser.c" /* yacc.c:1652 */ +#line 5912 "util/configparser.c" /* yacc.c:1652 */ break; case 535: -#line 2852 "./util/configparser.y" /* yacc.c:1652 */ +#line 2867 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5908 "util/configparser.c" /* yacc.c:1652 */ +#line 5923 "util/configparser.c" /* yacc.c:1652 */ break; case 536: -#line 2860 "./util/configparser.y" /* yacc.c:1652 */ +#line 2875 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5920,19 +5935,19 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5924 "util/configparser.c" /* yacc.c:1652 */ +#line 5939 "util/configparser.c" /* yacc.c:1652 */ break; case 537: -#line 2873 "./util/configparser.y" /* yacc.c:1652 */ +#line 2888 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 5932 "util/configparser.c" /* yacc.c:1652 */ +#line 5947 "util/configparser.c" /* yacc.c:1652 */ break; case 545: -#line 2883 "./util/configparser.y" /* yacc.c:1652 */ +#line 2898 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -5946,11 +5961,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5950 "util/configparser.c" /* yacc.c:1652 */ +#line 5965 "util/configparser.c" /* yacc.c:1652 */ break; case 546: -#line 2898 "./util/configparser.y" /* yacc.c:1652 */ +#line 2913 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -5964,11 +5979,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5968 "util/configparser.c" /* yacc.c:1652 */ +#line 5983 "util/configparser.c" /* yacc.c:1652 */ break; case 547: -#line 2913 "./util/configparser.y" /* yacc.c:1652 */ +#line 2928 "./util/configparser.y" /* yacc.c:1652 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -5979,11 +5994,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5983 "util/configparser.c" /* yacc.c:1652 */ +#line 5998 "util/configparser.c" /* yacc.c:1652 */ break; case 548: -#line 2925 "./util/configparser.y" /* yacc.c:1652 */ +#line 2940 "./util/configparser.y" /* yacc.c:1652 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -5997,11 +6012,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 6001 "util/configparser.c" /* yacc.c:1652 */ +#line 6016 "util/configparser.c" /* yacc.c:1652 */ break; case 549: -#line 2940 "./util/configparser.y" /* yacc.c:1652 */ +#line 2955 "./util/configparser.y" /* yacc.c:1652 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6013,11 +6028,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 6017 "util/configparser.c" /* yacc.c:1652 */ +#line 6032 "util/configparser.c" /* yacc.c:1652 */ break; case 550: -#line 2953 "./util/configparser.y" /* yacc.c:1652 */ +#line 2968 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6027,19 +6042,19 @@ yyparse (void) fatal_exit("out of memory adding tcp connection limit"); } } -#line 6031 "util/configparser.c" /* yacc.c:1652 */ +#line 6046 "util/configparser.c" /* yacc.c:1652 */ break; case 551: -#line 2964 "./util/configparser.y" /* yacc.c:1652 */ +#line 2979 "./util/configparser.y" /* yacc.c:1652 */ { OUTYY(("\nP(ipset:)\n")); } -#line 6039 "util/configparser.c" /* yacc.c:1652 */ +#line 6054 "util/configparser.c" /* yacc.c:1652 */ break; case 556: -#line 2973 "./util/configparser.y" /* yacc.c:1652 */ +#line 2988 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6053,11 +6068,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 6057 "util/configparser.c" /* yacc.c:1652 */ +#line 6072 "util/configparser.c" /* yacc.c:1652 */ break; case 557: -#line 2988 "./util/configparser.y" /* yacc.c:1652 */ +#line 3003 "./util/configparser.y" /* yacc.c:1652 */ { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6071,11 +6086,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 6075 "util/configparser.c" /* yacc.c:1652 */ +#line 6090 "util/configparser.c" /* yacc.c:1652 */ break; -#line 6079 "util/configparser.c" /* yacc.c:1652 */ +#line 6094 "util/configparser.c" /* yacc.c:1652 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6306,7 +6321,7 @@ yyparse (void) #endif return yyresult; } -#line 3002 "./util/configparser.y" /* yacc.c:1918 */ +#line 3017 "./util/configparser.y" /* yacc.c:1918 */ /* parse helper routines could be here */ @@ -6327,3 +6342,4 @@ validate_respip_action(const char* action) } } + diff --git a/util/configparser.y b/util/configparser.y index cf0740c39..91ea1e8c7 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -175,7 +175,7 @@ toplevelvar: serverstart contents_server | stubstart contents_stub | forwardstart contents_forward | pythonstart contents_py | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | dnscstart contents_dnsc | cachedbstart contents_cachedb | - ipsetstart contents_ipset | authstart contents_auth + ipsetstart contents_ipset | authstart contents_auth ; /* server: declaration */ @@ -1785,13 +1785,14 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG && strcmp($3, "always_nxdomain")!=0 && strcmp($3, "noview")!=0 && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0 - && strcmp($3, "inform_redirect") != 0) { + && strcmp($3, "inform_redirect") != 0 + && strcmp($3, "ipset") != 0) { yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " "inform_redirect, always_transparent, " "always_refuse, always_nxdomain, noview " - "or nodefault"); + ", nodefault or ipset"); free($2); free($3); } else if(strcmp($3, "nodefault")==0) { @@ -1799,6 +1800,13 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG local_zones_nodefault, $2)) fatal_exit("out of memory adding local-zone"); free($3); +#ifdef USE_IPSET + } else if(strcmp($3, "ipset")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_zones_ipset, $2)) + fatal_exit("out of memory adding local-zone"); + free($3); +#endif } else { if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, $2, $3)) @@ -2456,6 +2464,13 @@ view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG local_zones_nodefault, $2)) fatal_exit("out of memory adding local-zone"); free($3); +#ifdef USE_IPSET + } else if(strcmp($3, "ipset")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_ipset, $2)) + fatal_exit("out of memory adding local-zone"); + free($3); +#endif } else { if(!cfg_str2list_insert( &cfg_parser->cfg->views->local_zones, @@ -3019,3 +3034,4 @@ validate_respip_action(const char* action) } } + From 46099259be67325e6b080edebe19f11740b2105a Mon Sep 17 00:00:00 2001 From: Kevin Chou Date: Sat, 4 May 2019 12:52:18 +0800 Subject: [PATCH 07/22] performance improvement --- ipset/ipset.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/ipset/ipset.c b/ipset/ipset.c index 2e2c374aa..3ba459a6d 100755 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -127,19 +127,13 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru } if (dname[dlen - 1] == '.') { dlen--; - dname[dlen] = 0; } - verbose(VERB_QUERY, "ipset domain name %d %s", dlen, dname); - for (p = env->cfg->local_zones_ipset; p; p = p->next) { plen = strlen(p->str); - verbose(VERB_QUERY, "ipset local_zones_ipset name %d %s", plen, p->str); - if (dlen >= plen) { s = dname + (dlen - plen); - verbose(VERB_QUERY, "ipset start name %s", s); if (strncasecmp(p->str, s, plen) == 0) { d = (struct packed_rrset_data*)rrset->entry.data; @@ -151,18 +145,18 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru if (rr_len - 2 >= rd_len) { ret = add_to_ipset(mnl, setname, rr_data + 2, af); if (ret < 0) { - return ret; + log_err("ipset: could not add %s into %s", dname, setname); } } } - + break; } } } - } - } + } + } - return 0; + return 0; } int ipset_init(struct module_env* env, int id) { From 3280e76527750393a1cb42d490b437c5f40d54f5 Mon Sep 17 00:00:00 2001 From: Kevin Chou Date: Sat, 4 May 2019 17:39:27 +0800 Subject: [PATCH 08/22] bugfix --- ipset/ipset.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ipset/ipset.c b/ipset/ipset.c index 3ba459a6d..5d3d8ed34 100755 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -146,6 +146,7 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru ret = add_to_ipset(mnl, setname, rr_data + 2, af); if (ret < 0) { log_err("ipset: could not add %s into %s", dname, setname); + return ret; } } } From 5f4c9b0dfe401228c36de53f7697a43e4db31ed2 Mon Sep 17 00:00:00 2001 From: Kevin Chou Date: Sun, 5 May 2019 10:47:00 +0800 Subject: [PATCH 09/22] rollback the code --- ipset/ipset.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipset/ipset.c b/ipset/ipset.c index 5d3d8ed34..55ef05c3d 100755 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -146,7 +146,7 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru ret = add_to_ipset(mnl, setname, rr_data + 2, af); if (ret < 0) { log_err("ipset: could not add %s into %s", dname, setname); - return ret; + break; } } } From 19c2ece7635401536a75c32d2a0f8f3fffc14053 Mon Sep 17 00:00:00 2001 From: Kevin Chou Date: Sat, 18 May 2019 13:48:49 +0800 Subject: [PATCH 10/22] fix segmentation fault --- ipset/ipset.c | 123 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 73 insertions(+), 50 deletions(-) diff --git a/ipset/ipset.c b/ipset/ipset.c index 55ef05c3d..fb16c06a3 100755 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -33,6 +33,23 @@ static int error_response(struct module_qstate* qstate, int id, int rcode) { return 0; } +static struct mnl_socket * open_mnl_socket() { + struct mnl_socket *mnl; + + mnl = mnl_socket_open(NETLINK_NETFILTER); + if (!mnl) { + log_err("ipset: could not open netfilter."); + return NULL; + } + + if (mnl_socket_bind(mnl, 0, MNL_SOCKET_AUTOPID) < 0) { + mnl_socket_close(mnl); + log_err("ipset: could not bind netfilter."); + return NULL; + } + return mnl; +} + static int add_to_ipset(struct mnl_socket *mnl, const char *setname, const void *ipaddr, int af) { struct nlmsghdr *nlh; struct nfgenmsg *nfg; @@ -98,8 +115,14 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru uint8_t *rr_data; mnl = (struct mnl_socket *)ie->mnl; - if (mnl == NULL) { - return -1; + if (!mnl) { + // retry to create mnl socket + mnl = open_mnl_socket(); + if (!mnl) { + return -1; + } + + ie->mnl = mnl; } for (i = 0; i < return_msg->rep->rrset_count; ++i) { @@ -119,7 +142,7 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru } } - if (setname != NULL) { + if (setname) { dlen = sldns_wire2str_dname_buf(rrset->rk.dname, rrset->rk.dname_len, dname, BUFF_LEN); if (dlen == 0) { log_err("bad domain name"); @@ -146,6 +169,9 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru ret = add_to_ipset(mnl, setname, rr_data + 2, af); if (ret < 0) { log_err("ipset: could not add %s into %s", dname, setname); + + mnl_socket_close(mnl); + ie->mnl = NULL; break; } } @@ -154,58 +180,48 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru } } } - } + } } return 0; } int ipset_init(struct module_env* env, int id) { - struct mnl_socket *mnl; + struct ipset_env *ipset_env; - struct ipset_env *ipset_env = (struct ipset_env *)calloc(1, - sizeof(struct ipset_env)); - if(!ipset_env) { + ipset_env = (struct ipset_env *)calloc(1, sizeof(struct ipset_env)); + if (!ipset_env) { log_err("malloc failure"); return 0; } - env->modinfo[id] = (void*)ipset_env; + + env->modinfo[id] = (void *)ipset_env; + + ipset_env->mnl == NULL; ipset_env->name_v4 = env->cfg->ipset_name_v4; ipset_env->name_v6 = env->cfg->ipset_name_v6; - ipset_env->v4_enabled = (ipset_env->name_v4 == NULL) || (strlen(ipset_env->name_v4) == 0) ? 0 : 1; - ipset_env->v6_enabled = (ipset_env->name_v6 == NULL) || (strlen(ipset_env->name_v6) == 0) ? 0 : 1; + ipset_env->v4_enabled = !ipset_env->name_v4 || (strlen(ipset_env->name_v4) == 0) ? 0 : 1; + ipset_env->v6_enabled = !ipset_env->name_v6 || (strlen(ipset_env->name_v6) == 0) ? 0 : 1; if ((ipset_env->v4_enabled < 1) && (ipset_env->v6_enabled < 1)) { log_err("ipset: set name no configuration?"); return 0; } - mnl = mnl_socket_open(NETLINK_NETFILTER); - if (mnl <= 0) { - log_err("ipset: could not open netfilter."); - return 0; - } - - if (mnl_socket_bind(mnl, 0, MNL_SOCKET_AUTOPID) < 0) { - mnl_socket_close(mnl); - log_err("ipset: could not bind netfilter."); - return 0; - } - - ipset_env->mnl = mnl; - return 1; } void ipset_deinit(struct module_env *env, int id) { struct mnl_socket *mnl; + struct ipset_env *ipset_env; - struct ipset_env* ipset_env; - if(!env || !env->modinfo[id]) + if (!env || !env->modinfo[id]) { return; - ipset_env = (struct ipset_env*)env->modinfo[id]; + } + + ipset_env = (struct ipset_env *)env->modinfo[id]; mnl = (struct mnl_socket *)ipset_env->mnl; if (mnl) { @@ -218,11 +234,13 @@ void ipset_deinit(struct module_env *env, int id) { } static int ipset_new(struct module_qstate* qstate, int id) { - struct ipset_qstate* iq = (struct ipset_qstate*)regional_alloc( + struct ipset_qstate *iq = (struct ipset_qstate *)regional_alloc( qstate->region, sizeof(struct ipset_qstate)); qstate->minfo[id] = iq; - if(!iq) + if (!iq) { return 0; + } + memset(iq, 0, sizeof(*iq)); /* initialise it */ /* TODO */ @@ -236,42 +254,47 @@ void ipset_operate(struct module_qstate *qstate, enum module_ev event, int id, struct ipset_qstate *iq = (struct ipset_qstate *)qstate->minfo[id]; verbose(VERB_QUERY, "ipset[module %d] operate: extstate:%s event:%s", id, strextstate(qstate->ext_state[id]), strmodulevent(event)); - if(iq) log_query_info(VERB_QUERY, "ipset operate: query", - &qstate->qinfo); + if (iq) { + log_query_info(VERB_QUERY, "ipset operate: query", &qstate->qinfo); + } /* perform ipset state machine */ - if((event == module_event_new || event == module_event_pass) && - iq == NULL) { - if(!ipset_new(qstate, id)) { + if ((event == module_event_new || event == module_event_pass) && !iq) { + if (!ipset_new(qstate, id)) { (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); return; } iq = (struct ipset_qstate*)qstate->minfo[id]; } - if(iq && (event == module_event_pass || event == module_event_new)) { + if (iq && (event == module_event_pass || event == module_event_new)) { qstate->ext_state[id] = module_wait_module; return; } - if(iq && (event == module_event_moddone)) { - ipset_update(qstate->env, qstate->return_msg, ie); + if (iq && (event == module_event_moddone)) { + if (qstate->return_msg && qstate->return_msg->rep) { + ipset_update(qstate->env, qstate->return_msg, ie); + } qstate->ext_state[id] = module_finished; return; } - if(iq && outbound) { + + if (iq && outbound) { /* ipset does not need to process responses at this time * ignore it. ipset_process_response(qstate, iq, ie, id, outbound, event); */ return; } - if(event == module_event_error) { + + if (event == module_event_error) { verbose(VERB_ALGO, "got called with event error, giving up"); (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); return; } - if(!iq && (event == module_event_moddone)) { + + if (!iq && (event == module_event_moddone)) { /* during priming, module done but we never started */ qstate->ext_state[id] = module_finished; return; @@ -281,25 +304,26 @@ void ipset_operate(struct module_qstate *qstate, enum module_ev event, int id, (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); } -void ipset_inform_super(struct module_qstate* ATTR_UNUSED(qstate), - int ATTR_UNUSED(id), struct module_qstate* ATTR_UNUSED(super)) { +void ipset_inform_super(struct module_qstate *ATTR_UNUSED(qstate), + int ATTR_UNUSED(id), struct module_qstate *ATTR_UNUSED(super)) { /* ipset does not use subordinate requests at this time */ verbose(VERB_ALGO, "ipset inform_super was called"); } -void ipset_clear(struct module_qstate* qstate, int id) { - struct cachedb_qstate* iq; - if(!qstate) +void ipset_clear(struct module_qstate *qstate, int id) { + struct cachedb_qstate *iq; + if (!qstate) { return; - iq = (struct cachedb_qstate*)qstate->minfo[id]; - if(iq) { + } + iq = (struct cachedb_qstate *)qstate->minfo[id]; + if (iq) { /* free contents of iq */ /* TODO */ } qstate->minfo[id] = NULL; } -size_t ipset_get_mem(struct module_env* env, int id) { +size_t ipset_get_mem(struct module_env *env, int id) { struct ipset_env *ie = (struct ipset_env *)env->modinfo[id]; if (!ie) { return 0; @@ -320,4 +344,3 @@ struct module_func_block * ipset_get_funcblock(void) { return &ipset_block; } - From 3499d3c6473a9330c0f31bf587e8d189057ebb58 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 17 Jun 2019 11:42:19 +0200 Subject: [PATCH 11/22] - Master contains version 1.9.3 in development. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 6 +++++- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/configure b/configure index 21721689d..cb1e55865 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.9.2. +# Generated by GNU Autoconf 2.69 for unbound 1.9.3. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.9.2' -PACKAGE_STRING='unbound 1.9.2' +PACKAGE_VERSION='1.9.3' +PACKAGE_STRING='unbound 1.9.3' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl' PACKAGE_URL='' @@ -1440,7 +1440,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.9.2 to adapt to many kinds of systems. +\`configure' configures unbound 1.9.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1505,7 +1505,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.9.2:";; + short | recursive ) echo "Configuration of unbound 1.9.3:";; esac cat <<\_ACEOF @@ -1722,7 +1722,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.9.2 +unbound configure 1.9.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2431,7 +2431,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.9.2, which was +It was created by unbound $as_me 1.9.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2783,11 +2783,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=9 -UNBOUND_VERSION_MICRO=2 +UNBOUND_VERSION_MICRO=3 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=2 +LIBUNBOUND_REVISION=3 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2857,6 +2857,7 @@ LIBUNBOUND_AGE=1 # 1.9.0 had 9:0:1 # add ub_ctx_set_tls # 1.9.1 had 9:1:1 # 1.9.2 had 9:2:1 +# 1.9.3 had 9:3:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21204,7 +21205,7 @@ _ACEOF -version=1.9.2 +version=1.9.3 date=`date +'%b %e, %Y'` @@ -21723,7 +21724,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.9.2, which was +This file was extended by unbound $as_me 1.9.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21789,7 +21790,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.9.2 +unbound config.status 1.9.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index fc9448f51..884a4ac57 100644 --- a/configure.ac +++ b/configure.ac @@ -11,14 +11,14 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[9]) -m4_define([VERSION_MICRO],[2]) +m4_define([VERSION_MICRO],[3]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=2 +LIBUNBOUND_REVISION=3 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -88,6 +88,7 @@ LIBUNBOUND_AGE=1 # 1.9.0 had 9:0:1 # add ub_ctx_set_tls # 1.9.1 had 9:1:1 # 1.9.2 had 9:2:1 +# 1.9.3 had 9:3:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 420f6ab7c..def2dbfca 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,10 @@ +17 June 2019: Wouter + - Master contains version 1.9.3 in development. + 12 June 2019: Wouter - Fix another spoolbuf storage code point, in prefetch. - - 1.9.2rc3 release candidate tag. + - 1.9.2rc3 release candidate tag. Which became the 1.9.2 release + on 17 June 2019. 11 June 2019: Wouter - Fix that fixes the Fix that spoolbuf is not used to store tcp From 1ec96d8f07247bccec40ae84dc875cf74dcd5f96 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 17 Jun 2019 12:13:12 +0200 Subject: [PATCH 12/22] - Fix #39: In libunbound, leftover logfile is close()d unpredictably. --- doc/Changelog | 1 + libunbound/libunbound.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index def2dbfca..3215249c1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 17 June 2019: Wouter - Master contains version 1.9.3 in development. + - Fix #39: In libunbound, leftover logfile is close()d unpredictably. 12 June 2019: Wouter - Fix another spoolbuf storage code point, in prefetch. diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index 5f5a8a102..9dd7d6dbe 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -328,6 +328,8 @@ ub_ctx_delete(struct ub_ctx* ctx) ub_randfree(ctx->seed_rnd); alloc_clear(&ctx->superalloc); traverse_postorder(&ctx->queries, delq, NULL); + if(ctx->logfile_override) + log_file(NULL); free(ctx); #ifdef USE_WINSOCK WSACleanup(); From bf2307ca971f31db6820296b95a74fe1fc0481c5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 17 Jun 2019 14:15:36 +0200 Subject: [PATCH 13/22] - Fix for #24: Fix abort due to scan of auth zone masters using old address from previous scan. --- doc/Changelog | 2 ++ services/authzone.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 3215249c1..6d67cc166 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 17 June 2019: Wouter - Master contains version 1.9.3 in development. - Fix #39: In libunbound, leftover logfile is close()d unpredictably. + - Fix for #24: Fix abort due to scan of auth zone masters using old + address from previous scan. 12 June 2019: Wouter - Fix another spoolbuf storage code point, in prefetch. diff --git a/services/authzone.c b/services/authzone.c index 1426f423a..312abad8b 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -3698,6 +3698,7 @@ static void xfr_transfer_start_lookups(struct auth_xfer* xfr) { /* delete all the looked up addresses in the list */ + xfr->task_transfer->scan_addr = NULL; xfr_masterlist_free_addrs(xfr->task_transfer->masters); /* start lookup at the first master */ @@ -3728,6 +3729,7 @@ static void xfr_probe_start_lookups(struct auth_xfer* xfr) { /* delete all the looked up addresses in the list */ + xfr->task_probe->scan_addr = NULL; xfr_masterlist_free_addrs(xfr->task_probe->masters); /* start lookup at the first master */ From b16c872a60b3810b2233b83533187fc884e2e02a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 18 Jun 2019 15:38:37 +0200 Subject: [PATCH 14/22] - PR #28: IPSet module, by Kevin Chou. Created a module to support the ipset that could add the domain's ip to a list easily. Needs libmnl, and --enable-ipset and config it, doc/README.ipset.md. - Fix to omit RRSIGs from addition to the ipset. --- doc/Changelog | 6 +++++ doc/README.ipset.md | 65 +++++++++++++++++++++++++++++++++++++++++++++ ipset/ipset.c | 3 ++- 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 doc/README.ipset.md diff --git a/doc/Changelog b/doc/Changelog index 6d67cc166..10c88224e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +18 June 2019: Wouter + - PR #28: IPSet module, by Kevin Chou. Created a module to support + the ipset that could add the domain's ip to a list easily. + Needs libmnl, and --enable-ipset and config it, doc/README.ipset.md. + - Fix to omit RRSIGs from addition to the ipset. + 17 June 2019: Wouter - Master contains version 1.9.3 in development. - Fix #39: In libunbound, leftover logfile is close()d unpredictably. diff --git a/doc/README.ipset.md b/doc/README.ipset.md new file mode 100644 index 000000000..4bd993e67 --- /dev/null +++ b/doc/README.ipset.md @@ -0,0 +1,65 @@ +## Created a module to support the ipset that could add the domain's ip to a list easily. + +### Purposes: +* In my case, I can't access the facebook, twitter, youtube and thousands web site for some reason. VPN is a solution. But the internet too slow whether all traffics pass through the vpn. +So, I set up a transparent proxy to proxy the traffic which has been blocked only. +At the final step, I need to install a dns service which would work with ipset well to launch the system. +I did some research for this. Unfortunately, Unbound, My favorite dns service doesn't support ipset yet. So, I decided to implement it by my self and contribute the patch. It's good for me and the community. +``` +# unbound.conf +server: + ... + local-zone: "facebook.com" ipset + local-zone: "twitter.com" ipset + local-zone: "instagram.com" ipset + more social website + +ipset: + name-v4: "gfwlist" +``` +``` +# iptables +iptables -A PREROUTING -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-ports 10800 +iptables -A OUTPUT -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-ports 10800 +``` + +* This patch could work with iptables rules to batch block the IPs. +``` +# unbound.conf +server: + ... + local-zone: "facebook.com" ipset + local-zone: "twitter.com" ipset + local-zone: "instagram.com" ipset + more social website + +ipset: + name-v4: "blacklist" + name-v6: "blacklist6" +``` +``` +# iptables +iptables -A INPUT -m set --set blacklist src -j DROP +ip6tables -A INPUT -m set --set blacklist6 src -j DROP +``` + +### Notes: +* To enable this module the root privileges is required. +* Please create a set with ipset command first. eg. **ipset -N blacklist iphash** + +### How to use: +``` +./configure --enable-ipset +make && make install +``` + +### Configuration: +``` +# unbound.conf +server: + ... + local-zone: "example.com" ipset + +ipset: + name-v4: "blacklist" +``` diff --git a/ipset/ipset.c b/ipset/ipset.c index fb16c06a3..2e90b012c 100755 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -160,7 +160,8 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru if (strncasecmp(p->str, s, plen) == 0) { d = (struct packed_rrset_data*)rrset->entry.data; - for (j = 0; j < d->count + d->rrsig_count; j++) { + /* to d->count, not d->rrsig_count, because we do not want to add the RRSIGs, only the addresses */ + for (j = 0; j < d->count; j++) { rr_len = d->rr_len[j]; rr_data = d->rr_data[j]; From c1e75c0369f0b514fce9ade0ae6d65beb6a0fcad Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 18 Jun 2019 15:57:28 +0200 Subject: [PATCH 15/22] - Fix to make unbound-control with ipset, remove unused variable, use unsigned type because of comparison, and assign null instead of compare with it. Remade lex and yacc output. --- Makefile.in | 16 +- doc/Changelog | 3 + ipset/ipset.c | 5 +- util/configlexer.c | 259 ++++----- util/configparser.c | 1275 +++++++++++++++++++++---------------------- util/configparser.h | 12 +- 6 files changed, 782 insertions(+), 788 deletions(-) diff --git a/Makefile.in b/Makefile.in index e2f9ade5b..3cde76242 100644 --- a/Makefile.in +++ b/Makefile.in @@ -126,7 +126,7 @@ validator/val_sigcrypt.c validator/val_utils.c dns64/dns64.c \ edns-subnet/edns-subnet.c edns-subnet/subnetmod.c \ edns-subnet/addrtree.c edns-subnet/subnet-whitelist.c \ cachedb/cachedb.c cachedb/redis.c respip/respip.c $(CHECKLOCK_SRC) \ -$(DNSTAP_SRC) $(DNSCRYPT_SRC) $(IPSECMOD_SRC) +$(DNSTAP_SRC) $(DNSCRYPT_SRC) $(IPSECMOD_SRC) $(IPSET_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 \ @@ -139,7 +139,7 @@ autotrust.lo val_anchor.lo \ validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ -$(IPSECMOD_OBJ) respip.lo +$(IPSECMOD_OBJ) $(IPSET_OBJ) respip.lo COMMON_OBJ_WITHOUT_UB_EVENT=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ outside_network.lo COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo @@ -176,11 +176,11 @@ DAEMON_OBJ=acl_list.lo cachedump.lo daemon.lo \ shm_main.lo remote.lo stats.lo unbound.lo \ worker.lo @WIN_DAEMON_OBJ@ DAEMON_OBJ_LINK=$(DAEMON_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) $(SLDNS_OBJ) \ -$(COMPAT_OBJ) $(IPSET_OBJ) @WIN_DAEMON_OBJ_LINK@ +$(COMPAT_OBJ) @WIN_DAEMON_OBJ_LINK@ CHECKCONF_SRC=smallapp/unbound-checkconf.c smallapp/worker_cb.c CHECKCONF_OBJ=unbound-checkconf.lo worker_cb.lo CHECKCONF_OBJ_LINK=$(CHECKCONF_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) $(SLDNS_OBJ) \ -$(COMPAT_OBJ) $(IPSET_OBJ) @WIN_CHECKCONF_OBJ_LINK@ +$(COMPAT_OBJ) @WIN_CHECKCONF_OBJ_LINK@ CONTROL_SRC=smallapp/unbound-control.c CONTROL_OBJ=unbound-control.lo CONTROL_OBJ_LINK=$(CONTROL_OBJ) worker_cb.lo $(COMMON_OBJ_ALL_SYMBOLS) \ @@ -234,7 +234,7 @@ IPSET_OBJ=@IPSET_OBJ@ LIBUNBOUND_SRC=libunbound/context.c libunbound/libunbound.c \ libunbound/libworker.c LIBUNBOUND_OBJ=context.lo libunbound.lo libworker.lo ub_event_pluggable.lo -LIBUNBOUND_OBJ_LINK=$(LIBUNBOUND_OBJ) $(COMMON_OBJ_WITHOUT_UB_EVENT) $(SLDNS_OBJ) $(COMPAT_OBJ) $(IPSET_OBJ) +LIBUNBOUND_OBJ_LINK=$(LIBUNBOUND_OBJ) $(COMMON_OBJ_WITHOUT_UB_EVENT) $(SLDNS_OBJ) $(COMPAT_OBJ) # win apps or "" if not on windows WINAPPS=@WINAPPS@ @@ -259,8 +259,7 @@ ALL_SRC=$(COMMON_SRC) $(UNITTEST_SRC) $(DAEMON_SRC) \ $(ASYNCLOOK_SRC) $(STREAMTCP_SRC) $(PERF_SRC) $(DELAYER_SRC) \ $(CONTROL_SRC) $(UBANCHOR_SRC) $(PETAL_SRC) \ $(PYTHONMOD_SRC) $(PYUNBOUND_SRC) $(WIN_DAEMON_THE_SRC) \ - $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) $(SLDNS_SRC) \ - $(IPSET_SRC) + $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) $(SLDNS_SRC) ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(TESTBOUND_OBJ) $(LOCKVERIFY_OBJ) $(PKTVIEW_OBJ) \ @@ -268,8 +267,7 @@ ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(ASYNCLOOK_OBJ) $(STREAMTCP_OBJ) $(PERF_OBJ) $(DELAYER_OBJ) \ $(CONTROL_OBJ) $(UBANCHOR_OBJ) $(PETAL_OBJ) \ $(COMPAT_OBJ) $(PYUNBOUND_OBJ) \ - $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ) \ - $(IPSET_OBJ) + $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ) COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ LINK=$(LIBTOOL) --tag=CC --mode=link $(CC) $(staticexe) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) diff --git a/doc/Changelog b/doc/Changelog index 10c88224e..8b2866a96 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,9 @@ the ipset that could add the domain's ip to a list easily. Needs libmnl, and --enable-ipset and config it, doc/README.ipset.md. - Fix to omit RRSIGs from addition to the ipset. + - Fix to make unbound-control with ipset, remove unused variable, + use unsigned type because of comparison, and assign null instead + of compare with it. Remade lex and yacc output. 17 June 2019: Wouter - Master contains version 1.9.3 in development. diff --git a/ipset/ipset.c b/ipset/ipset.c index 2e90b012c..49484361d 100755 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -94,7 +94,7 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru struct mnl_socket *mnl; - int i, j; + size_t i, j; const char *setname; @@ -109,7 +109,6 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru struct config_strlist *p; - uint16_t rrtype; size_t rr_len, rd_len; uint8_t *rr_data; @@ -198,7 +197,7 @@ int ipset_init(struct module_env* env, int id) { env->modinfo[id] = (void *)ipset_env; - ipset_env->mnl == NULL; + ipset_env->mnl = NULL; ipset_env->name_v4 = env->cfg->ipset_name_v4; ipset_env->name_v6 = env->cfg->ipset_name_v6; diff --git a/util/configlexer.c b/util/configlexer.c index 72622a0c0..ed7b718cf 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -10,7 +10,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 +#define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -85,16 +85,10 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - #endif /* ! C99 */ #endif /* ! FLEXINT_H */ -/* begin standard C++ headers. */ - /* TODO: this is always defined, so inline it */ #define yyconst const @@ -107,26 +101,32 @@ typedef unsigned int flex_uint32_t; /* Returned upon end-of-file. */ #define YY_NULL 0 -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * + /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START + /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) +#define YY_NEW_FILE yyrestart(yyin ) + #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ @@ -163,7 +163,7 @@ extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) @@ -172,7 +172,7 @@ extern FILE *yyin, *yyout; do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ @@ -180,6 +180,7 @@ extern FILE *yyin, *yyout; YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) + #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -222,7 +223,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -261,6 +262,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) + /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ @@ -281,56 +283,62 @@ static int yy_start = 0; /* start state number */ */ static int yy_did_buffer_switch_on_eof; -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +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 ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); +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,int len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); #define yy_new_buffer yy_create_buffer + #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } + #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } + #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ -typedef flex_uint8_t YY_CHAR; + +typedef unsigned char YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; + int yylineno = 1; extern char *yytext; @@ -339,10 +347,10 @@ extern char *yytext; #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 ); -static void yynoreturn yy_fatal_error ( const char* msg ); +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 ); +static void yynoreturn yy_fatal_error (yyconst char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. @@ -354,6 +362,7 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; + #define YY_NUM_RULES 294 #define YY_END_OF_BUFFER 295 /* This struct is not used in this scanner, @@ -363,7 +372,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[2913] = +static yyconst flex_int16_t yy_accept[2913] = { 0, 1, 1, 276, 276, 280, 280, 284, 284, 288, 288, 1, 1, 295, 292, 1, 274, 274, 293, 2, 293, @@ -688,7 +697,7 @@ static const flex_int16_t yy_accept[2913] = 226, 0 } ; -static const YY_CHAR yy_ec[256] = +static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, @@ -720,7 +729,7 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[41] = +static yyconst YY_CHAR yy_meta[41] = { 0, 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, @@ -728,7 +737,7 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[2927] = +static yyconst flex_uint16_t yy_base[2927] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, 90, 112, 2420, 2266, 81, 5685, 5685, 5685, 96, 52, @@ -1054,7 +1063,7 @@ static const flex_int16_t yy_base[2927] = 5642, 5649, 5656, 5663, 5670, 5677 } ; -static const flex_int16_t yy_def[2927] = +static yyconst flex_int16_t yy_def[2927] = { 0, 2912, 1, 2913, 2913, 2914, 2914, 2915, 2915, 2916, 2916, 2917, 2917, 2912, 2918, 2912, 2912, 2912, 2912, 2919, 2918, @@ -1380,7 +1389,7 @@ static const flex_int16_t yy_def[2927] = 2912, 2912, 2912, 2912, 2912, 2912 } ; -static const flex_int16_t yy_nxt[5726] = +static yyconst flex_uint16_t yy_nxt[5726] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -2014,7 +2023,7 @@ static const flex_int16_t yy_nxt[5726] = 2912, 2912, 2912, 2912, 2912 } ; -static const flex_int16_t yy_chk[5726] = +static yyconst flex_int16_t yy_chk[5726] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2770,7 +2779,7 @@ static void config_start_include(const char* filename) config_include_stack = s; cfg_parser->filename = nm; cfg_parser->line = 1; - yy_switch_to_buffer(yy_create_buffer(input, YY_BUF_SIZE)); + yy_switch_to_buffer(yy_create_buffer(input,YY_BUF_SIZE)); } static void config_start_include_glob(const char* filename) @@ -2840,12 +2849,11 @@ static void config_end_include(void) #define yy_set_bol(at_bol) \ { \ if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer = yy_create_buffer(yyin,YY_BUF_SIZE ); \ yy_current_buffer->yy_ch_buf[0] = ((at_bol)?'\n':' '); \ } #endif -#line 2846 "" #define YY_NO_INPUT 1 #line 185 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2854,9 +2862,8 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2855 "" -#line 2857 "" +#line 2865 "" #define INITIAL 0 #define quotedstring 1 @@ -2877,36 +2884,36 @@ static void config_end_include(void) #define YY_EXTRA_TYPE void * #endif -static int yy_init_globals ( void ); +static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy ( void ); +int yylex_destroy (void ); -int yyget_debug ( void ); +int yyget_debug (void ); -void yyset_debug ( int debug_flag ); +void yyset_debug (int debug_flag ); -YY_EXTRA_TYPE yyget_extra ( void ); +YY_EXTRA_TYPE yyget_extra (void ); -void yyset_extra ( YY_EXTRA_TYPE user_defined ); +void yyset_extra (YY_EXTRA_TYPE user_defined ); -FILE *yyget_in ( void ); +FILE *yyget_in (void ); -void yyset_in ( FILE * _in_str ); +void yyset_in (FILE * _in_str ); -FILE *yyget_out ( void ); +FILE *yyget_out (void ); -void yyset_out ( FILE * _out_str ); +void yyset_out (FILE * _out_str ); - int yyget_leng ( void ); + int yyget_leng (void ); -char *yyget_text ( void ); +char *yyget_text (void ); -int yyget_lineno ( 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. @@ -2914,9 +2921,9 @@ void yyset_lineno ( int _line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap ( void ); +extern "C" int yywrap (void ); #else -extern int yywrap ( void ); +extern int yywrap (void ); #endif #endif @@ -2925,18 +2932,19 @@ extern int yywrap ( void ); #endif #ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); +static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); +static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT + #ifdef __cplusplus -static int yyinput ( void ); +static int yyinput (void ); #else -static int input ( void ); +static int input (void ); #endif #endif @@ -3069,23 +3077,23 @@ YY_DECL if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + yy_create_buffer(yyin,YY_BUF_SIZE ); } - yy_load_buffer_state( ); + yy_load_buffer_state( ); } { #line 205 "./util/configlexer.lex" -#line 3079 "" +#line 3088 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { (yy_more_len) = 0; if ( (yy_more_flag) ) { - (yy_more_len) = (int) ((yy_c_buf_p) - (yytext_ptr)); + (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); (yy_more_flag) = 0; } yy_cp = (yy_c_buf_p); @@ -3112,9 +3120,9 @@ YY_DECL { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 2913 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 5685 ); @@ -4712,7 +4720,7 @@ YY_RULE_SETUP #line 586 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4713 "" +#line 4722 "" case YY_END_OF_BUFFER: { @@ -4788,7 +4796,7 @@ ECHO; { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up @@ -4855,7 +4863,7 @@ static int yy_get_next_buffer (void) { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); - int number_to_move, i; + yy_size_t number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -4884,7 +4892,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -4920,8 +4928,7 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); + yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ @@ -4953,7 +4960,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); + yyrestart(yyin ); } else @@ -4967,15 +4974,12 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -5008,9 +5012,9 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 2913 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; @@ -5036,9 +5040,9 @@ static int yy_get_next_buffer (void) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 2913 ) - yy_c = yy_meta[yy_c]; + yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 2912); return yy_is_jam ? 0 : yy_current_state; @@ -5072,7 +5076,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -5089,13 +5093,13 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart( yyin ); + yyrestart(yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) + if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) @@ -5133,11 +5137,11 @@ static int yy_get_next_buffer (void) if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); + yy_create_buffer(yyin,YY_BUF_SIZE ); } - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); } /** Switch to a different input buffer. @@ -5165,7 +5169,7 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag @@ -5193,7 +5197,7 @@ static void yy_load_buffer_state (void) { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -5202,13 +5206,13 @@ static void yy_load_buffer_state (void) /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer( b, file ); + yy_init_buffer(b,file ); return b; } @@ -5227,9 +5231,9 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); + yyfree((void *) b->yy_ch_buf ); - yyfree( (void *) b ); + yyfree((void *) b ); } /* Initializes or reinitializes a buffer. @@ -5241,7 +5245,7 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer( b ); + yy_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; @@ -5284,7 +5288,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes @@ -5315,7 +5319,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } @@ -5334,7 +5338,7 @@ void yypop_buffer_state (void) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -5344,7 +5348,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)) { @@ -5358,9 +5362,9 @@ static void yyensure_buffer_stack (void) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -5389,7 +5393,7 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { @@ -5401,7 +5405,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) /* They forgot to leave room for the EOB's. */ return NULL; - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); @@ -5415,7 +5419,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer( b ); + yy_switch_to_buffer(b ); return b; } @@ -5428,10 +5432,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { - return yy_scan_bytes( yystr, (int) strlen(yystr) ); + return yy_scan_bytes(yystr,(int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -5441,7 +5445,7 @@ YY_BUFFER_STATE yy_scan_string (const char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -5450,7 +5454,7 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); + buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -5459,7 +5463,7 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer( buf, n ); + b = yy_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); @@ -5475,9 +5479,9 @@ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (const char* msg ) +static void yynoreturn yy_fatal_error (yyconst char* msg ) { - fprintf( stderr, "%s\n", msg ); + (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -5488,7 +5492,7 @@ static void yynoreturn yy_fatal_error (const char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -5505,7 +5509,7 @@ static void yynoreturn yy_fatal_error (const char* msg ) */ int yyget_lineno (void) { - + return yylineno; } @@ -5612,7 +5616,7 @@ int yylex_destroy (void) /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); + yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } @@ -5633,7 +5637,7 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { int i; @@ -5643,7 +5647,7 @@ static void yy_flex_strncpy (char* s1, const char * s2, int n ) #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) +static int yy_flex_strlen (yyconst char * s ) { int n; for ( n = 0; s[n]; ++n ) @@ -5681,3 +5685,4 @@ void yyfree (void * ptr ) #line 586 "./util/configlexer.lex" + diff --git a/util/configparser.c b/util/configparser.c index d15ca602d..1dc53f7b2 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.0.5. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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 @@ -41,14 +40,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.3.2" +#define YYBISON_VERSION "3.0.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -65,8 +61,8 @@ -/* First part of user prologue. */ -#line 38 "./util/configparser.y" /* yacc.c:337 */ +/* Copy the first part of user declarations. */ +#line 38 "./util/configparser.y" /* yacc.c:339 */ #include "config.h" @@ -95,16 +91,13 @@ extern struct config_parser_state* cfg_parser; #endif -#line 99 "util/configparser.c" /* yacc.c:337 */ +#line 95 "util/configparser.c" /* yacc.c:339 */ + # ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr # else -# define YY_NULLPTR ((void*)0) +# define YY_NULLPTR 0 # endif # endif @@ -676,11 +669,11 @@ extern int yydebug; union YYSTYPE { -#line 66 "./util/configparser.y" /* yacc.c:352 */ +#line 66 "./util/configparser.y" /* yacc.c:355 */ char* str; -#line 684 "util/configparser.c" /* yacc.c:352 */ +#line 677 "util/configparser.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -695,7 +688,9 @@ int yyparse (void); #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ +/* Copy the second part of user declarations. */ +#line 694 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -716,13 +711,13 @@ typedef signed char yytype_int8; #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short yytype_uint16; +typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short yytype_int16; +typedef short int yytype_int16; #endif #ifndef YYSIZE_T @@ -734,7 +729,7 @@ typedef short yytype_int16; # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned +# define YYSIZE_T unsigned int # endif #endif @@ -770,6 +765,15 @@ typedef short yytype_int16; # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -777,7 +781,7 @@ typedef short yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -939,16 +943,16 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 833 +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 524 -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1937,22 +1941,22 @@ static const yytype_uint8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) /* Error token number */ #define YYTERROR 1 @@ -1992,37 +1996,37 @@ do { \ } while (0) -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - FILE *yyoutput = yyo; - YYUSE (yyoutput); + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - YYFPRINTF (yyo, "%s %s (", + YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - yy_symbol_value_print (yyo, yytype, yyvaluep); - YYFPRINTF (yyo, ")"); + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -2056,7 +2060,7 @@ do { \ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long yylno = yyrline[yyrule]; + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -2067,7 +2071,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] + &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } @@ -2171,10 +2175,7 @@ yytnamerr (char *yyres, const char *yystr) case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - else - goto append; - - append: + /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; @@ -2192,7 +2193,7 @@ yytnamerr (char *yyres, const char *yystr) if (! yyres) return yystrlen (yystr); - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); + return yystpcpy (yyres, yystr) - yyres; } # endif @@ -2270,10 +2271,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } } } @@ -2297,10 +2298,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -2426,31 +2426,23 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; - /*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | +| yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ -yynewstate: + yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - -/*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - *yyssp = (yytype_int16) yystate; + yysetstate: + *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYSIZE_T yysize = yyssp - yyss + 1; -# if defined yyoverflow +#ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into @@ -2466,10 +2458,14 @@ yyparse (void) &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); + yyss = yyss1; yyvs = yyvs1; } -# else /* defined YYSTACK_RELOCATE */ +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -2485,22 +2481,22 @@ yyparse (void) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif +#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -2509,11 +2505,11 @@ yyparse (void) goto yybackup; - /*-----------. | yybackup. | `-----------*/ yybackup: + /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -2586,7 +2582,7 @@ yyparse (void) /*-----------------------------. -| yyreduce -- do a reduction. | +| yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -2607,15 +2603,15 @@ yyparse (void) switch (yyn) { case 15: -#line 183 "./util/configparser.y" /* yacc.c:1652 */ +#line 183 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("\nP(server:)\n")); } -#line 2615 "util/configparser.c" /* yacc.c:1652 */ +#line 2611 "util/configparser.c" /* yacc.c:1648 */ break; case 207: -#line 274 "./util/configparser.y" /* yacc.c:1652 */ +#line 274 "./util/configparser.y" /* yacc.c:1648 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2626,11 +2622,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2630 "util/configparser.c" /* yacc.c:1652 */ +#line 2626 "util/configparser.c" /* yacc.c:1648 */ break; case 217: -#line 291 "./util/configparser.y" /* yacc.c:1652 */ +#line 291 "./util/configparser.y" /* yacc.c:1648 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2641,11 +2637,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2645 "util/configparser.c" /* yacc.c:1652 */ +#line 2641 "util/configparser.c" /* yacc.c:1648 */ break; case 226: -#line 308 "./util/configparser.y" /* yacc.c:1652 */ +#line 308 "./util/configparser.y" /* yacc.c:1648 */ { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2658,11 +2654,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2662 "util/configparser.c" /* yacc.c:1652 */ +#line 2658 "util/configparser.c" /* yacc.c:1648 */ break; case 236: -#line 327 "./util/configparser.y" /* yacc.c:1652 */ +#line 327 "./util/configparser.y" /* yacc.c:1648 */ { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2677,11 +2673,11 @@ yyparse (void) } else yyerror("out of memory"); } -#line 2681 "util/configparser.c" /* yacc.c:1652 */ +#line 2677 "util/configparser.c" /* yacc.c:1648 */ break; case 247: -#line 349 "./util/configparser.y" /* yacc.c:1652 */ +#line 349 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2689,11 +2685,11 @@ yyparse (void) else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2693 "util/configparser.c" /* yacc.c:1652 */ +#line 2689 "util/configparser.c" /* yacc.c:1648 */ break; case 248: -#line 358 "./util/configparser.y" /* yacc.c:1652 */ +#line 358 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2701,11 +2697,11 @@ yyparse (void) else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2705 "util/configparser.c" /* yacc.c:1652 */ +#line 2701 "util/configparser.c" /* yacc.c:1648 */ break; case 249: -#line 367 "./util/configparser.y" /* yacc.c:1652 */ +#line 367 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2715,11 +2711,11 @@ yyparse (void) else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2719 "util/configparser.c" /* yacc.c:1652 */ +#line 2715 "util/configparser.c" /* yacc.c:1648 */ break; case 250: -#line 378 "./util/configparser.y" /* yacc.c:1652 */ +#line 378 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2727,11 +2723,11 @@ yyparse (void) else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2731 "util/configparser.c" /* yacc.c:1652 */ +#line 2727 "util/configparser.c" /* yacc.c:1648 */ break; case 251: -#line 387 "./util/configparser.y" /* yacc.c:1652 */ +#line 387 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2739,11 +2735,11 @@ yyparse (void) else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2743 "util/configparser.c" /* yacc.c:1652 */ +#line 2739 "util/configparser.c" /* yacc.c:1648 */ break; case 252: -#line 396 "./util/configparser.y" /* yacc.c:1652 */ +#line 396 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2751,11 +2747,11 @@ yyparse (void) else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2755 "util/configparser.c" /* yacc.c:1652 */ +#line 2751 "util/configparser.c" /* yacc.c:1648 */ break; case 253: -#line 405 "./util/configparser.y" /* yacc.c:1652 */ +#line 405 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2765,11 +2761,11 @@ yyparse (void) else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2769 "util/configparser.c" /* yacc.c:1652 */ +#line 2765 "util/configparser.c" /* yacc.c:1648 */ break; case 254: -#line 416 "./util/configparser.y" /* yacc.c:1652 */ +#line 416 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2777,11 +2773,11 @@ yyparse (void) else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2781 "util/configparser.c" /* yacc.c:1652 */ +#line 2777 "util/configparser.c" /* yacc.c:1648 */ break; case 255: -#line 425 "./util/configparser.y" /* yacc.c:1652 */ +#line 425 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2791,11 +2787,11 @@ yyparse (void) OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2795 "util/configparser.c" /* yacc.c:1652 */ +#line 2791 "util/configparser.c" /* yacc.c:1648 */ break; case 256: -#line 436 "./util/configparser.y" /* yacc.c:1652 */ +#line 436 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -2806,11 +2802,11 @@ yyparse (void) OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2810 "util/configparser.c" /* yacc.c:1652 */ +#line 2806 "util/configparser.c" /* yacc.c:1648 */ break; case 257: -#line 449 "./util/configparser.y" /* yacc.c:1652 */ +#line 449 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -2824,11 +2820,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2828 "util/configparser.c" /* yacc.c:1652 */ +#line 2824 "util/configparser.c" /* yacc.c:1648 */ break; case 258: -#line 464 "./util/configparser.y" /* yacc.c:1652 */ +#line 464 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -2838,11 +2834,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2842 "util/configparser.c" /* yacc.c:1652 */ +#line 2838 "util/configparser.c" /* yacc.c:1648 */ break; case 259: -#line 475 "./util/configparser.y" /* yacc.c:1652 */ +#line 475 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2858,11 +2854,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2862 "util/configparser.c" /* yacc.c:1652 */ +#line 2858 "util/configparser.c" /* yacc.c:1648 */ break; case 260: -#line 492 "./util/configparser.y" /* yacc.c:1652 */ +#line 492 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2878,11 +2874,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2882 "util/configparser.c" /* yacc.c:1652 */ +#line 2878 "util/configparser.c" /* yacc.c:1648 */ break; case 261: -#line 509 "./util/configparser.y" /* yacc.c:1652 */ +#line 509 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2898,11 +2894,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2902 "util/configparser.c" /* yacc.c:1652 */ +#line 2898 "util/configparser.c" /* yacc.c:1648 */ break; case 262: -#line 526 "./util/configparser.y" /* yacc.c:1652 */ +#line 526 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2918,11 +2914,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2922 "util/configparser.c" /* yacc.c:1652 */ +#line 2918 "util/configparser.c" /* yacc.c:1648 */ break; case 263: -#line 543 "./util/configparser.y" /* yacc.c:1652 */ +#line 543 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -2936,11 +2932,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2940 "util/configparser.c" /* yacc.c:1652 */ +#line 2936 "util/configparser.c" /* yacc.c:1648 */ break; case 264: -#line 558 "./util/configparser.y" /* yacc.c:1652 */ +#line 558 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -2954,11 +2950,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 2958 "util/configparser.c" /* yacc.c:1652 */ +#line 2954 "util/configparser.c" /* yacc.c:1648 */ break; case 265: -#line 573 "./util/configparser.y" /* yacc.c:1652 */ +#line 573 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2970,11 +2966,11 @@ yyparse (void) else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 2974 "util/configparser.c" /* yacc.c:1652 */ +#line 2970 "util/configparser.c" /* yacc.c:1648 */ break; case 266: -#line 586 "./util/configparser.y" /* yacc.c:1652 */ +#line 586 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2988,11 +2984,11 @@ yyparse (void) cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 2992 "util/configparser.c" /* yacc.c:1652 */ +#line 2988 "util/configparser.c" /* yacc.c:1648 */ break; case 267: -#line 601 "./util/configparser.y" /* yacc.c:1652 */ +#line 601 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3000,11 +2996,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3004 "util/configparser.c" /* yacc.c:1652 */ +#line 3000 "util/configparser.c" /* yacc.c:1648 */ break; case 268: -#line 610 "./util/configparser.y" /* yacc.c:1652 */ +#line 610 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3012,11 +3008,11 @@ yyparse (void) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3016 "util/configparser.c" /* yacc.c:1652 */ +#line 3012 "util/configparser.c" /* yacc.c:1648 */ break; case 269: -#line 619 "./util/configparser.y" /* yacc.c:1652 */ +#line 619 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3024,11 +3020,11 @@ yyparse (void) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3028 "util/configparser.c" /* yacc.c:1652 */ +#line 3024 "util/configparser.c" /* yacc.c:1648 */ break; case 270: -#line 628 "./util/configparser.y" /* yacc.c:1652 */ +#line 628 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3036,11 +3032,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3040 "util/configparser.c" /* yacc.c:1652 */ +#line 3036 "util/configparser.c" /* yacc.c:1648 */ break; case 271: -#line 637 "./util/configparser.y" /* yacc.c:1652 */ +#line 637 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3048,11 +3044,11 @@ yyparse (void) else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3052 "util/configparser.c" /* yacc.c:1652 */ +#line 3048 "util/configparser.c" /* yacc.c:1648 */ break; case 272: -#line 646 "./util/configparser.y" /* yacc.c:1652 */ +#line 646 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3060,11 +3056,11 @@ yyparse (void) else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3064 "util/configparser.c" /* yacc.c:1652 */ +#line 3060 "util/configparser.c" /* yacc.c:1648 */ break; case 273: -#line 655 "./util/configparser.y" /* yacc.c:1652 */ +#line 655 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3072,11 +3068,11 @@ yyparse (void) else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3076 "util/configparser.c" /* yacc.c:1652 */ +#line 3072 "util/configparser.c" /* yacc.c:1648 */ break; case 274: -#line 664 "./util/configparser.y" /* yacc.c:1652 */ +#line 664 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3084,11 +3080,11 @@ yyparse (void) else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3088 "util/configparser.c" /* yacc.c:1652 */ +#line 3084 "util/configparser.c" /* yacc.c:1648 */ break; case 275: -#line 673 "./util/configparser.y" /* yacc.c:1652 */ +#line 673 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3096,11 +3092,11 @@ yyparse (void) else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3100 "util/configparser.c" /* yacc.c:1652 */ +#line 3096 "util/configparser.c" /* yacc.c:1648 */ break; case 276: -#line 682 "./util/configparser.y" /* yacc.c:1652 */ +#line 682 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3108,11 +3104,11 @@ yyparse (void) else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3112 "util/configparser.c" /* yacc.c:1652 */ +#line 3108 "util/configparser.c" /* yacc.c:1648 */ break; case 277: -#line 691 "./util/configparser.y" /* yacc.c:1652 */ +#line 691 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3120,11 +3116,11 @@ yyparse (void) else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3124 "util/configparser.c" /* yacc.c:1652 */ +#line 3120 "util/configparser.c" /* yacc.c:1648 */ break; case 278: -#line 700 "./util/configparser.y" /* yacc.c:1652 */ +#line 700 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3132,11 +3128,11 @@ yyparse (void) else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3136 "util/configparser.c" /* yacc.c:1652 */ +#line 3132 "util/configparser.c" /* yacc.c:1648 */ break; case 279: -#line 709 "./util/configparser.y" /* yacc.c:1652 */ +#line 709 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3144,11 +3140,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3148 "util/configparser.c" /* yacc.c:1652 */ +#line 3144 "util/configparser.c" /* yacc.c:1648 */ break; case 280: -#line 718 "./util/configparser.y" /* yacc.c:1652 */ +#line 718 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3160,11 +3156,11 @@ yyparse (void) else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3164 "util/configparser.c" /* yacc.c:1652 */ +#line 3160 "util/configparser.c" /* yacc.c:1648 */ break; case 281: -#line 731 "./util/configparser.y" /* yacc.c:1652 */ +#line 731 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3172,11 +3168,11 @@ yyparse (void) else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3176 "util/configparser.c" /* yacc.c:1652 */ +#line 3172 "util/configparser.c" /* yacc.c:1648 */ break; case 282: -#line 740 "./util/configparser.y" /* yacc.c:1652 */ +#line 740 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3188,11 +3184,11 @@ yyparse (void) else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3192 "util/configparser.c" /* yacc.c:1652 */ +#line 3188 "util/configparser.c" /* yacc.c:1648 */ break; case 283: -#line 753 "./util/configparser.y" /* yacc.c:1652 */ +#line 753 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3200,11 +3196,11 @@ yyparse (void) else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3204 "util/configparser.c" /* yacc.c:1652 */ +#line 3200 "util/configparser.c" /* yacc.c:1648 */ break; case 284: -#line 762 "./util/configparser.y" /* yacc.c:1652 */ +#line 762 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3212,11 +3208,11 @@ yyparse (void) else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3216 "util/configparser.c" /* yacc.c:1652 */ +#line 3212 "util/configparser.c" /* yacc.c:1648 */ break; case 285: -#line 771 "./util/configparser.y" /* yacc.c:1652 */ +#line 771 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3224,31 +3220,31 @@ yyparse (void) else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3228 "util/configparser.c" /* yacc.c:1652 */ +#line 3224 "util/configparser.c" /* yacc.c:1648 */ break; case 286: -#line 780 "./util/configparser.y" /* yacc.c:1652 */ +#line 780 "./util/configparser.y" /* yacc.c:1648 */ { 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 3238 "util/configparser.c" /* yacc.c:1652 */ +#line 3234 "util/configparser.c" /* yacc.c:1648 */ break; case 287: -#line 787 "./util/configparser.y" /* yacc.c:1652 */ +#line 787 "./util/configparser.y" /* yacc.c:1648 */ { 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 3248 "util/configparser.c" /* yacc.c:1652 */ +#line 3244 "util/configparser.c" /* yacc.c:1648 */ break; case 288: -#line 794 "./util/configparser.y" /* yacc.c:1652 */ +#line 794 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3256,21 +3252,21 @@ yyparse (void) else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3260 "util/configparser.c" /* yacc.c:1652 */ +#line 3256 "util/configparser.c" /* yacc.c:1648 */ break; case 289: -#line 803 "./util/configparser.y" /* yacc.c:1652 */ +#line 803 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3270 "util/configparser.c" /* yacc.c:1652 */ +#line 3266 "util/configparser.c" /* yacc.c:1648 */ break; case 290: -#line 810 "./util/configparser.y" /* yacc.c:1652 */ +#line 810 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3278,53 +3274,53 @@ yyparse (void) else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3282 "util/configparser.c" /* yacc.c:1652 */ +#line 3278 "util/configparser.c" /* yacc.c:1648 */ break; case 291: -#line 819 "./util/configparser.y" /* yacc.c:1652 */ +#line 819 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3293 "util/configparser.c" /* yacc.c:1652 */ +#line 3289 "util/configparser.c" /* yacc.c:1648 */ break; case 292: -#line 827 "./util/configparser.y" /* yacc.c:1652 */ +#line 827 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3303 "util/configparser.c" /* yacc.c:1652 */ +#line 3299 "util/configparser.c" /* yacc.c:1648 */ break; case 293: -#line 834 "./util/configparser.y" /* yacc.c:1652 */ +#line 834 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3313 "util/configparser.c" /* yacc.c:1652 */ +#line 3309 "util/configparser.c" /* yacc.c:1648 */ break; case 294: -#line 841 "./util/configparser.y" /* yacc.c:1652 */ +#line 841 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3324 "util/configparser.c" /* yacc.c:1652 */ +#line 3320 "util/configparser.c" /* yacc.c:1648 */ break; case 295: -#line 849 "./util/configparser.y" /* yacc.c:1652 */ +#line 849 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3332,11 +3328,11 @@ yyparse (void) else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3336 "util/configparser.c" /* yacc.c:1652 */ +#line 3332 "util/configparser.c" /* yacc.c:1648 */ break; case 296: -#line 858 "./util/configparser.y" /* yacc.c:1652 */ +#line 858 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3344,11 +3340,11 @@ yyparse (void) else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3348 "util/configparser.c" /* yacc.c:1652 */ +#line 3344 "util/configparser.c" /* yacc.c:1648 */ break; case 297: -#line 867 "./util/configparser.y" /* yacc.c:1652 */ +#line 867 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3361,11 +3357,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3365 "util/configparser.c" /* yacc.c:1652 */ +#line 3361 "util/configparser.c" /* yacc.c:1648 */ break; case 298: -#line 881 "./util/configparser.y" /* yacc.c:1652 */ +#line 881 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3373,11 +3369,11 @@ yyparse (void) else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3377 "util/configparser.c" /* yacc.c:1652 */ +#line 3373 "util/configparser.c" /* yacc.c:1648 */ break; case 299: -#line 890 "./util/configparser.y" /* yacc.c:1652 */ +#line 890 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3385,11 +3381,11 @@ yyparse (void) else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3389 "util/configparser.c" /* yacc.c:1652 */ +#line 3385 "util/configparser.c" /* yacc.c:1648 */ break; case 300: -#line 899 "./util/configparser.y" /* yacc.c:1652 */ +#line 899 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3397,11 +3393,11 @@ yyparse (void) else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3401 "util/configparser.c" /* yacc.c:1652 */ +#line 3397 "util/configparser.c" /* yacc.c:1648 */ break; case 301: -#line 908 "./util/configparser.y" /* yacc.c:1652 */ +#line 908 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3409,11 +3405,11 @@ yyparse (void) else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3413 "util/configparser.c" /* yacc.c:1652 */ +#line 3409 "util/configparser.c" /* yacc.c:1648 */ break; case 302: -#line 917 "./util/configparser.y" /* yacc.c:1652 */ +#line 917 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3421,11 +3417,11 @@ yyparse (void) else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3425 "util/configparser.c" /* yacc.c:1652 */ +#line 3421 "util/configparser.c" /* yacc.c:1648 */ break; case 303: -#line 926 "./util/configparser.y" /* yacc.c:1652 */ +#line 926 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3433,31 +3429,31 @@ yyparse (void) else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3437 "util/configparser.c" /* yacc.c:1652 */ +#line 3433 "util/configparser.c" /* yacc.c:1648 */ break; case 304: -#line 935 "./util/configparser.y" /* yacc.c:1652 */ +#line 935 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3447 "util/configparser.c" /* yacc.c:1652 */ +#line 3443 "util/configparser.c" /* yacc.c:1648 */ break; case 305: -#line 942 "./util/configparser.y" /* yacc.c:1652 */ +#line 942 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3457 "util/configparser.c" /* yacc.c:1652 */ +#line 3453 "util/configparser.c" /* yacc.c:1648 */ break; case 306: -#line 949 "./util/configparser.y" /* yacc.c:1652 */ +#line 949 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3482,105 +3478,105 @@ yyparse (void) } } } -#line 3486 "util/configparser.c" /* yacc.c:1652 */ +#line 3482 "util/configparser.c" /* yacc.c:1648 */ break; case 307: -#line 975 "./util/configparser.y" /* yacc.c:1652 */ +#line 975 "./util/configparser.y" /* yacc.c:1648 */ { 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 3497 "util/configparser.c" /* yacc.c:1652 */ +#line 3493 "util/configparser.c" /* yacc.c:1648 */ break; case 308: -#line 983 "./util/configparser.y" /* yacc.c:1652 */ +#line 983 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3507 "util/configparser.c" /* yacc.c:1652 */ +#line 3503 "util/configparser.c" /* yacc.c:1648 */ break; case 309: -#line 990 "./util/configparser.y" /* yacc.c:1652 */ +#line 990 "./util/configparser.y" /* yacc.c:1648 */ { 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 3517 "util/configparser.c" /* yacc.c:1652 */ +#line 3513 "util/configparser.c" /* yacc.c:1648 */ break; case 310: -#line 997 "./util/configparser.y" /* yacc.c:1652 */ +#line 997 "./util/configparser.y" /* yacc.c:1648 */ { 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 3527 "util/configparser.c" /* yacc.c:1652 */ +#line 3523 "util/configparser.c" /* yacc.c:1648 */ break; case 311: -#line 1004 "./util/configparser.y" /* yacc.c:1652 */ +#line 1004 "./util/configparser.y" /* yacc.c:1648 */ { 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 3537 "util/configparser.c" /* yacc.c:1652 */ +#line 3533 "util/configparser.c" /* yacc.c:1648 */ break; case 312: -#line 1011 "./util/configparser.y" /* yacc.c:1652 */ +#line 1011 "./util/configparser.y" /* yacc.c:1648 */ { 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 3548 "util/configparser.c" /* yacc.c:1652 */ +#line 3544 "util/configparser.c" /* yacc.c:1648 */ break; case 313: -#line 1019 "./util/configparser.y" /* yacc.c:1652 */ +#line 1019 "./util/configparser.y" /* yacc.c:1648 */ { 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 3559 "util/configparser.c" /* yacc.c:1652 */ +#line 3555 "util/configparser.c" /* yacc.c:1648 */ break; case 314: -#line 1027 "./util/configparser.y" /* yacc.c:1652 */ +#line 1027 "./util/configparser.y" /* yacc.c:1648 */ { 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 3570 "util/configparser.c" /* yacc.c:1652 */ +#line 3566 "util/configparser.c" /* yacc.c:1648 */ break; case 315: -#line 1035 "./util/configparser.y" /* yacc.c:1652 */ +#line 1035 "./util/configparser.y" /* yacc.c:1648 */ { 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 3580 "util/configparser.c" /* yacc.c:1652 */ +#line 3576 "util/configparser.c" /* yacc.c:1648 */ break; case 316: -#line 1042 "./util/configparser.y" /* yacc.c:1652 */ +#line 1042 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3590,11 +3586,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3594 "util/configparser.c" /* yacc.c:1652 */ +#line 3590 "util/configparser.c" /* yacc.c:1648 */ break; case 317: -#line 1053 "./util/configparser.y" /* yacc.c:1652 */ +#line 1053 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3604,21 +3600,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3608 "util/configparser.c" /* yacc.c:1652 */ +#line 3604 "util/configparser.c" /* yacc.c:1648 */ break; case 318: -#line 1064 "./util/configparser.y" /* yacc.c:1652 */ +#line 1064 "./util/configparser.y" /* yacc.c:1648 */ { 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 3618 "util/configparser.c" /* yacc.c:1652 */ +#line 3614 "util/configparser.c" /* yacc.c:1648 */ break; case 319: -#line 1071 "./util/configparser.y" /* yacc.c:1652 */ +#line 1071 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3626,11 +3622,11 @@ yyparse (void) else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3630 "util/configparser.c" /* yacc.c:1652 */ +#line 3626 "util/configparser.c" /* yacc.c:1648 */ break; case 320: -#line 1080 "./util/configparser.y" /* yacc.c:1652 */ +#line 1080 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3638,11 +3634,11 @@ yyparse (void) else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3642 "util/configparser.c" /* yacc.c:1652 */ +#line 3638 "util/configparser.c" /* yacc.c:1648 */ break; case 321: -#line 1089 "./util/configparser.y" /* yacc.c:1652 */ +#line 1089 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3650,53 +3646,53 @@ yyparse (void) else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3654 "util/configparser.c" /* yacc.c:1652 */ +#line 3650 "util/configparser.c" /* yacc.c:1648 */ break; case 322: -#line 1098 "./util/configparser.y" /* yacc.c:1652 */ +#line 1098 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3664 "util/configparser.c" /* yacc.c:1652 */ +#line 3660 "util/configparser.c" /* yacc.c:1648 */ break; case 323: -#line 1105 "./util/configparser.y" /* yacc.c:1652 */ +#line 1105 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3674 "util/configparser.c" /* yacc.c:1652 */ +#line 3670 "util/configparser.c" /* yacc.c:1648 */ break; case 324: -#line 1112 "./util/configparser.y" /* yacc.c:1652 */ +#line 1112 "./util/configparser.y" /* yacc.c:1648 */ { 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 3685 "util/configparser.c" /* yacc.c:1652 */ +#line 3681 "util/configparser.c" /* yacc.c:1648 */ break; case 325: -#line 1120 "./util/configparser.y" /* yacc.c:1652 */ +#line 1120 "./util/configparser.y" /* yacc.c:1648 */ { 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 3696 "util/configparser.c" /* yacc.c:1652 */ +#line 3692 "util/configparser.c" /* yacc.c:1648 */ break; case 326: -#line 1128 "./util/configparser.y" /* yacc.c:1652 */ +#line 1128 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3705,11 +3701,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3709 "util/configparser.c" /* yacc.c:1652 */ +#line 3705 "util/configparser.c" /* yacc.c:1648 */ break; case 327: -#line 1138 "./util/configparser.y" /* yacc.c:1652 */ +#line 1138 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3718,11 +3714,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3722 "util/configparser.c" /* yacc.c:1652 */ +#line 3718 "util/configparser.c" /* yacc.c:1648 */ break; case 328: -#line 1148 "./util/configparser.y" /* yacc.c:1652 */ +#line 1148 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3731,22 +3727,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3735 "util/configparser.c" /* yacc.c:1652 */ +#line 3731 "util/configparser.c" /* yacc.c:1648 */ break; case 329: -#line 1158 "./util/configparser.y" /* yacc.c:1652 */ +#line 1158 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3746 "util/configparser.c" /* yacc.c:1652 */ +#line 3742 "util/configparser.c" /* yacc.c:1648 */ break; case 330: -#line 1166 "./util/configparser.y" /* yacc.c:1652 */ +#line 1166 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3758,11 +3754,11 @@ yyparse (void) else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3762 "util/configparser.c" /* yacc.c:1652 */ +#line 3758 "util/configparser.c" /* yacc.c:1648 */ break; case 331: -#line 1179 "./util/configparser.y" /* yacc.c:1652 */ +#line 1179 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3772,22 +3768,22 @@ yyparse (void) else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3776 "util/configparser.c" /* yacc.c:1652 */ +#line 3772 "util/configparser.c" /* yacc.c:1648 */ break; case 332: -#line 1190 "./util/configparser.y" /* yacc.c:1652 */ +#line 1190 "./util/configparser.y" /* yacc.c:1648 */ { 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 3787 "util/configparser.c" /* yacc.c:1652 */ +#line 3783 "util/configparser.c" /* yacc.c:1648 */ break; case 333: -#line 1198 "./util/configparser.y" /* yacc.c:1652 */ +#line 1198 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3799,11 +3795,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3803 "util/configparser.c" /* yacc.c:1652 */ +#line 3799 "util/configparser.c" /* yacc.c:1648 */ break; case 334: -#line 1211 "./util/configparser.y" /* yacc.c:1652 */ +#line 1211 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3811,11 +3807,11 @@ yyparse (void) else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3815 "util/configparser.c" /* yacc.c:1652 */ +#line 3811 "util/configparser.c" /* yacc.c:1648 */ break; case 335: -#line 1220 "./util/configparser.y" /* yacc.c:1652 */ +#line 1220 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3823,11 +3819,11 @@ yyparse (void) else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3827 "util/configparser.c" /* yacc.c:1652 */ +#line 3823 "util/configparser.c" /* yacc.c:1648 */ break; case 336: -#line 1229 "./util/configparser.y" /* yacc.c:1652 */ +#line 1229 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3835,11 +3831,11 @@ yyparse (void) else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3839 "util/configparser.c" /* yacc.c:1652 */ +#line 3835 "util/configparser.c" /* yacc.c:1648 */ break; case 337: -#line 1238 "./util/configparser.y" /* yacc.c:1652 */ +#line 1238 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3848,11 +3844,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3852 "util/configparser.c" /* yacc.c:1652 */ +#line 3848 "util/configparser.c" /* yacc.c:1648 */ break; case 338: -#line 1248 "./util/configparser.y" /* yacc.c:1652 */ +#line 1248 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3861,22 +3857,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3865 "util/configparser.c" /* yacc.c:1652 */ +#line 3861 "util/configparser.c" /* yacc.c:1648 */ break; case 339: -#line 1258 "./util/configparser.y" /* yacc.c:1652 */ +#line 1258 "./util/configparser.y" /* yacc.c:1648 */ { 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 3876 "util/configparser.c" /* yacc.c:1652 */ +#line 3872 "util/configparser.c" /* yacc.c:1648 */ break; case 340: -#line 1266 "./util/configparser.y" /* yacc.c:1652 */ +#line 1266 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3888,11 +3884,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3892 "util/configparser.c" /* yacc.c:1652 */ +#line 3888 "util/configparser.c" /* yacc.c:1648 */ break; case 341: -#line 1279 "./util/configparser.y" /* yacc.c:1652 */ +#line 1279 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3900,22 +3896,22 @@ yyparse (void) else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3904 "util/configparser.c" /* yacc.c:1652 */ +#line 3900 "util/configparser.c" /* yacc.c:1648 */ break; case 342: -#line 1288 "./util/configparser.y" /* yacc.c:1652 */ +#line 1288 "./util/configparser.y" /* yacc.c:1648 */ { 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 3915 "util/configparser.c" /* yacc.c:1652 */ +#line 3911 "util/configparser.c" /* yacc.c:1648 */ break; case 343: -#line 1296 "./util/configparser.y" /* yacc.c:1652 */ +#line 1296 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3923,22 +3919,22 @@ yyparse (void) else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3927 "util/configparser.c" /* yacc.c:1652 */ +#line 3923 "util/configparser.c" /* yacc.c:1648 */ break; case 344: -#line 1305 "./util/configparser.y" /* yacc.c:1652 */ +#line 1305 "./util/configparser.y" /* yacc.c:1648 */ { 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 3938 "util/configparser.c" /* yacc.c:1652 */ +#line 3934 "util/configparser.c" /* yacc.c:1648 */ break; case 345: -#line 1313 "./util/configparser.y" /* yacc.c:1652 */ +#line 1313 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3950,11 +3946,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 3954 "util/configparser.c" /* yacc.c:1652 */ +#line 3950 "util/configparser.c" /* yacc.c:1648 */ break; case 346: -#line 1326 "./util/configparser.y" /* yacc.c:1652 */ +#line 1326 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3962,21 +3958,21 @@ yyparse (void) else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3966 "util/configparser.c" /* yacc.c:1652 */ +#line 3962 "util/configparser.c" /* yacc.c:1648 */ break; case 347: -#line 1335 "./util/configparser.y" /* yacc.c:1652 */ +#line 1335 "./util/configparser.y" /* yacc.c:1648 */ { 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 3976 "util/configparser.c" /* yacc.c:1652 */ +#line 3972 "util/configparser.c" /* yacc.c:1648 */ break; case 348: -#line 1342 "./util/configparser.y" /* yacc.c:1652 */ +#line 1342 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3985,11 +3981,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3989 "util/configparser.c" /* yacc.c:1652 */ +#line 3985 "util/configparser.c" /* yacc.c:1648 */ break; case 349: -#line 1352 "./util/configparser.y" /* yacc.c:1652 */ +#line 1352 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3998,11 +3994,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4002 "util/configparser.c" /* yacc.c:1652 */ +#line 3998 "util/configparser.c" /* yacc.c:1648 */ break; case 350: -#line 1362 "./util/configparser.y" /* yacc.c:1652 */ +#line 1362 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4011,11 +4007,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4015 "util/configparser.c" /* yacc.c:1652 */ +#line 4011 "util/configparser.c" /* yacc.c:1648 */ break; case 351: -#line 1372 "./util/configparser.y" /* yacc.c:1652 */ +#line 1372 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4024,11 +4020,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4028 "util/configparser.c" /* yacc.c:1652 */ +#line 4024 "util/configparser.c" /* yacc.c:1648 */ break; case 352: -#line 1382 "./util/configparser.y" /* yacc.c:1652 */ +#line 1382 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4037,11 +4033,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4041 "util/configparser.c" /* yacc.c:1652 */ +#line 4037 "util/configparser.c" /* yacc.c:1648 */ break; case 353: -#line 1392 "./util/configparser.y" /* yacc.c:1652 */ +#line 1392 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4050,11 +4046,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4054 "util/configparser.c" /* yacc.c:1652 */ +#line 4050 "util/configparser.c" /* yacc.c:1648 */ break; case 354: -#line 1402 "./util/configparser.y" /* yacc.c:1652 */ +#line 1402 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4063,11 +4059,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4067 "util/configparser.c" /* yacc.c:1652 */ +#line 4063 "util/configparser.c" /* yacc.c:1648 */ break; case 355: -#line 1412 "./util/configparser.y" /* yacc.c:1652 */ +#line 1412 "./util/configparser.y" /* yacc.c:1648 */ { 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) @@ -4076,41 +4072,41 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4080 "util/configparser.c" /* yacc.c:1652 */ +#line 4076 "util/configparser.c" /* yacc.c:1648 */ break; case 356: -#line 1422 "./util/configparser.y" /* yacc.c:1652 */ +#line 1422 "./util/configparser.y" /* yacc.c:1648 */ { 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 4090 "util/configparser.c" /* yacc.c:1652 */ +#line 4086 "util/configparser.c" /* yacc.c:1648 */ break; case 357: -#line 1429 "./util/configparser.y" /* yacc.c:1652 */ +#line 1429 "./util/configparser.y" /* yacc.c:1648 */ { 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 4100 "util/configparser.c" /* yacc.c:1652 */ +#line 4096 "util/configparser.c" /* yacc.c:1648 */ break; case 358: -#line 1436 "./util/configparser.y" /* yacc.c:1652 */ +#line 1436 "./util/configparser.y" /* yacc.c:1648 */ { 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 4110 "util/configparser.c" /* yacc.c:1652 */ +#line 4106 "util/configparser.c" /* yacc.c:1648 */ break; case 359: -#line 1443 "./util/configparser.y" /* yacc.c:1652 */ +#line 1443 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4118,11 +4114,11 @@ yyparse (void) else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4122 "util/configparser.c" /* yacc.c:1652 */ +#line 4118 "util/configparser.c" /* yacc.c:1648 */ break; case 360: -#line 1452 "./util/configparser.y" /* yacc.c:1652 */ +#line 1452 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4130,11 +4126,11 @@ yyparse (void) else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4134 "util/configparser.c" /* yacc.c:1652 */ +#line 4130 "util/configparser.c" /* yacc.c:1648 */ break; case 361: -#line 1461 "./util/configparser.y" /* yacc.c:1652 */ +#line 1461 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4142,11 +4138,11 @@ yyparse (void) else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4146 "util/configparser.c" /* yacc.c:1652 */ +#line 4142 "util/configparser.c" /* yacc.c:1648 */ break; case 362: -#line 1470 "./util/configparser.y" /* yacc.c:1652 */ +#line 1470 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4154,21 +4150,21 @@ yyparse (void) else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4158 "util/configparser.c" /* yacc.c:1652 */ +#line 4154 "util/configparser.c" /* yacc.c:1648 */ break; case 363: -#line 1479 "./util/configparser.y" /* yacc.c:1652 */ +#line 1479 "./util/configparser.y" /* yacc.c:1648 */ { 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 4168 "util/configparser.c" /* yacc.c:1652 */ +#line 4164 "util/configparser.c" /* yacc.c:1648 */ break; case 364: -#line 1486 "./util/configparser.y" /* yacc.c:1652 */ +#line 1486 "./util/configparser.y" /* yacc.c:1648 */ { 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) @@ -4177,11 +4173,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4181 "util/configparser.c" /* yacc.c:1652 */ +#line 4177 "util/configparser.c" /* yacc.c:1648 */ break; case 365: -#line 1496 "./util/configparser.y" /* yacc.c:1652 */ +#line 1496 "./util/configparser.y" /* yacc.c:1648 */ { 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 && @@ -4200,21 +4196,21 @@ yyparse (void) fatal_exit("out of memory adding acl"); } } -#line 4204 "util/configparser.c" /* yacc.c:1652 */ +#line 4200 "util/configparser.c" /* yacc.c:1648 */ break; case 366: -#line 1516 "./util/configparser.y" /* yacc.c:1652 */ +#line 1516 "./util/configparser.y" /* yacc.c:1648 */ { 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 4214 "util/configparser.c" /* yacc.c:1652 */ +#line 4210 "util/configparser.c" /* yacc.c:1648 */ break; case 367: -#line 1523 "./util/configparser.y" /* yacc.c:1652 */ +#line 1523 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4231,11 +4227,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4235 "util/configparser.c" /* yacc.c:1652 */ +#line 4231 "util/configparser.c" /* yacc.c:1648 */ break; case 368: -#line 1541 "./util/configparser.y" /* yacc.c:1652 */ +#line 1541 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4247,11 +4243,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" /* yacc.c:1652 */ +#line 4247 "util/configparser.c" /* yacc.c:1648 */ break; case 369: -#line 1554 "./util/configparser.y" /* yacc.c:1652 */ +#line 1554 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4263,11 +4259,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4267 "util/configparser.c" /* yacc.c:1652 */ +#line 4263 "util/configparser.c" /* yacc.c:1648 */ break; case 370: -#line 1567 "./util/configparser.y" /* yacc.c:1652 */ +#line 1567 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4275,11 +4271,11 @@ yyparse (void) else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4279 "util/configparser.c" /* yacc.c:1652 */ +#line 4275 "util/configparser.c" /* yacc.c:1648 */ break; case 371: -#line 1576 "./util/configparser.y" /* yacc.c:1652 */ +#line 1576 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4287,11 +4283,11 @@ yyparse (void) else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4291 "util/configparser.c" /* yacc.c:1652 */ +#line 4287 "util/configparser.c" /* yacc.c:1648 */ break; case 372: -#line 1585 "./util/configparser.y" /* yacc.c:1652 */ +#line 1585 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4299,11 +4295,11 @@ yyparse (void) else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4303 "util/configparser.c" /* yacc.c:1652 */ +#line 4299 "util/configparser.c" /* yacc.c:1648 */ break; case 373: -#line 1594 "./util/configparser.y" /* yacc.c:1652 */ +#line 1594 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4311,11 +4307,11 @@ yyparse (void) else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4315 "util/configparser.c" /* yacc.c:1652 */ +#line 4311 "util/configparser.c" /* yacc.c:1648 */ break; case 374: -#line 1603 "./util/configparser.y" /* yacc.c:1652 */ +#line 1603 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4324,11 +4320,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4328 "util/configparser.c" /* yacc.c:1652 */ +#line 4324 "util/configparser.c" /* yacc.c:1648 */ break; case 375: -#line 1613 "./util/configparser.y" /* yacc.c:1652 */ +#line 1613 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4337,11 +4333,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4341 "util/configparser.c" /* yacc.c:1652 */ +#line 4337 "util/configparser.c" /* yacc.c:1648 */ break; case 376: -#line 1623 "./util/configparser.y" /* yacc.c:1652 */ +#line 1623 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4351,11 +4347,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4355 "util/configparser.c" /* yacc.c:1652 */ +#line 4351 "util/configparser.c" /* yacc.c:1648 */ break; case 377: -#line 1634 "./util/configparser.y" /* yacc.c:1652 */ +#line 1634 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4363,11 +4359,11 @@ yyparse (void) else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4367 "util/configparser.c" /* yacc.c:1652 */ +#line 4363 "util/configparser.c" /* yacc.c:1648 */ break; case 378: -#line 1643 "./util/configparser.y" /* yacc.c:1652 */ +#line 1643 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4375,11 +4371,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4379 "util/configparser.c" /* yacc.c:1652 */ +#line 4375 "util/configparser.c" /* yacc.c:1648 */ break; case 379: -#line 1652 "./util/configparser.y" /* yacc.c:1652 */ +#line 1652 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4387,11 +4383,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4391 "util/configparser.c" /* yacc.c:1652 */ +#line 4387 "util/configparser.c" /* yacc.c:1648 */ break; case 380: -#line 1661 "./util/configparser.y" /* yacc.c:1652 */ +#line 1661 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4399,11 +4395,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4403 "util/configparser.c" /* yacc.c:1652 */ +#line 4399 "util/configparser.c" /* yacc.c:1648 */ break; case 381: -#line 1670 "./util/configparser.y" /* yacc.c:1652 */ +#line 1670 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4415,11 +4411,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 4419 "util/configparser.c" /* yacc.c:1652 */ +#line 4415 "util/configparser.c" /* yacc.c:1648 */ break; case 382: -#line 1683 "./util/configparser.y" /* yacc.c:1652 */ +#line 1683 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4431,11 +4427,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 4435 "util/configparser.c" /* yacc.c:1652 */ +#line 4431 "util/configparser.c" /* yacc.c:1648 */ break; case 383: -#line 1696 "./util/configparser.y" /* yacc.c:1652 */ +#line 1696 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4443,21 +4439,21 @@ yyparse (void) else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4447 "util/configparser.c" /* yacc.c:1652 */ +#line 4443 "util/configparser.c" /* yacc.c:1648 */ break; case 384: -#line 1705 "./util/configparser.y" /* yacc.c:1652 */ +#line 1705 "./util/configparser.y" /* yacc.c:1648 */ { 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 4457 "util/configparser.c" /* yacc.c:1652 */ +#line 4453 "util/configparser.c" /* yacc.c:1648 */ break; case 385: -#line 1712 "./util/configparser.y" /* yacc.c:1652 */ +#line 1712 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4465,11 +4461,11 @@ yyparse (void) else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4469 "util/configparser.c" /* yacc.c:1652 */ +#line 4465 "util/configparser.c" /* yacc.c:1648 */ break; case 386: -#line 1721 "./util/configparser.y" /* yacc.c:1652 */ +#line 1721 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4477,11 +4473,11 @@ yyparse (void) else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4481 "util/configparser.c" /* yacc.c:1652 */ +#line 4477 "util/configparser.c" /* yacc.c:1648 */ break; case 387: -#line 1730 "./util/configparser.y" /* yacc.c:1652 */ +#line 1730 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4489,11 +4485,11 @@ yyparse (void) else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4493 "util/configparser.c" /* yacc.c:1652 */ +#line 4489 "util/configparser.c" /* yacc.c:1648 */ break; case 388: -#line 1739 "./util/configparser.y" /* yacc.c:1652 */ +#line 1739 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4502,22 +4498,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4506 "util/configparser.c" /* yacc.c:1652 */ +#line 4502 "util/configparser.c" /* yacc.c:1648 */ break; case 389: -#line 1748 "./util/configparser.y" /* yacc.c:1652 */ +#line 1748 "./util/configparser.y" /* yacc.c:1648 */ { 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 4517 "util/configparser.c" /* yacc.c:1652 */ +#line 4513 "util/configparser.c" /* yacc.c:1648 */ break; case 390: -#line 1756 "./util/configparser.y" /* yacc.c:1652 */ +#line 1756 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4529,22 +4525,22 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4533 "util/configparser.c" /* yacc.c:1652 */ +#line 4529 "util/configparser.c" /* yacc.c:1648 */ break; case 391: -#line 1769 "./util/configparser.y" /* yacc.c:1652 */ +#line 1769 "./util/configparser.y" /* yacc.c:1648 */ { 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 4544 "util/configparser.c" /* yacc.c:1652 */ +#line 4540 "util/configparser.c" /* yacc.c:1648 */ break; case 392: -#line 1777 "./util/configparser.y" /* yacc.c:1652 */ +#line 1777 "./util/configparser.y" /* yacc.c:1648 */ { 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 && @@ -4584,21 +4580,21 @@ yyparse (void) fatal_exit("out of memory adding local-zone"); } } -#line 4588 "util/configparser.c" /* yacc.c:1652 */ +#line 4584 "util/configparser.c" /* yacc.c:1648 */ break; case 393: -#line 1818 "./util/configparser.y" /* yacc.c:1652 */ +#line 1818 "./util/configparser.y" /* yacc.c:1648 */ { 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 4598 "util/configparser.c" /* yacc.c:1652 */ +#line 4594 "util/configparser.c" /* yacc.c:1648 */ break; case 394: -#line 1825 "./util/configparser.y" /* yacc.c:1652 */ +#line 1825 "./util/configparser.y" /* yacc.c:1648 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4612,11 +4608,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 4616 "util/configparser.c" /* yacc.c:1652 */ +#line 4612 "util/configparser.c" /* yacc.c:1648 */ break; case 395: -#line 1840 "./util/configparser.y" /* yacc.c:1652 */ +#line 1840 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4625,11 +4621,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4629 "util/configparser.c" /* yacc.c:1652 */ +#line 4625 "util/configparser.c" /* yacc.c:1648 */ break; case 396: -#line 1850 "./util/configparser.y" /* yacc.c:1652 */ +#line 1850 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4638,41 +4634,41 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4642 "util/configparser.c" /* yacc.c:1652 */ +#line 4638 "util/configparser.c" /* yacc.c:1648 */ break; case 397: -#line 1860 "./util/configparser.y" /* yacc.c:1652 */ +#line 1860 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4652 "util/configparser.c" /* yacc.c:1652 */ +#line 4648 "util/configparser.c" /* yacc.c:1648 */ break; case 398: -#line 1867 "./util/configparser.y" /* yacc.c:1652 */ +#line 1867 "./util/configparser.y" /* yacc.c:1648 */ { 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 4662 "util/configparser.c" /* yacc.c:1652 */ +#line 4658 "util/configparser.c" /* yacc.c:1648 */ break; case 399: -#line 1874 "./util/configparser.y" /* yacc.c:1652 */ +#line 1874 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4672 "util/configparser.c" /* yacc.c:1652 */ +#line 4668 "util/configparser.c" /* yacc.c:1648 */ break; case 400: -#line 1881 "./util/configparser.y" /* yacc.c:1652 */ +#line 1881 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4680,22 +4676,22 @@ yyparse (void) else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4684 "util/configparser.c" /* yacc.c:1652 */ +#line 4680 "util/configparser.c" /* yacc.c:1648 */ break; case 401: -#line 1890 "./util/configparser.y" /* yacc.c:1652 */ +#line 1890 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4695 "util/configparser.c" /* yacc.c:1652 */ +#line 4691 "util/configparser.c" /* yacc.c:1648 */ break; case 402: -#line 1898 "./util/configparser.y" /* yacc.c:1652 */ +#line 1898 "./util/configparser.y" /* yacc.c:1648 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4708,11 +4704,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4712 "util/configparser.c" /* yacc.c:1652 */ +#line 4708 "util/configparser.c" /* yacc.c:1648 */ break; case 403: -#line 1912 "./util/configparser.y" /* yacc.c:1652 */ +#line 1912 "./util/configparser.y" /* yacc.c:1648 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4732,11 +4728,11 @@ yyparse (void) } } } -#line 4736 "util/configparser.c" /* yacc.c:1652 */ +#line 4732 "util/configparser.c" /* yacc.c:1648 */ break; case 404: -#line 1933 "./util/configparser.y" /* yacc.c:1652 */ +#line 1933 "./util/configparser.y" /* yacc.c:1648 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4756,11 +4752,11 @@ yyparse (void) } } } -#line 4760 "util/configparser.c" /* yacc.c:1652 */ +#line 4756 "util/configparser.c" /* yacc.c:1648 */ break; case 405: -#line 1954 "./util/configparser.y" /* yacc.c:1652 */ +#line 1954 "./util/configparser.y" /* yacc.c:1648 */ { 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, @@ -4771,11 +4767,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4775 "util/configparser.c" /* yacc.c:1652 */ +#line 4771 "util/configparser.c" /* yacc.c:1648 */ break; case 406: -#line 1966 "./util/configparser.y" /* yacc.c:1652 */ +#line 1966 "./util/configparser.y" /* yacc.c:1648 */ { 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, @@ -4786,11 +4782,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4790 "util/configparser.c" /* yacc.c:1652 */ +#line 4786 "util/configparser.c" /* yacc.c:1648 */ break; case 407: -#line 1978 "./util/configparser.y" /* yacc.c:1652 */ +#line 1978 "./util/configparser.y" /* yacc.c:1648 */ { 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, @@ -4801,11 +4797,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 4805 "util/configparser.c" /* yacc.c:1652 */ +#line 4801 "util/configparser.c" /* yacc.c:1648 */ break; case 408: -#line 1990 "./util/configparser.y" /* yacc.c:1652 */ +#line 1990 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -4813,11 +4809,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 4817 "util/configparser.c" /* yacc.c:1652 */ +#line 4813 "util/configparser.c" /* yacc.c:1648 */ break; case 409: -#line 1999 "./util/configparser.y" /* yacc.c:1652 */ +#line 1999 "./util/configparser.y" /* yacc.c:1648 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4837,11 +4833,11 @@ yyparse (void) } } } -#line 4841 "util/configparser.c" /* yacc.c:1652 */ +#line 4837 "util/configparser.c" /* yacc.c:1648 */ break; case 410: -#line 2020 "./util/configparser.y" /* yacc.c:1652 */ +#line 2020 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4849,11 +4845,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4853 "util/configparser.c" /* yacc.c:1652 */ +#line 4849 "util/configparser.c" /* yacc.c:1648 */ break; case 411: -#line 2030 "./util/configparser.y" /* yacc.c:1652 */ +#line 2030 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4861,33 +4857,33 @@ yyparse (void) else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4865 "util/configparser.c" /* yacc.c:1652 */ +#line 4861 "util/configparser.c" /* yacc.c:1648 */ break; case 412: -#line 2039 "./util/configparser.y" /* yacc.c:1652 */ +#line 2039 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4876 "util/configparser.c" /* yacc.c:1652 */ +#line 4872 "util/configparser.c" /* yacc.c:1648 */ break; case 413: -#line 2047 "./util/configparser.y" /* yacc.c:1652 */ +#line 2047 "./util/configparser.y" /* yacc.c:1648 */ { 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 4887 "util/configparser.c" /* yacc.c:1652 */ +#line 4883 "util/configparser.c" /* yacc.c:1648 */ break; case 414: -#line 2055 "./util/configparser.y" /* yacc.c:1652 */ +#line 2055 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4899,11 +4895,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4903 "util/configparser.c" /* yacc.c:1652 */ +#line 4899 "util/configparser.c" /* yacc.c:1648 */ break; case 415: -#line 2068 "./util/configparser.y" /* yacc.c:1652 */ +#line 2068 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4915,11 +4911,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4919 "util/configparser.c" /* yacc.c:1652 */ +#line 4915 "util/configparser.c" /* yacc.c:1648 */ break; case 416: -#line 2081 "./util/configparser.y" /* yacc.c:1652 */ +#line 2081 "./util/configparser.y" /* yacc.c:1648 */ { 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) { @@ -4933,11 +4929,11 @@ yyparse (void) "ratelimit-for-domain"); } } -#line 4937 "util/configparser.c" /* yacc.c:1652 */ +#line 4933 "util/configparser.c" /* yacc.c:1648 */ break; case 417: -#line 2096 "./util/configparser.y" /* yacc.c:1652 */ +#line 2096 "./util/configparser.y" /* yacc.c:1648 */ { 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) { @@ -4951,11 +4947,11 @@ yyparse (void) "ratelimit-below-domain"); } } -#line 4955 "util/configparser.c" /* yacc.c:1652 */ +#line 4951 "util/configparser.c" /* yacc.c:1648 */ break; case 418: -#line 2111 "./util/configparser.y" /* yacc.c:1652 */ +#line 2111 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4963,11 +4959,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4967 "util/configparser.c" /* yacc.c:1652 */ +#line 4963 "util/configparser.c" /* yacc.c:1648 */ break; case 419: -#line 2120 "./util/configparser.y" /* yacc.c:1652 */ +#line 2120 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4975,20 +4971,20 @@ yyparse (void) else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4979 "util/configparser.c" /* yacc.c:1652 */ +#line 4975 "util/configparser.c" /* yacc.c:1648 */ break; case 420: -#line 2129 "./util/configparser.y" /* yacc.c:1652 */ +#line 2129 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 4988 "util/configparser.c" /* yacc.c:1652 */ +#line 4984 "util/configparser.c" /* yacc.c:1648 */ break; case 421: -#line 2135 "./util/configparser.y" /* yacc.c:1652 */ +#line 2135 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -4996,11 +4992,11 @@ yyparse (void) else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5000 "util/configparser.c" /* yacc.c:1652 */ +#line 4996 "util/configparser.c" /* yacc.c:1648 */ break; case 422: -#line 2144 "./util/configparser.y" /* yacc.c:1652 */ +#line 2144 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5008,11 +5004,11 @@ yyparse (void) else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5012 "util/configparser.c" /* yacc.c:1652 */ +#line 5008 "util/configparser.c" /* yacc.c:1648 */ break; case 423: -#line 2153 "./util/configparser.y" /* yacc.c:1652 */ +#line 2153 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5021,11 +5017,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5025 "util/configparser.c" /* yacc.c:1652 */ +#line 5021 "util/configparser.c" /* yacc.c:1648 */ break; case 424: -#line 2163 "./util/configparser.y" /* yacc.c:1652 */ +#line 2163 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5034,11 +5030,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5038 "util/configparser.c" /* yacc.c:1652 */ +#line 5034 "util/configparser.c" /* yacc.c:1648 */ break; case 425: -#line 2173 "./util/configparser.y" /* yacc.c:1652 */ +#line 2173 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5050,11 +5046,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5054 "util/configparser.c" /* yacc.c:1652 */ +#line 5050 "util/configparser.c" /* yacc.c:1648 */ break; case 426: -#line 2186 "./util/configparser.y" /* yacc.c:1652 */ +#line 2186 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5066,11 +5062,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5070 "util/configparser.c" /* yacc.c:1652 */ +#line 5066 "util/configparser.c" /* yacc.c:1648 */ break; case 427: -#line 2199 "./util/configparser.y" /* yacc.c:1652 */ +#line 2199 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5081,11 +5077,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5085 "util/configparser.c" /* yacc.c:1652 */ +#line 5081 "util/configparser.c" /* yacc.c:1648 */ break; case 428: -#line 2211 "./util/configparser.y" /* yacc.c:1652 */ +#line 2211 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5098,11 +5094,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5102 "util/configparser.c" /* yacc.c:1652 */ +#line 5098 "util/configparser.c" /* yacc.c:1648 */ break; case 429: -#line 2225 "./util/configparser.y" /* yacc.c:1652 */ +#line 2225 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5113,11 +5109,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5117 "util/configparser.c" /* yacc.c:1652 */ +#line 5113 "util/configparser.c" /* yacc.c:1648 */ break; case 430: -#line 2237 "./util/configparser.y" /* yacc.c:1652 */ +#line 2237 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5130,11 +5126,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5134 "util/configparser.c" /* yacc.c:1652 */ +#line 5130 "util/configparser.c" /* yacc.c:1648 */ break; case 431: -#line 2251 "./util/configparser.y" /* yacc.c:1652 */ +#line 2251 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5143,31 +5139,31 @@ yyparse (void) free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5147 "util/configparser.c" /* yacc.c:1652 */ +#line 5143 "util/configparser.c" /* yacc.c:1648 */ break; case 432: -#line 2261 "./util/configparser.y" /* yacc.c:1652 */ +#line 2261 "./util/configparser.y" /* yacc.c:1648 */ { 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 5157 "util/configparser.c" /* yacc.c:1652 */ +#line 5153 "util/configparser.c" /* yacc.c:1648 */ break; case 433: -#line 2268 "./util/configparser.y" /* yacc.c:1652 */ +#line 2268 "./util/configparser.y" /* yacc.c:1648 */ { 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 5167 "util/configparser.c" /* yacc.c:1652 */ +#line 5163 "util/configparser.c" /* yacc.c:1648 */ break; case 434: -#line 2275 "./util/configparser.y" /* yacc.c:1652 */ +#line 2275 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5175,11 +5171,11 @@ yyparse (void) else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5179 "util/configparser.c" /* yacc.c:1652 */ +#line 5175 "util/configparser.c" /* yacc.c:1648 */ break; case 435: -#line 2284 "./util/configparser.y" /* yacc.c:1652 */ +#line 2284 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5187,11 +5183,11 @@ yyparse (void) else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5191 "util/configparser.c" /* yacc.c:1652 */ +#line 5187 "util/configparser.c" /* yacc.c:1648 */ break; case 436: -#line 2293 "./util/configparser.y" /* yacc.c:1652 */ +#line 2293 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5200,11 +5196,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5204 "util/configparser.c" /* yacc.c:1652 */ +#line 5200 "util/configparser.c" /* yacc.c:1648 */ break; case 437: -#line 2303 "./util/configparser.y" /* yacc.c:1652 */ +#line 2303 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5213,11 +5209,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5217 "util/configparser.c" /* yacc.c:1652 */ +#line 5213 "util/configparser.c" /* yacc.c:1648 */ break; case 438: -#line 2313 "./util/configparser.y" /* yacc.c:1652 */ +#line 2313 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5226,31 +5222,31 @@ yyparse (void) free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5230 "util/configparser.c" /* yacc.c:1652 */ +#line 5226 "util/configparser.c" /* yacc.c:1648 */ break; case 439: -#line 2323 "./util/configparser.y" /* yacc.c:1652 */ +#line 2323 "./util/configparser.y" /* yacc.c:1648 */ { 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 5240 "util/configparser.c" /* yacc.c:1652 */ +#line 5236 "util/configparser.c" /* yacc.c:1648 */ break; case 440: -#line 2330 "./util/configparser.y" /* yacc.c:1652 */ +#line 2330 "./util/configparser.y" /* yacc.c:1648 */ { 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 5250 "util/configparser.c" /* yacc.c:1652 */ +#line 5246 "util/configparser.c" /* yacc.c:1648 */ break; case 441: -#line 2337 "./util/configparser.y" /* yacc.c:1652 */ +#line 2337 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5258,11 +5254,11 @@ yyparse (void) else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5262 "util/configparser.c" /* yacc.c:1652 */ +#line 5258 "util/configparser.c" /* yacc.c:1648 */ break; case 442: -#line 2346 "./util/configparser.y" /* yacc.c:1652 */ +#line 2346 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5270,11 +5266,11 @@ yyparse (void) else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5274 "util/configparser.c" /* yacc.c:1652 */ +#line 5270 "util/configparser.c" /* yacc.c:1648 */ break; case 443: -#line 2355 "./util/configparser.y" /* yacc.c:1652 */ +#line 2355 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5283,11 +5279,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5287 "util/configparser.c" /* yacc.c:1652 */ +#line 5283 "util/configparser.c" /* yacc.c:1648 */ break; case 444: -#line 2365 "./util/configparser.y" /* yacc.c:1652 */ +#line 2365 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5296,52 +5292,52 @@ yyparse (void) free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5300 "util/configparser.c" /* yacc.c:1652 */ +#line 5296 "util/configparser.c" /* yacc.c:1648 */ break; case 445: -#line 2375 "./util/configparser.y" /* yacc.c:1652 */ +#line 2375 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5310 "util/configparser.c" /* yacc.c:1652 */ +#line 5306 "util/configparser.c" /* yacc.c:1648 */ break; case 446: -#line 2382 "./util/configparser.y" /* yacc.c:1652 */ +#line 2382 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5320 "util/configparser.c" /* yacc.c:1652 */ +#line 5316 "util/configparser.c" /* yacc.c:1648 */ break; case 447: -#line 2389 "./util/configparser.y" /* yacc.c:1652 */ +#line 2389 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5330 "util/configparser.c" /* yacc.c:1652 */ +#line 5326 "util/configparser.c" /* yacc.c:1648 */ break; case 448: -#line 2396 "./util/configparser.y" /* yacc.c:1652 */ +#line 2396 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5341 "util/configparser.c" /* yacc.c:1652 */ +#line 5337 "util/configparser.c" /* yacc.c:1648 */ break; case 449: -#line 2404 "./util/configparser.y" /* yacc.c:1652 */ +#line 2404 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5350,11 +5346,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5354 "util/configparser.c" /* yacc.c:1652 */ +#line 5350 "util/configparser.c" /* yacc.c:1648 */ break; case 450: -#line 2414 "./util/configparser.y" /* yacc.c:1652 */ +#line 2414 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5363,11 +5359,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5367 "util/configparser.c" /* yacc.c:1652 */ +#line 5363 "util/configparser.c" /* yacc.c:1648 */ break; case 451: -#line 2424 "./util/configparser.y" /* yacc.c:1652 */ +#line 2424 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5376,11 +5372,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5380 "util/configparser.c" /* yacc.c:1652 */ +#line 5376 "util/configparser.c" /* yacc.c:1648 */ break; case 452: -#line 2434 "./util/configparser.y" /* yacc.c:1652 */ +#line 2434 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5389,11 +5385,11 @@ yyparse (void) free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5393 "util/configparser.c" /* yacc.c:1652 */ +#line 5389 "util/configparser.c" /* yacc.c:1648 */ break; case 453: -#line 2444 "./util/configparser.y" /* yacc.c:1652 */ +#line 2444 "./util/configparser.y" /* yacc.c:1648 */ { 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 && @@ -5431,11 +5427,11 @@ yyparse (void) fatal_exit("out of memory adding local-zone"); } } -#line 5435 "util/configparser.c" /* yacc.c:1652 */ +#line 5431 "util/configparser.c" /* yacc.c:1648 */ break; case 454: -#line 2483 "./util/configparser.y" /* yacc.c:1652 */ +#line 2483 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5444,33 +5440,33 @@ yyparse (void) fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5448 "util/configparser.c" /* yacc.c:1652 */ +#line 5444 "util/configparser.c" /* yacc.c:1648 */ break; case 455: -#line 2493 "./util/configparser.y" /* yacc.c:1652 */ +#line 2493 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5459 "util/configparser.c" /* yacc.c:1652 */ +#line 5455 "util/configparser.c" /* yacc.c:1648 */ break; case 456: -#line 2501 "./util/configparser.y" /* yacc.c:1652 */ +#line 2501 "./util/configparser.y" /* yacc.c:1648 */ { 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"); } } -#line 5470 "util/configparser.c" /* yacc.c:1652 */ +#line 5466 "util/configparser.c" /* yacc.c:1648 */ break; case 457: -#line 2509 "./util/configparser.y" /* yacc.c:1652 */ +#line 2509 "./util/configparser.y" /* yacc.c:1648 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5484,11 +5480,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 5488 "util/configparser.c" /* yacc.c:1652 */ +#line 5484 "util/configparser.c" /* yacc.c:1648 */ break; case 458: -#line 2524 "./util/configparser.y" /* yacc.c:1652 */ +#line 2524 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5496,19 +5492,19 @@ yyparse (void) else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5500 "util/configparser.c" /* yacc.c:1652 */ +#line 5496 "util/configparser.c" /* yacc.c:1648 */ break; case 459: -#line 2533 "./util/configparser.y" /* yacc.c:1652 */ +#line 2533 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 5508 "util/configparser.c" /* yacc.c:1652 */ +#line 5504 "util/configparser.c" /* yacc.c:1648 */ break; case 470: -#line 2544 "./util/configparser.y" /* yacc.c:1652 */ +#line 2544 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5517,11 +5513,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5521 "util/configparser.c" /* yacc.c:1652 */ +#line 5517 "util/configparser.c" /* yacc.c:1648 */ break; case 471: -#line 2554 "./util/configparser.y" /* yacc.c:1652 */ +#line 2554 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5529,79 +5525,79 @@ yyparse (void) else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5533 "util/configparser.c" /* yacc.c:1652 */ +#line 5529 "util/configparser.c" /* yacc.c:1648 */ break; case 472: -#line 2563 "./util/configparser.y" /* yacc.c:1652 */ +#line 2563 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5543 "util/configparser.c" /* yacc.c:1652 */ +#line 5539 "util/configparser.c" /* yacc.c:1648 */ break; case 473: -#line 2570 "./util/configparser.y" /* yacc.c:1652 */ +#line 2570 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5553 "util/configparser.c" /* yacc.c:1652 */ +#line 5549 "util/configparser.c" /* yacc.c:1648 */ break; case 474: -#line 2577 "./util/configparser.y" /* yacc.c:1652 */ +#line 2577 "./util/configparser.y" /* yacc.c:1648 */ { 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 5563 "util/configparser.c" /* yacc.c:1652 */ +#line 5559 "util/configparser.c" /* yacc.c:1648 */ break; case 475: -#line 2584 "./util/configparser.y" /* yacc.c:1652 */ +#line 2584 "./util/configparser.y" /* yacc.c:1648 */ { 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 5573 "util/configparser.c" /* yacc.c:1652 */ +#line 5569 "util/configparser.c" /* yacc.c:1648 */ break; case 476: -#line 2591 "./util/configparser.y" /* yacc.c:1652 */ +#line 2591 "./util/configparser.y" /* yacc.c:1648 */ { 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 5583 "util/configparser.c" /* yacc.c:1652 */ +#line 5579 "util/configparser.c" /* yacc.c:1648 */ break; case 477: -#line 2598 "./util/configparser.y" /* yacc.c:1652 */ +#line 2598 "./util/configparser.y" /* yacc.c:1648 */ { 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 5593 "util/configparser.c" /* yacc.c:1652 */ +#line 5589 "util/configparser.c" /* yacc.c:1648 */ break; case 478: -#line 2605 "./util/configparser.y" /* yacc.c:1652 */ +#line 2605 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5601 "util/configparser.c" /* yacc.c:1652 */ +#line 5597 "util/configparser.c" /* yacc.c:1648 */ break; case 493: -#line 2622 "./util/configparser.y" /* yacc.c:1652 */ +#line 2622 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5609,21 +5605,21 @@ yyparse (void) else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5613 "util/configparser.c" /* yacc.c:1652 */ +#line 5609 "util/configparser.c" /* yacc.c:1648 */ break; case 494: -#line 2631 "./util/configparser.y" /* yacc.c:1652 */ +#line 2631 "./util/configparser.y" /* yacc.c:1648 */ { 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 5623 "util/configparser.c" /* yacc.c:1652 */ +#line 5619 "util/configparser.c" /* yacc.c:1648 */ break; case 495: -#line 2638 "./util/configparser.y" /* yacc.c:1652 */ +#line 2638 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5631,11 +5627,11 @@ yyparse (void) else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5635 "util/configparser.c" /* yacc.c:1652 */ +#line 5631 "util/configparser.c" /* yacc.c:1648 */ break; case 496: -#line 2647 "./util/configparser.y" /* yacc.c:1652 */ +#line 2647 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5643,31 +5639,31 @@ yyparse (void) else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5647 "util/configparser.c" /* yacc.c:1652 */ +#line 5643 "util/configparser.c" /* yacc.c:1648 */ break; case 497: -#line 2656 "./util/configparser.y" /* yacc.c:1652 */ +#line 2656 "./util/configparser.y" /* yacc.c:1648 */ { 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 5657 "util/configparser.c" /* yacc.c:1652 */ +#line 5653 "util/configparser.c" /* yacc.c:1648 */ break; case 498: -#line 2663 "./util/configparser.y" /* yacc.c:1652 */ +#line 2663 "./util/configparser.y" /* yacc.c:1648 */ { 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 5667 "util/configparser.c" /* yacc.c:1652 */ +#line 5663 "util/configparser.c" /* yacc.c:1648 */ break; case 499: -#line 2670 "./util/configparser.y" /* yacc.c:1652 */ +#line 2670 "./util/configparser.y" /* yacc.c:1648 */ { 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) @@ -5676,11 +5672,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5680 "util/configparser.c" /* yacc.c:1652 */ +#line 5676 "util/configparser.c" /* yacc.c:1648 */ break; case 500: -#line 2680 "./util/configparser.y" /* yacc.c:1652 */ +#line 2680 "./util/configparser.y" /* yacc.c:1648 */ { 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) @@ -5689,11 +5685,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5693 "util/configparser.c" /* yacc.c:1652 */ +#line 5689 "util/configparser.c" /* yacc.c:1648 */ break; case 501: -#line 2690 "./util/configparser.y" /* yacc.c:1652 */ +#line 2690 "./util/configparser.y" /* yacc.c:1648 */ { 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) @@ -5702,11 +5698,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5706 "util/configparser.c" /* yacc.c:1652 */ +#line 5702 "util/configparser.c" /* yacc.c:1648 */ break; case 502: -#line 2700 "./util/configparser.y" /* yacc.c:1652 */ +#line 2700 "./util/configparser.y" /* yacc.c:1648 */ { 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) @@ -5715,11 +5711,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5719 "util/configparser.c" /* yacc.c:1652 */ +#line 5715 "util/configparser.c" /* yacc.c:1648 */ break; case 503: -#line 2710 "./util/configparser.y" /* yacc.c:1652 */ +#line 2710 "./util/configparser.y" /* yacc.c:1648 */ { 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) @@ -5728,11 +5724,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5732 "util/configparser.c" /* yacc.c:1652 */ +#line 5728 "util/configparser.c" /* yacc.c:1648 */ break; case 504: -#line 2720 "./util/configparser.y" /* yacc.c:1652 */ +#line 2720 "./util/configparser.y" /* yacc.c:1648 */ { 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) @@ -5741,29 +5737,29 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5745 "util/configparser.c" /* yacc.c:1652 */ +#line 5741 "util/configparser.c" /* yacc.c:1648 */ break; case 505: -#line 2730 "./util/configparser.y" /* yacc.c:1652 */ +#line 2730 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("\nP(python:)\n")); } -#line 5753 "util/configparser.c" /* yacc.c:1652 */ +#line 5749 "util/configparser.c" /* yacc.c:1648 */ break; case 509: -#line 2739 "./util/configparser.y" /* yacc.c:1652 */ +#line 2739 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = (yyvsp[0].str); } -#line 5763 "util/configparser.c" /* yacc.c:1652 */ +#line 5759 "util/configparser.c" /* yacc.c:1648 */ break; case 510: -#line 2745 "./util/configparser.y" /* yacc.c:1652 */ +#line 2745 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5772,21 +5768,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5776 "util/configparser.c" /* yacc.c:1652 */ +#line 5772 "util/configparser.c" /* yacc.c:1648 */ break; case 511: -#line 2755 "./util/configparser.y" /* yacc.c:1652 */ +#line 2755 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 5786 "util/configparser.c" /* yacc.c:1652 */ +#line 5782 "util/configparser.c" /* yacc.c:1648 */ break; case 512: -#line 2762 "./util/configparser.y" /* yacc.c:1652 */ +#line 2762 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5794,30 +5790,30 @@ yyparse (void) (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 5798 "util/configparser.c" /* yacc.c:1652 */ +#line 5794 "util/configparser.c" /* yacc.c:1648 */ break; case 513: -#line 2771 "./util/configparser.y" /* yacc.c:1652 */ +#line 2771 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5809 "util/configparser.c" /* yacc.c:1652 */ +#line 5805 "util/configparser.c" /* yacc.c:1648 */ break; case 514: -#line 2779 "./util/configparser.y" /* yacc.c:1652 */ +#line 2779 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 5817 "util/configparser.c" /* yacc.c:1652 */ +#line 5813 "util/configparser.c" /* yacc.c:1648 */ break; case 527: -#line 2795 "./util/configparser.y" /* yacc.c:1652 */ +#line 2795 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5825,11 +5821,11 @@ yyparse (void) else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5829 "util/configparser.c" /* yacc.c:1652 */ +#line 5825 "util/configparser.c" /* yacc.c:1648 */ break; case 528: -#line 2805 "./util/configparser.y" /* yacc.c:1652 */ +#line 2805 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5837,21 +5833,21 @@ yyparse (void) else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5841 "util/configparser.c" /* yacc.c:1652 */ +#line 5837 "util/configparser.c" /* yacc.c:1648 */ break; case 529: -#line 2814 "./util/configparser.y" /* yacc.c:1652 */ +#line 2814 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 5851 "util/configparser.c" /* yacc.c:1652 */ +#line 5847 "util/configparser.c" /* yacc.c:1648 */ break; case 530: -#line 2821 "./util/configparser.y" /* yacc.c:1652 */ +#line 2821 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -5859,21 +5855,21 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 5863 "util/configparser.c" /* yacc.c:1652 */ +#line 5859 "util/configparser.c" /* yacc.c:1648 */ break; case 531: -#line 2830 "./util/configparser.y" /* yacc.c:1652 */ +#line 2830 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 5873 "util/configparser.c" /* yacc.c:1652 */ +#line 5869 "util/configparser.c" /* yacc.c:1648 */ break; case 532: -#line 2837 "./util/configparser.y" /* yacc.c:1652 */ +#line 2837 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -5881,22 +5877,22 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 5885 "util/configparser.c" /* yacc.c:1652 */ +#line 5881 "util/configparser.c" /* yacc.c:1648 */ break; case 533: -#line 2846 "./util/configparser.y" /* yacc.c:1652 */ +#line 2846 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5896 "util/configparser.c" /* yacc.c:1652 */ +#line 5892 "util/configparser.c" /* yacc.c:1648 */ break; case 534: -#line 2854 "./util/configparser.y" /* yacc.c:1652 */ +#line 2854 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5908,22 +5904,22 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5912 "util/configparser.c" /* yacc.c:1652 */ +#line 5908 "util/configparser.c" /* yacc.c:1648 */ break; case 535: -#line 2867 "./util/configparser.y" /* yacc.c:1652 */ +#line 2867 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5923 "util/configparser.c" /* yacc.c:1652 */ +#line 5919 "util/configparser.c" /* yacc.c:1648 */ break; case 536: -#line 2875 "./util/configparser.y" /* yacc.c:1652 */ +#line 2875 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5935,19 +5931,19 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5939 "util/configparser.c" /* yacc.c:1652 */ +#line 5935 "util/configparser.c" /* yacc.c:1648 */ break; case 537: -#line 2888 "./util/configparser.y" /* yacc.c:1652 */ +#line 2888 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 5947 "util/configparser.c" /* yacc.c:1652 */ +#line 5943 "util/configparser.c" /* yacc.c:1648 */ break; case 545: -#line 2898 "./util/configparser.y" /* yacc.c:1652 */ +#line 2898 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -5961,11 +5957,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5965 "util/configparser.c" /* yacc.c:1652 */ +#line 5961 "util/configparser.c" /* yacc.c:1648 */ break; case 546: -#line 2913 "./util/configparser.y" /* yacc.c:1652 */ +#line 2913 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -5979,11 +5975,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5983 "util/configparser.c" /* yacc.c:1652 */ +#line 5979 "util/configparser.c" /* yacc.c:1648 */ break; case 547: -#line 2928 "./util/configparser.y" /* yacc.c:1652 */ +#line 2928 "./util/configparser.y" /* yacc.c:1648 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -5994,11 +5990,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5998 "util/configparser.c" /* yacc.c:1652 */ +#line 5994 "util/configparser.c" /* yacc.c:1648 */ break; case 548: -#line 2940 "./util/configparser.y" /* yacc.c:1652 */ +#line 2940 "./util/configparser.y" /* yacc.c:1648 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6012,11 +6008,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 6016 "util/configparser.c" /* yacc.c:1652 */ +#line 6012 "util/configparser.c" /* yacc.c:1648 */ break; case 549: -#line 2955 "./util/configparser.y" /* yacc.c:1652 */ +#line 2955 "./util/configparser.y" /* yacc.c:1648 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6028,11 +6024,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 6032 "util/configparser.c" /* yacc.c:1652 */ +#line 6028 "util/configparser.c" /* yacc.c:1648 */ break; case 550: -#line 2968 "./util/configparser.y" /* yacc.c:1652 */ +#line 2968 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6042,19 +6038,19 @@ yyparse (void) fatal_exit("out of memory adding tcp connection limit"); } } -#line 6046 "util/configparser.c" /* yacc.c:1652 */ +#line 6042 "util/configparser.c" /* yacc.c:1648 */ break; case 551: -#line 2979 "./util/configparser.y" /* yacc.c:1652 */ +#line 2979 "./util/configparser.y" /* yacc.c:1648 */ { OUTYY(("\nP(ipset:)\n")); } -#line 6054 "util/configparser.c" /* yacc.c:1652 */ +#line 6050 "util/configparser.c" /* yacc.c:1648 */ break; case 556: -#line 2988 "./util/configparser.y" /* yacc.c:1652 */ +#line 2988 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6068,11 +6064,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 6072 "util/configparser.c" /* yacc.c:1652 */ +#line 6068 "util/configparser.c" /* yacc.c:1648 */ break; case 557: -#line 3003 "./util/configparser.y" /* yacc.c:1652 */ +#line 3003 "./util/configparser.y" /* yacc.c:1648 */ { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6086,11 +6082,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 6090 "util/configparser.c" /* yacc.c:1652 */ +#line 6086 "util/configparser.c" /* yacc.c:1648 */ break; -#line 6094 "util/configparser.c" /* yacc.c:1652 */ +#line 6090 "util/configparser.c" /* yacc.c:1648 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6115,13 +6111,14 @@ yyparse (void) /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; @@ -6204,10 +6201,12 @@ yyparse (void) | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -6269,7 +6268,6 @@ yyparse (void) yyresult = 0; goto yyreturn; - /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -6277,7 +6275,6 @@ yyparse (void) yyresult = 1; goto yyreturn; - #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -6288,10 +6285,6 @@ yyparse (void) /* Fall through. */ #endif - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -6321,7 +6314,7 @@ yyparse (void) #endif return yyresult; } -#line 3017 "./util/configparser.y" /* yacc.c:1918 */ +#line 3017 "./util/configparser.y" /* yacc.c:1907 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 895137a63..9a82ef13e 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.3.2. */ +/* A Bison parser, made by GNU Bison 3.0.5. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018 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 @@ -31,9 +30,6 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Debug traces. */ @@ -592,11 +588,11 @@ extern int yydebug; union YYSTYPE { -#line 66 "./util/configparser.y" /* yacc.c:1921 */ +#line 66 "./util/configparser.y" /* yacc.c:1910 */ char* str; -#line 600 "util/configparser.h" /* yacc.c:1921 */ +#line 596 "util/configparser.h" /* yacc.c:1910 */ }; typedef union YYSTYPE YYSTYPE; From 72738471f19e2d3604fab4f74558f65ad46ce27f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 18 Jun 2019 15:59:10 +0200 Subject: [PATCH 16/22] - make depend --- Makefile.in | 106 +++++++++++++++++++++++++++++++------------------- doc/Changelog | 1 + 2 files changed, 68 insertions(+), 39 deletions(-) diff --git a/Makefile.in b/Makefile.in index 3cde76242..e90427122 100644 --- a/Makefile.in +++ b/Makefile.in @@ -638,17 +638,19 @@ depend: # Dependencies dns.lo dns.o: $(srcdir)/services/cache/dns.c config.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/util/log.h \ - $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h $(srcdir)/validator/val_nsec.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h $(srcdir)/services/cache/dns.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h infra.lo infra.o: $(srcdir)/services/cache/infra.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h rrset.lo rrset.o: $(srcdir)/services/cache/rrset.c config.h $(srcdir)/services/cache/rrset.h \ @@ -778,7 +780,10 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ $(srcdir)/respip/respip.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/services/view.h $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h + $(srcdir)/services/view.h $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h \ + $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ + $(srcdir)/ipset/ipset.h view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ @@ -814,7 +819,8 @@ config_file.lo config_file.o: $(srcdir)/util/config_file.c config.h $(srcdir)/ut $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/util/iana_ports.inc + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/edns-subnet/edns-subnet.h \ + $(srcdir)/util/iana_ports.inc configlexer.lo configlexer.o: util/configlexer.c config.h $(srcdir)/util/configyyrename.h \ $(srcdir)/util/config_file.h util/configparser.h configparser.lo configparser.o: util/configparser.c config.h $(srcdir)/util/configyyrename.h \ @@ -847,26 +853,22 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(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)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/services/authzone.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 $(srcdir)/validator/validator.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_nsec3.h \ - $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_neg.h \ - $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h $(srcdir)/libunbound/context.h \ - $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h \ - $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h + $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h $(srcdir)/services/outside_network.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/services/authzone.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 \ + $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h $(PYTHONMOD_HEADER) \ + $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/net_help.h \ + $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h -mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(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 +mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.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)/sldns/wire2str.h @@ -929,14 +931,16 @@ tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/u $(srcdir)/services/modstack.h $(srcdir)/util/ub_event.h ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/tube.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h + $(srcdir)/util/tube.h \ + ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \ $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(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/modstack.h \ + winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/validator/autotrust.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ @@ -1028,13 +1032,27 @@ dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(srcdir)/dns64/dns64.h $(src $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/data/dname.h \ $(srcdir)/sldns/str2wire.h -edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h -subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h +edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h \ + $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h +subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h $(srcdir)/edns-subnet/subnetmod.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.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)/services/outbound_list.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/addrtree.h \ + $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/edns-subnet/subnet-whitelist.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/modstack.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h addrtree.lo addrtree.o: $(srcdir)/edns-subnet/addrtree.c config.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/edns-subnet/addrtree.h -subnet-whitelist.lo subnet-whitelist.o: $(srcdir)/edns-subnet/subnet-whitelist.c config.h +subnet-whitelist.lo subnet-whitelist.o: $(srcdir)/edns-subnet/subnet-whitelist.c config.h \ + $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ + $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h cachedb.lo cachedb.o: $(srcdir)/cachedb/cachedb.c config.h redis.lo redis.o: $(srcdir)/cachedb/redis.c config.h respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h \ @@ -1068,6 +1086,11 @@ ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelis $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h \ $(srcdir)/ipsecmod/ipsecmod-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/regional.h \ $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h +ipset.lo ipset.o: $(srcdir)/ipset/ipset.c config.h $(srcdir)/ipset/ipset.h $(srcdir)/util/module.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.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/regional.h $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h @@ -1116,7 +1139,12 @@ testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcod $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c config.h $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h -unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h +unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.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)/testcode/unitmain.h $(srcdir)/edns-subnet/addrtree.h \ + $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/services/outbound_list.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/edns-subnet.h unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ @@ -1188,7 +1216,8 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/rtt.h $(srcdir)/services/authzone.h $(srcdir)/validator/val_kcache.h \ - $(srcdir)/validator/val_neg.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/edns-subnet/addrtree.h \ + $(srcdir)/edns-subnet/edns-subnet.h \ unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h \ $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ @@ -1283,7 +1312,8 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/rtt.h $(srcdir)/services/authzone.h $(srcdir)/validator/val_kcache.h \ - $(srcdir)/validator/val_neg.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/edns-subnet/addrtree.h \ + $(srcdir)/edns-subnet/edns-subnet.h \ replay.lo replay.o: $(srcdir)/testcode/replay.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ @@ -1326,7 +1356,8 @@ unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/smallapp/unbound-checkconf.c $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/services/localzone.h \ $(srcdir)/services/view.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/modstack.h \ - $(srcdir)/respip/respip.h $(srcdir)/sldns/sbuffer.h $(PYTHONMOD_HEADER) + $(srcdir)/respip/respip.h $(srcdir)/sldns/sbuffer.h $(PYTHONMOD_HEADER) \ + $(srcdir)/edns-subnet/subnet-whitelist.h worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.c config.h $(srcdir)/libunbound/context.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ @@ -1465,6 +1496,3 @@ sha512.lo sha512.o: $(srcdir)/compat/sha512.c config.h reallocarray.lo reallocarray.o: $(srcdir)/compat/reallocarray.c config.h isblank.lo isblank.o: $(srcdir)/compat/isblank.c config.h strsep.lo strsep.o: $(srcdir)/compat/strsep.c config.h - -ipset.lo ipset.o: $(srcdir)/ipset/ipset.c $(srcdir)/ipset/ipset.h config.h $(srcdir)/util/module.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/services/cache/dns.h diff --git a/doc/Changelog b/doc/Changelog index 8b2866a96..62bc98f60 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ - Fix to make unbound-control with ipset, remove unused variable, use unsigned type because of comparison, and assign null instead of compare with it. Remade lex and yacc output. + - make depend 17 June 2019: Wouter - Master contains version 1.9.3 in development. From 0f3eac4a0e8d43052d984e395ab9156efa4845a6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 18 Jun 2019 16:25:11 +0200 Subject: [PATCH 17/22] - Added documentation to the ipset files (for doxygen output). --- doc/Changelog | 1 + ipset/ipset.c | 7 +++++++ ipset/ipset.h | 23 +++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 62bc98f60..210223d0d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ use unsigned type because of comparison, and assign null instead of compare with it. Remade lex and yacc output. - make depend + - Added documentation to the ipset files (for doxygen output). 17 June 2019: Wouter - Master contains version 1.9.3 in development. diff --git a/ipset/ipset.c b/ipset/ipset.c index 49484361d..85b2edea9 100755 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -1,3 +1,10 @@ +/** + * \file + * This file implements the ipset module. It can handle packets by putting + * the A and AAAA addresses that are configured in unbound.conf as type + * ipset (local-zone statements) into a firewall rule IPSet. For firewall + * blacklist and whitelist usage. + */ #include "config.h" #include "ipset/ipset.h" #include "util/regional.h" diff --git a/ipset/ipset.h b/ipset/ipset.h index 19a12e038..f60a8be8c 100755 --- a/ipset/ipset.h +++ b/ipset/ipset.h @@ -6,6 +6,29 @@ */ #ifndef IPSET_H #define IPSET_H +/** \file + * + * This file implements the ipset module. It can handle packets by putting + * the A and AAAA addresses that are configured in unbound.conf as type + * ipset (local-zone statements) into a firewall rule IPSet. For firewall + * blacklist and whitelist usage. + * + * To use the IPset module, install the libmnl-dev (or libmnl-devel) package + * and configure with --enable-ipset. And compile. Then enable the ipset + * module in unbound.conf with module-config: "ipset validator iterator" + * then create it with ipset -N blacklist iphash and then add + * local-zone: "example.com." ipset + * statements for the zones where you want the addresses of the names + * looked up added to the set. + * + * Set the name of the set with + * ipset: + * name-v4: "blacklist" + * name-v6: "blacklist6" + * in unbound.conf. The set can be used in this way: + * iptables -A INPUT -m set --set blacklist src -j DROP + * ip6tables -A INPUT -m set --set blacklist6 src -j DROP + */ #include "util/module.h" From 164f30201110a98debb38d65c33c22957ae7d793 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 18 Jun 2019 17:11:31 +0200 Subject: [PATCH 18/22] - Merge PR #6: Python module: support multiple instances - Merge PR #5: Python module: define constant MODULE_RESTART_NEXT - Merge PR #4: Python module: assign something useful to the per-query data store 'qdata' Noted in Changelog. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 210223d0d..56ceaf3c3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,10 @@ of compare with it. Remade lex and yacc output. - make depend - Added documentation to the ipset files (for doxygen output). + - Merge PR #6: Python module: support multiple instances + - Merge PR #5: Python module: define constant MODULE_RESTART_NEXT + - Merge PR #4: Python module: assign something useful to the + per-query data store 'qdata' 17 June 2019: Wouter - Master contains version 1.9.3 in development. From 78b2f1cc2046a163a176863aea89b3851741e357 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 18 Jun 2019 17:25:08 +0200 Subject: [PATCH 19/22] - Fix python dict reference and double free in config. --- doc/Changelog | 1 + pythonmod/pythonmod.c | 1 + util/config_file.c | 1 - 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 56ceaf3c3..2cb6d0124 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -12,6 +12,7 @@ - Merge PR #5: Python module: define constant MODULE_RESTART_NEXT - Merge PR #4: Python module: assign something useful to the per-query data store 'qdata' + - Fix python dict reference and double free in config. 17 June 2019: Wouter - Master contains version 1.9.3 in development. diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index e87ced13c..9006429ef 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -348,6 +348,7 @@ int pythonmod_init(struct module_env* env, int id) pe->module = PyImport_AddModule("__main__"); pe->dict = PyModule_GetDict(pe->module); pe->data = PyDict_New(); + Py_XINCREF(pe->data); PyModule_AddObject(pe->module, "mod_env", pe->data); /* TODO: deallocation of pe->... if an error occurs */ diff --git a/util/config_file.c b/util/config_file.c index 3a3ebcae3..119b22238 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -1398,7 +1398,6 @@ config_delete(struct config_file* cfg) free(cfg->version); free(cfg->module_conf); free(cfg->outgoing_avail_ports); - free(cfg->python_script); config_delstrlist(cfg->caps_whitelist); config_delstrlist(cfg->private_address); config_delstrlist(cfg->private_domain); From 1aa1facabc26b8cc6da3acec5e960983b72f5f2c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 24 Jun 2019 10:53:27 +0200 Subject: [PATCH 20/22] - Fix memleak in unit test, reported from the clang 8.0 static analyzer. --- doc/Changelog | 3 +++ testcode/memstats.c | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 2cb6d0124..a5df4d555 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +24 June 2019: Wouter + - Fix memleak in unit test, reported from the clang 8.0 static analyzer. + 18 June 2019: Wouter - PR #28: IPSet module, by Kevin Chou. Created a module to support the ipset that could add the domain's ip to a list easily. diff --git a/testcode/memstats.c b/testcode/memstats.c index dc29058ad..a253b00ac 100644 --- a/testcode/memstats.c +++ b/testcode/memstats.c @@ -106,9 +106,16 @@ get_codeline(rbtree_type* tree, char* key, char* func) cl = calloc(1, sizeof(*cl)); if(!cl) return 0; cl->codeline = strdup(key); - if(!cl->codeline) return 0; + if(!cl->codeline) { + free(cl); + return 0; + } cl->func = strdup(func); - if(!cl->func) return 0; + if(!cl->func) { + free(cl->codeline); + free(cl); + return 0; + } cl->alloc = 0; cl->node.key = cl->codeline; (void)rbtree_insert(tree, &cl->node); From da46ea24d5aaa1b0261348fb2cc8a1f463bbdce4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 25 Jun 2019 14:50:49 +0200 Subject: [PATCH 21/22] - For #45, check that 127.0.0.1 and ::1 are not used in unbound.conf when do-not-query-localhost is turned on, or at default on, unbound-checkconf prints a warning if it is found in forward-addr or stub-addr statements. --- doc/Changelog | 6 ++++++ smallapp/unbound-checkconf.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index a5df4d555..c3fceb6ba 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +25 June 2019: Wouter + - For #45, check that 127.0.0.1 and ::1 are not used in unbound.conf + when do-not-query-localhost is turned on, or at default on, + unbound-checkconf prints a warning if it is found in forward-addr or + stub-addr statements. + 24 June 2019: Wouter - Fix memleak in unit test, reported from the clang 8.0 static analyzer. diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 6b78216eb..ced35d695 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -146,6 +146,39 @@ check_mod(struct config_file* cfg, struct module_func_block* fb) edns_known_options_delete(&env); } +/** true is addr is a localhost address, 127.0.0.1 or ::1 (@port) */ +static int +str_addr_is_localhost(const char* a) +{ + if(strncmp(a, "127.", 4) == 0) return 1; + if(strncmp(a, "::1", 3) == 0) return 1; + return 0; +} + +/** check do-not-query-localhost */ +static void +donotquerylocalhostcheck(struct config_file* cfg) +{ + if(cfg->donotquery_localhost) { + struct config_stub* p; + struct config_strlist* s; + for(p=cfg->forwards; p; p=p->next) { + for(s=p->addrs; s; s=s->next) { + if(str_addr_is_localhost(s->str)) { + fprintf(stderr, "unbound-checkconf: warning: forward-addr: '%s' is specified for forward-zone: '%s', but do-not-query-localhost: yes means that the address will not be used for lookups.\n", s->str, p->name); + } + } + } + for(p=cfg->stubs; p; p=p->next) { + for(s=p->addrs; s; s=s->next) { + if(str_addr_is_localhost(s->str)) { + fprintf(stderr, "unbound-checkconf: warning: stub-addr: '%s' is specified for stub-zone: '%s', but do-not-query-localhost: yes means that the address will not be used for lookups.\n", s->str, p->name); + } + } + } + } +} + /** check localzones */ static void localzonechecks(struct config_file* cfg) @@ -606,6 +639,7 @@ morechecks(struct config_file* cfg) cfg->control_cert_file); } + donotquerylocalhostcheck(cfg); localzonechecks(cfg); view_and_respipchecks(cfg); #ifdef CLIENT_SUBNET From 36819adcc210a2d15aae57a4c3ee1a6cab7ff512 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 25 Jun 2019 15:14:07 +0200 Subject: [PATCH 22/22] Nicer spelling and layout. --- smallapp/unbound-checkconf.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index ced35d695..10c9c5c59 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -146,7 +146,7 @@ check_mod(struct config_file* cfg, struct module_func_block* fb) edns_known_options_delete(&env); } -/** true is addr is a localhost address, 127.0.0.1 or ::1 (@port) */ +/** true if addr is a localhost address, 127.0.0.1 or ::1 (@port) */ static int str_addr_is_localhost(const char* a) { @@ -165,14 +165,16 @@ donotquerylocalhostcheck(struct config_file* cfg) for(p=cfg->forwards; p; p=p->next) { for(s=p->addrs; s; s=s->next) { if(str_addr_is_localhost(s->str)) { - fprintf(stderr, "unbound-checkconf: warning: forward-addr: '%s' is specified for forward-zone: '%s', but do-not-query-localhost: yes means that the address will not be used for lookups.\n", s->str, p->name); + fprintf(stderr, "unbound-checkconf: warning: forward-addr: '%s' is specified for forward-zone: '%s', but do-not-query-localhost: yes means that the address will not be used for lookups.\n", + s->str, p->name); } } } for(p=cfg->stubs; p; p=p->next) { for(s=p->addrs; s; s=s->next) { if(str_addr_is_localhost(s->str)) { - fprintf(stderr, "unbound-checkconf: warning: stub-addr: '%s' is specified for stub-zone: '%s', but do-not-query-localhost: yes means that the address will not be used for lookups.\n", s->str, p->name); + fprintf(stderr, "unbound-checkconf: warning: stub-addr: '%s' is specified for stub-zone: '%s', but do-not-query-localhost: yes means that the address will not be used for lookups.\n", + s->str, p->name); } } }