From owner-svn-src-all@FreeBSD.ORG Fri Jul 18 11:32:46 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 33E8739C; Fri, 18 Jul 2014 11:32:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1F0C328D6; Fri, 18 Jul 2014 11:32:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s6IBWjl3014047; Fri, 18 Jul 2014 11:32:45 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s6IBWi4w014033; Fri, 18 Jul 2014 11:32:44 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201407181132.s6IBWi4w014033@svn.freebsd.org> From: Dag-Erling Smørgrav Date: Fri, 18 Jul 2014 11:32:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r268839 - in head/contrib/unbound: doc services util X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jul 2014 11:32:46 -0000 Author: des Date: Fri Jul 18 11:32:44 2014 New Revision: 268839 URL: http://svnweb.freebsd.org/changeset/base/268839 Log: Import unblock-lan-zones feature backported from upstream svn trunk. This is a partial fix for reverse lookups in RFC 1918 networks. With this option enabled, unbound no longer ignores these queries; however, it will still reject the answer it gets from the forwarder, because the RFC 1918 reverse zones are signed. Submitted by: "W.C.A. Wijngaards" Modified: head/contrib/unbound/doc/example.conf.in head/contrib/unbound/doc/unbound.conf.5 head/contrib/unbound/doc/unbound.conf.5.in head/contrib/unbound/services/localzone.c head/contrib/unbound/util/config_file.c head/contrib/unbound/util/config_file.h head/contrib/unbound/util/configlexer.c head/contrib/unbound/util/configlexer.lex head/contrib/unbound/util/configparser.c head/contrib/unbound/util/configparser.h head/contrib/unbound/util/configparser.y Modified: head/contrib/unbound/doc/example.conf.in ============================================================================== --- head/contrib/unbound/doc/example.conf.in Fri Jul 18 08:23:53 2014 (r268838) +++ head/contrib/unbound/doc/example.conf.in Fri Jul 18 11:32:44 2014 (r268839) @@ -437,7 +437,14 @@ server: # the amount of memory to use for the negative cache (used for DLV). # plain value in bytes or you can append k, m or G. default is "1Mb". # neg-cache-size: 1m - + + # if unbound is running service for the local host then it is useful + # to perform lan-wide lookups to the upstream, and unblock the + # long list of local-zones above. If this unbound is a dns server + # for a network of computers, disabled is better and stops information + # leakage of local lan information. + # unblock-lan-zones: no + # By default, for a number of zones a small default 'nothing here' # reply is built-in. Query traffic is thus blocked. If you # wish to serve such zone you can unblock them by uncommenting one Modified: head/contrib/unbound/doc/unbound.conf.5 ============================================================================== --- head/contrib/unbound/doc/unbound.conf.5 Fri Jul 18 08:23:53 2014 (r268838) +++ head/contrib/unbound/doc/unbound.conf.5 Fri Jul 18 11:32:44 2014 (r268839) @@ -778,6 +778,17 @@ Number of bytes size of the aggressive n A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes or gigabytes (1024*1024 bytes in a megabyte). .TP +.B unblock\-lan\-zones: \fI +Default is disabled. If enabled, then for private address space, +the reverse lookups are no longer filtered. This allows unbound when +running as dns service on a host where it provides service for that host, +to put out all of the queries for the 'lan' upstream. When enabled, +only localhost, 127.0.0.1 reverse and ::1 reverse zones are configured +with default local zones. Disable the option when unbound is running +as a (DHCP-) DNS network resolver for a group of machines, where such +lookups should be filtered (RFC compliance), this also stops potential +data leakage about the local network to the upstream DNS servers. +.TP .B local\-zone: \fI Configure a local zone. The type determines the answer to give if there is no match from local\-data. The types are deny, refuse, static, Modified: head/contrib/unbound/doc/unbound.conf.5.in ============================================================================== --- head/contrib/unbound/doc/unbound.conf.5.in Fri Jul 18 08:23:53 2014 (r268838) +++ head/contrib/unbound/doc/unbound.conf.5.in Fri Jul 18 11:32:44 2014 (r268839) @@ -778,6 +778,17 @@ Number of bytes size of the aggressive n A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes or gigabytes (1024*1024 bytes in a megabyte). .TP +.B unblock\-lan\-zones: \fI +Default is disabled. If enabled, then for private address space, +the reverse lookups are no longer filtered. This allows unbound when +running as dns service on a host where it provides service for that host, +to put out all of the queries for the 'lan' upstream. When enabled, +only localhost, 127.0.0.1 reverse and ::1 reverse zones are configured +with default local zones. Disable the option when unbound is running +as a (DHCP-) DNS network resolver for a group of machines, where such +lookups should be filtered (RFC compliance), this also stops potential +data leakage about the local network to the upstream DNS servers. +.TP .B local\-zone: \fI Configure a local zone. The type determines the answer to give if there is no match from local\-data. The types are deny, refuse, static, Modified: head/contrib/unbound/services/localzone.c ============================================================================== --- head/contrib/unbound/services/localzone.c Fri Jul 18 08:23:53 2014 (r268838) +++ head/contrib/unbound/services/localzone.c Fri Jul 18 11:32:44 2014 (r268839) @@ -594,6 +594,8 @@ lz_enter_defaults(struct local_zones* zo /* this list of zones is from RFC 6303 */ + /* block localhost level zones, first, later the LAN zones */ + /* localhost. zone */ if(!lz_exists(zones, "localhost.") && !lz_nodefault(cfg, "localhost.")) { @@ -650,6 +652,14 @@ lz_enter_defaults(struct local_zones* zo } lock_rw_unlock(&z->lock); } + + /* if unblock lan-zones, then do not add the zones below. + * we do add the zones above, about 127.0.0.1, because localhost is + * not on the lan. */ + if(cfg->unblock_lan_zones) + return 1; + + /* block LAN level zones */ if ( !add_as112_default(zones, cfg, "10.in-addr.arpa.") || !add_as112_default(zones, cfg, "16.172.in-addr.arpa.") || !add_as112_default(zones, cfg, "17.172.in-addr.arpa.") || Modified: head/contrib/unbound/util/config_file.c ============================================================================== --- head/contrib/unbound/util/config_file.c Fri Jul 18 08:23:53 2014 (r268838) +++ head/contrib/unbound/util/config_file.c Fri Jul 18 11:32:44 2014 (r268839) @@ -191,6 +191,7 @@ config_create(void) cfg->local_zones = NULL; cfg->local_zones_nodefault = NULL; cfg->local_data = NULL; + cfg->unblock_lan_zones = 0; cfg->python_script = NULL; cfg->remote_control_enable = 0; cfg->control_ifs = NULL; @@ -414,6 +415,7 @@ int config_set_option(struct config_file else S_YNO("minimal-responses:", minimal_responses) else S_YNO("rrset-roundrobin:", rrset_roundrobin) else S_STRLIST("local-data:", local_data) + else S_YNO("unblock-lan-zones:", unblock_lan_zones) else S_YNO("control-enable:", remote_control_enable) else S_STRLIST("control-interface:", control_ifs) else S_NUMBER_NONZERO("control-port:", control_port) @@ -678,6 +680,7 @@ config_get_option(struct config_file* cf else O_UNS(opt, "val-override-date", val_date_override) else O_YNO(opt, "minimal-responses", minimal_responses) else O_YNO(opt, "rrset-roundrobin", rrset_roundrobin) + else O_YNO(opt, "unblock-lan-zones", unblock_lan_zones) else O_DEC(opt, "max-udp-size", max_udp_size) else O_STR(opt, "python-script", python_script) else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min) Modified: head/contrib/unbound/util/config_file.h ============================================================================== --- head/contrib/unbound/util/config_file.h Fri Jul 18 08:23:53 2014 (r268838) +++ head/contrib/unbound/util/config_file.h Fri Jul 18 11:32:44 2014 (r268839) @@ -273,6 +273,8 @@ struct config_file { struct config_strlist* local_zones_nodefault; /** local data RRs configged */ struct config_strlist* local_data; + /** unblock lan zones (reverse lookups for 10/8 and so on) */ + int unblock_lan_zones; /** remote control section. enable toggle. */ int remote_control_enable; Modified: head/contrib/unbound/util/configlexer.c ============================================================================== --- head/contrib/unbound/util/configlexer.c Fri Jul 18 08:23:53 2014 (r268838) +++ head/contrib/unbound/util/configlexer.c Fri Jul 18 11:32:44 2014 (r268839) @@ -375,8 +375,8 @@ static void yy_fatal_error (yyconst char *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 146 -#define YY_END_OF_BUFFER 147 +#define YY_NUM_RULES 147 +#define YY_END_OF_BUFFER 148 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -384,160 +384,162 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1383] = +static yyconst flex_int16_t yy_accept[1399] = { 0, - 1, 1, 128, 128, 132, 132, 136, 136, 140, 140, - 1, 1, 147, 144, 1, 126, 126, 145, 2, 145, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 128, - 129, 129, 130, 145, 132, 133, 133, 134, 145, 139, - 136, 137, 137, 138, 145, 140, 141, 141, 142, 145, - 143, 127, 2, 131, 145, 143, 144, 0, 1, 2, - 2, 2, 2, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 128, 0, 132, 0, 139, 0, 136, 140, 0, - 143, 0, 2, 2, 143, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 143, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 143, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 65, 144, 144, - - 144, 144, 144, 6, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 143, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 143, - 144, 144, 144, 144, 29, 144, 144, 144, 144, 144, - 144, 12, 13, 144, 15, 14, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 121, 144, 144, 144, 144, 144, 3, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 143, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 135, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 32, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 33, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 80, 135, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 79, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 63, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 20, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 30, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 31, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 22, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 26, 144, 27, 144, 144, 144, 66, 144, - 67, 144, 64, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 5, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 82, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 23, 144, 144, 144, 144, - 107, 106, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 34, 144, 144, 144, 144, 144, 144, 144, 144, - 69, 68, 144, 144, 144, 144, 144, 144, 103, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 50, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 54, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 105, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 4, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 100, 144, 144, 144, 144, 144, 144, 144, 115, 101, - 144, 21, 144, 144, 144, 144, 71, 144, 72, 70, - 144, 144, 144, 144, 144, 144, 78, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 102, 144, 144, 144, - - 144, 125, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 62, 144, 144, 144, 144, 144, 144, - 144, 144, 28, 144, 144, 17, 144, 144, 144, 16, - 144, 87, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 41, 42, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 73, 144, 144, 144, - 144, 144, 77, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 81, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 120, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 91, 144, 95, 144, 144, - 144, 144, 76, 144, 144, 113, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 94, - 144, 144, 144, 144, 43, 44, 144, 49, 96, 144, - 108, 104, 144, 144, 37, 144, 98, 144, 144, 144, - 144, 144, 7, 144, 61, 112, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 83, 144, 144, 122, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 97, 144, 36, 38, - - 144, 144, 144, 144, 144, 60, 144, 144, 144, 144, - 116, 18, 19, 144, 144, 144, 144, 144, 144, 58, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 118, - 144, 144, 35, 144, 144, 144, 144, 144, 144, 11, - 144, 144, 144, 144, 144, 144, 144, 10, 144, 144, - 39, 144, 124, 117, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 90, 89, 144, 119, 114, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 45, - 144, 123, 144, 144, 144, 144, 40, 144, 144, 144, - 84, 86, 144, 144, 144, 88, 144, 144, 144, 144, - - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 24, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 111, 144, 144, 144, 144, 144, 144, - 144, 25, 144, 9, 144, 144, 109, 51, 144, 144, - 144, 93, 144, 74, 144, 144, 144, 53, 57, 52, - 144, 46, 144, 8, 144, 144, 92, 144, 144, 144, - 56, 144, 47, 144, 110, 144, 144, 85, 75, 55, - 48, 144, 144, 144, 144, 59, 144, 144, 144, 144, - 99, 0 + 1, 1, 129, 129, 133, 133, 137, 137, 141, 141, + 1, 1, 148, 145, 1, 127, 127, 146, 2, 146, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 129, + 130, 130, 131, 146, 133, 134, 134, 135, 146, 140, + 137, 138, 138, 139, 146, 141, 142, 142, 143, 146, + 144, 128, 2, 132, 146, 144, 145, 0, 1, 2, + 2, 2, 2, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 129, 0, 133, 0, 140, 0, 137, 141, 0, + 144, 0, 2, 2, 144, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 144, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 144, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 65, + + 145, 145, 145, 145, 145, 6, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 144, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 144, 145, 145, 145, 145, 29, 145, + 145, 145, 145, 145, 145, 12, 13, 145, 15, 14, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 122, 145, 145, + 145, 145, 145, 3, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 144, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 136, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 32, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 33, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 80, 136, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 79, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 63, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 20, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 30, 145, 145, 145, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 31, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 22, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 26, + 145, 27, 145, 145, 145, 66, 145, 67, 145, 64, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 5, 145, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 82, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 23, 145, 145, 145, 145, 107, 106, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 34, + 145, 145, 145, 145, 145, 145, 145, 145, 69, 68, + 145, 145, 145, 145, 145, 145, 145, 103, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 50, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 54, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 105, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 4, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 100, 145, 145, 145, 145, 145, 145, 145, 116, 101, + 145, 21, 145, 145, 145, 145, 71, 145, 72, 70, + 145, 145, 145, 145, 145, 145, 78, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 102, 145, 145, 145, + 145, 126, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 62, 145, 145, 145, 145, 145, 145, + 145, 145, 28, 145, 145, 17, 145, 145, 145, 16, + 145, 87, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 41, 42, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 73, 145, 145, + 145, 145, 145, 77, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 81, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 121, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 91, 145, 95, + 145, 145, 145, 145, 76, 145, 145, 114, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 94, 145, 145, 145, 145, 43, 44, 145, 49, + 96, 145, 108, 104, 145, 145, 37, 145, 98, 145, + 145, 145, 145, 145, 7, 145, 61, 113, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 83, 145, 145, 123, 145, 145, 145, + + 145, 145, 145, 145, 145, 145, 145, 145, 145, 97, + 145, 36, 38, 145, 145, 145, 145, 145, 60, 145, + 145, 145, 145, 117, 18, 19, 145, 145, 145, 145, + 145, 145, 145, 58, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 119, 145, 145, 35, 145, 145, 145, + 145, 145, 145, 11, 145, 145, 145, 145, 145, 145, + 145, 10, 145, 145, 39, 145, 125, 118, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 90, + 89, 145, 120, 115, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 45, 145, 124, 145, 145, 145, + + 145, 40, 145, 145, 145, 84, 86, 109, 145, 145, + 145, 88, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 24, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 112, + 145, 145, 145, 145, 145, 145, 145, 25, 145, 9, + 145, 145, 110, 51, 145, 145, 145, 93, 145, 74, + 145, 145, 145, 53, 57, 52, 145, 46, 145, 8, + 145, 145, 92, 145, 145, 145, 56, 145, 47, 145, + 111, 145, 145, 85, 75, 55, 48, 145, 145, 145, + 145, 59, 145, 145, 145, 145, 99, 0 + } ; static yyconst flex_int32_t yy_ec[256] = @@ -580,323 +582,327 @@ static yyconst flex_int32_t yy_meta[40] 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[1397] = +static yyconst flex_int16_t yy_base[1413] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 87, 108, 2653, 2569, 50, 2760, 2760, 2760, 129, 94, + 87, 108, 2067, 1442, 50, 2793, 2793, 2793, 129, 94, 70, 104, 122, 90, 92, 115, 126, 95, 84, 132, - 135, 138, 50, 146, 148, 157, 167, 160, 151, 2566, - 2760, 2760, 2760, 70, 2404, 2760, 2760, 2760, 42, 2139, - 1931, 2760, 2760, 2760, 189, 1601, 2760, 2760, 2760, 195, - 1479, 2760, 199, 2760, 203, 111, 635, 209, 120, 0, + 135, 138, 50, 146, 148, 157, 167, 160, 151, 1368, + 2793, 2793, 2793, 70, 1259, 2793, 2793, 2793, 42, 1197, + 1142, 2793, 2793, 2793, 189, 824, 2793, 2793, 2793, 195, + 789, 2793, 199, 2793, 203, 111, 761, 209, 120, 0, 220, 0, 0, 103, 141, 149, 202, 189, 182, 204, 206, 210, 218, 215, 217, 221, 222, 223, 225, 228, 235, 248, 165, 244, 247, 233, 245, 252, 246, 251, 258, 260, 261, 262, 267, 263, 270, 271, 158, 274, - 276, 280, 277, 278, 282, 286, 283, 49, 287, 291, - 288, 588, 304, 558, 307, 386, 316, 354, 297, 320, - 236, 324, 328, 0, 321, 309, 330, 323, 226, 326, - 327, 334, 331, 337, 348, 339, 342, 344, 333, 346, - 353, 345, 351, 355, 354, 360, 363, 371, 373, 379, - 375, 382, 383, 381, 380, 392, 393, 399, 400, 396, - 402, 384, 405, 385, 406, 397, 409, 410, 413, 418, - 421, 419, 420, 417, 428, 425, 426, 438, 445, 430, - 431, 434, 442, 446, 447, 448, 451, 454, 455, 457, - - 458, 464, 461, 466, 467, 468, 473, 476, 474, 478, - 484, 490, 475, 483, 486, 487, 491, 493, 494, 496, - 502, 503, 504, 505, 509, 499, 510, 512, 526, 514, - 527, 515, 519, 531, 537, 533, 541, 539, 543, 549, - 545, 546, 547, 548, 553, 555, 561, 566, 557, 559, - 567, 570, 568, 590, 560, 576, 577, 580, 586, 583, - 596, 587, 595, 597, 613, 594, 611, 615, 619, 618, - 584, 621, 622, 624, 517, 623, 628, 630, 631, 627, - 629, 634, 649, 645, 646, 648, 647, 654, 661, 657, - 658, 659, 662, 663, 665, 668, 672, 2760, 674, 669, - - 676, 677, 679, 2760, 680, 681, 682, 683, 685, 692, - 694, 695, 697, 698, 699, 703, 704, 705, 725, 707, - 706, 716, 709, 734, 713, 736, 715, 728, 732, 723, - 739, 743, 710, 744, 745, 746, 754, 752, 753, 755, - 757, 758, 762, 766, 765, 772, 773, 777, 779, 787, - 784, 789, 790, 781, 791, 793, 799, 800, 798, 792, - 806, 805, 795, 808, 813, 807, 822, 815, 818, 819, - 826, 827, 828, 830, 829, 837, 836, 835, 844, 834, - 843, 848, 849, 850, 851, 860, 857, 858, 863, 869, - 870, 865, 871, 874, 875, 876, 877, 878, 879, 883, - - 885, 886, 894, 880, 890, 896, 902, 904, 887, 905, - 908, 909, 910, 911, 919, 912, 921, 913, 923, 926, - 929, 934, 925, 935, 2760, 945, 939, 941, 933, 759, - 927, 2760, 2760, 947, 2760, 2760, 948, 949, 950, 961, - 965, 958, 952, 960, 959, 974, 968, 978, 966, 986, - 988, 971, 980, 982, 989, 992, 990, 994, 998, 996, - 1004, 1007, 1006, 1008, 1010, 1011, 1013, 1015, 1016, 1022, - 1017, 1029, 1026, 2760, 1027, 1028, 1032, 1034, 1035, 2760, - 1036, 1039, 1037, 1040, 1041, 1047, 1043, 1050, 1048, 1051, - 1053, 1055, 1059, 1056, 1061, 1073, 1074, 1064, 1072, 1077, - - 1071, 1079, 1086, 1085, 1087, 1089, 1095, 1091, 1094, 1097, - 1098, 1099, 1100, 1101, 1104, 1126, 1106, 1107, 1108, 1109, - 1114, 1115, 1116, 1117, 1132, 1138, 1140, 1120, 1141, 1147, - 1149, 1143, 1152, 1150, 1156, 1157, 2760, 1163, 1159, 1160, - 1165, 1167, 1168, 1112, 1170, 1171, 1173, 1174, 1175, 1182, - 2760, 1180, 1183, 1181, 1185, 1186, 1192, 1194, 1204, 1200, - 2760, 1207, 1208, 1210, 1211, 1198, 1214, 1215, 1216, 1219, - 1222, 1223, 1225, 1230, 1232, 1220, 1234, 1227, 1233, 1235, - 1240, 1242, 1243, 1244, 1246, 1250, 1256, 1259, 1257, 1264, - 1258, 1260, 1266, 1269, 1267, 1270, 1268, 1271, 2760, 175, - - 1275, 1273, 1280, 1281, 1291, 1290, 1283, 1284, 1294, 1292, - 1293, 1282, 1303, 1304, 1305, 1306, 1309, 1310, 1312, 1313, - 1316, 1318, 1319, 1320, 1321, 1323, 1324, 1329, 1326, 1327, - 1330, 2760, 1343, 1336, 1337, 1346, 1348, 1356, 1349, 1352, - 1354, 1362, 1358, 1364, 1367, 1360, 1370, 1371, 1373, 1374, - 1380, 1382, 1378, 1381, 1384, 1386, 2760, 1390, 1388, 1389, - 1391, 1395, 1396, 1399, 1401, 1406, 1409, 1410, 1412, 2760, - 1415, 1416, 1417, 1423, 1420, 1427, 1424, 1433, 1428, 1430, - 1434, 1438, 1437, 1439, 1444, 2760, 1446, 1452, 1449, 1458, - 1450, 1456, 1457, 1461, 1462, 1463, 1469, 1465, 1467, 1466, - - 1470, 1472, 1473, 1476, 1474, 1478, 2760, 1496, 1477, 1481, - 1488, 1489, 1480, 1501, 1490, 1502, 1504, 1509, 1506, 1510, - 1512, 1511, 1513, 1514, 1517, 1520, 1522, 1528, 1534, 1535, - 1536, 2760, 1539, 1540, 1527, 1542, 1549, 1547, 1550, 1551, - 1552, 1553, 1554, 1562, 1555, 1556, 1558, 1563, 1559, 1564, - 1565, 1566, 1571, 1579, 1568, 1584, 1586, 1588, 1589, 1591, - 1590, 1597, 2760, 1596, 2760, 1598, 1599, 1607, 2760, 1605, - 2760, 1609, 2760, 1612, 1616, 1611, 1613, 1618, 1619, 1621, - 1622, 1624, 1627, 1628, 1629, 1631, 1630, 2760, 1636, 1632, - 1640, 1637, 1643, 1644, 1645, 1648, 1656, 1652, 1655, 1659, - - 1660, 2760, 1662, 1661, 1665, 1675, 1673, 1671, 1676, 1677, - 1678, 1679, 1680, 1682, 1687, 1688, 1684, 1690, 1691, 1696, - 1694, 1698, 1699, 1700, 1701, 2760, 1703, 1709, 1712, 1711, - 2760, 2760, 1714, 1723, 1725, 1715, 1728, 1717, 1729, 1733, - 1739, 1744, 1732, 1735, 1740, 1745, 1746, 1747, 1749, 1751, - 1754, 2760, 1760, 1756, 1762, 1763, 1753, 1766, 1764, 1775, - 2760, 2760, 1768, 1770, 1779, 1780, 1782, 1785, 2760, 1781, - 1786, 1787, 1788, 1789, 1791, 1795, 1796, 1805, 1802, 1807, - 1808, 1814, 1810, 1806, 1815, 1813, 1826, 2760, 1823, 1828, - 1834, 1817, 1830, 1831, 1836, 1833, 1840, 1842, 1848, 1844, - - 2760, 1850, 1837, 1857, 1846, 1859, 1860, 1867, 1854, 1856, - 1863, 1864, 1865, 1870, 1872, 1874, 1877, 2760, 1878, 1880, - 1881, 1882, 1885, 1888, 1890, 1892, 1893, 2760, 1895, 1904, - 1901, 1903, 1906, 1902, 1908, 1911, 1912, 1913, 1915, 1916, - 1919, 1924, 1925, 1934, 1926, 1929, 1940, 1938, 1949, 1950, - 1939, 1957, 1942, 1955, 1946, 1953, 1961, 1960, 1967, 1963, - 2760, 1965, 1970, 1972, 1973, 1976, 1974, 1977, 2760, 2760, - 1983, 2760, 1984, 1987, 1988, 1989, 2760, 1991, 2760, 2760, - 1992, 1999, 1993, 2000, 1964, 2003, 2760, 2004, 2007, 2008, - 2012, 2013, 2014, 2016, 2015, 2017, 2760, 2018, 2019, 2020, - - 2022, 2760, 2029, 2035, 2024, 2036, 2040, 2039, 2046, 2045, - 2032, 2053, 2049, 2760, 2047, 2055, 2057, 2058, 2059, 2060, - 2064, 2065, 2760, 2067, 2074, 2760, 2075, 2061, 2076, 2760, - 2078, 2760, 2080, 2082, 2085, 2090, 2087, 2098, 2083, 2091, - 2099, 2093, 2101, 2103, 2760, 2760, 2105, 2109, 2112, 2110, - 2115, 2117, 2116, 2118, 2119, 2124, 2760, 2125, 2127, 2126, - 2128, 2129, 2760, 2133, 2134, 2135, 2138, 2141, 2153, 2155, - 2144, 2159, 2161, 2156, 2163, 2165, 2166, 2760, 2167, 2169, - 2170, 2174, 2176, 2130, 2177, 2181, 2179, 2171, 2184, 2760, - 2187, 2188, 2191, 2193, 2195, 2196, 2198, 2199, 2200, 2203, - - 2204, 2206, 2209, 2210, 2213, 2760, 2211, 2760, 2216, 2226, - 2229, 2232, 2760, 2220, 2222, 2760, 2236, 2237, 2244, 2245, - 2247, 2252, 2248, 2238, 2255, 2240, 2256, 2262, 2263, 2760, - 2230, 2265, 2264, 2266, 2760, 2760, 2273, 2760, 2760, 2276, - 2760, 2760, 2277, 2279, 2760, 2281, 2760, 2288, 2284, 2271, - 2267, 2286, 2760, 2293, 2760, 2760, 2290, 2294, 2297, 2298, - 2300, 2302, 2305, 2306, 2307, 2308, 2309, 2310, 2312, 2314, - 2315, 2228, 2316, 2317, 2319, 2323, 2326, 2328, 2329, 2339, - 2760, 2327, 2340, 2760, 2347, 2342, 2335, 2331, 2348, 2352, - 2353, 2355, 2361, 2358, 2357, 2359, 2760, 2362, 2760, 2760, - - 2360, 2364, 2370, 2363, 2365, 2760, 2375, 2371, 2385, 2387, - 2760, 2760, 2760, 2388, 2377, 2382, 2392, 2393, 2394, 2760, - 2395, 2396, 2400, 2403, 2407, 2409, 2416, 2413, 2415, 2760, - 2417, 2419, 2760, 2420, 2421, 2424, 2426, 2427, 2429, 2760, - 2425, 2430, 2437, 2432, 2440, 2442, 2443, 2760, 2445, 2446, - 2760, 2452, 2760, 2760, 2447, 2455, 2457, 2462, 2464, 2453, - 2458, 2470, 2469, 2473, 2760, 2760, 2474, 2760, 2760, 2466, - 2475, 2476, 2478, 2481, 2482, 2484, 2486, 2489, 2488, 2760, - 2490, 2760, 2491, 2500, 2492, 2494, 2760, 2501, 2502, 2505, - 2760, 2760, 2506, 2515, 2513, 2760, 2518, 2517, 2519, 2520, - - 2525, 2527, 2521, 2528, 2531, 2529, 2507, 2532, 2541, 2543, - 2760, 2545, 2542, 2546, 2550, 2553, 2554, 2555, 2556, 2558, - 2559, 2561, 2563, 2760, 2564, 2565, 2575, 2580, 2584, 2572, - 2586, 2760, 2587, 2760, 2590, 2591, 2760, 2760, 2592, 2594, - 2597, 2760, 2598, 2760, 2581, 2605, 2595, 2760, 2760, 2760, - 2607, 2760, 2608, 2760, 2610, 2611, 2760, 2613, 2615, 2617, - 2760, 2619, 2760, 2621, 2760, 2622, 2623, 2760, 2760, 2760, - 2760, 2625, 2627, 2633, 2628, 2760, 2630, 2635, 2636, 2639, - 2760, 2760, 2668, 2675, 2682, 2689, 2696, 94, 2703, 2710, - 2717, 2724, 2731, 2738, 2745, 2752 + 276, 280, 277, 278, 282, 286, 283, 295, 287, 291, + 288, 653, 316, 558, 307, 417, 320, 388, 347, 324, + 236, 328, 332, 0, 310, 325, 333, 327, 226, 329, + 331, 339, 336, 343, 352, 345, 335, 348, 49, 355, + 357, 349, 350, 364, 360, 369, 367, 370, 371, 380, + 381, 388, 389, 296, 337, 391, 392, 398, 400, 396, + 399, 401, 402, 385, 404, 409, 406, 410, 411, 413, + 419, 416, 418, 422, 428, 425, 427, 434, 442, 443, + 445, 440, 430, 446, 453, 450, 441, 451, 457, 458, + + 459, 466, 470, 461, 463, 472, 476, 473, 479, 481, + 484, 486, 492, 468, 489, 490, 493, 496, 494, 498, + 501, 504, 500, 505, 508, 509, 510, 514, 520, 519, + 516, 523, 524, 530, 529, 534, 535, 536, 539, 542, + 548, 546, 547, 550, 549, 551, 556, 564, 568, 557, + 560, 561, 569, 571, 575, 591, 577, 579, 581, 582, + 584, 595, 609, 596, 585, 597, 613, 598, 611, 614, + 623, 617, 622, 624, 627, 626, 629, 630, 631, 634, + 635, 642, 632, 646, 654, 651, 658, 659, 639, 586, + 665, 650, 661, 663, 668, 666, 669, 673, 676, 2793, + + 678, 680, 681, 682, 683, 2793, 684, 685, 686, 687, + 688, 698, 690, 697, 699, 702, 703, 707, 709, 710, + 730, 713, 711, 721, 714, 715, 722, 724, 739, 728, + 732, 737, 734, 741, 742, 745, 748, 750, 751, 762, + 758, 759, 760, 769, 764, 766, 771, 772, 779, 775, + 781, 784, 790, 792, 794, 800, 786, 796, 798, 804, + 805, 803, 797, 811, 810, 812, 813, 818, 814, 827, + 820, 828, 830, 833, 823, 835, 837, 839, 846, 842, + 844, 849, 845, 843, 854, 855, 859, 858, 870, 871, + 864, 872, 879, 880, 857, 881, 867, 877, 884, 886, + + 887, 888, 889, 892, 893, 899, 896, 900, 898, 905, + 907, 909, 911, 913, 914, 917, 920, 918, 919, 928, + 929, 931, 933, 932, 935, 939, 934, 941, 2793, 949, + 948, 945, 951, 953, 956, 2793, 2793, 958, 2793, 2793, + 954, 959, 960, 967, 976, 968, 966, 972, 974, 982, + 979, 989, 970, 991, 993, 998, 987, 999, 1000, 1001, + 1004, 1005, 1006, 1010, 1017, 1020, 1013, 1021, 1014, 1024, + 1025, 1026, 1028, 1030, 1033, 1039, 1036, 2793, 1037, 1038, + 1044, 1042, 1047, 2793, 1046, 1048, 1049, 1051, 1054, 1059, + 1056, 1060, 1062, 1063, 1066, 1069, 1068, 1061, 1072, 1078, + + 1089, 1087, 1077, 1085, 1088, 1090, 1094, 1103, 1099, 1092, + 1100, 1106, 1104, 1108, 1115, 1105, 1112, 1109, 1117, 1118, + 1142, 1119, 1121, 1125, 1122, 1126, 1127, 1129, 1133, 1135, + 1154, 1144, 1138, 1134, 1156, 1159, 1161, 1163, 1165, 1167, + 1168, 2793, 1175, 1171, 1173, 1176, 1178, 1179, 1181, 1182, + 1186, 1185, 1188, 1187, 1199, 2793, 1193, 1195, 1200, 1203, + 1204, 1206, 1207, 1217, 1219, 2793, 1225, 1222, 1227, 1221, + 1228, 1229, 1210, 1233, 1234, 1235, 1237, 1240, 1243, 1245, + 1244, 1247, 1249, 1251, 1252, 1255, 1256, 1258, 1257, 1266, + 1260, 1264, 1278, 1279, 1265, 1282, 1277, 1283, 1286, 1288, + + 1285, 1290, 1287, 1289, 2793, 175, 1291, 1292, 1293, 1300, + 1309, 1310, 1294, 1302, 1312, 1311, 1318, 1301, 1322, 1319, + 1323, 1324, 1325, 1330, 1327, 1334, 1331, 1328, 1336, 1341, + 1339, 1342, 1347, 1348, 1345, 1349, 1350, 2793, 1357, 1356, + 1364, 1355, 1361, 1378, 1362, 1367, 1374, 1376, 1384, 1382, + 1386, 1388, 1390, 1392, 1379, 1394, 1400, 1401, 1398, 1402, + 1404, 1405, 2793, 1407, 1408, 1409, 1410, 1414, 1417, 1415, + 1419, 1421, 1431, 1426, 1435, 2793, 1436, 1438, 1428, 1445, + 1432, 1449, 1450, 1454, 1440, 1451, 1457, 1458, 1461, 1459, + 1464, 1466, 2793, 1472, 1474, 1471, 1480, 1478, 1479, 1481, + + 1483, 1468, 1484, 1490, 1486, 1489, 1493, 1494, 1496, 1497, + 1499, 1491, 1500, 2793, 1513, 1501, 1502, 1510, 1503, 1504, + 1519, 1518, 1525, 1526, 1528, 1529, 1530, 1531, 1532, 1533, + 1541, 1534, 1539, 1542, 1547, 1558, 1559, 1555, 2793, 1561, + 1557, 1564, 1546, 1571, 1568, 1569, 1572, 1573, 1574, 1575, + 1582, 1576, 1579, 1583, 1584, 1580, 1585, 1586, 1589, 1587, + 1596, 1597, 1604, 1605, 1608, 1609, 1611, 1612, 1621, 2793, + 1617, 2793, 1618, 1619, 1627, 2793, 1629, 2793, 1631, 2793, + 1633, 1637, 1624, 1626, 1634, 1640, 1641, 1643, 1644, 1646, + 1649, 1650, 1653, 1654, 1655, 2793, 1652, 1658, 1662, 1659, + + 1665, 1666, 1667, 1675, 1681, 1668, 1677, 1683, 1678, 2793, + 1687, 1674, 1690, 1694, 1695, 1697, 1698, 1700, 1701, 1702, + 1703, 1705, 1707, 1709, 1710, 1711, 1714, 1721, 1713, 1723, + 1716, 1719, 1722, 2793, 1729, 1734, 1737, 1724, 2793, 2793, + 1748, 1732, 1745, 1738, 1742, 1752, 1753, 1755, 1761, 1758, + 1759, 1760, 1763, 1766, 1767, 1768, 1769, 1772, 1775, 2793, + 1782, 1776, 1783, 1784, 1785, 1796, 1774, 1795, 2793, 2793, + 1789, 1799, 1800, 1801, 1807, 1803, 1806, 2793, 1808, 1809, + 1810, 1811, 1817, 1814, 1821, 1825, 1827, 1829, 1830, 1833, + 1836, 1834, 1832, 1835, 1838, 1848, 2793, 1849, 1852, 1859, + + 1839, 1853, 1855, 1857, 1861, 1863, 1865, 1871, 1867, 2793, + 1873, 1869, 1879, 1876, 1878, 1882, 1885, 1884, 1886, 1888, + 1889, 1890, 1892, 1893, 1894, 1897, 2793, 1904, 1900, 1905, + 1907, 1912, 1902, 1915, 1910, 1918, 2793, 1922, 1929, 1923, + 1925, 1931, 1933, 1926, 1937, 1939, 1940, 1941, 1942, 1944, + 1946, 1947, 1950, 1951, 1952, 1960, 1962, 1969, 1970, 1967, + 1971, 1978, 1974, 1975, 1976, 1977, 1985, 1981, 1987, 1984, + 2793, 1989, 1991, 1995, 1998, 2000, 2001, 1997, 2793, 2793, + 1999, 2793, 2008, 2010, 2012, 2013, 2793, 2015, 2793, 2793, + 2016, 2023, 2017, 2024, 2027, 2032, 2793, 2019, 2033, 2035, + + 2037, 2038, 2039, 2040, 2041, 2042, 2793, 2043, 2044, 2045, + 2055, 2793, 2047, 2060, 2049, 2065, 2066, 2067, 2069, 2071, + 2057, 2078, 2076, 2793, 2079, 2080, 2083, 2084, 2088, 2085, + 2086, 2090, 2793, 2099, 2101, 2793, 2092, 2091, 2093, 2793, + 2107, 2793, 2108, 2103, 2110, 2112, 2116, 2117, 2120, 2122, + 2123, 2124, 2125, 2131, 2128, 2793, 2793, 2133, 2140, 2143, + 2134, 2132, 2145, 2147, 2148, 2150, 2151, 2793, 2154, 2152, + 2156, 2155, 2158, 2793, 2160, 2161, 2168, 2169, 2165, 2173, + 2175, 2180, 2184, 2186, 2187, 2189, 2191, 2192, 2793, 2194, + 2196, 2197, 2201, 2202, 2157, 2204, 2208, 2213, 2198, 2215, + + 2793, 2219, 2203, 2221, 2223, 2225, 2205, 2226, 2227, 2228, + 2230, 2231, 2233, 2234, 2236, 2244, 2241, 2793, 2238, 2793, + 2247, 2252, 2259, 2260, 2793, 2248, 2255, 2793, 2262, 2266, + 2273, 2264, 2274, 2276, 2278, 2270, 2280, 2279, 2281, 2287, + 2285, 2793, 2288, 2289, 2292, 2293, 2793, 2793, 2296, 2793, + 2793, 2302, 2793, 2793, 2298, 2306, 2793, 2308, 2793, 2314, + 2310, 2312, 2313, 2315, 2793, 2317, 2793, 2793, 2318, 2319, + 2322, 2324, 2326, 2331, 2333, 2327, 2334, 2337, 2338, 2341, + 2340, 2342, 2344, 2346, 2347, 2348, 2351, 2354, 2356, 2357, + 2358, 2360, 2367, 2793, 2359, 2371, 2793, 2380, 2374, 2361, + + 2369, 2381, 2382, 2384, 2386, 2393, 2389, 2390, 2391, 2793, + 2394, 2793, 2793, 2392, 2397, 2396, 2401, 2402, 2793, 2406, + 2407, 2415, 2418, 2793, 2793, 2793, 2421, 2408, 2410, 2423, + 2424, 2425, 2427, 2793, 2431, 2432, 2433, 2434, 2440, 2442, + 2448, 2451, 2453, 2793, 2454, 2445, 2793, 2455, 2447, 2456, + 2461, 2462, 2464, 2793, 2466, 2467, 2469, 2471, 2475, 2476, + 2472, 2793, 2478, 2479, 2793, 2482, 2793, 2793, 2483, 2488, + 2490, 2495, 2497, 2499, 2491, 2500, 2506, 2505, 2507, 2793, + 2793, 2502, 2793, 2793, 2510, 2512, 2513, 2515, 2517, 2518, + 2519, 2521, 2522, 2524, 2793, 2525, 2793, 2527, 2535, 2526, + + 2537, 2793, 2540, 2536, 2538, 2793, 2793, 2793, 2550, 2541, + 2543, 2793, 2551, 2553, 2554, 2557, 2559, 2560, 2561, 2564, + 2566, 2565, 2567, 2568, 2576, 2579, 2793, 2581, 2571, 2578, + 2586, 2589, 2582, 2590, 2592, 2595, 2596, 2598, 2599, 2793, + 2603, 2604, 2606, 2611, 2614, 2615, 2622, 2793, 2623, 2793, + 2626, 2627, 2793, 2793, 2628, 2630, 2633, 2793, 2634, 2793, + 2631, 2641, 2642, 2793, 2793, 2793, 2644, 2793, 2645, 2793, + 2648, 2635, 2793, 2619, 2653, 2655, 2793, 2657, 2793, 2659, + 2793, 2660, 2661, 2793, 2793, 2793, 2793, 2663, 2664, 2666, + 2607, 2793, 2668, 2671, 2669, 2674, 2793, 2793, 2701, 2708, + 2715, 2722, 2729, 94, 2736, 2743, 2750, 2757, 2764, 2771, + 2778, 2785 } ; -static yyconst flex_int16_t yy_def[1397] = +static yyconst flex_int16_t yy_def[1413] = { 0, - 1382, 1, 1383, 1383, 1384, 1384, 1385, 1385, 1386, 1386, - 1387, 1387, 1382, 1388, 1382, 1382, 1382, 1382, 1389, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1390, - 1382, 1382, 1382, 1390, 1391, 1382, 1382, 1382, 1391, 1392, - 1382, 1382, 1382, 1382, 1392, 1393, 1382, 1382, 1382, 1393, - 1394, 1382, 1395, 1382, 1394, 1394, 1388, 1388, 1382, 1396, - 1389, 1396, 1389, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1390, 1390, 1391, 1391, 1392, 1392, 1382, 1393, 1393, - 1394, 1394, 1395, 1395, 1394, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1394, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1394, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - - 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1394, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1394, - 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1382, 1388, 1382, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1394, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1394, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1382, 1388, 1382, 1388, 1388, 1388, 1382, 1388, - 1382, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1382, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1382, - 1388, 1382, 1388, 1388, 1388, 1388, 1382, 1388, 1382, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1382, 1388, 1388, 1382, 1388, 1388, 1388, 1382, - 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1382, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1382, 1388, 1388, - 1388, 1388, 1382, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1382, 1382, 1388, 1382, 1382, 1388, - 1382, 1382, 1388, 1388, 1382, 1388, 1382, 1388, 1388, 1388, - 1388, 1388, 1382, 1388, 1382, 1382, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1382, 1382, - - 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1382, 1382, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, 1388, 1388, - 1382, 1388, 1382, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1388, 1382, 1382, 1388, 1382, 1382, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1382, - 1388, 1382, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, - 1382, 1382, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1382, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, 1388, 1388, - 1388, 1382, 1388, 1382, 1388, 1388, 1382, 1382, 1388, 1388, - 1388, 1382, 1388, 1382, 1388, 1388, 1388, 1382, 1382, 1382, - 1388, 1382, 1388, 1382, 1388, 1388, 1382, 1388, 1388, 1388, - 1382, 1388, 1382, 1388, 1382, 1388, 1388, 1382, 1382, 1382, - 1382, 1388, 1388, 1388, 1388, 1382, 1388, 1388, 1388, 1388, - 1382, 0, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, - 1382, 1382, 1382, 1382, 1382, 1382 + 1398, 1, 1399, 1399, 1400, 1400, 1401, 1401, 1402, 1402, + 1403, 1403, 1398, 1404, 1398, 1398, 1398, 1398, 1405, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1406, + 1398, 1398, 1398, 1406, 1407, 1398, 1398, 1398, 1407, 1408, + 1398, 1398, 1398, 1398, 1408, 1409, 1398, 1398, 1398, 1409, + 1410, 1398, 1411, 1398, 1410, 1410, 1404, 1404, 1398, 1412, + 1405, 1412, 1405, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1406, 1406, 1407, 1407, 1408, 1408, 1398, 1409, 1409, + 1410, 1410, 1411, 1411, 1410, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1410, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1410, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1398, + + 1404, 1404, 1404, 1404, 1404, 1398, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1410, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1410, 1404, 1404, 1404, 1404, 1398, 1404, + 1404, 1404, 1404, 1404, 1404, 1398, 1398, 1404, 1398, 1398, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1398, 1404, 1404, + 1404, 1404, 1404, 1398, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1410, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1398, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1398, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1398, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + + 1404, 1404, 1404, 1404, 1398, 1410, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1398, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1398, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1398, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1398, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1398, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1398, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, + 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, 1404, *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***