]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- tests for localdata multiple RR, and implicit zones.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 28 Nov 2007 08:10:45 +0000 (08:10 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 28 Nov 2007 08:10:45 +0000 (08:10 +0000)
- can specify TXT records for local data.

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

doc/Changelog
doc/example.conf
doc/plan
doc/unbound.conf.5
services/localzone.c
testdata/localdata.rpl
util/configlexer.c
util/configlexer.lex

index 834fb9e760ec53ddd6831b3f48fe76b765208308..1bade5cb31c51741c45cc1e0ecd7afe74e00445f 100644 (file)
@@ -1,3 +1,11 @@
+28 November 2007: Wouter
+       - Changeup plan for 0.8 - no complication needed, a simple solution
+         has been chosen for authoritative features.
+       - you can use single quotes in the config file, so it is possible
+         to specify TXT records in local data.
+       - fixup small memory problem in implicit transparent zone creation.
+       - test for implicit zone creation and multiple RR RRsets local data.
+
 27 November 2007: Wouter
        - per suggestion in rfc2308, replaced default max-ttl value with 1 day.
        - set size of msgparse lookup table to 32, from 1024, so that its size
index e48cc6933e6f5648d56184b321711ae97603553b..b7a2069513ff4c5d8b061128d7ebcee5d26ae4f0 100644 (file)
@@ -275,6 +275,7 @@ server:
        # You can add locally served data with
        # local-zone: "local." static
        # local-data: "mycomputer.local. IN A 192.0.2.51"
+       # local-data: 'mytext.local TXT "content of text record"'
        #
        # You can override certain queries with
        # local-data: "adserver.example.com A 127.0.0.1"
index a30b475fbf5f499b3d4b8f1ff57bb124da02e862..e82b3f76544f03f52f78d003b0f7e7f32214a20c 100644 (file)
--- a/doc/plan
+++ b/doc/plan
@@ -203,14 +203,18 @@ X make overload mode work; phase 0 all ok, phase 1 some threads close ports,
          can be used to block AS112 traffic, option to unblock a zone.
        * after checking acl, do iter: static, blacklist, forwards, recurse.
 * Forward-local-zone to NSD.
-       - include in package, autoforkexec on localhost to do so.
+       - in package, autoforkexec on localhost to do so.
+       - not included. Not necessary for localhost and AS112 service.
 * forward local zone to remote server.
+       - not included. Not necessary for localhost and AS112 service.
 * stub zones - send queries for a zone to configged nameserver.
+       - Can be used for complicated setups. So, run auth server on a 
+         different port or pc, and stub it on the resolver. Resolver is
+         not auth for zones, but resolution works. This enforces the split
+         of recursive and auth servers.
 * test local zones
        * for speed
        * for correctness on corner cases
-       * for validation
-       * in case you get data on localzone in an answer (from rootserver).
 
 *** Library use
 * Create library that can do:
@@ -240,8 +244,6 @@ X make overload mode work; phase 0 all ok, phase 1 some threads close ports,
 *** Features features
 * aggressive negative caching for NSEC, NSEC3.
 * multiple queries per question, server exploration, server selection.
-* option to use real entropy for randomness (mix it in once in a while).
-* check query, enforce qdsection, checking for forgery-resilience.
 * NSID support.
 * support TSIG on queries, for validating resolver deployment.
 * Nicer statistics
index 2e82a018f4837c9a7e3ae787048a340285c20780..badee38bd4c6d211c13e4c8c0eb5502e8585cfba 100644 (file)
@@ -415,6 +415,8 @@ The query has to match exactly unless you configure the local-zone as
 redirect. If not matched exactly, the local-zone type determines
 further processing. If local-data is configured that is not a subdomain of
 a local-zone, a transparent local-zone is configured. 
+For record types such as TXT, use single quotes, as in 
+local-data: 'example. TXT "text"'.
 .El
 .Ss Stub Zone Options
 There may be multiple
index 270f48bca04554ab4db8a65d297a562e3fe45992..59b71963e96845f9173dbfa38ff29f8ce675bdf2 100644 (file)
@@ -710,15 +710,16 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg)
                                have_name = 1;
                        } else {
                                int m;
-                               free(rr_name);
                                if(rr_class != dclass) {
                                        /* process other classes later */
+                                       free(rr_name);
                                        have_other_classes = 1;
                                        continue;
                                }
                                /* find smallest shared topdomain */
                                (void)dname_lab_cmp(nm, nmlabs, 
                                        rr_name, labs, &m);
+                               free(rr_name);
                                if(m < match)
                                        match = m;
                        }
@@ -735,6 +736,8 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg)
                        log_err("out of memory");
                        return 0;
                }
+               log_nametypeclass(VERB_ALGO, "implicit transparent local-zone", 
+                       n2, 0, dclass);
                if(!lz_enter_zone_dname(zones, n2, nmlen, match, 
                        local_zone_transparent, dclass)) {
                        return 0;
index 50f7f5707c227b983ed54d284bae10a74810f188..5bb259efd5900a22f65ec6b998e125a037d62f3c 100644 (file)
@@ -7,12 +7,18 @@ server:
 
        ; implicit transparent zone should not block id.server
        local-data: "mydata.server. CH A 10.11.12.13"
+       local-data: "myd2.server. CH A 10.11.12.14"
+       local-data: 'myd3.server. CH TXT "a text record"'
+       ; together implicit CH top domain .server is created transparent.
 
        ; static zone
        local-zone: "local" static
        local-data: "local SOA nobody nobody 1 2 3 4 5"
        local-data: "serv.local. A 20.30.40.50"
+       ; multiple RRs in this RRset.
        local-data: "bla.bla.local. A 20.30.40.51"
+       local-data: "bla.bla.local. A 20.30.40.52"
+       local-data: "bla.bla.local. A 20.30.40.53"
        
        ; static zone (no soa)
        local-zone: "noso.local" static
@@ -24,6 +30,13 @@ server:
        ; refuse zone (error)
        local-zone: "refuse.top." refuse
 
+       ; create implicit data in the IN domain as well
+       local-data: "a.a.implicit. A 20.30.41.50"
+       local-data: "b.a.implicit. A 20.30.42.50"
+       local-data: "b.b.implicit. A 20.30.43.50"
+       local-data: "b.c.implicit. A 20.30.45.50"
+       local-data: "c.c.implicit. A 20.30.44.50"
+
 CONFIG_END
 SCENARIO_BEGIN Test local data queries
 
@@ -169,6 +182,40 @@ SECTION QUESTION
 doing.noso.local. IN MX
 ENTRY_END
 
+; positive multiple RR
+STEP 19 QUERY
+ENTRY_BEGIN
+SECTION QUESTION
+bla.bla.local. IN A
+ENTRY_END
+STEP 20 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RA AA
+SECTION QUESTION
+bla.bla.local. IN A
+SECTION ANSWER
+bla.bla.local. IN A 20.30.40.51
+bla.bla.local. IN A 20.30.40.52
+bla.bla.local. IN A 20.30.40.53
+ENTRY_END
+
+; second implicit transparent zone.
+STEP 21 QUERY
+ENTRY_BEGIN
+SECTION QUESTION
+b.b.implicit. IN A
+ENTRY_END
+STEP 22 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RA AA
+SECTION QUESTION
+b.b.implicit. IN A
+SECTION ANSWER
+b.b.implicit. 3600 IN A 20.30.43.50
+ENTRY_END
+
 ; localhost A default
 STEP 30 QUERY
 ENTRY_BEGIN
index 12a07d21108f69fa87251411796a454548977075..4e88f6fb1d58d02bb9d56368fa814bddc6bad87a 100644 (file)
@@ -365,8 +365,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 82
-#define YY_END_OF_BUFFER 83
+#define YY_NUM_RULES 86
+#define YY_END_OF_BUFFER 87
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -374,88 +374,89 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[723] =
+static yyconst flex_int16_t yy_accept[732] =
     {   0,
-        1,    1,   70,   70,   74,   74,   78,   78,   83,   81,
-        1,   68,   69,    2,   82,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   70,   71,   82,   72,   82,   77,   74,   75,
-       76,   82,   78,   79,   80,   82,   81,    0,    1,    2,
-        2,    2,    2,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   70,    0,   77,    0,   74,   78,    0,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   41,   81,
-       81,   81,   81,    6,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   17,   81,   11,
-       12,   81,   14,   13,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,    3,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-
-       81,   81,   81,   81,   81,   81,   73,   81,   81,   81,
-       81,   81,   81,   81,   81,   20,   81,   81,   81,   81,
-       81,   81,   21,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   53,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   52,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   18,   81,   81,
-       81,   81,   81,   81,   81,   81,   19,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-
-       81,   15,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   42,   43,   40,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,    5,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   67,   66,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   22,   81,   81,
-       81,   81,   65,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   38,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,    4,   81,   81,   81,   81,   81,   81,   81,   81,
-
-       81,   81,   81,   81,   81,   81,   81,   81,   45,   46,
-       44,   81,   81,   81,   81,   51,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   57,   81,   81,   81,
-       81,   81,   81,   81,   28,   81,   81,   81,   81,   81,
-       50,   81,   81,   81,   81,   81,   81,   81,   81,   54,
-       81,   81,   81,   81,   81,   81,    7,   81,   81,   81,
-       81,   81,   81,   59,   81,   81,   81,   81,   49,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   29,   30,
-       62,   81,   81,   24,   81,   81,   81,   81,    8,   81,
-
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   63,   23,   25,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   10,   81,   81,
-       81,   81,   81,    9,   26,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       31,   81,   81,   27,   81,   55,   56,   81,   81,   58,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   16,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   35,   81,   81,   61,   47,   81,   81,   37,
-
-       36,   81,   32,   81,   60,   81,   81,   81,   33,   81,
-       81,   48,   39,   34,   81,   81,   81,   81,   81,   81,
-       64,    0
+        1,    1,   70,   70,   74,   74,   78,   78,   82,   82,
+       87,   85,    1,   68,   69,    2,   73,   86,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   70,   71,   86,   72,   86,
+       74,   75,   76,   86,   81,   78,   79,   80,   86,   82,
+       83,   84,   86,   85,    0,    1,    2,    2,    2,    2,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   70,    0,
+       74,    0,   81,    0,   78,   82,    0,   85,   85,   85,
+
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   41,   85,   85,
+       85,   85,    6,   85,   85,   85,   85,   85,   85,   85,
+
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   17,   85,   11,   12,
+       85,   14,   13,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,    3,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   77,   85,   85,   85,   85,
+       85,   85,   85,   85,   20,   85,   85,   85,   85,   85,
+       85,   21,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   53,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   52,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   18,   85,   85,   85,
+       85,   85,   85,   85,   85,   19,   85,   85,   85,   85,
+
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       15,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   42,   43,   40,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,    5,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   67,   66,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   22,   85,   85,   85,
+       85,   65,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   38,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+
+        4,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   45,   46,   44,
+       85,   85,   85,   85,   51,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   57,   85,   85,   85,   85,
+       85,   85,   85,   28,   85,   85,   85,   85,   85,   50,
+       85,   85,   85,   85,   85,   85,   85,   85,   54,   85,
+       85,   85,   85,   85,   85,    7,   85,   85,   85,   85,
+       85,   85,   59,   85,   85,   85,   85,   49,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   29,   30,   62,
+
+       85,   85,   24,   85,   85,   85,   85,    8,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   63,   23,   25,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   10,   85,   85,   85,
+       85,   85,    9,   26,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   31,
+       85,   85,   27,   85,   55,   56,   85,   85,   58,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   16,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+
+       85,   35,   85,   85,   61,   47,   85,   85,   37,   36,
+       85,   32,   85,   60,   85,   85,   85,   33,   85,   85,
+       48,   39,   34,   85,   85,   85,   85,   85,   85,   64,
+        0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -463,17 +464,17 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    5,    6,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    7,    1,    1,    1,    1,    1,
-        8,    9,    1,   10,    1,    1,    1,   11,    1,    1,
+        1,    2,    1,    5,    6,    1,    1,    1,    7,    1,
+        1,    1,    1,    1,    8,    1,    1,    1,    1,    1,
+        9,   10,    1,   11,    1,    1,    1,   12,    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,   12,    1,    1,    1,    1,   13,   14,   15,   16,
+        1,   13,    1,    1,    1,    1,   14,   15,   16,   17,
 
-       17,   18,   19,   20,   21,    1,   22,   23,   24,   25,
-       26,   27,   28,   29,   30,   31,   32,   33,   34,   35,
-       36,   37,    1,    1,    1,    1,    1,    1,    1,    1,
+       18,   19,   20,   21,   22,    1,   23,   24,   25,   26,
+       27,   28,   29,   30,   31,   32,   33,   34,   35,   36,
+       37,   38,    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,
@@ -490,522 +491,534 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[38] =
+static yyconst flex_int32_t yy_meta[39] =
     {   0,
-        1,    2,    3,    4,    4,    1,    1,    1,    1,    1,
+        1,    2,    3,    4,    5,    1,    6,    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
     } ;
 
-static yyconst flex_int16_t yy_base[732] =
+static yyconst flex_int16_t yy_base[743] =
     {   0,
-        0,    0,   35,   38,   49,   53,   59,   63, 1469, 1456,
-       42, 1470, 1470,   68,   72,   34,   66,   69,   33,   70,
-       72,   75,   73,   77,   81,   84,   88,   86,   89,   92,
-       96,  105, 1455, 1470, 1470, 1470,  106, 1454, 1463, 1470,
-     1470,  123, 1452, 1470, 1470,  119, 1451,  127,  128,    0,
-      131,    0,    0,  125,  126,   90,  127,  135,  132,  133,
-      134,  136,  137,  139,  145,  142,  147,  153,  155,  151,
-      157,  158,  159,  160,  162,  164,  166,  168,  169,  171,
-      172, 1450,  184, 1449,  200, 1458, 1447,  188,  186,  187,
-      185,  196,  194,  197,  198,  200,  204,  209,  208,  206,
-
-      215,  221,  212,  216,  229,  226,  232,  228,  233,  230,
-      234,  237,  238,  241,  240,  244,  250,  251,  252,  248,
-      255,  257,  258,  263,  265,  269,  264,  273,  275,  281,
-      277,  282,  283,  284,  286,  287,  288,   48,  289,  291,
-      298,  292,  301,  304,  306,  312,  309,  314,  321,  317,
-      310,  318,  320,  337,  324,  323,  325,  331,  327,  330,
-      344,  334,  345,  347,  348,  354,  355,  357,  359,  361,
-      373,  369,  371,  379,  377,  378,  380,  381, 1446,  384,
-      385,  386,  387, 1445,  389,  396,  390,  401,  392,  408,
-      394,  405,  410,  412,  399,  335,  414,  415,  416,  425,
-
-      422,  428,  421,  432,  437,  443,  440,  442,  444,  450,
-      447,  449,  446,  452,  453,  456,  460,  455,  468,  469,
-      475,  471,  473,  478,  462,  481,  480,  482,  484,  489,
-      486,  492,  495,  501,  497,  499,  500,  502,  504,  505,
-      507,  508,  515,  516,  517,  519,  520, 1444,  523, 1443,
-     1442,  526, 1441, 1440,  529,  527,  528,  535,  536,  544,
-      539,  547,  537,  549,  553,  554,  557,  541,  564,  565,
-      561,  566,  559,  570,  571,  573,  569,  579, 1439,  577,
-      583,  584,  585,  586,  592,  589,  588,  590,  594,  602,
-      596,  603,  598,  607,  604,  608,  609,  612,  619,  611,
-
-      614,  621,  626,  616,  623,  636, 1438,  642,  640,  628,
-      638,  647,  648,  630,  645, 1437,  651,  654,  655,  657,
-      661,  668, 1436,  656,  664,  669,  670,  671,  672,  678,
-      673,  674,  680,  682,  684,  691,  685,  690,  692, 1435,
-      693,  701,  695,  698,  704,  705,  707,  709,  710,  711,
-      712,  713,  714, 1434,  718,  717,  715,  724,  736,  738,
-      739,  737,  741,  743,  749,  745,  747,  746,  748,  756,
-      753,  758,  768,  762,  765,  769,  770, 1433,  776,  780,
-      783,  779,  772,  785,  782,  786, 1432,  787,  789,  791,
-      794,  792,  795,  796,  797,  799,  798,  802,  806,  818,
-
-      820, 1431,  816,  824,  826,  821,  833,  817,  819,  829,
-      830,  831,  832,  838,  841,  844, 1430, 1429, 1428,  842,
-      836,  848,  853,  854,  855,  857,  858,  859, 1427,  861,
-      860,  863,  864,  865,  866,  869,  876,  880,  870,  882,
-      883,  886,  893,  890,  891,  894, 1426, 1425,  895,  897,
-      902,  912,  900,  906,  908,  914,  916, 1424,  922,  918,
-      919,  921, 1423,  923,  924,  927,  930,  934,  933,  937,
-      945,  950,  952,  954,  938, 1422,  960,  961,  868,  958,
-      964,  962,  944,  946,  966,  967,  969,  970,  971,  977,
-      972, 1421,  981,  988,  974,  982,  984,  990,  999,  997,
-
-      995, 1000, 1001, 1008, 1005, 1007, 1010, 1011, 1420, 1419,
-     1418, 1019, 1013,  720, 1016, 1417, 1017, 1020, 1023, 1024,
-     1027, 1028, 1032, 1031, 1041, 1030, 1042, 1044, 1045, 1034,
-     1048, 1053, 1049, 1057, 1056, 1058, 1416, 1059, 1061, 1063,
-     1062, 1069, 1070, 1077, 1415, 1074, 1079, 1081, 1082, 1083,
-     1414, 1084, 1085, 1086, 1088, 1091, 1095, 1101, 1092, 1413,
-     1104, 1106, 1096, 1107, 1111, 1112, 1412, 1119, 1108, 1120,
-     1113, 1116, 1122, 1411, 1123, 1126, 1128, 1137, 1410, 1130,
-     1136, 1138, 1140, 1141, 1143, 1144, 1146, 1148, 1409, 1408,
-     1407, 1152, 1156, 1406, 1160, 1166, 1162, 1153, 1405, 1164,
-
-     1165, 1170, 1171, 1172, 1175, 1173, 1174, 1176, 1177, 1178,
-     1180, 1185, 1186, 1190, 1192, 1191, 1195, 1404, 1403, 1402,
-     1196, 1200, 1207, 1209, 1199, 1201, 1211, 1214, 1212, 1218,
-     1220, 1221, 1222, 1228, 1224, 1229, 1231, 1401, 1230, 1232,
-     1237, 1234, 1241, 1400, 1399, 1244, 1249, 1254, 1256, 1245,
-     1262, 1260, 1247, 1261, 1263, 1265, 1264, 1266, 1267, 1268,
-     1398, 1272, 1274, 1396, 1270, 1388, 1372, 1277, 1275, 1371,
-     1281, 1282, 1283, 1288, 1290, 1293, 1285, 1295, 1296, 1369,
-     1305, 1306, 1292, 1315, 1319, 1302, 1307, 1322, 1324, 1325,
-     1327, 1328, 1367, 1332, 1333, 1366, 1365, 1316, 1336, 1364,
-
-     1363, 1342, 1362, 1339, 1358, 1334, 1345, 1347, 1309, 1349,
-     1352, 1299,  639,  463, 1337, 1350, 1354, 1357, 1355, 1361,
-      429, 1470, 1385, 1389, 1393,  369, 1397, 1401,  267, 1403,
-     1405
+        0,    0,   36,   39,   43,   50,   62,   74,   55,   67,
+     1513, 1499,   49, 1514, 1514,   81, 1514,   88,   32,   83,
+       76,   78,   60,   89,   94,   86,   87,   95,   88,   97,
+      103,  104,  112,   98,  121, 1498, 1514, 1514, 1514,   57,
+     1497, 1514, 1514,  116, 1496, 1506, 1514, 1514,  136, 1494,
+     1514, 1514,  127, 1493,  142,  146,    0,  149,    0,    0,
+      142,  144,  137,  146,  153,  150,  151,  152,  155,  158,
+      157,  159,  165,  171,  170,  172,  173,  175,  174,  176,
+      114,  180,  183,  185,  186,  188,  187,  194, 1492,  204,
+     1491,  210, 1490,  216, 1500, 1488,  208,  209,  212,  213,
+
+      216,  215,  217,  218,  225,  219,  226,  229,  231,  238,
+      241,  243,  244,  250,  247,  253,  251,  254,  255,  256,
+      257,  259,  261,  265,  266,  273,  276,  267,  270,  277,
+      278,  283,  279,  281,  293,  287,  297,  299,  305,  289,
+      301,  302,  306,  303,  309,  311,  310,  313,  315,  326,
+      316,  323,  327,  329,  338,  330,  334,  345,  341,  331,
+      342,  343,  361,  344,  348,  347,  359,  351,  352,  369,
+      353,  362,  368,  373,  378,  379,  380,  381,  384,  387,
+      386,  394,  401,  397,  398,  399,  404, 1487,  402,  406,
+      407,  409, 1486,  410,  417,  411,  423,  413,  430,  415,
+
+      426,  429,  433,  434,  421,  436,  437,  440,  450,  446,
+      457,  447,  460,  463,  469,  466,  468,  449,  475,  472,
+      473,  471,  474,  438,  477,  481,  483,  487,  484,  497,
+      493,  495,  496,  494,  500,  502,  505,  503,  509,  515,
+      504,  510,  521,  522,  525,  517,  520,  526,  531,  534,
+      537,  527,  538,  528,  540,  545, 1485,  548, 1484, 1483,
+      550, 1482, 1481,  554,  551,  552,  553,  556,  560,  561,
+      563,  567,  571,  573,  574,  577,  575,  584,  585,  586,
+      579,  590,  591,  593,  595,  597,  598, 1480,  601,  602,
+      603,  606,  604,  613,  611,  609,  615,  618,  621,  623,
+
+      625,  626,  628,  629,  630,  631,  632,  633,  636,  639,
+      646,  648,  638,  642,  662, 1479,  659,  663,  657,  664,
+      665,  667,  668,  669, 1478,  671,  673,  674,  677,  680,
+      688, 1477,  684,  689,  690,  691,  693,  694,  697,  695,
+      701,  709,  696,  704,  706,  711,  712,  713, 1476,  716,
+      723,  720,  722,  726,  724,  725,  731,  732,  733,  734,
+      735,  736, 1475,  740,  743,  741,  742,  756,  762,  758,
+      761,  763,  764,  770,  767,  769,  771,  774,  775,  778,
+      790,  794,  768,  791,  795,  796, 1474,  802,  806,  809,
+      798,  805,  811,  808,  812, 1473,  813,  814,  815,  816,
+
+      817,  819,  821,  820,  825,  822,  826,  838,  844,  845,
+     1472,  832,  842,  848,  779,  854,  851,  852,  853,  855,
+      856,  858,  859,  862,  873, 1471, 1470, 1469,  863,  865,
+      857,  875,  864,  884,  867,  882,  880, 1468,  887,  888,
+      889,  891,  890,  892,  894,  896,  900,  893,  901,  902,
+      906,  916,  903,  910,  914, 1467, 1466,  917,  919,  921,
+      933,  935,  924,  927,  931,  936, 1465,  945,  938,  941,
+      942, 1464,  944,  947,  950,  952,  953,  954,  956,  964,
+      966,  970,  972,  973, 1463,  979,  980,  961,  978,  986,
+      982,  983,  984,  987,  988,  990,  992,  991,  998,  994,
+
+     1462, 1005, 1011,  996, 1007, 1004, 1013, 1024, 1025, 1017,
+     1026, 1018, 1032, 1029, 1033, 1035, 1036, 1461, 1460, 1459,
+     1043, 1039,  744, 1041, 1458, 1045, 1048, 1031, 1046, 1052,
+     1054, 1053, 1059, 1067, 1056, 1068, 1060, 1069, 1070, 1071,
+     1076, 1072, 1080, 1078, 1079, 1457, 1082, 1084, 1086, 1092,
+     1094, 1096, 1100, 1456, 1102, 1097, 1103, 1104, 1105, 1455,
+     1109, 1107, 1108, 1113, 1116, 1118, 1123, 1126, 1454, 1127,
+     1129, 1130, 1133, 1131, 1135, 1453, 1140, 1134, 1141, 1143,
+     1136, 1146, 1452, 1147, 1149, 1151, 1161, 1451, 1160, 1162,
+     1153, 1163, 1167, 1154, 1170, 1171, 1174, 1447, 1443, 1442,
+
+     1178, 1181, 1441, 1183, 1189, 1185, 1187, 1437, 1188, 1190,
+     1194, 1195, 1196, 1191, 1197, 1198, 1199, 1201, 1203, 1208,
+     1209, 1210, 1213, 1219, 1215, 1216, 1436, 1432, 1431, 1220,
+     1221, 1231, 1233, 1223, 1227, 1235, 1237, 1238, 1243, 1244,
+     1245, 1246, 1247, 1253, 1254, 1255, 1430, 1250, 1256, 1261,
+     1257, 1266, 1424, 1396, 1270, 1272, 1277, 1279, 1267, 1286,
+     1283, 1284, 1273, 1285, 1287, 1289, 1290, 1292, 1295, 1395,
+     1296, 1298, 1394, 1299, 1393, 1392, 1303, 1300, 1390, 1305,
+     1306, 1307, 1311, 1312, 1317, 1308, 1316, 1320, 1389, 1319,
+     1327, 1328, 1332, 1336, 1337, 1339, 1341, 1343, 1345, 1349,
+
+     1351, 1388, 1354, 1356, 1387, 1385, 1346, 1358, 1384, 1329,
+     1360, 1021, 1363,  782, 1357, 1369, 1371,  644, 1373, 1375,
+      530,  355,  223, 1364, 1377, 1366, 1378, 1379, 1382,  189,
+     1514, 1410, 1416, 1422, 1428,  136, 1434, 1440, 1446,   83,
+     1451, 1457
     } ;
 
-static yyconst flex_int16_t yy_def[732] =
+static yyconst flex_int16_t yy_def[743] =
     {   0,
-      722,    1,  723,  723,  724,  724,  725,  725,  722,  726,
-      722,  722,  722,  727,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  728,  722,  722,  722,  728,  729,  722,  722,
-      722,  729,  730,  722,  722,  730,  726,  726,  722,  731,
-      727,  731,  727,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  728,  728,  729,  729,  722,  730,  730,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,    0,  722,  722,  722,  722,  722,  722,  722,  722,
-      722
+      731,    1,  732,  732,  733,  733,  734,  734,  735,  735,
+      731,  736,  731,  731,  731,  737,  731,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  738,  731,  731,  731,  738,
+      739,  731,  731,  739,  740,  731,  731,  731,  740,  741,
+      731,  731,  741,  736,  736,  731,  742,  737,  742,  737,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  738,  738,
+      739,  739,  740,  740,  731,  741,  741,  736,  736,  736,
+
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+        0,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      731,  731
     } ;
 
-static yyconst flex_int16_t yy_nxt[1508] =
+static yyconst flex_int16_t yy_nxt[1553] =
     {   0,
-       10,   11,   12,   12,   13,   14,   10,   10,   10,   10,
-       10,   15,   16,   10,   17,   18,   10,   19,   10,   20,
-       21,   22,   23,   24,   25,   26,   27,   10,   28,   29,
-       30,   31,   32,   10,   10,   10,   10,   34,   35,   36,
-       34,   35,   36,   49,   48,   48,   37,   50,   54,   37,
-       39,   40,   40,   41,   39,   40,   40,   41,   59,   48,
-       42,   44,   44,   45,   42,   44,   44,   45,  175,   52,
-       46,   52,   52,   47,   46,   47,   47,   48,   55,   53,
-       48,   48,   60,   48,   48,   56,   48,   62,   48,   57,
-       61,   64,   48,   68,   58,   48,   63,   48,   65,   48,
-
-       48,   48,   66,   48,   77,   75,   67,   48,   71,   82,
-       82,   73,   69,   72,   74,   70,   48,   80,   91,   76,
-       78,   81,   87,   87,   84,   79,   84,   84,   47,   49,
-       47,   47,   52,   50,   52,   52,   48,   48,   48,   89,
-       90,   93,   53,   48,   48,   48,   48,   48,   48,   96,
-       48,   98,   97,   48,   99,   92,   48,  104,   48,  102,
-       94,   95,   48,  103,   48,  105,   48,  100,   48,   48,
-       48,   48,  109,   48,  101,   48,  106,   48,  107,   48,
-       48,  108,   48,   48,  111,  117,  110,   82,   82,  112,
-      113,   87,   87,  118,  115,  114,   48,   48,   48,  116,
-
-      119,   84,  120,   84,   84,   48,  121,   48,   48,   48,
-      122,   48,  123,  129,  124,   48,  130,   48,  125,   48,
-       48,  136,  135,   48,  126,  127,   48,   48,  131,  138,
-      128,  132,   48,  137,  133,  140,  134,   48,  142,   48,
-       48,   48,  141,   48,   48,   48,  143,  139,   48,   48,
-      144,   48,   48,  147,  149,   48,  152,  154,  150,   48,
-      145,   48,   48,   48,  146,  155,   48,   84,   48,   48,
-      148,  158,  160,  151,   48,   48,   48,  157,  153,  164,
-       48,  156,  159,  163,   48,  165,   48,  167,   48,  161,
-      162,  166,   48,   48,   48,   48,  171,   48,   48,   48,
-
-       48,  173,   48,   48,  177,  178,  170,  168,  179,   48,
-      174,  176,   48,  169,  172,   48,  184,   48,  185,  180,
-       48,   48,  181,   48,  183,   48,  182,  188,   48,   48,
-      187,   48,   48,  189,   48,   48,   48,  201,   48,  186,
-      190,   48,   48,  199,  192,   48,   48,  191,   48,  198,
-      193,  194,  204,  205,  200,   48,   48,  202,   48,   48,
-      203,  195,  196,  197,  206,   48,   48,  242,   48,   47,
-       48,  207,   48,  208,  214,  211,  209,  213,  210,  216,
-       48,  215,   48,  218,   48,  219,  217,  212,   48,   48,
-       48,   48,   48,  223,  221,   48,   48,   48,   48,  220,
-
-       48,   48,  229,   48,  225,   48,  226,   48,  228,  227,
-       48,  222,   48,  231,  235,  224,   48,  238,  230,   48,
-      232,   48,  234,   48,  236,   48,   48,   48,  241,  237,
-      243,  246,   48,   48,  240,  239,   48,  233,  248,   48,
-       48,  245,  250,   48,  244,  247,  249,  251,   48,  252,
-      253,   48,  254,   48,   48,   48,  256,   48,   48,  255,
-       48,   48,  257,   48,   48,  258,   48,   48,  260,  266,
-      262,   48,  265,   48,   48,  263,  259,  261,  264,   48,
-       48,  270,   48,  267,   48,  269,   48,  272,  271,   48,
-      274,   48,   48,   48,  273,   48,  276,   48,  278,  279,
-
-       48,  280,  277,   48,  268,  275,   48,  283,   48,  284,
-       48,   48,   48,   48,  285,   48,   48,  281,   48,   48,
-      282,  289,  288,  290,  291,  287,   48,   48,   48,  286,
-       48,   48,  296,  295,   48,  299,  293,   48,   48,   48,
-       48,  294,  300,  292,  304,  301,   48,   48,   48,  302,
-       48,  297,   48,  298,  307,   48,  303,  308,   48,  309,
-       48,  311,  310,  305,   48,   48,  315,  312,   48,  314,
-       48,  306,   48,  313,  316,   48,   48,   48,  318,  317,
-       48,   48,   48,  323,   48,  319,  321,  320,   48,  322,
-       48,  325,  326,  324,   48,   48,   48,   48,  331,   48,
-
-       48,   48,  329,   48,  333,   48,  335,   48,  328,   48,
-      330,  332,  327,   48,   48,   48,  336,  340,   48,   48,
-       48,  334,   48,   48,  337,   48,  338,   48,  339,  341,
-       48,  345,   48,  350,   48,  348,  349,   48,  346,   48,
-      352,   48,  342,  344,  343,  351,  354,   48,  355,   48,
-       48,   48,  353,   48,  356,  347,   48,  357,   48,   48,
-      361,  358,   48,  359,  360,   48,   48,   48,   48,  362,
-      364,  365,   48,  367,  368,   48,  363,  366,  370,   48,
-       48,   48,   48,   48,   48,   48,  369,  373,  374,   48,
-      378,   48,  375,   48,  376,   48,   48,  371,  381,  377,
-
-      372,   48,   48,   48,   48,  387,   48,  386,  380,   48,
-      383,  379,   48,  382,  388,   48,   48,  385,   48,  389,
-       48,   48,   48,   48,   48,   48,   48,  384,   48,   48,
-      390,   48,  391,  550,  397,   48,  399,  395,  392,  394,
-      401,  393,  398,  396,  403,  400,  402,   48,   48,   48,
-       48,  404,   48,  405,   48,  408,   48,   48,   48,   48,
-       48,  409,  410,  417,   48,  406,  411,   48,  418,   48,
-      412,  407,  413,   48,  414,  416,   48,  415,  419,   48,
-       48,   48,  424,   48,  421,  422,  425,   48,  423,  426,
-       48,   48,  420,   48,   48,  429,   48,   48,   48,  427,
-
-       48,  428,   48,   48,  433,   48,   48,   48,   48,   48,
-       48,  437,  430,   48,  438,  432,  431,   48,  435,  440,
-      434,  436,  443,  441,  444,  439,  445,   48,   48,   48,
-       48,   48,   48,  442,  447,   48,  448,   48,  449,  450,
-       48,   48,   48,   48,   48,  446,  451,   48,  452,   48,
-      457,  458,   48,   48,  454,   48,  460,  456,  453,   48,
-      459,  461,  455,  463,   48,   48,   48,  465,   48,   48,
-       48,   48,   48,  467,   48,   48,   48,   48,  466,   48,
-       48,   48,  474,  462,  464,  475,  476,   48,  468,  469,
-      470,   48,  472,   48,   48,  473,  477,   48,  471,  482,
-
-      478,   48,   48,  515,   48,   48,   48,  480,   48,  481,
-      492,   48,  479,   48,  485,  487,  486,   48,  491,   48,
-      483,  484,  489,   48,  490,   48,  488,   48,  497,   48,
-       48,  494,   48,   48,   48,   48,  493,  498,   48,  502,
-      496,   48,  495,  503,   48,   48,  504,  499,   48,   48,
-      500,  508,  512,  501,  505,   48,   48,   48,  506,  507,
-      509,   48,  510,   48,  511,   48,  513,  514,  516,   48,
-      517,   48,   48,   48,  521,   48,  522,   48,   48,  524,
-       48,   48,   48,   48,  518,   48,  519,  525,   48,  528,
-      526,  520,   48,   48,  531,   48,  535,  530,  529,   48,
-
-      533,   48,  523,  538,  532,  536,   48,  527,   48,  537,
-       48,   48,   48,  534,  542,  540,   48,  539,   48,   48,
-      545,   48,   48,  546,   48,  548,  551,   48,   48,  544,
-       48,   48,  553,  547,   48,   48,  541,  543,   48,   48,
-      549,   48,   48,   48,  559,   48,  555,  552,  558,  556,
-      557,  560,   48,   48,  554,   48,   48,  563,  562,   48,
-       48,  564,  565,  567,   48,  568,  561,   48,   48,   48,
-       48,  574,   48,   48,   48,  572,  573,  569,  566,  570,
-       48,   48,  571,  575,  577,   48,  578,  579,   48,  580,
-       48,  576,   48,   48,   48,   48,   48,   48,  585,   48,
-
-      588,  589,   48,   48,  581,  590,   48,   48,  586,  587,
-      582,  591,   48,  583,  584,   48,  594,   48,   48,   48,
-      593,  592,   48,   48,   48,  595,  598,   48,  597,  599,
-       48,   48,  601,   48,   48,  596,  603,   48,  602,   48,
-      607,   48,  604,  608,  600,  609,  606,   48,   48,   48,
-      610,   48,   48,  605,   48,   48,  612,   48,  613,   48,
-      615,  617,  618,   48,   48,  616,  619,   48,  611,  614,
-      620,   48,  621,   48,  622,   48,   48,   48,  625,  623,
-      624,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-      634,   48,  626,  627,  628,  629,   48,   48,  639,  632,
-
-      638,   48,   48,   48,  631,  633,   48,   48,  635,  630,
-       48,   48,   48,  636,  643,  637,  640,  644,   48,  645,
-       48,  647,   48,   48,  641,   48,  642,  648,  646,   48,
-      649,   48,   48,   48,  651,   48,  652,  650,  654,   48,
-       48,   48,   48,   48,  656,   48,  653,  661,   48,  657,
-      655,  658,   48,  662,  664,   48,   48,  663,   48,  659,
-       48,  660,  671,  665,  666,   48,  667,   48,  669,  668,
-      670,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-      675,   48,  673,   48,  680,   48,   48,  677,   48,  682,
-      672,  674,   48,   48,   48,  683,   48,  684,  678,   48,
-
-      679,   48,  676,   48,   48,  681,   48,   48,  686,  689,
-       48,  685,  692,   48,  687,  693,   48,   48,   48,  688,
-       48,  690,  695,  699,  691,  696,   48,   48,  694,  697,
-       48,  698,  700,   48,  701,   48,   48,  703,   48,   48,
-      704,  702,  705,   48,   48,   48,  707,   48,   48,  706,
-       48,  708,  709,   48,  710,  712,   48,  713,   48,  714,
-       48,   48,  711,   48,  715,   48,   48,  716,   48,   48,
-      717,  721,   48,   48,   48,   48,   48,   48,   48,  718,
-       48,  719,   48,   48,  720,   33,   33,   33,   33,   38,
-       38,   38,   38,   43,   43,   43,   43,   51,   51,   48,
-
-       51,   82,   82,   87,   87,   52,   52,   48,   52,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   88,   86,
-       85,   83,   48,   88,   86,   85,   83,   48,  722,    9,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-
-      722,  722,  722,  722,  722,  722,  722
+       12,   13,   14,   14,   15,   16,   17,   12,   12,   12,
+       12,   12,   18,   19,   12,   20,   21,   12,   22,   12,
+       23,   24,   25,   26,   27,   28,   29,   30,   12,   31,
+       32,   33,   34,   35,   12,   12,   12,   12,   37,   38,
+       39,   37,   38,   39,   55,   42,   38,   61,   40,   43,
+       56,   40,   42,   38,   57,   44,   43,   51,   51,   52,
+       89,   89,   44,   46,   47,   47,   48,   53,   38,   51,
+       51,   52,   55,   67,   49,   46,   47,   47,   48,   53,
+       38,   68,   59,   93,   59,   59,   49,   59,   55,   54,
+       55,   54,   54,   60,   54,   55,   62,   64,   55,   55,
+
+       55,   55,   65,   63,   66,   69,   55,   55,   75,   55,
+       55,   71,   72,   73,   70,   55,   55,   74,   78,   91,
+       77,   82,   91,   79,   55,   84,   55,   76,   86,   80,
+       96,   96,   81,   55,   87,   83,   54,   93,   88,   93,
+       93,   85,   93,   54,  121,   54,   54,   56,   54,   55,
+       59,   57,   59,   59,   55,   59,   55,   98,   55,   99,
+      102,   60,   55,   55,   55,   55,  100,   55,  105,   55,
+       55,   55,  106,  107,  111,  101,  108,   55,  112,  103,
+      104,  113,   55,   55,   55,   55,   55,   55,   55,  109,
+      114,  118,   55,  110,  115,   55,  116,   55,   55,   55,
+
+       55,   55,  120,  119,  117,  126,   55,   89,   89,  122,
+      127,   96,   96,   91,  124,  123,   91,   93,  125,   93,
+       93,   55,   93,  128,   55,   55,  129,   55,   55,   55,
+       55,   55,  130,  132,  138,   55,  133,   55,   55,  131,
+      134,   55,  139,   55,  140,  145,  135,  136,  144,  141,
+       55,  137,  142,   55,  146,   55,   55,  149,  143,   55,
+      151,  147,   55,   55,  150,   55,   55,   55,   55,   55,
+      152,   55,  153,   55,  156,  158,  148,   55,   55,   55,
+      161,  164,   55,  163,  159,   55,  154,  155,   55,   55,
+       55,   55,  157,   55,  167,   55,  160,  165,  169,   55,
+
+      166,   55,  162,  173,  168,   55,  170,  171,  172,   55,
+      174,   55,  176,   55,   55,   55,  175,   55,   55,  180,
+      177,   55,   55,   55,  182,   55,  179,   55,   55,  186,
+      187,  184,  181,  178,  183,   55,  185,  188,   55,   55,
+      193,   55,   55,   55,  189,  194,   55,  190,  192,  191,
+       55,  196,  197,   55,   55,   55,   55,   55,  198,   55,
+       55,  195,  199,   55,   55,   55,  210,   55,  201,  208,
+      207,   55,  200,   55,   55,  202,  203,  209,  213,  214,
+       55,   55,  211,  212,  215,   55,  204,  205,  206,  216,
+       55,   55,   55,   55,  225,  217,   55,  223,   55,   55,
+
+      220,  222,  218,  219,  226,  224,   55,  227,  228,   55,
+       55,   55,  221,   55,   55,  230,   55,  232,   55,   55,
+      229,   55,   55,   55,  238,   55,  234,   55,  235,   55,
+      237,  231,  236,   55,  233,   55,  240,  244,   55,  247,
+      239,   55,   55,  241,  243,   55,   55,  245,   55,   55,
+       55,  246,   55,  252,  251,  248,  249,  255,   55,   55,
+      242,   55,   55,  270,  250,  264,  254,  253,  257,   55,
+      256,  259,   55,  258,  260,   55,  261,  262,   55,  263,
+       55,   55,  265,   55,   55,   55,   55,   55,  266,   55,
+      267,  269,  271,   55,  274,   55,   55,  272,  275,   55,
+
+      273,  278,  268,  276,  279,   55,   55,   55,   55,   55,
+      281,  280,   55,  282,   55,   55,   55,   55,  287,  285,
+      288,   55,   55,  283,  277,  284,  286,   55,  292,   55,
+      290,  289,   55,   55,   55,  293,  291,   55,   55,   55,
+       55,  294,   55,   55,  296,  297,   55,  295,  298,   55,
+       55,  299,   55,  303,  300,  304,  301,   55,  305,  302,
+       55,  308,   55,   55,   55,   55,   55,  309,   55,  313,
+      310,  316,   55,   55,  311,   55,  318,  306,  307,   55,
+      317,  312,  314,   55,  320,   55,   55,   55,  321,   55,
+      323,   55,  315,  319,  322,  325,   55,   55,   55,  328,
+
+      326,  324,   55,   55,  327,   55,  332,   55,  330,   55,
+       55,  334,  331,   55,   55,   55,   55,  335,   55,  329,
+      340,   55,  333,   55,  338,   55,  342,   55,  337,  339,
+       55,  344,  336,   55,  341,   55,  345,   55,   55,  349,
+       55,   55,   55,   55,   55,   55,  354,  343,   55,  347,
+       55,   55,  346,  355,   55,  350,   55,  348,   55,  359,
+       55,  357,  358,  361,  353,  351,  364,  352,  360,   55,
+      356,   55,  362,  363,   55,   55,   55,   55,  365,   55,
+       55,   55,  368,   55,  369,   55,   55,  366,  367,   55,
+      373,  374,   55,  376,  371,  377,   55,  372,  375,  370,
+
+       55,   55,   55,   55,  379,   55,   55,   55,   55,   55,
+      382,  383,  384,   55,  390,  378,   55,  385,   55,  380,
+      387,   55,  381,   55,   55,   55,  388,  386,   55,  389,
+      395,  396,   55,  392,   55,   55,   55,   55,   55,  397,
+      391,  394,  398,   55,   55,   55,   55,   55,   55,  393,
+      399,  400,   55,   55,   55,   55,   55,  406,  559,  410,
+      404,  401,  403,  408,  402,  407,  405,  411,   55,  412,
+       55,  413,  409,   55,   55,   55,   55,  417,  414,   55,
+       55,   55,   55,   55,  418,  419,   55,   55,  415,  426,
+       55,   55,  420,  416,   55,  425,  421,  458,  422,  429,
+
+      423,  427,   55,   55,  424,  428,   55,   55,   55,  433,
+       55,  430,  431,  434,   55,  432,  435,   55,   55,  436,
+       55,   55,  438,   55,   55,   55,   55,   55,   55,   55,
+      442,   55,   55,   55,   55,  437,  446,   55,   55,  439,
+      447,  444,  441,  440,   55,  443,  449,  445,  450,  448,
+       55,  453,  454,  456,   55,  452,   55,   55,  451,  457,
+       55,  459,  455,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,  466,  467,   55,   55,   55,   55,  469,   55,
+      463,  460,  461,  462,  465,   55,  472,   55,  464,  475,
+      468,  470,   55,  471,   55,  473,   55,  474,  476,   55,
+
+       55,   55,   55,   55,   55,   55,   55,  485,   55,  483,
+      477,  484,   55,   55,   55,   55,  478,  486,   55,  479,
+      481,  482,   55,  491,  487,  480,   55,  489,   55,   55,
+      490,   55,  488,   55,  492,  494,   55,  495,  496,   55,
+      500,  493,  498,   55,  499,   55,  501,   55,   55,  497,
+       55,  503,  506,   55,   55,  502,   55,   55,  507,   55,
+      504,  505,   55,  511,   55,   55,   55,  512,   55,  513,
+      508,  517,  509,   55,  514,  510,   55,  518,   55,  516,
+      515,  519,   55,  520,   55,   55,  522,  523,  521,  525,
+       55,   55,   55,  526,   55,   55,   55,  524,   55,   55,
+
+       55,  533,   55,   55,   55,  527,   55,  528,   55,  534,
+       55,  537,  529,  535,  530,  531,   55,   55,  540,   55,
+      544,  538,  539,   55,  532,   55,  542,  541,  536,   55,
+       55,  545,  547,   55,  543,  546,   55,   55,   55,  551,
+      548,   55,  549,   55,   55,   55,  554,   55,   55,  555,
+      557,   55,  560,   55,  550,   55,  553,   55,   55,  556,
+       55,  562,  552,  563,   55,   55,   55,  558,   55,  564,
+      567,   55,   55,  568,  572,  565,  561,  566,  569,   55,
+       55,   55,   55,   55,   55,  571,  573,  576,   55,  577,
+       55,   55,   55,  570,   55,  583,   55,  581,   55,  574,
+
+      582,  578,  575,  579,   55,  580,   55,  584,   55,   55,
+      586,  588,   55,  587,   55,   55,   55,   55,  589,   55,
+       55,   55,  585,  590,  594,   55,  597,  598,   55,  599,
+       55,  595,  596,  591,  600,   55,  592,  593,   55,   55,
+      603,   55,   55,   55,  602,   55,   55,   55,   55,  606,
+      607,  608,   55,   55,  610,   55,  601,  612,   55,   55,
+      604,   55,  605,   55,  616,   55,   55,  613,  617,  611,
+      615,  609,   55,   55,   55,   55,  618,  619,  614,   55,
+      621,  623,   55,   55,  620,  622,   55,  624,  626,  627,
+       55,  625,  628,   55,  629,   55,  630,   55,  631,   55,
+
+       55,   55,   55,   55,  634,  633,   55,   55,   55,   55,
+       55,   55,  638,   55,  632,   55,  643,  635,  636,  637,
+       55,   55,   55,  641,  647,   55,  648,   55,   55,  640,
+      642,   55,   55,   55,  639,   55,  652,  644,  645,   55,
+      646,  649,  653,   55,  654,   55,  650,   55,  656,   55,
+       55,  651,  657,  655,  658,   55,   55,   55,   55,   55,
+      660,  661,   55,  663,  659,   55,   55,   55,   55,   55,
+      664,  662,  670,   55,  665,  666,  667,  671,   55,   55,
+      668,  673,   55,  672,   55,   55,  669,  674,  675,   55,
+      676,   55,  677,  678,  679,   55,   55,   55,   55,   55,
+
+      680,   55,   55,  681,   55,  682,  684,   55,   55,  689,
+       55,   55,   55,  686,  683,   55,  691,   55,   55,   55,
+       55,  692,  693,   55,   55,  688,  687,  685,   55,   55,
+      702,   55,   55,  695,  698,  690,  694,  701,  696,   55,
+       55,   55,  697,  705,   55,  699,  700,  706,   55,   55,
+      703,   55,  709,   55,  710,   55,  708,   55,   55,  704,
+      712,   55,  711,   55,  713,  714,   55,  707,   55,   55,
+       55,  718,   55,  715,  717,   55,   55,  716,   55,  719,
+      721,   55,  722,   55,  723,   55,  720,   55,  724,   55,
+       55,   55,  727,  730,   55,  725,   55,   55,  726,   55,
+
+       55,   55,   55,  728,   55,   55,   55,   55,   55,  729,
+       36,   36,   36,   36,   36,   36,   41,   41,   41,   41,
+       41,   41,   45,   45,   45,   45,   45,   45,   50,   50,
+       50,   50,   50,   50,   58,   58,   55,   58,   58,   58,
+       89,   89,   55,   55,   55,   89,   91,   91,   55,   55,
+       91,   96,   96,   55,   55,   55,   96,   59,   59,   55,
+       59,   59,   59,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+
+       97,   95,   94,   92,   90,   55,   97,   95,   94,   92,
+       90,   55,  731,   11,  731,  731,  731,  731,  731,  731,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      731,  731
     } ;
 
-static yyconst flex_int16_t yy_chk[1508] =
+static yyconst flex_int16_t yy_chk[1553] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    3,    3,    3,
-        4,    4,    4,   11,   19,   16,    3,   11,   16,    4,
-        5,    5,    5,    5,    6,    6,    6,    6,   19,  138,
-        5,    7,    7,    7,    6,    8,    8,    8,  138,   14,
-        7,   14,   14,   15,    8,   15,   15,   17,   17,   14,
-       18,   20,   20,   21,   23,   17,   22,   21,   24,   18,
-       20,   22,   25,   25,   18,   26,   21,   28,   23,   27,
-
-       29,   56,   24,   30,   30,   29,   24,   31,   27,   37,
-       37,   28,   25,   27,   28,   26,   32,   32,   56,   29,
-       30,   32,   46,   46,   42,   31,   42,   42,   48,   49,
-       48,   48,   51,   49,   51,   51,   54,   55,   57,   54,
-       55,   58,   51,   59,   60,   61,   58,   62,   63,   61,
-       64,   63,   62,   66,   63,   57,   65,   66,   67,   65,
-       59,   60,   70,   65,   68,   67,   69,   63,   71,   72,
-       73,   74,   71,   75,   64,   76,   68,   77,   69,   78,
-       79,   70,   80,   81,   73,   79,   72,   83,   83,   74,
-       75,   88,   88,   80,   77,   76,   91,   89,   90,   78,
-
-       81,   85,   89,   85,   85,   93,   90,   92,   94,   95,
-       91,   96,   92,   95,   93,   97,   96,  100,   93,   99,
-       98,  101,  100,  103,   93,   93,  101,  104,   97,  103,
-       94,   98,  102,  102,   98,  105,   99,  106,  107,  108,
-      105,  110,  106,  107,  109,  111,  108,  104,  112,  113,
-      109,  115,  114,  112,  114,  116,  117,  118,  115,  120,
-      110,  117,  118,  119,  111,  119,  121,  729,  122,  123,
-      113,  121,  123,  116,  124,  127,  125,  120,  117,  127,
-      126,  119,  122,  126,  128,  128,  129,  130,  131,  124,
-      125,  129,  130,  132,  133,  134,  134,  135,  136,  137,
-
-      139,  136,  140,  142,  140,  140,  133,  131,  141,  141,
-      137,  139,  143,  132,  135,  144,  145,  145,  146,  142,
-      147,  151,  142,  146,  144,  148,  143,  149,  150,  152,
-      148,  153,  149,  150,  156,  155,  157,  158,  159,  147,
-      151,  160,  158,  156,  153,  162,  196,  152,  154,  155,
-      154,  154,  161,  161,  157,  161,  163,  159,  164,  165,
-      160,  154,  154,  154,  162,  166,  167,  196,  168,  726,
-      169,  163,  170,  164,  169,  167,  165,  168,  166,  171,
-      172,  170,  173,  173,  171,  174,  172,  167,  175,  176,
-      174,  177,  178,  178,  176,  180,  181,  182,  183,  175,
-
-      185,  187,  186,  189,  181,  191,  182,  186,  185,  183,
-      195,  177,  188,  188,  190,  180,  192,  192,  187,  190,
-      188,  193,  189,  194,  190,  197,  198,  199,  195,  191,
-      197,  200,  203,  201,  194,  193,  200,  188,  202,  202,
-      721,  199,  204,  204,  198,  201,  203,  205,  205,  206,
-      207,  207,  208,  208,  206,  209,  210,  213,  211,  209,
-      212,  210,  211,  214,  215,  212,  218,  216,  214,  218,
-      216,  217,  217,  225,  714,  216,  213,  215,  216,  219,
-      220,  221,  222,  219,  223,  220,  221,  223,  222,  224,
-      225,  227,  226,  228,  224,  229,  227,  231,  229,  230,
-
-      230,  231,  228,  232,  219,  226,  233,  234,  235,  235,
-      236,  237,  234,  238,  236,  239,  240,  232,  241,  242,
-      233,  240,  239,  241,  242,  238,  243,  244,  245,  237,
-      246,  247,  247,  246,  249,  255,  244,  252,  256,  257,
-      255,  245,  256,  243,  257,  256,  258,  259,  263,  256,
-      261,  249,  268,  252,  260,  260,  256,  261,  262,  262,
-      264,  264,  263,  258,  265,  266,  268,  265,  267,  267,
-      273,  259,  271,  266,  269,  269,  270,  272,  271,  270,
-      277,  274,  275,  276,  276,  272,  274,  273,  280,  275,
-      278,  278,  280,  277,  281,  282,  283,  284,  285,  287,
-
-      286,  288,  283,  285,  287,  289,  289,  291,  282,  293,
-      284,  286,  281,  290,  292,  295,  290,  294,  294,  296,
-      297,  288,  300,  298,  291,  301,  292,  304,  293,  295,
-      299,  299,  302,  302,  305,  300,  301,  303,  299,  310,
-      304,  314,  296,  298,  297,  303,  306,  306,  308,  311,
-      713,  309,  305,  308,  309,  299,  315,  310,  312,  313,
-      314,  311,  317,  312,  313,  318,  319,  324,  320,  315,
-      318,  319,  321,  321,  322,  325,  317,  320,  325,  322,
-      326,  327,  328,  329,  331,  332,  324,  328,  329,  330,
-      333,  333,  330,  334,  331,  335,  337,  326,  336,  332,
-
-      327,  338,  336,  339,  341,  343,  343,  342,  335,  344,
-      338,  334,  342,  337,  344,  345,  346,  341,  347,  345,
-      348,  349,  350,  351,  352,  353,  357,  339,  356,  355,
-      346,  514,  347,  514,  353,  358,  356,  351,  348,  350,
-      358,  349,  355,  352,  360,  357,  359,  359,  362,  360,
-      361,  361,  363,  362,  364,  365,  366,  368,  367,  369,
-      365,  366,  367,  371,  371,  363,  368,  370,  372,  372,
-      368,  364,  368,  374,  368,  370,  375,  369,  373,  373,
-      376,  377,  379,  383,  375,  376,  380,  379,  377,  381,
-      382,  380,  374,  385,  381,  384,  384,  386,  388,  382,
-
-      389,  383,  390,  392,  389,  391,  393,  394,  395,  397,
-      396,  393,  385,  398,  394,  388,  386,  399,  391,  396,
-      390,  392,  399,  397,  400,  395,  401,  403,  408,  400,
-      409,  401,  406,  398,  404,  404,  405,  405,  406,  407,
-      410,  411,  412,  413,  407,  403,  408,  421,  409,  414,
-      414,  415,  415,  420,  411,  416,  420,  413,  410,  422,
-      416,  421,  412,  423,  423,  424,  425,  425,  426,  427,
-      428,  431,  430,  427,  432,  433,  434,  435,  426,  479,
-      436,  439,  435,  422,  424,  436,  437,  437,  428,  430,
-      431,  438,  433,  440,  441,  434,  438,  442,  432,  443,
-
-      439,  444,  445,  479,  443,  446,  449,  441,  450,  442,
-      453,  453,  440,  451,  446,  449,  446,  454,  452,  455,
-      444,  445,  451,  452,  451,  456,  450,  457,  459,  460,
-      461,  455,  462,  459,  464,  465,  454,  460,  466,  465,
-      457,  467,  456,  466,  469,  468,  467,  461,  470,  475,
-      462,  471,  475,  464,  468,  483,  471,  484,  469,  470,
-      472,  472,  473,  473,  474,  474,  477,  478,  480,  480,
-      481,  477,  478,  482,  483,  481,  484,  485,  486,  486,
-      487,  488,  489,  491,  482,  495,  482,  487,  490,  490,
-      488,  482,  493,  496,  494,  497,  498,  493,  491,  494,
-
-      496,  498,  485,  500,  495,  499,  501,  489,  500,  499,
-      499,  502,  503,  497,  504,  502,  505,  501,  506,  504,
-      507,  507,  508,  508,  513,  512,  515,  515,  517,  506,
-      512,  518,  518,  508,  519,  520,  503,  505,  521,  522,
-      513,  526,  524,  523,  524,  530,  520,  517,  523,  521,
-      522,  525,  525,  527,  519,  528,  529,  528,  527,  531,
-      533,  529,  530,  532,  532,  533,  526,  535,  534,  536,
-      538,  539,  539,  541,  540,  536,  538,  534,  531,  534,
-      542,  543,  535,  540,  542,  546,  543,  544,  544,  546,
-      547,  541,  548,  549,  550,  552,  553,  554,  552,  555,
-
-      555,  556,  556,  559,  547,  557,  557,  563,  553,  554,
-      548,  558,  558,  549,  550,  561,  562,  562,  564,  569,
-      561,  559,  565,  566,  571,  563,  566,  572,  565,  568,
-      568,  570,  570,  573,  575,  564,  572,  576,  571,  577,
-      577,  580,  573,  578,  569,  580,  576,  581,  578,  582,
-      581,  583,  584,  575,  585,  586,  583,  587,  584,  588,
-      586,  588,  592,  592,  598,  587,  593,  593,  582,  585,
-      595,  595,  596,  597,  597,  600,  601,  596,  601,  598,
-      600,  602,  603,  604,  606,  607,  605,  608,  609,  610,
-      610,  611,  602,  603,  604,  605,  612,  613,  615,  608,
-
-      614,  614,  616,  615,  607,  609,  617,  621,  611,  606,
-      625,  622,  626,  612,  622,  613,  616,  623,  623,  624,
-      624,  626,  627,  629,  617,  628,  621,  627,  625,  630,
-      628,  631,  632,  633,  630,  635,  631,  629,  633,  634,
-      636,  639,  637,  640,  635,  642,  632,  641,  641,  636,
-      634,  637,  643,  642,  646,  646,  650,  643,  653,  639,
-      647,  640,  653,  647,  648,  648,  649,  649,  651,  650,
-      652,  652,  654,  651,  655,  657,  656,  658,  659,  660,
-      657,  665,  655,  662,  663,  663,  669,  659,  668,  668,
-      654,  656,  671,  672,  673,  669,  677,  671,  660,  674,
-
-      662,  675,  658,  683,  676,  665,  678,  679,  673,  676,
-      712,  672,  679,  686,  674,  681,  681,  682,  687,  675,
-      709,  677,  683,  687,  678,  684,  684,  698,  682,  685,
-      685,  686,  688,  688,  689,  689,  690,  691,  691,  692,
-      692,  690,  694,  694,  695,  706,  698,  699,  715,  695,
-      704,  699,  702,  702,  704,  707,  707,  708,  708,  710,
-      710,  716,  706,  711,  711,  717,  719,  715,  718,  705,
-      716,  720,  720,  703,  701,  700,  697,  696,  693,  717,
-      680,  718,  670,  667,  719,  723,  723,  723,  723,  724,
-      724,  724,  724,  725,  725,  725,  725,  727,  727,  666,
-
-      727,  728,  728,  730,  730,  731,  731,  664,  731,  661,
-      645,  644,  638,  620,  619,  618,  599,  594,  591,  590,
-      589,  579,  574,  567,  560,  551,  545,  537,  516,  511,
-      510,  509,  492,  476,  463,  458,  448,  447,  429,  419,
-      418,  417,  402,  387,  378,  354,  340,  323,  316,  307,
-      279,  254,  253,  251,  250,  248,  184,  179,   87,   86,
-       84,   82,   47,   43,   39,   38,   33,   10,    9,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-
-      722,  722,  722,  722,  722,  722,  722
+        1,    1,    1,    1,    1,    1,    1,    1,    3,    3,
+        3,    4,    4,    4,   19,    5,    5,   19,    3,    5,
+       13,    4,    6,    6,   13,    5,    6,    9,    9,    9,
+       40,   40,    6,    7,    7,    7,    7,    9,    7,   10,
+       10,   10,   23,   23,    7,    8,    8,    8,    8,   10,
+        8,   23,   16,  740,   16,   16,    8,   16,   21,   18,
+       22,   18,   18,   16,   18,   20,   20,   21,   26,   27,
+
+       29,   24,   21,   20,   22,   24,   25,   28,   28,   30,
+       34,   25,   26,   27,   24,   31,   32,   27,   30,   44,
+       29,   32,   44,   30,   33,   33,   81,   28,   34,   31,
+       53,   53,   31,   35,   35,   32,  736,   49,   35,   49,
+       49,   33,   49,   55,   81,   55,   55,   56,   55,   63,
+       58,   56,   58,   58,   61,   58,   62,   61,   64,   62,
+       65,   58,   66,   67,   68,   65,   63,   69,   68,   71,
+       70,   72,   69,   70,   72,   64,   70,   73,   72,   66,
+       67,   73,   75,   74,   76,   77,   79,   78,   80,   70,
+       74,   78,   82,   71,   75,   83,   76,   84,   85,   87,
+
+       86,  730,   80,   79,   77,   86,   88,   90,   90,   82,
+       87,   97,   97,   92,   84,   83,   92,   94,   85,   94,
+       94,   98,   94,   88,   99,  100,   98,  102,  101,  103,
+      104,  106,   99,  101,  104,  723,  102,  105,  107,  100,
+      102,  108,  105,  109,  106,  110,  102,  102,  109,  107,
+      110,  103,  107,  111,  111,  112,  113,  114,  108,  115,
+      116,  112,  114,  117,  115,  116,  118,  119,  120,  121,
+      117,  122,  118,  123,  121,  123,  113,  124,  125,  128,
+      126,  128,  129,  127,  124,  126,  119,  120,  127,  130,
+      131,  133,  122,  134,  130,  132,  125,  128,  132,  136,
+
+      129,  140,  126,  136,  131,  135,  133,  134,  135,  137,
+      137,  138,  139,  141,  142,  144,  138,  139,  143,  143,
+      140,  145,  147,  146,  145,  148,  142,  149,  151,  149,
+      149,  147,  144,  141,  146,  152,  148,  150,  150,  153,
+      154,  154,  156,  160,  151,  155,  157,  151,  153,  152,
+      155,  157,  158,  159,  161,  162,  164,  158,  159,  166,
+      165,  156,  160,  168,  169,  171,  167,  722,  162,  165,
+      164,  167,  161,  163,  172,  163,  163,  166,  170,  170,
+      173,  170,  168,  169,  171,  174,  163,  163,  163,  172,
+      175,  176,  177,  178,  180,  173,  179,  178,  181,  180,
+
+      176,  177,  174,  175,  181,  179,  182,  182,  183,  184,
+      185,  186,  176,  183,  189,  185,  187,  187,  190,  191,
+      184,  192,  194,  196,  195,  198,  190,  200,  191,  195,
+      194,  186,  192,  205,  189,  197,  197,  199,  201,  201,
+      196,  202,  199,  197,  198,  203,  204,  199,  206,  207,
+      224,  200,  208,  206,  205,  202,  203,  209,  210,  212,
+      197,  218,  209,  224,  204,  218,  208,  207,  211,  211,
+      210,  213,  213,  212,  214,  214,  215,  216,  216,  217,
+      217,  215,  219,  222,  220,  221,  223,  219,  220,  225,
+      221,  223,  225,  226,  226,  227,  229,  225,  227,  228,
+
+      225,  229,  222,  228,  230,  231,  234,  232,  233,  230,
+      232,  231,  235,  233,  236,  238,  241,  237,  238,  236,
+      239,  239,  242,  234,  228,  235,  237,  240,  243,  246,
+      241,  240,  247,  243,  244,  244,  242,  245,  248,  252,
+      254,  245,  721,  249,  247,  248,  250,  246,  249,  251,
+      253,  250,  255,  254,  251,  255,  252,  256,  256,  253,
+      258,  264,  261,  265,  266,  267,  264,  265,  268,  266,
+      265,  269,  269,  270,  265,  271,  271,  258,  261,  272,
+      270,  265,  267,  273,  273,  274,  275,  277,  274,  276,
+      276,  281,  268,  272,  275,  278,  278,  279,  280,  281,
+
+      279,  277,  282,  283,  280,  284,  285,  285,  283,  286,
+      287,  287,  284,  289,  290,  291,  293,  289,  292,  282,
+      294,  296,  286,  295,  292,  294,  296,  297,  291,  293,
+      298,  298,  290,  299,  295,  300,  299,  301,  302,  303,
+      303,  304,  305,  306,  307,  308,  308,  297,  309,  301,
+      313,  310,  300,  308,  314,  304,  718,  302,  311,  311,
+      312,  309,  310,  313,  307,  305,  317,  306,  312,  319,
+      308,  317,  314,  315,  315,  318,  320,  321,  318,  322,
+      323,  324,  321,  326,  322,  327,  328,  319,  320,  329,
+      327,  328,  330,  330,  324,  331,  333,  326,  329,  323,
+
+      331,  334,  335,  336,  334,  337,  338,  340,  343,  339,
+      337,  338,  339,  341,  345,  333,  344,  340,  345,  335,
+      342,  342,  336,  346,  347,  348,  343,  341,  350,  344,
+      351,  352,  352,  347,  353,  351,  355,  356,  354,  353,
+      346,  350,  354,  357,  358,  359,  360,  361,  362,  348,
+      355,  356,  364,  366,  367,  365,  523,  362,  523,  367,
+      360,  357,  359,  365,  358,  364,  361,  368,  368,  369,
+      370,  370,  366,  371,  369,  372,  373,  374,  371,  375,
+      383,  376,  374,  377,  375,  376,  378,  379,  372,  380,
+      380,  415,  377,  373,  714,  379,  377,  415,  377,  383,
+
+      377,  381,  381,  384,  378,  382,  382,  385,  386,  388,
+      391,  384,  385,  389,  388,  386,  390,  392,  389,  391,
+      394,  390,  393,  393,  395,  397,  398,  399,  400,  401,
+      398,  402,  404,  403,  406,  392,  402,  405,  407,  394,
+      403,  400,  397,  395,  412,  399,  405,  401,  406,  404,
+      408,  409,  410,  413,  413,  408,  409,  410,  407,  414,
+      414,  416,  412,  417,  418,  419,  416,  420,  421,  431,
+      422,  423,  423,  424,  424,  429,  433,  430,  429,  435,
+      420,  417,  418,  419,  422,  425,  432,  432,  421,  435,
+      425,  430,  437,  431,  436,  433,  434,  434,  436,  439,
+
+      440,  441,  443,  442,  444,  448,  445,  446,  446,  444,
+      437,  445,  447,  449,  450,  453,  439,  447,  451,  440,
+      442,  443,  454,  452,  448,  441,  455,  450,  452,  458,
+      451,  459,  449,  460,  453,  455,  463,  455,  458,  464,
+      461,  454,  460,  465,  460,  461,  462,  462,  466,  459,
+      469,  464,  468,  470,  471,  463,  473,  468,  469,  474,
+      465,  466,  475,  474,  476,  477,  478,  475,  479,  476,
+      470,  480,  471,  488,  477,  473,  480,  481,  481,  479,
+      478,  482,  482,  483,  483,  484,  486,  487,  484,  489,
+      489,  486,  487,  490,  491,  492,  493,  488,  490,  494,
+
+      495,  495,  496,  498,  497,  491,  500,  491,  504,  496,
+      499,  499,  491,  497,  492,  493,  506,  502,  503,  505,
+      507,  500,  502,  503,  494,  507,  505,  504,  498,  510,
+      512,  508,  509,  712,  506,  508,  508,  509,  511,  513,
+      510,  514,  511,  528,  513,  515,  516,  516,  517,  517,
+      521,  522,  524,  524,  512,  521,  515,  526,  529,  517,
+      527,  527,  514,  528,  530,  532,  531,  522,  535,  529,
+      532,  533,  537,  533,  537,  530,  526,  531,  534,  534,
+      536,  538,  539,  540,  542,  536,  538,  541,  541,  542,
+      544,  545,  543,  535,  547,  548,  548,  545,  549,  539,
+
+      547,  543,  540,  543,  550,  544,  551,  549,  552,  556,
+      551,  553,  553,  552,  555,  557,  558,  559,  555,  562,
+      563,  561,  550,  556,  561,  564,  564,  565,  565,  566,
+      566,  562,  563,  557,  567,  567,  558,  559,  568,  570,
+      571,  571,  572,  574,  570,  573,  578,  575,  581,  574,
+      575,  577,  577,  579,  579,  580,  568,  581,  582,  584,
+      572,  585,  573,  586,  586,  591,  594,  582,  587,  580,
+      585,  578,  589,  587,  590,  592,  589,  590,  584,  593,
+      592,  594,  595,  596,  591,  593,  597,  595,  597,  601,
+      601,  596,  602,  602,  604,  604,  605,  606,  606,  607,
+
+      609,  605,  610,  614,  610,  609,  611,  612,  613,  615,
+      616,  617,  614,  618,  607,  619,  619,  611,  612,  613,
+      620,  621,  622,  617,  623,  623,  624,  625,  626,  616,
+      618,  624,  630,  631,  615,  634,  631,  620,  621,  635,
+      622,  625,  632,  632,  633,  633,  626,  636,  635,  637,
+      638,  630,  636,  634,  637,  639,  640,  641,  642,  643,
+      639,  640,  648,  642,  638,  644,  645,  646,  649,  651,
+      643,  641,  650,  650,  644,  645,  646,  651,  652,  659,
+      648,  655,  655,  652,  656,  663,  649,  656,  657,  657,
+      658,  658,  659,  660,  661,  661,  662,  664,  660,  665,
+
+      662,  666,  667,  663,  668,  664,  666,  669,  671,  672,
+      672,  674,  678,  668,  665,  677,  677,  680,  681,  682,
+      686,  678,  680,  683,  684,  671,  669,  667,  687,  685,
+      690,  690,  688,  682,  685,  674,  681,  688,  683,  691,
+      692,  710,  684,  693,  693,  686,  687,  694,  694,  695,
+      691,  696,  697,  697,  698,  698,  696,  699,  707,  692,
+      700,  700,  699,  701,  701,  703,  703,  695,  704,  715,
+      708,  711,  711,  704,  708,  713,  724,  707,  726,  713,
+      716,  716,  717,  717,  719,  719,  715,  720,  720,  725,
+      727,  728,  726,  729,  729,  724,  709,  706,  725,  705,
+
+      702,  689,  679,  727,  676,  675,  673,  670,  654,  728,
+      732,  732,  732,  732,  732,  732,  733,  733,  733,  733,
+      733,  733,  734,  734,  734,  734,  734,  734,  735,  735,
+      735,  735,  735,  735,  737,  737,  653,  737,  737,  737,
+      738,  738,  647,  629,  628,  738,  739,  739,  627,  608,
+      739,  741,  741,  603,  600,  599,  741,  742,  742,  598,
+      742,  742,  742,  588,  583,  576,  569,  560,  554,  546,
+      525,  520,  519,  518,  501,  485,  472,  467,  457,  456,
+      438,  428,  427,  426,  411,  396,  387,  363,  349,  332,
+      325,  316,  288,  263,  262,  260,  259,  257,  193,  188,
+
+       96,   95,   93,   91,   89,   54,   50,   46,   45,   41,
+       36,   12,   11,  731,  731,  731,  731,  731,  731,  731,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      731,  731
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1111,12 +1124,13 @@ static void config_end_include(void)
 #endif
 
 
-#line 1114 "<stdout>"
+#line 1127 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
-#define include 2
-#define include_quoted 3
+#define singlequotedstr 2
+#define include 3
+#define include_quoted 4
 
 #ifndef YY_NO_UNISTD_H
 /* Special case for "unistd.h", since it is non-ANSI. We include it way
@@ -1265,9 +1279,9 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
     
-#line 98 "util/configlexer.lex"
+#line 99 "util/configlexer.lex"
 
-#line 1270 "<stdout>"
+#line 1284 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -1326,13 +1340,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 723 )
+                               if ( yy_current_state >= 732 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 1470 );
+               while ( yy_base[yy_current_state] != 1514 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1358,353 +1372,353 @@ do_action:    /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 99 "util/configlexer.lex"
+#line 100 "util/configlexer.lex"
 { LEXOUT(("SP ")); /* ignore */ }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 100 "util/configlexer.lex"
+#line 101 "util/configlexer.lex"
 { LEXOUT(("comment(%s) ", yytext)); /* ignore */ }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 101 "util/configlexer.lex"
+#line 102 "util/configlexer.lex"
 { YDOUT; return VAR_SERVER;}
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 102 "util/configlexer.lex"
+#line 103 "util/configlexer.lex"
 { YDOUT; return VAR_NUM_THREADS;}
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 103 "util/configlexer.lex"
+#line 104 "util/configlexer.lex"
 { YDOUT; return VAR_VERBOSITY;}
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 104 "util/configlexer.lex"
+#line 105 "util/configlexer.lex"
 { YDOUT; return VAR_PORT;}
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 105 "util/configlexer.lex"
+#line 106 "util/configlexer.lex"
 { YDOUT; return VAR_OUTGOING_PORT;}
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 106 "util/configlexer.lex"
+#line 107 "util/configlexer.lex"
 { YDOUT; return VAR_OUTGOING_RANGE;}
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 107 "util/configlexer.lex"
+#line 108 "util/configlexer.lex"
 { YDOUT; return VAR_OUTGOING_NUM_TCP;}
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 108 "util/configlexer.lex"
+#line 109 "util/configlexer.lex"
 { YDOUT; return VAR_INCOMING_NUM_TCP;}
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 109 "util/configlexer.lex"
+#line 110 "util/configlexer.lex"
 { YDOUT; return VAR_DO_IP4;}
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 110 "util/configlexer.lex"
+#line 111 "util/configlexer.lex"
 { YDOUT; return VAR_DO_IP6;}
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 111 "util/configlexer.lex"
+#line 112 "util/configlexer.lex"
 { YDOUT; return VAR_DO_UDP;}
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 112 "util/configlexer.lex"
+#line 113 "util/configlexer.lex"
 { YDOUT; return VAR_DO_TCP;}
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 113 "util/configlexer.lex"
+#line 114 "util/configlexer.lex"
 { YDOUT; return VAR_INTERFACE;}
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 114 "util/configlexer.lex"
+#line 115 "util/configlexer.lex"
 { YDOUT; return VAR_OUTGOING_INTERFACE;}
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 115 "util/configlexer.lex"
+#line 116 "util/configlexer.lex"
 { YDOUT; return VAR_CHROOT;}
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 116 "util/configlexer.lex"
+#line 117 "util/configlexer.lex"
 { YDOUT; return VAR_USERNAME;}
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 117 "util/configlexer.lex"
+#line 118 "util/configlexer.lex"
 { YDOUT; return VAR_DIRECTORY;}
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 118 "util/configlexer.lex"
+#line 119 "util/configlexer.lex"
 { YDOUT; return VAR_LOGFILE;}
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 119 "util/configlexer.lex"
+#line 120 "util/configlexer.lex"
 { YDOUT; return VAR_PIDFILE;}
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 120 "util/configlexer.lex"
+#line 121 "util/configlexer.lex"
 { YDOUT; return VAR_ROOT_HINTS;}
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 121 "util/configlexer.lex"
+#line 122 "util/configlexer.lex"
 { YDOUT; return VAR_MSG_BUFFER_SIZE;}
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 122 "util/configlexer.lex"
+#line 123 "util/configlexer.lex"
 { YDOUT; return VAR_MSG_CACHE_SIZE;}
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 123 "util/configlexer.lex"
+#line 124 "util/configlexer.lex"
 { YDOUT; return VAR_MSG_CACHE_SLABS;}
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 124 "util/configlexer.lex"
+#line 125 "util/configlexer.lex"
 { YDOUT; return VAR_RRSET_CACHE_SIZE;}
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 125 "util/configlexer.lex"
+#line 126 "util/configlexer.lex"
 { YDOUT; return VAR_RRSET_CACHE_SLABS;}
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 126 "util/configlexer.lex"
+#line 127 "util/configlexer.lex"
 { YDOUT; return VAR_CACHE_MAX_TTL;}
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 127 "util/configlexer.lex"
+#line 128 "util/configlexer.lex"
 { YDOUT; return VAR_INFRA_HOST_TTL;}
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 128 "util/configlexer.lex"
+#line 129 "util/configlexer.lex"
 { YDOUT; return VAR_INFRA_LAME_TTL;}
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 129 "util/configlexer.lex"
+#line 130 "util/configlexer.lex"
 { YDOUT; return VAR_INFRA_CACHE_SLABS;}
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 130 "util/configlexer.lex"
+#line 131 "util/configlexer.lex"
 { YDOUT; return VAR_INFRA_CACHE_NUMHOSTS;}
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 131 "util/configlexer.lex"
+#line 132 "util/configlexer.lex"
 { YDOUT; return VAR_INFRA_CACHE_LAME_SIZE;}
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 132 "util/configlexer.lex"
+#line 133 "util/configlexer.lex"
 { YDOUT; return VAR_NUM_QUERIES_PER_THREAD;}
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 133 "util/configlexer.lex"
+#line 134 "util/configlexer.lex"
 { YDOUT; return VAR_TARGET_FETCH_POLICY;}
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 134 "util/configlexer.lex"
+#line 135 "util/configlexer.lex"
 { YDOUT; return VAR_HARDEN_SHORT_BUFSIZE;}
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 135 "util/configlexer.lex"
+#line 136 "util/configlexer.lex"
 { YDOUT; return VAR_HARDEN_LARGE_QUERIES;}
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 136 "util/configlexer.lex"
+#line 137 "util/configlexer.lex"
 { YDOUT; return VAR_HARDEN_GLUE;}
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 137 "util/configlexer.lex"
+#line 138 "util/configlexer.lex"
 { YDOUT; return VAR_HARDEN_DNNSEC_STRIPPED;}
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 138 "util/configlexer.lex"
+#line 139 "util/configlexer.lex"
 { YDOUT; return VAR_STUB_ZONE;}
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 139 "util/configlexer.lex"
+#line 140 "util/configlexer.lex"
 { YDOUT; return VAR_NAME;}
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 140 "util/configlexer.lex"
+#line 141 "util/configlexer.lex"
 { YDOUT; return VAR_STUB_ADDR;}
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 141 "util/configlexer.lex"
+#line 142 "util/configlexer.lex"
 { YDOUT; return VAR_STUB_HOST;}
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 142 "util/configlexer.lex"
+#line 143 "util/configlexer.lex"
 { YDOUT; return VAR_FORWARD_ZONE;}
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 143 "util/configlexer.lex"
+#line 144 "util/configlexer.lex"
 { YDOUT; return VAR_FORWARD_ADDR;}
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 144 "util/configlexer.lex"
+#line 145 "util/configlexer.lex"
 { YDOUT; return VAR_FORWARD_HOST;}
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 145 "util/configlexer.lex"
+#line 146 "util/configlexer.lex"
 { YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;}
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 146 "util/configlexer.lex"
+#line 147 "util/configlexer.lex"
 { YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;}
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 147 "util/configlexer.lex"
+#line 148 "util/configlexer.lex"
 { YDOUT; return VAR_ACCESS_CONTROL;}
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 148 "util/configlexer.lex"
+#line 149 "util/configlexer.lex"
 { YDOUT; return VAR_HIDE_IDENTITY;}
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 149 "util/configlexer.lex"
+#line 150 "util/configlexer.lex"
 { YDOUT; return VAR_HIDE_VERSION;}
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 150 "util/configlexer.lex"
+#line 151 "util/configlexer.lex"
 { YDOUT; return VAR_IDENTITY;}
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 151 "util/configlexer.lex"
+#line 152 "util/configlexer.lex"
 { YDOUT; return VAR_VERSION;}
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 152 "util/configlexer.lex"
+#line 153 "util/configlexer.lex"
 { YDOUT; return VAR_MODULE_CONF;}
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 153 "util/configlexer.lex"
+#line 154 "util/configlexer.lex"
 { YDOUT; return VAR_TRUST_ANCHOR_FILE;}
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 154 "util/configlexer.lex"
+#line 155 "util/configlexer.lex"
 { YDOUT; return VAR_TRUSTED_KEYS_FILE;}
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 155 "util/configlexer.lex"
+#line 156 "util/configlexer.lex"
 { YDOUT; return VAR_TRUST_ANCHOR;}
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 156 "util/configlexer.lex"
+#line 157 "util/configlexer.lex"
 { YDOUT; return VAR_VAL_OVERRIDE_DATE;}
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 157 "util/configlexer.lex"
+#line 158 "util/configlexer.lex"
 { YDOUT; return VAR_BOGUS_TTL;}
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 158 "util/configlexer.lex"
+#line 159 "util/configlexer.lex"
 { YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;}
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 159 "util/configlexer.lex"
+#line 160 "util/configlexer.lex"
 { YDOUT; return VAR_VAL_PERMISSIVE_MODE;}
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 160 "util/configlexer.lex"
+#line 161 "util/configlexer.lex"
 { YDOUT; return VAR_KEY_CACHE_SIZE;}
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 161 "util/configlexer.lex"
+#line 162 "util/configlexer.lex"
 { YDOUT; return VAR_KEY_CACHE_SLABS;}
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 162 "util/configlexer.lex"
+#line 163 "util/configlexer.lex"
 { YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;}
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 163 "util/configlexer.lex"
+#line 164 "util/configlexer.lex"
 { YDOUT; return VAR_USE_SYSLOG;}
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 164 "util/configlexer.lex"
+#line 165 "util/configlexer.lex"
 { YDOUT; return VAR_LOCAL_ZONE;}
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 165 "util/configlexer.lex"
+#line 166 "util/configlexer.lex"
 { YDOUT; return VAR_LOCAL_DATA;}
        YY_BREAK
 case 68:
 /* rule 68 can match eol */
 YY_RULE_SETUP
-#line 166 "util/configlexer.lex"
+#line 167 "util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
 case 69:
 YY_RULE_SETUP
-#line 169 "util/configlexer.lex"
+#line 170 "util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 170 "util/configlexer.lex"
+#line 171 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(INITIAL);
@@ -1712,18 +1726,18 @@ case YY_STATE_EOF(quotedstring):
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 174 "util/configlexer.lex"
+#line 175 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
 case 71:
 /* rule 71 can match eol */
 YY_RULE_SETUP
-#line 175 "util/configlexer.lex"
+#line 176 "util/configlexer.lex"
 { cfg_parser->line++; yymore(); }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 176 "util/configlexer.lex"
+#line 177 "util/configlexer.lex"
 {
         LEXOUT(("QE "));
         BEGIN(INITIAL);
@@ -1734,38 +1748,75 @@ YY_RULE_SETUP
         return STRING;
 }
        YY_BREAK
-/* include: directive */
+/* Single Quoted strings. Strip leading and ending quotes */
 case 73:
 YY_RULE_SETUP
-#line 187 "util/configlexer.lex"
+#line 188 "util/configlexer.lex"
+{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
+       YY_BREAK
+case YY_STATE_EOF(singlequotedstr):
+#line 189 "util/configlexer.lex"
+{
+        yyerror("EOF inside quoted string");
+        BEGIN(INITIAL);
+}
+       YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 193 "util/configlexer.lex"
+{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
+       YY_BREAK
+case 75:
+/* rule 75 can match eol */
+YY_RULE_SETUP
+#line 194 "util/configlexer.lex"
+{ cfg_parser->line++; yymore(); }
+       YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 195 "util/configlexer.lex"
+{
+        LEXOUT(("SQE "));
+        BEGIN(INITIAL);
+        yytext[yyleng - 1] = '\0';
+       yylval.str = strdup(yytext);
+       if(!yylval.str)
+               yyerror("out of memory");
+        return STRING;
+}
+       YY_BREAK
+/* include: directive */
+case 77:
+YY_RULE_SETUP
+#line 206 "util/configlexer.lex"
 { LEXOUT(("v(%s) ", yytext)); BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 188 "util/configlexer.lex"
+#line 207 "util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(INITIAL);
 }
        YY_BREAK
-case 74:
+case 78:
 YY_RULE_SETUP
-#line 192 "util/configlexer.lex"
+#line 211 "util/configlexer.lex"
 { LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
-case 75:
-/* rule 75 can match eol */
+case 79:
+/* rule 79 can match eol */
 YY_RULE_SETUP
-#line 193 "util/configlexer.lex"
+#line 212 "util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
-case 76:
+case 80:
 YY_RULE_SETUP
-#line 194 "util/configlexer.lex"
+#line 213 "util/configlexer.lex"
 { LEXOUT(("IQS ")); BEGIN(include_quoted); }
        YY_BREAK
-case 77:
+case 81:
 YY_RULE_SETUP
-#line 195 "util/configlexer.lex"
+#line 214 "util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include(yytext);
@@ -1773,26 +1824,26 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 200 "util/configlexer.lex"
+#line 219 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(INITIAL);
 }
        YY_BREAK
-case 78:
+case 82:
 YY_RULE_SETUP
-#line 204 "util/configlexer.lex"
+#line 223 "util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 79:
-/* rule 79 can match eol */
+case 83:
+/* rule 83 can match eol */
 YY_RULE_SETUP
-#line 205 "util/configlexer.lex"
+#line 224 "util/configlexer.lex"
 { cfg_parser->line++; yymore(); }
        YY_BREAK
-case 80:
+case 84:
 YY_RULE_SETUP
-#line 206 "util/configlexer.lex"
+#line 225 "util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -1801,7 +1852,7 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 212 "util/configlexer.lex"
+#line 231 "util/configlexer.lex"
 {
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
        if (config_include_stack_ptr == 0) {
@@ -1812,18 +1863,18 @@ case YY_STATE_EOF(INITIAL):
        }
 }
        YY_BREAK
-case 81:
+case 85:
 YY_RULE_SETUP
-#line 222 "util/configlexer.lex"
+#line 241 "util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        yylval.str = strdup(yytext); return STRING; }
        YY_BREAK
-case 82:
+case 86:
 YY_RULE_SETUP
-#line 225 "util/configlexer.lex"
+#line 244 "util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 1826 "<stdout>"
+#line 1877 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -2105,7 +2156,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 723 )
+                       if ( yy_current_state >= 732 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2133,11 +2184,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 >= 723 )
+               if ( yy_current_state >= 732 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 722);
+       yy_is_jam = (yy_current_state == 731);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2770,7 +2821,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 225 "util/configlexer.lex"
+#line 244 "util/configlexer.lex"
 
 
 
index dc7d12c14b9c10766ca385259863587ee0bef8af..4b8ae09099989ff44a9093e0dae3d162fceb7268 100644 (file)
@@ -87,13 +87,14 @@ static void config_end_include(void)
 
 SPACE   [ \t]
 LETTER  [a-zA-Z]
-UNQUOTEDLETTER [^\"\n\r \t\\]|\\.
+UNQUOTEDLETTER [^\'\"\n\r \t\\]|\\.
 NEWLINE [\r\n]
 COMMENT \#
 COLON  \:
-ANY     [^\"\n\r\\]|\\.
+DQANY     [^\"\n\r\\]|\\.
+SQANY     [^\'\n\r\\]|\\.
 
-%x     quotedstring include include_quoted
+%x     quotedstring singlequotedstr include include_quoted
 
 %%
 {SPACE}*               { LEXOUT(("SP ")); /* ignore */ }
@@ -171,7 +172,7 @@ local-data{COLON}   { YDOUT; return VAR_LOCAL_DATA;}
         yyerror("EOF inside quoted string");
         BEGIN(INITIAL);
 }
-<quotedstring>{ANY}*    { LEXOUT(("STR(%s) ", yytext)); yymore(); }
+<quotedstring>{DQANY}*  { LEXOUT(("STR(%s) ", yytext)); yymore(); }
 <quotedstring>\n        { cfg_parser->line++; yymore(); }
 <quotedstring>\" {
         LEXOUT(("QE "));
@@ -183,6 +184,24 @@ local-data{COLON}  { YDOUT; return VAR_LOCAL_DATA;}
         return STRING;
 }
 
+       /* Single Quoted strings. Strip leading and ending quotes */
+\'                     { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
+<singlequotedstr><<EOF>>   {
+        yyerror("EOF inside quoted string");
+        BEGIN(INITIAL);
+}
+<singlequotedstr>{SQANY}*  { LEXOUT(("STR(%s) ", yytext)); yymore(); }
+<singlequotedstr>\n        { cfg_parser->line++; yymore(); }
+<singlequotedstr>\' {
+        LEXOUT(("SQE "));
+        BEGIN(INITIAL);
+        yytext[yyleng - 1] = '\0';
+       yylval.str = strdup(yytext);
+       if(!yylval.str)
+               yyerror("out of memory");
+        return STRING;
+}
+
        /* include: directive */
 include{COLON}         { LEXOUT(("v(%s) ", yytext)); BEGIN(include); }
 <include><<EOF>>       {
@@ -201,7 +220,7 @@ include{COLON}              { LEXOUT(("v(%s) ", yytext)); BEGIN(include); }
         yyerror("EOF inside quoted string");
         BEGIN(INITIAL);
 }
-<include_quoted>{ANY}* { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
+<include_quoted>{DQANY}*       { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
 <include_quoted>{NEWLINE}      { cfg_parser->line++; yymore(); }
 <include_quoted>\"     {
        LEXOUT(("IQE "));