diff options
| author | Internet Software Consortium, Inc <@isc.org> | 2011-02-04 20:45:50 -0700 |
|---|---|---|
| committer | Internet Software Consortium, Inc <@isc.org> | 2011-02-04 20:45:50 -0700 |
| commit | 93702497b856ab01c6b944faab7829b0759e0429 (patch) | |
| tree | 9bd6dddf73319a32d042929aa87661dc1f5612a6 | |
| parent | acc2e6bc149c4ed88b615e24bea8f894a1d87593 (diff) | |
| download | bind9-93702497b856ab01c6b944faab7829b0759e0429.tar.gz | |
9.8.0b1
287 files changed, 23748 insertions, 10343 deletions
@@ -1,3 +1,107 @@ + + --- 9.8.0b1 released --- + +3008. [func] Response policy zones (RPZ) support. [RT #21726] + +3007. [bug] Named failed to preserve the case of domain names in + rdata which is not compressible when writing master + files. [RT #22863] + +3006. [func] Allow dynamically generated TSIG keys to be preserved + across restarts of named. Initially this is for + TSIG keys generated using GSSAPI. [RT #22639] + +3005. [port] Solaris: Work around the lack of + gsskrb5_register_acceptor_identity() by setting + the KRB5_KTNAME environment variable to the + contents of tkey-gssapi-keytab. Also fixed + test errors on MacOSX. [RT #22853] + +3004. [func] DNS64 reverse support. [RT #22769] + +3003. [experimental] Added update-policy match type "external", + enabling named to defer the decision of whether to + allow a dynamic update to an external daemon. + (Contributed by Andrew Tridgell.) [RT #22758] + +3002. [bug] isc_mutex_init_errcheck() failed to destroy attr. + [RT #22766] + +3001. [func] Added a default trust anchor for the root zone, which + can be switched on by setting "dnssec-validation auto;" + in the named.conf options. [RT #21727] + +3000. [bug] More TKEY/GSS fixes: + - nsupdate can now get the default realm from + the user's Kerberos principal + - corrected gsstest compilation flags + - improved documentation + - fixed some NULL dereferences + [RT #22795] + +2999. [func] Add GOST support (RFC 5933). [RT #20639] + +2998. [func] Add isc_task_beginexclusive and isc_task_endexclusive + to the task api. [RT #22776] + +2997. [func] named -V now reports the OpenSSL and libxml2 verions + it was compiled against. [RT #22687] + +2996. [security] Temporarily disable SO_ACCEPTFILTER support. + [RT #22589] + +2995. [bug] The Kerberos realm was not being correctly extracted + from the signer's identity. [RT #22770] + +2994. [port] NetBSD: use pthreads by default on NetBSD >= 5.0, and + do not use threads on earlier versions. Also kill + the unproven-pthreads, mit-pthreads, and ptl2 support. + +2993. [func] Dynamically grow adb hash tables. [RT #21186] + +2992. [contrib] contrib/check-secure-delegation.pl: A simple tool + for looking at a secure delegation. [RT #22059] + +2991. [contrib] contrib/zone-edit.sh: A simple zone editing tool for + dynamic zones. [RT #22365] + +2990. [bug] 'dnssec-settime -S' no longer tests prepublication + interval validity when the interval is set to 0. + [RT #22761] + +2989. [func] Added support for writable DLZ zones. (Contributed + by Andrew Tridgell of the Samba project.) [RT #22629] + +2988. [experimental] Added a "dlopen" DLZ driver, allowing the creation + of external DLZ drivers that can be loaded as + shared objects at runtime rather than linked with + named. Currently this is switched on via a + compile-time option, "configure --with-dlz-dlopen". + Note: the syntax for configuring DLZ zones + is likely to be refined in future releases. + (Contributed by Andrew Tridgell of the Samba + project.) [RT #22629] + +2987. [func] Improve ease of configuring TKEY/GSS updates by + adding a "tkey-gssapi-keytab" option. If set, + updates will be allowed with any key matching + a principal in the specified keytab file. + "tkey-gssapi-credential" is no longer required + and is expected to be deprecated. (Contributed + by Andrew Tridgell of the Samba project.) + [RT #22629] + +2986. [func] Add new zone type "static-stub". It's like a stub + zone, but the nameserver names and/or their IP + addresses are statically configured. [RT #21474] + +2985. [bug] Add a regression test for change #2896. [RT #21324] + +2984. [bug] Don't run MX checks when the target of the MX record + is ".". [RT #22645] + +2983. [bug] Include "loadkeys" in rndc help output. [RT #22493] + --- 9.8.0a1 released --- 2982. [bug] Reference count dst keys. dst_key_attach() can be used @@ -1,4 +1,4 @@ -Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") Copyright (C) 1996-2003 Internet Software Consortium. Permission to use, copy, modify, and/or distribute this software for any @@ -13,7 +13,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -$Id: COPYRIGHT,v 1.16 2010/01/04 23:48:51 tbox Exp $ +$Id: COPYRIGHT,v 1.17 2011-01-04 23:47:13 tbox Exp $ Portions Copyright (C) 1996-2001 Nominum, Inc. diff --git a/bin/dnssec/dnssec-dsfromkey.8 b/bin/dnssec/dnssec-dsfromkey.8 index 8c3d28f4..25aa2bf8 100644 --- a/bin/dnssec/dnssec-dsfromkey.8 +++ b/bin/dnssec/dnssec-dsfromkey.8 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2008, 2009 Internet Systems Consortium, Inc. ("ISC") +.\" Copyright (C) 2008-2010 Internet Systems Consortium, Inc. ("ISC") .\" .\" Permission to use, copy, modify, and/or distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -12,7 +12,7 @@ .\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR .\" PERFORMANCE OF THIS SOFTWARE. .\" -.\" $Id: dnssec-dsfromkey.8,v 1.12 2010/05/19 01:14:14 tbox Exp $ +.\" $Id: dnssec-dsfromkey.8,v 1.13 2010-12-24 01:14:20 tbox Exp $ .\" .hy 0 .ad l @@ -55,7 +55,7 @@ Use SHA\-256 as the digest algorithm. .RS 4 Select the digest algorithm. The value of \fBalgorithm\fR -must be one of SHA\-1 (SHA1) or SHA\-256 (SHA256). These values are case insensitive. +must be one of SHA\-1 (SHA1), SHA\-256 (SHA256) or GOST. These values are case insensitive. .RE .PP \-K \fIdirectory\fR @@ -139,5 +139,5 @@ RFC 4509. .PP Internet Systems Consortium .SH "COPYRIGHT" -Copyright \(co 2008, 2009 Internet Systems Consortium, Inc. ("ISC") +Copyright \(co 2008\-2010 Internet Systems Consortium, Inc. ("ISC") .br diff --git a/bin/dnssec/dnssec-dsfromkey.c b/bin/dnssec/dnssec-dsfromkey.c index 499255e2..b7f84a04 100644 --- a/bin/dnssec/dnssec-dsfromkey.c +++ b/bin/dnssec/dnssec-dsfromkey.c @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-dsfromkey.c,v 1.18 2010/01/11 23:48:37 tbox Exp $ */ +/* $Id: dnssec-dsfromkey.c,v 1.19 2010-12-23 04:07:59 marka Exp $ */ /*! \file */ @@ -299,7 +299,7 @@ usage(void) { fprintf(stderr, " -K <directory>: directory in which to find " "key file or keyset file\n"); fprintf(stderr, " -a algorithm: digest algorithm " - "(SHA-1 or SHA-256)\n"); + "(SHA-1, SHA-256 or GOST)\n"); fprintf(stderr, " -1: use SHA-1\n"); fprintf(stderr, " -2: use SHA-256\n"); fprintf(stderr, " -l: add lookaside zone and print DLV records\n"); @@ -414,6 +414,10 @@ main(int argc, char **argv) { else if (strcasecmp(algname, "SHA256") == 0 || strcasecmp(algname, "SHA-256") == 0) dtype = DNS_DSDIGEST_SHA256; +#ifdef HAVE_OPENSSL_GOST + else if (strcasecmp(algname, "GOST") == 0) + dtype = DNS_DSDIGEST_GOST; +#endif else fatal("unknown algorithm %s", algname); } diff --git a/bin/dnssec/dnssec-dsfromkey.docbook b/bin/dnssec/dnssec-dsfromkey.docbook index df24df14..36410d5f 100644 --- a/bin/dnssec/dnssec-dsfromkey.docbook +++ b/bin/dnssec/dnssec-dsfromkey.docbook @@ -2,7 +2,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [<!ENTITY mdash "—">]> <!-- - - Copyright (C) 2008, 2009 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2008-2010 Internet Systems Consortium, Inc. ("ISC") - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above @@ -17,7 +17,7 @@ - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: dnssec-dsfromkey.docbook,v 1.10 2009/08/26 21:56:05 jreed Exp $ --> +<!-- $Id: dnssec-dsfromkey.docbook,v 1.12 2010-12-23 23:47:08 tbox Exp $ --> <refentry id="man.dnssec-dsfromkey"> <refentryinfo> <date>August 26, 2009</date> @@ -38,6 +38,7 @@ <copyright> <year>2008</year> <year>2009</year> + <year>2010</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> </docinfo> @@ -105,8 +106,8 @@ <listitem> <para> Select the digest algorithm. The value of - <option>algorithm</option> must be one of SHA-1 (SHA1) or - SHA-256 (SHA256). These values are case insensitive. + <option>algorithm</option> must be one of SHA-1 (SHA1), + SHA-256 (SHA256) or GOST. These values are case insensitive. </para> </listitem> </varlistentry> diff --git a/bin/dnssec/dnssec-dsfromkey.html b/bin/dnssec/dnssec-dsfromkey.html index b60bd4f8..54cc1ab6 100644 --- a/bin/dnssec/dnssec-dsfromkey.html +++ b/bin/dnssec/dnssec-dsfromkey.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2008, 2009 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2008-2010 Internet Systems Consortium, Inc. ("ISC") - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above @@ -13,7 +13,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: dnssec-dsfromkey.html,v 1.12 2010/05/19 01:14:14 tbox Exp $ --> +<!-- $Id: dnssec-dsfromkey.html,v 1.13 2010-12-24 01:14:19 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -32,14 +32,14 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-dsfromkey</code> {-s} [<code class="option">-1</code>] [<code class="option">-2</code>] [<code class="option">-a <em class="replaceable"><code>alg</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-l <em class="replaceable"><code>domain</code></em></code>] [<code class="option">-s</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>file</code></em></code>] [<code class="option">-A</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] {dnsname}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543461"></a><h2>DESCRIPTION</h2> +<a name="id2543464"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-dsfromkey</strong></span> outputs the Delegation Signer (DS) resource record (RR), as defined in RFC 3658 and RFC 4509, for the given key(s). </p> </div> <div class="refsect1" lang="en"> -<a name="id2543473"></a><h2>OPTIONS</h2> +<a name="id2543476"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-1</span></dt> <dd><p> @@ -53,8 +53,8 @@ <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt> <dd><p> Select the digest algorithm. The value of - <code class="option">algorithm</code> must be one of SHA-1 (SHA1) or - SHA-256 (SHA256). These values are case insensitive. + <code class="option">algorithm</code> must be one of SHA-1 (SHA1), + SHA-256 (SHA256) or GOST. These values are case insensitive. </p></dd> <dt><span class="term">-K <em class="replaceable"><code>directory</code></em></span></dt> <dd><p> @@ -100,7 +100,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2543659"></a><h2>EXAMPLE</h2> +<a name="id2543662"></a><h2>EXAMPLE</h2> <p> To build the SHA-256 DS RR from the <strong class="userinput"><code>Kexample.com.+003+26160</code></strong> @@ -115,7 +115,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543689"></a><h2>FILES</h2> +<a name="id2543692"></a><h2>FILES</h2> <p> The keyfile can be designed by the key identification <code class="filename">Knnnn.+aaa+iiiii</code> or the full file name @@ -129,13 +129,13 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543724"></a><h2>CAVEAT</h2> +<a name="id2543728"></a><h2>CAVEAT</h2> <p> A keyfile error can give a "file not found" even if the file exists. </p> </div> <div class="refsect1" lang="en"> -<a name="id2543734"></a><h2>SEE ALSO</h2> +<a name="id2543737"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, @@ -145,7 +145,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543773"></a><h2>AUTHOR</h2> +<a name="id2543777"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/bin/dnssec/dnssec-keyfromlabel.8 b/bin/dnssec/dnssec-keyfromlabel.8 index ea5d8af2..36dd4090 100644 --- a/bin/dnssec/dnssec-keyfromlabel.8 +++ b/bin/dnssec/dnssec-keyfromlabel.8 @@ -12,7 +12,7 @@ .\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR .\" PERFORMANCE OF THIS SOFTWARE. .\" -.\" $Id: dnssec-keyfromlabel.8,v 1.17 2010/01/20 01:14:19 tbox Exp $ +.\" $Id: dnssec-keyfromlabel.8,v 1.18 2010-12-24 01:14:20 tbox Exp $ .\" .hy 0 .ad l @@ -47,7 +47,7 @@ of the key is specified on the command line. This must match the name of the zon .RS 4 Selects the cryptographic algorithm. The value of \fBalgorithm\fR -must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256 or RSASHA512. These values are case insensitive. +must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512 or ECCGOST. These values are case insensitive. .sp If no algorithm is specified, then RSASHA1 will be used by default, unless the \fB\-3\fR diff --git a/bin/dnssec/dnssec-keyfromlabel.c b/bin/dnssec/dnssec-keyfromlabel.c index b9d2ed48..323f9187 100644 --- a/bin/dnssec/dnssec-keyfromlabel.c +++ b/bin/dnssec/dnssec-keyfromlabel.c @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-keyfromlabel.c,v 1.31 2010/01/19 23:48:55 tbox Exp $ */ +/* $Id: dnssec-keyfromlabel.c,v 1.32 2010-12-23 04:07:59 marka Exp $ */ /*! \file */ @@ -55,7 +55,7 @@ int verbose; static const char *algs = "RSA | RSAMD5 | DH | DSA | RSASHA1 |" " NSEC3DSA | NSEC3RSASHA1 |" - " RSASHA256 | RSASHA512"; + " RSASHA256 | RSASHA512 | ECCGOST"; ISC_PLATFORM_NORETURN_PRE static void usage(void) ISC_PLATFORM_NORETURN_POST; @@ -364,7 +364,8 @@ main(int argc, char **argv) { if (use_nsec3 && alg != DST_ALG_NSEC3DSA && alg != DST_ALG_NSEC3RSASHA1 && - alg != DST_ALG_RSASHA256 && alg != DST_ALG_RSASHA512) { + alg != DST_ALG_RSASHA256 && alg != DST_ALG_RSASHA512 && + alg != DST_ALG_ECCGOST) { fatal("%s is incompatible with NSEC3; " "do not use the -3 option", algname); } diff --git a/bin/dnssec/dnssec-keyfromlabel.docbook b/bin/dnssec/dnssec-keyfromlabel.docbook index 2284f464..f15a8b75 100644 --- a/bin/dnssec/dnssec-keyfromlabel.docbook +++ b/bin/dnssec/dnssec-keyfromlabel.docbook @@ -17,7 +17,7 @@ - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: dnssec-keyfromlabel.docbook,v 1.17 2010/01/19 23:48:55 tbox Exp $ --> +<!-- $Id: dnssec-keyfromlabel.docbook,v 1.18 2010-12-23 04:07:59 marka Exp $ --> <refentry id="man.dnssec-keyfromlabel"> <refentryinfo> <date>February 8, 2008</date> @@ -93,7 +93,7 @@ <para> Selects the cryptographic algorithm. The value of <option>algorithm</option> must be one of RSAMD5, RSASHA1, - DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256 or RSASHA512. + DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512 or ECCGOST. These values are case insensitive. </para> <para> diff --git a/bin/dnssec/dnssec-keyfromlabel.html b/bin/dnssec/dnssec-keyfromlabel.html index a8dacf9e..78cf9bf0 100644 --- a/bin/dnssec/dnssec-keyfromlabel.html +++ b/bin/dnssec/dnssec-keyfromlabel.html @@ -13,7 +13,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: dnssec-keyfromlabel.html,v 1.16 2010/01/20 01:14:19 tbox Exp $ --> +<!-- $Id: dnssec-keyfromlabel.html,v 1.17 2010-12-24 01:14:19 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -51,7 +51,7 @@ <p> Selects the cryptographic algorithm. The value of <code class="option">algorithm</code> must be one of RSAMD5, RSASHA1, - DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256 or RSASHA512. + DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512 or ECCGOST. These values are case insensitive. </p> <p> diff --git a/bin/dnssec/dnssec-keygen.8 b/bin/dnssec/dnssec-keygen.8 index ab92ad0e..ea4690eb 100644 --- a/bin/dnssec/dnssec-keygen.8 +++ b/bin/dnssec/dnssec-keygen.8 @@ -13,7 +13,7 @@ .\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR .\" PERFORMANCE OF THIS SOFTWARE. .\" -.\" $Id: dnssec-keygen.8,v 1.54 2010/08/17 01:15:25 tbox Exp $ +.\" $Id: dnssec-keygen.8,v 1.55 2010-12-24 01:14:19 tbox Exp $ .\" .hy 0 .ad l @@ -48,7 +48,7 @@ of the key is specified on the command line. For DNSSEC keys, this must match th .RS 4 Selects the cryptographic algorithm. For DNSSEC keys, the value of \fBalgorithm\fR -must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256 or RSASHA512. For TSIG/TKEY, the value must be DH (Diffie Hellman), HMAC\-MD5, HMAC\-SHA1, HMAC\-SHA224, HMAC\-SHA256, HMAC\-SHA384, or HMAC\-SHA512. These values are case insensitive. +must be one of RSAMD5, RSASHA1, DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512 or ECCGOST. For TSIG/TKEY, the value must be DH (Diffie Hellman), HMAC\-MD5, HMAC\-SHA1, HMAC\-SHA224, HMAC\-SHA256, HMAC\-SHA384, or HMAC\-SHA512. These values are case insensitive. .sp If no algorithm is specified, then RSASHA1 will be used by default, unless the \fB\-3\fR @@ -81,7 +81,7 @@ must either be ZONE (for a DNSSEC zone key (KEY/DNSKEY)), HOST or ENTITY (for a .PP \-3 .RS 4 -Use an NSEC3\-capable algorithm to generate a DNSSEC key. If this option is used and no algorithm is explicitly set on the command line, NSEC3RSASHA1 will be used by default. Note that RSASHA256 and RSASHA512 algorithms are NSEC3\-capable. +Use an NSEC3\-capable algorithm to generate a DNSSEC key. If this option is used and no algorithm is explicitly set on the command line, NSEC3RSASHA1 will be used by default. Note that RSASHA256, RSASHA512 and ECCGOST algorithms are NSEC3\-capable. .RE .PP \-C diff --git a/bin/dnssec/dnssec-keygen.c b/bin/dnssec/dnssec-keygen.c index a9fe4f94..f369326a 100644 --- a/bin/dnssec/dnssec-keygen.c +++ b/bin/dnssec/dnssec-keygen.c @@ -29,7 +29,7 @@ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-keygen.c,v 1.114 2010/08/16 23:46:51 tbox Exp $ */ +/* $Id: dnssec-keygen.c,v 1.115 2010-12-23 04:07:59 marka Exp $ */ /*! \file */ @@ -84,7 +84,7 @@ usage(void) { fprintf(stderr, " -a <algorithm>:\n"); fprintf(stderr, " RSA | RSAMD5 | DSA | RSASHA1 | NSEC3RSASHA1" " | NSEC3DSA |\n"); - fprintf(stderr, " RSASHA256 | RSASHA512 |\n"); + fprintf(stderr, " RSASHA256 | RSASHA512 | ECCGOST |\n"); fprintf(stderr, " DH | HMAC-MD5 | HMAC-SHA1 | HMAC-SHA224 | " "HMAC-SHA256 | \n"); fprintf(stderr, " HMAC-SHA384 | HMAC-SHA512\n"); @@ -101,6 +101,7 @@ usage(void) { fprintf(stderr, " DSA:\t\t[512..1024] and divisible by 64\n"); fprintf(stderr, " NSEC3DSA:\t[512..1024] and divisible " "by 64\n"); + fprintf(stderr, " ECCGOST:\tignored\n"); fprintf(stderr, " HMAC-MD5:\t[1..512]\n"); fprintf(stderr, " HMAC-SHA1:\t[1..160]\n"); fprintf(stderr, " HMAC-SHA224:\t[1..224]\n"); @@ -129,6 +130,7 @@ usage(void) { "records with (default: 0)\n"); fprintf(stderr, " -T <rrtype>: DNSKEY | KEY (default: DNSKEY; " "use KEY for SIG(0))\n"); + fprintf(stderr, " ECCGOST:\tignored\n"); fprintf(stderr, " -t <type>: " "AUTHCONF | NOAUTHCONF | NOAUTH | NOCONF " "(default: AUTHCONF)\n"); @@ -542,7 +544,8 @@ main(int argc, char **argv) { if (use_nsec3 && alg != DST_ALG_NSEC3DSA && alg != DST_ALG_NSEC3RSASHA1 && - alg != DST_ALG_RSASHA256 && alg!= DST_ALG_RSASHA512) { + alg != DST_ALG_RSASHA256 && alg!= DST_ALG_RSASHA512 && + alg != DST_ALG_ECCGOST) { fatal("%s is incompatible with NSEC3; " "do not use the -3 option", algname); } @@ -574,9 +577,8 @@ main(int argc, char **argv) { fprintf(stderr, "key size not " "specified; defaulting " "to %d\n", size); - } else { + } else if (alg != DST_ALG_ECCGOST) fatal("key size not specified (-b option)"); - } } if (!oldstyle && prepub > 0) { @@ -703,6 +705,8 @@ main(int argc, char **argv) { if (size != 0 && !dsa_size_ok(size)) fatal("invalid DSS key size: %d", size); break; + case DST_ALG_ECCGOST: + break; case DST_ALG_HMACMD5: options |= DST_TYPE_KEY; if (size < 1 || size > 512) @@ -767,7 +771,8 @@ main(int argc, char **argv) { if (!(alg == DNS_KEYALG_RSAMD5 || alg == DNS_KEYALG_RSASHA1 || alg == DNS_KEYALG_NSEC3RSASHA1 || alg == DNS_KEYALG_RSASHA256 || - alg == DNS_KEYALG_RSASHA512) && rsa_exp != 0) + alg == DNS_KEYALG_RSASHA512 || alg == DST_ALG_ECCGOST) && + rsa_exp != 0) fatal("specified RSA exponent for a non-RSA key"); if (alg != DNS_KEYALG_DH && generator != 0) @@ -839,6 +844,7 @@ main(int argc, char **argv) { case DNS_KEYALG_DSA: case DNS_KEYALG_NSEC3DSA: + case DST_ALG_ECCGOST: show_progress = ISC_TRUE; /* fall through */ diff --git a/bin/dnssec/dnssec-keygen.docbook b/bin/dnssec/dnssec-keygen.docbook index 3efc6df4..dc140ebf 100644 --- a/bin/dnssec/dnssec-keygen.docbook +++ b/bin/dnssec/dnssec-keygen.docbook @@ -18,7 +18,7 @@ - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: dnssec-keygen.docbook,v 1.35 2010/08/16 23:46:51 tbox Exp $ --> +<!-- $Id: dnssec-keygen.docbook,v 1.36 2010-12-23 04:07:59 marka Exp $ --> <refentry id="man.dnssec-keygen"> <refentryinfo> <date>June 30, 2000</date> @@ -114,7 +114,7 @@ <para> Selects the cryptographic algorithm. For DNSSEC keys, the value of <option>algorithm</option> must be one of RSAMD5, RSASHA1, - DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256 or RSASHA512. + DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512 or ECCGOST. For TSIG/TKEY, the value must be DH (Diffie Hellman), HMAC-MD5, HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, or HMAC-SHA512. These values are @@ -184,7 +184,7 @@ Use an NSEC3-capable algorithm to generate a DNSSEC key. If this option is used and no algorithm is explicitly set on the command line, NSEC3RSASHA1 will be used by - default. Note that RSASHA256 and RSASHA512 algorithms + default. Note that RSASHA256, RSASHA512 and ECCGOST algorithms are NSEC3-capable. </para> </listitem> diff --git a/bin/dnssec/dnssec-keygen.html b/bin/dnssec/dnssec-keygen.html index fb0e479b..2f3a69b9 100644 --- a/bin/dnssec/dnssec-keygen.html +++ b/bin/dnssec/dnssec-keygen.html @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: dnssec-keygen.html,v 1.46 2010/08/17 01:15:26 tbox Exp $ --> +<!-- $Id: dnssec-keygen.html,v 1.47 2010-12-24 01:14:20 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -53,7 +53,7 @@ <p> Selects the cryptographic algorithm. For DNSSEC keys, the value of <code class="option">algorithm</code> must be one of RSAMD5, RSASHA1, - DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256 or RSASHA512. + DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512 or ECCGOST. For TSIG/TKEY, the value must be DH (Diffie Hellman), HMAC-MD5, HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, or HMAC-SHA512. These values are @@ -111,7 +111,7 @@ Use an NSEC3-capable algorithm to generate a DNSSEC key. If this option is used and no algorithm is explicitly set on the command line, NSEC3RSASHA1 will be used by - default. Note that RSASHA256 and RSASHA512 algorithms + default. Note that RSASHA256, RSASHA512 and ECCGOST algorithms are NSEC3-capable. </p></dd> <dt><span class="term">-C</span></dt> diff --git a/bin/dnssec/dnssec-settime.c b/bin/dnssec/dnssec-settime.c index 051b6496..364e2ab5 100644 --- a/bin/dnssec/dnssec-settime.c +++ b/bin/dnssec/dnssec-settime.c @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-settime.c,v 1.27 2010/08/16 23:46:51 tbox Exp $ */ +/* $Id: dnssec-settime.c,v 1.28 2010-12-19 07:29:36 each Exp $ */ /*! \file */ @@ -386,7 +386,7 @@ main(int argc, char **argv) { "generating a successor."); pub = act - prepub; - if (pub < now) + if (pub < now && prepub != 0) fatal("Predecessor will become inactive before the\n\t" "prepublication period ends. Either change " "its inactivation date,\n\t" diff --git a/bin/named/Makefile.in b/bin/named/Makefile.in index dfb1d2d8..a3dbb380 100644 --- a/bin/named/Makefile.in +++ b/bin/named/Makefile.in @@ -13,7 +13,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.112 2010/11/18 23:20:15 marka Exp $ +# $Id: Makefile.in,v 1.114 2010-12-22 09:00:40 marka Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -43,9 +43,9 @@ DLZDRIVER_LIBS = @DLZ_DRIVER_LIBS@ CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include -I. \ ${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \ ${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_INCLUDES} \ - ${DLZDRIVER_INCLUDES} ${DBDRIVER_INCLUDES} + ${DLZDRIVER_INCLUDES} ${DBDRIVER_INCLUDES} @DST_OPENSSL_INC@ -CDEFINES = @USE_DLZ@ @USE_PKCS11@ +CDEFINES = @USE_DLZ@ @USE_PKCS11@ @USE_OPENSSL@ CWARNINGS = diff --git a/bin/named/bind.keys.h b/bin/named/bind.keys.h index e023a784..61e3f700 100644 --- a/bin/named/bind.keys.h +++ b/bin/named/bind.keys.h @@ -1,21 +1,99 @@ /* - * Generated by bindkeys.pl 1.5 2010/06/20 23:46:45 tbox Exp - * From bind.keys 1.6 2010/06/20 07:15:28 marka Exp + * Generated by bindkeys.pl 1.7 2011/01/04 23:47:13 tbox Exp + * From bind.keys 1.7 2011/01/03 23:45:07 each Exp */ #define TRUSTED_KEYS "\ +# The bind.keys file is used to override the built-in DNSSEC trust anchors\n\ +# which are included as part of BIND 9. As of the current release, the only\n\ +# trust anchors it contains are those for the DNS root zone (\".\"), and for\n\ +# the ISC DNSSEC Lookaside Validation zone (\"dlv.isc.org\"). Trust anchors\n\ +# for any other zones MUST be configured elsewhere; if they are configured\n\ +# here, they will not be recognized or used by named.\n\ +#\n\ +# The built-in trust anchors are provided for convenience of configuration.\n\ +# They are not activated within named.conf unless specifically switched on.\n\ +# To use the built-in root key, set \"dnssec-validation auto;\" in\n\ +# named.conf options. To use the built-in DLV key, set\n\ +# \"dnssec-lookaside auto;\". Without these options being set,\n\ +# the keys in this file are ignored.\n\ +#\n\ +# This file is NOT expected to be user-configured.\n\ +#\n\ +# These keys are current as of January 2011. If any key fails to\n\ +# initialize correctly, it may have expired. In that event you should\n\ +# replace this file with a current version. The latest version of\n\ +# bind.keys can always be obtained from ISC at https://www.isc.org/bind-keys.\n\ +\n\ trusted-keys {\n\ - # NOTE: This key is current as of October 2009.\n\ - # If it fails to initialize correctly, it may have expired;\n\ - # see https://www.isc.org/solutions/dlv for a replacement.\n\ - dlv.isc.org. 257 3 5 \"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt TDN0YUuWrBNh\";\n\ + # ISC DLV: See https://www.isc.org/solutions/dlv for details.\n\ + # NOTE: This key is activated by setting \"dnssec-lookaside auto;\"\n\ + # in named.conf.\n\ + dlv.isc.org. 257 3 5 \"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2\n\ + brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+\n\ + 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5\n\ + ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk\n\ + Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM\n\ + QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt\n\ + TDN0YUuWrBNh\";\n\ +\n\ + # ROOT KEY: See https://data.iana.org/root-anchors/root-anchors.xml\n\ + # for current trust anchor information.\n\ + # NOTE: This key is activated by setting \"dnssec-validation auto;\"\n\ + # in named.conf.\n\ + . 257 3 8 \"AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF\n\ + FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX\n\ + bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD\n\ + X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz\n\ + W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS\n\ + Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq\n\ + QxA+Uk1ihz0=\";\n\ };\n\ " #define MANAGED_KEYS "\ +# The bind.keys file is used to override the built-in DNSSEC trust anchors\n\ +# which are included as part of BIND 9. As of the current release, the only\n\ +# trust anchors it contains are those for the DNS root zone (\".\"), and for\n\ +# the ISC DNSSEC Lookaside Validation zone (\"dlv.isc.org\"). Trust anchors\n\ +# for any other zones MUST be configured elsewhere; if they are configured\n\ +# here, they will not be recognized or used by named.\n\ +#\n\ +# The built-in trust anchors are provided for convenience of configuration.\n\ +# They are not activated within named.conf unless specifically switched on.\n\ +# To use the built-in root key, set \"dnssec-validation auto;\" in\n\ +# named.conf options. To use the built-in DLV key, set\n\ +# \"dnssec-lookaside auto;\". Without these options being set,\n\ +# the keys in this file are ignored.\n\ +#\n\ +# This file is NOT expected to be user-configured.\n\ +#\n\ +# These keys are current as of January 2011. If any key fails to\n\ +# initialize correctly, it may have expired. In that event you should\n\ +# replace this file with a current version. The latest version of\n\ +# bind.keys can always be obtained from ISC at https://www.isc.org/bind-keys.\n\ +\n\ managed-keys {\n\ - # NOTE: This key is current as of October 2009.\n\ - # If it fails to initialize correctly, it may have expired;\n\ - # see https://www.isc.org/solutions/dlv for a replacement.\n\ - dlv.isc.org. initial-key 257 3 5 \"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt TDN0YUuWrBNh\";\n\ + # ISC DLV: See https://www.isc.org/solutions/dlv for details.\n\ + # NOTE: This key is activated by setting \"dnssec-lookaside auto;\"\n\ + # in named.conf.\n\ + dlv.isc.org. initial-key 257 3 5 \"BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2\n\ + brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+\n\ + 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5\n\ + ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk\n\ + Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM\n\ + QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt\n\ + TDN0YUuWrBNh\";\n\ +\n\ + # ROOT KEY: See https://data.iana.org/root-anchors/root-anchors.xml\n\ + # for current trust anchor information.\n\ + # NOTE: This key is activated by setting \"dnssec-validation auto;\"\n\ + # in named.conf.\n\ + . initial-key 257 3 8 \"AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF\n\ + FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX\n\ + bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD\n\ + X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz\n\ + W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS\n\ + Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq\n\ + QxA+Uk1ihz0=\";\n\ };\n\ " diff --git a/bin/named/bindkeys.pl b/bin/named/bindkeys.pl index 762f3960..7c1aab79 100755 --- a/bin/named/bindkeys.pl +++ b/bin/named/bindkeys.pl @@ -1,6 +1,6 @@ #!/usr/bin/env perl # -# Copyright (C) 2009, 2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2009-2011 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -14,12 +14,12 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: bindkeys.pl,v 1.5 2010/06/20 23:46:45 tbox Exp $ +# $Id: bindkeys.pl,v 1.7 2011-01-04 23:47:13 tbox Exp $ use strict; use warnings; -my $rev = '$Id: bindkeys.pl,v 1.5 2010/06/20 23:46:45 tbox Exp $'; +my $rev = '$Id: bindkeys.pl,v 1.7 2011-01-04 23:47:13 tbox Exp $'; $rev =~ s/\$//g; $rev =~ s/,v//g; $rev =~ s/Id: //; @@ -31,7 +31,7 @@ while (<>) { chomp; if (/\/\* .Id:.* \*\//) { $keys = $_; - next; + next; } s/\"/\\\"/g; s/$/\\n\\/; @@ -48,7 +48,7 @@ print "/*\n * Generated by $rev \n * From $keys\n */\n"; my $mkey = '#define MANAGED_KEYS "\\' . "\n" . $lines . "\"\n"; $lines =~ s/managed-keys/trusted-keys/; -$lines =~ s/\s+initial-key//; +$lines =~ s/\s+initial-key//g; my $tkey = '#define TRUSTED_KEYS "\\' . "\n" . $lines . "\"\n"; print $tkey; diff --git a/bin/named/builtin.c b/bin/named/builtin.c index dae6d635..d7730e7a 100644 --- a/bin/named/builtin.c +++ b/bin/named/builtin.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: builtin.c,v 1.17 2010/08/03 23:46:39 tbox Exp $ */ +/* $Id: builtin.c,v 1.20 2011-01-07 23:47:07 tbox Exp $ */ /*! \file * \brief @@ -47,6 +47,7 @@ static isc_result_t do_hostname_lookup(dns_sdblookup_t *lookup); static isc_result_t do_authors_lookup(dns_sdblookup_t *lookup); static isc_result_t do_id_lookup(dns_sdblookup_t *lookup); static isc_result_t do_empty_lookup(dns_sdblookup_t *lookup); +static isc_result_t do_dns64_lookup(dns_sdblookup_t *lookup); /* * We can't use function pointers as the db_data directly @@ -65,9 +66,179 @@ static builtin_t hostname_builtin = { do_hostname_lookup, NULL, NULL }; static builtin_t authors_builtin = { do_authors_lookup, NULL, NULL }; static builtin_t id_builtin = { do_id_lookup, NULL, NULL }; static builtin_t empty_builtin = { do_empty_lookup, NULL, NULL }; +static builtin_t dns64_builtin = { do_dns64_lookup, NULL, NULL }; static dns_sdbimplementation_t *builtin_impl; +static const char hex[] = "0123456789abcdef"; +static const char HEX[] = "0123456789ABCDEF"; + +static isc_result_t +dns64_cname(const char *zone, const char *name, dns_sdblookup_t *lookup) { + size_t zlen, nlen, j; + const char *s; + unsigned char v[16]; + unsigned int i; + char reverse[sizeof("123.123.123.123.in-addr.arpa.")]; + + /* + * The sum the length of the relative name and the length of the zone + * name for a IPv6 reverse lookup comes to 71. + * + * The reverse of 2001::10.0.0.1 (dns64 2001::/96) has a zone of + * "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.2.ip6.arpa" + * and a name of "1.0.0.0.0.0.a.0". The sum of the lengths of these + * two strings is 71. + * + * The minimum length for a ip6.arpa zone name is 8. + * + * The length of name should always be odd as we are expecting + * a series of nibbles. + */ + zlen = strlen(zone); + nlen = strlen(name); + if ((zlen + nlen) > 71U || zlen < 8U || (nlen % 2) != 1U) + return (ISC_R_NOTFOUND); + + /* + * We assume the zone name is well formed. + */ + + /* + * XXXMPA We could check the dns64 suffix here if we need to. + */ + /* + * Check that name is a series of nibbles. + * Compute the byte values that correspond to the nibbles as we go. + * + * Shift the final result 4 bits, by setting 'i' to 1, if we if we + * have a odd number of nibbles so that "must be zero" tests below + * are byte aligned and we correctly return ISC_R_NOTFOUND or + * ISC_R_SUCCESS. We will not generate a CNAME in this case. + */ + i = (nlen % 4) == 1U ? 1 : 0; + j = nlen; + memset(v, 0, sizeof(v)); + while (j >= 1U) { + INSIST((i/2) < sizeof(v)); + if (j > 1U && name[1] != '.') + return (ISC_R_NOTFOUND); + v[i/2] >>= 4; + if ((s = strchr(hex, name[0])) != NULL) + v[i/2] |= (s - hex) << 4; + else if ((s = strchr(HEX, name[0])) != NULL) + v[i/2] |= (s - HEX) << 4; + else + return (ISC_R_NOTFOUND); + if (j > 1U) + j -= 2; + else + j -= 1; + name += 2; + i++; + } + + /* + * If we get here then we know name only consisted of nibbles. + * Now we need to determine if the name exists or not and whether + * it corresponds to a empty node in the zone or there should be + * a CNAME. + */ + switch (zlen) { + case 24: /* prefix len 32 */ + /* + * If the total length is not 71 then this is a empty node + * so return success. + */ + if (nlen + zlen != 71U) + return (ISC_R_SUCCESS); + snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", + v[8], v[9], v[10], v[11]); + break; + case 28: /* prefix len 40 */ + /* + * The nibbles that map to this byte must be zero for 'name' + * to exist in the zone. + */ + if (nlen > 11U && v[nlen/4 - 3] != 0) + return (ISC_R_NOTFOUND); + /* + * If the total length is not 71 then this is a empty node + * so return success. + */ + if (nlen + zlen != 71U) + return (ISC_R_SUCCESS); + snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", + v[6], v[8], v[9], v[10]); + break; + case 32: /* prefix len 48 */ + /* + * The nibbles that map to this byte must be zero for 'name' + * to exist in the zone. + */ + if (nlen > 7U && v[nlen/4 - 2] != 0) + return (ISC_R_NOTFOUND); + /* + * If the total length is not 71 then this is a empty node + * so return success. + */ + if (nlen + zlen != 71U) + return (ISC_R_SUCCESS); + snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", + v[5], v[6], v[8], v[9]); + break; + case 36: /* prefix len 56 */ + /* + * The nibbles that map to this byte must be zero for 'name' + * to exist in the zone. + */ + if (nlen > 3U && v[nlen/4 - 1] != 0) + return (ISC_R_NOTFOUND); + /* + * If the total length is not 71 then this is a empty node + * so return success. + */ + if (nlen + zlen != 71U) + return (ISC_R_SUCCESS); + snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", + v[4], v[5], v[6], v[8]); + break; + case 40: /* prefix len 64 */ + /* + * The nibbles that map to this byte must be zero for 'name' + * to exist in the zone. + */ + if (v[nlen/4] != 0) + return (ISC_R_NOTFOUND); + /* + * If the total length is not 71 then this is a empty node + * so return success. + */ + if (nlen + zlen != 71U) + return (ISC_R_SUCCESS); + snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", + v[3], v[4], v[5], v[6]); + break; + case 56: /* prefix len 96 */ + /* + * If the total length is not 71 then this is a empty node + * so return success. + */ + if (nlen + zlen != 71U) + return (ISC_R_SUCCESS); + snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", + v[0], v[1], v[2], v[3]); + break; + default: + /* + * This should never be reached unless someone adds a + * zone declaration with this internal type to named.conf. + */ + return (ISC_R_NOTFOUND); + } + return (dns_sdb_putrr(lookup, "CNAME", 600, reverse)); +} + static isc_result_t builtin_lookup(const char *zone, const char *name, void *dbdata, dns_sdblookup_t *lookup) @@ -78,6 +249,8 @@ builtin_lookup(const char *zone, const char *name, void *dbdata, if (strcmp(name, "@") == 0) return (b->do_lookup(lookup)); + else if (b->do_lookup == do_dns64_lookup) + return (dns64_cname(zone, name, lookup)); else return (ISC_R_NOTFOUND); } @@ -176,6 +349,12 @@ do_id_lookup(dns_sdblookup_t *lookup) { } static isc_result_t +do_dns64_lookup(dns_sdblookup_t *lookup) { + UNUSED(lookup); + return (ISC_R_SUCCESS); +} + +static isc_result_t do_empty_lookup(dns_sdblookup_t *lookup) { UNUSED(lookup); @@ -222,7 +401,7 @@ builtin_create(const char *zone, int argc, char **argv, UNUSED(zone); UNUSED(driverdata); - if (strcmp(argv[0], "empty") == 0) { + if (strcmp(argv[0], "empty") == 0 || strcmp(argv[0], "dns64") == 0) { if (argc != 3) return (DNS_R_SYNTAX); } else if (argc != 1) @@ -236,7 +415,8 @@ builtin_create(const char *zone, int argc, char **argv, *dbdata = &authors_builtin; else if (strcmp(argv[0], "id") == 0) *dbdata = &id_builtin; - else if (strcmp(argv[0], "empty") == 0) { + else if (strcmp(argv[0], "empty") == 0 || + strcmp(argv[0], "dns64") == 0) { builtin_t *empty; char *server; char *contact; @@ -248,7 +428,10 @@ builtin_create(const char *zone, int argc, char **argv, server = isc_mem_strdup(ns_g_mctx, argv[1]); contact = isc_mem_strdup(ns_g_mctx, argv[2]); if (empty == NULL || server == NULL || contact == NULL) { - *dbdata = &empty_builtin; + if (strcmp(argv[0], "empty") == 0) + *dbdata = &empty_builtin; + else + *dbdata = &dns64_builtin; if (server != NULL) isc_mem_free(ns_g_mctx, server); if (contact != NULL) @@ -256,7 +439,12 @@ builtin_create(const char *zone, int argc, char **argv, if (empty != NULL) isc_mem_put(ns_g_mctx, empty, sizeof (*empty)); } else { - memcpy(empty, &empty_builtin, sizeof (empty_builtin)); + if (strcmp(argv[0], "empty") == 0) + memcpy(empty, &empty_builtin, + sizeof (empty_builtin)); + else + memcpy(empty, &dns64_builtin, + sizeof (empty_builtin)); empty->server = server; empty->contact = contact; *dbdata = empty; @@ -278,7 +466,7 @@ builtin_destroy(const char *zone, void *driverdata, void **dbdata) { */ if (*dbdata == &version_builtin || *dbdata == &hostname_builtin || *dbdata == &authors_builtin || *dbdata == &id_builtin || - *dbdata == &empty_builtin) + *dbdata == &empty_builtin || *dbdata == &dns64_builtin) return; isc_mem_free(ns_g_mctx, b->server); @@ -308,3 +496,4 @@ void ns_builtin_deinit(void) { dns_sdb_unregister(&builtin_impl); } + diff --git a/bin/named/client.c b/bin/named/client.c index 940c535d..bc9cc878 100644 --- a/bin/named/client.c +++ b/bin/named/client.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: client.c,v 1.269 2010/09/24 05:09:02 marka Exp $ */ +/* $Id: client.c,v 1.271 2011-01-11 23:47:12 tbox Exp $ */ #include <config.h> @@ -1777,9 +1777,11 @@ client_request(isc_task_t *task, isc_event_t *event) { } if (result == ISC_R_SUCCESS) { + char namebuf[DNS_NAME_FORMATSIZE]; + dns_name_format(&client->signername, namebuf, sizeof(namebuf)); ns_client_log(client, DNS_LOGCATEGORY_SECURITY, NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3), - "request has valid signature"); + "request has valid signature: %s", namebuf); client->signer = &client->signername; } else if (result == ISC_R_NOTFOUND) { ns_client_log(client, DNS_LOGCATEGORY_SECURITY, diff --git a/bin/named/config.c b/bin/named/config.c index 07a74bae..b90f3c7f 100644 --- a/bin/named/config.c +++ b/bin/named/config.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: config.c,v 1.112 2010/08/11 18:14:18 each Exp $ */ +/* $Id: config.c,v 1.113 2010-12-16 09:51:27 jinmei Exp $ */ /*! \file */ @@ -374,6 +374,8 @@ ns_config_getzonetype(const cfg_obj_t *zonetypeobj) { ztype = dns_zone_slave; else if (strcasecmp(str, "stub") == 0) ztype = dns_zone_stub; + else if (strcasecmp(str, "static-stub") == 0) + ztype = dns_zone_staticstub; else INSIST(0); return (ztype); diff --git a/bin/named/include/named/query.h b/bin/named/include/named/query.h index 2f65df3b..37f771bd 100644 --- a/bin/named/include/named/query.h +++ b/bin/named/include/named/query.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2010, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: query.h,v 1.43 2010/12/08 02:46:15 marka Exp $ */ +/* $Id: query.h,v 1.45 2011-01-13 04:59:24 tbox Exp $ */ #ifndef NAMED_QUERY_H #define NAMED_QUERY_H 1 @@ -26,8 +26,9 @@ #include <isc/buffer.h> #include <isc/netaddr.h> -#include <dns/types.h> #include <dns/rdataset.h> +#include <dns/rpz.h> +#include <dns/types.h> #include <named/types.h> @@ -35,6 +36,7 @@ typedef struct ns_dbversion { dns_db_t *db; dns_dbversion_t *version; + isc_boolean_t acl_checked; isc_boolean_t queryok; ISC_LINK(struct ns_dbversion) link; } ns_dbversion_t; @@ -55,6 +57,7 @@ struct ns_query { isc_boolean_t isreferral; isc_mutex_t fetchlock; dns_fetch_t * fetch; + dns_rpz_st_t * rpz_st; isc_bufferlist_t namebufs; ISC_LIST(ns_dbversion_t) activeversions; ISC_LIST(ns_dbversion_t) freeversions; diff --git a/bin/named/include/named/zoneconf.h b/bin/named/include/named/zoneconf.h index b973013c..65cf72f9 100644 --- a/bin/named/include/named/zoneconf.h +++ b/bin/named/include/named/zoneconf.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2010 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zoneconf.h,v 1.26 2007/06/19 23:46:59 tbox Exp $ */ +/* $Id: zoneconf.h,v 1.28 2010-12-20 23:47:20 tbox Exp $ */ #ifndef NS_ZONECONF_H #define NS_ZONECONF_H 1 @@ -58,6 +58,21 @@ ns_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig); * and recreated, return ISC_FALSE. */ + +isc_result_t +ns_zone_configure_writeable_dlz(dns_dlzdb_t *dlzdatabase, dns_zone_t *zone, + dns_rdataclass_t rdclass, dns_name_t *name); +/*%> + * configure a DLZ zone, setting up the database methods and calling + * postload to load the origin values + * + * Require: + * \li 'dlzdatabase' to be a valid dlz database + * \li 'zone' to be initialized. + * \li 'rdclass' to be a valid rdataclass + * \li 'name' to be a valid zone origin name + */ + ISC_LANG_ENDDECLS #endif /* NS_ZONECONF_H */ diff --git a/bin/named/main.c b/bin/named/main.c index a0e8705e..84d86b14 100644 --- a/bin/named/main.c +++ b/bin/named/main.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: main.c,v 1.179 2010/09/15 12:07:55 marka Exp $ */ +/* $Id: main.c,v 1.180 2010-12-22 03:59:02 marka Exp $ */ /*! \file */ @@ -70,6 +70,12 @@ #include <named/ns_smf_globals.h> #endif +#ifdef OPENSSL +#include <openssl/opensslv.h> +#endif +#ifdef HAVE_LIBXML2 +#include <libxml/xmlversion.h> +#endif /* * Include header files for database drivers here. */ @@ -528,6 +534,14 @@ parse_command_line(int argc, char *argv[]) { case 'V': printf("BIND %s built with %s\n", ns_g_version, ns_g_configargs); +#ifdef OPENSSL + printf("using OpenSSL version: %s\n", + OPENSSL_VERSION_TEXT); +#endif +#ifdef HAVE_LIBXML2 + printf("using libxml2 version: %s\n", + LIBXML_DOTTED_VERSION); +#endif exit(0); case 'F': /* Reserved for FIPS mode */ diff --git a/bin/named/named.conf.5 b/bin/named/named.conf.5 index 876428dc..6647e1bc 100644 --- a/bin/named/named.conf.5 +++ b/bin/named/named.conf.5 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +.\" Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") .\" .\" Permission to use, copy, modify, and/or distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -12,7 +12,7 @@ .\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR .\" PERFORMANCE OF THIS SOFTWARE. .\" -.\" $Id: named.conf.5,v 1.42 2010/05/15 01:14:24 tbox Exp $ +.\" $Id: named.conf.5,v 1.44 2011-01-08 01:15:38 tbox Exp $ .\" .hy 0 .ad l @@ -195,6 +195,7 @@ options { tcp\-listen\-queue \fIinteger\fR; tkey\-dhkey \fIquoted_string\fR \fIinteger\fR; tkey\-gssapi\-credential \fIquoted_string\fR; + tkey\-gssapi\-keytab \fIquoted_string\fR; tkey\-domain \fIquoted_string\fR; transfers\-per\-ns \fIinteger\fR; transfers\-in \fIinteger\fR; @@ -256,6 +257,16 @@ options { dnssec\-lookaside ( \fIauto\fR | \fIdomain\fR trust\-anchor \fIdomain\fR ); dnssec\-must\-be\-secure \fIstring\fR \fIboolean\fR; dnssec\-accept\-expired \fIboolean\fR; + dns64\-server \fIstring\fR; + dns64\-contact \fIstring\fR; + dns64 \fIprefix\fR { + clients { <replacable>acl</replacable>; }; + exclude { <replacable>acl</replacable>; }; + mapped { <replacable>acl</replacable>; }; + break\-dnssec \fIboolean\fR; + recursive\-only \fIboolean\fR; + suffix \fIipv6_address\fR; + }; empty\-server \fIstring\fR; empty\-contact \fIstring\fR; empty\-zones\-enable \fIboolean\fR; @@ -414,6 +425,16 @@ view \fIstring\fR \fIoptional_class\fR { dnssec\-lookaside \fIstring\fR trust\-anchor \fIstring\fR; dnssec\-must\-be\-secure \fIstring\fR \fIboolean\fR; dnssec\-accept\-expired \fIboolean\fR; + dns64\-server \fIstring\fR; + dns64\-contact \fIstring\fR; + dns64 \fIprefix\fR { + clients { <replacable>acl</replacable>; }; + exclude { <replacable>acl</replacable>; }; + mapped { <replacable>acl</replacable>; }; + break\-dnssec \fIboolean\fR; + recursive\-only \fIboolean\fR; + suffix \fIipv6_address\fR; + }; empty\-server \fIstring\fR; empty\-contact \fIstring\fR; empty\-zones\-enable \fIboolean\fR; @@ -570,5 +591,5 @@ zone \fIstring\fR \fIoptional_class\fR { \fBrndc\fR(8), BIND 9 Administrator Reference Manual. .SH "COPYRIGHT" -Copyright \(co 2004\-2010 Internet Systems Consortium, Inc. ("ISC") +Copyright \(co 2004\-2011 Internet Systems Consortium, Inc. ("ISC") .br diff --git a/bin/named/named.conf.docbook b/bin/named/named.conf.docbook index 45a57354..e65831fc 100644 --- a/bin/named/named.conf.docbook +++ b/bin/named/named.conf.docbook @@ -2,7 +2,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [<!ENTITY mdash "—">]> <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above @@ -17,7 +17,7 @@ - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: named.conf.docbook,v 1.46 2010/05/14 23:50:39 tbox Exp $ --> +<!-- $Id: named.conf.docbook,v 1.49 2011-01-07 23:47:07 tbox Exp $ --> <refentry> <refentryinfo> <date>Aug 13, 2004</date> @@ -43,6 +43,7 @@ <year>2008</year> <year>2009</year> <year>2010</year> + <year>2011</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> </docinfo> @@ -225,6 +226,7 @@ options { tcp-listen-queue <replaceable>integer</replaceable>; tkey-dhkey <replaceable>quoted_string</replaceable> <replaceable>integer</replaceable>; tkey-gssapi-credential <replaceable>quoted_string</replaceable>; + tkey-gssapi-keytab <replaceable>quoted_string</replaceable>; tkey-domain <replaceable>quoted_string</replaceable>; transfers-per-ns <replaceable>integer</replaceable>; transfers-in <replaceable>integer</replaceable>; @@ -287,6 +289,17 @@ options { dnssec-must-be-secure <replaceable>string</replaceable> <replaceable>boolean</replaceable>; dnssec-accept-expired <replaceable>boolean</replaceable>; + dns64-server <replaceable>string</replaceable>; + dns64-contact <replaceable>string</replaceable>; + dns64 <replaceable>prefix</replaceable> { + clients { <replacable>acl</replacable>; }; + exclude { <replacable>acl</replacable>; }; + mapped { <replacable>acl</replacable>; }; + break-dnssec <replaceable>boolean</replaceable>; + recursive-only <replaceable>boolean</replaceable>; + suffix <replaceable>ipv6_address</replaceable>; + }; + empty-server <replaceable>string</replaceable>; empty-contact <replaceable>string</replaceable>; empty-zones-enable <replaceable>boolean</replaceable>; @@ -462,6 +475,17 @@ view <replaceable>string</replaceable> <replaceable>optional_class</replaceable> dnssec-must-be-secure <replaceable>string</replaceable> <replaceable>boolean</replaceable>; dnssec-accept-expired <replaceable>boolean</replaceable>; + dns64-server <replaceable>string</replaceable>; + dns64-contact <replaceable>string</replaceable>; + dns64 <replaceable>prefix</replaceable> { + clients { <replacable>acl</replacable>; }; + exclude { <replacable>acl</replacable>; }; + mapped { <replacable>acl</replacable>; }; + break-dnssec <replaceable>boolean</replaceable>; + recursive-only <replaceable>boolean</replaceable>; + suffix <replaceable>ipv6_address</replaceable>; + }; + empty-server <replaceable>string</replaceable>; empty-contact <replaceable>string</replaceable>; empty-zones-enable <replaceable>boolean</replaceable>; diff --git a/bin/named/named.conf.html b/bin/named/named.conf.html index 164037ce..a1e1c025 100644 --- a/bin/named/named.conf.html +++ b/bin/named/named.conf.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above @@ -13,7 +13,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: named.conf.html,v 1.51 2010/05/15 01:14:24 tbox Exp $ --> +<!-- $Id: named.conf.html,v 1.53 2011-01-08 01:15:38 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -31,7 +31,7 @@ <div class="cmdsynopsis"><p><code class="command">named.conf</code> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543349"></a><h2>DESCRIPTION</h2> +<a name="id2543352"></a><h2>DESCRIPTION</h2> <p><code class="filename">named.conf</code> is the configuration file for <span><strong class="command">named</strong></span>. Statements are enclosed @@ -50,14 +50,14 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543377"></a><h2>ACL</h2> +<a name="id2543380"></a><h2>ACL</h2> <div class="literallayout"><p><br> acl <em class="replaceable"><code>string</code></em> { <em class="replaceable"><code>address_match_element</code></em>; ... };<br> <br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543393"></a><h2>KEY</h2> +<a name="id2543396"></a><h2>KEY</h2> <div class="literallayout"><p><br> key <em class="replaceable"><code>domain_name</code></em> {<br> algorithm <em class="replaceable"><code>string</code></em>;<br> @@ -66,7 +66,7 @@ key <em class="replaceable"><code>domain_name</code></em> {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543412"></a><h2>MASTERS</h2> +<a name="id2543415"></a><h2>MASTERS</h2> <div class="literallayout"><p><br> masters <em class="replaceable"><code>string</code></em> [<span class="optional"> port <em class="replaceable"><code>integer</code></em> </span>] {<br> ( <em class="replaceable"><code>masters</code></em> | <em class="replaceable"><code>ipv4_address</code></em> [<span class="optional">port <em class="replaceable"><code>integer</code></em></span>] |<br> @@ -75,7 +75,7 @@ masters <em class="replaceable"><code>string</code></em> [<span class="optional" </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543458"></a><h2>SERVER</h2> +<a name="id2543461"></a><h2>SERVER</h2> <div class="literallayout"><p><br> server ( <em class="replaceable"><code>ipv4_address[<span class="optional">/prefixlen</span>]</code></em> | <em class="replaceable"><code>ipv6_address[<span class="optional">/prefixlen</span>]</code></em> ) {<br> bogus <em class="replaceable"><code>boolean</code></em>;<br> @@ -97,7 +97,7 @@ server ( <em class="replaceable"><code>ipv4_address[<span class="optional">/pref </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543526"></a><h2>TRUSTED-KEYS</h2> +<a name="id2543529"></a><h2>TRUSTED-KEYS</h2> <div class="literallayout"><p><br> trusted-keys {<br> <em class="replaceable"><code>domain_name</code></em> <em class="replaceable"><code>flags</code></em> <em class="replaceable"><code>protocol</code></em> <em class="replaceable"><code>algorithm</code></em> <em class="replaceable"><code>key</code></em>; ... <br> @@ -105,7 +105,7 @@ trusted-keys {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543552"></a><h2>MANAGED-KEYS</h2> +<a name="id2543555"></a><h2>MANAGED-KEYS</h2> <div class="literallayout"><p><br> managed-keys {<br> <em class="replaceable"><code>domain_name</code></em> <code class="constant">initial-key</code> <em class="replaceable"><code>flags</code></em> <em class="replaceable"><code>protocol</code></em> <em class="replaceable"><code>algorithm</code></em> <em class="replaceable"><code>key</code></em>; ... <br> @@ -113,7 +113,7 @@ managed-keys {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543580"></a><h2>CONTROLS</h2> +<a name="id2543584"></a><h2>CONTROLS</h2> <div class="literallayout"><p><br> controls {<br> inet ( <em class="replaceable"><code>ipv4_address</code></em> | <em class="replaceable"><code>ipv6_address</code></em> | * )<br> @@ -125,7 +125,7 @@ controls {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543616"></a><h2>LOGGING</h2> +<a name="id2543619"></a><h2>LOGGING</h2> <div class="literallayout"><p><br> logging {<br> channel <em class="replaceable"><code>string</code></em> {<br> @@ -143,7 +143,7 @@ logging {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543654"></a><h2>LWRES</h2> +<a name="id2543657"></a><h2>LWRES</h2> <div class="literallayout"><p><br> lwres {<br> listen-on [<span class="optional"> port <em class="replaceable"><code>integer</code></em> </span>] {<br> @@ -156,7 +156,7 @@ lwres {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543696"></a><h2>OPTIONS</h2> +<a name="id2543699"></a><h2>OPTIONS</h2> <div class="literallayout"><p><br> options {<br> avoid-v4-udp-ports { <em class="replaceable"><code>port</code></em>; ... };<br> @@ -192,6 +192,7 @@ options {<br> tcp-listen-queue <em class="replaceable"><code>integer</code></em>;<br> tkey-dhkey <em class="replaceable"><code>quoted_string</code></em> <em class="replaceable"><code>integer</code></em>;<br> tkey-gssapi-credential <em class="replaceable"><code>quoted_string</code></em>;<br> + tkey-gssapi-keytab <em class="replaceable"><code>quoted_string</code></em>;<br> tkey-domain <em class="replaceable"><code>quoted_string</code></em>;<br> transfers-per-ns <em class="replaceable"><code>integer</code></em>;<br> transfers-in <em class="replaceable"><code>integer</code></em>;<br> @@ -254,6 +255,17 @@ options {<br> dnssec-must-be-secure <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>boolean</code></em>;<br> dnssec-accept-expired <em class="replaceable"><code>boolean</code></em>;<br> <br> + dns64-server <em class="replaceable"><code>string</code></em>;<br> + dns64-contact <em class="replaceable"><code>string</code></em>;<br> + dns64 <em class="replaceable"><code>prefix</code></em> {<br> + clients { <font color="red"><replacable>acl</replacable></font>; };<br> + exclude { <font color="red"><replacable>acl</replacable></font>; };<br> + mapped { <font color="red"><replacable>acl</replacable></font>; };<br> + break-dnssec <em class="replaceable"><code>boolean</code></em>;<br> + recursive-only <em class="replaceable"><code>boolean</code></em>;<br> + suffix <em class="replaceable"><code>ipv6_address</code></em>;<br> + };<br> +<br> empty-server <em class="replaceable"><code>string</code></em>;<br> empty-contact <em class="replaceable"><code>string</code></em>;<br> empty-zones-enable <em class="replaceable"><code>boolean</code></em>;<br> @@ -348,7 +360,7 @@ options {<br> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2544538"></a><h2>VIEW</h2> +<a name="id2544573"></a><h2>VIEW</h2> <div class="literallayout"><p><br> view <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br> match-clients { <em class="replaceable"><code>address_match_element</code></em>; ... };<br> @@ -428,6 +440,17 @@ view <em class="replaceable"><code>string</code></em> <em class="replaceable"><c dnssec-must-be-secure <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>boolean</code></em>;<br> dnssec-accept-expired <em class="replaceable"><code>boolean</code></em>;<br> <br> + dns64-server <em class="replaceable"><code>string</code></em>;<br> + dns64-contact <em class="replaceable"><code>string</code></em>;<br> + dns64 <em class="replaceable"><code>prefix</code></em> {<br> + clients { <font color="red"><replacable>acl</replacable></font>; };<br> + exclude { <font color="red"><replacable>acl</replacable></font>; };<br> + mapped { <font color="red"><replacable>acl</replacable></font>; };<br> + break-dnssec <em class="replaceable"><code>boolean</code></em>;<br> + recursive-only <em class="replaceable"><code>boolean</code></em>;<br> + suffix <em class="replaceable"><code>ipv6_address</code></em>;<br> + };<br> +<br> empty-server <em class="replaceable"><code>string</code></em>;<br> empty-contact <em class="replaceable"><code>string</code></em>;<br> empty-zones-enable <em class="replaceable"><code>boolean</code></em>;<br> @@ -499,7 +522,7 @@ view <em class="replaceable"><code>string</code></em> <em class="replaceable"><c </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2545209"></a><h2>ZONE</h2> +<a name="id2545273"></a><h2>ZONE</h2> <div class="literallayout"><p><br> zone <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br> type ( master | slave | stub | hint |<br> @@ -594,12 +617,12 @@ zone <em class="replaceable"><code>string</code></em> <em class="replaceable"><c </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2545521"></a><h2>FILES</h2> +<a name="id2545653"></a><h2>FILES</h2> <p><code class="filename">/etc/named.conf</code> </p> </div> <div class="refsect1" lang="en"> -<a name="id2545601"></a><h2>SEE ALSO</h2> +<a name="id2545665"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>, diff --git a/bin/named/query.c b/bin/named/query.c index c462577a..04361707 100644 --- a/bin/named/query.c +++ b/bin/named/query.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: query.c,v 1.348 2010/12/08 23:47:05 tbox Exp $ */ +/* $Id: query.c,v 1.353 2011-01-13 23:16:06 marka Exp $ */ /*! \file */ @@ -134,6 +134,7 @@ #define DNS_GETDB_NOEXACT 0x01U #define DNS_GETDB_NOLOG 0x02U #define DNS_GETDB_PARTIAL 0x04U +#define DNS_GETDB_IGNOREACL 0x08U #define PENDINGOK(x) (((x) & DNS_DBFIND_PENDINGOK) != 0) @@ -159,6 +160,9 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db, static inline void log_queryerror(ns_client_t *client, isc_result_t result, int line, int level); +static void +rpz_st_clear(ns_client_t *client); + /*% * Increment query statistics counters. */ @@ -353,6 +357,14 @@ query_reset(ns_client_t *client, isc_boolean_t everything) { NS_QUERYATTR_SECURE); client->query.restarts = 0; client->query.timerset = ISC_FALSE; + if (client->query.rpz_st != NULL) { + rpz_st_clear(client); + if (everything) { + isc_mem_put(client->mctx, client->query.rpz_st, + sizeof(*client->query.rpz_st)); + client->query.rpz_st = NULL; + } + } client->query.origqname = NULL; client->query.dboptions = 0; client->query.fetchoptions = 0; @@ -570,6 +582,7 @@ ns_query_init(ns_client_t *client) { ISC_LIST_INIT(client->query.freeversions); client->query.restarts = 0; client->query.timerset = ISC_FALSE; + client->query.rpz_st = NULL; client->query.qname = NULL; result = isc_mutex_init(&client->query.fetchlock); if (result != ISC_R_SUCCESS) @@ -597,8 +610,7 @@ ns_query_init(ns_client_t *client) { } static inline ns_dbversion_t * -query_findversion(ns_client_t *client, dns_db_t *db, - isc_boolean_t *newzonep) +query_findversion(ns_client_t *client, dns_db_t *db) { ns_dbversion_t *dbversion; @@ -624,12 +636,10 @@ query_findversion(ns_client_t *client, dns_db_t *db, return (NULL); dns_db_attach(db, &dbversion->db); dns_db_currentversion(db, &dbversion->version); - dbversion->queryok = ISC_FALSE; + dbversion->acl_checked = ISC_FALSE; ISC_LIST_APPEND(client->query.activeversions, dbversion, link); - *newzonep = ISC_TRUE; - } else - *newzonep = ISC_FALSE; + } return (dbversion); } @@ -641,7 +651,6 @@ query_validatezonedb(ns_client_t *client, dns_name_t *name, dns_dbversion_t **versionp) { isc_result_t result; - isc_boolean_t check_acl, new_zone; dns_acl_t *queryacl; ns_dbversion_t *dbversion; @@ -657,7 +666,17 @@ query_validatezonedb(ns_client_t *client, dns_name_t *name, if (!client->view->additionalfromauth && client->query.authdbset && db != client->query.authdb) - goto refuse; + return (DNS_R_REFUSED); + + /* + * Non recursive query to a static-stub zone is prohibited; its + * zone content is not public data, but a part of local configuration + * and should not be disclosed. + */ + if (dns_zone_gettype(zone) == dns_zone_staticstub && + !RECURSIONOK(client)) { + return (DNS_R_REFUSED); + } /* * If the zone has an ACL, we'll check it, otherwise @@ -667,23 +686,19 @@ query_validatezonedb(ns_client_t *client, dns_name_t *name, * Also, get the database version to use. */ - check_acl = ISC_TRUE; /* Keep compiler happy. */ - queryacl = NULL; - /* * Get the current version of this database. */ - dbversion = query_findversion(client, db, &new_zone); - if (dbversion == NULL) { - result = DNS_R_SERVFAIL; - goto fail; - } - if (new_zone) { - check_acl = ISC_TRUE; - } else if (!dbversion->queryok) { - goto refuse; - } else { - check_acl = ISC_FALSE; + dbversion = query_findversion(client, db); + if (dbversion == NULL) + return (DNS_R_SERVFAIL); + + if ((options & DNS_GETDB_IGNOREACL) != 0) + goto approved; + if (dbversion->acl_checked) { + if (!dbversion->queryok) + return (DNS_R_REFUSED); + goto approved; } queryacl = dns_zone_getqueryacl(zone); @@ -697,88 +712,68 @@ query_validatezonedb(ns_client_t *client, dns_name_t *name, * allowed to make queries, otherwise the query should * be refused. */ - check_acl = ISC_FALSE; + dbversion->acl_checked = ISC_TRUE; if ((client->query.attributes & - NS_QUERYATTR_QUERYOK) == 0) - goto refuse; - } else { - /* - * We haven't evaluated the view's queryacl yet. - */ - check_acl = ISC_TRUE; + NS_QUERYATTR_QUERYOK) == 0) { + dbversion->queryok = ISC_FALSE; + return (DNS_R_REFUSED); + } + dbversion->queryok = ISC_TRUE; + goto approved; } } - if (check_acl) { - isc_boolean_t log = ISC_TF((options & DNS_GETDB_NOLOG) == 0); - - result = ns_client_checkaclsilent(client, NULL, queryacl, - ISC_TRUE); - if (log) { - char msg[NS_CLIENT_ACLMSGSIZE("query")]; - if (result == ISC_R_SUCCESS) { - if (isc_log_wouldlog(ns_g_lctx, - ISC_LOG_DEBUG(3))) - { - ns_client_aclmsg("query", name, qtype, - client->view->rdclass, - msg, sizeof(msg)); - ns_client_log(client, - DNS_LOGCATEGORY_SECURITY, - NS_LOGMODULE_QUERY, - ISC_LOG_DEBUG(3), - "%s approved", msg); - } - } else { + result = ns_client_checkaclsilent(client, NULL, queryacl, ISC_TRUE); + if ((options & DNS_GETDB_NOLOG) == 0) { + char msg[NS_CLIENT_ACLMSGSIZE("query")]; + if (result == ISC_R_SUCCESS) { + if (isc_log_wouldlog(ns_g_lctx, ISC_LOG_DEBUG(3))) { ns_client_aclmsg("query", name, qtype, client->view->rdclass, msg, sizeof(msg)); - ns_client_log(client, DNS_LOGCATEGORY_SECURITY, - NS_LOGMODULE_QUERY, ISC_LOG_INFO, - "%s denied", msg); + ns_client_log(client, + DNS_LOGCATEGORY_SECURITY, + NS_LOGMODULE_QUERY, + ISC_LOG_DEBUG(3), + "%s approved", msg); } + } else { + ns_client_aclmsg("query", name, qtype, + client->view->rdclass, + msg, sizeof(msg)); + ns_client_log(client, DNS_LOGCATEGORY_SECURITY, + NS_LOGMODULE_QUERY, ISC_LOG_INFO, + "%s denied", msg); } + } - if (queryacl == client->view->queryacl) { - if (result == ISC_R_SUCCESS) { - /* - * We were allowed by the default - * "allow-query" ACL. Remember this so we - * don't have to check again. - */ - client->query.attributes |= - NS_QUERYATTR_QUERYOK; - } + if (queryacl == client->view->queryacl) { + if (result == ISC_R_SUCCESS) { /* - * We've now evaluated the view's query ACL, and - * the NS_QUERYATTR_QUERYOK attribute is now valid. + * We were allowed by the default + * "allow-query" ACL. Remember this so we + * don't have to check again. */ - client->query.attributes |= NS_QUERYATTR_QUERYOKVALID; + client->query.attributes |= NS_QUERYATTR_QUERYOK; } - - if (result != ISC_R_SUCCESS) - goto refuse; + /* + * We've now evaluated the view's query ACL, and + * the NS_QUERYATTR_QUERYOK attribute is now valid. + */ + client->query.attributes |= NS_QUERYATTR_QUERYOKVALID; } - /* Approved. */ - - /* - * Remember the result of the ACL check so we - * don't have to check again. - */ - dbversion->queryok = ISC_TRUE; + dbversion->acl_checked = ISC_TRUE; + if (result != ISC_R_SUCCESS) { + dbversion->queryok = ISC_FALSE; + return (DNS_R_REFUSED); + } + approved: /* Transfer ownership, if necessary. */ if (versionp != NULL) *versionp = dbversion->version; - return (ISC_R_SUCCESS); - - refuse: - return (DNS_R_REFUSED); - - fail: - return (result); } static inline isc_result_t @@ -834,6 +829,97 @@ query_getzonedb(ns_client_t *client, dns_name_t *name, dns_rdatatype_t qtype, return (result); } +static void +rpz_log(ns_client_t *client) { + char namebuf1[DNS_NAME_FORMATSIZE]; + char namebuf2[DNS_NAME_FORMATSIZE]; + dns_rpz_st_t *st; + const char *pat; + + if (!ns_g_server->log_queries || + !isc_log_wouldlog(ns_g_lctx, DNS_RPZ_INFO_LEVEL)) + return; + + st = client->query.rpz_st; + dns_name_format(client->query.qname, namebuf1, sizeof(namebuf1)); + dns_name_format(st->qname, namebuf2, sizeof(namebuf2)); + + switch (st->m.policy) { + case DNS_RPZ_POLICY_NO_OP: + pat ="response policy %s rewrite %s NO-OP using %s"; + break; + case DNS_RPZ_POLICY_NXDOMAIN: + pat = "response policy %s rewrite %s to NXDOMAIN using %s"; + break; + case DNS_RPZ_POLICY_NODATA: + pat = "response policy %s rewrite %s to NODATA using %s"; + break; + case DNS_RPZ_POLICY_RECORD: + case DNS_RPZ_POLICY_CNAME: + pat = "response policy %s rewrite %s using %s"; + break; + default: + INSIST(0); + } + ns_client_log(client, NS_LOGCATEGORY_QUERIES, NS_LOGMODULE_QUERY, + DNS_RPZ_INFO_LEVEL, pat, dns_rpz_type2str(st->m.type), + namebuf1, namebuf2); +} + +static void +rpz_fail_log(ns_client_t *client, int level, dns_rpz_type_t rpz_type, + dns_name_t *name, const char *str, isc_result_t result) +{ + char namebuf1[DNS_NAME_FORMATSIZE]; + char namebuf2[DNS_NAME_FORMATSIZE]; + + if (!ns_g_server->log_queries || !isc_log_wouldlog(ns_g_lctx, level)) + return; + + dns_name_format(client->query.qname, namebuf1, sizeof(namebuf1)); + dns_name_format(name, namebuf2, sizeof(namebuf2)); + ns_client_log(client, NS_LOGCATEGORY_QUERY_EERRORS, + NS_LOGMODULE_QUERY, level, + "response policy %s rewrite %s via %s %sfailed: %s", + dns_rpz_type2str(rpz_type), + namebuf1, namebuf2, str, isc_result_totext(result)); +} + +/* + * Get a policy rewrite zone database. + */ +static isc_result_t +rpz_getdb(ns_client_t *client, dns_rpz_type_t rpz_type, + dns_name_t *rpz_qname, dns_zone_t **zonep, + dns_db_t **dbp, dns_dbversion_t **versionp) +{ + char namebuf1[DNS_NAME_FORMATSIZE]; + char namebuf2[DNS_NAME_FORMATSIZE]; + dns_dbversion_t *rpz_version = NULL; + isc_result_t result; + + result = query_getzonedb(client, rpz_qname, dns_rdatatype_any, + DNS_GETDB_IGNOREACL, zonep, dbp, &rpz_version); + if (result == ISC_R_SUCCESS) { + if (ns_g_server->log_queries && + isc_log_wouldlog(ns_g_lctx, DNS_RPZ_DEBUG_LEVEL2)) { + dns_name_format(client->query.qname, namebuf1, + sizeof(namebuf1)); + dns_name_format(rpz_qname, namebuf2, sizeof(namebuf2)); + ns_client_log(client, NS_LOGCATEGORY_QUERIES, + NS_LOGMODULE_QUERY, DNS_RPZ_DEBUG_LEVEL2, + "try rpz %s rewrite %s via %s", + dns_rpz_type2str(rpz_type), + namebuf1, namebuf2); + } + *versionp = rpz_version; + return (ISC_R_SUCCESS); + } + rpz_fail_log(client, DNS_RPZ_ERROR_LEVEL, rpz_type, rpz_qname, + "query_getzonedb() ", result); + return (result); +} + static inline isc_result_t query_getcachedb(ns_client_t *client, dns_name_t *name, dns_rdatatype_t qtype, dns_db_t **dbp, unsigned int options) @@ -2598,67 +2684,79 @@ query_addns(ns_client_t *client, dns_db_t *db, dns_dbversion_t *version) { return (eresult); } -static inline isc_result_t -query_addcnamelike(ns_client_t *client, dns_name_t *qname, dns_name_t *tname, - dns_rdataset_t *dname, dns_name_t **anamep, - dns_rdatatype_t type) +static isc_result_t +query_add_cname(ns_client_t *client, dns_name_t *qname, dns_name_t *tname, + dns_trust_t trust, dns_ttl_t ttl) { dns_rdataset_t *rdataset; dns_rdatalist_t *rdatalist; dns_rdata_t *rdata; - isc_result_t result; isc_region_t r; + dns_name_t *aname; + isc_result_t result; /* * We assume the name data referred to by tname won't go away. */ - REQUIRE(anamep != NULL); + aname = NULL; + result = dns_message_gettempname(client->message, &aname); + if (result != ISC_R_SUCCESS) + return (result); + result = dns_name_dup(qname, client->mctx, aname); + if (result != ISC_R_SUCCESS) { + dns_message_puttempname(client->message, &aname); + return (result); + } rdatalist = NULL; result = dns_message_gettemprdatalist(client->message, &rdatalist); - if (result != ISC_R_SUCCESS) + if (result != ISC_R_SUCCESS) { + dns_message_puttempname(client->message, &aname); return (result); + } rdata = NULL; result = dns_message_gettemprdata(client->message, &rdata); - if (result != ISC_R_SUCCESS) + if (result != ISC_R_SUCCESS) { + dns_message_puttempname(client->message, &aname); + dns_message_puttemprdatalist(client->message, &rdatalist); return (result); + } rdataset = NULL; result = dns_message_gettemprdataset(client->message, &rdataset); - if (result != ISC_R_SUCCESS) - return (result); - dns_rdataset_init(rdataset); - result = dns_name_dup(qname, client->mctx, *anamep); if (result != ISC_R_SUCCESS) { - dns_message_puttemprdataset(client->message, &rdataset); + dns_message_puttempname(client->message, &aname); + dns_message_puttemprdatalist(client->message, &rdatalist); + dns_message_puttemprdata(client->message, &rdata); return (result); } - - rdatalist->type = type; + dns_rdataset_init(rdataset); + rdatalist->type = dns_rdatatype_cname; rdatalist->covers = 0; rdatalist->rdclass = client->message->rdclass; - rdatalist->ttl = dname->ttl; + rdatalist->ttl = ttl; dns_name_toregion(tname, &r); rdata->data = r.base; rdata->length = r.length; rdata->rdclass = client->message->rdclass; - rdata->type = type; + rdata->type = dns_rdatatype_cname; ISC_LIST_INIT(rdatalist->rdata); ISC_LIST_APPEND(rdatalist->rdata, rdata, link); RUNTIME_CHECK(dns_rdatalist_tordataset(rdatalist, rdataset) == ISC_R_SUCCESS); - rdataset->trust = dname->trust; + rdataset->trust = trust; - query_addrrset(client, anamep, &rdataset, NULL, NULL, + query_addrrset(client, &aname, &rdataset, NULL, NULL, DNS_SECTION_ANSWER); - if (rdataset != NULL) { if (dns_rdataset_isassociated(rdataset)) dns_rdataset_disassociate(rdataset); dns_message_puttemprdataset(client->message, &rdataset); } + if (aname != NULL) + dns_message_puttempname(client->message, &aname); return (ISC_R_SUCCESS); } @@ -3548,8 +3646,9 @@ query_resume(isc_task_t *task, isc_event_t *event) { } static isc_result_t -query_recurse(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qdomain, - dns_rdataset_t *nameservers, isc_boolean_t resuming) +query_recurse(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qname, + dns_name_t *qdomain, dns_rdataset_t *nameservers, + isc_boolean_t resuming) { isc_result_t result; dns_rdataset_t *rdataset, *sigrdataset; @@ -3649,8 +3748,7 @@ query_recurse(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qdomain, else peeraddr = NULL; result = dns_resolver_createfetch2(client->view->resolver, - client->query.qname, - qtype, qdomain, nameservers, + qname, qtype, qdomain, nameservers, NULL, peeraddr, client->message->id, client->query.fetchoptions, client->task, @@ -3673,6 +3771,685 @@ query_recurse(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qdomain, return (result); } +static inline void +rpz_clean(dns_zone_t **zonep, dns_db_t **dbp, dns_dbnode_t **nodep, + dns_rdataset_t **rdatasetp) +{ + if (nodep != NULL && *nodep != NULL) { + REQUIRE(dbp != NULL && *dbp != NULL); + dns_db_detachnode(*dbp, nodep); + } + if (dbp != NULL && *dbp != NULL) + dns_db_detach(dbp); + if (zonep != NULL && *zonep != NULL) + dns_zone_detach(zonep); + if (rdatasetp != NULL && *rdatasetp != NULL && + dns_rdataset_isassociated(*rdatasetp)) + dns_rdataset_disassociate(*rdatasetp); +} + +static inline isc_result_t +rpz_ready(ns_client_t *client, dns_zone_t **zonep, dns_db_t **dbp, + dns_dbnode_t **nodep, dns_rdataset_t **rdatasetp) +{ + REQUIRE(rdatasetp != NULL); + + rpz_clean(zonep, dbp, nodep, rdatasetp); + if (*rdatasetp == NULL) { + *rdatasetp = query_newrdataset(client); + if (*rdatasetp == NULL) + return (DNS_R_SERVFAIL); + } + return (ISC_R_SUCCESS); +} + +static void +rpz_st_clear(ns_client_t *client) { + dns_rpz_st_t *st = client->query.rpz_st; + + rpz_clean(&st->m.zone, &st->m.db, &st->m.node, NULL); + if (st->m.rdataset != NULL) + query_putrdataset(client, &st->m.rdataset); + + rpz_clean(NULL, &st->ns.db, NULL, NULL); + if (st->ns.ns_rdataset != NULL) + query_putrdataset(client, &st->ns.ns_rdataset); + if (st->ns.r_rdataset != NULL) + query_putrdataset(client, &st->ns.r_rdataset); + + rpz_clean(&st->q.zone, &st->q.db, &st->q.node, NULL); + if (st->q.rdataset != NULL) + query_putrdataset(client, &st->q.rdataset); + if (st->q.sigrdataset != NULL) + query_putrdataset(client, &st->q.sigrdataset); + st->state = 0; +} + +/* + * Get NS, A, or AAAA rrset for rpz nsdname or nsip checking. + */ +static isc_result_t +rpz_ns_find(ns_client_t *client, dns_name_t *name, dns_rdatatype_t type, + dns_db_t **dbp, dns_dbversion_t *version, + dns_rdataset_t **rdatasetp, isc_boolean_t resuming) +{ + dns_rpz_st_t *st; + isc_boolean_t is_zone; + dns_dbnode_t *node; + dns_fixedname_t fixed; + dns_name_t *found; + isc_result_t result; + + st = client->query.rpz_st; + if ((st->state & DNS_RPZ_RECURSING) != 0) { + INSIST(st->ns.r_type == type); + INSIST(dns_name_equal(name, st->r_name)); + INSIST(*rdatasetp == NULL || + !dns_rdataset_isassociated(*rdatasetp)); + st->state &= ~DNS_RPZ_RECURSING; + *dbp = st->ns.db; + st->ns.db = NULL; + if (*rdatasetp != NULL) + query_putrdataset(client, rdatasetp); + *rdatasetp = st->ns.r_rdataset; + st->ns.r_rdataset = NULL; + result = st->ns.r_result; + if (result == DNS_R_DELEGATION) { + rpz_fail_log(client, DNS_RPZ_ERROR_LEVEL, + DNS_RPZ_TYPE_NSIP, name, + "rpz_ns_find() ", result); + st->m.policy = DNS_RPZ_POLICY_ERROR; + result = DNS_R_SERVFAIL; + } + return (result); + } + + result = rpz_ready(client, NULL, NULL, NULL, rdatasetp); + if (result != ISC_R_SUCCESS) { + st->m.policy = DNS_RPZ_POLICY_ERROR; + return (result); + } + if (*dbp != NULL) { + is_zone = ISC_FALSE; + } else { + dns_zone_t *zone; + + version = NULL; + zone = NULL; + result = query_getdb(client, name, type, 0, &zone, dbp, + &version, &is_zone); + if (result != ISC_R_SUCCESS) { + rpz_fail_log(client, DNS_RPZ_ERROR_LEVEL, + DNS_RPZ_TYPE_NSIP, name, "NS getdb() ", + result); + st->m.policy = DNS_RPZ_POLICY_ERROR; + if (zone != NULL) + dns_zone_detach(&zone); + return (result); + } + if (zone != NULL) + dns_zone_detach(&zone); + } + + node = NULL; + dns_fixedname_init(&fixed); + found = dns_fixedname_name(&fixed); + result = dns_db_find(*dbp, name, version, type, 0, client->now, &node, + found, *rdatasetp, NULL); + if (result == DNS_R_DELEGATION && is_zone && USECACHE(client)) { + /* + * Try the cache if we're authoritative for an + * ancestor but not the domain itself. + */ + rpz_clean(NULL, dbp, &node, rdatasetp); + version = NULL; + dns_db_attach(client->view->cachedb, dbp); + result = dns_db_find(*dbp, name, version, dns_rdatatype_ns, + 0, client->now, &node, found, + *rdatasetp, NULL); + } + rpz_clean(NULL, dbp, &node, NULL); + if (result == DNS_R_DELEGATION) { + /* + * Recurse to get NS rrset or A or AAAA rrset for an NS name. + */ + rpz_clean(NULL, NULL, NULL, rdatasetp); + dns_name_copy(name, st->r_name, NULL); + result = query_recurse(client, type, st->r_name, NULL, NULL, + resuming); + if (result == ISC_R_SUCCESS) { + st->state |= DNS_RPZ_RECURSING; + result = DNS_R_DELEGATION; + } + } + return (result); +} + +/* + * Check the IP address in an A or AAAA rdataset against + * the IP or NSIP response policy rules of a view. + */ +static isc_result_t +rpz_rewrite_ip(ns_client_t *client, dns_rdataset_t *rdataset, + dns_rpz_type_t rpz_type) +{ + dns_rpz_st_t *st; + dns_dbversion_t *version; + dns_zone_t *zone; + dns_db_t *db; + dns_rpz_zone_t *new_rpz; + isc_result_t result; + + st = client->query.rpz_st; + if (st->m.rdataset == NULL) { + st->m.rdataset = query_newrdataset(client); + if (st->m.rdataset == NULL) + return (DNS_R_SERVFAIL); + } + zone = NULL; + db = NULL; + for (new_rpz = ISC_LIST_HEAD(client->view->rpz_zones); + new_rpz != NULL; + new_rpz = ISC_LIST_NEXT(new_rpz, link)) { + version = NULL; + + /* + * Find the database for this policy zone to get its + * radix tree. + */ + result = rpz_getdb(client, rpz_type, &new_rpz->origin, + &zone, &db, &version); + if (result != ISC_R_SUCCESS) { + rpz_clean(&zone, &db, NULL, NULL); + continue; + } + /* + * Look for a better (e.g. longer prefix) hit for an IP address + * in this rdataset in this radix tree than than the previous + * hit, if any. Note the domain name and quality of the + * best hit. + */ + result = dns_db_rpz_findips(new_rpz, rpz_type, zone, db, + version, rdataset, st); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + rpz_clean(&zone, &db, NULL, NULL); + } + return (ISC_R_SUCCESS); +} + +static isc_result_t +rpz_rewrite_nsip(ns_client_t *client, dns_rdatatype_t type, dns_name_t *name, + dns_db_t **dbp, dns_dbversion_t *version, + dns_rdataset_t **rdatasetp, isc_boolean_t resuming) +{ + isc_result_t result; + + result = rpz_ns_find(client, name, type, dbp, version, rdatasetp, + resuming); + switch (result) { + case ISC_R_SUCCESS: + result = rpz_rewrite_ip(client, *rdatasetp, DNS_RPZ_TYPE_NSIP); + break; + case DNS_R_EMPTYNAME: + case DNS_R_EMPTYWILD: + case DNS_R_NXDOMAIN: + case DNS_R_NCACHENXDOMAIN: + case DNS_R_NXRRSET: + case DNS_R_NCACHENXRRSET: + result = ISC_R_SUCCESS; + break; + case DNS_R_DELEGATION: + case DNS_R_DUPLICATE: + case DNS_R_DROP: + break; + default: + if (client->query.rpz_st->m.policy != DNS_RPZ_POLICY_ERROR) { + client->query.rpz_st->m.policy = DNS_RPZ_POLICY_ERROR; + rpz_fail_log(client, ISC_LOG_WARNING, DNS_RPZ_TYPE_NSIP, + name, "NS address rewrite nsip ", result); + } + break; + } + return (result); +} + +/* + * Get the rrset from a response policy zone. + */ +static isc_result_t +rpz_find(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qnamef, + dns_name_t *sname, dns_rpz_type_t rpz_type, dns_zone_t **zonep, + dns_db_t **dbp, dns_dbnode_t **nodep, dns_rdataset_t **rdatasetp, + dns_rpz_policy_t *policyp) +{ + dns_dbversion_t *version; + dns_rpz_policy_t policy; + dns_fixedname_t fixed; + dns_name_t *found; + isc_result_t result; + + result = rpz_ready(client, zonep, dbp, nodep, rdatasetp); + if (result != ISC_R_SUCCESS) { + *policyp = DNS_RPZ_POLICY_ERROR; + return (result); + } + + /* + * Try to get either a CNAME or the type of record demanded by the + * request from the policy zone. + */ + version = NULL; + result = rpz_getdb(client, rpz_type, qnamef, zonep, dbp, &version); + if (result != ISC_R_SUCCESS) { + *policyp = DNS_RPZ_POLICY_ERROR; + return (DNS_R_SERVFAIL); + } + + dns_fixedname_init(&fixed); + found = dns_fixedname_name(&fixed); + result = dns_db_find(*dbp, qnamef, version, dns_rdatatype_any, 0, + client->now, nodep, found, *rdatasetp, NULL); + if (result == ISC_R_SUCCESS) { + dns_rdatasetiter_t *rdsiter; + + rdsiter = NULL; + result = dns_db_allrdatasets(*dbp, *nodep, version, 0, + &rdsiter); + if (result != ISC_R_SUCCESS) { + dns_db_detachnode(*dbp, nodep); + rpz_fail_log(client, DNS_RPZ_ERROR_LEVEL, rpz_type, + qnamef, "allrdatasets()", result); + *policyp = DNS_RPZ_POLICY_ERROR; + return (DNS_R_SERVFAIL); + } + for (result = dns_rdatasetiter_first(rdsiter); + result == ISC_R_SUCCESS; + result = dns_rdatasetiter_next(rdsiter)) { + dns_rdatasetiter_current(rdsiter, *rdatasetp); + if ((*rdatasetp)->type == dns_rdatatype_cname || + (*rdatasetp)->type == qtype) + break; + dns_rdataset_disassociate(*rdatasetp); + } + dns_rdatasetiter_destroy(&rdsiter); + if (result != ISC_R_SUCCESS) { + if (result != ISC_R_NOMORE) { + rpz_fail_log(client, DNS_RPZ_ERROR_LEVEL, + rpz_type, qnamef, "rdatasetiter", + result); + *policyp = DNS_RPZ_POLICY_ERROR; + return (DNS_R_SERVFAIL); + } + /* + * Ask again to get the right DNS_R_DNAME/NXRRSET/... + * result if there is neither a CNAME nor target type. + */ + if (dns_rdataset_isassociated(*rdatasetp)) + dns_rdataset_disassociate(*rdatasetp); + dns_db_detachnode(*dbp, nodep); + result = dns_db_find(*dbp, qnamef, version, qtype, 0, + client->now, nodep, found, + *rdatasetp, NULL); + } + } + switch (result) { + case ISC_R_SUCCESS: + if ((*rdatasetp)->type != dns_rdatatype_cname) { + policy = DNS_RPZ_POLICY_RECORD; + } else { + policy = dns_rpz_decode_cname(*rdatasetp, sname); + if (policy == DNS_RPZ_POLICY_RECORD && + qtype != dns_rdatatype_cname && + qtype != dns_rdatatype_any) + result = DNS_R_CNAME; + } + break; + case DNS_R_DNAME: + policy = DNS_RPZ_POLICY_RECORD; + break; + case DNS_R_NXRRSET: + policy = DNS_RPZ_POLICY_NODATA; + break; + case DNS_R_NXDOMAIN: + case DNS_R_EMPTYNAME: + /* + * If we don't get a qname hit, + * see if it is worth looking for other types. + */ + dns_db_rpz_enabled(*dbp, client->query.rpz_st); + dns_db_detach(dbp); + dns_zone_detach(zonep); + policy = DNS_RPZ_POLICY_MISS; + break; + default: + dns_db_detach(dbp); + dns_zone_detach(zonep); + rpz_fail_log(client, DNS_RPZ_ERROR_LEVEL, rpz_type, qnamef, + "", result); + policy = DNS_RPZ_POLICY_ERROR; + result = DNS_R_SERVFAIL; + break; + } + + *policyp = policy; + return (result); +} + +/* + * Build and look for a QNAME or NSDNAME owner name in a response policy zone. + */ +static isc_result_t +rpz_rewrite_name(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qname, + dns_rpz_type_t rpz_type, dns_rdataset_t **rdatasetp) +{ + dns_rpz_st_t *st; + dns_rpz_zone_t *rpz; + dns_fixedname_t prefixf, rpz_qnamef; + dns_name_t *prefix, *suffix, *rpz_qname; + dns_zone_t *zone; + dns_db_t *db; + dns_dbnode_t *node; + dns_rpz_policy_t policy; + unsigned int labels; + isc_result_t result; + + st = client->query.rpz_st; + zone = NULL; + db = NULL; + node = NULL; + + for (rpz = ISC_LIST_HEAD(client->view->rpz_zones); + rpz != NULL; + rpz = ISC_LIST_NEXT(rpz, link)) { + /* + * Construct the rule's owner name. + */ + dns_fixedname_init(&prefixf); + prefix = dns_fixedname_name(&prefixf); + dns_name_split(qname, 1, prefix, NULL); + if (rpz_type == DNS_RPZ_TYPE_NSDNAME) + suffix = &rpz->nsdname; + else + suffix = &rpz->origin; + dns_fixedname_init(&rpz_qnamef); + rpz_qname = dns_fixedname_name(&rpz_qnamef); + for (;;) { + result = dns_name_concatenate(prefix, suffix, + rpz_qname, NULL); + if (result == ISC_R_SUCCESS) + break; + INSIST(result == DNS_R_NAMETOOLONG); + labels = dns_name_countlabels(prefix); + if (labels < 2) { + rpz_fail_log(client, DNS_RPZ_ERROR_LEVEL, + rpz_type, suffix, + "concatentate() ", result); + return (ISC_R_SUCCESS); + } + if (labels+1 == dns_name_countlabels(qname)) { + rpz_fail_log(client, DNS_RPZ_DEBUG_LEVEL1, + rpz_type, suffix, + "concatentate() ", result); + } + dns_name_split(prefix, labels - 1, NULL, prefix); + } + + /* + * See if the qname rule (or RR) exists. + */ + result = rpz_find(client, qtype, rpz_qname, qname, rpz_type, + &zone, &db, &node, rdatasetp, &policy); + switch (result) { + case DNS_R_NXDOMAIN: + case DNS_R_EMPTYNAME: + break; + case DNS_R_SERVFAIL: + rpz_clean(&zone, &db, &node, rdatasetp); + st->m.policy = DNS_RPZ_POLICY_ERROR; + return (DNS_R_SERVFAIL); + default: + /* + * when more than one name or address hits a rule, + * prefer the first set of names (qname or NS), + * the first policy zone, and the smallest name + */ + if (st->m.type == rpz_type && + rpz->num > st->m.rpz->num && + 0 <= dns_name_compare(rpz_qname, st->qname)) + continue; + rpz_clean(&st->m.zone, &st->m.db, &st->m.node, + &st->m.rdataset); + st->m.rpz = rpz; + st->m.type = rpz_type; + st->m.prefix = 0; + st->m.policy = policy; + st->m.result = result; + dns_name_copy(rpz_qname, st->qname, NULL); + if (dns_rdataset_isassociated(*rdatasetp)) { + dns_rdataset_t *trdataset; + + trdataset = st->m.rdataset; + st->m.rdataset = *rdatasetp; + *rdatasetp = trdataset; + st->m.ttl = st->m.rdataset->ttl; + } else { + st->m.ttl = DNS_RPZ_TTL_DEFAULT; + } + st->m.node = node; + node = NULL; + st->m.db = db; + db = NULL; + st->m.zone = zone; + zone = NULL; + } + } + + rpz_clean(&zone, &db, &node, rdatasetp); + return (ISC_R_SUCCESS); +} + +/* + * Look for response policy zone NSIP and NSDNAME rewriting. + */ +static isc_result_t +rpz_rewrite(ns_client_t *client, dns_rdatatype_t qtype, + isc_boolean_t resuming) +{ + dns_rpz_st_t *st; + dns_db_t *ipdb; + dns_rdataset_t *rdataset; + dns_fixedname_t nsnamef; + dns_name_t *nsname; + dns_dbversion_t *version; + isc_result_t result; + + ipdb = NULL; + rdataset = NULL; + + st = client->query.rpz_st; + if (st == NULL) { + st = isc_mem_get(client->mctx, sizeof(*st)); + if (st == NULL) + return (ISC_R_NOMEMORY); + st->state = 0; + memset(&st->m, 0, sizeof(st->m)); + memset(&st->ns, 0, sizeof(st->ns)); + memset(&st->q, 0, sizeof(st->q)); + dns_fixedname_init(&st->_qnamef); + dns_fixedname_init(&st->_r_namef); + dns_fixedname_init(&st->_fnamef); + st->qname = dns_fixedname_name(&st->_qnamef); + st->r_name = dns_fixedname_name(&st->_r_namef); + st->fname = dns_fixedname_name(&st->_fnamef); + client->query.rpz_st = st; + } + if ((st->state & DNS_RPZ_DONE_QNAME) == 0) { + st->state = DNS_RPZ_DONE_QNAME; + st->m.type = DNS_RPZ_TYPE_BAD; + st->m.policy = DNS_RPZ_POLICY_MISS; + + /* + * Check rules for the name if this it the first time, + * i.e. we've not been recursing. + */ + result = DNS_R_SERVFAIL; + st->state &= ~(DNS_RPZ_HAVE_IP | DNS_RPZ_HAVE_NSIPv4 | + DNS_RPZ_HAVE_NSIPv6 | DNS_RPZ_HAD_NSDNAME); + result = rpz_rewrite_name(client, qtype, client->query.qname, + DNS_RPZ_TYPE_QNAME, &rdataset); + if (st->m.policy != DNS_RPZ_POLICY_MISS) + goto cleanup; + if ((st->state & (DNS_RPZ_HAVE_NSIPv4 | DNS_RPZ_HAVE_NSIPv6 | + DNS_RPZ_HAD_NSDNAME)) == 0) + goto cleanup; + st->ns.label = dns_name_countlabels(client->query.qname); + } + + dns_fixedname_init(&nsnamef); + dns_name_clone(client->query.qname, dns_fixedname_name(&nsnamef)); + while (st->ns.label > 1 && st->m.policy == DNS_RPZ_POLICY_MISS) { + if (st->ns.label == dns_name_countlabels(client->query.qname)) { + nsname = client->query.qname; + } else { + nsname = dns_fixedname_name(&nsnamef); + dns_name_split(client->query.qname, st->ns.label, + NULL, nsname); + } + if (st->ns.ns_rdataset == NULL || + !dns_rdataset_isassociated(st->ns.ns_rdataset)) { + dns_db_t *db = NULL; + result = rpz_ns_find(client, nsname, dns_rdatatype_ns, + &db, NULL, &st->ns.ns_rdataset, + resuming); + if (db != NULL) + dns_db_detach(&db); + if (result != ISC_R_SUCCESS) { + if (result == DNS_R_DELEGATION) + goto cleanup; + if (result == DNS_R_EMPTYNAME || + result == DNS_R_NXRRSET || + result == DNS_R_EMPTYWILD || + result == DNS_R_NXDOMAIN || + result == DNS_R_NCACHENXDOMAIN || + result == DNS_R_NCACHENXRRSET || + result == DNS_R_CNAME || + result == DNS_R_DNAME) { + rpz_fail_log(client, + DNS_RPZ_DEBUG_LEVEL2, + DNS_RPZ_TYPE_NSIP, nsname, + "NS db_find() ", result); + dns_rdataset_disassociate(st->ns. + ns_rdataset); + st->ns.label--; + continue; + } + if (st->m.policy != DNS_RPZ_POLICY_ERROR) { + rpz_fail_log(client, DNS_RPZ_INFO_LEVEL, + DNS_RPZ_TYPE_NSIP, nsname, + "NS db_find() ", result); + st->m.policy = DNS_RPZ_POLICY_ERROR; + } + goto cleanup; + } + result = dns_rdataset_first(st->ns.ns_rdataset); + if (result != ISC_R_SUCCESS) + goto cleanup; + } + /* + * Check all NS names. + */ + do { + dns_rdata_ns_t ns; + dns_rdata_t nsrdata = DNS_RDATA_INIT; + + dns_rdataset_current(st->ns.ns_rdataset, &nsrdata); + result = dns_rdata_tostruct(&nsrdata, &ns, NULL); + dns_rdata_reset(&nsrdata); + if (result != ISC_R_SUCCESS) { + rpz_fail_log(client, DNS_RPZ_ERROR_LEVEL, + DNS_RPZ_TYPE_NSIP, nsname, + "rdata_tostruct() ", result); + st->m.policy = DNS_RPZ_POLICY_ERROR; + goto cleanup; + } + if ((st->state & DNS_RPZ_HAD_NSDNAME) != 0) { + result = rpz_rewrite_name(client, qtype, + &ns.name, + DNS_RPZ_TYPE_NSDNAME, + &rdataset); + if (result != ISC_R_SUCCESS) { + dns_rdata_freestruct(&ns); + goto cleanup; + } + } + /* + * Check all IP addresses for this NS name, but don't + * bother without NSIP rules or with a NSDNAME hit. + */ + version = NULL; + if ((st->state & DNS_RPZ_HAVE_NSIPv4) != 0 && + st->m.type != DNS_RPZ_TYPE_NSDNAME && + (st->state & DNS_RPZ_DONE_A) == 0) { + result = rpz_rewrite_nsip(client, + dns_rdatatype_a, + &ns.name, &ipdb, + version, &rdataset, + resuming); + if (result == ISC_R_SUCCESS) + st->state |= DNS_RPZ_DONE_A; + } + if (result == ISC_R_SUCCESS && + (st->state & DNS_RPZ_HAVE_NSIPv6) != 0 && + st->m.type != DNS_RPZ_TYPE_NSDNAME) { + result = rpz_rewrite_nsip(client, + dns_rdatatype_aaaa, + &ns.name, &ipdb, version, + &rdataset, resuming); + } + dns_rdata_freestruct(&ns); + if (ipdb != NULL) + dns_db_detach(&ipdb); + if (result != ISC_R_SUCCESS) + goto cleanup; + st->state &= ~DNS_RPZ_DONE_A; + result = dns_rdataset_next(st->ns.ns_rdataset); + } while (result == ISC_R_SUCCESS); + dns_rdataset_disassociate(st->ns.ns_rdataset); + st->ns.label--; + } + + /* + * Use the best, if any, hit. + */ + result = ISC_R_SUCCESS; + +cleanup: + if (st->m.policy != DNS_RPZ_POLICY_MISS && + st->m.policy != DNS_RPZ_POLICY_NO_OP && + st->m.policy != DNS_RPZ_POLICY_ERROR && + st->m.rpz->policy != DNS_RPZ_POLICY_GIVEN) + st->m.policy = st->m.rpz->policy; + if (st->m.policy == DNS_RPZ_POLICY_NO_OP) + rpz_log(client); + if (st->m.policy == DNS_RPZ_POLICY_MISS || + st->m.policy == DNS_RPZ_POLICY_NO_OP || + st->m.policy == DNS_RPZ_POLICY_ERROR) + rpz_clean(&st->m.zone, &st->m.db, &st->m.node, &st->m.rdataset); + if (st->m.policy != DNS_RPZ_POLICY_MISS) + st->state |= DNS_RPZ_REWRITTEN; + if (st->m.policy == DNS_RPZ_POLICY_ERROR) { + st->m.type = DNS_RPZ_TYPE_BAD; + result = DNS_R_SERVFAIL; + } + if (rdataset != NULL) + query_putrdataset(client, &rdataset); + if ((st->state & DNS_RPZ_RECURSING) == 0) { + rpz_clean(NULL, &st->ns.db, NULL, &st->ns.ns_rdataset); + } + + return (result); +} + #define MAX_RESTARTS 16 #define QUERY_ERROR(r) \ @@ -4135,6 +4912,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) dns_rdata_t rdata = DNS_RDATA_INIT; dns_rdatasetiter_t *rdsiter; isc_boolean_t want_restart, authoritative, is_zone, need_wildcardproof; + isc_boolean_t is_staticstub_zone; unsigned int n, nlabels; dns_namereln_t namereln; int order; @@ -4150,6 +4928,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) unsigned int options; isc_boolean_t empty_wild; dns_rdataset_t *noqname; + dns_rpz_st_t *rpz_st; isc_boolean_t resuming; int line = -1; isc_boolean_t dns64_exclude, dns64; @@ -4182,6 +4961,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) options = 0; resuming = ISC_FALSE; is_zone = ISC_FALSE; + is_staticstub_zone = ISC_FALSE; if (event != NULL) { /* @@ -4189,17 +4969,47 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) * and resume. */ want_restart = ISC_FALSE; - authoritative = ISC_FALSE; - qtype = event->qtype; + rpz_st = client->query.rpz_st; + if (rpz_st != NULL && + (rpz_st->state & DNS_RPZ_RECURSING) != 0) { + is_zone = rpz_st->q.is_zone; + authoritative = rpz_st->q.authoritative; + zone = rpz_st->q.zone; + rpz_st->q.zone = NULL; + node = rpz_st->q.node; + rpz_st->q.node = NULL; + db = rpz_st->q.db; + rpz_st->q.db = NULL; + rdataset = rpz_st->q.rdataset; + rpz_st->q.rdataset = NULL; + sigrdataset = rpz_st->q.sigrdataset; + rpz_st->q.sigrdataset = NULL; + qtype = rpz_st->q.qtype; + + if (event->node != NULL) + dns_db_detachnode(db, &event->node); + rpz_st->ns.db = event->db; + rpz_st->ns.r_type = event->qtype; + rpz_st->ns.r_rdataset = event->rdataset; + if (event->sigrdataset != NULL && + dns_rdataset_isassociated(event->sigrdataset)) + dns_rdataset_disassociate(event->sigrdataset); + } else { + authoritative = ISC_FALSE; + + qtype = event->qtype; + db = event->db; + node = event->node; + rdataset = event->rdataset; + sigrdataset = event->sigrdataset; + } + if (qtype == dns_rdatatype_rrsig || qtype == dns_rdatatype_sig) type = dns_rdatatype_any; else type = qtype; - db = event->db; - node = event->node; - rdataset = event->rdataset; - sigrdataset = event->sigrdataset; + if (DNS64(client)) { client->query.attributes &= ~NS_QUERYATTR_DNS64; dns64 = ISC_TRUE; @@ -4222,14 +5032,25 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } - tname = dns_fixedname_name(&event->foundname); + if (rpz_st != NULL && + (rpz_st->state & DNS_RPZ_RECURSING) != 0) { + tname = rpz_st->fname; + } else { + tname = dns_fixedname_name(&event->foundname); + } result = dns_name_copy(tname, fname, NULL); if (result != ISC_R_SUCCESS) { QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } - - result = event->result; + if (rpz_st != NULL && + (rpz_st->state & DNS_RPZ_RECURSING) != 0) { + rpz_st->ns.r_result = event->result; + result = rpz_st->q.result; + isc_event_free(ISC_EVENT_PTR(&event)); + } else { + result = event->result; + } resuming = ISC_TRUE; goto resume; } @@ -4329,8 +5150,12 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) goto cleanup; } - if (is_zone) + is_staticstub_zone = ISC_FALSE; + if (is_zone && zone != NULL) { authoritative = ISC_TRUE; + if (dns_zone_gettype(zone) == dns_zone_staticstub) + is_staticstub_zone = ISC_TRUE; + } if (event == NULL && client->query.restarts == 0) { if (is_zone) { @@ -4383,6 +5208,118 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) resume: CTRACE("query_find: resume"); + + if (!ISC_LIST_EMPTY(client->view->rpz_zones) && + RECURSIONOK(client) && !RECURSING(client) && + result != DNS_R_DELEGATION && result != ISC_R_NOTFOUND && + (client->query.rpz_st == NULL || + (client->query.rpz_st->state & DNS_RPZ_REWRITTEN) == 0) && + !dns_name_equal(client->query.qname, dns_rootname)) { + isc_result_t rresult; + + rresult = rpz_rewrite(client, qtype, resuming); + rpz_st = client->query.rpz_st; + switch (rresult) { + case ISC_R_SUCCESS: + break; + case DNS_R_DELEGATION: + /* + * recursing for NS names or addresses, + * so save the main query state + */ + rpz_st->q.qtype = qtype; + rpz_st->q.is_zone = is_zone; + rpz_st->q.authoritative = authoritative; + rpz_st->q.zone = zone; + zone = NULL; + rpz_st->q.db = db; + db = NULL; + rpz_st->q.node = node; + node = NULL; + rpz_st->q.rdataset = rdataset; + rdataset = NULL; + rpz_st->q.sigrdataset = sigrdataset; + sigrdataset = NULL; + dns_name_copy(fname, rpz_st->fname, NULL); + rpz_st->q.result = result; + client->query.attributes |= NS_QUERYATTR_RECURSING; + result = ISC_R_SUCCESS; + goto cleanup; + default: + RECURSE_ERROR(rresult); + goto cleanup; + } + if (rpz_st->m.policy != DNS_RPZ_POLICY_MISS && + rpz_st->m.policy != DNS_RPZ_POLICY_NO_OP) { + result = dns_name_copy(client->query.qname, fname, + NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + finish_rewrite: + rpz_clean(&zone, &db, &node, NULL); + if (rpz_st->m.rdataset != NULL) { + if (rdataset != NULL) + query_putrdataset(client, &rdataset); + rdataset = rpz_st->m.rdataset; + rpz_st->m.rdataset = NULL; + } else if (rdataset != NULL && + dns_rdataset_isassociated(rdataset)) { + dns_rdataset_disassociate(rdataset); + } + node = rpz_st->m.node; + rpz_st->m.node = NULL; + db = rpz_st->m.db; + rpz_st->m.db = NULL; + zone = rpz_st->m.zone; + rpz_st->m.zone = NULL; + + result = rpz_st->m.result; + switch (rpz_st->m.policy) { + case DNS_RPZ_POLICY_NXDOMAIN: + result = DNS_R_NXDOMAIN; + break; + case DNS_RPZ_POLICY_NODATA: + result = DNS_R_NXRRSET; + break; + case DNS_RPZ_POLICY_RECORD: + if (type == dns_rdatatype_any && + dns_rdataset_isassociated(rdataset)) + dns_rdataset_disassociate(rdataset); + break; + case DNS_RPZ_POLICY_CNAME: + result = dns_name_copy(&rpz_st->m.rpz->cname, + fname, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + query_keepname(client, fname, dbuf); + result = query_add_cname(client, + client->query.qname, + fname, + dns_trust_authanswer, + rpz_st->m.ttl); + if (result != ISC_R_SUCCESS) + goto cleanup; + ns_client_qnamereplace(client, fname); + fname = NULL; + client->attributes &= ~NS_CLIENTATTR_WANTDNSSEC; + rpz_log(client); + want_restart = ISC_TRUE; + goto cleanup; + default: + INSIST(0); + } + + /* + * Turn off DNSSEC because the results of a + * response policy zone cannot verify. + */ + client->attributes &= ~NS_CLIENTATTR_WANTDNSSEC; + if (sigrdataset != NULL && + dns_rdataset_isassociated(sigrdataset)) + dns_rdataset_disassociate(sigrdataset); + is_zone = ISC_TRUE; + rpz_log(client); + } + } + switch (result) { case ISC_R_SUCCESS: /* @@ -4435,6 +5372,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) */ if (RECURSIONOK(client)) { result = query_recurse(client, qtype, + client->query.qname, NULL, NULL, resuming); if (result == ISC_R_SUCCESS) { client->query.attributes |= @@ -4576,12 +5514,22 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) } } else { if (zfname != NULL && - !dns_name_issubdomain(fname, zfname)) { + (!dns_name_issubdomain(fname, zfname) || + (is_staticstub_zone && + dns_name_equal(fname, zfname)))) { /* - * We've already got a delegation from - * authoritative data, and it is better - * than what we found in the cache. Use - * it instead of the cache delegation. + * In the following cases use "authoritative" + * data instead of the cache delegation: + * 1. We've already got a delegation from + * authoritative data, and it is better + * than what we found in the cache. + * 2. The query name matches the origin name + * of a static-stub zone. This needs to be + * considered for the case where the NS of + * the static-stub zone and the cached NS + * are different. We still need to contact + * the nameservers configured in the + * static-stub zone. */ query_releasename(client, &fname); fname = zfname; @@ -4616,17 +5564,18 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) */ if (dns_rdatatype_atparent(type)) result = query_recurse(client, qtype, - NULL, NULL, - resuming); + client->query.qname, + NULL, NULL, resuming); else if (dns64) result = query_recurse(client, - dns_rdatatype_a, - NULL, NULL, - resuming); + dns_rdatatype_a, + client->query.qname, + NULL, NULL, resuming); else result = query_recurse(client, qtype, - fname, rdataset, - resuming); + client->query.qname, + fname, rdataset, + resuming); if (result == ISC_R_SUCCESS) { client->query.attributes |= @@ -4769,10 +5718,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) * instead? If so add the nearest to the * closest provable encloser. */ - if (found && - dns_rdataset_isassociated(rdataset) && - !dns_name_equal(qname, found)) - { + if (dns_rdataset_isassociated(rdataset) && + !dns_name_equal(qname, found)) { unsigned int count; unsigned int skip; @@ -5135,11 +6082,11 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) dns_message_puttempname(client->message, &tname); goto cleanup; } - dns_name_init(tname, NULL); dns_name_clone(&dname.dname, tname); dns_rdata_freestruct(&dname); /* - * Construct the new qname. + * Construct the new qname consisting of + * <found name prefix>.<dname target> */ dns_fixedname_init(&fixed); prefix = dns_fixedname_name(&fixed); @@ -5156,8 +6103,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) goto cleanup; } result = dns_name_concatenate(prefix, tname, fname, NULL); + dns_message_puttempname(client->message, &tname); if (result != ISC_R_SUCCESS) { - dns_message_puttempname(client->message, &tname); if (result == ISC_R_NOSPACE) { /* * RFC2672, section 4.1, subsection 3c says @@ -5170,11 +6117,12 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) } query_keepname(client, fname, dbuf); /* - * Synthesize a CNAME for this DNAME. + * Synthesize a CNAME consisting of + * <old qname> <dname ttl> CNAME <new qname> + * with <dname trust value> * - * We want to synthesize a CNAME since if we don't - * then older software that doesn't understand DNAME - * will not chain like it should. + * Synthesize a CNAME so old old clients that don't understand + * DNAME can chain. * * We do not try to synthesize a signature because we hope * that security aware servers will understand DNAME. Also, @@ -5182,12 +6130,10 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) * on-the-fly is costly, and not really legitimate anyway * since the synthesized CNAME is NOT in the zone. */ - dns_name_init(tname, NULL); - (void)query_addcnamelike(client, client->query.qname, fname, - trdataset, &tname, - dns_rdatatype_cname); - if (tname != NULL) - dns_message_puttempname(client->message, &tname); + result = query_add_cname(client, client->query.qname, fname, + trdataset->trust, trdataset->ttl); + if (result != ISC_R_SUCCESS) + goto cleanup; /* * Switch to the new qname and restart. */ @@ -5247,6 +6193,54 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } + + /* + * Check all A and AAAA records in all response policy + * IP address zones + */ + rpz_st = client->query.rpz_st; + if (rpz_st != NULL && + (rpz_st->state & DNS_RPZ_DONE_QNAME) != 0 && + (rpz_st->state & DNS_RPZ_REWRITTEN) == 0 && + RECURSIONOK(client) && !RECURSING(client) && + (rpz_st->state & DNS_RPZ_HAVE_IP) != 0) { + for (result = dns_rdatasetiter_first(rdsiter); + result == ISC_R_SUCCESS; + result = dns_rdatasetiter_next(rdsiter)) { + dns_rdatasetiter_current(rdsiter, rdataset); + if (rdataset->type == dns_rdatatype_a || + rdataset->type == dns_rdatatype_aaaa) + result = rpz_rewrite_ip(client, + rdataset, + DNS_RPZ_TYPE_IP); + dns_rdataset_disassociate(rdataset); + if (result != ISC_R_SUCCESS) + break; + } + if (result != ISC_R_NOMORE) { + dns_rdatasetiter_destroy(&rdsiter); + QUERY_ERROR(DNS_R_SERVFAIL); + goto cleanup; + } + switch (rpz_st->m.policy) { + case DNS_RPZ_POLICY_MISS: + break; + case DNS_RPZ_POLICY_NO_OP: + rpz_log(client); + rpz_st->state |= DNS_RPZ_REWRITTEN; + break; + case DNS_RPZ_POLICY_NXDOMAIN: + case DNS_RPZ_POLICY_NODATA: + case DNS_RPZ_POLICY_RECORD: + case DNS_RPZ_POLICY_CNAME: + dns_rdatasetiter_destroy(&rdsiter); + rpz_st->state |= DNS_RPZ_REWRITTEN; + goto finish_rewrite; + default: + INSIST(0); + } + } + /* * Calling query_addrrset() with a non-NULL dbuf is going * to either keep or release the name. We don't want it to @@ -5363,10 +6357,10 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) dns_rdatasetiter_destroy(&rdsiter); if (RECURSIONOK(client)) { result = query_recurse(client, - qtype, - NULL, - NULL, - resuming); + qtype, + client->query.qname, + NULL, NULL, + resuming); if (result == ISC_R_SUCCESS) client->query.attributes |= NS_QUERYATTR_RECURSING; @@ -5405,6 +6399,49 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) * This is the "normal" case -- an ordinary question to which * we know the answer. */ + + /* + * Check all A and AAAA records in all response policy + * IP address zones + */ + rpz_st = client->query.rpz_st; + if (rpz_st != NULL && + (rpz_st->state & DNS_RPZ_DONE_QNAME) != 0 && + (rpz_st->state & DNS_RPZ_REWRITTEN) == 0 && + RECURSIONOK(client) && !RECURSING(client) && + (rpz_st->state & DNS_RPZ_HAVE_IP) != 0 && + (qtype == dns_rdatatype_aaaa || qtype == dns_rdatatype_a)) { + result = rpz_rewrite_ip(client, rdataset, + DNS_RPZ_TYPE_IP); + if (result != ISC_R_SUCCESS) { + QUERY_ERROR(DNS_R_SERVFAIL); + goto cleanup; + } + /* + * After a hit in the radix tree for the policy domain, + * either stop trying to rewrite (DNS_RPZ_POLICY_NO_OP) + * or restart to ask the ordinary database of the + * policy zone for the DNS record corresponding to the + * record in the radix tree. + */ + switch (rpz_st->m.policy) { + case DNS_RPZ_POLICY_MISS: + break; + case DNS_RPZ_POLICY_NO_OP: + rpz_log(client); + rpz_st->state |= DNS_RPZ_REWRITTEN; + break; + case DNS_RPZ_POLICY_NXDOMAIN: + case DNS_RPZ_POLICY_NODATA: + case DNS_RPZ_POLICY_RECORD: + case DNS_RPZ_POLICY_CNAME: + rpz_st->state |= DNS_RPZ_REWRITTEN; + goto finish_rewrite; + default: + INSIST(0); + } + } + #ifdef ALLOW_FILTER_AAAA_ON_V4 /* * Optionally hide AAAAs from IPv4 clients if there is an A. @@ -5467,6 +6504,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) */ result = query_recurse(client, dns_rdatatype_a, + client->query.qname, NULL, NULL, resuming); if (result == ISC_R_SUCCESS) { client->attributes |= @@ -5611,6 +6649,10 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) /* * General cleanup. */ + rpz_st = client->query.rpz_st; + if (rpz_st != NULL && (rpz_st->state & DNS_RPZ_RECURSING) == 0) + rpz_clean(&rpz_st->m.zone, &rpz_st->m.db, &rpz_st->m.node, + &rpz_st->m.rdataset); if (rdataset != NULL) query_putrdataset(client, &rdataset); if (sigrdataset != NULL) diff --git a/bin/named/server.c b/bin/named/server.c index d0f61fa0..62cfc395 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: server.c,v 1.590 2010/12/09 00:54:33 marka Exp $ */ +/* $Id: server.c,v 1.599 2011-01-13 03:57:50 marka Exp $ */ /*! \file */ @@ -602,7 +602,8 @@ dstkey_fromconfig(const cfg_obj_t *vconfig, const cfg_obj_t *key, static isc_result_t load_view_keys(const cfg_obj_t *keys, const cfg_obj_t *vconfig, - dns_view_t *view, isc_boolean_t managed, isc_mem_t *mctx) + dns_view_t *view, isc_boolean_t managed, + dns_name_t *keyname, isc_mem_t *mctx) { const cfg_listelt_t *elt, *elt2; const cfg_obj_t *key, *keylist; @@ -630,6 +631,16 @@ load_view_keys(const cfg_obj_t *keys, const cfg_obj_t *vconfig, if (result != ISC_R_SUCCESS) goto cleanup; + /* + * If keyname was specified, we only add that key. + */ + if (keyname != NULL && + !dns_name_equal(keyname, dst_key_name(dstkey))) + { + dst_key_free(&dstkey); + continue; + } + CHECK(dns_keytable_add(secroots, managed, &dstkey)); } } @@ -653,15 +664,14 @@ load_view_keys(const cfg_obj_t *keys, const cfg_obj_t *vconfig, static isc_result_t configure_view_dnsseckeys(dns_view_t *view, const cfg_obj_t *vconfig, const cfg_obj_t *config, const cfg_obj_t *bindkeys, - isc_boolean_t auto_dlv, isc_mem_t *mctx) + isc_boolean_t auto_dlv, isc_boolean_t auto_root, + isc_mem_t *mctx) { isc_result_t result = ISC_R_SUCCESS; const cfg_obj_t *view_keys = NULL; const cfg_obj_t *global_keys = NULL; const cfg_obj_t *view_managed_keys = NULL; const cfg_obj_t *global_managed_keys = NULL; - const cfg_obj_t *builtin_keys = NULL; - const cfg_obj_t *builtin_managed_keys = NULL; const cfg_obj_t *maps[4]; const cfg_obj_t *voptions = NULL; const cfg_obj_t *options = NULL; @@ -707,9 +717,45 @@ configure_view_dnsseckeys(dns_view_t *view, const cfg_obj_t *vconfig, } if (auto_dlv && view->rdclass == dns_rdataclass_in) { + const cfg_obj_t *builtin_keys = NULL; + const cfg_obj_t *builtin_managed_keys = NULL; + + isc_log_write(ns_g_lctx, DNS_LOGCATEGORY_SECURITY, + NS_LOGMODULE_SERVER, ISC_LOG_WARNING, + "using built-in DLV key for view %s", + view->name); + + /* + * If bind.keys exists, it overrides the managed-keys + * clause hard-coded in ns_g_config. + */ + if (bindkeys != NULL) { + (void)cfg_map_get(bindkeys, "trusted-keys", + &builtin_keys); + (void)cfg_map_get(bindkeys, "managed-keys", + &builtin_managed_keys); + } else { + (void)cfg_map_get(ns_g_config, "trusted-keys", + &builtin_keys); + (void)cfg_map_get(ns_g_config, "managed-keys", + &builtin_managed_keys); + } + + if (builtin_keys != NULL) + CHECK(load_view_keys(builtin_keys, vconfig, view, + ISC_FALSE, view->dlv, mctx)); + if (builtin_managed_keys != NULL) + CHECK(load_view_keys(builtin_managed_keys, vconfig, + view, ISC_TRUE, view->dlv, mctx)); + } + + if (auto_root && view->rdclass == dns_rdataclass_in) { + const cfg_obj_t *builtin_keys = NULL; + const cfg_obj_t *builtin_managed_keys = NULL; + isc_log_write(ns_g_lctx, DNS_LOGCATEGORY_SECURITY, NS_LOGMODULE_SERVER, ISC_LOG_WARNING, - "using built-in trusted-keys for view %s", + "using built-in root key for view %s", view->name); /* @@ -730,19 +776,23 @@ configure_view_dnsseckeys(dns_view_t *view, const cfg_obj_t *vconfig, if (builtin_keys != NULL) CHECK(load_view_keys(builtin_keys, vconfig, view, - ISC_FALSE, mctx)); + ISC_FALSE, dns_rootname, mctx)); if (builtin_managed_keys != NULL) CHECK(load_view_keys(builtin_managed_keys, vconfig, - view, ISC_TRUE, mctx)); + view, ISC_TRUE, dns_rootname, + mctx)); } - CHECK(load_view_keys(view_keys, vconfig, view, ISC_FALSE, mctx)); - CHECK(load_view_keys(view_managed_keys, vconfig, view, ISC_TRUE, mctx)); + CHECK(load_view_keys(view_keys, vconfig, view, ISC_FALSE, + NULL, mctx)); + CHECK(load_view_keys(view_managed_keys, vconfig, view, ISC_TRUE, + NULL, mctx)); + if (view->rdclass == dns_rdataclass_in) { CHECK(load_view_keys(global_keys, vconfig, view, ISC_FALSE, - mctx)); + NULL, mctx)); CHECK(load_view_keys(global_managed_keys, vconfig, view, - ISC_TRUE, mctx)); + ISC_TRUE, NULL, mctx)); } /* @@ -1290,6 +1340,212 @@ cache_sharable(dns_view_t *originview, dns_view_t *view, return (ISC_TRUE); } +#ifdef DLZ +/* + * Callback from DLZ configure when the driver sets up a writeable zone + */ +static isc_result_t +dlzconfigure_callback(dns_view_t *view, dns_zone_t *zone) { + dns_name_t *origin = dns_zone_getorigin(zone); + dns_rdataclass_t zclass = view->rdclass; + isc_result_t result; + + result = dns_zonemgr_managezone(ns_g_server->zonemgr, zone); + if (result != ISC_R_SUCCESS) + return result; + dns_zone_setstats(zone, ns_g_server->zonestats); + + return ns_zone_configure_writeable_dlz(view->dlzdatabase, + zone, zclass, origin); +} +#endif + +static isc_result_t +dns64_reverse(dns_view_t *view, isc_mem_t *mctx, isc_netaddr_t *na, + unsigned int prefixlen, const char *server, + const char *contact) +{ + char *cp; + char reverse[48+sizeof("ip6.arpa.")]; + const char *dns64_dbtype[4] = { "_builtin", "dns64", ".", "." }; + const char *sep = ": view "; + const char *viewname = view->name; + const unsigned char *s6; + dns_fixedname_t fixed; + dns_name_t *name; + dns_zone_t *zone = NULL; + int dns64_dbtypec = 4; + isc_buffer_t b; + isc_result_t result; + + REQUIRE(prefixlen == 32 || prefixlen == 40 || prefixlen == 48 || + prefixlen == 56 || prefixlen == 64 || prefixlen == 96); + + if (!strcmp(viewname, "_default")) { + sep = ""; + viewname = ""; + } + + /* + * Construct the reverse name of the zone. + */ + cp = reverse; + s6 = na->type.in6.s6_addr; + while (prefixlen > 0) { + prefixlen -= 8; + sprintf(cp, "%x.%x.", s6[prefixlen/8] & 0xf, + (s6[prefixlen/8] >> 4) & 0xf); + cp += 4; + } + strcat(cp, "ip6.arpa."); + + /* + * Create the actual zone. + */ + if (server != NULL) + dns64_dbtype[2] = server; + if (contact != NULL) + dns64_dbtype[3] = contact; + dns_fixedname_init(&fixed); + name = dns_fixedname_name(&fixed); + isc_buffer_init(&b, reverse, strlen(reverse)); + isc_buffer_add(&b, strlen(reverse)); + CHECK(dns_name_fromtext(name, &b, dns_rootname, 0, NULL)); + CHECK(dns_zone_create(&zone, mctx)); + CHECK(dns_zone_setorigin(zone, name)); + dns_zone_setview(zone, view); + CHECK(dns_zonemgr_managezone(ns_g_server->zonemgr, zone)); + dns_zone_setclass(zone, view->rdclass); + dns_zone_settype(zone, dns_zone_master); + dns_zone_setstats(zone, ns_g_server->zonestats); + CHECK(dns_zone_setdbtype(zone, dns64_dbtypec, dns64_dbtype)); + if (view->queryacl != NULL) + dns_zone_setqueryacl(zone, view->queryacl); + if (view->queryonacl != NULL) + dns_zone_setqueryonacl(zone, view->queryonacl); + dns_zone_setdialup(zone, dns_dialuptype_no); + dns_zone_setnotifytype(zone, dns_notifytype_no); + dns_zone_setoption(zone, DNS_ZONEOPT_NOCHECKNS, ISC_TRUE); + CHECK(setquerystats(zone, mctx, ISC_FALSE)); /* XXXMPA */ + CHECK(dns_view_addzone(view, zone)); + isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER, + ISC_LOG_INFO, "dns64 reverse zone%s%s: %s", sep, + viewname, reverse); + +cleanup: + if (zone != NULL) + dns_zone_detach(&zone); + return (result); +} + +static isc_result_t +configure_rpz(dns_view_t *view, const cfg_listelt_t *element) { + const cfg_obj_t *rpz_obj, *policy_obj; + const char *str; + dns_fixedname_t fixed; + dns_name_t *origin; + dns_rpz_zone_t *old, *new; + dns_zone_t *zone = NULL; + isc_result_t result; + unsigned int l1, l2; + + new = isc_mem_get(view->mctx, sizeof(*new)); + if (new == NULL) { + result = ISC_R_NOMEMORY; + goto cleanup; + } + + memset(new, 0, sizeof(*new)); + dns_name_init(&new->nsdname, NULL); + dns_name_init(&new->origin, NULL); + dns_name_init(&new->cname, NULL); + ISC_LIST_INITANDAPPEND(view->rpz_zones, new, link); + + rpz_obj = cfg_listelt_value(element); + policy_obj = cfg_tuple_get(rpz_obj, "policy"); + if (cfg_obj_isvoid(policy_obj)) { + new->policy = DNS_RPZ_POLICY_GIVEN; + } else { + str = cfg_obj_asstring(policy_obj); + new->policy = dns_rpz_str2policy(str); + INSIST(new->policy != DNS_RPZ_POLICY_ERROR); + } + + dns_fixedname_init(&fixed); + origin = dns_fixedname_name(&fixed); + str = cfg_obj_asstring(cfg_tuple_get(rpz_obj, "name")); + result = dns_name_fromstring(origin, str, DNS_NAME_DOWNCASE, NULL); + if (result != ISC_R_SUCCESS) { + cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "invalid zone '%s'", str); + goto cleanup; + } + + result = dns_name_fromstring2(&new->nsdname, DNS_RPZ_NSDNAME_ZONE, + origin, DNS_NAME_DOWNCASE, view->mctx); + if (result != ISC_R_SUCCESS) { + cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "invalid zone '%s'", str); + goto cleanup; + } + + /* + * The origin is part of 'nsdname' so we don't need to keep it + * seperately. + */ + l1 = dns_name_countlabels(&new->nsdname); + l2 = dns_name_countlabels(origin); + dns_name_getlabelsequence(&new->nsdname, l1 - l2, l2, &new->origin); + + /* + * Are we configured to with the reponse policy zone? + */ + result = dns_view_findzone(view, &new->origin, &zone); + if (result != ISC_R_SUCCESS) { + cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "unknown zone '%s'", str); + goto cleanup; + } + + if (dns_zone_gettype(zone) != dns_zone_master && + dns_zone_gettype(zone) != dns_zone_slave) { + cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "zone '%s' is neither master nor slave", str); + dns_zone_detach(&zone); + result = DNS_R_NOTMASTER; + goto cleanup; + } + dns_zone_detach(&zone); + + for (old = ISC_LIST_HEAD(view->rpz_zones); + old != new; + old = ISC_LIST_NEXT(old, link)) { + ++new->num; + if (dns_name_equal(&old->origin, &new->origin)) { + cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "duplicate '%s'", str); + result = DNS_R_DUPLICATE; + goto cleanup; + } + } + + if (new->policy == DNS_RPZ_POLICY_CNAME) { + str = cfg_obj_asstring(cfg_tuple_get(rpz_obj, "cname")); + result = dns_name_fromstring(&new->cname, str, 0, view->mctx); + if (result != ISC_R_SUCCESS) { + cfg_obj_log(rpz_obj, ns_g_lctx, DNS_RPZ_ERROR_LEVEL, + "invalid cname '%s'", str); + goto cleanup; + } + } + + return (ISC_R_SUCCESS); + + cleanup: + dns_rpz_view_destroy(view); + return (result); +} + /* * Configure 'view' according to 'vconfig', taking defaults from 'config' * where values are missing in 'vconfig'. @@ -1353,6 +1609,7 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, isc_stats_t *resstats = NULL; dns_stats_t *resquerystats = NULL; isc_boolean_t auto_dlv = ISC_FALSE; + isc_boolean_t auto_root = ISC_FALSE; ns_cache_t *nsc; isc_boolean_t zero_no_soattl; cfg_parser_t *newzones_parser = NULL; @@ -1563,6 +1820,14 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, isc_mem_put(mctx, dlzargv, dlzargc * sizeof(*dlzargv)); if (result != ISC_R_SUCCESS) goto cleanup; + + /* + * If the dlz backend supports configuration, + * then call its configure method now. + */ + result = dns_dlzconfigure(view, dlzconfigure_callback); + if (result != ISC_R_SUCCESS) + goto cleanup; } } #endif @@ -1627,6 +1892,22 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, const cfg_listelt_t *element; isc_netaddr_t na, suffix, *sp; unsigned int prefixlen; + const char *server, *contact; + const cfg_obj_t *myobj; + + myobj = NULL; + result = ns_config_get(maps, "dns64-server", &myobj); + if (result == ISC_R_SUCCESS) + server = cfg_obj_asstring(myobj); + else + server = NULL; + + myobj = NULL; + result = ns_config_get(maps, "dns64-contact", &myobj); + if (result == ISC_R_SUCCESS) + contact = cfg_obj_asstring(myobj); + else + contact = NULL; for (element = cfg_list_first(obj); element != NULL; @@ -1694,6 +1975,10 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, goto cleanup; dns_dns64_append(&view->dns64, dns64); view->dns64cnt++; + result = dns64_reverse(view, mctx, &na, prefixlen, + server, contact); + if (result != ISC_R_SUCCESS) + goto cleanup; if (clients != NULL) dns_acl_detach(&clients); if (mapped != NULL) @@ -1711,7 +1996,13 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, obj = NULL; result = ns_config_get(maps, "dnssec-validation", &obj); INSIST(result == ISC_R_SUCCESS); - view->enablevalidation = cfg_obj_asboolean(obj); + if (cfg_obj_isboolean(obj)) { + view->enablevalidation = cfg_obj_asboolean(obj); + } else { + /* If dnssec-validation is not boolean, it must be "auto" */ + view->enablevalidation = ISC_TRUE; + auto_root = ISC_TRUE; + } obj = NULL; result = ns_config_get(maps, "max-cache-ttl", &obj); @@ -2014,7 +2305,23 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, ns_g_server->sessionkey)); } dns_view_setkeyring(view, ring); - ring = NULL; /* ownership transferred */ + dns_tsigkeyring_detach(&ring); + + /* + * See if we can re-use a dynamic key ring. + */ + result = dns_viewlist_find(&ns_g_server->viewlist, view->name, + view->rdclass, &pview); + if (result != ISC_R_NOTFOUND && result != ISC_R_SUCCESS) + goto cleanup; + if (pview != NULL) { + dns_view_getdynamickeyring(pview, &ring); + if (ring != NULL) + dns_view_setdynamickeyring(view, ring); + dns_tsigkeyring_detach(&ring); + dns_view_detach(&pview); + } else + dns_view_restorekeyring(view); /* * Configure the view's peer list. @@ -2333,24 +2640,6 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, dns_name_t *dlv; obj = cfg_listelt_value(element); -#if 0 - dns_fixedname_t fixed; - dns_name_t *name; - - /* - * When we support multiple dnssec-lookaside - * entries this is how to find the domain to be - * checked. XXXMPA - */ - dns_fixedname_init(&fixed); - name = dns_fixedname_name(&fixed); - str = cfg_obj_asstring(cfg_tuple_get(obj, - "domain")); - isc_buffer_init(&b, str, strlen(str)); - isc_buffer_add(&b, strlen(str)); - CHECK(dns_name_fromtext(name, &b, dns_rootname, - 0, NULL)); -#endif str = cfg_obj_asstring(cfg_tuple_get(obj, "trust-anchor")); isc_buffer_init(&b, str, strlen(str)); @@ -2368,7 +2657,7 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, * "security roots". */ CHECK(configure_view_dnsseckeys(view, vconfig, config, bindkeys, - auto_dlv, mctx)); + auto_dlv, auto_root, mctx)); dns_resolver_resetmustbesecure(view->resolver); obj = NULL; result = ns_config_get(maps, "dnssec-must-be-secure", &obj); @@ -2600,6 +2889,29 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, } } + /* + * Make the list of response policy zone names for views that + * are used for real lookups and so care about hints. + */ + zonelist = NULL; + if (view->rdclass == dns_rdataclass_in && need_hints) { + obj = NULL; + result = ns_config_get(maps, "response-policy", &obj); + if (result == ISC_R_SUCCESS) + cfg_map_get(obj, "zone", &zonelist); + } + if (zonelist != NULL) { + + for (element = cfg_list_first(zonelist); + element != NULL; + element = cfg_list_next(element)) { + result = configure_rpz(view, element); + if (result != ISC_R_SUCCESS) + goto cleanup; + dns_rpz_set_need(ISC_TRUE); + } + } + result = ISC_R_SUCCESS; cleanup: @@ -2610,7 +2922,7 @@ configure_view(dns_view_t *view, cfg_parser_t* parser, if (excluded != NULL) dns_acl_detach(&excluded); if (ring != NULL) - dns_tsigkeyring_destroy(&ring); + dns_tsigkeyring_detach(&ring); if (zone != NULL) dns_zone_detach(&zone); if (dispatch4 != NULL) @@ -6984,7 +7296,7 @@ ns_server_del_zone(ns_server_t *server, char *args) { /* Rewrite zone list */ result = isc_stdio_open(filename, "r", &ifp); if (ifp != NULL && result == ISC_R_SUCCESS) { - char *found = NULL, *p; + char *found = NULL, *p = NULL; size_t n; /* Create a temporary file */ diff --git a/bin/named/tkeyconf.c b/bin/named/tkeyconf.c index e11aaa22..66c2d7f4 100644 --- a/bin/named/tkeyconf.c +++ b/bin/named/tkeyconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: tkeyconf.c,v 1.31 2009/09/02 23:48:01 tbox Exp $ */ +/* $Id: tkeyconf.c,v 1.33 2010-12-20 23:47:20 tbox Exp $ */ /*! \file */ @@ -114,6 +114,18 @@ ns_tkeyctx_fromconfig(const cfg_obj_t *options, isc_mem_t *mctx, RETERR(dst_gssapi_acquirecred(name, ISC_FALSE, &tctx->gsscred)); } + obj = NULL; + result = cfg_map_get(options, "tkey-gssapi-keytab", &obj); + if (result == ISC_R_SUCCESS) { + s = cfg_obj_asstring(obj); + tctx->gssapi_keytab = isc_mem_strdup(mctx, s); + if (tctx->gssapi_keytab == NULL) { + result = ISC_R_NOMEMORY; + goto failure; + } + } + + *tctxp = tctx; return (ISC_R_SUCCESS); diff --git a/bin/named/tsigconf.c b/bin/named/tsigconf.c index 5e06b0f6..19e8d385 100644 --- a/bin/named/tsigconf.c +++ b/bin/named/tsigconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: tsigconf.c,v 1.33 2009/09/01 00:22:25 jinmei Exp $ */ +/* $Id: tsigconf.c,v 1.35 2011-01-11 23:47:12 tbox Exp $ */ /*! \file */ @@ -178,6 +178,6 @@ ns_tsigkeyring_fromconfig(const cfg_obj_t *config, const cfg_obj_t *vconfig, return (ISC_R_SUCCESS); failure: - dns_tsigkeyring_destroy(&ring); + dns_tsigkeyring_detach(&ring); return (result); } diff --git a/bin/named/update.c b/bin/named/update.c index 81247733..9735080a 100644 --- a/bin/named/update.c +++ b/bin/named/update.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: update.c,v 1.185 2010/12/09 06:17:33 marka Exp $ */ +/* $Id: update.c,v 1.186 2010-12-18 01:56:19 each Exp $ */ #include <config.h> @@ -46,6 +46,7 @@ #include <dns/rdatatype.h> #include <dns/soa.h> #include <dns/ssu.h> +#include <dns/tsig.h> #include <dns/view.h> #include <dns/zone.h> #include <dns/zt.h> @@ -851,6 +852,9 @@ typedef struct { /* The ssu table to check against. */ dns_ssutable_t *table; + + /* the key used for TKEY requests */ + dst_key_t *key; } ssu_check_t; static isc_result_t @@ -867,14 +871,14 @@ ssu_checkrule(void *data, dns_rdataset_t *rrset) { return (ISC_R_SUCCESS); result = dns_ssutable_checkrules(ssuinfo->table, ssuinfo->signer, ssuinfo->name, ssuinfo->tcpaddr, - rrset->type); + rrset->type, ssuinfo->key); return (result == ISC_TRUE ? ISC_R_SUCCESS : ISC_R_FAILURE); } static isc_boolean_t ssu_checkall(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_ssutable_t *ssutable, dns_name_t *signer, - isc_netaddr_t *tcpaddr) + isc_netaddr_t *tcpaddr, dst_key_t *key) { isc_result_t result; ssu_check_t ssuinfo; @@ -883,6 +887,7 @@ ssu_checkall(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, ssuinfo.table = ssutable; ssuinfo.signer = signer; ssuinfo.tcpaddr = tcpaddr; + ssuinfo.key = key; result = foreach_rrset(db, ver, name, ssu_checkrule, &ssuinfo); return (ISC_TF(result == ISC_R_SUCCESS)); } @@ -2719,6 +2724,7 @@ ns_update_start(ns_client_t *client, isc_result_t sigresult) { switch(dns_zone_gettype(zone)) { case dns_zone_master: + case dns_zone_dlz: /* * We can now fail due to a bad signature as we now know * that we are the master. @@ -3744,6 +3750,7 @@ update_action(isc_task_t *task, isc_event_t *event) { if (ssutable != NULL) { isc_netaddr_t *tcpaddr, netaddr; + dst_key_t *tsigkey = NULL; /* * If this is a TCP connection then pass the * address of the client through for tcp-self @@ -3756,16 +3763,22 @@ update_action(isc_task_t *task, isc_event_t *event) { tcpaddr = &netaddr; } else tcpaddr = NULL; + + if (client->message->tsigkey != NULL) + tsigkey = client->message->tsigkey->key; + if (rdata.type != dns_rdatatype_any) { if (!dns_ssutable_checkrules(ssutable, client->signer, name, tcpaddr, - rdata.type)) + rdata.type, + tsigkey)) FAILC(DNS_R_REFUSED, "rejected by secure update"); } else { if (!ssu_checkall(db, ver, name, ssutable, - client->signer, tcpaddr)) + client->signer, tcpaddr, + tsigkey)) FAILC(DNS_R_REFUSED, "rejected by secure update"); } diff --git a/bin/named/win32/named.dsp b/bin/named/win32/named.dsp index 927cfed2..77976d70 100644 --- a/bin/named/win32/named.dsp +++ b/bin/named/win32/named.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /I "../../../lib/bind9/include" /D "WIN32" /D "NDEBUG" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../../openssl-0.9.8l/inc32" /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /I "../../../lib/bind9/include" /D "OPENSSL" /D "WIN32" /D "NDEBUG" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -67,7 +67,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /I "../../../lib/bind9/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "i386" /FR /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../openssl-0.9.8l/inc32" /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /I "../../../lib/bind9/include" /D "OPENSSL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "i386" /FR /FD /GZ /c
# SUBTRACT CPP /X /YX
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
diff --git a/bin/named/win32/named.mak b/bin/named/win32/named.mak index d73bf866..105114ab 100644 --- a/bin/named/win32/named.mak +++ b/bin/named/win32/named.mak @@ -162,7 +162,7 @@ CLEAN : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /I "../../../lib/bind9/include" /D "WIN32" /D "NDEBUG" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\named.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../../openssl-0.9.8l/inc32" /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /I "../../../lib/bind9/include" /D "OPENSSL" /D "WIN32" /D "NDEBUG" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\named.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\named.bsc"
BSC32_SBRS= \
@@ -311,7 +311,7 @@ CLEAN : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /I "../../../lib/bind9/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "i386" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../openssl-0.9.8l/inc32" /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "../win32/include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isccc/include" /I "../../../lib/lwres/win32/include" /I "../../../lib/lwres/include" /I "../../../lib/isccfg/include" /I "../../../lib/bind9/include" /D "OPENSSL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "i386" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\named.bsc"
BSC32_SBRS= \
diff --git a/bin/named/win32/ntservice.c b/bin/named/win32/ntservice.c index 0abd3021..69d4d4f0 100644 --- a/bin/named/win32/ntservice.c +++ b/bin/named/win32/ntservice.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006, 2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: ntservice.c,v 1.14 2009/06/23 23:47:44 tbox Exp $ */ +/* $Id: ntservice.c,v 1.16 2011-01-13 08:50:29 tbox Exp $ */ #include <config.h> #include <stdio.h> @@ -70,7 +70,8 @@ int bindmain() while (argv[i]) { if (!strcmp(argv[i], "-f") || !strcmp(argv[i], "-g") || - !strcmp(argv[i], "-v")) { + !strcmp(argv[i], "-v") || + !strcmp(argv[i], "-V")) { foreground = TRUE; break; } diff --git a/bin/named/xfrout.c b/bin/named/xfrout.c index bfce03a4..b036ed14 100644 --- a/bin/named/xfrout.c +++ b/bin/named/xfrout.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: xfrout.c,v 1.138 2010/05/27 23:51:08 tbox Exp $ */ +/* $Id: xfrout.c,v 1.139 2010-12-18 01:56:19 each Exp $ */ #include <config.h> @@ -863,6 +863,7 @@ ns_xfr_start(ns_client_t *client, dns_rdatatype_t reqtype) { switch(dns_zone_gettype(zone)) { case dns_zone_master: case dns_zone_slave: + case dns_zone_dlz: break; /* Master and slave zones are OK for transfer. */ default: FAILQ(DNS_R_NOTAUTH, "non-authoritative zone", question_name, question_class); diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index 090376cd..eb93f1bb 100644 --- a/bin/named/zoneconf.c +++ b/bin/named/zoneconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zoneconf.c,v 1.165 2010/09/15 03:32:34 marka Exp $ */ +/* $Id: zoneconf.c,v 1.170 2011-01-06 23:47:00 tbox Exp $ */ /*% */ @@ -30,10 +30,16 @@ #include <isc/util.h> #include <dns/acl.h> +#include <dns/db.h> #include <dns/fixedname.h> #include <dns/log.h> #include <dns/name.h> +#include <dns/rdata.h> #include <dns/rdatatype.h> +#include <dns/rdataset.h> +#include <dns/rdatalist.h> +#include <dns/result.h> +#include <dns/sdlz.h> #include <dns/ssu.h> #include <dns/stats.h> #include <dns/view.h> @@ -256,7 +262,9 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone, else if (strcasecmp(str, "zonesub") == 0) { mtype = DNS_SSUMATCHTYPE_SUBDOMAIN; usezone = ISC_TRUE; - } else + } else if (strcasecmp(str, "external") == 0) + mtype = DNS_SSUMATCHTYPE_EXTERNAL; + else INSIST(0); dns_fixedname_init(&fident); @@ -380,6 +388,323 @@ configure_zone_ssutable(const cfg_obj_t *zconfig, dns_zone_t *zone, return (result); } +/* + * This is the TTL used for internally generated RRsets for static-stub zones. + * The value doesn't matter because the mapping is static, but needs to be + * defined for the sake of implementation. + */ +#define STATICSTUB_SERVER_TTL 86400 + +/*% + * Configure an apex NS with glues for a static-stub zone. + * For example, for the zone named "example.com", the following RRs will be + * added to the zone DB: + * example.com. NS example.com. + * example.com. A 192.0.2.1 + * example.com. AAAA 2001:db8::1 + */ +static isc_result_t +configure_staticstub_serveraddrs(const cfg_obj_t *zconfig, dns_zone_t *zone, + dns_rdatalist_t *rdatalist_ns, + dns_rdatalist_t *rdatalist_a, + dns_rdatalist_t *rdatalist_aaaa) +{ + const cfg_listelt_t *element; + isc_mem_t *mctx = dns_zone_getmctx(zone); + isc_region_t region, sregion; + dns_rdata_t *rdata; + isc_result_t result = ISC_R_SUCCESS; + + for (element = cfg_list_first(zconfig); + element != NULL; + element = cfg_list_next(element)) + { + const isc_sockaddr_t* sa; + isc_netaddr_t na; + const cfg_obj_t *address = cfg_listelt_value(element); + dns_rdatalist_t *rdatalist; + + sa = cfg_obj_assockaddr(address); + if (isc_sockaddr_getport(sa) != 0) { + cfg_obj_log(zconfig, ns_g_lctx, ISC_LOG_ERROR, + "port is not configurable for " + "static stub server-addresses"); + return (ISC_R_FAILURE); + } + isc_netaddr_fromsockaddr(&na, sa); + if (isc_netaddr_getzone(&na) != 0) { + cfg_obj_log(zconfig, ns_g_lctx, ISC_LOG_ERROR, + "scoped address is not allowed " + "for static stub " + "server-addresses"); + return (ISC_R_FAILURE); + } + + switch (na.family) { + case AF_INET: + region.length = sizeof(na.type.in); + rdatalist = rdatalist_a; + break; + default: + INSIST(na.family == AF_INET6); + region.length = sizeof(na.type.in6); + rdatalist = rdatalist_aaaa; + break; + } + + rdata = isc_mem_get(mctx, sizeof(*rdata) + region.length); + if (rdata == NULL) + return (ISC_R_NOMEMORY); + region.base = (unsigned char *)(rdata + 1); + memcpy(region.base, &na.type, region.length); + dns_rdata_init(rdata); + dns_rdata_fromregion(rdata, dns_zone_getclass(zone), + rdatalist->type, ®ion); + ISC_LIST_APPEND(rdatalist->rdata, rdata, link); + } + + /* + * If no address is specified (unlikely in this context, but possible), + * there's nothing to do anymore. + */ + if (ISC_LIST_EMPTY(rdatalist_a->rdata) && + ISC_LIST_EMPTY(rdatalist_aaaa->rdata)) { + return (ISC_R_SUCCESS); + } + + /* Add to the list an apex NS with the ns name being the origin name */ + dns_name_toregion(dns_zone_getorigin(zone), &sregion); + rdata = isc_mem_get(mctx, sizeof(*rdata) + sregion.length); + if (rdata == NULL) { + /* + * Already allocated data will be freed in the caller, so + * we can simply return here. + */ + return (ISC_R_NOMEMORY); + } + region.length = sregion.length; + region.base = (unsigned char *)(rdata + 1); + memcpy(region.base, sregion.base, region.length); + dns_rdata_init(rdata); + dns_rdata_fromregion(rdata, dns_zone_getclass(zone), + dns_rdatatype_ns, ®ion); + ISC_LIST_APPEND(rdatalist_ns->rdata, rdata, link); + + return (result); +} + +/*% + * Configure an apex NS with an out-of-zone NS names for a static-stub zone. + * For example, for the zone named "example.com", something like the following + * RRs will be added to the zone DB: + * example.com. NS ns.example.net. + */ +static isc_result_t +configure_staticstub_servernames(const cfg_obj_t *zconfig, dns_zone_t *zone, + dns_rdatalist_t *rdatalist, const char *zname) +{ + const cfg_listelt_t *element; + isc_mem_t *mctx = dns_zone_getmctx(zone); + dns_rdata_t *rdata; + isc_region_t sregion, region; + isc_result_t result = ISC_R_SUCCESS; + + for (element = cfg_list_first(zconfig); + element != NULL; + element = cfg_list_next(element)) + { + const cfg_obj_t *obj; + const char *str; + dns_fixedname_t fixed_name; + dns_name_t *nsname; + isc_buffer_t b; + + obj = cfg_listelt_value(element); + str = cfg_obj_asstring(obj); + + dns_fixedname_init(&fixed_name); + nsname = dns_fixedname_name(&fixed_name); + + isc_buffer_init(&b, str, strlen(str)); + isc_buffer_add(&b, strlen(str)); + result = dns_name_fromtext(nsname, &b, dns_rootname, 0, NULL); + if (result != ISC_R_SUCCESS) { + cfg_obj_log(zconfig, ns_g_lctx, ISC_LOG_ERROR, + "server-name '%s' is not a valid " + "name", str); + return (result); + } + if (dns_name_issubdomain(nsname, dns_zone_getorigin(zone))) { + cfg_obj_log(zconfig, ns_g_lctx, ISC_LOG_ERROR, + "server-name '%s' must not be a " + "subdomain of zone name '%s'", + str, zname); + return (ISC_R_FAILURE); + } + + dns_name_toregion(nsname, &sregion); + rdata = isc_mem_get(mctx, sizeof(*rdata) + sregion.length); + if (rdata == NULL) + return (ISC_R_NOMEMORY); + region.length = sregion.length; + region.base = (unsigned char *)(rdata + 1); + memcpy(region.base, sregion.base, region.length); + dns_rdata_init(rdata); + dns_rdata_fromregion(rdata, dns_zone_getclass(zone), + dns_rdatatype_ns, ®ion); + ISC_LIST_APPEND(rdatalist->rdata, rdata, link); + } + + return (result); +} + +/*% + * Configure static-stub zone. + */ +static isc_result_t +configure_staticstub(const cfg_obj_t *zconfig, dns_zone_t *zone, + const char *zname, const char *dbtype) +{ + int i = 0; + const cfg_obj_t *obj; + isc_mem_t *mctx = dns_zone_getmctx(zone); + dns_db_t *db = NULL; + dns_dbversion_t *dbversion = NULL; + dns_dbnode_t *apexnode = NULL; + dns_name_t apexname; + isc_result_t result; + dns_rdataset_t rdataset; + dns_rdatalist_t rdatalist_ns, rdatalist_a, rdatalist_aaaa; + dns_rdatalist_t* rdatalists[] = { + &rdatalist_ns, &rdatalist_a, &rdatalist_aaaa, NULL + }; + dns_rdata_t *rdata; + isc_region_t region; + + /* Create the DB beforehand */ + RETERR(dns_db_create(mctx, dbtype, dns_zone_getorigin(zone), + dns_dbtype_stub, dns_zone_getclass(zone), + 0, NULL, &db)); + dns_zone_setdb(zone, db); + + dns_rdatalist_init(&rdatalist_ns); + rdatalist_ns.rdclass = dns_zone_getclass(zone); + rdatalist_ns.type = dns_rdatatype_ns; + rdatalist_ns.ttl = STATICSTUB_SERVER_TTL; + + dns_rdatalist_init(&rdatalist_a); + rdatalist_a.rdclass = dns_zone_getclass(zone); + rdatalist_a.type = dns_rdatatype_a; + rdatalist_a.ttl = STATICSTUB_SERVER_TTL; + + dns_rdatalist_init(&rdatalist_aaaa); + rdatalist_aaaa.rdclass = dns_zone_getclass(zone); + rdatalist_aaaa.type = dns_rdatatype_aaaa; + rdatalist_aaaa.ttl = STATICSTUB_SERVER_TTL; + + /* Prepare zone RRs from the configuration */ + obj = NULL; + result = cfg_map_get(zconfig, "server-addresses", &obj); + if (obj != NULL) { + result = configure_staticstub_serveraddrs(obj, zone, + &rdatalist_ns, + &rdatalist_a, + &rdatalist_aaaa); + if (result != ISC_R_SUCCESS) + goto cleanup; + } + + obj = NULL; + result = cfg_map_get(zconfig, "server-names", &obj); + if (obj != NULL) { + result = configure_staticstub_servernames(obj, zone, + &rdatalist_ns, + zname); + if (result != ISC_R_SUCCESS) + goto cleanup; + } + + /* + * Sanity check: there should be at least one NS RR at the zone apex + * to trigger delegation. + */ + if (ISC_LIST_EMPTY(rdatalist_ns.rdata)) { + isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, + NS_LOGMODULE_SERVER, ISC_LOG_ERROR, + "No NS record is configured for a " + "static-stub zone '%s'", zname); + result = ISC_R_FAILURE; + goto cleanup; + } + + /* + * Now add NS and glue A/AAAA RRsets to the zone DB. + * First open a new version for the add operation and get a pointer + * to the apex node (all RRs are of the apex name). + */ + result = dns_db_newversion(db, &dbversion); + if (result != ISC_R_SUCCESS) + goto cleanup; + dns_name_init(&apexname, NULL); + dns_name_clone(dns_zone_getorigin(zone), &apexname); + result = dns_db_findnode(db, &apexname, ISC_FALSE, &apexnode); + if (result != ISC_R_SUCCESS) + goto cleanup; + + /* Add NS RRset */ + dns_rdataset_init(&rdataset); + RUNTIME_CHECK(dns_rdatalist_tordataset(&rdatalist_ns, &rdataset) + == ISC_R_SUCCESS); + result = dns_db_addrdataset(db, apexnode, dbversion, 0, &rdataset, + 0, NULL); + dns_rdataset_disassociate(&rdataset); + if (result != ISC_R_SUCCESS) + goto cleanup; + + /* Add glue A RRset, if any */ + if (!ISC_LIST_EMPTY(rdatalist_a.rdata)) { + RUNTIME_CHECK(dns_rdatalist_tordataset(&rdatalist_a, &rdataset) + == ISC_R_SUCCESS); + result = dns_db_addrdataset(db, apexnode, dbversion, 0, + &rdataset, 0, NULL); + dns_rdataset_disassociate(&rdataset); + if (result != ISC_R_SUCCESS) + goto cleanup; + } + + /* Add glue AAAA RRset, if any */ + if (!ISC_LIST_EMPTY(rdatalist_aaaa.rdata)) { + RUNTIME_CHECK(dns_rdatalist_tordataset(&rdatalist_aaaa, + &rdataset) + == ISC_R_SUCCESS); + result = dns_db_addrdataset(db, apexnode, dbversion, 0, + &rdataset, 0, NULL); + dns_rdataset_disassociate(&rdataset); + if (result != ISC_R_SUCCESS) + goto cleanup; + } + + result = ISC_R_SUCCESS; + + cleanup: + if (apexnode != NULL) + dns_db_detachnode(db, &apexnode); + if (dbversion != NULL) + dns_db_closeversion(db, &dbversion, ISC_TRUE); + if (db != NULL) + dns_db_detach(&db); + for (i = 0; rdatalists[i] != NULL; i++) { + while ((rdata = ISC_LIST_HEAD(rdatalists[i]->rdata)) != NULL) { + ISC_LIST_UNLINK(rdatalists[i]->rdata, rdata, link); + dns_rdata_toregion(rdata, ®ion); + isc_mem_put(mctx, rdata, + sizeof(*rdata) + region.length); + } + } + + return (result); +} + /*% * Convert a config file zone type into a server zone type. */ @@ -648,7 +973,7 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig, * to primary masters (type "master") and slaves * acting as masters (type "slave"), but not to stubs. */ - if (ztype != dns_zone_stub) { + if (ztype != dns_zone_stub && ztype != dns_zone_staticstub) { obj = NULL; result = ns_config_get(maps, "notify", &obj); INSIST(result == ISC_R_SUCCESS); @@ -1095,6 +1420,11 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig, cfg_obj_asboolean(obj)); break; + case dns_zone_staticstub: + RETERR(configure_staticstub(zoptions, zone, zname, + default_dbtype)); + break; + default: break; } @@ -1102,6 +1432,31 @@ ns_zone_configure(const cfg_obj_t *config, const cfg_obj_t *vconfig, return (ISC_R_SUCCESS); } + +#ifdef DLZ +/* + * Set up a DLZ zone as writeable + */ +isc_result_t +ns_zone_configure_writeable_dlz(dns_dlzdb_t *dlzdatabase, dns_zone_t *zone, + dns_rdataclass_t rdclass, dns_name_t *name) +{ + dns_db_t *db = NULL; + isc_time_t now; + isc_result_t result; + + TIME_NOW(&now); + + dns_zone_settype(zone, dns_zone_dlz); + result = dns_sdlz_setdb(dlzdatabase, rdclass, name, &db); + if (result != ISC_R_SUCCESS) + return result; + result = dns_zone_dlzpostload(zone, db); + dns_db_detach(&db); + return result; +} +#endif + isc_boolean_t ns_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) { const cfg_obj_t *zoptions = NULL; @@ -1114,6 +1469,13 @@ ns_zone_reusable(dns_zone_t *zone, const cfg_obj_t *zconfig) { if (zonetype_fromconfig(zoptions) != dns_zone_gettype(zone)) return (ISC_FALSE); + /* + * We always reconfigure a static-stub zone for simplicity, assuming + * the amount of data to be loaded is small. + */ + if (zonetype_fromconfig(zoptions) == dns_zone_staticstub) + return (ISC_FALSE); + obj = NULL; (void)cfg_map_get(zoptions, "file", &obj); if (obj != NULL) diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index 25d1a212..9bbea4bc 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: nsupdate.c,v 1.186 2010/12/09 04:31:57 tbox Exp $ */ +/* $Id: nsupdate.c,v 1.193 2011-01-10 05:32:03 marka Exp $ */ /*! \file */ @@ -81,6 +81,7 @@ #ifdef GSSAPI #include <dst/gssapi.h> +#include ISC_PLATFORM_KRB5HEADER #endif #include <bind9/getaddresses.h> @@ -415,7 +416,7 @@ reset_system(void) { if (tsigkey != NULL) dns_tsigkey_detach(&tsigkey); if (gssring != NULL) - dns_tsigkeyring_destroy(&gssring); + dns_tsigkeyring_detach(&gssring); tried_other_gsstsig = ISC_FALSE; } } @@ -2431,9 +2432,60 @@ sendrequest(isc_sockaddr_t *srcaddr, isc_sockaddr_t *destaddr, } #ifdef GSSAPI + +/* + * Get the realm from the users kerberos ticket if possible + */ static void -start_gssrequest(dns_name_t *master) +get_ticket_realm(isc_mem_t *mctx) { + krb5_context ctx; + krb5_error_code rc; + krb5_ccache ccache; + krb5_principal princ; + char *name, *ticket_realm; + + rc = krb5_init_context(&ctx); + if (rc != 0) + return; + + rc = krb5_cc_default(ctx, &ccache); + if (rc != 0) { + krb5_free_context(ctx); + return; + } + + rc = krb5_cc_get_principal(ctx, ccache, &princ); + if (rc != 0) { + krb5_cc_close(ctx, ccache); + krb5_free_context(ctx); + return; + } + + rc = krb5_unparse_name(ctx, princ, &name); + if (rc != 0) { + krb5_free_principal(ctx, princ); + krb5_cc_close(ctx, ccache); + krb5_free_context(ctx); + return; + } + + ticket_realm = strrchr(name, '@'); + if (ticket_realm != NULL) { + realm = isc_mem_strdup(mctx, ticket_realm); + } + + free(name); + krb5_free_principal(ctx, princ); + krb5_cc_close(ctx, ccache); + krb5_free_context(ctx); + if (realm != NULL && debugging) + fprintf(stderr, "Found realm from ticket: %s\n", realm+1); +} + + +static void +start_gssrequest(dns_name_t *master) { gss_ctx_id_t context; isc_buffer_t buf; isc_result_t result; @@ -2444,12 +2496,13 @@ start_gssrequest(dns_name_t *master) dns_fixedname_t fname; char namestr[DNS_NAME_FORMATSIZE]; char keystr[DNS_NAME_FORMATSIZE]; + char *err_message = NULL; debug("start_gssrequest"); usevc = ISC_TRUE; if (gssring != NULL) - dns_tsigkeyring_destroy(&gssring); + dns_tsigkeyring_detach(&gssring); gssring = NULL; result = dns_tsigkeyring_create(mctx, &gssring); @@ -2471,6 +2524,9 @@ start_gssrequest(dns_name_t *master) dns_fixedname_init(&fname); servname = dns_fixedname_name(&fname); + if (realm == NULL) + get_ticket_realm(mctx); + result = isc_string_printf(servicename, sizeof(servicename), "DNS/%s%s", namestr, realm ? realm : ""); if (result != ISC_R_SUCCESS) @@ -2512,9 +2568,11 @@ start_gssrequest(dns_name_t *master) /* Build first request. */ context = GSS_C_NO_CONTEXT; result = dns_tkey_buildgssquery(rmsg, keyname, servname, NULL, 0, - &context, use_win2k_gsstsig); + &context, use_win2k_gsstsig, + mctx, &err_message); if (result == ISC_R_FAILURE) - fatal("Check your Kerberos ticket, it may have expired."); + fatal("tkey query failed: %s", + err_message != NULL ? err_message : "unknown error"); if (result != ISC_R_SUCCESS) fatal("dns_tkey_buildgssquery failed: %s", isc_result_totext(result)); @@ -2563,6 +2621,7 @@ recvgss(isc_task_t *task, isc_event_t *event) { isc_buffer_t buf; dns_name_t *servname; dns_fixedname_t fname; + char *err_message = NULL; UNUSED(task); @@ -2651,7 +2710,8 @@ recvgss(isc_task_t *task, isc_event_t *event) { tsigkey = NULL; result = dns_tkey_gssnegotiate(tsigquery, rcvmsg, servname, &context, &tsigkey, gssring, - use_win2k_gsstsig); + use_win2k_gsstsig, + &err_message); switch (result) { case DNS_R_CONTINUE: @@ -2694,7 +2754,9 @@ recvgss(isc_task_t *task, isc_event_t *event) { break; default: - fatal("dns_tkey_negotiategss: %s", isc_result_totext(result)); + fatal("dns_tkey_negotiategss: %s %s", + isc_result_totext(result), + err_message != NULL ? err_message : ""); } done: @@ -2804,8 +2866,8 @@ cleanup(void) { dns_tsigkey_detach(&tsigkey); } if (gssring != NULL) { - ddebug("Destroying GSS-TSIG keyring"); - dns_tsigkeyring_destroy(&gssring); + ddebug("Detaching GSS-TSIG keyring"); + dns_tsigkeyring_detach(&gssring); } if (kserver != NULL) { isc_mem_put(mctx, kserver, sizeof(isc_sockaddr_t)); diff --git a/bin/rndc/rndc.c b/bin/rndc/rndc.c index 6a23caa9..229121b8 100644 --- a/bin/rndc/rndc.c +++ b/bin/rndc/rndc.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rndc.c,v 1.130 2010/07/11 00:12:57 each Exp $ */ +/* $Id: rndc.c,v 1.131 2010-12-10 19:20:47 johnd Exp $ */ /*! \file */ @@ -119,6 +119,8 @@ command is one of the following:\n\ reconfig Reload configuration file and new zones only.\n\ sign zone [class [view]]\n\ Update zone keys, and sign as needed.\n\ + loadkeys zone [class [view]]\n\ + Update keys without signing immediately.\n\ stats Write server statistics to the statistics file.\n\ querylog Toggle query logging.\n\ dumpdb [-all|-cache|-zones] [view ...]\n\ diff --git a/bin/tests/Makefile.in b/bin/tests/Makefile.in index a6470de2..680a54db 100644 --- a/bin/tests/Makefile.in +++ b/bin/tests/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -13,7 +13,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.142 2010/09/29 04:00:15 marka Exp $ +# $Id: Makefile.in,v 1.144 2011-01-11 23:47:12 tbox Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -41,7 +41,7 @@ LWRESDEPLIBS = ../../lib/lwres/liblwres.@A@ LIBS = @LIBS@ -SUBDIRS = db dst master mem hashes names net rbt sockaddr tasks timers system +SUBDIRS = atomic db dst master mem hashes names net rbt sockaddr tasks timers system # Test programs that are built by default: # cfg_test is needed for regenerating doc/misc/options diff --git a/bin/tests/atomic/Makefile.in b/bin/tests/atomic/Makefile.in new file mode 100644 index 00000000..64fd393b --- /dev/null +++ b/bin/tests/atomic/Makefile.in @@ -0,0 +1,57 @@ +# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: Makefile.in,v 1.2 2011-01-11 23:47:12 tbox Exp $ + +srcdir = @srcdir@ +VPATH = @srcdir@ +top_srcdir = @top_srcdir@ + +@BIND9_MAKE_INCLUDES@ + +CINCLUDES = ${TEST_INCLUDES} ${DNS_INCLUDES} ${ISC_INCLUDES} + +CDEFINES = +CWARNINGS = + +# Note that we do not want to use libtool for libt_api +DNSLIBS = ../../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@ +ISCLIBS = ../../../lib/isc/libisc.@A@ + +DNSDEPLIBS = ../../../lib/dns/libdns.@A@ +ISCDEPLIBS = ../../../lib/isc/libisc.@A@ + +DEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS} + +LIBS = ${DNSLIBS} ${ISCLIBS} @LIBS@ + +TLIB = ../../../lib/tests/libt_api.@A@ + +TARGETS = t_atomic@EXEEXT@ + +SRCS = t_atomic.c + +@BIND9_MAKE_RULES@ + +t_atomic@EXEEXT@: t_atomic.@O@ ${DEPLIBS} ${TLIB} + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ t_atomic.@O@ ${TLIB} ${LIBS} + +test: t_atomic@EXEEXT@ + -@./t_atomic@EXEEXT@ -c @top_srcdir@/t_config -b @srcdir@ -a + +testhelp: + @./t_atomic@EXEEXT@ -h + +clean distclean:: + rm -f ${TARGETS} diff --git a/bin/tests/atomic/t_atomic.c b/bin/tests/atomic/t_atomic.c new file mode 100644 index 00000000..05fd1224 --- /dev/null +++ b/bin/tests/atomic/t_atomic.c @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: t_atomic.c,v 1.2 2011-01-11 23:47:12 tbox Exp $ */ + +#include <config.h> + +#include <ctype.h> +#include <stdlib.h> + +#include <isc/atomic.h> +#include <isc/mem.h> +#include <isc/util.h> +#include <isc/string.h> +#include <isc/print.h> +#include <isc/event.h> +#include <isc/task.h> + +#include <tests/t_api.h> + +char *progname; + +#define CHECK(x) RUNTIME_CHECK(ISC_R_SUCCESS == (x)) + +isc_mem_t *mctx = NULL; +isc_taskmgr_t *task_manager = NULL; + +#if defined(ISC_PLATFORM_HAVEXADD) || defined(ISC_PLATFORM_HAVEXADDQ) +static void +setup(void) { + /* 1 */ CHECK(isc_mem_create(0, 0, &mctx)); + /* 2 */ CHECK(isc_taskmgr_create(mctx, 32, 0, &task_manager)); +} + +static void +teardown(void) { + /* 2 */ isc_taskmgr_destroy(&task_manager); + /* 1 */ isc_mem_destroy(&mctx); +} +#endif + +#define TASKS 32 +#define ITERATIONS 10000 +#define COUNTS_PER_ITERATION 1000 +#define INCREMENT_64 (isc_int64_t)0x0000000010000000 +#define EXPECTED_COUNT_32 (TASKS * ITERATIONS * COUNTS_PER_ITERATION) +#define EXPECTED_COUNT_64 (TASKS * ITERATIONS * COUNTS_PER_ITERATION * INCREMENT_64) + +typedef struct { + isc_uint32_t iteration; +} counter_t; + +counter_t counters[TASKS]; + +void do_xaddq(isc_task_t *task, isc_event_t *ev); + +#if defined(ISC_PLATFORM_HAVEXADD) +isc_int32_t counter_32; + +void do_xadd(isc_task_t *task, isc_event_t *ev); + +void +do_xadd(isc_task_t *task, isc_event_t *ev) { + counter_t *state = (counter_t *)ev->ev_arg; + int i; + + for (i = 0 ; i < COUNTS_PER_ITERATION ; i++) { + isc_atomic_xadd(&counter_32, 1); + } + + state->iteration++; + if (state->iteration < ITERATIONS) { + isc_task_send(task, &ev); + } else { + isc_event_free(&ev); + } +} + +static void +test_atomic_xadd() { + int test_result; + isc_task_t *tasks[TASKS]; + isc_event_t *event; + int i; + + t_assert("test_atomic_xadd", 1, T_REQUIRED, "%s", + "ensure that isc_atomic_xadd() works."); + + setup(); + + memset(counters, 0, sizeof(counters)); + counter_32 = 0; + + /* + * Create our tasks, and allocate an event to get the counters going. + */ + for (i = 0 ; i < TASKS ; i++) { + tasks[i] = NULL; + CHECK(isc_task_create(task_manager, 0, &tasks[i])); + event = isc_event_allocate(mctx, NULL, 1000, do_xadd, + &counters[i], sizeof(struct isc_event)); + isc_task_sendanddetach(&tasks[i], &event); + } + + teardown(); + + test_result = T_PASS; + t_info("32-bit counter %d, expected %d\n", counter_32, EXPECTED_COUNT_32); + if (counter_32 != EXPECTED_COUNT_32) + test_result = T_FAIL; + t_result(test_result); + + counter_32 = 0; +} +#endif + +#if defined(ISC_PLATFORM_HAVEXADDQ) +isc_int64_t counter_64; + +void do_xaddq(isc_task_t *task, isc_event_t *ev); + +void +do_xaddq(isc_task_t *task, isc_event_t *ev) { + counter_t *state = (counter_t *)ev->ev_arg; + int i; + + for (i = 0 ; i < COUNTS_PER_ITERATION ; i++) { + isc_atomic_xaddq(&counter_64, INCREMENT_64); + } + + state->iteration++; + if (state->iteration < ITERATIONS) { + isc_task_send(task, &ev); + } else { + isc_event_free(&ev); + } +} + +static void +test_atomic_xaddq() { + int test_result; + isc_task_t *tasks[TASKS]; + isc_event_t *event; + int i; + + t_assert("test_atomic_xaddq", 1, T_REQUIRED, "%s", + "ensure that isc_atomic_xaddq() works."); + + setup(); + + memset(counters, 0, sizeof(counters)); + counter_64 = 0; + + /* + * Create our tasks, and allocate an event to get the counters going. + */ + for (i = 0 ; i < TASKS ; i++) { + tasks[i] = NULL; + CHECK(isc_task_create(task_manager, 0, &tasks[i])); + event = isc_event_allocate(mctx, NULL, 1000, do_xaddq, + &counters[i], sizeof(struct isc_event)); + isc_task_sendanddetach(&tasks[i], &event); + } + + teardown(); + + test_result = T_PASS; + t_info("64-bit counter %"ISC_PRINT_QUADFORMAT"d, expected %"ISC_PRINT_QUADFORMAT"d\n", + counter_64, EXPECTED_COUNT_64); + if (counter_64 != EXPECTED_COUNT_64) + test_result = T_FAIL; + t_result(test_result); + + counter_64 = 0; +} +#endif + + +testspec_t T_testlist[] = { +#if defined(ISC_PLATFORM_HAVEXADD) + { test_atomic_xadd, "test_atomic_xadd" }, +#endif +#if defined(ISC_PLATFORM_HAVEXADDQ) + { test_atomic_xaddq, "test_atomic_xaddq" }, +#endif + { NULL, NULL } +}; + diff --git a/bin/tests/dst/Makefile.in b/bin/tests/dst/Makefile.in index 7eb069ec..723af3e3 100644 --- a/bin/tests/dst/Makefile.in +++ b/bin/tests/dst/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004, 2006-2009 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2006-2010 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1999-2002 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -13,7 +13,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.50 2009/12/05 23:31:40 each Exp $ +# $Id: Makefile.in,v 1.52 2010-12-24 23:47:05 tbox Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -24,7 +24,7 @@ top_srcdir = @top_srcdir@ CINCLUDES = ${TEST_INCLUDES} ${DNS_INCLUDES} \ ${ISC_INCLUDES} @DST_GSSAPI_INC@ -CDEFINES = +CDEFINES = @USE_GSSAPI@ CWARNINGS = DNSLIBS = ../../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@ diff --git a/bin/tests/dst/gsstest.c b/bin/tests/dst/gsstest.c index 6c314d22..53b71283 100755 --- a/bin/tests/dst/gsstest.c +++ b/bin/tests/dst/gsstest.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2006, 2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: gsstest.c,v 1.8 2009/09/02 23:48:01 tbox Exp $ */ +/* $Id: gsstest.c,v 1.14 2011-01-08 01:26:01 each Exp $ */ #include <config.h> @@ -97,15 +97,17 @@ static void console(isc_task_t *task, isc_event_t *event) { char buf[32]; + int c; + isc_event_t *ev = NULL; isc_event_free(&event); while(1) { printf("\nCommand => "); - scanf("%s", buf); + c = scanf("%s", buf); - if(strcmp(buf, "quit") == 0) { + if(c == EOF || strcmp(buf, "quit") == 0) { isc_app_shutdown(); return; } @@ -200,13 +202,15 @@ sendquery(isc_task_t *task, isc_event_t *event) isc_buffer_t buf; isc_buffer_t outbuf; char output[10 * 1024]; - static char host[256]; + int c; isc_event_free(&event); printf("Query => "); - scanf("%s", host); + c = scanf("%s", host); + if (c == EOF) + return; dns_fixedname_init(&queryname); isc_buffer_init(&buf, host, strlen(host)); @@ -304,7 +308,7 @@ initctx2(isc_task_t *task, isc_event_t *event) { result = dns_tkey_processgssresponse(query, response, dns_fixedname_name(&gssname), &gssctx, &outtoken, - &tsigkey, ring); + &tsigkey, ring, NULL); gssctx = *gssctxp; CHECK("dns_tkey_processgssresponse", result); printf("Context accepted\n"); @@ -348,18 +352,21 @@ initctx1(isc_task_t *task, isc_event_t *event) { isc_buffer_t buf; dns_message_t *query; dns_request_t *request; + int c; isc_event_free(&event); printf("Initctx - GSS name => "); - scanf("%s", gssid); + c = scanf("%s", gssid); + if (c == EOF) + return; sprintf(contextname, "gsstest.context.%d.", (int)time(NULL)); printf("Initctx - context name we're using: %s\n", contextname); printf("Negotiating GSSAPI context: "); - printf(gssid); + printf("%s", gssid); printf("\n"); /* @@ -388,7 +395,8 @@ initctx1(isc_task_t *task, isc_event_t *event) { gssctx = GSS_C_NO_CONTEXT; result = dns_tkey_buildgssquery(query, dns_fixedname_name(&servername), dns_fixedname_name(&gssname), - NULL, 36000, &gssctx, ISC_TRUE); + NULL, 36000, &gssctx, ISC_TRUE, + mctx, NULL); CHECK("dns_tkey_buildgssquery", result); printf("Sending context token to server\n"); diff --git a/bin/tests/system/Makefile.in b/bin/tests/system/Makefile.in index 4001666f..da68b044 100644 --- a/bin/tests/system/Makefile.in +++ b/bin/tests/system/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004, 2007, 2008, 2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007, 2008, 2010, 2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2000, 2001 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -13,7 +13,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.33 2010/06/23 23:46:58 tbox Exp $ +# $Id: Makefile.in,v 1.35 2011-01-13 04:59:24 tbox Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -21,7 +21,7 @@ top_srcdir = @top_srcdir@ @BIND9_MAKE_INCLUDES@ -SUBDIRS = filter-aaaa lwresd tkey +SUBDIRS = filter-aaaa lwresd rpz tkey TARGETS = @BIND9_MAKE_RULES@ diff --git a/bin/tests/system/README b/bin/tests/system/README index 53aebeb0..9b8dbf60 100644 --- a/bin/tests/system/README +++ b/bin/tests/system/README @@ -1,4 +1,4 @@ -Copyright (C) 2004, 2010 Internet Systems Consortium, Inc. ("ISC") +Copyright (C) 2004, 2010, 2011 Internet Systems Consortium, Inc. ("ISC") Copyright (C) 2000, 2001 Internet Software Consortium. See COPYRIGHT in the source root or http://isc.org/copyright.html for terms. @@ -17,6 +17,7 @@ involving a different DNS setup. They are: nsupdate/ Dynamic update and IXFR tests resolver/ Regression tests for resolver bugs that have been fixed (not a complete resolver test suite) + rpz/ Tests of response policy zone (RPZ) rewriting stub/ Tests of stub zone functionality unknown/ Unknown type and class tests upforwd/ Update forwarding tests @@ -57,4 +58,4 @@ The tests can be run individually like this: To run all the tests, just type "make test". -$Id: README,v 1.14 2010/08/25 23:46:37 tbox Exp $ +$Id: README,v 1.16 2011-01-13 04:59:24 tbox Exp $ diff --git a/bin/tests/system/autosign/clean.sh b/bin/tests/system/autosign/clean.sh index f1b26dca..54b03575 100644 --- a/bin/tests/system/autosign/clean.sh +++ b/bin/tests/system/autosign/clean.sh @@ -14,7 +14,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: clean.sh,v 1.6 2010/05/19 07:45:38 marka Exp $ +# $Id: clean.sh,v 1.7 2010-12-18 02:12:43 each Exp $ rm -f */K* */dsset-* */*.signed */trusted.conf */tmp* */*.jnl */*.bk rm -f active.key inact.key del.key unpub.key standby.key rev.key @@ -42,3 +42,6 @@ rm -f ns3/secure.example.db rm -f ns3/secure.nsec3.example.db rm -f ns3/secure.optout.example.db rm -f ns3/secure-to-insecure.example.db +rm -f ns3/prepub.example.db +rm -f ns3/prepub.example.db.in +rm -f ns3/secure-to-insecure2.example.db diff --git a/bin/tests/system/autosign/ns3/keygen.sh b/bin/tests/system/autosign/ns3/keygen.sh index 19e23ab3..abf3d151 100644 --- a/bin/tests/system/autosign/ns3/keygen.sh +++ b/bin/tests/system/autosign/ns3/keygen.sh @@ -14,7 +14,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: keygen.sh,v 1.7 2010/05/19 07:45:38 marka Exp $ +# $Id: keygen.sh,v 1.8 2010-12-15 18:44:37 each Exp $ SYSTEMTESTTOP=../.. . $SYSTEMTESTTOP/conf.sh @@ -196,3 +196,12 @@ echo $ksk > ../del1.key zsk=`$KEYGEN -q -3 -r $RANDFILE $zone` echo $zsk > ../del2.key $SIGNER -S -3 beef -o $zone -f $zonefile $infile > /dev/null 2>&1 + +# +# Introducing a pre-published key test. +# +zone=prepub.example +zonefile="${zone}.db" +$KEYGEN -3 -q -r $RANDFILE -fk $zone > /dev/null +$KEYGEN -3 -q -r $RANDFILE $zone > /dev/null +$SIGNER -S -3 beef -o $zone -f $zonefile $infile > /dev/null 2>&1 diff --git a/bin/tests/system/autosign/ns3/named.conf b/bin/tests/system/autosign/ns3/named.conf index a22d475a..fd5f3326 100644 --- a/bin/tests/system/autosign/ns3/named.conf +++ b/bin/tests/system/autosign/ns3/named.conf @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: named.conf,v 1.6 2010/05/19 07:45:38 marka Exp $ */ +/* $Id: named.conf,v 1.7 2010-12-15 18:44:37 each Exp $ */ // NS3 @@ -178,4 +178,11 @@ zone "oldsigs.example" { auto-dnssec maintain; }; +zone "prepub.example" { + type master; + file "prepub.example.db"; + allow-update { any; }; + auto-dnssec maintain; +}; + include "trusted.conf"; diff --git a/bin/tests/system/autosign/tests.sh b/bin/tests/system/autosign/tests.sh index 6da87b9e..7c720577 100644 --- a/bin/tests/system/autosign/tests.sh +++ b/bin/tests/system/autosign/tests.sh @@ -14,11 +14,13 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: tests.sh,v 1.11 2010/08/16 22:21:06 marka Exp $ +# $Id: tests.sh,v 1.12 2010-12-15 18:44:37 each Exp $ SYSTEMTESTTOP=.. . $SYSTEMTESTTOP/conf.sh +RANDFILE=random.data + status=0 n=0 @@ -587,7 +589,7 @@ status=`expr $status + $ret` echo "I:checking that standby key does not sign records ($n)" ret=0 -id=`sed 's/^K.+007+0*//' < standby.key` +ed=`sed 's/^K.+007+0*//' < standby.key` $DIG $DIGOPTS dnskey . @10.53.0.1 > dig.out.ns1.test$n || ret=1 grep 'RRSIG.*'" $id "'\. ' dig.out.ns1.test$n > /dev/null && ret=1 n=`expr $n + 1` @@ -660,6 +662,32 @@ n=`expr $n + 1` if [ $ret != 0 ]; then echo "I:failed"; fi status=`expr $status + $ret` +echo "I:checking that serial number and RRSIGs are both updated (rt21045) ($n)" +ret=0 +oldserial=`$DIG $DIGOPTS +short soa prepub.example @10.53.0.3 | awk '$0 !~ /SOA/ {print $3}'` +oldinception=`$DIG $DIGOPTS +short soa prepub.example @10.53.0.3 | awk '/SOA/ {print $6}' | sort -u` + +$KEYGEN -3 -q -r $RANDFILE -K ns3 -P 0 -A +6d -I +38d -D +45d prepub.example > /dev/null + +$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 sign prepub.example 2>&1 | sed 's/^/I:ns1 /' +newserial=$oldserial +try=0 +while [ $oldserial -eq $newserial -a $try -lt 42 ] +do + newserial=`$DIG $DIGOPTS +short soa prepub.example @10.53.0.3 | + awk '$0 !~ /SOA/ {print $3}'` + sleep 1 + try=`expr $try + 1` +done +newinception=`$DIG $DIGOPTS +short soa prepub.example @10.53.0.3 | awk '/SOA/ {print $6}' | sort -u` +#echo "$oldserial : $newserial" +#echo "$oldinception : $newinception" + +[ "$oldserial" = "$newserial" ] && ret=1 +[ "$oldinception" = "$newinception" ] && ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + echo "I:preparing to test key change corner cases" echo "I:removing a private key file" file="ns1/`cat vanishing.key`.private" @@ -673,6 +701,9 @@ newid=`sed 's/^K.+007+0*//' < standby.key` $SETTIME -K ns1 -I now -D now+15 $oldfile > /dev/null $SETTIME -K ns1 -i 0 -S $oldfile $newfile > /dev/null +# note previous zone serial number +oldserial=`$DIG $DIGOPTS +short soa . @10.53.0.1 | awk '{print $3}'` + $RNDC -c ../common/rndc.conf -s 10.53.0.1 -p 9953 loadkeys . 2>&1 | sed 's/^/I:ns1 /' echo "I:revoking key to duplicated key ID" @@ -715,6 +746,14 @@ n=`expr $n + 1` if [ $ret != 0 ]; then echo "I:failed"; fi status=`expr $status + $ret` +echo "I:checking SOA serial number has been incremented ($n)" +ret=0 +newserial=`$DIG $DIGOPTS +short soa . @10.53.0.1 | awk '{print $3}'` +[ "$newserial" != "$oldserial" ] || ret=1 +n=`expr $n + 1` +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + echo "I:waiting for former active key to be removed" sleep 10 diff --git a/bin/tests/system/conf.sh.in b/bin/tests/system/conf.sh.in index 88ed23de..09993033 100644 --- a/bin/tests/system/conf.sh.in +++ b/bin/tests/system/conf.sh.in @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2000-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: conf.sh.in,v 1.54 2010/12/08 02:46:15 marka Exp $ +# $Id: conf.sh.in,v 1.59 2011-01-13 04:59:24 tbox Exp $ # # Common configuration data for system tests, to be sourced into @@ -53,10 +53,10 @@ JOURNALPRINT=$TOP/bin/tools/named-journalprint # load on the machine to make it unusable to other users. # v6synth SUBDIRS="acl allow_query addzone autosign cacheclean checkconf checknames - dlv @DLZ_SYSTEM_TEST@ dns64 dnssec forward glue ixfr limits lwresd - masterfile masterformat metadata notify nsupdate pending pkcs11 - resolver rrsetorder sortlist smartsign stub tkey unknown upforwd - views xfer xferquota zonechecks" + dlv @DLZ_SYSTEM_TEST@ dlzexternal dns64 dnssec forward glue gost ixfr limits + lwresd masterfile masterformat metadata notify nsupdate pending pkcs11 + resolver rpz rrsetorder sortlist smartsign staticstub stub tkey + tsig tsiggss unknown upforwd views xfer xferquota zonechecks" # PERL will be an empty string if no perl interpreter was found. PERL=@PERL@ diff --git a/bin/tests/system/dlzexternal/clean.sh b/bin/tests/system/dlzexternal/clean.sh new file mode 100644 index 00000000..648dbcd7 --- /dev/null +++ b/bin/tests/system/dlzexternal/clean.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# +# Clean up after dlzexternal tests. +# + +rm -f ns1/update.txt +rm -f */named.memstats +rm -f ns1/ddns.key +rm -f random.data diff --git a/bin/tests/system/dlzexternal/ns1/named.conf b/bin/tests/system/dlzexternal/ns1/named.conf new file mode 100644 index 00000000..e0cd087c --- /dev/null +++ b/bin/tests/system/dlzexternal/ns1/named.conf @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.3 2010-12-20 23:47:20 tbox Exp $ */ + +controls { }; + +options { + query-source address 10.53.0.1; + notify-source 10.53.0.1; + transfer-source 10.53.0.1; + port 5300; + pid-file "named.pid"; + session-keyfile "session.key"; + listen-on { 10.53.0.1; 127.0.0.1; }; + listen-on-v6 { none; }; + recursion no; + notify yes; +}; + +key rndc_key { + secret "1234abcd8765"; + algorithm hmac-md5; +}; + +include "ddns.key"; + +controls { + inet 10.53.0.1 port 9953 allow { any; } keys { rndc_key; }; +}; + +dlz "example zone" { + database "dlopen ../../../../../contrib/dlz/example/dlz_example.so example.nil"; +}; diff --git a/bin/tests/system/dlzexternal/prereq.sh b/bin/tests/system/dlzexternal/prereq.sh new file mode 100644 index 00000000..7adbbcbf --- /dev/null +++ b/bin/tests/system/dlzexternal/prereq.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: prereq.sh,v 1.4 2010-12-20 23:47:20 tbox Exp $ + +TOP=${SYSTEMTESTTOP:=.}/../../../.. + +# enable the dlzexternal test only if it builds and dlz-dlopen was enabled +$TOP/bin/named/named -V | grep with.dlz.dlopen | grep -v with.dlz.dlopen=no > /dev/null || { + echo "I:not built with --with-dlz-dlopen=yes - skipping dlzexternal test" + exit 255 +} + +cd ../../../../contrib/dlz/example && make all > /dev/null || { + echo "I:build of dlz_example.so failed - skipping dlzexternal test" + exit 1 +} +exit 0 + + diff --git a/bin/tests/system/dlzexternal/setup.sh b/bin/tests/system/dlzexternal/setup.sh new file mode 100644 index 00000000..1700e866 --- /dev/null +++ b/bin/tests/system/dlzexternal/setup.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: setup.sh,v 1.3 2010-12-20 23:47:20 tbox Exp $ + +SYSTEMTESTTOP=.. +. $SYSTEMTESTTOP/conf.sh + +../../../tools/genrandom 400 random.data +$DDNSCONFGEN -q -r random.data -z example.nil > ns1/ddns.key diff --git a/bin/tests/system/dlzexternal/tests.sh b/bin/tests/system/dlzexternal/tests.sh new file mode 100644 index 00000000..cf31d378 --- /dev/null +++ b/bin/tests/system/dlzexternal/tests.sh @@ -0,0 +1,44 @@ +#!/bin/sh +# tests for TSIG-GSS updates + +SYSTEMTESTTOP=.. +. $SYSTEMTESTTOP/conf.sh + +status=0 + +DIGOPTS="@10.53.0.1 -p 5300" + +test_update() { + host="$1" + type="$2" + cmd="$3" + digout="$4" + + cat <<EOF > ns1/update.txt +server 10.53.0.1 5300 +update add $host $cmd +send +EOF + echo "I:testing update for $host $type $cmd" + $NSUPDATE -k ns1/ddns.key ns1/update.txt || { + echo "I:update failed for $host $type $cmd" + return 1 + } + + out=`$DIG $DIGOPTS -t $type -q $host | egrep ^$host` + lines=`echo "$out" | grep "$digout" | wc -l` + [ $lines -eq 1 ] || { + echo "I:dig output incorrect for $host $type $cmd: $out" + return 1 + } + return 0 +} + +test_update testdc1.example.nil. A "86400 A 10.53.0.10" "10.53.0.10" || status=1 +test_update testdc2.example.nil. A "86400 A 10.53.0.11" "10.53.0.11" || status=1 +test_update testdc3.example.nil. A "86400 A 10.53.0.10" "10.53.0.10" || status=1 +test_update deny.example.nil. TXT "86400 TXT helloworld" "helloworld" && status=1 + +[ $status -eq 0 ] && echo "I:dlzexternal tests all OK" + +exit $status diff --git a/bin/tests/system/dns64/clean.sh b/bin/tests/system/dns64/clean.sh index 73197d50..e7096fc8 100644 --- a/bin/tests/system/dns64/clean.sh +++ b/bin/tests/system/dns64/clean.sh @@ -14,9 +14,11 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: clean.sh,v 1.3 2010/12/08 23:51:55 tbox Exp $ +# $Id: clean.sh,v 1.4 2010-12-18 02:12:43 each Exp $ rm -f ns1/K* rm -f ns1/signed.db* rm -f ns1/dsset-signed. +rm -f */named.memstats +rm -f dig.out.* random.data diff --git a/bin/tests/system/dns64/ns2/named.conf b/bin/tests/system/dns64/ns2/named.conf index 495025a2..4834ead7 100644 --- a/bin/tests/system/dns64/ns2/named.conf +++ b/bin/tests/system/dns64/ns2/named.conf @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2010, 2011 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: named.conf,v 1.2 2010/12/08 02:46:16 marka Exp $ */ +/* $Id: named.conf,v 1.4 2011-01-07 23:47:07 tbox Exp $ */ // NS2 @@ -49,6 +49,13 @@ options { suffix ::; }; + dns64-server "dns64.example.net."; + dns64-contact "hostmaster.example.net."; + dns64 2001:32::/32 { clients { 10.53.0.6; }; }; + dns64 2001:40::/40 { clients { 10.53.0.6; }; }; + dns64 2001:48::/48 { clients { 10.53.0.6; }; }; + dns64 2001:56::/56 { clients { 10.53.0.6; }; }; + dns64 2001:64::/64 { clients { 10.53.0.6; }; }; }; zone "." { diff --git a/bin/tests/system/dns64/setup.sh b/bin/tests/system/dns64/setup.sh index 1d4fa8f3..3629ca29 100644 --- a/bin/tests/system/dns64/setup.sh +++ b/bin/tests/system/dns64/setup.sh @@ -14,10 +14,10 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: setup.sh,v 1.3 2010/12/08 23:51:55 tbox Exp $ - -../../../tools/genrandom 400 random.data +# $Id: setup.sh,v 1.4 2010-12-18 11:45:01 marka Exp $ sh clean.sh +../../../tools/genrandom 400 random.data + cd ns1 && sh sign.sh diff --git a/bin/tests/system/dns64/tests.sh b/bin/tests/system/dns64/tests.sh index 1fedc7d9..fa4778bb 100644 --- a/bin/tests/system/dns64/tests.sh +++ b/bin/tests/system/dns64/tests.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2010, 2011 Internet Systems Consortium, Inc. ("ISC") # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: tests.sh,v 1.2 2010/12/08 02:46:15 marka Exp $ +# $Id: tests.sh,v 1.4 2011-01-07 23:47:07 tbox Exp $ SYSTEMTESTTOP=.. . $SYSTEMTESTTOP/conf.sh @@ -1244,5 +1244,32 @@ n=`expr $n + 1` if [ $ret != 0 ]; then echo "I:failed"; fi status=`expr $status + $ret` +echo "I: checking reverse mapping ($n)" +ret=0 +$DIG $DIGOPTS -x 2001:aaaa::10.0.0.1 @10.53.0.2 > dig.out.ns2.test$n || ret=1 +grep -i "CNAME.1.0.0.10.IN-ADDR.ARPA.$" dig.out.ns2.test$n > /dev/null || ret=1 +n=`expr $n + 1` +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +list=`$DIG $DIGOPTS -b 10.53.0.6 @10.53.0.2 +short aaaa a-only.example | sort` +for a in $list +do + ret=0 + echo "I: checking reverse mapping of $a ($n)" + $DIG $DIGOPTS -x $a @10.53.0.2 > dig.out.ns2.test$n || ret=1 + grep -i "CNAME.5.3.2.1.IN-ADDR.ARPA." dig.out.ns2.test$n > /dev/null || ret=1 + n=`expr $n + 1` + if [ $ret != 0 ]; then echo "I:failed"; fi + status=`expr $status + $ret` +done + +echo "I: checking dns64-server and dns64-contact ($n)" +$DIG $DIGOPTS soa 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.a.a.a.1.0.0.2.ip6.arpa @10.53.0.2 > dig.out.ns2.test$n || ret=1 +grep "SOA.dns64.example.net..hostmaster.example.net." dig.out.ns2.test$n > /dev/null || ret=1 +n=`expr $n + 1` +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + echo "I:exit status: $status" exit $status diff --git a/bin/tests/system/dnssec/README b/bin/tests/system/dnssec/README index 63ea49a8..4126e973 100644 --- a/bin/tests/system/dnssec/README +++ b/bin/tests/system/dnssec/README @@ -1,8 +1,8 @@ -Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") +Copyright (C) 2004, 2011 Internet Systems Consortium, Inc. ("ISC") Copyright (C) 2000-2002 Internet Software Consortium. See COPYRIGHT in the source root or http://isc.org/copyright.html for terms. -$Id: README,v 1.8 2004/03/05 05:00:08 marka Exp $ +$Id: README,v 1.10 2011-01-04 23:47:13 tbox Exp $ The test setup for the DNSSEC tests has a secure root. @@ -15,3 +15,7 @@ for the root. ns5 is a caching-only server, configured with the an incorrect trusted key for the root. It is used for testing failure cases. + +ns6 is a caching-only server configured to use DLV. + +ns7 is used for checking non-cacheable answers. diff --git a/bin/tests/system/dnssec/clean.sh b/bin/tests/system/dnssec/clean.sh index 1894126a..bab364ff 100644 --- a/bin/tests/system/dnssec/clean.sh +++ b/bin/tests/system/dnssec/clean.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2004, 2007-2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007-2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2000-2002 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -15,9 +15,10 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: clean.sh,v 1.30 2010/09/07 00:58:35 marka Exp $ +# $Id: clean.sh,v 1.33 2011-01-04 23:47:13 tbox Exp $ -rm -f */K* */keyset-* */dsset-* */dlvset-* */signedkey-* */*.signed */trusted.conf */tmp* */*.jnl */*.bk +rm -f */K* */keyset-* */dsset-* */dlvset-* */signedkey-* */*.signed +rm -f */trusted.conf */managed.conf */tmp* */*.jnl */*.bk rm -f ns1/root.db ns2/example.db ns3/secure.example.db rm -f ns3/unsecure.example.db ns3/bogus.example.db ns3/keyless.example.db rm -f ns3/dynamic.example.db ns3/dynamic.example.db.signed.jnl @@ -42,3 +43,6 @@ rm -f ns3/secure.optout.example.db rm -f */named.secroots rm -f ns1/managed.key.id rm -f signer/example.db +rm -f ns2/algroll.db +rm -f ns3/kskonly.example.db +rm -f ns4/named.conf diff --git a/bin/tests/system/dnssec/ns1/sign.sh b/bin/tests/system/dnssec/ns1/sign.sh index 0fbfd5f2..545d2750 100644 --- a/bin/tests/system/dnssec/ns1/sign.sh +++ b/bin/tests/system/dnssec/ns1/sign.sh @@ -1,6 +1,6 @@ #!/bin/sh -e # -# Copyright (C) 2004, 2006-2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2006-2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2000-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: sign.sh,v 1.34 2010/11/16 01:14:51 marka Exp $ +# $Id: sign.sh,v 1.36 2011-01-04 23:47:13 tbox Exp $ SYSTEMTESTTOP=../.. . $SYSTEMTESTTOP/conf.sh @@ -39,7 +39,6 @@ cat $infile $keyname.key > $zonefile $SIGNER -P -g -r $RANDFILE -o $zone $zonefile > /dev/null # Configure the resolving server with a trusted key. - cat $keyname.key | grep -v '^; ' | $PERL -n -e ' local ($dn, $class, $type, $flags, $proto, $alg, @rest) = split; local $key = join("", @rest); @@ -49,11 +48,23 @@ trusted-keys { }; EOF ' > trusted.conf + +# ...or with a managed key. +cat $keyname.key | grep -v '^; ' | $PERL -n -e ' +local ($dn, $class, $type, $flags, $proto, $alg, @rest) = split; +local $key = join("", @rest); +print <<EOF +managed-keys { + "$dn" initial-key $flags $proto $alg "$key"; +}; +EOF +' > managed.conf cp trusted.conf ../ns2/trusted.conf cp trusted.conf ../ns3/trusted.conf cp trusted.conf ../ns4/trusted.conf cp trusted.conf ../ns6/trusted.conf cp trusted.conf ../ns7/trusted.conf +cp managed.conf ../ns4/managed.conf # # Save keyid for managed key id test. # diff --git a/bin/tests/system/dnssec/ns4/named1.conf b/bin/tests/system/dnssec/ns4/named1.conf new file mode 100644 index 00000000..387c2880 --- /dev/null +++ b/bin/tests/system/dnssec/ns4/named1.conf @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named1.conf,v 1.3 2011-01-04 23:47:13 tbox Exp $ */ + +// NS4 + +controls { /* empty */ }; + +options { + query-source address 10.53.0.4; + notify-source 10.53.0.4; + transfer-source 10.53.0.4; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.4; }; + listen-on-v6 { none; }; + recursion yes; + acache-enable yes; + dnssec-enable yes; + dnssec-validation yes; + dnssec-must-be-secure mustbesecure.example yes; + + # Note: We only reference the bind.keys file here to confirm that it + # is *not* being used. It contains the real root key, and we're + # using a local toy root zone for the tests, so it wouldn't work. + # But since dnssec-validation is set to "yes" not "auto", that + # won't matter. + bindkeys-file "../../../../../bind.keys"; +}; + +key rndc_key { + secret "1234abcd8765"; + algorithm hmac-md5; +}; + +controls { + inet 10.53.0.4 port 9953 allow { any; } keys { rndc_key; }; +}; + +zone "." { + type hint; + file "../../common/root.hint"; +}; + +include "trusted.conf"; diff --git a/bin/tests/system/dnssec/ns4/named.conf b/bin/tests/system/dnssec/ns4/named2.conf index 51693d31..5aec7676 100644 --- a/bin/tests/system/dnssec/ns4/named.conf +++ b/bin/tests/system/dnssec/ns4/named2.conf @@ -1,6 +1,5 @@ /* - * Copyright (C) 2004, 2006, 2007, 2010 Internet Systems Consortium, Inc. ("ISC") - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: named.conf,v 1.30 2010/06/25 23:46:51 tbox Exp $ */ +/* $Id: named2.conf,v 1.3 2011-01-04 23:47:13 tbox Exp $ */ // NS4 @@ -32,8 +31,8 @@ options { recursion yes; acache-enable yes; dnssec-enable yes; - dnssec-validation yes; - dnssec-must-be-secure mustbesecure.example yes; + dnssec-validation auto; + bindkeys-file "managed.conf"; }; key rndc_key { @@ -49,5 +48,3 @@ zone "." { type hint; file "../../common/root.hint"; }; - -include "trusted.conf"; diff --git a/bin/tests/system/dnssec/setup.sh b/bin/tests/system/dnssec/setup.sh index ca77f30a..1fb0b2e8 100644 --- a/bin/tests/system/dnssec/setup.sh +++ b/bin/tests/system/dnssec/setup.sh @@ -1,6 +1,6 @@ #!/bin/sh -e # -# Copyright (C) 2004, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2000, 2001 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: setup.sh,v 1.17 2009/10/27 22:25:37 marka Exp $ +# $Id: setup.sh,v 1.19 2011-01-04 23:47:13 tbox Exp $ ../../../tools/genrandom 400 random.data @@ -23,4 +23,6 @@ cd ns1 && sh sign.sh echo "a.bogus.example. A 10.0.0.22" >>../ns3/bogus.example.db.signed +cd ../ns4 && cp -f named1.conf named.conf cd ../ns5 && cp -f trusted.conf.bad trusted.conf + diff --git a/bin/tests/system/dnssec/tests.sh b/bin/tests/system/dnssec/tests.sh index 55a03c98..4c4df379 100644 --- a/bin/tests/system/dnssec/tests.sh +++ b/bin/tests/system/dnssec/tests.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2000-2002 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: tests.sh,v 1.71 2010/11/16 01:14:51 marka Exp $ +# $Id: tests.sh,v 1.73 2011-01-04 23:47:13 tbox Exp $ SYSTEMTESTTOP=.. . $SYSTEMTESTTOP/conf.sh @@ -1055,5 +1055,57 @@ else echo "I:The DNSSEC update test requires the Net::DNS library." >&2 fi +# Reconfigure caching server to use "dnssec-validation auto", and repeat +# some of the DNSSEC validation tests to ensure that it works correctly. +echo "I:switching to automatic root key configuration" +cp ns4/named2.conf ns4/named.conf +$RNDC -c ../common/rndc.conf -s 10.53.0.4 -p 9953 reconfig 2>&1 | sed 's/^/I:ns4 /' +sleep 5 + +echo "I:checking positive validation NSEC ($n)" +ret=0 +$DIG $DIGOPTS +noauth a.example. @10.53.0.2 a > dig.out.ns2.test$n || ret=1 +$DIG $DIGOPTS +noauth a.example. @10.53.0.4 a > dig.out.ns4.test$n || ret=1 +$PERL ../digcomp.pl dig.out.ns2.test$n dig.out.ns4.test$n || ret=1 +grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null || ret=1 +n=`expr $n + 1` +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +echo "I:checking positive validation NSEC3 ($n)" +ret=0 +$DIG $DIGOPTS +noauth a.nsec3.example. \ + @10.53.0.3 a > dig.out.ns3.test$n || ret=1 +$DIG $DIGOPTS +noauth a.nsec3.example. \ + @10.53.0.4 a > dig.out.ns4.test$n || ret=1 +$PERL ../digcomp.pl dig.out.ns3.test$n dig.out.ns4.test$n || ret=1 +grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null || ret=1 +n=`expr $n + 1` +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +echo "I:checking positive validation OPTOUT ($n)" +ret=0 +$DIG $DIGOPTS +noauth a.optout.example. \ + @10.53.0.3 a > dig.out.ns3.test$n || ret=1 +$DIG $DIGOPTS +noauth a.optout.example. \ + @10.53.0.4 a > dig.out.ns4.test$n || ret=1 +$PERL ../digcomp.pl dig.out.ns3.test$n dig.out.ns4.test$n || ret=1 +grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null || ret=1 +n=`expr $n + 1` +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +echo "I:checking negative validation ($n)" +ret=0 +$DIG $DIGOPTS +noauth q.example. @10.53.0.2 a > dig.out.ns2.test$n || ret=1 +$DIG $DIGOPTS +noauth q.example. @10.53.0.4 a > dig.out.ns4.test$n || ret=1 +$PERL ../digcomp.pl dig.out.ns2.test$n dig.out.ns4.test$n || ret=1 +grep "flags:.*ad.*QUERY" dig.out.ns4.test$n > /dev/null || ret=1 +grep "status: NXDOMAIN" dig.out.ns4.test$n > /dev/null || ret=1 +n=`expr $n + 1` +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + echo "I:exit status: $status" exit $status diff --git a/bin/tests/system/gost/clean.sh b/bin/tests/system/gost/clean.sh new file mode 100644 index 00000000..8331ae45 --- /dev/null +++ b/bin/tests/system/gost/clean.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: clean.sh,v 1.2 2010-12-23 04:07:59 marka Exp $ + +rm -f */K* */dsset-* */*.signed */trusted.conf +rm -f ns1/root.db +rm -f dig.out* +rm -f random.data +rm -f */named.run +rm -f */named.memstats diff --git a/bin/tests/system/gost/ns1/named.conf b/bin/tests/system/gost/ns1/named.conf new file mode 100644 index 00000000..47b45e88 --- /dev/null +++ b/bin/tests/system/gost/ns1/named.conf @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.2 2010-12-23 04:08:00 marka Exp $ */ + +// NS1 + +controls { /* empty */ }; + +options { + query-source address 10.53.0.1; + notify-source 10.53.0.1; + transfer-source 10.53.0.1; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.1; }; + listen-on-v6 { none; }; + recursion no; + notify yes; + dnssec-enable yes; + dnssec-validation yes; +}; + +zone "." { + type master; + file "root.db.signed"; +}; + +include "trusted.conf"; diff --git a/bin/tests/system/gost/ns1/root.db.in b/bin/tests/system/gost/ns1/root.db.in new file mode 100644 index 00000000..8dd7d60c --- /dev/null +++ b/bin/tests/system/gost/ns1/root.db.in @@ -0,0 +1,26 @@ +; Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: root.db.in,v 1.2 2010-12-23 04:08:00 marka Exp $ + +$TTL 300 +. IN SOA marka.isc.org. a.root.servers.nil. ( + 2010121600 ; serial + 600 ; refresh + 600 ; retry + 1200 ; expire + 600 ; minimum + ) +. NS a.root-servers.nil. +a.root-servers.nil. A 10.53.0.1 diff --git a/bin/tests/system/gost/ns1/sign.sh b/bin/tests/system/gost/ns1/sign.sh new file mode 100644 index 00000000..9ef02063 --- /dev/null +++ b/bin/tests/system/gost/ns1/sign.sh @@ -0,0 +1,47 @@ +#!/bin/sh -e +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: sign.sh,v 1.2 2010-12-23 04:08:00 marka Exp $ + +SYSTEMTESTTOP=../.. +. $SYSTEMTESTTOP/conf.sh + +RANDFILE=../random.data + +zone=. +infile=root.db.in +zonefile=root.db + +key1=`$KEYGEN -q -r $RANDFILE -a ECCGOST -n zone $zone` +key2=`$KEYGEN -q -r $RANDFILE -a ECCGOST -n zone -f KSK $zone` +$DSFROMKEY -a gost $key2.key > dsset-gost + +cat $infile $key1.key $key2.key > $zonefile + +$SIGNER -P -g -r $RANDFILE -o $zone $zonefile > /dev/null + +# Configure the resolving server with a trusted key. + +cat $key1.key | grep -v '^; ' | $PERL -n -e ' +local ($dn, $class, $type, $flags, $proto, $alg, @rest) = split; +local $key = join("", @rest); +print <<EOF +trusted-keys { + "$dn" $flags $proto $alg "$key"; +}; +EOF +' > trusted.conf +cp trusted.conf ../ns2/trusted.conf diff --git a/bin/tests/system/gost/ns2/named.conf b/bin/tests/system/gost/ns2/named.conf new file mode 100644 index 00000000..857a78cf --- /dev/null +++ b/bin/tests/system/gost/ns2/named.conf @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.2 2010-12-23 04:08:00 marka Exp $ */ + +// NS2 + +controls { /* empty */ }; + +options { + query-source address 10.53.0.2; + notify-source 10.53.0.2; + transfer-source 10.53.0.2; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.2; }; + listen-on-v6 { none; }; + recursion yes; + notify yes; + dnssec-enable yes; + dnssec-validation yes; +}; + +zone "." { + type hint; + file "../../common/root.hint"; +}; + +include "trusted.conf"; diff --git a/bin/tests/system/gost/prereq.sh.in b/bin/tests/system/gost/prereq.sh.in new file mode 100644 index 00000000..a268f33d --- /dev/null +++ b/bin/tests/system/gost/prereq.sh.in @@ -0,0 +1,24 @@ +#!/bin/sh -e +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: prereq.sh.in,v 1.4 2010-12-27 13:38:43 marka Exp $ + +OPENSSL_GOST="@OPENSSL_GOST@" +if test -z "$OPENSSL_GOST" +then + echo "I:This test requires a openssl version with gost support." >&2 + exit 255 +fi diff --git a/bin/tests/system/gost/setup.sh b/bin/tests/system/gost/setup.sh new file mode 100644 index 00000000..8f189ee3 --- /dev/null +++ b/bin/tests/system/gost/setup.sh @@ -0,0 +1,21 @@ +#!/bin/sh -e +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: setup.sh,v 1.2 2010-12-23 04:08:00 marka Exp $ + +../../../tools/genrandom 400 random.data + +cd ns1 && sh sign.sh diff --git a/bin/tests/system/gost/tests.sh b/bin/tests/system/gost/tests.sh new file mode 100644 index 00000000..8ec8999d --- /dev/null +++ b/bin/tests/system/gost/tests.sh @@ -0,0 +1,42 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: tests.sh,v 1.2 2010-12-23 04:08:00 marka Exp $ + +SYSTEMTESTTOP=.. +. $SYSTEMTESTTOP/conf.sh + +status=0 +n=0 + +rm -f dig.out.* + +DIGOPTS="+tcp +noadd +nosea +nostat +nocmd +dnssec -p 5300" + +# Check the example. domain + +echo "I:checking that positive validation works works ($n)" +ret=0 +$DIG $DIGOPTS . @10.53.0.1 soa > dig.out.ns1.test$n || ret=1 +$DIG $DIGOPTS . @10.53.0.2 soa > dig.out.ns2.test$n || ret=1 +$PERL ../digcomp.pl dig.out.ns1.test$n dig.out.ns2.test$n || ret=1 +grep "flags:.*ad.*QUERY" dig.out.ns2.test$n > /dev/null || ret=1 +n=`expr $n + 1` +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +echo "I:exit status: $status" +exit $status diff --git a/bin/tests/system/resolver/clean.sh b/bin/tests/system/resolver/clean.sh index fca0caa5..1abaeeec 100644 --- a/bin/tests/system/resolver/clean.sh +++ b/bin/tests/system/resolver/clean.sh @@ -14,12 +14,14 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: clean.sh,v 1.5 2010/11/17 23:47:08 tbox Exp $ +# $Id: clean.sh,v 1.6 2010-12-18 02:12:44 each Exp $ # # Clean up after resolver tests. # rm -f */named.memstats -rm -f dig.out +rm -f dig.out dig.*.out.* rm -f ns6/K* rm -f ns6/example.net.db.signed ns6/example.net.db +rm -f ns6/dsset-example.net. ns6/example.net.db.signed.jnl +rm -f random.data diff --git a/bin/tests/system/rpz/Makefile.in b/bin/tests/system/rpz/Makefile.in new file mode 100644 index 00000000..d0de33c4 --- /dev/null +++ b/bin/tests/system/rpz/Makefile.in @@ -0,0 +1,55 @@ +# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: Makefile.in,v 1.3 2011-01-13 04:59:24 tbox Exp $ + +srcdir = @srcdir@ +VPATH = @srcdir@ +top_srcdir = @top_srcdir@ + +@BIND9_VERSION@ + +@BIND9_MAKE_INCLUDES@ + +CINCLUDES = + +CDEFINES = +CWARNINGS = + +DNSLIBS = +ISCLIBS = . + +DNSDEPLIBS = +ISCDEPLIBS = + +DEPLIBS = + +LIBS = @LIBS@ + +TARGETS = rpz@EXEEXT@ + +RPZOBJS = rpz.@O@ + +SRCS = rpz.c + +@BIND9_MAKE_RULES@ + +all: rpz@EXEEXT@ + +rpz@EXEEXT@: ${RPZOBJS} + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${RPZOBJS} ${LIBS} + +clean distclean:: + rm -f ${TARGETS} + diff --git a/bin/tests/system/rpz/clean.sh b/bin/tests/system/rpz/clean.sh new file mode 100644 index 00000000..45080b7b --- /dev/null +++ b/bin/tests/system/rpz/clean.sh @@ -0,0 +1,22 @@ +# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: clean.sh,v 1.3 2011-01-13 04:59:24 tbox Exp $ + + +# Clean up after rpz tests. + +rm -f dig.out* nsupdate.tmp +rm -f */named.memstats */named.run */session.key +rm -f ns3/bl*.db */*.jnl diff --git a/bin/tests/system/rpz/ns1/named.conf b/bin/tests/system/rpz/ns1/named.conf new file mode 100644 index 00000000..528afff3 --- /dev/null +++ b/bin/tests/system/rpz/ns1/named.conf @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.3 2011-01-13 04:59:24 tbox Exp $ */ + +controls { /* empty */ }; + +options { + query-source address 10.53.0.1; + notify-source 10.53.0.1; + transfer-source 10.53.0.1; + port 5300; + session-keyfile "session.key"; + pid-file "named.pid"; + listen-on { 10.53.0.1; }; + listen-on-v6 { none; }; + notify no; +}; + +zone "." {type master; file "root.db";}; diff --git a/bin/tests/system/rpz/ns1/root.db b/bin/tests/system/rpz/ns1/root.db new file mode 100644 index 00000000..f27372b6 --- /dev/null +++ b/bin/tests/system/rpz/ns1/root.db @@ -0,0 +1,28 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: root.db,v 1.3 2011-01-13 04:59:24 tbox Exp $ + +$TTL 120 +@ SOA s1. hostmaster.ns.s1. ( 1 3600 1200 604800 60 ) +@ NS s1 +s1. A 10.53.0.1 + +; rewrite responses from this zone +tld2. NS ns.tld2. +ns.tld2. A 10.53.0.2 + +; requests come from here +tld3. NS ns.tld3. +ns.tld3. A 10.53.0.3 diff --git a/bin/tests/system/rpz/ns2/hints b/bin/tests/system/rpz/ns2/hints new file mode 100644 index 00000000..69ab18ca --- /dev/null +++ b/bin/tests/system/rpz/ns2/hints @@ -0,0 +1,18 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: hints,v 1.3 2011-01-13 04:59:25 tbox Exp $ + +. 0 NS s1. +s1. 0 A 10.53.0.1 diff --git a/bin/tests/system/rpz/ns2/named.conf b/bin/tests/system/rpz/ns2/named.conf new file mode 100644 index 00000000..f7e4e1b2 --- /dev/null +++ b/bin/tests/system/rpz/ns2/named.conf @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.3 2011-01-13 04:59:25 tbox Exp $ */ + +controls { /* empty */ }; + +options { + query-source address 10.53.0.2; + notify-source 10.53.0.2; + transfer-source 10.53.0.2; + port 5300; + pid-file "named.pid"; + session-keyfile "session.key"; + listen-on { 10.53.0.2; }; + listen-on-v6 { none; }; + notify no; +}; + +zone "." { type hint; file "hints"; }; + +zone "tld2." {type master; file "tld2.db";}; +zone "sub1.tld2." {type master; file "tld2.db";}; +zone "sub2.sub1.tld2." {type master; file "tld2.db";}; diff --git a/bin/tests/system/rpz/ns2/tld2.db b/bin/tests/system/rpz/ns2/tld2.db new file mode 100644 index 00000000..22e6f5f1 --- /dev/null +++ b/bin/tests/system/rpz/ns2/tld2.db @@ -0,0 +1,57 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: tld2.db,v 1.3 2011-01-13 04:59:25 tbox Exp $ + +; RPZ rewrite responses from this zone + +$TTL 120 +@ SOA tld2. hostmaster.ns.tld2. ( 1 3600 1200 604800 60 ) + NS @ + A 10.53.0.2 + +nodata TXT "nodata" +a12 A 12.12.12.12 + +a0-1 A 192.168.0.1 + AAAA 2001:2::1 + TXT "a0-1 text" + +a3-1 A 192.168.3.1 + AAAA 2001:2:3::1 + TXT "a3-1 text" + +a3-2 A 192.168.3.2 + AAAA 2001:2:3::2 + TXT "a3-2 text" + +a4-1 A 192.168.4.1 + AAAA 2001:2:4::1 + TXT "a4-1 text" +a4-1-aaaa AAAA 2001:2:4::1 + +a4-2 A 192.168.4.2 + AAAA 2001:2:4::2 + TXT "a4-2 text" + +a4-3 A 192.168.4.3 + AAAA 2001:2:4::3 + TXT "a4-3 text" + +a4-4 A 192.168.4.4 + AAAA 2001:2:4::4 + TXT "a4-4 text" + +a4-5 CNAME a12 + diff --git a/bin/tests/system/rpz/ns3/base.db b/bin/tests/system/rpz/ns3/base.db new file mode 100644 index 00000000..d1d92e84 --- /dev/null +++ b/bin/tests/system/rpz/ns3/base.db @@ -0,0 +1,31 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: base.db,v 1.3 2011-01-13 04:59:25 tbox Exp $ + +; RPZ test + +$TTL 120 +@ SOA tld3. hostmaster.ns.tld3. ( 1 3600 1200 604800 60 ) +@ NS ns.utld. + +; Poke the radix tree a little. +128.1111.2222.3333.4444.5555.6666.7777.8888.rpz-ip CNAME . +128.1111.2222.3333.4444.5555.6666.zz.rpz-ip CNAME . +128.1111.2222.3333.4444.5555.zz.8888.rpz-ip CNAME . +128.1111.2222.3333.4444.zz.8888.rpz-ip CNAME . +128.zz.3333.4444.0.0.8888.rpz-ip CNAME . +128.zz.3333.4444.0.7777.8888.rpz-ip CNAME . +128.zz.3333.4444.0.8777.8888.rpz-ip CNAME . +127.zz.3333.4444.0.8777.8888.rpz-ip CNAME . diff --git a/bin/tests/system/rpz/ns3/hints b/bin/tests/system/rpz/ns3/hints new file mode 100644 index 00000000..69ab18ca --- /dev/null +++ b/bin/tests/system/rpz/ns3/hints @@ -0,0 +1,18 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: hints,v 1.3 2011-01-13 04:59:25 tbox Exp $ + +. 0 NS s1. +s1. 0 A 10.53.0.1 diff --git a/bin/tests/system/rpz/ns3/named.conf b/bin/tests/system/rpz/ns3/named.conf new file mode 100644 index 00000000..86aae6e0 --- /dev/null +++ b/bin/tests/system/rpz/ns3/named.conf @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.3 2011-01-13 04:59:25 tbox Exp $ */ + +controls { /* empty */ }; + +options { + query-source address 10.53.0.3; + notify-source 10.53.0.3; + transfer-source 10.53.0.3; + port 5300; + pid-file "named.pid"; + session-keyfile "session.key"; + listen-on { 10.53.0.3; }; + listen-on-v6 { none; }; + notify no; + + response-policy { + zone "bl"; + zone "bl-given" policy given; + zone "bl-no-op" policy no-op; + zone "bl-nodata" policy nodata; + zone "bl-nxdomain" policy nxdomain; + zone "bl-cname" policy cname nodata.tld2.; + }; +}; + +key rndc_key { + secret "1234abcd8765"; + algorithm hmac-md5; +}; +controls { + inet 10.53.0.3 port 9953 allow { any; } keys { rndc_key; }; +}; + +logging { + category queries { default_stderr; }; + category query-errors { default_stderr; }; +}; + + +zone "." { type hint; file "hints"; }; + + +zone "bl." {type master; file "bl.db"; + allow-update {any;}; +}; +zone "bl-given." {type master; file "bl-given.db"; + allow-update {any;}; +}; +zone "bl-no-op." {type master; file "bl-no-op.db"; + allow-update {any;}; +}; +zone "bl-nodata." {type master; file "bl-nodata.db"; + allow-update {any;}; +}; +zone "bl-nxdomain." {type master; file "bl-nxdomain.db"; + allow-update {any;}; +}; +zone "bl-cname." {type master; file "bl-cname.db"; + allow-update {any;}; +}; + diff --git a/bin/tests/system/rpz/rpz.c b/bin/tests/system/rpz/rpz.c new file mode 100644 index 00000000..049adc5d --- /dev/null +++ b/bin/tests/system/rpz/rpz.c @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: rpz.c,v 1.3 2011-01-13 04:59:24 tbox Exp $ */ + +#include <config.h> + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + + +#define USAGE "usage: nsip | nsdname\n" + +int +main(int argc, char **argv) +{ + if (argc != 2) { + fputs(USAGE, stderr); + return (1); + } + + if (!strcasecmp(argv[1], "nsip")) { +#ifdef ENABLE_RPZ_NSIP + return (0); +#else + return (1); +#endif + } + + if (!strcasecmp(argv[1], "nsdname")) { +#ifdef ENABLE_RPZ_NSDNAME + return (0); +#else + return (1); +#endif + } + + fputs(USAGE, stderr); + return (1); +} diff --git a/bin/tests/system/rpz/setup.sh b/bin/tests/system/rpz/setup.sh new file mode 100644 index 00000000..95937671 --- /dev/null +++ b/bin/tests/system/rpz/setup.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: setup.sh,v 1.3 2011-01-13 04:59:24 tbox Exp $ + +sh clean.sh + +for NM in '' -given -no-op -nodata -nxdomain -cname; do + cp -f ns3/base.db ns3/bl$NM.db +done diff --git a/bin/tests/system/rpz/test1 b/bin/tests/system/rpz/test1 new file mode 100644 index 00000000..13c946d5 --- /dev/null +++ b/bin/tests/system/rpz/test1 @@ -0,0 +1,24 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: test1,v 1.4 2011-01-13 19:30:41 each Exp $ + + +server 10.53.0.3 5300 + +update add a0-1.tld2.bl. 300 CNAME . +update add a3-1.tld2.bl. 300 CNAME *. +update add *.sub1.tld2.bl. 300 A 12.12.12.12 + +send diff --git a/bin/tests/system/rpz/test2 b/bin/tests/system/rpz/test2 new file mode 100644 index 00000000..76815972 --- /dev/null +++ b/bin/tests/system/rpz/test2 @@ -0,0 +1,35 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: test2,v 1.4 2011-01-13 19:30:41 each Exp $ + + +server 10.53.0.3 5300 + +; NODATA a3-1.tld2 +update add 32.1.3.168.192.rpz-ip.bl 300 CNAME *. + +; NXDOMAIN for network of a4-1.tld2 +update add 24.0.4.168.192.rpz-ip.bl 300 CNAME . + +; poke hole in NXDOMAIN CIDR block to leave a4-1.tld2 unchanged +update add 32.1.4.168.192.rpz-ip.bl 300 CNAME 32.1.4.168.192 + +; NODATA a4-3.tld2 +update add 32.3.4.168.192.rpz-ip.bl 300 CNAME *. + +; NXDOMAIN for IPv6 a3-1.tld2 +update add 128.1.zz.3.2.2001.rpz-ip.bl 300 CNAME . + +send diff --git a/bin/tests/system/rpz/test3 b/bin/tests/system/rpz/test3 new file mode 100644 index 00000000..05759aaf --- /dev/null +++ b/bin/tests/system/rpz/test3 @@ -0,0 +1,22 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: test3,v 1.4 2011-01-13 19:30:41 each Exp $ + + +server 10.53.0.3 5300 + +update add *.tld2.rpz-nsdname.bl. 300 CNAME . + +send diff --git a/bin/tests/system/rpz/test4 b/bin/tests/system/rpz/test4 new file mode 100644 index 00000000..e614a69a --- /dev/null +++ b/bin/tests/system/rpz/test4 @@ -0,0 +1,22 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: test4,v 1.4 2011-01-13 19:30:41 each Exp $ + + +server 10.53.0.3 5300 + +update add 32.2.0.53.10.rpz-nsip.bl. 300 CNAME . + +send diff --git a/bin/tests/system/rpz/test5 b/bin/tests/system/rpz/test5 new file mode 100644 index 00000000..1f19d1bd --- /dev/null +++ b/bin/tests/system/rpz/test5 @@ -0,0 +1,36 @@ +; Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: test5,v 1.4 2011-01-13 19:30:41 each Exp $ + + +server 10.53.0.3 5300 +update add a3-1.tld2.bl-given. 300 CNAME . +send + +server 10.53.0.3 5300 +update add a3-2.tld2.bl-no-op. 300 CNAME . +send + +server 10.53.0.3 5300 +update add a3-3.tld2.bl-nodata. 300 CNAME . +send + +server 10.53.0.3 5300 +update add a3-4.tld2.bl-nxdomain. 300 CNAME *. +send + +server 10.53.0.3 5300 +update add a3-5.tld2.bl-cname. 300 CNAME . +send diff --git a/bin/tests/system/rpz/tests.sh b/bin/tests/system/rpz/tests.sh new file mode 100644 index 00000000..bf4f2bba --- /dev/null +++ b/bin/tests/system/rpz/tests.sh @@ -0,0 +1,223 @@ +# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: tests.sh,v 1.3 2011-01-13 04:59:24 tbox Exp $ + +# test response policy zones (RPZ) + +SYSTEMTESTTOP=.. +. $SYSTEMTESTTOP/conf.sh + +root=10.53.0.1 +s2=10.53.0.2 +s3=10.53.0.3 + +DIGCMD="$DIG +noadd +nosea +nocmd -p 5300" + + +USAGE="$0: [-x]" +while getopts "x" c; do + case $c in + x) set -x;; + *) echo "$USAGE" 1>&2; exit 1;; + esac +done +shift `expr $OPTIND - 1 || true` +if test "$#" -ne 0; then + echo "$USAGE" 1>&2 + exit 1 +fi +# really quit on control-C +trap 'exit 1' 1 2 15 + + +# set DIGNM=file name for dig output +# $1=target domain $2=optional query type $3=optional string +dignm () { + DIGNM=dig.out-$DIGNM_SUB-$1 + if test -n "$3"; then + DIGNM=$DIGNM-$3 + fi + if test -n "$2"; then + DIGNM=$DIGNM-`expr "x$2" : 'x-t *\(.*\)'` + fi +} + +setret () { + ret=1 + echo "$*" +} + +# check rewrite to NXDOMAIN +# $1=target domain $2=optional query type +nxdomain () { + dignm $1 "$2" + $DIGCMD +noauth $1 $2 @$s3 >$DIGNM + $PERL ../digcomp.pl dig.out-nxdomain $DIGNM || setret " in $DIGNM" +} + +# check rewrite to NODATA +# $1=target domain $2=optional query type +nodata () { + dignm $1 "$2" + $DIGCMD +noauth $1 $2 @$s3 >$DIGNM + $PERL ../digcomp.pl dig.out-nodata $DIGNM || setret " in $DIGNM" +} + +# check rewrite to "A 12.12.12.12" +# modify the output so that it is easily matched, but save the original line +# $1=target domain $2=optional query type +a12 () { + dignm $1 "$2" + $DIGCMD +noauth $1 $2 @$s3 \ + | sed -e "/^$1\. /{" \ + -e "s/.*/;xxx &/p" -e "s/^;xxx $1/a12.tld2/" -e '}' \ + >$DIGNM + $PERL ../digcomp.pl dig.out-a12 $DIGNM || ret=1 +} + +# check that a response is not rewritten +# $1=target domain $2=optional query type +nochange () { + dignm $1 "$2" ok + DIGNM_OK=$DIGNM + dignm $1 "$2" + $DIGCMD $1 $2 @$s3 >$DIGNM + $DIGCMD $1 $2 @$s2 >$DIGNM_OK + $PERL ../digcomp.pl $DIGNM_OK $DIGNM || ret=1 +} + +flush_db () { + if $RNDC -c ../common/rndc.conf -s $s3 -p 9953 freeze; then : ; else + echo "I:failed to freeze policy zone $1" + exit 1 + fi + if $RNDC -c ../common/rndc.conf -s $s3 -p 9953 thaw; then : ; else + echo "I:failed to thaw policy zone $1" + exit 1 + fi +} + +# $1=message $2=test file +start_test () { + ret=0 + if test -n "$1"; then + echo "I:checking $1" + fi + PREV_FILE=$2 + if test -n "$2"; then + DIGNM_SUB=`expr "$2" : 'test\(.\)'` + if $NSUPDATE -v $PREV_FILE; then : ; else + echo "I:failed to update policy zone $1 with $2" + exit 1 + fi + #flush_db + else + DIGNM_SUB="${DIGNM_SUB}x" + fi +} + +end_test () { + if test $ret != 0; then + echo "I:failed" + else + rm -f dig.out-${DIGNM_SUB}* + fi + if test -n "$PREV_FILE"; then + sed -e 's/ add / delete /' $PREV_FILE | $NSUPDATE + status=`expr $status + $ret` + #flush_db + fi +} + + +# make NXDOMAIN and NODATA prototypes +echo "I:making prototype RPZ NXDOMAIN, NODATA, and CNAME results" +$DIGCMD +noauth nonexistent @$s2 >dig.out-nxdomain +$DIGCMD +noauth nodata.tld2 @$s2 >dig.out-nodata +$DIGCMD +noauth a12.tld2 @$s2 >dig.out-a12 + +status=0 + +start_test "RPZ QNAME rewrites" test1 +nxdomain a0-1.tld2 +nodata a3-1.tld2 +a12 a4-1.sub1.tld2 +end_test + +start_test "RPZ IP rewrites" test2 +nodata a3-1.tld2 +nochange a3-2.tld2 +nxdomain a3-99.tld2 +nochange a4-1.tld2 +nxdomain a4-2.tld2 +nochange a4-2.tld2 -taaaa +nochange a4-2.tld2 -ttxt +nxdomain a4-2.tld2 -tany +nodata a4-3.tld2 +nxdomain a3-1.tld2 -tAAAA +nochange a4-1-aaaa.tld2 -tAAAA +end_test + +start_test "RPZ radix tree deletions" +nochange a3-1.tld2 +nochange a3-2.tld2 +nochange a4-1.tld2 +nochange a4-2.tld2 +nochange a4-2.tld2 -taaaa +nochange a4-2.tld2 -ttxt +nochange a4-2.tld2 -tany +nochange a4-3.tld2 +nochange a3-1.tld2 -tAAAA +nochange a4-1-aaaa.tld2 -tAAAA +end_test + +if ./rpz nsdname; then + start_test "RPZ NSDNAME rewrites" test3 + nochange a3-1.tld2 + nxdomain a3-1.sub1.tld2 + nxdomain a3-1.sub2.sub1.tld2 + end_test +else + echo "I:RPZ NSDNAME not checked; named was not built with --enable-rpz-nsdname" +fi + +if ./rpz nsip; then + start_test "RPZ NSIP rewrites" test4 + nxdomain a3-1.tld2 + nochange . + end_test +else + echo "I:RPZ NSIP not checked; named was not built with --enable-rpz-nsip" +fi + +start_test "RPZ policy overrides" test5 +nxdomain a3-1.tld2 +nochange a3-2.tld2 +nodata a3-3.tld2 +nxdomain a3-4.tld2 +dignm a3-5.tld2 -tany +$DIGCMD +noauth a3-5.tld2 -tany @$s3 >$DIGNM +if grep CNAME $DIGNM >/dev/null; then : ; else + echo "'policy cname' failed" + ret=1 +fi +end_test + +if test "$status" -eq 0; then + rm -f dig.out* +fi + +echo "I:exit status: $status" +exit $status diff --git a/bin/tests/system/run.sh b/bin/tests/system/run.sh index a4911c5f..81f3f2b5 100644 --- a/bin/tests/system/run.sh +++ b/bin/tests/system/run.sh @@ -15,7 +15,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: run.sh,v 1.44 2010/06/08 23:50:24 tbox Exp $ +# $Id: run.sh,v 1.45 2010-12-20 21:35:45 each Exp $ # # Run a system test. @@ -58,14 +58,14 @@ $PERL testsock.pl || { # Check for test-specific prerequisites. -if - test ! -f $test/prereq.sh || - ( cd $test && sh prereq.sh "$@" ) -then +test ! -f $test/prereq.sh || ( cd $test && sh prereq.sh "$@" ) +result=$? + +if [ $result -eq 0 ]; then : prereqs ok else echo "I:Prerequisites for $test missing, skipping test." >&2 - echo "R:UNTESTED" >&2 + [ $result -eq 255 ] && echo "R:SKIPPED" || echo "R:UNTESTED" echo "E:$test:`date`" >&2 exit 0 fi diff --git a/bin/tests/system/staticstub/clean.sh b/bin/tests/system/staticstub/clean.sh new file mode 100755 index 00000000..2189c182 --- /dev/null +++ b/bin/tests/system/staticstub/clean.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: clean.sh,v 1.3 2010-12-17 00:57:38 marka Exp $ + +rm -rf */*.signed +rm -rf */K* +rm -rf */dsset-* +rm -rf random.data +rm -rf */trusted.conf +rm -f ns?/named.run +rm -f ns?/named.memstats +rm -f ns?/named_dump.db +rm -f ns2/named.conf +rm -f ns3/named.conf +rm -f ns3/example.db +rm -f ns4/sub.example.db +rm -f dig.out.* diff --git a/bin/tests/system/staticstub/conf/bad01.conf b/bin/tests/system/staticstub/conf/bad01.conf new file mode 100644 index 00000000..429f10cd --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad01.conf @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad01.conf,v 1.3 2010-12-18 23:47:10 tbox Exp $ + +# prefix cannot be specified in the address list field. +zone "example.com" { + type static-stub; + server-addresses { 192.0.2.0/24; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad02.conf b/bin/tests/system/staticstub/conf/bad02.conf new file mode 100644 index 00000000..b76c65ad --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad02.conf @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad02.conf,v 1.3 2010-12-18 23:47:10 tbox Exp $ + +# server-names must be valid domain names. +zone "example.com" { + type static-stub; + server-names { "\11.example.net"; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad03.conf b/bin/tests/system/staticstub/conf/bad03.conf new file mode 100644 index 00000000..58de5bc4 --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad03.conf @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad03.conf,v 1.3 2010-12-18 23:47:10 tbox Exp $ + +# Explicit port specification is not allowed (for now). +zone "example.com" { + type static-stub; + server-addresses { 192.0.2.2 port 5301; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad04.conf b/bin/tests/system/staticstub/conf/bad04.conf new file mode 100644 index 00000000..ea44225f --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad04.conf @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad04.conf,v 1.3 2010-12-18 23:47:10 tbox Exp $ + +# scoped address is not allowed. +zone "example.com" { + type static-stub; + server-addresses { fe80::1%1; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad05.conf b/bin/tests/system/staticstub/conf/bad05.conf new file mode 100644 index 00000000..518e12de --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad05.conf @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad05.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# server-name must not be a subdomain of the zone name. +zone "example.com" { + type static-stub; + # server-name equals to the zone name. + server-names { "example.com"; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad06.conf b/bin/tests/system/staticstub/conf/bad06.conf new file mode 100644 index 00000000..a3338699 --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad06.conf @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad06.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# server-name must not be a subdomain of the zone name. +zone "example.com" { + type static-stub; + # server-name is a real subdomain of the zone name. + server-names { "ns.example.com"; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad07.conf b/bin/tests/system/staticstub/conf/bad07.conf new file mode 100644 index 00000000..36b8e38c --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad07.conf @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad07.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# server-addresses must not be specified more than once. +zone "example.com" { + type static-stub; + server-addresses { 192.0.2.1; }; + server-addresses { 192.0.2.2; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad08.conf b/bin/tests/system/staticstub/conf/bad08.conf new file mode 100644 index 00000000..cffb480a --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad08.conf @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad08.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# server-names must not be specified more than once. +zone "example.com" { + type static-stub; + server-names { ns1.example.net; }; + server-names { ns2.example.net; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad09.conf b/bin/tests/system/staticstub/conf/bad09.conf new file mode 100644 index 00000000..c5e0e856 --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad09.conf @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad09.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# "masters" isn't allowed for a static-stub zone (unlike a stub zone). +zone "example.com" { + type static-stub; + masters { 192.0.2.1; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad10.conf b/bin/tests/system/staticstub/conf/bad10.conf new file mode 100644 index 00000000..4a40dcc3 --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad10.conf @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad10.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# "server-addresses" isn't allowed for a pure stub zone. +# (or most of other types of zones, but confirming one case should be good +# enough) +zone "example.com" { + type stub; + server-addresses { 192.0.2.1; }; +}; diff --git a/bin/tests/system/staticstub/conf/bad11.conf b/bin/tests/system/staticstub/conf/bad11.conf new file mode 100644 index 00000000..1199e32c --- /dev/null +++ b/bin/tests/system/staticstub/conf/bad11.conf @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: bad11.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# "server-names" isn't allowed for a pure stub zone. +# (or most of other types of zones, but confirming one case should be good +# enough) +zone "example.com" { + type stub; + server-names { "ns.example.net"; }; +}; diff --git a/bin/tests/system/staticstub/conf/good01.conf b/bin/tests/system/staticstub/conf/good01.conf new file mode 100644 index 00000000..ef7e53ce --- /dev/null +++ b/bin/tests/system/staticstub/conf/good01.conf @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: good01.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# both server-addresses and server-names can be specified. +zone "example.com" { + type static-stub; + server-addresses { 192.0.2.1; }; + server-names { "ns.example.net"; }; +}; diff --git a/bin/tests/system/staticstub/conf/good02.conf b/bin/tests/system/staticstub/conf/good02.conf new file mode 100644 index 00000000..d7e1ac5f --- /dev/null +++ b/bin/tests/system/staticstub/conf/good02.conf @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: good02.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# both IPv4 and IPv6 server-addresses should be allowable. +zone "example.com" { + type static-stub; + server-addresses { 192.0.2.1; 2001:db8::53; }; +}; diff --git a/bin/tests/system/staticstub/conf/good03.conf b/bin/tests/system/staticstub/conf/good03.conf new file mode 100644 index 00000000..cc50c8f1 --- /dev/null +++ b/bin/tests/system/staticstub/conf/good03.conf @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: good03.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# server-addresses can be empty, though it's meaningless. +zone "example.com" { + type static-stub; + server-addresses {}; +}; diff --git a/bin/tests/system/staticstub/conf/good04.conf b/bin/tests/system/staticstub/conf/good04.conf new file mode 100644 index 00000000..e0c3533f --- /dev/null +++ b/bin/tests/system/staticstub/conf/good04.conf @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: good04.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# server-names can be empty, though it's meaningless. +zone "example.com" { + type static-stub; + server-names {}; +}; diff --git a/bin/tests/system/staticstub/conf/good05.conf b/bin/tests/system/staticstub/conf/good05.conf new file mode 100644 index 00000000..2d387a0e --- /dev/null +++ b/bin/tests/system/staticstub/conf/good05.conf @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: good05.conf,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +# less common options +zone "example.com" { + type static-stub; + allow-query { 127.0.0.1; }; + zone-statistics yes; +}; diff --git a/bin/tests/system/staticstub/knowngood.dig.out.rec b/bin/tests/system/staticstub/knowngood.dig.out.rec new file mode 100644 index 00000000..15f84561 --- /dev/null +++ b/bin/tests/system/staticstub/knowngood.dig.out.rec @@ -0,0 +1,21 @@ + +; <<>> DiG 8.2 <<>> -p @10.53.0.3 data.child.example txt +; (1 server found) +;; res options: init recurs defnam dnsrch +;; got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6 +;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 +;; QUERY SECTION: +;; data.example, type = TXT, class = IN + +;; ANSWER SECTION: +data.example. 5M IN TXT "some" "test" "data" + +;; AUTHORITY SECTION: +example. 5M IN NS ns4.example. + +;; Total query time: 8 msec +;; FROM: draco to SERVER: 10.53.0.3 +;; WHEN: Wed Jun 21 10:58:54 2000 +;; MSG SIZE sent: 36 rcvd: 97 + diff --git a/bin/tests/system/staticstub/ns1/named.conf b/bin/tests/system/staticstub/ns1/named.conf new file mode 100644 index 00000000..85732918 --- /dev/null +++ b/bin/tests/system/staticstub/ns1/named.conf @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.3 2010-12-17 00:57:38 marka Exp $ */ + +controls { /* empty */ }; + +options { + query-source address 10.53.0.1; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.1; }; + listen-on-v6 { none; }; + recursion no; + notify no; +}; + +zone "." { type master; file "root.db"; }; diff --git a/bin/tests/system/staticstub/ns1/root.db b/bin/tests/system/staticstub/ns1/root.db new file mode 100644 index 00000000..434c2f98 --- /dev/null +++ b/bin/tests/system/staticstub/ns1/root.db @@ -0,0 +1,24 @@ +; Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: root.db,v 1.1 2010-12-17 00:57:38 marka Exp $ + +$TTL 120 +@ SOA ns.utld hostmaster.ns.utld ( 46 3600 1200 604800 60 ) +@ NS ns.utld +ns.utld A 10.53.0.1 +; +example.com. NS example. + +ns.example.net. A 10.53.0.3 diff --git a/bin/tests/system/staticstub/ns2/named.conf.in b/bin/tests/system/staticstub/ns2/named.conf.in new file mode 100644 index 00000000..8ce05e77 --- /dev/null +++ b/bin/tests/system/staticstub/ns2/named.conf.in @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: named.conf.in,v 1.3 2010-12-18 23:47:11 tbox Exp $ + +include "../../common/controls.conf"; + +include "trusted.conf"; + +options { + query-source address 10.53.0.2; + notify-source 10.53.0.2; + transfer-source 10.53.0.2; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.2; }; + listen-on-v6 { none; }; + recursion yes; + notify no; +}; + +zone "." { + type hint; + file "../../common/root.hint"; +}; + +zone "example" { + type static-stub; + server-addresses { 10.53.0.3; }; + allow-query { !10.53.0.7; any; }; +}; + +zone "example.org" { + type static-stub; + SERVER_CONFIG_PLACEHOLDER +}; + +zone "example.info" { + type static-stub; + server-addresses { ::1; }; #ns4 +}; diff --git a/bin/tests/system/staticstub/ns3/example.db.in b/bin/tests/system/staticstub/ns3/example.db.in new file mode 100644 index 00000000..68a770c1 --- /dev/null +++ b/bin/tests/system/staticstub/ns3/example.db.in @@ -0,0 +1,37 @@ +; Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: example.db.in,v 1.1 2010-12-17 00:57:39 marka Exp $ + +$ORIGIN . +$TTL 300 ; 5 minutes +example IN SOA ns3.example. hostmaster.example. ( + 2010080900 ; serial + 20 ; refresh (20 seconds) + 20 ; retry (20 seconds) + 1814400 ; expire (3 weeks) + 3600 ; minimum (1 hour) + ) +example. NS ns4.example. ; fake +example. A 10.53.0.4 ; fake +example. AAAA ::1 ; fake + +ns4.example. A 10.53.0.4 +data.example. TXT "some" "test" "data" +data2.example. TXT "2nd test data" +data3.example. TXT "3rd test data" +data4.example. TXT "4th test data" + +sub.example. NS ns.sub.example. +ns.sub.example. A 10.53.0.4 diff --git a/bin/tests/system/staticstub/ns3/example.org.db b/bin/tests/system/staticstub/ns3/example.org.db new file mode 100644 index 00000000..5b35cdab --- /dev/null +++ b/bin/tests/system/staticstub/ns3/example.org.db @@ -0,0 +1,29 @@ +; Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: example.org.db,v 1.1 2010-12-17 00:57:39 marka Exp $ + +$ORIGIN . +$TTL 300 ; 5 minutes +example.org IN SOA ns.example.org. hostmaster.example.org. ( + 2010080906 ; serial + 20 ; refresh (20 seconds) + 20 ; retry (20 seconds) + 1814400 ; expire (3 weeks) + 3600 ; minimum (1 hour) + ) +example.org. NS ns.example.org. +ns.example.org. A 10.53.0.3 + +data.example.org. TXT "example org data" diff --git a/bin/tests/system/staticstub/ns3/named.conf.in b/bin/tests/system/staticstub/ns3/named.conf.in new file mode 100644 index 00000000..e5950df9 --- /dev/null +++ b/bin/tests/system/staticstub/ns3/named.conf.in @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: named.conf.in,v 1.4 2010-12-18 23:47:11 tbox Exp $ + +key rndc_key { + secret "1234abcd8765"; + algorithm hmac-md5; +}; + +controls { + inet 10.53.0.3 port 9953 allow { any; } keys { rndc_key; }; +}; + +options { + query-source address 10.53.0.3; + notify-source 10.53.0.3; + transfer-source 10.53.0.3; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.3; }; + listen-on-v6 { none; }; + recursion no; + notify no; +}; + +EXAMPLE_ZONE_PLACEHOLDER + +zone "example.org" { + type master; + file "example.org.db"; +}; diff --git a/bin/tests/system/staticstub/ns3/sign.sh b/bin/tests/system/staticstub/ns3/sign.sh new file mode 100755 index 00000000..c22835bd --- /dev/null +++ b/bin/tests/system/staticstub/ns3/sign.sh @@ -0,0 +1,49 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: sign.sh,v 1.3 2010-12-17 00:57:39 marka Exp $ + +SYSTEMTESTTOP=../.. +. $SYSTEMTESTTOP/conf.sh + +RANDFILE=../random.data + +zone=example. +infile=example.db.in +zonefile=example.db + +(cd ../ns4 && sh -e sign.sh ) + +cp ../ns4/dsset-sub.example. . + +keyname1=`$KEYGEN -q -r $RANDFILE -a RSASHA256 -b 1024 -n zone $zone` +keyname2=`$KEYGEN -q -r $RANDFILE -a RSASHA256 -b 2048 -f KSK -n zone $zone` +cat $infile $keyname1.key $keyname2.key > $zonefile + +$SIGNER -g -r $RANDFILE -o $zone $zonefile > /dev/null 2>&1 + +# Configure the resolving server with a trusted key. + +cat $keyname2.key | grep -v '^; ' | $PERL -n -e ' +local ($dn, $class, $type, $flags, $proto, $alg, @rest) = split; +local $key = join("", @rest); +print <<EOF +trusted-keys { + "$dn" $flags $proto $alg "$key"; +}; +EOF +' > trusted.conf +cp trusted.conf ../ns2/trusted.conf diff --git a/bin/tests/system/staticstub/ns4/example.com.db b/bin/tests/system/staticstub/ns4/example.com.db new file mode 100644 index 00000000..de64df59 --- /dev/null +++ b/bin/tests/system/staticstub/ns4/example.com.db @@ -0,0 +1,28 @@ +; Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: example.com.db,v 1.1 2010-12-17 00:57:39 marka Exp $ + +$ORIGIN . +$TTL 300 ; 5 minutes +example.com IN SOA example. hostmaster.example. ( + 2010080701 ; serial + 20 ; refresh (20 seconds) + 20 ; retry (20 seconds) + 1814400 ; expire (3 weeks) + 3600 ; minimum (1 hour) + ) +example.com. NS example. + +data.example.com. TXT "example com data" diff --git a/bin/tests/system/staticstub/ns4/example.info.db b/bin/tests/system/staticstub/ns4/example.info.db new file mode 100644 index 00000000..e81eb81f --- /dev/null +++ b/bin/tests/system/staticstub/ns4/example.info.db @@ -0,0 +1,29 @@ +; Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: example.info.db,v 1.1 2010-12-17 00:57:39 marka Exp $ + +$ORIGIN . +$TTL 300 ; 5 minutes +example.info IN SOA ns.example.info. hostmaster.example.info. ( + 2010080902 ; serial + 20 ; refresh (20 seconds) + 20 ; retry (20 seconds) + 1814400 ; expire (3 weeks) + 3600 ; minimum (1 hour) + ) +example.info. NS ns.example.info. +ns.example.info. A 10.53.0.4 + +data.example.info. TXT "example info data" diff --git a/bin/tests/system/staticstub/ns4/example.org.db b/bin/tests/system/staticstub/ns4/example.org.db new file mode 100644 index 00000000..e61394a1 --- /dev/null +++ b/bin/tests/system/staticstub/ns4/example.org.db @@ -0,0 +1,30 @@ +; Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: example.org.db,v 1.1 2010-12-17 00:57:39 marka Exp $ + +$ORIGIN . +$TTL 300 ; 5 minutes +example.org IN SOA ns.example.org. hostmaster.example.org. ( + 2010080908 ; serial + 20 ; refresh (20 seconds) + 20 ; retry (20 seconds) + 1814400 ; expire (3 weeks) + 3600 ; minimum (1 hour) + ) +example.org. NS ns.example.org. +ns.example.org. A 10.53.0.3 + +data.example.org. TXT "example org data" +data2.example.org. TXT "2nd example org data" diff --git a/bin/tests/system/staticstub/ns4/named.conf b/bin/tests/system/staticstub/ns4/named.conf new file mode 100644 index 00000000..0c322cb9 --- /dev/null +++ b/bin/tests/system/staticstub/ns4/named.conf @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: named.conf,v 1.4 2010-12-18 23:47:11 tbox Exp $ + +controls { /* empty */ }; + +options { + query-source address 10.53.0.4; + notify-source 10.53.0.4; + transfer-source 10.53.0.4; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.4; }; + listen-on-v6 { ::1; }; + recursion no; + notify no; +}; + +zone "example.com" { + type master; + file "example.com.db"; +}; + +zone "example.org" { + type master; + file "example.org.db"; +}; + +zone "sub.example" { + type master; + file "sub.example.db.signed"; +}; + +zone "example.info" { + type master; + file "example.info.db"; +}; diff --git a/bin/tests/system/staticstub/ns4/sign.sh b/bin/tests/system/staticstub/ns4/sign.sh new file mode 100755 index 00000000..f4cf9099 --- /dev/null +++ b/bin/tests/system/staticstub/ns4/sign.sh @@ -0,0 +1,33 @@ +#!/bin/sh -e +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: sign.sh,v 1.3 2010-12-17 00:57:39 marka Exp $ + +SYSTEMTESTTOP=../.. +. $SYSTEMTESTTOP/conf.sh + +RANDFILE=../random.data + +zone=sub.example +infile=${zone}.db.in +zonefile=${zone}.db + +keyname1=`$KEYGEN -q -r $RANDFILE -a NSEC3RSASHA1 -b 768 -n zone $zone` +keyname2=`$KEYGEN -q -r $RANDFILE -a NSEC3RSASHA1 -b 1024 -f KSK -n zone $zone` + +cat $infile $keyname1.key $keyname2.key > $zonefile + +$SIGNER -r $RANDFILE -o $zone $zonefile > /dev/null 2>&1 diff --git a/bin/tests/system/staticstub/ns4/sub.example.db.in b/bin/tests/system/staticstub/ns4/sub.example.db.in new file mode 100644 index 00000000..094f57e6 --- /dev/null +++ b/bin/tests/system/staticstub/ns4/sub.example.db.in @@ -0,0 +1,31 @@ +; Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +; +; Permission to use, copy, modify, and/or distribute this software for any +; purpose with or without fee is hereby granted, provided that the above +; copyright notice and this permission notice appear in all copies. +; +; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +; PERFORMANCE OF THIS SOFTWARE. + +; $Id: sub.example.db.in,v 1.1 2010-12-17 00:57:39 marka Exp $ + +$ORIGIN . +$TTL 300 ; 5 minutes +sub.example. IN SOA ns.sub.example. hostmaster.example. ( + 2010080900 ; serial + 20 ; refresh (20 seconds) + 20 ; retry (20 seconds) + 1814400 ; expire (3 weeks) + 3600 ; minimum (1 hour) + ) +sub.example. NS ns.sub.example. +ns.sub.example. A 10.53.0.4 + +data1.sub.example. TXT "1st sub test data" +data2.sub.example. TXT "2nd sub test data" +data3.sub.example. TXT "3rd sub test data" diff --git a/bin/tests/system/staticstub/setup.sh b/bin/tests/system/staticstub/setup.sh new file mode 100755 index 00000000..de9ce2b0 --- /dev/null +++ b/bin/tests/system/staticstub/setup.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: setup.sh,v 1.3 2010-12-17 00:57:38 marka Exp $ + +sed 's/SERVER_CONFIG_PLACEHOLDER/server-names { "ns.example.net"; };/' ns2/named.conf.in > ns2/named.conf + +sed 's/EXAMPLE_ZONE_PLACEHOLDER/zone "example" { type master; file "example.db.signed"; };/' ns3/named.conf.in > ns3/named.conf + +../../../tools/genrandom 400 random.data + +cd ns3 && sh -e sign.sh diff --git a/bin/tests/system/staticstub/tests.sh b/bin/tests/system/staticstub/tests.sh new file mode 100755 index 00000000..c110e83e --- /dev/null +++ b/bin/tests/system/staticstub/tests.sh @@ -0,0 +1,202 @@ +#!/bin/sh +# +# Copyright (C) 2010, 2011 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: tests.sh,v 1.5 2011-01-11 23:47:12 tbox Exp $ + +SYSTEMTESTTOP=.. +. $SYSTEMTESTTOP/conf.sh + +status=0 +n=0 + +for conf in conf/good*.conf +do + n=`expr $n + 1` + echo "I:checking that $conf is accepted ($n)" + ret=0 + $CHECKCONF "$conf" || ret=1 + if [ $ret != 0 ]; then echo "I:failed"; fi + status=`expr $status + $ret` +done + +for conf in conf/bad*.conf +do + n=`expr $n + 1` + echo "I:checking that $conf is rejected ($n)" + ret=0 + $CHECKCONF "$conf" >/dev/null && ret=1 + if [ $ret != 0 ]; then echo "I:failed"; fi + status=`expr $status + $ret` +done + +n=`expr $n + 1` +echo "I:trying an axfr that should be denied (NOTAUTH) ($n)" +ret=0 +$DIG +tcp data.example. @10.53.0.2 axfr -p 5300 > dig.out.ns2.test$n || ret=1 +grep "; Transfer failed." dig.out.ns2.test$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +n=`expr $n + 1` +echo "I:non recursive query for a static-stub zone with server name should be rejected ($n)" +ret=0 + $DIG +tcp +norec data.example. @10.53.0.2 txt -p 5300 > dig.out.ns2.test$n \ + || ret=1 +grep "REFUSED" dig.out.ns2.test$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +n=`expr $n + 1` +echo "I:non recursive query for a static-stub zone with server name should be rejected ($n)" +ret=0 +$DIG +tcp +norec data.example.org. @10.53.0.2 txt -p 5300 > dig.out.ns2.test$n \ + || ret=1 +grep "REFUSED" dig.out.ns2.test$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +n=`expr $n + 1` +echo "I:allow-query ACL ($n)" +ret=0 +$DIG +tcp +norec data.example. @10.53.0.2 txt -b 10.53.0.7 -p 5300 \ + > dig.out.ns2.test$n || ret=1 +grep "REFUSED" dig.out.ns2.test$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +n=`expr $n + 1` +echo "I:look for static-stub zone data with recursion (should be found) ($n)" +ret=0 +$DIG +tcp data.example. @10.53.0.2 txt -p 5300 > dig.out.ns2.test$n || ret=1 +$PERL ../digcomp.pl knowngood.dig.out.rec dig.out.ns2.test$n || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +n=`expr $n + 1` +echo "I:checking authoritative NS is ignored for delegation ($n)" +ret=0 +# the auth server returns a different (and incorrect) NS for .example. +$DIG +tcp example. @10.53.0.2 ns -p 5300 > dig.out.ns2.test1.$n || ret=1 +grep "ns4.example." dig.out.ns2.test1.$n > /dev/null || ret=1 +# but static-stub configuration should still be used +$DIG +tcp data2.example. @10.53.0.2 txt -p 5300 > dig.out.ns2.test2.$n || ret=1 +grep "2nd test data" dig.out.ns2.test2.$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +n=`expr $n + 1` +echo "I:checking queries for a child zone of the static-stub zone ($n)" +ret=0 +# prime the delegation to a child zone of the static-stub zone +$DIG +tcp data1.sub.example. @10.53.0.2 txt -p 5300 > dig.out.ns2.test1.$n || ret=1 +grep "1st sub test data" dig.out.ns2.test1.$n > /dev/null || ret=1 +# temporarily disable the the parent zone +sed 's/EXAMPLE_ZONE_PLACEHOLDER//' ns3/named.conf.in > ns3/named.conf +$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload 2>&1 | sed 's/^/I:ns3 /' +# query the child zone again. this should directly go to the child and +# succeed. +$DIG +tcp data2.sub.example. @10.53.0.2 txt -p 5300 > dig.out.ns2.test2.$n || ret=1 +grep "2nd sub test data" dig.out.ns2.test2.$n > /dev/null || ret=1 +# re-enable the parent +sed 's/EXAMPLE_ZONE_PLACEHOLDER/zone "example" { type master; file "example.db.signed"; };/' ns3/named.conf.in > ns3/named.conf +$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 reload 2>&1 | sed 's/^/I:ns3 /' +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +n=`expr $n + 1` +echo "I:checking authoritative NS addresses are ignored for delegation ($n)" +ret=0 +# the auth server returns a different (and incorrect) A/AAA RR for .example. +$DIG +tcp example. @10.53.0.2 a -p 5300 > dig.out.ns2.test1.$n || ret=1 +grep "10.53.0.4" dig.out.ns2.test1.$n > /dev/null || ret=1 +$DIG +tcp example. @10.53.0.2 aaaa -p 5300 > dig.out.ns2.test2.$n || ret=1 +grep "::1" dig.out.ns2.test2.$n > /dev/null || ret=1 +# reload the server. this will flush the ADB. +$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /' +# ask another RR that would require delegation. static-stub configuration +# should still be used instead of the authoritative A/AAAA cached above. +$DIG +tcp data3.example. @10.53.0.2 txt -p 5300 > dig.out.ns2.test3.$n || ret=1 +grep "3rd test data" dig.out.ns2.test3.$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +# the authoritative server of the query domain (example.com) is the apex +# name of the static-stub zone (example). in this case the static-stub +# configuration must be ignored and cached information must be used. +n=`expr $n + 1` +echo "I:checking NS of static-stub is ignored when referenced from other domain ($n)" +ret=0 +$DIG +tcp data.example.com. @10.53.0.2 txt -p 5300 > dig.out.ns2.test$n || ret=1 +grep "example com data" dig.out.ns2.test$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +# check server-names +n=`expr $n + 1` +echo "I:checking static-stub with a server-name ($n)" +ret=0 +$DIG +tcp data.example.org. @10.53.0.2 txt -p 5300 > dig.out.ns2.test$n || ret=1 +grep "example org data" dig.out.ns2.test$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +n=`expr $n + 1` +# Note: for a short term workaround we use ::1, assuming it's configured and +# usable for our tests. We should eventually use the test ULA and available +# checks introduced in change 2916. +if $PERL ../testsock6.pl ::1 +then + echo "I:checking IPv6 static-stub address ($n)" + ret=0 + $DIG +tcp data.example.info. @10.53.0.2 txt -p 5300 > dig.out.ns2.test$n || ret=1 + grep "example info data" dig.out.ns2.test$n > /dev/null || ret=1 + if [ $ret != 0 ]; then echo "I:failed"; fi + status=`expr $status + $ret` +else + echo "I:SKIPPED: checking IPv6 static-stub address ($n)" +fi + +n=`expr $n + 1` +echo "I:look for static-stub zone data with DNSSEC validation ($n)" +ret=0 +$DIG +tcp +dnssec data4.example. @10.53.0.2 txt -p 5300 > dig.out.ns2.test$n || ret=1 +grep "ad; QUERY" dig.out.ns2.test$n > /dev/null || ret=1 +grep "4th test data" dig.out.ns2.test$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +n=`expr $n + 1` +echo "I:look for a child of static-stub zone data with DNSSEC validation ($n)" +ret=0 +$DIG +tcp +dnssec data3.sub.example. @10.53.0.2 txt -p 5300 > dig.out.ns2.test$n || ret=1 +grep "ad; QUERY" dig.out.ns2.test$n > /dev/null || ret=1 +grep "3rd sub test data" dig.out.ns2.test$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +# reload with a different name server: exisitng zone shouldn't be reused. +n=`expr $n + 1` +echo "I:checking server reload with a different static-stub config ($n)" +ret=0 +sed 's/SERVER_CONFIG_PLACEHOLDER/server-addresses { 10.53.0.4; };/' ns2/named.conf.in > ns2/named.conf +$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /' +$DIG +tcp data2.example.org. @10.53.0.2 txt -p 5300 > dig.out.ns2.test$n || ret=1 +grep "2nd example org data" dig.out.ns2.test$n > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + +echo "I:exit status: $status" +exit $status diff --git a/bin/tests/system/tkey/keycreate.c b/bin/tests/system/tkey/keycreate.c index 23e6d424..55545900 100644 --- a/bin/tests/system/tkey/keycreate.c +++ b/bin/tests/system/tkey/keycreate.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: keycreate.c,v 1.18 2009/09/01 00:22:25 jinmei Exp $ */ +/* $Id: keycreate.c,v 1.20 2011-01-11 23:47:13 tbox Exp $ */ #include <config.h> @@ -276,6 +276,7 @@ main(int argc, char *argv[]) { view = NULL; RUNCHECK(dns_view_create(mctx, 0, "_test", &view)); dns_view_setkeyring(view, ring); + dns_tsigkeyring_detach(&ring); sock = NULL; RUNCHECK(isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp, diff --git a/bin/tests/system/tkey/keydelete.c b/bin/tests/system/tkey/keydelete.c index ec989504..eacf8ff3 100644 --- a/bin/tests/system/tkey/keydelete.c +++ b/bin/tests/system/tkey/keydelete.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: keydelete.c,v 1.16 2010/12/09 00:54:33 marka Exp $ */ +/* $Id: keydelete.c,v 1.18 2011-01-11 23:47:13 tbox Exp $ */ #include <config.h> @@ -248,6 +248,8 @@ main(int argc, char **argv) { isc_socketmgr_destroy(&socketmgr); isc_timermgr_destroy(&timermgr); + dns_tsigkeyring_detach(&ring); + dns_tsigkey_detach(&tsigkey); dns_tkeyctx_destroy(&tctx); diff --git a/bin/tests/system/tsiggss/authsock.pl b/bin/tests/system/tsiggss/authsock.pl new file mode 100644 index 00000000..cd1ff852 --- /dev/null +++ b/bin/tests/system/tsiggss/authsock.pl @@ -0,0 +1,96 @@ +#!/usr/bin/env perl +# +# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: authsock.pl,v 1.3 2011-01-07 23:47:07 tbox Exp $ + +# test the update-policy external protocol + +require 5.6.0; + +use IO::Socket::UNIX; +use Getopt::Long; + +my $path; +my $typeallowed = "A"; +my $pidfile = "authsock.pid"; +my $timeout = 0; + +GetOptions("path=s" => \$path, + "type=s" => \$typeallowed, + "pidfile=s" => \$pidfile, + "timeout=i" => \$timeout); + +if (!defined($path)) { + print("Usage: authsock.pl --path=<sockpath> --type=type --pidfile=pidfile\n"); + exit(1); +} + +unlink($path); +my $server = IO::Socket::UNIX->new(Local => $path, Type => SOCK_STREAM, Listen => 8) or + die "unable to create socket $path"; +chmod 0777, $path; + +# setup our pidfile +open(my $pid,">",$pidfile) + or die "unable to open pidfile $pidfile"; +print $pid "$$\n"; +close($pid); + +if ($timeout != 0) { + # die after the given timeout + alarm($timeout); +} + +while (my $client = $server->accept()) { + $client->recv(my $buf, 8, 0); + my ($version, $req_len) = unpack('N N', $buf); + + if ($version != 1 || $req_len < 17) { + printf("Badly formatted request\n"); + $client->send(pack('N', 2)); + next; + } + + $client->recv(my $buf, $req_len - 8, 0); + + my ($signer, + $name, + $addr, + $type, + $key, + $key_data) = unpack('Z* Z* Z* Z* Z* N/a', $buf); + + if ($req_len != length($buf)+8) { + printf("Length mismatch %u %u\n", $req_len, length($buf)+8); + $client->send(pack('N', 2)); + next; + } + + printf("version=%u signer=%s name=%s addr=%s type=%s key=%s key_data_len=%u\n", + $version, $signer, $name, $addr, $type, $key, length($key_data)); + + my $result; + if ($typeallowed eq $type) { + $result = 1; + printf("allowed type %s == %s\n", $type, $typeallowed); + } else { + printf("disallowed type %s != %s\n", $type, $typeallowed); + $result = 0; + } + + $reply = pack('N', $result); + $client->send($reply); +} diff --git a/bin/tests/system/tsiggss/clean.sh b/bin/tests/system/tsiggss/clean.sh new file mode 100644 index 00000000..9196e8b9 --- /dev/null +++ b/bin/tests/system/tsiggss/clean.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# +# Clean up after tsiggss tests. +# + +rm -f ns1/*.jnl ns1/update.txt ns1/auth.sock +rm -f */named.memstats +rm -f authsock.pid diff --git a/bin/tests/system/tsiggss/ns1/administrator.ccache b/bin/tests/system/tsiggss/ns1/administrator.ccache Binary files differnew file mode 100644 index 00000000..e6c2e747 --- /dev/null +++ b/bin/tests/system/tsiggss/ns1/administrator.ccache diff --git a/bin/tests/system/tsiggss/ns1/dns.keytab b/bin/tests/system/tsiggss/ns1/dns.keytab Binary files differnew file mode 100644 index 00000000..dcb863b7 --- /dev/null +++ b/bin/tests/system/tsiggss/ns1/dns.keytab diff --git a/bin/tests/system/tsiggss/ns1/example.nil.db b/bin/tests/system/tsiggss/ns1/example.nil.db new file mode 100644 index 00000000..001bb298 --- /dev/null +++ b/bin/tests/system/tsiggss/ns1/example.nil.db @@ -0,0 +1,51 @@ +; -*- zone -*- +; this was generated by a Samba4 provision, and is typical +; of a AD DNS zone +$ORIGIN example.nil. +$TTL 1W +@ IN SOA blu hostmaster ( + 2010113027 ; serial + 2D ; refresh + 4H ; retry + 6W ; expiry + 1W ) ; minimum + IN NS blu + + IN A 10.53.0.1 +; + +blu IN A 10.53.0.1 +gc._msdcs IN A 10.53.0.1 + +fb33eb58-5d58-4100-a114-256e0a97ffc1._msdcs IN CNAME blu +; +; global catalog servers +_gc._tcp IN SRV 0 100 3268 blu +_gc._tcp.Default-First-Site-Name._sites IN SRV 0 100 3268 blu +_ldap._tcp.gc._msdcs IN SRV 0 100 3268 blu +_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs IN SRV 0 100 3268 blu +; +; ldap servers +_ldap._tcp IN SRV 0 100 389 blu +_ldap._tcp.dc._msdcs IN SRV 0 100 389 blu +_ldap._tcp.pdc._msdcs IN SRV 0 100 389 blu +_ldap._tcp.d86745b4-f3e0-4af3-be03-2130d1534be8.domains._msdcs IN SRV 0 100 389 blu +_ldap._tcp.Default-First-Site-Name._sites IN SRV 0 100 389 blu +_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs IN SRV 0 100 389 blu +; +; krb5 servers +_kerberos._tcp IN SRV 0 100 88 blu +_kerberos._tcp.dc._msdcs IN SRV 0 100 88 blu +_kerberos._tcp.Default-First-Site-Name._sites IN SRV 0 100 88 blu +_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs IN SRV 0 100 88 blu +_kerberos._udp IN SRV 0 100 88 blu +; MIT kpasswd likes to lookup this name on password change +_kerberos-master._tcp IN SRV 0 100 88 blu +_kerberos-master._udp IN SRV 0 100 88 blu +; +; kpasswd +_kpasswd._tcp IN SRV 0 100 464 blu +_kpasswd._udp IN SRV 0 100 464 blu +; +; heimdal 'find realm for host' hack +_kerberos IN TXT EXAMPLE.NIL diff --git a/bin/tests/system/tsiggss/ns1/named.conf b/bin/tests/system/tsiggss/ns1/named.conf new file mode 100644 index 00000000..ee8d593c --- /dev/null +++ b/bin/tests/system/tsiggss/ns1/named.conf @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2010, 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: named.conf,v 1.6 2011-01-06 23:47:00 tbox Exp $ */ + +controls { }; + +options { + query-source address 10.53.0.1; + notify-source 10.53.0.1; + transfer-source 10.53.0.1; + port 5300; + pid-file "named.pid"; + session-keyfile "session.key"; + listen-on { 10.53.0.1; 127.0.0.1; }; + listen-on-v6 { none; }; + recursion no; + notify yes; + tkey-gssapi-keytab "dns.keytab"; +}; + +key rndc_key { + secret "1234abcd8765"; + algorithm hmac-md5; +}; + +controls { + inet 10.53.0.1 port 9953 allow { any; } keys { rndc_key; }; +}; + +zone "example.nil." IN { + type master; + file "example.nil.db"; + + update-policy { + grant Administrator@EXAMPLE.NIL wildcard * A AAAA SRV CNAME; + grant testdenied@EXAMPLE.NIL wildcard * TXT; + grant "local:auth.sock" external * CNAME; + }; + + /* we need to use check-names ignore so _msdcs A records can be created */ + check-names ignore; +}; diff --git a/bin/tests/system/tsiggss/ns1/testdenied.ccache b/bin/tests/system/tsiggss/ns1/testdenied.ccache Binary files differnew file mode 100644 index 00000000..070e85b5 --- /dev/null +++ b/bin/tests/system/tsiggss/ns1/testdenied.ccache diff --git a/bin/tests/system/tsiggss/prereq.sh b/bin/tests/system/tsiggss/prereq.sh new file mode 100644 index 00000000..fe8a867a --- /dev/null +++ b/bin/tests/system/tsiggss/prereq.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: prereq.sh,v 1.3 2010-12-20 23:47:20 tbox Exp $ + +TOP=${SYSTEMTESTTOP:=.}/../../../.. + +# enable the tsiggss test only if gssapi was enabled +$TOP/bin/named/named -V | grep with.gssapi | grep -v with-gssapi=no > /dev/null || { + echo "I:BIND9 was not built with --with-gssapi" + exit 255 +} + +exit 0 diff --git a/bin/tests/system/tsiggss/setup.sh b/bin/tests/system/tsiggss/setup.sh new file mode 100644 index 00000000..15b42409 --- /dev/null +++ b/bin/tests/system/tsiggss/setup.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: setup.sh,v 1.3 2010-12-20 23:47:20 tbox Exp $ + +SYSTEMTESTTOP=.. +. $SYSTEMTESTTOP/conf.sh + +rm -f ns1/*.jnl diff --git a/bin/tests/system/tsiggss/tests.sh b/bin/tests/system/tsiggss/tests.sh new file mode 100644 index 00000000..753de811 --- /dev/null +++ b/bin/tests/system/tsiggss/tests.sh @@ -0,0 +1,67 @@ +#!/bin/sh +# tests for TSIG-GSS updates + +SYSTEMTESTTOP=.. +. $SYSTEMTESTTOP/conf.sh + +status=0 + +DIGOPTS="@10.53.0.1 -p 5300" + +# we don't want a KRB5_CONFIG setting breaking the tests +KRB5_CONFIG=/dev/null +export KRB5_CONFIG + +test_update() { + host="$1" + type="$2" + cmd="$3" + digout="$4" + + cat <<EOF > ns1/update.txt +server 10.53.0.1 5300 +update add $host $cmd +send +EOF + echo "I:testing update for $host $type $cmd" + $NSUPDATE -g ns1/update.txt || { + echo "I:update failed for $host $type $cmd" + return 1 + } + + out=`$DIG $DIGOPTS -t $type -q $host | egrep "^${host}"` + lines=`echo "$out" | grep "$digout" | wc -l` + [ $lines -eq 1 ] || { + echo "I:dig output incorrect for $host $type $cmd: $out" + return 1 + } + return 0 +} + +echo "I:testing updates as administrator" +KRB5CCNAME="FILE:"`pwd`/ns1/administrator.ccache +export KRB5CCNAME + +test_update testdc1.example.nil. A "86400 A 10.53.0.10" "10.53.0.10" || status=1 +test_update testdc2.example.nil. A "86400 A 10.53.0.11" "10.53.0.11" || status=1 +test_update denied.example.nil. TXT "86400 TXT helloworld" "helloworld" && status=1 + +echo "I:testing updates as a user" +KRB5CCNAME="FILE:"`pwd`/ns1/testdenied.ccache +export KRB5CCNAME + +test_update testdenied.example.nil. A "86400 A 10.53.0.12" "10.53.0.12" && status=1 +test_update testdenied.example.nil. TXT "86400 TXT helloworld" "helloworld" || status=1 + +echo "I:testing external update policy" +test_update testcname.example.nil. TXT "86400 CNAME testdenied.example.nil" "testdenied" && status=1 +perl ./authsock.pl --type=CNAME --path=ns1/auth.sock --pidfile=authsock.pid --timeout=120 & +sleep 1 +test_update testcname.example.nil. TXT "86400 CNAME testdenied.example.nil" "testdenied" || status=1 +test_update testcname.example.nil. TXT "86400 A 10.53.0.13" "10.53.0.13" && status=1 + +[ $status -eq 0 ] && echo "I:tsiggss tests all OK" + +kill `cat authsock.pid` + +exit $status @@ -1,7 +1,46 @@ -/* $Id: bind.keys,v 1.6 2010/06/20 07:15:28 marka Exp $ */ +/* $Id: bind.keys,v 1.7 2011-01-03 23:45:07 each Exp $ */ +# The bind.keys file is used to override the built-in DNSSEC trust anchors +# which are included as part of BIND 9. As of the current release, the only +# trust anchors it contains are those for the DNS root zone ("."), and for +# the ISC DNSSEC Lookaside Validation zone ("dlv.isc.org"). Trust anchors +# for any other zones MUST be configured elsewhere; if they are configured +# here, they will not be recognized or used by named. +# +# The built-in trust anchors are provided for convenience of configuration. +# They are not activated within named.conf unless specifically switched on. +# To use the built-in root key, set "dnssec-validation auto;" in +# named.conf options. To use the built-in DLV key, set +# "dnssec-lookaside auto;". Without these options being set, +# the keys in this file are ignored. +# +# This file is NOT expected to be user-configured. +# +# These keys are current as of January 2011. If any key fails to +# initialize correctly, it may have expired. In that event you should +# replace this file with a current version. The latest version of +# bind.keys can always be obtained from ISC at https://www.isc.org/bind-keys. + managed-keys { - # NOTE: This key is current as of October 2009. - # If it fails to initialize correctly, it may have expired; - # see https://www.isc.org/solutions/dlv for a replacement. - dlv.isc.org. initial-key 257 3 5 "BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt TDN0YUuWrBNh"; + # ISC DLV: See https://www.isc.org/solutions/dlv for details. + # NOTE: This key is activated by setting "dnssec-lookaside auto;" + # in named.conf. + dlv.isc.org. initial-key 257 3 5 "BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 + brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ + 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 + ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk + Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM + QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt + TDN0YUuWrBNh"; + + # ROOT KEY: See https://data.iana.org/root-anchors/root-anchors.xml + # for current trust anchor information. + # NOTE: This key is activated by setting "dnssec-validation auto;" + # in named.conf. + . initial-key 257 3 8 "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF + FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX + bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD + X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz + W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS + Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq + QxA+Uk1ihz0="; }; diff --git a/config.h.in b/config.h.in index 8ca5e8a2..839a9453 100644 --- a/config.h.in +++ b/config.h.in @@ -16,7 +16,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: config.h.in,v 1.136 2010/12/03 00:57:57 marka Exp $ */ +/* $Id: config.h.in,v 1.143 2011-01-13 02:06:39 marka Exp $ */ /*! \file */ @@ -160,6 +160,12 @@ int sigwait(const unsigned int *set, int *sig); /* Define to enable "rrset-order fixed" syntax. */ #undef DNS_RDATASET_FIXED +/* Define to enable rpz-nsdname rules. */ +#undef ENABLE_RPZ_NSDNAME + +/* Define to enable rpz-nsip rules. */ +#undef ENABLE_RPZ_NSIP + /* Solaris hack to get select_large_fdset. */ #undef FD_SETSIZE @@ -178,9 +184,18 @@ int sigwait(const unsigned int *set, int *sig); /* Define to 1 if you have the <devpoll.h> header file. */ #undef HAVE_DEVPOLL_H +/* Define to 1 if you have the `dlclose' function. */ +#undef HAVE_DLCLOSE + /* Define to 1 if you have the <dlfcn.h> header file. */ #undef HAVE_DLFCN_H +/* Define to 1 if you have the `dlopen' function. */ +#undef HAVE_DLOPEN + +/* Define to 1 if you have the `dlsym' function. */ +#undef HAVE_DLSYM + /* Define to 1 if you have the `EVP_sha256' function. */ #undef HAVE_EVP_SHA256 @@ -193,9 +208,15 @@ int sigwait(const unsigned int *set, int *sig); /* Define to 1 if you have the <gssapi/gssapi.h> header file. */ #undef HAVE_GSSAPI_GSSAPI_H +/* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */ +#undef HAVE_GSSAPI_GSSAPI_KRB5_H + /* Define to 1 if you have the <gssapi.h> header file. */ #undef HAVE_GSSAPI_H +/* Define to 1 if you have the <gssapi_krb5.h> header file. */ +#undef HAVE_GSSAPI_KRB5_H + /* Define to 1 if you have the <inttypes.h> header file. */ #undef HAVE_INTTYPES_H @@ -220,6 +241,9 @@ int sigwait(const unsigned int *set, int *sig); /* Define to 1 if you have the `c_r' library (-lc_r). */ #undef HAVE_LIBC_R +/* Define to 1 if you have the `dl' library (-ldl). */ +#undef HAVE_LIBDL + /* Define to 1 if you have the `nsl' library (-lnsl). */ #undef HAVE_LIBNSL @@ -253,6 +277,9 @@ int sigwait(const unsigned int *set, int *sig); /* Define to 1 if you have the <net/if6.h> header file. */ #undef HAVE_NET_IF6_H +/* Define if your OpenSSL version supports GOST. */ +#undef HAVE_OPENSSL_GOST + /* Define to 1 if you have the <regex.h> header file. */ #undef HAVE_REGEX_H @@ -391,11 +418,8 @@ int sigwait(const unsigned int *set, int *sig); /* Define to empty if `const' does not conform to ANSI C. */ #undef const -/* Define to `__inline__' or `__inline' if that's what the C compiler - calls it, or to nothing if 'inline' is not supported under any name. */ -#ifndef __cplusplus +/* Define to empty if your compiler does not support "static inline". */ #undef inline -#endif /* Define to `unsigned int' if <sys/types.h> does not define. */ #undef size_t diff --git a/config.h.win32 b/config.h.win32 index 8ac52f8d..afeebc14 100644 --- a/config.h.win32 +++ b/config.h.win32 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006-2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: config.h.win32,v 1.24 2009/11/24 02:09:28 marka Exp $ */ +/* $Id: config.h.win32,v 1.26 2011-01-13 08:50:28 tbox Exp $ */ /* * win32 configuration file @@ -263,3 +263,11 @@ typedef long off_t; /** define if gai_strerror() exists */ #define HAVE_GAISTRERROR +/* Define if your OpenSSL version supports GOST. */ +#define HAVE_OPENSSL_GOST + +/* Define to enable rpz-nsdname rules. */ +#define ENABLE_RPZ_NSDNAME + +/* Define to enable rpz-nsip rules. */ +#define ENABLE_RPZ_NSIP diff --git a/config.threads.in b/config.threads.in index c1c113b9..e7a8d609 100644 --- a/config.threads.in +++ b/config.threads.in @@ -33,15 +33,11 @@ case $host in *-*-sysv*OpenUNIX*) # UnixWare use_threads=true ;; +*-netbsd[1234].*) + # NetBSD earlier than NetBSD 5.0 has poor pthreads. Don't use it by default. + use_threads=false ;; *-netbsd*) - if test -r /usr/lib/libpthread.so ; then - use_threads=true - else - # Socket I/O optimizations introduced in 9.2 expose a - # bug in unproven-pthreads; see PR #12650 - use_threads=false - fi - ;; + use_threads=true ;; *-openbsd*) # OpenBSD users have reported that named dumps core on # startup when built with threads. @@ -92,54 +88,6 @@ then # Search for / configure pthreads in a system-dependent fashion. # case "$host" in - *-netbsd*) - # NetBSD has multiple pthreads implementations. The - # recommended one to use is "unproven-pthreads". The - # older "mit-pthreads" may also work on some NetBSD - # versions. The PTL2 thread library does not - # currently work with bind9, but can be chosen with - # the --with-ptl2 option for those who wish to - # experiment with it. - CC="gcc" - AC_MSG_CHECKING(which NetBSD thread library to use) - - AC_ARG_WITH(ptl2, -[ --with-ptl2 on NetBSD, use the ptl2 thread library (experimental)], - use_ptl2="$withval", use_ptl2="no") - - : ${LOCALBASE:=/usr/pkg} - - if test "X$use_ptl2" = "Xyes" - then - AC_MSG_RESULT(PTL2) - AC_MSG_WARN( -[linking with PTL2 is highly experimental and not expected to work]) - CC=ptlgcc - else - if test -r /usr/lib/libpthread.so - then - AC_MSG_RESULT(native) - LIBS="-lpthread $LIBS" - else - if test ! -d $LOCALBASE/pthreads - then - AC_MSG_RESULT(none) - AC_MSG_ERROR("could not find thread libraries") - fi - - if $use_threads - then - AC_MSG_RESULT(mit-pthreads/unproven-pthreads) - pkg="$LOCALBASE/pthreads" - lib1="-L$pkg/lib -Wl,-R$pkg/lib" - lib2="-lpthread -lm -lgcc -lpthread" - LIBS="$lib1 $lib2 $LIBS" - CPPFLAGS="$CPPFLAGS -I$pkg/include" - STD_CINCLUDES="$STD_CINCLUDES -I$pkg/include" - fi - fi - fi - ;; *-freebsd*) # We don't want to set -lpthread as that break # the ability to choose threads library at final @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1996-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. # -# $Id: configure,v 1.487 2010/12/03 00:57:57 marka Exp $ +# $Id: configure,v 1.493 2011-01-13 02:06:40 marka Exp $ # # Portions Copyright (C) 1996-2001 Nominum, Inc. # @@ -29,7 +29,7 @@ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# From configure.in Revision: 1.504 . +# From configure.in Revision: 1.512 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.67. # @@ -926,6 +926,7 @@ DNS_GSSAPI_LIBS DST_GSSAPI_INC USE_GSSAPI ISC_PLATFORM_KRB5HEADER +ISC_PLATFORM_GSSAPI_KRB5_HEADER ISC_PLATFORM_GSSAPIHEADER ISC_PLATFORM_HAVEGSSAPI PKCS11_PROVIDER @@ -933,6 +934,7 @@ PKCS11_TOOLS USE_PKCS11 ISC_OPENSSL_INC ISC_PLATFORM_OPENSSLHASH +OPENSSL_GOST OPENSSLLINKSRCS OPENSSLLINKOBJS DST_OPENSSL_INC @@ -1061,7 +1063,6 @@ with_pkcs11 with_gssapi with_randomdev enable_threads -with_ptl2 with_libxml2 enable_largefile with_purify @@ -1079,6 +1080,8 @@ enable_chroot enable_linux_caps enable_atomic enable_fixed_rrset +enable_rpz_nsip +enable_rpz_nsdname enable_filter_aaaa with_docbook_xsl with_idn @@ -1092,6 +1095,7 @@ with_dlz_filesystem with_dlz_ldap with_dlz_odbc with_dlz_stub +with_dlz_dlopen with_make_clean ' ac_precious_vars='build_alias @@ -1750,6 +1754,8 @@ Optional Features: [default=autodetect] --enable-fixed-rrset enable fixed rrset ordering [default=no] + --enable-rpz-nsip enable rpz-nsip rules [default=no] + --enable-rpz-nsdname enable rpz-nsdname rules [default=no] --enable-filter-aaaa enable filtering of AAAA records over IPv4 [default=no] @@ -1766,7 +1772,6 @@ Optional Packages: (PATH is for the PKCS11 provider) --with-gssapi=PATH Specify path for system-supplied GSSAPI --with-randomdev=PATH Specify path for random device - --with-ptl2 on NetBSD, use the ptl2 thread library (experimental) --with-libxml2=PATH Build with libxml2 library yes|no|path --with-purify=PATH use Rational purify --with-libtool use GNU libtool @@ -1796,6 +1801,8 @@ Optional Packages: (Required to use ODBC with DLZ) --with-dlz-stub=PATH Build with stub DLZ driver yes|no. (Required to use stub driver with DLZ) + --with-dlz-dlopen=PATH Build with dlopen DLZ driver yes|no. + (Required to use dlopen driver with DLZ) --with-make-clean Run "make clean" at end of configure [yes|no]. Some influential environment variables: @@ -4482,7 +4489,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 4485 "configure"' > conftest.$ac_ext + echo '#line 4492 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -6776,11 +6783,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6779: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6786: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6783: \$? = $ac_status" >&5 + echo "$as_me:6790: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7066,11 +7073,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7069: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7076: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7073: \$? = $ac_status" >&5 + echo "$as_me:7080: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7170,11 +7177,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7173: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7180: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7177: \$? = $ac_status" >&5 + echo "$as_me:7184: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -9195,7 +9202,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9198 "configure" +#line 9205 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -9295,7 +9302,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9298 "configure" +#line 9305 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11640,11 +11647,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11643: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11650: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:11647: \$? = $ac_status" >&5 + echo "$as_me:11654: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -11744,11 +11751,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11747: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11754: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:11751: \$? = $ac_status" >&5 + echo "$as_me:11758: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -13327,11 +13334,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13330: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13337: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13334: \$? = $ac_status" >&5 + echo "$as_me:13341: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -13431,11 +13438,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13434: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13441: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13438: \$? = $ac_status" >&5 + echo "$as_me:13445: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15596,11 +15603,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15599: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15606: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15603: \$? = $ac_status" >&5 + echo "$as_me:15610: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -15886,11 +15893,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15889: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15896: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15893: \$? = $ac_status" >&5 + echo "$as_me:15900: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -15990,11 +15997,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15993: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16000: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:15997: \$? = $ac_status" >&5 + echo "$as_me:16004: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -20010,7 +20017,8 @@ $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - $as_echo "#define inline /**/" >>confdefs.h + +$as_echo "#define inline /**/" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -20649,6 +20657,7 @@ then fi done fi +OPENSSL_GOST="" case "$use_openssl" in no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 @@ -20885,6 +20894,62 @@ _ACEOF fi done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL GOST support" >&5 +$as_echo_n "checking for OpenSSL GOST support... " >&6; } + have_gost="" + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include <openssl/conf.h> +#include <openssl/engine.h> +int main() { +#if (OPENSSL_VERSION_NUMBER >= 0x10000000L) + ENGINE *e; + + OPENSSL_config(NULL); + + e = ENGINE_by_id("gost"); + if (e == NULL) + return (1); + if (ENGINE_init(e) <= 0) + return (1); + return (0); +#else + return (1); +#endif +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_gost="yes" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_gost="no" +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + case $have_gost in + yes) + OPENSSL_GOST="yes" + +$as_echo "#define HAVE_OPENSSL_GOST 1" >>confdefs.h + + ;; + *) + ;; + esac CFLAGS="$saved_cflags" LIBS="$saved_libs" OPENSSLLINKOBJS='${OPENSSLLINKOBJS}' @@ -20902,6 +20967,7 @@ esac + DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS" # @@ -21039,6 +21105,20 @@ done as_fn_error $? "gssapi.h not found" "$LINENO" 5 fi + for ac_header in gssapi_krb5.h gssapi/gssapi_krb5.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>" +fi + +done + + for ac_header in krb5.h krb5/krb5.h kerberosv5/krb5.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -21094,7 +21174,12 @@ done # -L/usr/local/lib to LIBS, which can make the # -lgssapi_krb5 test succeed with shared libraries even # when you are trying to build with KTH in /usr/lib. - LIBS="-L$use_gssapi/lib $TRY_LIBS" + if test "$use_gssapi" = "/usr" + then + LIBS="$TRY_LIBS" + else + LIBS="-L$use_gssapi/lib $TRY_LIBS" + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking linking as $TRY_LIBS" >&5 $as_echo_n "checking linking as $TRY_LIBS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -21183,6 +21268,7 @@ esac + DNS_CRYPTO_LIBS="$DNS_GSSAPI_LIBS $DNS_CRYPTO_LIBS" # @@ -21305,15 +21391,11 @@ case $host in *-*-sysv*OpenUNIX*) # UnixWare use_threads=true ;; +*-netbsd1234.*) + # NetBSD earlier than NetBSD 5.0 has poor pthreads. Don't use it by default. + use_threads=false ;; *-netbsd*) - if test -r /usr/lib/libpthread.so ; then - use_threads=true - else - # Socket I/O optimizations introduced in 9.2 expose a - # bug in unproven-pthreads; see PR #12650 - use_threads=false - fi - ;; + use_threads=true ;; *-openbsd*) # OpenBSD users have reported that named dumps core on # startup when built with threads. @@ -21369,64 +21451,6 @@ then # Search for / configure pthreads in a system-dependent fashion. # case "$host" in - *-netbsd*) - # NetBSD has multiple pthreads implementations. The - # recommended one to use is "unproven-pthreads". The - # older "mit-pthreads" may also work on some NetBSD - # versions. The PTL2 thread library does not - # currently work with bind9, but can be chosen with - # the --with-ptl2 option for those who wish to - # experiment with it. - CC="gcc" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which NetBSD thread library to use" >&5 -$as_echo_n "checking which NetBSD thread library to use... " >&6; } - - -# Check whether --with-ptl2 was given. -if test "${with_ptl2+set}" = set; then : - withval=$with_ptl2; use_ptl2="$withval" -else - use_ptl2="no" -fi - - - : ${LOCALBASE:=/usr/pkg} - - if test "X$use_ptl2" = "Xyes" - then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: PTL2" >&5 -$as_echo "PTL2" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: linking with PTL2 is highly experimental and not expected to work" >&5 -$as_echo "$as_me: WARNING: linking with PTL2 is highly experimental and not expected to work" >&2;} - CC=ptlgcc - else - if test -r /usr/lib/libpthread.so - then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: native" >&5 -$as_echo "native" >&6; } - LIBS="-lpthread $LIBS" - else - if test ! -d $LOCALBASE/pthreads - then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } - as_fn_error $? "\"could not find thread libraries\"" "$LINENO" 5 - fi - - if $use_threads - then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: mit-pthreads/unproven-pthreads" >&5 -$as_echo "mit-pthreads/unproven-pthreads" >&6; } - pkg="$LOCALBASE/pthreads" - lib1="-L$pkg/lib -Wl,-R$pkg/lib" - lib2="-lpthread -lm -lgcc -lpthread" - LIBS="$lib1 $lib2 $LIBS" - CPPFLAGS="$CPPFLAGS -I$pkg/include" - STD_CINCLUDES="$STD_CINCLUDES -I$pkg/include" - fi - fi - fi - ;; *-freebsd*) # We don't want to set -lpthread as that break # the ability to choose threads library at final @@ -25034,6 +25058,50 @@ $as_echo "#define DNS_RDATASET_FIXED 1" >>confdefs.h esac # +# Enable response policy rewriting using NS IP addresses +# +# Check whether --enable-rpz-nsip was given. +if test "${enable_rpz_nsip+set}" = set; then : + enableval=$enable_rpz_nsip; enable_nsip="$enableval" +else + enable_nsip="no" +fi + +case "$enable_nsip" in + yes) + +$as_echo "#define ENABLE_RPZ_NSIP 1" >>confdefs.h + + ;; + no) + ;; + *) + ;; +esac + +# +# Enable response policy rewriting using NS name +# +# Check whether --enable-rpz-nsdname was given. +if test "${enable_rpz_nsdname+set}" = set; then : + enableval=$enable_rpz_nsdname; enable_nsdname="$enableval" +else + enable_nsdname="no" +fi + +case "$enable_nsdname" in + yes) + +$as_echo "#define ENABLE_RPZ_NSDNAME 1" >>confdefs.h + + ;; + no) + ;; + *) + ;; +esac + +# # Activate "filter-aaaa-on-v4" or not? # # Check whether --enable-filter-aaaa was given. @@ -26544,6 +26612,106 @@ $as_echo "yes" >&6; } ;; esac +# +# Was --with-dlz-dlopen specified? +# + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen DLZ driver" >&5 +$as_echo_n "checking for dlopen DLZ driver... " >&6; } + +# Check whether --with-dlz_dlopen was given. +if test "${with_dlz_dlopen+set}" = set; then : + withval=$with_dlz_dlopen; use_dlz_dlopen="$withval" +else + use_dlz_dlopen="no" +fi + + +case "$use_dlz_dlopen" in + no) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlclose in -ldl" >&5 +$as_echo_n "checking for dlclose in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlclose+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlclose (); +int +main () +{ +return dlclose (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlclose=yes +else + ac_cv_lib_dl_dlclose=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlclose" >&5 +$as_echo "$ac_cv_lib_dl_dlclose" >&6; } +if test "x$ac_cv_lib_dl_dlclose" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBDL 1 +_ACEOF + + LIBS="-ldl $LIBS" + +fi + + for ac_func in dlopen dlclose dlsym +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + USE_DLZ="$USE_DLZ -DDLZ_DLOPEN" + for i in dlz_dlopen_driver + do + DLZ_DRIVER_SRCS="$DLZ_DRIVER_SRCS $dlzdir/$i.c" + DLZ_DRIVER_OBJS="$DLZ_DRIVER_OBJS $i.$O" + done + if test -n "" + then + DLZ_DRIVER_INCLUDES="$DLZ_DRIVER_INCLUDES " + fi + if test -n "" + then + DLZ_DRIVER_LIBS="$DLZ_DRIVER_LIBS " + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + ;; +esac + # Add any additional DLZ drivers here. @@ -26715,7 +26883,7 @@ ac_config_commands="$ac_config_commands chmod" # elsewhere if there's a good reason for doing so. # -ac_config_files="$ac_config_files Makefile make/Makefile make/mkdep lib/Makefile lib/isc/Makefile lib/isc/include/Makefile lib/isc/include/isc/Makefile lib/isc/include/isc/platform.h lib/isc/unix/Makefile lib/isc/unix/include/Makefile lib/isc/unix/include/isc/Makefile lib/isc/nls/Makefile lib/isc/$thread_dir/Makefile lib/isc/$thread_dir/include/Makefile lib/isc/$thread_dir/include/isc/Makefile lib/isc/$arch/Makefile lib/isc/$arch/include/Makefile lib/isc/$arch/include/isc/Makefile lib/isccc/Makefile lib/isccc/include/Makefile lib/isccc/include/isccc/Makefile lib/isccfg/Makefile lib/isccfg/include/Makefile lib/isccfg/include/isccfg/Makefile lib/irs/Makefile lib/irs/include/Makefile lib/irs/include/irs/Makefile lib/irs/include/irs/netdb.h lib/irs/include/irs/platform.h lib/dns/Makefile lib/dns/include/Makefile lib/dns/include/dns/Makefile lib/dns/include/dst/Makefile lib/export/Makefile lib/export/isc/Makefile lib/export/isc/include/Makefile lib/export/isc/include/isc/Makefile lib/export/isc/unix/Makefile lib/export/isc/unix/include/Makefile lib/export/isc/unix/include/isc/Makefile lib/export/isc/nls/Makefile lib/export/isc/$thread_dir/Makefile lib/export/isc/$thread_dir/include/Makefile lib/export/isc/$thread_dir/include/isc/Makefile lib/export/dns/Makefile lib/export/dns/include/Makefile lib/export/dns/include/dns/Makefile lib/export/dns/include/dst/Makefile lib/export/irs/Makefile lib/export/irs/include/Makefile lib/export/irs/include/irs/Makefile lib/export/isccfg/Makefile lib/export/isccfg/include/Makefile lib/export/isccfg/include/isccfg/Makefile lib/export/samples/Makefile lib/export/samples/Makefile-postinstall lib/bind9/Makefile lib/bind9/include/Makefile lib/bind9/include/bind9/Makefile lib/lwres/Makefile lib/lwres/include/Makefile lib/lwres/include/lwres/Makefile lib/lwres/include/lwres/netdb.h lib/lwres/include/lwres/platform.h lib/lwres/man/Makefile lib/lwres/unix/Makefile lib/lwres/unix/include/Makefile lib/lwres/unix/include/lwres/Makefile lib/tests/Makefile lib/tests/include/Makefile lib/tests/include/tests/Makefile bin/Makefile bin/check/Makefile bin/confgen/Makefile bin/confgen/unix/Makefile bin/named/Makefile bin/named/unix/Makefile bin/rndc/Makefile bin/dig/Makefile bin/nsupdate/Makefile bin/tests/Makefile bin/tests/names/Makefile bin/tests/master/Makefile bin/tests/rbt/Makefile bin/tests/db/Makefile bin/tests/tasks/Makefile bin/tests/timers/Makefile bin/tests/dst/Makefile bin/tests/mem/Makefile bin/tests/hashes/Makefile bin/tests/net/Makefile bin/tests/sockaddr/Makefile bin/tests/system/Makefile bin/tests/system/conf.sh bin/tests/system/filter-aaaa/Makefile bin/tests/system/lwresd/Makefile bin/tests/system/tkey/Makefile bin/tests/headerdep_test.sh bin/tests/virtual-time/Makefile bin/tests/virtual-time/conf.sh bin/tools/Makefile bin/dnssec/Makefile bin/pkcs11/Makefile doc/Makefile doc/arm/Makefile doc/misc/Makefile isc-config.sh doc/xsl/Makefile doc/xsl/isc-docbook-chunk.xsl doc/xsl/isc-docbook-html.xsl doc/xsl/isc-docbook-latex.xsl doc/xsl/isc-manpage.xsl doc/doxygen/Doxyfile doc/doxygen/Makefile doc/doxygen/doxygen-input-filter" +ac_config_files="$ac_config_files make/Makefile make/mkdep Makefile bin/Makefile bin/check/Makefile bin/confgen/Makefile bin/confgen/unix/Makefile bin/dig/Makefile bin/dnssec/Makefile bin/named/Makefile bin/named/unix/Makefile bin/nsupdate/Makefile bin/pkcs11/Makefile bin/rndc/Makefile bin/tests/Makefile bin/tests/atomic/Makefile bin/tests/db/Makefile bin/tests/dst/Makefile bin/tests/hashes/Makefile bin/tests/headerdep_test.sh bin/tests/master/Makefile bin/tests/mem/Makefile bin/tests/names/Makefile bin/tests/net/Makefile bin/tests/rbt/Makefile bin/tests/sockaddr/Makefile bin/tests/system/Makefile bin/tests/system/conf.sh bin/tests/system/filter-aaaa/Makefile bin/tests/system/gost/prereq.sh bin/tests/system/lwresd/Makefile bin/tests/system/rpz/Makefile bin/tests/system/tkey/Makefile bin/tests/tasks/Makefile bin/tests/timers/Makefile bin/tests/virtual-time/Makefile bin/tests/virtual-time/conf.sh bin/tools/Makefile contrib/check-secure-delegation.pl contrib/zone-edit.sh doc/Makefile doc/arm/Makefile doc/doxygen/Doxyfile doc/doxygen/Makefile doc/doxygen/doxygen-input-filter doc/misc/Makefile doc/xsl/Makefile doc/xsl/isc-docbook-chunk.xsl doc/xsl/isc-docbook-html.xsl doc/xsl/isc-docbook-latex.xsl doc/xsl/isc-manpage.xsl isc-config.sh lib/Makefile lib/bind9/Makefile lib/bind9/include/Makefile lib/bind9/include/bind9/Makefile lib/dns/Makefile lib/dns/include/Makefile lib/dns/include/dns/Makefile lib/dns/include/dst/Makefile lib/export/Makefile lib/export/dns/Makefile lib/export/dns/include/Makefile lib/export/dns/include/dns/Makefile lib/export/dns/include/dst/Makefile lib/export/irs/Makefile lib/export/irs/include/Makefile lib/export/irs/include/irs/Makefile lib/export/isc/$thread_dir/Makefile lib/export/isc/$thread_dir/include/Makefile lib/export/isc/$thread_dir/include/isc/Makefile lib/export/isc/Makefile lib/export/isc/include/Makefile lib/export/isc/include/isc/Makefile lib/export/isc/nls/Makefile lib/export/isc/unix/Makefile lib/export/isc/unix/include/Makefile lib/export/isc/unix/include/isc/Makefile lib/export/isccfg/Makefile lib/export/isccfg/include/Makefile lib/export/isccfg/include/isccfg/Makefile lib/export/samples/Makefile lib/export/samples/Makefile-postinstall lib/irs/Makefile lib/irs/include/Makefile lib/irs/include/irs/Makefile lib/irs/include/irs/netdb.h lib/irs/include/irs/platform.h lib/isc/$arch/Makefile lib/isc/$arch/include/Makefile lib/isc/$arch/include/isc/Makefile lib/isc/$thread_dir/Makefile lib/isc/$thread_dir/include/Makefile lib/isc/$thread_dir/include/isc/Makefile lib/isc/Makefile lib/isc/include/Makefile lib/isc/include/isc/Makefile lib/isc/include/isc/platform.h lib/isc/nls/Makefile lib/isc/unix/Makefile lib/isc/unix/include/Makefile lib/isc/unix/include/isc/Makefile lib/isccc/Makefile lib/isccc/include/Makefile lib/isccc/include/isccc/Makefile lib/isccfg/Makefile lib/isccfg/include/Makefile lib/isccfg/include/isccfg/Makefile lib/lwres/Makefile lib/lwres/include/Makefile lib/lwres/include/lwres/Makefile lib/lwres/include/lwres/netdb.h lib/lwres/include/lwres/platform.h lib/lwres/man/Makefile lib/lwres/unix/Makefile lib/lwres/unix/include/Makefile lib/lwres/unix/include/lwres/Makefile lib/tests/Makefile lib/tests/include/Makefile lib/tests/include/tests/Makefile" # @@ -27423,50 +27591,67 @@ do "contrib/dlz/bin/dlzbdb/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/dlz/bin/dlzbdb/Makefile" ;; "$DLZ_DRIVER_RULES") CONFIG_FILES="$CONFIG_FILES $DLZ_DRIVER_RULES" ;; "chmod") CONFIG_COMMANDS="$CONFIG_COMMANDS chmod" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "make/Makefile") CONFIG_FILES="$CONFIG_FILES make/Makefile" ;; "make/mkdep") CONFIG_FILES="$CONFIG_FILES make/mkdep" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "bin/Makefile") CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; + "bin/check/Makefile") CONFIG_FILES="$CONFIG_FILES bin/check/Makefile" ;; + "bin/confgen/Makefile") CONFIG_FILES="$CONFIG_FILES bin/confgen/Makefile" ;; + "bin/confgen/unix/Makefile") CONFIG_FILES="$CONFIG_FILES bin/confgen/unix/Makefile" ;; + "bin/dig/Makefile") CONFIG_FILES="$CONFIG_FILES bin/dig/Makefile" ;; + "bin/dnssec/Makefile") CONFIG_FILES="$CONFIG_FILES bin/dnssec/Makefile" ;; + "bin/named/Makefile") CONFIG_FILES="$CONFIG_FILES bin/named/Makefile" ;; + "bin/named/unix/Makefile") CONFIG_FILES="$CONFIG_FILES bin/named/unix/Makefile" ;; + "bin/nsupdate/Makefile") CONFIG_FILES="$CONFIG_FILES bin/nsupdate/Makefile" ;; + "bin/pkcs11/Makefile") CONFIG_FILES="$CONFIG_FILES bin/pkcs11/Makefile" ;; + "bin/rndc/Makefile") CONFIG_FILES="$CONFIG_FILES bin/rndc/Makefile" ;; + "bin/tests/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/Makefile" ;; + "bin/tests/atomic/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/atomic/Makefile" ;; + "bin/tests/db/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/db/Makefile" ;; + "bin/tests/dst/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/dst/Makefile" ;; + "bin/tests/hashes/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/hashes/Makefile" ;; + "bin/tests/headerdep_test.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/headerdep_test.sh" ;; + "bin/tests/master/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/master/Makefile" ;; + "bin/tests/mem/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/mem/Makefile" ;; + "bin/tests/names/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/names/Makefile" ;; + "bin/tests/net/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/net/Makefile" ;; + "bin/tests/rbt/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/rbt/Makefile" ;; + "bin/tests/sockaddr/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/sockaddr/Makefile" ;; + "bin/tests/system/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/Makefile" ;; + "bin/tests/system/conf.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/system/conf.sh" ;; + "bin/tests/system/filter-aaaa/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/filter-aaaa/Makefile" ;; + "bin/tests/system/gost/prereq.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/system/gost/prereq.sh" ;; + "bin/tests/system/lwresd/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/lwresd/Makefile" ;; + "bin/tests/system/rpz/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/rpz/Makefile" ;; + "bin/tests/system/tkey/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/tkey/Makefile" ;; + "bin/tests/tasks/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/tasks/Makefile" ;; + "bin/tests/timers/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/timers/Makefile" ;; + "bin/tests/virtual-time/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/virtual-time/Makefile" ;; + "bin/tests/virtual-time/conf.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/virtual-time/conf.sh" ;; + "bin/tools/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tools/Makefile" ;; + "contrib/check-secure-delegation.pl") CONFIG_FILES="$CONFIG_FILES contrib/check-secure-delegation.pl" ;; + "contrib/zone-edit.sh") CONFIG_FILES="$CONFIG_FILES contrib/zone-edit.sh" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "doc/arm/Makefile") CONFIG_FILES="$CONFIG_FILES doc/arm/Makefile" ;; + "doc/doxygen/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/doxygen/Doxyfile" ;; + "doc/doxygen/Makefile") CONFIG_FILES="$CONFIG_FILES doc/doxygen/Makefile" ;; + "doc/doxygen/doxygen-input-filter") CONFIG_FILES="$CONFIG_FILES doc/doxygen/doxygen-input-filter" ;; + "doc/misc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/misc/Makefile" ;; + "doc/xsl/Makefile") CONFIG_FILES="$CONFIG_FILES doc/xsl/Makefile" ;; + "doc/xsl/isc-docbook-chunk.xsl") CONFIG_FILES="$CONFIG_FILES doc/xsl/isc-docbook-chunk.xsl" ;; + "doc/xsl/isc-docbook-html.xsl") CONFIG_FILES="$CONFIG_FILES doc/xsl/isc-docbook-html.xsl" ;; + "doc/xsl/isc-docbook-latex.xsl") CONFIG_FILES="$CONFIG_FILES doc/xsl/isc-docbook-latex.xsl" ;; + "doc/xsl/isc-manpage.xsl") CONFIG_FILES="$CONFIG_FILES doc/xsl/isc-manpage.xsl" ;; + "isc-config.sh") CONFIG_FILES="$CONFIG_FILES isc-config.sh" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "lib/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/Makefile" ;; - "lib/isc/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/include/Makefile" ;; - "lib/isc/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/include/isc/Makefile" ;; - "lib/isc/include/isc/platform.h") CONFIG_FILES="$CONFIG_FILES lib/isc/include/isc/platform.h" ;; - "lib/isc/unix/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/unix/Makefile" ;; - "lib/isc/unix/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/unix/include/Makefile" ;; - "lib/isc/unix/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/unix/include/isc/Makefile" ;; - "lib/isc/nls/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/nls/Makefile" ;; - "lib/isc/$thread_dir/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$thread_dir/Makefile" ;; - "lib/isc/$thread_dir/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$thread_dir/include/Makefile" ;; - "lib/isc/$thread_dir/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$thread_dir/include/isc/Makefile" ;; - "lib/isc/$arch/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$arch/Makefile" ;; - "lib/isc/$arch/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$arch/include/Makefile" ;; - "lib/isc/$arch/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$arch/include/isc/Makefile" ;; - "lib/isccc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccc/Makefile" ;; - "lib/isccc/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccc/include/Makefile" ;; - "lib/isccc/include/isccc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccc/include/isccc/Makefile" ;; - "lib/isccfg/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccfg/Makefile" ;; - "lib/isccfg/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccfg/include/Makefile" ;; - "lib/isccfg/include/isccfg/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccfg/include/isccfg/Makefile" ;; - "lib/irs/Makefile") CONFIG_FILES="$CONFIG_FILES lib/irs/Makefile" ;; - "lib/irs/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/irs/include/Makefile" ;; - "lib/irs/include/irs/Makefile") CONFIG_FILES="$CONFIG_FILES lib/irs/include/irs/Makefile" ;; - "lib/irs/include/irs/netdb.h") CONFIG_FILES="$CONFIG_FILES lib/irs/include/irs/netdb.h" ;; - "lib/irs/include/irs/platform.h") CONFIG_FILES="$CONFIG_FILES lib/irs/include/irs/platform.h" ;; + "lib/bind9/Makefile") CONFIG_FILES="$CONFIG_FILES lib/bind9/Makefile" ;; + "lib/bind9/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/bind9/include/Makefile" ;; + "lib/bind9/include/bind9/Makefile") CONFIG_FILES="$CONFIG_FILES lib/bind9/include/bind9/Makefile" ;; "lib/dns/Makefile") CONFIG_FILES="$CONFIG_FILES lib/dns/Makefile" ;; "lib/dns/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/dns/include/Makefile" ;; "lib/dns/include/dns/Makefile") CONFIG_FILES="$CONFIG_FILES lib/dns/include/dns/Makefile" ;; "lib/dns/include/dst/Makefile") CONFIG_FILES="$CONFIG_FILES lib/dns/include/dst/Makefile" ;; "lib/export/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/Makefile" ;; - "lib/export/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/Makefile" ;; - "lib/export/isc/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/include/Makefile" ;; - "lib/export/isc/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/include/isc/Makefile" ;; - "lib/export/isc/unix/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/unix/Makefile" ;; - "lib/export/isc/unix/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/unix/include/Makefile" ;; - "lib/export/isc/unix/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/unix/include/isc/Makefile" ;; - "lib/export/isc/nls/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/nls/Makefile" ;; - "lib/export/isc/$thread_dir/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/$thread_dir/Makefile" ;; - "lib/export/isc/$thread_dir/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/$thread_dir/include/Makefile" ;; - "lib/export/isc/$thread_dir/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/$thread_dir/include/isc/Makefile" ;; "lib/export/dns/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/dns/Makefile" ;; "lib/export/dns/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/dns/include/Makefile" ;; "lib/export/dns/include/dns/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/dns/include/dns/Makefile" ;; @@ -27474,14 +27659,46 @@ do "lib/export/irs/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/irs/Makefile" ;; "lib/export/irs/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/irs/include/Makefile" ;; "lib/export/irs/include/irs/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/irs/include/irs/Makefile" ;; + "lib/export/isc/$thread_dir/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/$thread_dir/Makefile" ;; + "lib/export/isc/$thread_dir/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/$thread_dir/include/Makefile" ;; + "lib/export/isc/$thread_dir/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/$thread_dir/include/isc/Makefile" ;; + "lib/export/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/Makefile" ;; + "lib/export/isc/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/include/Makefile" ;; + "lib/export/isc/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/include/isc/Makefile" ;; + "lib/export/isc/nls/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/nls/Makefile" ;; + "lib/export/isc/unix/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/unix/Makefile" ;; + "lib/export/isc/unix/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/unix/include/Makefile" ;; + "lib/export/isc/unix/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isc/unix/include/isc/Makefile" ;; "lib/export/isccfg/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isccfg/Makefile" ;; "lib/export/isccfg/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isccfg/include/Makefile" ;; "lib/export/isccfg/include/isccfg/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/isccfg/include/isccfg/Makefile" ;; "lib/export/samples/Makefile") CONFIG_FILES="$CONFIG_FILES lib/export/samples/Makefile" ;; "lib/export/samples/Makefile-postinstall") CONFIG_FILES="$CONFIG_FILES lib/export/samples/Makefile-postinstall" ;; - "lib/bind9/Makefile") CONFIG_FILES="$CONFIG_FILES lib/bind9/Makefile" ;; - "lib/bind9/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/bind9/include/Makefile" ;; - "lib/bind9/include/bind9/Makefile") CONFIG_FILES="$CONFIG_FILES lib/bind9/include/bind9/Makefile" ;; + "lib/irs/Makefile") CONFIG_FILES="$CONFIG_FILES lib/irs/Makefile" ;; + "lib/irs/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/irs/include/Makefile" ;; + "lib/irs/include/irs/Makefile") CONFIG_FILES="$CONFIG_FILES lib/irs/include/irs/Makefile" ;; + "lib/irs/include/irs/netdb.h") CONFIG_FILES="$CONFIG_FILES lib/irs/include/irs/netdb.h" ;; + "lib/irs/include/irs/platform.h") CONFIG_FILES="$CONFIG_FILES lib/irs/include/irs/platform.h" ;; + "lib/isc/$arch/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$arch/Makefile" ;; + "lib/isc/$arch/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$arch/include/Makefile" ;; + "lib/isc/$arch/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$arch/include/isc/Makefile" ;; + "lib/isc/$thread_dir/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$thread_dir/Makefile" ;; + "lib/isc/$thread_dir/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$thread_dir/include/Makefile" ;; + "lib/isc/$thread_dir/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/$thread_dir/include/isc/Makefile" ;; + "lib/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/Makefile" ;; + "lib/isc/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/include/Makefile" ;; + "lib/isc/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/include/isc/Makefile" ;; + "lib/isc/include/isc/platform.h") CONFIG_FILES="$CONFIG_FILES lib/isc/include/isc/platform.h" ;; + "lib/isc/nls/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/nls/Makefile" ;; + "lib/isc/unix/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/unix/Makefile" ;; + "lib/isc/unix/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/unix/include/Makefile" ;; + "lib/isc/unix/include/isc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isc/unix/include/isc/Makefile" ;; + "lib/isccc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccc/Makefile" ;; + "lib/isccc/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccc/include/Makefile" ;; + "lib/isccc/include/isccc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccc/include/isccc/Makefile" ;; + "lib/isccfg/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccfg/Makefile" ;; + "lib/isccfg/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccfg/include/Makefile" ;; + "lib/isccfg/include/isccfg/Makefile") CONFIG_FILES="$CONFIG_FILES lib/isccfg/include/isccfg/Makefile" ;; "lib/lwres/Makefile") CONFIG_FILES="$CONFIG_FILES lib/lwres/Makefile" ;; "lib/lwres/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/lwres/include/Makefile" ;; "lib/lwres/include/lwres/Makefile") CONFIG_FILES="$CONFIG_FILES lib/lwres/include/lwres/Makefile" ;; @@ -27494,50 +27711,6 @@ do "lib/tests/Makefile") CONFIG_FILES="$CONFIG_FILES lib/tests/Makefile" ;; "lib/tests/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/tests/include/Makefile" ;; "lib/tests/include/tests/Makefile") CONFIG_FILES="$CONFIG_FILES lib/tests/include/tests/Makefile" ;; - "bin/Makefile") CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; - "bin/check/Makefile") CONFIG_FILES="$CONFIG_FILES bin/check/Makefile" ;; - "bin/confgen/Makefile") CONFIG_FILES="$CONFIG_FILES bin/confgen/Makefile" ;; - "bin/confgen/unix/Makefile") CONFIG_FILES="$CONFIG_FILES bin/confgen/unix/Makefile" ;; - "bin/named/Makefile") CONFIG_FILES="$CONFIG_FILES bin/named/Makefile" ;; - "bin/named/unix/Makefile") CONFIG_FILES="$CONFIG_FILES bin/named/unix/Makefile" ;; - "bin/rndc/Makefile") CONFIG_FILES="$CONFIG_FILES bin/rndc/Makefile" ;; - "bin/dig/Makefile") CONFIG_FILES="$CONFIG_FILES bin/dig/Makefile" ;; - "bin/nsupdate/Makefile") CONFIG_FILES="$CONFIG_FILES bin/nsupdate/Makefile" ;; - "bin/tests/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/Makefile" ;; - "bin/tests/names/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/names/Makefile" ;; - "bin/tests/master/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/master/Makefile" ;; - "bin/tests/rbt/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/rbt/Makefile" ;; - "bin/tests/db/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/db/Makefile" ;; - "bin/tests/tasks/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/tasks/Makefile" ;; - "bin/tests/timers/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/timers/Makefile" ;; - "bin/tests/dst/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/dst/Makefile" ;; - "bin/tests/mem/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/mem/Makefile" ;; - "bin/tests/hashes/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/hashes/Makefile" ;; - "bin/tests/net/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/net/Makefile" ;; - "bin/tests/sockaddr/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/sockaddr/Makefile" ;; - "bin/tests/system/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/Makefile" ;; - "bin/tests/system/conf.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/system/conf.sh" ;; - "bin/tests/system/filter-aaaa/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/filter-aaaa/Makefile" ;; - "bin/tests/system/lwresd/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/lwresd/Makefile" ;; - "bin/tests/system/tkey/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/tkey/Makefile" ;; - "bin/tests/headerdep_test.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/headerdep_test.sh" ;; - "bin/tests/virtual-time/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/virtual-time/Makefile" ;; - "bin/tests/virtual-time/conf.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/virtual-time/conf.sh" ;; - "bin/tools/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tools/Makefile" ;; - "bin/dnssec/Makefile") CONFIG_FILES="$CONFIG_FILES bin/dnssec/Makefile" ;; - "bin/pkcs11/Makefile") CONFIG_FILES="$CONFIG_FILES bin/pkcs11/Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "doc/arm/Makefile") CONFIG_FILES="$CONFIG_FILES doc/arm/Makefile" ;; - "doc/misc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/misc/Makefile" ;; - "isc-config.sh") CONFIG_FILES="$CONFIG_FILES isc-config.sh" ;; - "doc/xsl/Makefile") CONFIG_FILES="$CONFIG_FILES doc/xsl/Makefile" ;; - "doc/xsl/isc-docbook-chunk.xsl") CONFIG_FILES="$CONFIG_FILES doc/xsl/isc-docbook-chunk.xsl" ;; - "doc/xsl/isc-docbook-html.xsl") CONFIG_FILES="$CONFIG_FILES doc/xsl/isc-docbook-html.xsl" ;; - "doc/xsl/isc-docbook-latex.xsl") CONFIG_FILES="$CONFIG_FILES doc/xsl/isc-docbook-latex.xsl" ;; - "doc/xsl/isc-manpage.xsl") CONFIG_FILES="$CONFIG_FILES doc/xsl/isc-manpage.xsl" ;; - "doc/doxygen/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/doxygen/Doxyfile" ;; - "doc/doxygen/Makefile") CONFIG_FILES="$CONFIG_FILES doc/doxygen/Makefile" ;; - "doc/doxygen/doxygen-input-filter") CONFIG_FILES="$CONFIG_FILES doc/doxygen/doxygen-input-filter" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac diff --git a/configure.in b/configure.in index 1c136dc3..393dd8db 100644 --- a/configure.in +++ b/configure.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -18,7 +18,7 @@ AC_DIVERT_PUSH(1)dnl esyscmd([sed "s/^/# /" COPYRIGHT])dnl AC_DIVERT_POP()dnl -AC_REVISION($Revision: 1.504 $) +AC_REVISION($Revision: 1.512 $) AC_INIT(lib/dns/name.c) AC_PREREQ(2.59) @@ -308,7 +308,7 @@ AC_TRY_COMPILE(, [ ], [AC_MSG_RESULT(no)], [AC_MSG_RESULT(yes) - AC_DEFINE(inline, )]) + AC_DEFINE(inline, ,[Define to empty if your compiler does not support "static inline".])]) AC_TYPE_SIZE_T AC_CHECK_TYPE(ssize_t, int) @@ -517,6 +517,7 @@ then fi done fi +OPENSSL_GOST="" case "$use_openssl" in no) AC_MSG_RESULT(no) @@ -672,6 +673,42 @@ esac AC_MSG_RESULT(no) fi AC_CHECK_FUNCS(EVP_sha256 EVP_sha512) + + AC_MSG_CHECKING(for OpenSSL GOST support) + have_gost="" + AC_TRY_RUN([ +#include <openssl/conf.h> +#include <openssl/engine.h> +int main() { +#if (OPENSSL_VERSION_NUMBER >= 0x10000000L) + ENGINE *e; + + OPENSSL_config(NULL); + + e = ENGINE_by_id("gost"); + if (e == NULL) + return (1); + if (ENGINE_init(e) <= 0) + return (1); + return (0); +#else + return (1); +#endif +} +], + [AC_MSG_RESULT(yes) + have_gost="yes"], + [AC_MSG_RESULT(no) + have_gost="no"]) + case $have_gost in + yes) + OPENSSL_GOST="yes" + AC_DEFINE(HAVE_OPENSSL_GOST, 1, + [Define if your OpenSSL version supports GOST.]) + ;; + *) + ;; + esac CFLAGS="$saved_cflags" LIBS="$saved_libs" OPENSSLLINKOBJS='${OPENSSLLINKOBJS}' @@ -689,6 +726,7 @@ AC_SUBST(USE_OPENSSL) AC_SUBST(DST_OPENSSL_INC) AC_SUBST(OPENSSLLINKOBJS) AC_SUBST(OPENSSLLINKSRCS) +AC_SUBST(OPENSSL_GOST) DNS_CRYPTO_LIBS="$DNS_CRYPTO_LIBS $DNS_OPENSSL_LIBS" # @@ -793,6 +831,9 @@ case "$use_gssapi" in AC_MSG_ERROR([gssapi.h not found]) fi + AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h, + [ISC_PLATFORM_GSSAPI_KRB5_HEADER="#define ISC_PLATFORM_GSSAPI_KRB5_HEADER <$ac_header>"]) + AC_CHECK_HEADERS(krb5.h krb5/krb5.h kerberosv5/krb5.h, [ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"]) @@ -837,7 +878,12 @@ case "$use_gssapi" in # -L/usr/local/lib to LIBS, which can make the # -lgssapi_krb5 test succeed with shared libraries even # when you are trying to build with KTH in /usr/lib. - LIBS="-L$use_gssapi/lib $TRY_LIBS" + if test "$use_gssapi" = "/usr" + then + LIBS="$TRY_LIBS" + else + LIBS="-L$use_gssapi/lib $TRY_LIBS" + fi AC_MSG_CHECKING(linking as $TRY_LIBS) AC_TRY_LINK( , [gss_acquire_cred();krb5_init_context()], gssapi_linked=yes, gssapi_linked=no) @@ -901,6 +947,7 @@ esac AC_SUBST(ISC_PLATFORM_HAVEGSSAPI) AC_SUBST(ISC_PLATFORM_GSSAPIHEADER) +AC_SUBST(ISC_PLATFORM_GSSAPI_KRB5_HEADER) AC_SUBST(ISC_PLATFORM_KRB5HEADER) AC_SUBST(USE_GSSAPI) @@ -2683,6 +2730,42 @@ case "$enable_fixed" in esac # +# Enable response policy rewriting using NS IP addresses +# +AC_ARG_ENABLE(rpz-nsip, + [ --enable-rpz-nsip enable rpz-nsip rules [[default=no]]], + enable_nsip="$enableval", + enable_nsip="no") +case "$enable_nsip" in + yes) + AC_DEFINE(ENABLE_RPZ_NSIP, 1, + [Define to enable rpz-nsip rules.]) + ;; + no) + ;; + *) + ;; +esac + +# +# Enable response policy rewriting using NS name +# +AC_ARG_ENABLE(rpz-nsdname, + [ --enable-rpz-nsdname enable rpz-nsdname rules [[default=no]]], + enable_nsdname="$enableval", + enable_nsdname="no") +case "$enable_nsdname" in + yes) + AC_DEFINE(ENABLE_RPZ_NSDNAME, 1, + [Define to enable rpz-nsdname rules.]) + ;; + no) + ;; + *) + ;; +esac + +# # Activate "filter-aaaa-on-v4" or not? # AC_ARG_ENABLE(filter-aaaa, @@ -3191,50 +3274,67 @@ AC_CONFIG_COMMANDS( # AC_CONFIG_FILES([ + make/Makefile + make/mkdep Makefile - make/Makefile - make/mkdep + bin/Makefile + bin/check/Makefile + bin/confgen/Makefile + bin/confgen/unix/Makefile + bin/dig/Makefile + bin/dnssec/Makefile + bin/named/Makefile + bin/named/unix/Makefile + bin/nsupdate/Makefile + bin/pkcs11/Makefile + bin/rndc/Makefile + bin/tests/Makefile + bin/tests/atomic/Makefile + bin/tests/db/Makefile + bin/tests/dst/Makefile + bin/tests/hashes/Makefile + bin/tests/headerdep_test.sh + bin/tests/master/Makefile + bin/tests/mem/Makefile + bin/tests/names/Makefile + bin/tests/net/Makefile + bin/tests/rbt/Makefile + bin/tests/sockaddr/Makefile + bin/tests/system/Makefile + bin/tests/system/conf.sh + bin/tests/system/filter-aaaa/Makefile + bin/tests/system/gost/prereq.sh + bin/tests/system/lwresd/Makefile + bin/tests/system/rpz/Makefile + bin/tests/system/tkey/Makefile + bin/tests/tasks/Makefile + bin/tests/timers/Makefile + bin/tests/virtual-time/Makefile + bin/tests/virtual-time/conf.sh + bin/tools/Makefile + contrib/check-secure-delegation.pl + contrib/zone-edit.sh + doc/Makefile + doc/arm/Makefile + doc/doxygen/Doxyfile + doc/doxygen/Makefile + doc/doxygen/doxygen-input-filter + doc/misc/Makefile + doc/xsl/Makefile + doc/xsl/isc-docbook-chunk.xsl + doc/xsl/isc-docbook-html.xsl + doc/xsl/isc-docbook-latex.xsl + doc/xsl/isc-manpage.xsl + isc-config.sh lib/Makefile - lib/isc/Makefile - lib/isc/include/Makefile - lib/isc/include/isc/Makefile - lib/isc/include/isc/platform.h - lib/isc/unix/Makefile - lib/isc/unix/include/Makefile - lib/isc/unix/include/isc/Makefile - lib/isc/nls/Makefile - lib/isc/$thread_dir/Makefile - lib/isc/$thread_dir/include/Makefile - lib/isc/$thread_dir/include/isc/Makefile - lib/isc/$arch/Makefile - lib/isc/$arch/include/Makefile - lib/isc/$arch/include/isc/Makefile - lib/isccc/Makefile - lib/isccc/include/Makefile - lib/isccc/include/isccc/Makefile - lib/isccfg/Makefile - lib/isccfg/include/Makefile - lib/isccfg/include/isccfg/Makefile - lib/irs/Makefile - lib/irs/include/Makefile - lib/irs/include/irs/Makefile - lib/irs/include/irs/netdb.h - lib/irs/include/irs/platform.h + lib/bind9/Makefile + lib/bind9/include/Makefile + lib/bind9/include/bind9/Makefile lib/dns/Makefile lib/dns/include/Makefile lib/dns/include/dns/Makefile lib/dns/include/dst/Makefile lib/export/Makefile - lib/export/isc/Makefile - lib/export/isc/include/Makefile - lib/export/isc/include/isc/Makefile - lib/export/isc/unix/Makefile - lib/export/isc/unix/include/Makefile - lib/export/isc/unix/include/isc/Makefile - lib/export/isc/nls/Makefile - lib/export/isc/$thread_dir/Makefile - lib/export/isc/$thread_dir/include/Makefile - lib/export/isc/$thread_dir/include/isc/Makefile lib/export/dns/Makefile lib/export/dns/include/Makefile lib/export/dns/include/dns/Makefile @@ -3242,14 +3342,46 @@ AC_CONFIG_FILES([ lib/export/irs/Makefile lib/export/irs/include/Makefile lib/export/irs/include/irs/Makefile + lib/export/isc/$thread_dir/Makefile + lib/export/isc/$thread_dir/include/Makefile + lib/export/isc/$thread_dir/include/isc/Makefile + lib/export/isc/Makefile + lib/export/isc/include/Makefile + lib/export/isc/include/isc/Makefile + lib/export/isc/nls/Makefile + lib/export/isc/unix/Makefile + lib/export/isc/unix/include/Makefile + lib/export/isc/unix/include/isc/Makefile lib/export/isccfg/Makefile lib/export/isccfg/include/Makefile lib/export/isccfg/include/isccfg/Makefile lib/export/samples/Makefile lib/export/samples/Makefile-postinstall - lib/bind9/Makefile - lib/bind9/include/Makefile - lib/bind9/include/bind9/Makefile + lib/irs/Makefile + lib/irs/include/Makefile + lib/irs/include/irs/Makefile + lib/irs/include/irs/netdb.h + lib/irs/include/irs/platform.h + lib/isc/$arch/Makefile + lib/isc/$arch/include/Makefile + lib/isc/$arch/include/isc/Makefile + lib/isc/$thread_dir/Makefile + lib/isc/$thread_dir/include/Makefile + lib/isc/$thread_dir/include/isc/Makefile + lib/isc/Makefile + lib/isc/include/Makefile + lib/isc/include/isc/Makefile + lib/isc/include/isc/platform.h + lib/isc/nls/Makefile + lib/isc/unix/Makefile + lib/isc/unix/include/Makefile + lib/isc/unix/include/isc/Makefile + lib/isccc/Makefile + lib/isccc/include/Makefile + lib/isccc/include/isccc/Makefile + lib/isccfg/Makefile + lib/isccfg/include/Makefile + lib/isccfg/include/isccfg/Makefile lib/lwres/Makefile lib/lwres/include/Makefile lib/lwres/include/lwres/Makefile @@ -3262,50 +3394,6 @@ AC_CONFIG_FILES([ lib/tests/Makefile lib/tests/include/Makefile lib/tests/include/tests/Makefile - bin/Makefile - bin/check/Makefile - bin/confgen/Makefile - bin/confgen/unix/Makefile - bin/named/Makefile - bin/named/unix/Makefile - bin/rndc/Makefile - bin/dig/Makefile - bin/nsupdate/Makefile - bin/tests/Makefile - bin/tests/names/Makefile - bin/tests/master/Makefile - bin/tests/rbt/Makefile - bin/tests/db/Makefile - bin/tests/tasks/Makefile - bin/tests/timers/Makefile - bin/tests/dst/Makefile - bin/tests/mem/Makefile - bin/tests/hashes/Makefile - bin/tests/net/Makefile - bin/tests/sockaddr/Makefile - bin/tests/system/Makefile - bin/tests/system/conf.sh - bin/tests/system/filter-aaaa/Makefile - bin/tests/system/lwresd/Makefile - bin/tests/system/tkey/Makefile - bin/tests/headerdep_test.sh - bin/tests/virtual-time/Makefile - bin/tests/virtual-time/conf.sh - bin/tools/Makefile - bin/dnssec/Makefile - bin/pkcs11/Makefile - doc/Makefile - doc/arm/Makefile - doc/misc/Makefile - isc-config.sh - doc/xsl/Makefile - doc/xsl/isc-docbook-chunk.xsl - doc/xsl/isc-docbook-html.xsl - doc/xsl/isc-docbook-latex.xsl - doc/xsl/isc-manpage.xsl - doc/doxygen/Doxyfile - doc/doxygen/Makefile - doc/doxygen/doxygen-input-filter ]) # diff --git a/contrib/check-secure-delegation.pl.in b/contrib/check-secure-delegation.pl.in new file mode 100644 index 00000000..644875e5 --- /dev/null +++ b/contrib/check-secure-delegation.pl.in @@ -0,0 +1,121 @@ +#!@PERL@ +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: check-secure-delegation.pl.in,v 1.2 2010-12-21 02:32:21 marka Exp $ + +use warnings; +use FileHandle; +use IPC::Open2; +use POSIX qw/strftime/; + +# +# We only compare keyid / DNSSEC algorithm pairs. If this succeeds then +# the crypto will likely succeed. If it fails then the crypto will definitely +# fail. +# +$prefix = "@prefix@"; +$dig = "$prefix/bin/dig +cd +dnssec +noall +answer"; +$dsfromkey = "$prefix/sbin/dnssec-dsfromkey -1 -A -f /dev/stdin"; + +# Get "now" in a RRSIG datestamp format. +$now = strftime "%Y%m%d%H%M%S", gmtime; + +foreach $zone (@ARGV) { + my %algorithms = (); + my %dnskeygood = (); + my %dnskeyalg = (); + my %dnskey = (); + my %dsgood = (); + my %ds = (); + + # Read the DS records and extract the key id, algorithm pairs + open(DS, "$dig -t DS -q $zone|") || die("dig DS failed"); + while(<DS>) { + @words = split; + if ($words[3] eq "RRSIG" && $words[4] eq "DS") { + next if ($words[8] >= $now && $words[9] <= $now); + print "BAD SIG DATES: $_"; + } + next if ($words[3] ne "DS"); + $ds{"$words[4] $words[5]"} = 1; + $algorithms{"$words[5]"} = 1; + } + close(DS); + + # Read the RRSIG(DNSKEY) records and extract the key id, + # algorithm pairs. Set good if we have a match against the DS + # records. DNSKEY records should be before the RRSIG records. + open(DNSKEY, "$dig -t DNSKEY -q $zone|") || die("dig DNSKEY failed"); + while (<DNSKEY>) { + @words = split; + if ($words[3] eq "DNSKEY") { + $dnskeyalg{"$words[6]"} = 1; + next if (! -e "/dev/stdin"); + # get the key id ($dswords[3]). + $pid = open2(*Reader, *Writer, "$dsfromkey $zone"); + die("dsfromkey failed") if ($pid == -1); + print Writer "$_"; + close(Writer); + $line = <Reader>; + close(Reader); + @dswords = split /\s/, $line; + $dnskey{"$dswords[3] $dswords[4]"} = 1; + next; + } + next if ($words[3] ne "RRSIG" || $words[4] ne "DNSKEY"); + if ($words[8] >= $now && $words[9] <= $now) { + # If we don't have /dev/stdin then just check for the + # RRSIG otherwise check for both the DNSKEY and + # RRSIG. + $dsgood{"$words[5]"} = 1 + if (! -e "/dev/stdin" && + exists($ds{"$words[10] $words[5]"})); + $dsgood{"$words[5]"} = 1 + if (exists($ds{"$words[10] $words[5]"}) && + exists($dnskey{"$words[10] $words[5]"})); + $dnskeygood{"$words[5]"} = 1 + if (! -e "/dev/stdin"); + $dnskeygood{"$words[5]"} = 1 + if (exists($dnskey{"$words[10] $words[5]"})); + } else { + $dnskeygood{"$words[5]"} = 1; + print "BAD SIG DATES: $_"; + } + } + close(DNSKEY); + + # Do we have signatures for all DNSKEY algorithms? + foreach $alg ( keys %dnskeyalg ) { + print "Missing $zone DNSKEY RRSIG for algorithm $alg\n" + if (!exists($dnskeygood{$alg})); + } + + # Do we have a matching self signed DNSKEY for all DNSSEC algorithms + # in the DS records. + $count = 0; + foreach $alg ( keys %algorithms ) { + if (exists($dsgood{$alg})) { + print "$zone algorithm $alg good " . + "(found DS / self signed DNSKEY pair)\n"; + } else { + print "$zone algorithm $alg bad " . + "(no DS / self signed DNSKEY pair found)\n"; + } + $count++; + } + print "$zone has no secure delegation records\n" + if (! $count); +} diff --git a/contrib/dlz/config.dlz.in b/contrib/dlz/config.dlz.in index ff3783ad..a49e40b3 100644 --- a/contrib/dlz/config.dlz.in +++ b/contrib/dlz/config.dlz.in @@ -456,6 +456,29 @@ case "$use_dlz_stub" in ;; esac +# +# Was --with-dlz-dlopen specified? +# + +AC_MSG_CHECKING(for dlopen DLZ driver) +AC_ARG_WITH(dlz_dlopen, +[ --with-dlz-dlopen[=PATH] Build with dlopen DLZ driver [yes|no]. + (Required to use dlopen driver with DLZ)], + use_dlz_dlopen="$withval", use_dlz_dlopen="no") + +case "$use_dlz_dlopen" in + no) + AC_MSG_RESULT(no) + ;; + *) + AC_CHECK_LIB(dl, dlclose) + AC_CHECK_FUNCS(dlopen dlclose dlsym) + DLZ_ADD_DRIVER(DLOPEN, dlz_dlopen_driver) + + AC_MSG_RESULT(yes) + ;; +esac + # Add any additional DLZ drivers here. diff --git a/contrib/dlz/drivers/dlz_bdb_driver.c b/contrib/dlz/drivers/dlz_bdb_driver.c index ebbb6dda..a4d7a9d7 100644 --- a/contrib/dlz/drivers/dlz_bdb_driver.c +++ b/contrib/dlz/drivers/dlz_bdb_driver.c @@ -742,7 +742,14 @@ static dns_sdlzmethods_t dlz_bdb_methods = { bdb_lookup, NULL, bdb_allnodes, - bdb_allowzonexfr + bdb_allowzonexfr, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, }; /*% diff --git a/contrib/dlz/drivers/dlz_bdbhpt_driver.c b/contrib/dlz/drivers/dlz_bdbhpt_driver.c index 3a170d6f..25d78d7e 100644 --- a/contrib/dlz/drivers/dlz_bdbhpt_driver.c +++ b/contrib/dlz/drivers/dlz_bdbhpt_driver.c @@ -807,7 +807,14 @@ static dns_sdlzmethods_t dlz_bdbhpt_methods = { bdbhpt_lookup, NULL, bdbhpt_allnodes, - bdbhpt_allowzonexfr + bdbhpt_allowzonexfr, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, }; /*% diff --git a/contrib/dlz/drivers/dlz_dlopen_driver.c b/contrib/dlz/drivers/dlz_dlopen_driver.c new file mode 100644 index 00000000..e7060158 --- /dev/null +++ b/contrib/dlz/drivers/dlz_dlopen_driver.c @@ -0,0 +1,624 @@ +/* + * Copyright (C) 2010 Andrew Tridgell + * + * based on dlz_stub_driver.c + * which is: + * Copyright (C) 2002 Stichting NLnet, Netherlands, stichting@nlnet.nl. + * Copyright (C) 1999-2001 Internet Software Consortium. + * see dlz_stub_driver.c for details + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR + * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + * STICHTING NLNET BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE + * USE OR PERFORMANCE OF THIS SOFTWARE. + * + * The development of Dynamically Loadable Zones (DLZ) for Bind 9 was + * conceived and contributed by Rob Butler. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ROB BUTLER + * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + * ROB BUTLER BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE + * USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifdef DLZ_DLOPEN + +#include <config.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <stdbool.h> +#include <dlfcn.h> + +#include <dns/log.h> +#include <dns/sdlz.h> +#include <dns/result.h> + +#include <isc/mem.h> +#include <isc/print.h> +#include <isc/result.h> +#include <isc/util.h> + +#include <named/globals.h> + +#include <dlz/dlz_dlopen_driver.h> + +static dns_sdlzimplementation_t *dlz_dlopen = NULL; + + +typedef struct dlopen_data { + isc_mem_t *mctx; + char *dl_path; + char *dlzname; + void *dl_handle; + void *dbdata; + unsigned int flags; + isc_mutex_t lock; + int version; + isc_boolean_t in_configure; + + int (*dlz_version)(unsigned int *flags); + isc_result_t (*dlz_create)(const char *dlzname, + unsigned int argc, char *argv[], + void **dbdata, ...); + isc_result_t (*dlz_findzonedb)(void *dbdata, const char *name); + isc_result_t (*dlz_lookup)(const char *zone, const char *name, + void *dbdata, dns_sdlzlookup_t *lookup); + isc_result_t (*dlz_authority)(const char *zone, void *dbdata, + dns_sdlzlookup_t *lookup); + isc_result_t (*dlz_allnodes)(const char *zone, void *dbdata, + dns_sdlzallnodes_t *allnodes); + isc_result_t (*dlz_allowzonexfr)(void *dbdata, const char *name, + const char *client); + isc_result_t (*dlz_newversion)(const char *zone, void *dbdata, + void **versionp); + void (*dlz_closeversion)(const char *zone, isc_boolean_t commit, + void *dbdata, void **versionp); + isc_result_t (*dlz_configure)(dns_view_t *view, void *dbdata); + isc_boolean_t (*dlz_ssumatch)(const char *signer, const char *name, + const char *tcpaddr, const char *type, + const char *key, uint32_t keydatalen, + uint8_t *keydata, void *dbdata); + isc_result_t (*dlz_addrdataset)(const char *name, const char *rdatastr, + void *dbdata, void *version); + isc_result_t (*dlz_subrdataset)(const char *name, const char *rdatastr, + void *dbdata, void *version); + isc_result_t (*dlz_delrdataset)(const char *name, const char *type, + void *dbdata, void *version); + void (*dlz_destroy)(void *dbdata); +} dlopen_data_t; + +/* Modules can choose whether they are lock-safe or not. */ +#define MAYBE_LOCK(cd) \ + do { \ + if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \ + cd->in_configure == ISC_FALSE) \ + LOCK(&cd->lock); \ + } while (0) + +#define MAYBE_UNLOCK(cd) \ + do { \ + if ((cd->flags & DNS_SDLZFLAG_THREADSAFE) == 0 && \ + cd->in_configure == ISC_FALSE) \ + UNLOCK(&cd->lock); \ + } while (0) + +/* + * Log a message at the given level. + */ +static void dlopen_log(int level, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + isc_log_vwrite(dns_lctx, DNS_LOGCATEGORY_DATABASE, + DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(level), + fmt, ap); + va_end(ap); +} + +/* + * SDLZ methods + */ + +static isc_result_t +dlopen_dlz_allnodes(const char *zone, void *driverarg, void *dbdata, + dns_sdlzallnodes_t *allnodes) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + + UNUSED(driverarg); + + if (cd->dlz_allnodes == NULL) { + return (ISC_R_NOPERM); + } + + MAYBE_LOCK(cd); + result = cd->dlz_allnodes(zone, cd->dbdata, allnodes); + MAYBE_UNLOCK(cd); + return (result); +} + + +static isc_result_t +dlopen_dlz_allowzonexfr(void *driverarg, void *dbdata, const char *name, + const char *client) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + UNUSED(driverarg); + + + if (cd->dlz_allowzonexfr == NULL) { + return (ISC_R_NOPERM); + } + + MAYBE_LOCK(cd); + result = cd->dlz_allowzonexfr(cd->dbdata, name, client); + MAYBE_UNLOCK(cd); + return (result); +} + +static isc_result_t +dlopen_dlz_authority(const char *zone, void *driverarg, void *dbdata, + dns_sdlzlookup_t *lookup) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + UNUSED(driverarg); + + if (cd->dlz_authority == NULL) { + return (ISC_R_NOTIMPLEMENTED); + } + + MAYBE_LOCK(cd); + result = cd->dlz_authority(zone, cd->dbdata, lookup); + MAYBE_UNLOCK(cd); + return (result); +} + +static isc_result_t +dlopen_dlz_findzonedb(void *driverarg, void *dbdata, const char *name) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + UNUSED(driverarg); + + MAYBE_LOCK(cd); + result = cd->dlz_findzonedb(cd->dbdata, name); + MAYBE_UNLOCK(cd); + return (result); +} + + +static isc_result_t +dlopen_dlz_lookup(const char *zone, const char *name, void *driverarg, + void *dbdata, dns_sdlzlookup_t *lookup) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + UNUSED(driverarg); + + MAYBE_LOCK(cd); + result = cd->dlz_lookup(zone, name, cd->dbdata, lookup); + MAYBE_UNLOCK(cd); + return (result); +} + +/* + * Load a symbol from the library + */ +static void * +dl_load_symbol(dlopen_data_t *cd, const char *symbol, bool mandatory) { + void *ptr = dlsym(cd->dl_handle, symbol); + if (ptr == NULL && mandatory) { + dlopen_log(ISC_LOG_ERROR, + "dlz_dlopen: library '%s' is missing " + "required symbol '%s'", cd->dl_path, symbol); + } + return (ptr); +} + +/* + * Called at startup for each dlopen zone in named.conf + */ +static isc_result_t +dlopen_dlz_create(const char *dlzname, unsigned int argc, char *argv[], + void *driverarg, void **dbdata) +{ + dlopen_data_t *cd; + isc_mem_t *mctx = NULL; + isc_result_t result = ISC_R_FAILURE; + int dlopen_flags; + + UNUSED(driverarg); + + if (argc < 2) { + dlopen_log(ISC_LOG_ERROR, + "dlz_dlopen driver for '%s' needs a path to " + "the shared library", dlzname); + return (ISC_R_FAILURE); + } + + isc_mem_create(0, 0, &mctx); + + cd = isc_mem_get(mctx, sizeof(*cd)); + if (cd == NULL) { + isc_mem_destroy(&mctx); + return (ISC_R_NOMEMORY); + } + memset(cd, 0, sizeof(*cd)); + + cd->mctx = mctx; + + cd->dl_path = isc_mem_strdup(cd->mctx, argv[1]); + if (cd->dl_path == NULL) { + goto failed; + } + + cd->dlzname = isc_mem_strdup(cd->mctx, dlzname); + if (cd->dlzname == NULL) { + goto failed; + } + + /* Open the library */ + dlopen_flags = RTLD_NOW; + +#ifdef RTLD_DEEPBIND + /* + * If RTLD_DEEPBIND is available then use it. This can avoid + * issues with a module using a different version of a system + * library than one that bind9 uses. For example, bind9 may link + * to MIT kerberos, but the module may use Heimdal. If we don't + * use RTLD_DEEPBIND then we could end up with Heimdal functions + * calling MIT functions, which leads to bizarre results (usually + * a segfault). + */ + dlopen_flags |= RTLD_DEEPBIND; +#endif + + cd->dl_handle = dlopen(cd->dl_path, dlopen_flags); + if (cd->dl_handle == NULL) { + dlopen_log(ISC_LOG_ERROR, + "dlz_dlopen failed to open library '%s' - %s", + cd->dl_path, dlerror()); + goto failed; + } + + /* Find the symbols */ + cd->dlz_version = dl_load_symbol(cd, "dlz_version", true); + cd->dlz_create = dl_load_symbol(cd, "dlz_create", true); + cd->dlz_lookup = dl_load_symbol(cd, "dlz_lookup", true); + cd->dlz_findzonedb = dl_load_symbol(cd, "dlz_findzonedb", true); + + if (cd->dlz_create == NULL || cd->dlz_lookup == NULL || + cd->dlz_findzonedb == NULL) + { + /* We're missing a required symbol */ + goto failed; + } + + cd->dlz_allowzonexfr = dl_load_symbol(cd, "dlz_allowzonexfr", false); + cd->dlz_allnodes = dl_load_symbol(cd, "dlz_allnodes", + cd->dlz_allowzonexfr != NULL); + cd->dlz_authority = dl_load_symbol(cd, "dlz_authority", false); + cd->dlz_newversion = dl_load_symbol(cd, "dlz_newversion", false); + cd->dlz_closeversion = dl_load_symbol(cd, "dlz_closeversion", + cd->dlz_newversion != NULL); + cd->dlz_configure = dl_load_symbol(cd, "dlz_configure", false); + cd->dlz_ssumatch = dl_load_symbol(cd, "dlz_ssumatch", false); + cd->dlz_addrdataset = dl_load_symbol(cd, "dlz_addrdataset", false); + cd->dlz_subrdataset = dl_load_symbol(cd, "dlz_subrdataset", false); + cd->dlz_delrdataset = dl_load_symbol(cd, "dlz_delrdataset", false); + + /* Check the version of the API is the same */ + cd->version = cd->dlz_version(&cd->flags); + if (cd->version != DLZ_DLOPEN_VERSION) { + dlopen_log(ISC_LOG_ERROR, + "dlz_dlopen: incorrect version %d " + "should be %d in '%s'", + cd->version, DLZ_DLOPEN_VERSION, cd->dl_path); + goto failed; + } + + /* + * Call the library's create function. Note that this is an + * extended version of dlz create, with the addition of + * named function pointers for helper functions that the + * driver will need. This avoids the need for the backend to + * link the bind9 libraries + */ + MAYBE_LOCK(cd); + result = cd->dlz_create(dlzname, argc-1, argv+1, + &cd->dbdata, + "log", dlopen_log, + "putrr", dns_sdlz_putrr, + "putnamedrr", dns_sdlz_putnamedrr, + "writeable_zone", dns_dlz_writeablezone, + NULL); + MAYBE_UNLOCK(cd); + if (result != ISC_R_SUCCESS) + goto failed; + + *dbdata = cd; + + return (ISC_R_SUCCESS); + +failed: + dlopen_log(ISC_LOG_ERROR, "dlz_dlopen of '%s' failed", dlzname); + if (cd->dl_path) + isc_mem_free(mctx, cd->dl_path); + if (cd->dlzname) + isc_mem_free(mctx, cd->dlzname); +#ifdef HAVE_DLCLOSE + if (cd->dl_handle) + dlclose(cd->dl_handle); +#endif + isc_mem_put(mctx, cd, sizeof(*cd)); + isc_mem_destroy(&mctx); + return (result); +} + + +/* + * Called when bind is shutting down + */ +static void +dlopen_dlz_destroy(void *driverarg, void *dbdata) { + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_mem_t *mctx; + + UNUSED(driverarg); + + if (cd->dlz_destroy) { + MAYBE_LOCK(cd); + cd->dlz_destroy(cd->dbdata); + MAYBE_UNLOCK(cd); + } + + if (cd->dl_path) + isc_mem_free(cd->mctx, cd->dl_path); + if (cd->dlzname) + isc_mem_free(cd->mctx, cd->dlzname); +#ifdef HAVE_DLCLOSE + if (cd->dl_handle) + dlclose(cd->dl_handle); +#endif + mctx = cd->mctx; + isc_mem_put(mctx, cd, sizeof(*cd)); + isc_mem_destroy(&mctx); +} + +/* + * Called to start a transaction + */ +static isc_result_t +dlopen_dlz_newversion(const char *zone, void *driverarg, void *dbdata, + void **versionp) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + UNUSED(driverarg); + + if (cd->dlz_newversion == NULL) + return (ISC_R_NOTIMPLEMENTED); + + MAYBE_LOCK(cd); + result = cd->dlz_newversion(zone, cd->dbdata, versionp); + MAYBE_UNLOCK(cd); + return (result); +} + +/* + * Called to end a transaction + */ +static void +dlopen_dlz_closeversion(const char *zone, isc_boolean_t commit, + void *driverarg, void *dbdata, void **versionp) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + + UNUSED(driverarg); + + if (cd->dlz_newversion == NULL) { + *versionp = NULL; + return; + } + + MAYBE_LOCK(cd); + cd->dlz_closeversion(zone, commit, cd->dbdata, versionp); + MAYBE_UNLOCK(cd); +} + +/* + * Called on startup to configure any writeable zones + */ +static isc_result_t +dlopen_dlz_configure(dns_view_t *view, void *driverarg, void *dbdata) { + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + UNUSED(driverarg); + + if (cd->dlz_configure == NULL) + return (ISC_R_SUCCESS); + + MAYBE_LOCK(cd); + cd->in_configure = ISC_TRUE; + result = cd->dlz_configure(view, cd->dbdata); + cd->in_configure = ISC_FALSE; + MAYBE_UNLOCK(cd); + + return (result); +} + + +/* + * Check for authority to change a name + */ +static isc_boolean_t +dlopen_dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr, + const char *type, const char *key, uint32_t keydatalen, + uint8_t *keydata, void *driverarg, void *dbdata) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_boolean_t ret; + + UNUSED(driverarg); + + if (cd->dlz_ssumatch == NULL) + return (ISC_FALSE); + + MAYBE_LOCK(cd); + ret = cd->dlz_ssumatch(signer, name, tcpaddr, type, key, keydatalen, + keydata, cd->dbdata); + MAYBE_UNLOCK(cd); + + return (ret); +} + + +/* + * Add an rdataset + */ +static isc_result_t +dlopen_dlz_addrdataset(const char *name, const char *rdatastr, + void *driverarg, void *dbdata, void *version) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + UNUSED(driverarg); + + if (cd->dlz_addrdataset == NULL) + return (ISC_R_NOTIMPLEMENTED); + + MAYBE_LOCK(cd); + result = cd->dlz_addrdataset(name, rdatastr, cd->dbdata, version); + MAYBE_UNLOCK(cd); + + return (result); +} + +/* + * Subtract an rdataset + */ +static isc_result_t +dlopen_dlz_subrdataset(const char *name, const char *rdatastr, + void *driverarg, void *dbdata, void *version) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + UNUSED(driverarg); + + if (cd->dlz_subrdataset == NULL) + return (ISC_R_NOTIMPLEMENTED); + + MAYBE_LOCK(cd); + result = cd->dlz_subrdataset(name, rdatastr, cd->dbdata, version); + MAYBE_UNLOCK(cd); + + return (result); +} + +/* + delete a rdataset + */ +static isc_result_t +dlopen_dlz_delrdataset(const char *name, const char *type, + void *driverarg, void *dbdata, void *version) +{ + dlopen_data_t *cd = (dlopen_data_t *) dbdata; + isc_result_t result; + + UNUSED(driverarg); + + if (cd->dlz_delrdataset == NULL) + return (ISC_R_NOTIMPLEMENTED); + + MAYBE_LOCK(cd); + result = cd->dlz_delrdataset(name, type, cd->dbdata, version); + MAYBE_UNLOCK(cd); + + return (result); +} + + +static dns_sdlzmethods_t dlz_dlopen_methods = { + dlopen_dlz_create, + dlopen_dlz_destroy, + dlopen_dlz_findzonedb, + dlopen_dlz_lookup, + dlopen_dlz_authority, + dlopen_dlz_allnodes, + dlopen_dlz_allowzonexfr, + dlopen_dlz_newversion, + dlopen_dlz_closeversion, + dlopen_dlz_configure, + dlopen_dlz_ssumatch, + dlopen_dlz_addrdataset, + dlopen_dlz_subrdataset, + dlopen_dlz_delrdataset +}; + +/* + * Register driver with BIND + */ +isc_result_t +dlz_dlopen_init(void) { + isc_result_t result; + + dlopen_log(2, "Registering DLZ_dlopen driver"); + + result = dns_sdlzregister("dlopen", &dlz_dlopen_methods, NULL, + DNS_SDLZFLAG_RELATIVEOWNER | + DNS_SDLZFLAG_THREADSAFE, + ns_g_mctx, &dlz_dlopen); + + if (result != ISC_R_SUCCESS) { + UNEXPECTED_ERROR(__FILE__, __LINE__, + "dns_sdlzregister() failed: %s", + isc_result_totext(result)); + result = ISC_R_UNEXPECTED; + } + + return (result); +} + + +/* + * Unregister the driver + */ +void +dlz_dlopen_clear(void) { + dlopen_log(2, "Unregistering DLZ_dlopen driver"); + if (dlz_dlopen != NULL) + dns_sdlzunregister(&dlz_dlopen); +} + +#endif diff --git a/contrib/dlz/drivers/dlz_drivers.c b/contrib/dlz/drivers/dlz_drivers.c index e2c6a6e1..574e94bf 100644 --- a/contrib/dlz/drivers/dlz_drivers.c +++ b/contrib/dlz/drivers/dlz_drivers.c @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dlz_drivers.c,v 1.2 2005/09/05 00:10:55 marka Exp $ */ +/* $Id: dlz_drivers.c,v 1.3 2010-12-18 01:56:20 each Exp $ */ /*! \file */ @@ -61,6 +61,10 @@ #include <dlz/dlz_odbc_driver.h> #endif +#ifdef DLZ_DLOPEN +#include <dlz/dlz_dlopen_driver.h> +#endif + /*% * Call init functions for all relevant DLZ drivers. */ @@ -115,6 +119,12 @@ dlz_drivers_init(void) { return (result); #endif +#ifdef DLZ_DLOPEN + result = dlz_dlopen_init(); + if (result != ISC_R_SUCCESS) + return (result); +#endif + return (result); } @@ -154,4 +164,8 @@ dlz_drivers_clear(void) { dlz_odbc_clear(); #endif +#ifdef DLZ_DLOPEN + dlz_dlopen_clear(); +#endif + } diff --git a/contrib/dlz/drivers/dlz_filesystem_driver.c b/contrib/dlz/drivers/dlz_filesystem_driver.c index 36514918..a04faaac 100644 --- a/contrib/dlz/drivers/dlz_filesystem_driver.c +++ b/contrib/dlz/drivers/dlz_filesystem_driver.c @@ -996,7 +996,14 @@ static dns_sdlzmethods_t dlz_fs_methods = { fs_lookup, NULL, fs_allnodes, - fs_allowzonexfr + fs_allowzonexfr, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, }; /*% diff --git a/contrib/dlz/drivers/dlz_ldap_driver.c b/contrib/dlz/drivers/dlz_ldap_driver.c index 35d75489..77422bae 100644 --- a/contrib/dlz/drivers/dlz_ldap_driver.c +++ b/contrib/dlz/drivers/dlz_ldap_driver.c @@ -1287,7 +1287,14 @@ static dns_sdlzmethods_t dlz_ldap_methods = { dlz_ldap_lookup, dlz_ldap_authority, dlz_ldap_allnodes, - dlz_ldap_allowzonexfr + dlz_ldap_allowzonexfr, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, }; /*% diff --git a/contrib/dlz/drivers/dlz_mysql_driver.c b/contrib/dlz/drivers/dlz_mysql_driver.c index 50cceb13..dcfab1e6 100644 --- a/contrib/dlz/drivers/dlz_mysql_driver.c +++ b/contrib/dlz/drivers/dlz_mysql_driver.c @@ -1013,7 +1013,14 @@ static dns_sdlzmethods_t dlz_mysql_methods = { mysql_lookup, mysql_authority, mysql_allnodes, - mysql_allowzonexfr + mysql_allowzonexfr, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, }; /*% diff --git a/contrib/dlz/drivers/dlz_odbc_driver.c b/contrib/dlz/drivers/dlz_odbc_driver.c index eb088a21..6031b08d 100644 --- a/contrib/dlz/drivers/dlz_odbc_driver.c +++ b/contrib/dlz/drivers/dlz_odbc_driver.c @@ -1506,7 +1506,14 @@ static dns_sdlzmethods_t dlz_odbc_methods = { odbc_lookup, odbc_authority, odbc_allnodes, - odbc_allowzonexfr + odbc_allowzonexfr, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, }; /*% diff --git a/contrib/dlz/drivers/dlz_postgres_driver.c b/contrib/dlz/drivers/dlz_postgres_driver.c index 5cad59e3..c5367c61 100644 --- a/contrib/dlz/drivers/dlz_postgres_driver.c +++ b/contrib/dlz/drivers/dlz_postgres_driver.c @@ -1310,7 +1310,14 @@ static dns_sdlzmethods_t dlz_postgres_methods = { postgres_lookup, postgres_authority, postgres_allnodes, - postgres_allowzonexfr + postgres_allowzonexfr, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, }; /*% diff --git a/contrib/dlz/drivers/dlz_stub_driver.c b/contrib/dlz/drivers/dlz_stub_driver.c index f9a3bb8f..c2e72ddb 100644 --- a/contrib/dlz/drivers/dlz_stub_driver.c +++ b/contrib/dlz/drivers/dlz_stub_driver.c @@ -164,7 +164,7 @@ stub_dlz_findzonedb(void *driverarg, void *dbdata, const char *name) if (strcmp(cd->myzone, name) == 0) return (ISC_R_SUCCESS); else - return (ISC_R_SUCCESS); + return (ISC_R_NOTFOUND); } @@ -279,7 +279,14 @@ static dns_sdlzmethods_t dlz_stub_methods = { stub_dlz_lookup, stub_dlz_authority, stub_dlz_allnodes, - stub_dlz_allowzonexfr + stub_dlz_allowzonexfr, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, }; /*% diff --git a/contrib/dlz/drivers/include/dlz/dlz_dlopen_driver.h b/contrib/dlz/drivers/include/dlz/dlz_dlopen_driver.h new file mode 100644 index 00000000..d155f315 --- /dev/null +++ b/contrib/dlz/drivers/include/dlz/dlz_dlopen_driver.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2010 Andrew Tridgell + * + * based on dlz_stub_driver.h + * which is: + * Copyright (C) 2002 Stichting NLnet, Netherlands, stichting@nlnet.nl. + * Copyright (C) 1999-2001 Internet Software Consortium. + * see dlz_stub_driver.h for details + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR + * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + * STICHTING NLNET BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE + * USE OR PERFORMANCE OF THIS SOFTWARE. + * + * The development of Dynamically Loadable Zones (DLZ) for Bind 9 was + * conceived and contributed by Rob Butler. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ROB BUTLER + * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + * ROB BUTLER BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE + * USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DLZ_DLOPEN_DRIVER_H +#define DLZ_DLOPEN_DRIVER_H + +isc_result_t +dlz_dlopen_init(void); + +void +dlz_dlopen_clear(void); + +#define DLZ_DLOPEN_VERSION 1 + +#endif diff --git a/contrib/dlz/drivers/rules.in b/contrib/dlz/drivers/rules.in index 9caabcb4..888e3f40 100644 --- a/contrib/dlz/drivers/rules.in +++ b/contrib/dlz/drivers/rules.in @@ -12,7 +12,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: rules.in,v 1.2 2005/09/05 00:10:57 marka Exp $ +# $Id: rules.in,v 1.3 2010-12-18 01:56:21 each Exp $ dlz_drivers.@O@: ${DLZ_DRIVER_DIR}/dlz_drivers.c ${DLZ_DRIVER_DIR}/include/dlz/dlz_drivers.h ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c ${DLZ_DRIVER_DIR}/dlz_drivers.c @@ -42,6 +42,9 @@ dlz_odbc_driver.@O@: ${DLZ_DRIVER_DIR}/dlz_odbc_driver.c ${DLZ_DRIVER_DIR}/inclu dlz_postgres_driver.@O@: ${DLZ_DRIVER_DIR}/dlz_postgres_driver.c ${DLZ_DRIVER_DIR}/include/dlz/dlz_postgres_driver.h ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c ${DLZ_DRIVER_DIR}/dlz_postgres_driver.c +dlz_dlopen_driver.@O@: ${DLZ_DRIVER_DIR}/dlz_dlopen_driver.c ${DLZ_DRIVER_DIR}/include/dlz/dlz_dlopen_driver.h + ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c ${DLZ_DRIVER_DIR}/dlz_dlopen_driver.c + dlz_stub_driver.@O@: ${DLZ_DRIVER_DIR}/dlz_stub_driver.c ${DLZ_DRIVER_DIR}/include/dlz/dlz_stub_driver.h ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} -c ${DLZ_DRIVER_DIR}/dlz_stub_driver.c diff --git a/contrib/dlz/example/Makefile b/contrib/dlz/example/Makefile new file mode 100644 index 00000000..b8509aaf --- /dev/null +++ b/contrib/dlz/example/Makefile @@ -0,0 +1,16 @@ +# for building the dlz_example driver we don't use +# the bind9 build structure as the aim is to provide an +# example that is separable from the bind9 source tree + +# this means this Makefile is not portable, so the testsuite +# skips this test on platforms where it doesn't build + +CFLAGS=-fPIC -g + +all: dlz_example.so + +dlz_example.so: dlz_example.o + $(CC) $(CFLAGS) -shared -o dlz_example.so dlz_example.o + +clean: + rm -f dlz_example.o dlz_example.so diff --git a/contrib/dlz/example/dlz_example.c b/contrib/dlz/example/dlz_example.c new file mode 100644 index 00000000..c8e46801 --- /dev/null +++ b/contrib/dlz/example/dlz_example.c @@ -0,0 +1,482 @@ +/* + * Copyright (C) 2010 Andrew Tridgell + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR + * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + * STICHTING NLNET BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE + * USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + this provides a very simple example of an external loadable DLZ + driver, with update support + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdarg.h> + +#include "dlz_minimal.h" + + +/* for this simple example, use fixed sized strings */ +struct record { + char name[100]; + char type[10]; + char data[200]; + uint32_t ttl; +}; + +#define MAX_RECORDS 100 + +struct dlz_example_data { + char *zone_name; + + /* an example driver doesn't need good memory management :-) */ + struct record current[MAX_RECORDS]; + struct record adds[MAX_RECORDS]; + struct record deletes[MAX_RECORDS]; + + bool transaction_started; + + /* helper functions from the dlz_dlopen driver */ + void (*log)(int level, const char *fmt, ...); + isc_result_t (*putrr)(dns_sdlzlookup_t *handle, const char *type, + dns_ttl_t ttl, const char *data); + isc_result_t (*putnamedrr)(dns_sdlzlookup_t *handle, const char *name, + const char *type, dns_ttl_t ttl, const char *data); + isc_result_t (*writeable_zone)(dns_view_t *view, const char *zone_name); +}; + +static bool single_valued(const char *type) +{ + const char *single[] = { "soa", "cname", NULL }; + int i; + for (i=0; single[i]; i++) { + if (strcasecmp(single[i], type) == 0) { + return true; + } + } + return false; +} + +/* + add a record to a list + */ +static isc_result_t add_name(struct dlz_example_data *state, + struct record *list, const char *name, const char *type, + uint32_t ttl, const char *data) +{ + int i; + bool single = single_valued(type); + int first_empty = -1; + + for (i=0; i<MAX_RECORDS; i++) { + if (first_empty == -1 && strlen(list[i].name) == 0) { + first_empty = i; + } + if (strcasecmp(list[i].name, name) != 0) + continue; + if (strcasecmp(list[i].type, type) != 0) + continue; + if (!single && strcasecmp(list[i].data, data) != 0) + continue; + break; + } + if (i == MAX_RECORDS && first_empty != -1) { + i = first_empty; + } + if (i == MAX_RECORDS) { + state->log(ISC_LOG_ERROR, "dlz_example: out of record space"); + return ISC_R_FAILURE; + } + strcpy(list[i].name, name); + strcpy(list[i].type, type); + strcpy(list[i].data, data); + list[i].ttl = ttl; + return ISC_R_SUCCESS; +} + +/* + delete a record from a list + */ +static isc_result_t del_name(struct dlz_example_data *state, + struct record *list, const char *name, const char *type, + uint32_t ttl, const char *data) +{ + int i; + for (i=0; i<MAX_RECORDS; i++) { + if (strcasecmp(name, list[i].name) == 0 && + strcasecmp(type, list[i].type) == 0 && + strcasecmp(data, list[i].data) == 0 && + ttl == list[i].ttl) { + break; + } + } + if (i == MAX_RECORDS) { + return ISC_R_NOTFOUND; + } + memset(&list[i], 0, sizeof(struct record)); + return ISC_R_SUCCESS; +} + + + +/* + return the version of the API + */ +int dlz_version(unsigned int *flags) +{ + return DLZ_DLOPEN_VERSION; +} + +/* + remember a helper function from the bind9 dlz_dlopen driver + */ +static void b9_add_helper(struct dlz_example_data *state, const char *helper_name, void *ptr) +{ + if (strcmp(helper_name, "log") == 0) { + state->log = ptr; + } + if (strcmp(helper_name, "putrr") == 0) { + state->putrr = ptr; + } + if (strcmp(helper_name, "putnamedrr") == 0) { + state->putnamedrr = ptr; + } + if (strcmp(helper_name, "writeable_zone") == 0) { + state->writeable_zone = ptr; + } +} + + +/* + called to initialise the driver + */ +isc_result_t dlz_create(const char *dlzname, unsigned int argc, char *argv[], + void **dbdata, ...) +{ + struct dlz_example_data *state; + const char *helper_name; + va_list ap; + char soa_data[200]; + + state = calloc(1, sizeof(struct dlz_example_data)); + if (state == NULL) { + return ISC_R_NOMEMORY; + } + + /* fill in the helper functions */ + va_start(ap, dbdata); + while ((helper_name = va_arg(ap, const char *)) != NULL) { + b9_add_helper(state, helper_name, va_arg(ap, void*)); + } + va_end(ap); + + if (argc < 2) { + state->log(ISC_LOG_ERROR, "dlz_example: please specify a zone name"); + return ISC_R_FAILURE; + } + + state->zone_name = strdup(argv[1]); + + sprintf(soa_data, "%s hostmaster.%s 123 900 600 86400 3600", + state->zone_name, state->zone_name); + + add_name(state, &state->current[0], state->zone_name, "soa", 3600, soa_data); + add_name(state, &state->current[0], state->zone_name, "ns", 3600, state->zone_name); + add_name(state, &state->current[0], state->zone_name, "a", 1800, "10.53.0.1"); + + state->log(ISC_LOG_INFO, "dlz_example: started for zone %s", state->zone_name); + + *dbdata = state; + return ISC_R_SUCCESS; +} + +/* + shutdown the backend + */ +void dlz_destroy(void *dbdata) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + state->log(ISC_LOG_INFO, "dlz_example: shutting down zone %s", state->zone_name); + free(state->zone_name); + free(state); +} + + +/* + see if we handle a given zone + */ +isc_result_t dlz_findzonedb(void *dbdata, const char *name) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + if (strcasecmp(state->zone_name, name) == 0) { + return ISC_R_SUCCESS; + } + return ISC_R_NOTFOUND; +} + + + +/* + lookup one record + */ +isc_result_t dlz_lookup(const char *zone, const char *name, + void *dbdata, dns_sdlzlookup_t *lookup) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + int i; + bool found = false; + char full_name[100]; + + if (strcmp(name, "@") == 0) { + strcpy(full_name, state->zone_name); + } else { + sprintf(full_name, "%s.%s", name, state->zone_name); + } + for (i=0; i<MAX_RECORDS; i++) { + if (strcasecmp(state->current[i].name, full_name) == 0) { + isc_result_t result; + found = true; + result = state->putrr(lookup, state->current[i].type, + state->current[i].ttl, state->current[i].data); + if (result != ISC_R_SUCCESS) { + return result; + } + } + } + if (!found) { + return ISC_R_NOTFOUND; + } + return ISC_R_SUCCESS; +} + + +/* + see if a zone transfer is allowed + */ +isc_result_t dlz_allowzonexfr(void *dbdata, const char *name, const char *client) +{ + /* just say yes for all our zones */ + return dlz_findzonedb(dbdata, name); +} + +/* + perform a zone transfer + */ +isc_result_t dlz_allnodes(const char *zone, void *dbdata, + dns_sdlzallnodes_t *allnodes) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + int i; + + for (i=0; i<MAX_RECORDS; i++) { + isc_result_t result; + if (strlen(state->current[i].name) == 0) { + continue; + } + result = state->putnamedrr(allnodes, state->current[i].name, state->current[i].type, + state->current[i].ttl, state->current[i].data); + if (result != ISC_R_SUCCESS) { + return result; + } + } + + return ISC_R_SUCCESS; +} + + +/* + start a transaction + */ +isc_result_t dlz_newversion(const char *zone, void *dbdata, void **versionp) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + + if (state->transaction_started) { + state->log(ISC_LOG_INFO, "dlz_example: transaction already started for zone %s", zone); + return ISC_R_FAILURE; + } + + state->transaction_started = true; + + *versionp = (void *) &state->transaction_started; + + return ISC_R_SUCCESS; +} + +/* + end a transaction + */ +void dlz_closeversion(const char *zone, isc_boolean_t commit, void *dbdata, void **versionp) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + + if (!state->transaction_started) { + state->log(ISC_LOG_INFO, "dlz_example: transaction not started for zone %s", zone); + *versionp = NULL; + return; + } + + state->transaction_started = false; + + *versionp = NULL; + + if (commit) { + int i; + state->log(ISC_LOG_INFO, "dlz_example: committing transaction on zone %s", zone); + for (i=0; i<MAX_RECORDS; i++) { + if (strlen(state->adds[i].name) > 0) { + add_name(state, &state->current[0], + state->adds[i].name, + state->adds[i].type, + state->adds[i].ttl, + state->adds[i].data); + } + } + for (i=0; i<MAX_RECORDS; i++) { + if (strlen(state->deletes[i].name) > 0) { + del_name(state, &state->current[0], + state->deletes[i].name, + state->deletes[i].type, + state->deletes[i].ttl, + state->deletes[i].data); + } + } + } else { + state->log(ISC_LOG_INFO, "dlz_example: cancelling transaction on zone %s", zone); + } + memset(state->adds, 0, sizeof(state->adds)); + memset(state->deletes, 0, sizeof(state->deletes)); +} + + +/* + configure a writeable zone + */ +isc_result_t dlz_configure(dns_view_t *view, void *dbdata) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + isc_result_t result; + + + state->log(ISC_LOG_INFO, "dlz_example: starting configure"); + if (state->writeable_zone == NULL) { + state->log(ISC_LOG_INFO, "dlz_example: no writeable_zone method available"); + return ISC_R_FAILURE; + } + + result = state->writeable_zone(view, state->zone_name); + if (result != ISC_R_SUCCESS) { + state->log(ISC_LOG_ERROR, "dlz_example: failed to configure zone %s", state->zone_name); + return result; + } + + state->log(ISC_LOG_INFO, "dlz_example: configured writeable zone %s", state->zone_name); + return ISC_R_SUCCESS; +} + +/* + authorize a zone update + */ +isc_boolean_t dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr, + const char *type, const char *key, uint32_t keydatalen, uint8_t *keydata, + void *dbdata) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + if (strncmp(name, "deny.", 5) == 0) { + state->log(ISC_LOG_INFO, "dlz_example: denying update of name=%s by %s", + name, signer); + return false; + } + state->log(ISC_LOG_INFO, "dlz_example: allowing update of name=%s by %s", + name, signer); + return true; +} + + +static isc_result_t modrdataset(struct dlz_example_data *state, const char *name, const char *rdatastr, + struct record *list) +{ + char *full_name, *dclass, *type, *data, *ttlstr; + char *buf = strdup(rdatastr); + isc_result_t result; + char *saveptr = NULL; + + /* + the format is: + FULLNAME\tTTL\tDCLASS\tTYPE\tDATA + + The DATA field is space separated, and is in the data format + for the type used by dig + */ + + full_name = strtok_r(buf, "\t", &saveptr); + if (full_name == NULL) return ISC_R_FAILURE; + ttlstr = strtok_r(NULL, "\t", &saveptr); + if (ttlstr == NULL) return ISC_R_FAILURE; + dclass = strtok_r(NULL, "\t", &saveptr); + if (dclass == NULL) return ISC_R_FAILURE; + type = strtok_r(NULL, "\t", &saveptr); + if (type == NULL) return ISC_R_FAILURE; + data = strtok_r(NULL, "\t", &saveptr); + if (data == NULL) return ISC_R_FAILURE; + + result = add_name(state, list, name, type, strtoul(ttlstr, NULL, 10), data); + free(buf); + return result; +} + + +isc_result_t dlz_addrdataset(const char *name, const char *rdatastr, void *dbdata, void *version) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + + if (version != (void *) &state->transaction_started) { + return ISC_R_FAILURE; + } + + state->log(ISC_LOG_INFO, "dlz_example: adding rdataset %s '%s'", name, rdatastr); + + return modrdataset(state, name, rdatastr, &state->adds[0]); +} + +isc_result_t dlz_subrdataset(const char *name, const char *rdatastr, void *dbdata, void *version) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + + if (version != (void *) &state->transaction_started) { + return ISC_R_FAILURE; + } + + state->log(ISC_LOG_INFO, "dlz_example: subtracting rdataset %s '%s'", name, rdatastr); + + return modrdataset(state, name, rdatastr, &state->deletes[0]); +} + + +isc_result_t dlz_delrdataset(const char *name, const char *type, void *dbdata, void *version) +{ + struct dlz_example_data *state = (struct dlz_example_data *)dbdata; + + if (version != (void *) &state->transaction_started) { + return ISC_R_FAILURE; + } + + state->log(ISC_LOG_INFO, "dlz_example: deleting rdataset %s of type %s", name, type); + + return ISC_R_SUCCESS; +} diff --git a/contrib/dlz/example/dlz_minimal.h b/contrib/dlz/example/dlz_minimal.h new file mode 100644 index 00000000..923c63a9 --- /dev/null +++ b/contrib/dlz/example/dlz_minimal.h @@ -0,0 +1,140 @@ +/* + * Copyright (C) 2010 Andrew Tridgell + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR + * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE + * USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + This header provides a minimal set of defines and typedefs needed + for building an external DLZ module for bind9. When creating a new + external DLZ driver, please copy this header into your own source + tree. + */ +typedef unsigned int isc_result_t; +typedef bool isc_boolean_t; +typedef uint32_t dns_ttl_t; + +#define DLZ_DLOPEN_VERSION 1 + +/* return this in flags to dlz_version() if thread safe */ +#define DNS_SDLZFLAG_THREADSAFE 0x00000001U + +/* result codes */ +#define ISC_R_SUCCESS 0 +#define ISC_R_NOMEMORY 1 +#define ISC_R_NOTFOUND 23 +#define ISC_R_FAILURE 25 + +/* log levels */ +#define ISC_LOG_INFO (-1) +#define ISC_LOG_NOTICE (-2) +#define ISC_LOG_WARNING (-3) +#define ISC_LOG_ERROR (-4) +#define ISC_LOG_CRITICAL (-5) + +/* some opaque structures */ +typedef void *dns_sdlzlookup_t; +typedef void *dns_sdlzallnodes_t; +typedef void *dns_view_t; + +/* + * prototypes for the functions you can include in your driver + */ + + +/* + * dlz_version() is required for all DLZ external drivers. It should + * return DLZ_DLOPEN_VERSION + */ +int dlz_version(unsigned int *flags); + +/* + * dlz_create() is required for all DLZ external drivers. + */ +isc_result_t dlz_create(const char *dlzname, unsigned int argc, char *argv[], void **dbdata, ...); + +/* + * dlz_destroy() is optional, and will be called when the driver is + * unloaded if supplied + */ +void dlz_destroy(void *dbdata); + +/* + dlz_findzonedb is required for all DLZ external drivers + */ +isc_result_t dlz_findzonedb(void *dbdata, const char *name); + +/* + dlz_lookup is required for all DLZ external drivers + */ +isc_result_t dlz_lookup(const char *zone, const char *name, + void *dbdata, dns_sdlzlookup_t *lookup); + +/* + dlz_allowzonexfr() is optional, and should be supplied if you want + to support zone transfers + */ +isc_result_t dlz_allowzonexfr(void *dbdata, const char *name, const char *client); + + +/* + dlz_allnodes() is optional, but must be supplied if supply a + dlz_allowzonexfr() function + */ +isc_result_t dlz_allnodes(const char *zone, void *dbdata, dns_sdlzallnodes_t *allnodes); + +/* + dlz_newversion() is optional. It should be supplied if you want to + support dynamic updates. + */ +isc_result_t dlz_newversion(const char *zone, void *dbdata, void **versionp); + +/* + dlz_closeversion() is optional, but must be supplied if you supply + a dlz_newversion() function + */ +void dlz_closeversion(const char *zone, isc_boolean_t commit, void *dbdata, void **versionp); + +/* + dlz_configure() is optional, but must be supplied if you want to + support dynamic updates + */ +isc_result_t dlz_configure(dns_view_t *view, void *dbdata); + +/* + dlz_ssumatch() is optional, but must be supplied if you want to + support dynamic updates + */ +isc_boolean_t dlz_ssumatch(const char *signer, const char *name, const char *tcpaddr, + const char *type, const char *key, uint32_t keydatalen, uint8_t *keydata, + void *dbdata); + +/* + dlz_addrdataset() is optional, but must be supplied if you want to + support dynamic updates + */ +isc_result_t dlz_addrdataset(const char *name, const char *rdatastr, void *dbdata, void *version); + +/* + dlz_subrdataset() is optional, but must be supplied if you want to + support dynamic updates + */ +isc_result_t dlz_subrdataset(const char *name, const char *rdatastr, void *dbdata, void *version); + +/* + dlz_delrdataset() is optional, but must be supplied if you want to + support dynamic updates + */ +isc_result_t dlz_delrdataset(const char *name, const char *type, void *dbdata, void *version); diff --git a/contrib/zone-edit.sh.in b/contrib/zone-edit.sh.in new file mode 100644 index 00000000..18ac592b --- /dev/null +++ b/contrib/zone-edit.sh.in @@ -0,0 +1,158 @@ +#!/bin/sh +# +# Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: zone-edit.sh.in,v 1.2 2010-12-21 23:47:08 tbox Exp $ + +dir=/tmp/zone-edit.$$ +mkdir ${dir} || exit 1 +trap "/bin/rm -rf ${dir}" 0 + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@bindir@ +sbindir=@sbindir@ + +dig=${bindir}/dig +checkzone=${sbindir}/named-checkzone +nsupdate=${bindir}/nsupdate + +case $# in +0) echo "Usage: zone-edit <zone> [dig options] [ -- nsupdate options ]"; exit 0 ;; +esac + +# What kind of echo are we using? +try=`echo -n ""` +if test "X$try" = "X-n " +then + echo_arg="" + bsc="\\c" +else + echo_arg="-n" + bsc="" +fi + +zone="${1}" +shift +digopts= +while test $# -ne 0 +do + case "${1}" in + --) + shift + break + ;; + *) + digopts="$digopts $1" + shift + ;; + esac +done + +${dig} axfr "$zone" $digopts | +awk '$4 == "RRSIG" || $4 == "NSEC" || $4 == "NSEC3" || $4 == "NSEC3PARAM" { next; } { print; }' > ${dir}/old + +if test -s ${dir}/old +then + ${checkzone} -q -D "$zone" ${dir}/old > ${dir}/ooo +fi + +if test -s ${dir}/ooo +then + cp ${dir}/ooo ${dir}/new + while : + do + if ${VISUAL:-${EDITOR:-/bin/ed}} ${dir}/new + then + if ${checkzone} -q -D "$zone" ${dir}/new > ${dir}/nnn + then + sort ${dir}/ooo > ${dir}/s1 + sort ${dir}/nnn > ${dir}/s2 + comm -23 ${dir}/s1 ${dir}/s2 | + sed 's/^/update delete /' > ${dir}/ccc + comm -13 ${dir}/s1 ${dir}/s2 | + sed 's/^/update add /' >> ${dir}/ccc + if test -s ${dir}/ccc + then + cat ${dir}/ccc | more + while : + do + echo ${echo_arg} "Update (u), Abort (a), Redo (r), Modify (m), Display (d) : $bsc" + read ans + case "$ans" in + u) + ( + echo zone "$zone" + cat ${dir}/ccc + echo send + ) | ${nsupdate} "$@" + break 2 + ;; + a) + break 2 + ;; + d) + cat ${dir}/ccc | more + ;; + r) + cp ${dir}/ooo ${dir}/new + break + ;; + m) + break + ;; + esac + done + else + while : + do + echo ${echo_arg} "Abort (a), Redo (r), Modify (m) : $bsc" + read ans + case "$ans" in + a) + break 2 + ;; + r) + cp ${dir}/ooo ${dir}/new + break + ;; + m) + break + ;; + esac + done + fi + else + while : + do + echo ${echo_arg} "Abort (a), Redo (r), Modify (m) : $bsc" + read ans + case "$ans" in + a) + break 2 + ;; + r) + cp ${dir}/ooo ${dir}/new + break + ;; + m) + break + ;; + esac + done + fi + fi + done +fi diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml index 4717284b..eb193774 100644 --- a/doc/arm/Bv9ARM-book.xml +++ b/doc/arm/Bv9ARM-book.xml @@ -2,7 +2,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [<!ENTITY mdash "—">]> <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -18,7 +18,7 @@ - PERFORMANCE OF THIS SOFTWARE. --> -<!-- File: $Id: Bv9ARM-book.xml,v 1.466 2010/12/08 02:46:16 marka Exp $ --> +<!-- File: $Id: Bv9ARM-book.xml,v 1.476 2011-01-13 01:59:27 marka Exp $ --> <book xmlns:xi="http://www.w3.org/2001/XInclude"> <title>BIND 9 Administrator Reference Manual</title> @@ -31,6 +31,7 @@ <year>2008</year> <year>2009</year> <year>2010</year> + <year>2011</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> <copyright> @@ -1792,12 +1793,14 @@ controls { </para> <para> - The <command>tkey-gssapi-credential</command> and - <command>tkey-domain</command> clauses in the - <command>options</command> statement enable the - server to negotiate keys that can be matched against those - in <command>update-policy</command> or - <command>allow-update</command>. + Dynamic updates using Kerberos signed requests can be made + using the TKEY/GSS protocol by setting either the + <command>tkey-gssapi-keytab</command> option, or alternatively + by setting both the <command>tkey-gssapi-credential</command> + and <command>tkey-domain</command> options. Once enabled, + Kerberos signed requests will be matched against the update + policies for the zone, using the Kerberos principal as the + signer for the request. </para> <para> @@ -2612,13 +2615,23 @@ allow-update { key host1-host2. ;}; <para> To enable <command>named</command> to validate answers from - other servers, the <command>dnssec-enable</command> and - <command>dnssec-validation</command> options must both be - set to yes (the default setting in <acronym>BIND</acronym> 9.5 - and later), and at least one trust anchor must be configured + other servers, the <command>dnssec-enable</command> option + must be set to <userinput>yes</userinput>, and the + <command>dnssec-validation</command> options must be set to + <userinput>yes</userinput> or <userinput>auto</userinput>. + </para> + + <para> + If <command>dnssec-validation</command> is set to + <userinput>auto</userinput>, then a default + trust anchor for the DNS root zone will be used. + If it is set to <userinput>yes</userinput>, however, + then at least one trust anchor must be configured with a <command>trusted-keys</command> or <command>managed-keys</command> statement in - <filename>named.conf</filename>. + <filename>named.conf</filename>, or DNSSEC validation + will not occur. The default setting is + <userinput>yes</userinput>. </para> <para> @@ -4973,6 +4986,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] <optional> key-directory <replaceable>path_name</replaceable>; </optional> <optional> managed-keys-directory <replaceable>path_name</replaceable>; </optional> <optional> named-xfer <replaceable>path_name</replaceable>; </optional> + <optional> tkey-gssapi-keytab <replaceable>path_name</replaceable>; </optional> <optional> tkey-gssapi-credential <replaceable>principal</replaceable>; </optional> <optional> tkey-domain <replaceable>domainname</replaceable>; </optional> <optional> tkey-dhkey <replaceable>key_name</replaceable> <replaceable>key_tag</replaceable>; </optional> @@ -5003,7 +5017,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] <optional> maintain-ixfr-base <replaceable>yes_or_no</replaceable>; </optional> <optional> ixfr-from-differences (<replaceable>yes_or_no</replaceable> | <constant>master</constant> | <constant>slave</constant>); </optional> <optional> dnssec-enable <replaceable>yes_or_no</replaceable>; </optional> - <optional> dnssec-validation <replaceable>yes_or_no</replaceable>; </optional> + <optional> dnssec-validation (<replaceable>yes_or_no</replaceable> | <constant>auto</constant>); </optional> <optional> dnssec-lookaside ( <replaceable>auto</replaceable> | <replaceable>domain</replaceable> trust-anchor <replaceable>domain</replaceable> ); </optional> <optional> dnssec-must-be-secure <replaceable>domain yes_or_no</replaceable>; </optional> @@ -5128,6 +5142,8 @@ badresp:1,adberr:0,findfail:0,valfail:0] <optional> recursion-only <replaceable>yes_or_no</replaceable>; </optional> <optional> break-dnssec <replaceable>yes_or_no</replaceable>; </optional> }; </optional>; + <optional> dns64-server <replaceable>name</replaceable> </optional> + <optional> dns64-contact <replaceable>name</replaceable> </optional> <optional> preferred-glue ( <replaceable>A</replaceable> | <replaceable>AAAA</replaceable> | <replaceable>NONE</replaceable> ); </optional> <optional> edns-udp-size <replaceable>number</replaceable>; </optional> <optional> max-udp-size <replaceable>number</replaceable>; </optional> @@ -5149,6 +5165,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] <optional> zero-no-soa-ttl-cache <replaceable>yes_or_no</replaceable> ; </optional> <optional> deny-answer-addresses { <replaceable>address_match_list</replaceable> } <optional> except-from { <replaceable>namelist</replaceable> } </optional>;</optional> <optional> deny-answer-aliases { <replaceable>namelist</replaceable> } <optional> except-from { <replaceable>namelist</replaceable> } </optional>;</optional> + <optional> response-policy { <replaceable>zone_name</replaceable> <optional> policy <replaceable>given</replaceable> | <replaceable>no-op</replaceable> | <replaceable>nxdomain</replaceable> | <replaceable>nodata</replaceable> | <replaceable>cname domain</replaceable> </optional> ; } ; </optional> }; </programlisting> @@ -5330,19 +5347,33 @@ badresp:1,adberr:0,findfail:0,valfail:0] </varlistentry> <varlistentry> + <term><command>tkey-gssapi-keytab</command></term> + <listitem> + <para> + The KRB5 keytab file to use for GSS-TSIG updates. If + this option is set and tkey-gssapi-credential is not + set, then updates will be allowed with any key + matching a principal in the specified keytab. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><command>tkey-gssapi-credential</command></term> <listitem> <para> The security credential with which the server should authenticate keys requested by the GSS-TSIG protocol. Currently only Kerberos 5 authentication is available - and the credential is a Kerberos principal which - the server can acquire through the default system - key file, normally <filename>/etc/krb5.keytab</filename>. - Normally this principal is of the form - "<userinput>DNS/</userinput><varname>server.domain</varname>". - To use GSS-TSIG, <command>tkey-domain</command> - must also be set. + and the credential is a Kerberos principal which the + server can acquire through the default system key + file, normally <filename>/etc/krb5.keytab</filename>. + The location keytab file can be overridden using the + tkey-gssapi-keytab option. Normally this principal is + of the form "<userinput>DNS/</userinput><varname>server.domain</varname>". + To use GSS-TSIG, <command>tkey-domain</command> must + also be set if a specific keytab is not set with + tkey-gssapi-keytab. </para> </listitem> </varlistentry> @@ -5364,7 +5395,8 @@ badresp:1,adberr:0,findfail:0,valfail:0] should be the server's domain name, or an otherwise non-existent subdomain like "_tkey.<varname>domainname</varname>". If you are - using GSS-TSIG, this variable must be defined. + using GSS-TSIG, this variable must be defined, unless + you specify a specific keytab using tkey-gssapi-keytab. </para> </listitem> </varlistentry> @@ -5469,7 +5501,8 @@ badresp:1,adberr:0,findfail:0,valfail:0] The pathname of a file to override the built-in trusted keys provided by <command>named</command>. See the discussion of <command>dnssec-lookaside</command> - for details. If not specified, the default is + and <command>dnssec-validation</command> for details. + If not specified, the default is <filename>/etc/bind.keys</filename>. </para> </listitem> @@ -5676,10 +5709,10 @@ options { </para> <para> The default DLV key is stored in the file - <filename>bind.keys</filename>, which - <command>named</command> loads at startup if - <command>dnssec-lookaside</command> is set to - <constant>auto</constant>. A copy of that file is + <filename>bind.keys</filename>; + <command>named</command> will load that key at + startup if <command>dnssec-lookaside</command> is set to + <constant>auto</constant>. A copy of the file is installed along with <acronym>BIND</acronym> 9, and is current as of the release date. If the DLV key expires, a new copy of <filename>bind.keys</filename> can be downloaded @@ -5693,10 +5726,10 @@ options { to be recompiled with a new key when the DLV key expires.) </para> <para> - NOTE: Using <filename>bind.keys</filename> to store - locally-configured keys is possible, but not - recommended, as the file will be overwritten whenever - <acronym>BIND</acronym> 9 is re-installed or upgraded. + NOTE: <command>named</command> only loads certain specific + keys from <filename>bind.keys</filename>: those for the + DLV zone and for the DNS root zone. The file cannot be + used to store keys for other zones. </para> </listitem> </varlistentry> @@ -5734,6 +5767,16 @@ options { 64 and 96 as per RFC 6052. </para> <para> + Additionally a reverse IP6.ARPA zone will be created for + the prefix to provide a mapping from the IP6.ARPA names + to the corresponding IN-ADDR.ARPA names using synthesized + CNAMEs. <command>dns64-server</command> and + <command>dns64-contact</command> can be used to specify + the name of the server and contact for the zones. These + are settable at the view / options level. These are + not settable on a per-prefix basis. + </para> + <para> Each <command>dns64</command> supports a optional <command>clients</command> acl which defines which clients see this directive. If not defined it defaults to @@ -6577,7 +6620,15 @@ options { Enable DNSSEC validation in <command>named</command>. Note <command>dnssec-enable</command> also needs to be set to <userinput>yes</userinput> to be effective. - The default is <userinput>yes</userinput>. + If set to <userinput>no</userinput>, DNSSEC validation + is disabled. If set to <userinput>auto</userinput>, + DNSSEC validation is enabled, and a default + trust-anchor for the DNS root zone is used. If set to + <userinput>yes</userinput>, DNSSEC validation is enabled, + but a trust anchor must be manually configured using + a <command>trusted-keys</command> or + <command>managed-keys</command> statement. The default + is <userinput>yes</userinput>. </para> </listitem> </varlistentry> @@ -6663,17 +6714,6 @@ options { </para> </listitem> </varlistentry> - <varlistentry> - <term><command>check-mx</command></term> - <listitem> - <para> - Check whether the MX record appears to refer to a IP address. - The default is to <command>warn</command>. Other possible - values are <command>fail</command> and - <command>ignore</command>. - </para> - </listitem> - </varlistentry> <varlistentry> <term><command>check-wildcard</command></term> @@ -9144,6 +9184,143 @@ deny-answer-aliases { "example.net"; }; spuriously can break such applications. </para> </sect3> + + <sect3> + <title>Response Policy Zone (RPZ) Rewriting</title> + <para> + <acronym>BIND</acronym> 9 includes an intentionally limited + mechanism to modify DNS responses for recursive requests + similar to email anti-spam DNS blacklists. + All response policy zones are named in the + <command>response-policy</command> option for the view or among the + global options if there is no response-policy option for the view. + </para> + + <para> + The rules encoded in a response policy zone (RPZ) are applied + only to responses to queries that ask for recursion (RD=1). + RPZs are normal DNS zones containing largely valid RRsets + that can be queried normal if allowed. + It is usually best to restrict those queries with something like + <command>allow-query {none; };</command> or + <command>allow-query { 127.0.0.1; };</command>. + </para> + + <para> + There are four kinds of RPZ rewrite rules. QNAME rules are + applied to query names in requests and to targets of CNAME + records resolved in the process of generating the response. + The owner name of a QNAME rule is the query name relativized + to the RPZ. + </para> + + <para> + IP rules are triggered by addresses in A and AAAA records. + All IP addresses in A or AAAA RRsets are tested and the rule + longest prefix is applied. Ties between rules with equal prefixes + are broken in favor of the first RPZ mentioned in the + response-policy option. + The rule matching the smallest IP address is chosen among equal + prefix rules from a single RPZ. + IP rules are expressed in RRsets with owner names that are + subdomains of rpz-ip and encoding an IP address block, reversed + as in IN-ARPA. + prefix.B.B.B.B with prefix between 1 and 32 and B between 1 and 255 + encodes an IPv4 address. + IPv6 addresses are encoded by with prefix.W.W.W.W.W.W.W.W or + prefix.WORDS.zz.WORDS. The words in the standard IPv6 text + representation are reversed, "::" is replaced with ".zz.", + and ":" becomes ".". + </para> + + <para> + NSDNAME rules match names in NS RRsets for the response or a + parent. They are encoded as subdomains of rpz-nsdomain relativized + to the RPZ origin name. + </para> + + <para> + NSIP rules match IP addresses in A and AAAA RRsets for names of + responsible servers or the names that can be matched by NSDNAME + rules. The are encoded like IP rules except as subdomains of + rpz-nsip. + </para> + + <para> + Authority verification issues and variations in authority data in + the current version of <acronym>BIND</acronym> 9 can cause + inconsistent results from NSIP and NSDNAME. So they are available + only when <acronym>BIND</acronym> is built with the + <userinput>--enable-rpz-nsip</userinput> or + <userinput>--enable-rpz-nsdname</userinput> options + on the "configure" command line. + </para> + + <para> + Four policies can be expressed. + The <command>NXDOMAIN</command> policy causes a NXDOMAIN response + and is expressed with an RRset consisting of a single CNAME + whose target is the root domain (.). + <command>NODATA</command> generates NODATA or ANCOUNT=1 regardless + of query type. + It is expressed with a CNAME whose target is the wildcard + top-level domain (*.). + The <command>NO-OP</command> policy does not change the response + and is used to "poke holes" in policies for larger CIDR blocks or in + zones named later in the <command>response-policy</command> option. + The NO-OP policy is expressed by a CNAME with a target consisting + of the variable part of the owner name, such as "example.com." for + a QNAME rule or "128.1.0.0.127." for an IP rule. + The <command>CNAME</command> policy is used to replace the RRsets + of response. + A and AAAA RRsets are most common and useful to capture + an evil domain in a walled garden, but any valid set of RRsets + is possible. + </para> + + <para> + All of the policies in an RPZ can be overridden with a + <command>policy</command> clause. + <command>given</command> says "do not override." + <command>no-op</command> says "do nothing" regardless of the policy + in RPZ records. + <command>nxdomain</command> causes all RPZ rules to generate + NXDOMAIN results. + <command>nodata</command> gives nodata. + <command>cname domain</command> causes all RPZ rules to act as if + the consisted of a "cname domain" record. + </para> + + <para> + For example, you might use this option statement + </para> +<programlisting>response-policy { zone "bl"; };</programlisting> + <para> + and this zone statement + </para> +<programlisting>zone "bl" {type master; file "example/bl"; allow-query {none;}; };</programlisting> + <para> + with this zone file + </para> +<programlisting>$TTL 1H +@ SOA LOCALHOST. named-mgr.example.com (1 1h 15m 30d 2h) + +; QNAME rules +nxdomain.domain.com CNAME . +nodata.domain.com CNAME *. +bad.domain.com A 10.0.0.1 + AAAA 2001:2::1 +ok.domain.com CNAME ok.domain.com. + +; IP rules rewriting all answers for 127/8 except 127.0.0.1 +8.0.0.0.127.ip CNAME . +32.1.0.0.127.ip CNAME 32.1.0.0.127. + +; NSDNAME and NSIP rules +ns.domain.com.rpz-nsdname CNAME . +48.zz.2.2001.rpz-nsip CNAME . +</programlisting> + </sect3> </sect2> <sect2 id="server_statement_grammar"> @@ -9893,6 +10070,14 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea }; zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replaceable></optional> { + type static-stub; + <optional> allow-query { <replaceable>address_match_list</replaceable> }; </optional> + <optional> server-addresses { <optional> <replaceable>ip_addr</replaceable> ; ... </optional> }; </optional> + <optional> server-names { <optional> <replaceable>namelist</replaceable> </optional> }; </optional> + <optional> zone-statistics <replaceable>yes_or_no</replaceable> ; </optional> +}; + +zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replaceable></optional> { type forward; <optional> forward (<constant>only</constant>|<constant>first</constant>) ; </optional> <optional> forwarders { <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional> @@ -10039,6 +10224,55 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea <row rowsep="0"> <entry colname="1"> <para> + <varname>static-stub</varname> + </para> + </entry> + <entry colname="2"> + <para> + A static-stub zone is similar to a stub zone + with the following exceptions: + the zone data is statically configured, rather + than transferred from a master server; + when recursion is necessary for a query that + matches a static-stub zone, the locally + configured data (nameserver names and glue addresses) + is always used even if different authoritative + information is cached. + </para> + <para> + Zone data is configured via the + <command>server-addresses</command> and + <command>server-names</command> zone options. + </para> + <para> + The zone data is maintained in the form of NS + and (if necessary) glue A or AAAA RRs + internally, which can be seen by dumping zone + databases by <command>rndc dumpdb -all</command>. + The configured RRs are considered local configuration + parameters rather than public data. + Non recursive queries (i.e., those with the RD + bit off) to a static-stub zone are therefore + prohibited and will be responded with REFUSED. + </para> + <para> + Since the data is statically configured, no + zone maintenance action takes place for a static-stub + zone. + For example, there is no periodic refresh + attempt, and an incoming notify message + will be rejected with an rcode of NOTAUTH. + </para> + <para> + Each static-stub zone is configured with + internally generated NS and (if necessary) + glue A or AAAA RRs + </para> + </entry> + </row> + <row rowsep="0"> + <entry colname="1"> + <para> <varname>forward</varname> </para> </entry> @@ -10563,6 +10797,84 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea </varlistentry> <varlistentry> + <term><command>server-addresses</command></term> + <listitem> + <para> + Only meaningful for static-stub zones. + This is a list of IP addresses to which queries + should be sent in recursive resolution for the + zone. + A non empty list for this option will internally + configure the apex NS RR with associated glue A or + AAAA RRs. + </para> + <para> + For example, if "example.com" is configured as a + static-stub zone with 192.0.2.1 and 2001:db8::1234 + in a <command>server-addresses</command> option, + the following RRs will be internally configured. + </para> +<programlisting>example.com. NS example.com. +example.com. A 192.0.2.1 +example.com. AAAA 2001:db8::1234</programlisting> + <para> + These records are internally used to resolve + names under the static-stub zone. + For instance, if the server receives a query for + "www.example.com" with the RD bit on, the server + will initiate recursive resolution and send + queries to 192.0.2.1 and/or 2001:db8::1234. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><command>server-names</command></term> + <listitem> + <para> + Only meaningful for static-stub zones. + This is a list of domain names of nameservers that + act as authoritative servers of the static-stub + zone. + These names will be resolved to IP addresses when + <command>named</command> needs to send queries to + these servers. + To make this supplemental resolution successful, + these names must not be a subdomain of the origin + name of static-stub zone. + That is, when "example.net" is the origin of a + static-stub zone, "ns.example" and + "master.example.com" can be specified in the + <command>server-names</command> option, but + "ns.example.net" cannot, and will be rejected by + the configuration parser. + </para> + <para> + A non empty list for this option will internally + configure the apex NS RR with the specified names. + For example, if "example.com" is configured as a + static-stub zone with "ns1.example.net" and + "ns2.example.net" + in a <command>server-names</command> option, + the following RRs will be internally configured. + </para> +<programlisting>example.com. NS ns1.example.net. +example.com. NS ns2.example.net. +</programlisting> + <para> + These records are internally used to resolve + names under the static-stub zone. + For instance, if the server receives a query for + "www.example.com" with the RD bit on, the server + initiate recursive resolution, + resolve "ns1.example.net" and/or + "ns2.example.net" to IP addresses, and then send + queries to (one or more of) these addresses. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><command>sig-validity-interval</command></term> <listitem> <para> @@ -10903,7 +11215,7 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea <varname>krb5-subdomain</varname>, <varname>ms-subdomain</varname>, <varname>tcp-self</varname>, <varname>6to4-self</varname>, - and <varname>zonesub</varname>. + <varname>zonesub</varname>, and <varname>external</varname>. </para> <informaltable> <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table"> @@ -11061,14 +11373,56 @@ zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replacea </note> </entry> </row> + <row rowsep="0"> + <entry colname="1"> + <para> + <varname>external</varname> + </para> + </entry> <entry colname="2"> + <para> + This rule allows <command>named</command> + to defer the decision of whether to allow a + given update to an external daemon. + </para> + <para> + The method of communicating with the daemon is + specified in the <replaceable>identity</replaceable> + field, the format of which is + "<constant>local:</constant><replaceable>path</replaceable>", + where <replaceable>path</replaceable> is the location + of a UNIX-domain socket. (Currently, "local" is the + only supported mechanism.) + </para> + <para> + Requests to the external daemon are sent over the + UNIX-domain socket as datagrams with the following + format: + </para> + <programlisting> + Protocol version number (4 bytes, network byte order, currently 1) + Request length (4 bytes, network byte order) + Signer (null-terminated string) + Name (null-terminated string) + TCP source address (null-terminated string) + Rdata type (null-terminated string) + Key (null-terminated string) + TKEY token length (4 bytes, network byte order) + TKEY token (remainder of packet)</programlisting> + <para> + The daemon replies with a four-byte value in + network byte order, containing either 0 or 1; 0 + indicates that the specified update is not + permitted, and 1 indicates that it is. + </para> + </entry> + </row> </tbody> </tgroup> </informaltable> <para> In all cases, the <replaceable>name</replaceable> - field must - specify a fully-qualified domain name. + field must specify a fully-qualified domain name. </para> <para> diff --git a/doc/arm/Bv9ARM.ch01.html b/doc/arm/Bv9ARM.ch01.html index 8ae9990b..ff2c5cee 100644 --- a/doc/arm/Bv9ARM.ch01.html +++ b/doc/arm/Bv9ARM.ch01.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch01.html,v 1.48 2010/01/08 01:14:07 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch01.html,v 1.49 2011-01-05 01:14:07 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -45,17 +45,17 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2563412">Scope of Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564391">Organization of This Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564531">Conventions Used in This Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564712">The Domain Name System (<acronym class="acronym">DNS</acronym>)</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564371">Scope of Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564394">Organization of This Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564534">Conventions Used in This Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564715">The Domain Name System (<acronym class="acronym">DNS</acronym>)</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564733">DNS Fundamentals</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564768">Domains and Domain Names</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567173">Zones</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567250">Authoritative Name Servers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567422">Caching Name Servers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567553">Name Servers in Multiple Roles</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564737">DNS Fundamentals</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564771">Domains and Domain Names</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567176">Zones</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567253">Authoritative Name Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567426">Caching Name Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567556">Name Servers in Multiple Roles</a></span></dt> </dl></dd> </dl> </div> @@ -71,7 +71,7 @@ </p> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2563412"></a>Scope of Document</h2></div></div></div> +<a name="id2564371"></a>Scope of Document</h2></div></div></div> <p> The Berkeley Internet Name Domain (<acronym class="acronym">BIND</acronym>) implements a @@ -87,7 +87,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2564391"></a>Organization of This Document</h2></div></div></div> +<a name="id2564394"></a>Organization of This Document</h2></div></div></div> <p> In this document, <span class="emphasis"><em>Chapter 1</em></span> introduces the basic <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym> concepts. <span class="emphasis"><em>Chapter 2</em></span> @@ -116,7 +116,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2564531"></a>Conventions Used in This Document</h2></div></div></div> +<a name="id2564534"></a>Conventions Used in This Document</h2></div></div></div> <p> In this document, we use the following general typographic conventions: @@ -243,7 +243,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2564712"></a>The Domain Name System (<acronym class="acronym">DNS</acronym>)</h2></div></div></div> +<a name="id2564715"></a>The Domain Name System (<acronym class="acronym">DNS</acronym>)</h2></div></div></div> <p> The purpose of this document is to explain the installation and upkeep of the <acronym class="acronym">BIND</acronym> (Berkeley Internet @@ -253,7 +253,7 @@ </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2564733"></a>DNS Fundamentals</h3></div></div></div> +<a name="id2564737"></a>DNS Fundamentals</h3></div></div></div> <p> The Domain Name System (DNS) is a hierarchical, distributed database. It stores information for mapping Internet host names to @@ -275,7 +275,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2564768"></a>Domains and Domain Names</h3></div></div></div> +<a name="id2564771"></a>Domains and Domain Names</h3></div></div></div> <p> The data stored in the DNS is identified by <span class="emphasis"><em>domain names</em></span> that are organized as a tree according to organizational or administrative boundaries. Each node of the tree, @@ -321,7 +321,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567173"></a>Zones</h3></div></div></div> +<a name="id2567176"></a>Zones</h3></div></div></div> <p> To properly operate a name server, it is important to understand the difference between a <span class="emphasis"><em>zone</em></span> @@ -374,7 +374,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567250"></a>Authoritative Name Servers</h3></div></div></div> +<a name="id2567253"></a>Authoritative Name Servers</h3></div></div></div> <p> Each zone is served by at least one <span class="emphasis"><em>authoritative name server</em></span>, @@ -391,7 +391,7 @@ </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2567273"></a>The Primary Master</h4></div></div></div> +<a name="id2567276"></a>The Primary Master</h4></div></div></div> <p> The authoritative server where the master copy of the zone data is maintained is called the @@ -411,7 +411,7 @@ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2567303"></a>Slave Servers</h4></div></div></div> +<a name="id2567374"></a>Slave Servers</h4></div></div></div> <p> The other authoritative servers, the <span class="emphasis"><em>slave</em></span> servers (also known as <span class="emphasis"><em>secondary</em></span> servers) @@ -427,7 +427,7 @@ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2567393"></a>Stealth Servers</h4></div></div></div> +<a name="id2567396"></a>Stealth Servers</h4></div></div></div> <p> Usually all of the zone's authoritative servers are listed in NS records in the parent zone. These NS records constitute @@ -462,7 +462,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567422"></a>Caching Name Servers</h3></div></div></div> +<a name="id2567426"></a>Caching Name Servers</h3></div></div></div> <p> The resolver libraries provided by most operating systems are <span class="emphasis"><em>stub resolvers</em></span>, meaning that they are not @@ -489,7 +489,7 @@ </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2567526"></a>Forwarding</h4></div></div></div> +<a name="id2567529"></a>Forwarding</h4></div></div></div> <p> Even a caching name server does not necessarily perform the complete recursive lookup itself. Instead, it can @@ -516,7 +516,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567553"></a>Name Servers in Multiple Roles</h3></div></div></div> +<a name="id2567556"></a>Name Servers in Multiple Roles</h3></div></div></div> <p> The <acronym class="acronym">BIND</acronym> name server can simultaneously act as diff --git a/doc/arm/Bv9ARM.ch02.html b/doc/arm/Bv9ARM.ch02.html index 5faa556b..a9fde322 100644 --- a/doc/arm/Bv9ARM.ch02.html +++ b/doc/arm/Bv9ARM.ch02.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch02.html,v 1.42 2010/01/08 01:14:07 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch02.html,v 1.43 2011-01-05 01:14:07 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -45,16 +45,16 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567587">Hardware requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567613">CPU Requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567626">Memory Requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567721">Name Server Intensive Environment Issues</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567732">Supported Operating Systems</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567590">Hardware requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567617">CPU Requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567629">Memory Requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567724">Name Server Intensive Environment Issues</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567735">Supported Operating Systems</a></span></dt> </dl> </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567587"></a>Hardware requirements</h2></div></div></div> +<a name="id2567590"></a>Hardware requirements</h2></div></div></div> <p> <acronym class="acronym">DNS</acronym> hardware requirements have traditionally been quite modest. @@ -73,7 +73,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567613"></a>CPU Requirements</h2></div></div></div> +<a name="id2567617"></a>CPU Requirements</h2></div></div></div> <p> CPU requirements for <acronym class="acronym">BIND</acronym> 9 range from i486-class machines @@ -84,7 +84,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567626"></a>Memory Requirements</h2></div></div></div> +<a name="id2567629"></a>Memory Requirements</h2></div></div></div> <p> The memory of the server has to be large enough to fit the cache and zones loaded off disk. The <span><strong class="command">max-cache-size</strong></span> @@ -107,7 +107,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567721"></a>Name Server Intensive Environment Issues</h2></div></div></div> +<a name="id2567724"></a>Name Server Intensive Environment Issues</h2></div></div></div> <p> For name server intensive environments, there are two alternative configurations that may be used. The first is where clients and @@ -124,7 +124,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2567732"></a>Supported Operating Systems</h2></div></div></div> +<a name="id2567735"></a>Supported Operating Systems</h2></div></div></div> <p> ISC <acronym class="acronym">BIND</acronym> 9 compiles and runs on a large number diff --git a/doc/arm/Bv9ARM.ch03.html b/doc/arm/Bv9ARM.ch03.html index b42fd7a8..264081dc 100644 --- a/doc/arm/Bv9ARM.ch03.html +++ b/doc/arm/Bv9ARM.ch03.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch03.html,v 1.81 2010/08/17 01:15:28 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch03.html,v 1.82 2011-01-05 01:14:07 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -47,14 +47,14 @@ <dl> <dt><span class="sect1"><a href="Bv9ARM.ch03.html#sample_configuration">Sample Configurations</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567764">A Caching-only Name Server</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567780">An Authoritative-only Name Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567767">A Caching-only Name Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567988">An Authoritative-only Name Server</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568007">Load Balancing</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568361">Name Server Operations</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568010">Load Balancing</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568364">Name Server Operations</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2568366">Tools for Use With the Name Server Daemon</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2570381">Signals</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2568370">Tools for Use With the Name Server Daemon</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2570385">Signals</a></span></dt> </dl></dd> </dl> </div> @@ -68,7 +68,7 @@ <a name="sample_configuration"></a>Sample Configurations</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567764"></a>A Caching-only Name Server</h3></div></div></div> +<a name="id2567767"></a>A Caching-only Name Server</h3></div></div></div> <p> The following sample configuration is appropriate for a caching-only name server for use by clients internal to a corporation. All @@ -98,7 +98,7 @@ zone "0.0.127.in-addr.arpa" { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2567780"></a>An Authoritative-only Name Server</h3></div></div></div> +<a name="id2567988"></a>An Authoritative-only Name Server</h3></div></div></div> <p> This sample configuration is for an authoritative-only server that is the master server for "<code class="filename">example.com</code>" @@ -146,7 +146,7 @@ zone "eng.example.com" { </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2568007"></a>Load Balancing</h2></div></div></div> +<a name="id2568010"></a>Load Balancing</h2></div></div></div> <p> A primitive form of load balancing can be achieved in the <acronym class="acronym">DNS</acronym> by using multiple records @@ -289,10 +289,10 @@ zone "eng.example.com" { </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2568361"></a>Name Server Operations</h2></div></div></div> +<a name="id2568364"></a>Name Server Operations</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2568366"></a>Tools for Use With the Name Server Daemon</h3></div></div></div> +<a name="id2568370"></a>Tools for Use With the Name Server Daemon</h3></div></div></div> <p> This section describes several indispensable diagnostic, administrative and monitoring tools available to the system @@ -873,7 +873,7 @@ controls { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2570381"></a>Signals</h3></div></div></div> +<a name="id2570385"></a>Signals</h3></div></div></div> <p> Certain UNIX signals cause the name server to take specific actions, as described in the following table. These signals can diff --git a/doc/arm/Bv9ARM.ch04.html b/doc/arm/Bv9ARM.ch04.html index c1c8420c..230f1ef7 100644 --- a/doc/arm/Bv9ARM.ch04.html +++ b/doc/arm/Bv9ARM.ch04.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch04.html,v 1.116 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch04.html,v 1.125 2011-01-13 05:13:50 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -49,59 +49,59 @@ <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dynamic_update">Dynamic Update</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#journal">The journal file</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#incremental_zone_transfers">Incremental Zone Transfers (IXFR)</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570825">Split DNS</a></span></dt> -<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570843">Example split DNS setup</a></span></dt></dl></dd> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570823">Split DNS</a></span></dt> +<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570841">Example split DNS setup</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#tsig">TSIG</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571345">Generate Shared Keys for Each Pair of Hosts</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571555">Copying the Shared Secret to Both Machines</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571565">Informing the Servers of the Key's Existence</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571602">Instructing the Server to Use the Key</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571659">TSIG Key Based Access Control</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571708">Errors</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571342">Generate Shared Keys for Each Pair of Hosts</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571553">Copying the Shared Secret to Both Machines</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571563">Informing the Servers of the Key's Existence</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571600">Instructing the Server to Use the Key</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571657">TSIG Key Based Access Control</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571706">Errors</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571722">TKEY</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2563989">SIG(0)</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571720">TKEY</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2563987">SIG(0)</a></span></dt> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#DNSSEC">DNSSEC</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564057">Generating Keys</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572192">Signing the Zone</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572273">Configuring Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564055">Generating Keys</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572189">Signing the Zone</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572270">Configuring Servers</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dnssec.dynamic.zones">DNSSEC, Dynamic Zones, and Automatic Signing</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563485">Converting from insecure to secure</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563523">Dynamic DNS update method</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563627">Fully automatic zone signing</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563709">Private-type records</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563747">DNSKEY rollovers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563828">Dynamic DNS update method</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563861">Automatic key rollovers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563888">NSEC3PARAM rollovers via UPDATE</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571816">Converting from NSEC to NSEC3</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571826">Converting from NSEC3 to NSEC</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571838">Converting from secure to insecure</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571876">Periodic re-signing</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572022">NSEC3 and OPTOUT</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606637">Converting from insecure to secure</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606675">Dynamic DNS update method</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563635">Fully automatic zone signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563785">Private-type records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563822">DNSKEY rollovers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563835">Dynamic DNS update method</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563868">Automatic key rollovers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571814">NSEC3PARAM rollovers via UPDATE</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571824">Converting from NSEC to NSEC3</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571833">Converting from NSEC3 to NSEC</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571846">Converting from secure to insecure</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571952">Periodic re-signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571961">NSEC3 and OPTOUT</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#rfc5011.support">Dynamic Trust Anchor Management</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572075">Validating Resolver</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2605958">Authoritative Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572014">Validating Resolver</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572037">Authoritative Server</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#pkcs11">PKCS #11 (Cryptoki) support</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608598">Prerequisites</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607026">Building BIND 9 with PKCS#11</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607121">PKCS #11 Tools</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607152">Using the HSM</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608784">Specifying the engine on the command line</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609239">Running named with automatic zone re-signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606899">Prerequisites</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607648">Building BIND 9 with PKCS#11</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607742">PKCS #11 Tools</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607773">Using the HSM</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2634459">Specifying the engine on the command line</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2634505">Running named with automatic zone re-signing</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572468">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572490">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572734">Address Lookups Using AAAA Records</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572756">Address to Name Lookups Using Nibble Format</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572757">Address Lookups Using AAAA Records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572846">Address to Name Lookups Using Nibble Format</a></span></dt> </dl></dd> </dl> </div> @@ -154,12 +154,14 @@ See <a href="Bv9ARM.ch06.html#dynamic_update_policies" title="Dynamic Update Policies">the section called “Dynamic Update Policies”</a> for more details. </p> <p> - The <span><strong class="command">tkey-gssapi-credential</strong></span> and - <span><strong class="command">tkey-domain</strong></span> clauses in the - <span><strong class="command">options</strong></span> statement enable the - server to negotiate keys that can be matched against those - in <span><strong class="command">update-policy</strong></span> or - <span><strong class="command">allow-update</strong></span>. + Dynamic updates using Kerberos signed requests can be made + using the TKEY/GSS protocol by setting either the + <span><strong class="command">tkey-gssapi-keytab</strong></span> option, or alternatively + by setting both the <span><strong class="command">tkey-gssapi-credential</strong></span> + and <span><strong class="command">tkey-domain</strong></span> options. Once enabled, + Kerberos signed requests will be matched against the update + policies for the zone, using the Kerberos principal as the + signer for the request. </p> <p> Updating of secure zones (zones using DNSSEC) follows RFC @@ -254,7 +256,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2570825"></a>Split DNS</h2></div></div></div> +<a name="id2570823"></a>Split DNS</h2></div></div></div> <p> Setting up different views, or visibility, of the DNS space to internal and external resolvers is usually referred to as a @@ -284,7 +286,7 @@ </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2570843"></a>Example split DNS setup</h3></div></div></div> +<a name="id2570841"></a>Example split DNS setup</h3></div></div></div> <p> Let's say a company named <span class="emphasis"><em>Example, Inc.</em></span> (<code class="literal">example.com</code>) @@ -541,7 +543,7 @@ nameserver 172.16.72.4 </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571345"></a>Generate Shared Keys for Each Pair of Hosts</h3></div></div></div> +<a name="id2571342"></a>Generate Shared Keys for Each Pair of Hosts</h3></div></div></div> <p> A shared secret is generated to be shared between <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host2</em></span>. An arbitrary key name is chosen: "host1-host2.". The key name must @@ -549,7 +551,7 @@ nameserver 172.16.72.4 </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2571362"></a>Automatic Generation</h4></div></div></div> +<a name="id2571360"></a>Automatic Generation</h4></div></div></div> <p> The following command will generate a 128-bit (16 byte) HMAC-SHA256 key as described above. Longer keys are better, but shorter keys @@ -573,7 +575,7 @@ nameserver 172.16.72.4 </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2571537"></a>Manual Generation</h4></div></div></div> +<a name="id2571398"></a>Manual Generation</h4></div></div></div> <p> The shared secret is simply a random sequence of bits, encoded in base-64. Most ASCII strings are valid base-64 strings (assuming @@ -588,7 +590,7 @@ nameserver 172.16.72.4 </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571555"></a>Copying the Shared Secret to Both Machines</h3></div></div></div> +<a name="id2571553"></a>Copying the Shared Secret to Both Machines</h3></div></div></div> <p> This is beyond the scope of DNS. A secure transport mechanism should be used. This could be secure FTP, ssh, telephone, etc. @@ -596,7 +598,7 @@ nameserver 172.16.72.4 </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571565"></a>Informing the Servers of the Key's Existence</h3></div></div></div> +<a name="id2571563"></a>Informing the Servers of the Key's Existence</h3></div></div></div> <p> Imagine <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host 2</em></span> are @@ -623,7 +625,7 @@ key host1-host2. { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571602"></a>Instructing the Server to Use the Key</h3></div></div></div> +<a name="id2571600"></a>Instructing the Server to Use the Key</h3></div></div></div> <p> Since keys are shared between two hosts only, the server must be told when keys are to be used. The following is added to the <code class="filename">named.conf</code> file @@ -655,7 +657,7 @@ server 10.1.2.3 { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571659"></a>TSIG Key Based Access Control</h3></div></div></div> +<a name="id2571657"></a>TSIG Key Based Access Control</h3></div></div></div> <p> <acronym class="acronym">BIND</acronym> allows IP addresses and ranges to be specified in ACL @@ -682,7 +684,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2571708"></a>Errors</h3></div></div></div> +<a name="id2571706"></a>Errors</h3></div></div></div> <p> The processing of TSIG signed messages can result in several errors. If a signed message is sent to a non-TSIG aware @@ -708,7 +710,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2571722"></a>TKEY</h2></div></div></div> +<a name="id2571720"></a>TKEY</h2></div></div></div> <p><span><strong class="command">TKEY</strong></span> is a mechanism for automatically generating a shared secret between two hosts. There are several "modes" of @@ -744,7 +746,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2563989"></a>SIG(0)</h2></div></div></div> +<a name="id2563987"></a>SIG(0)</h2></div></div></div> <p> <acronym class="acronym">BIND</acronym> 9 partially supports DNSSEC SIG(0) transaction signatures as specified in RFC 2535 and RFC 2931. @@ -805,7 +807,7 @@ allow-update { key host1-host2. ;}; </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2564057"></a>Generating Keys</h3></div></div></div> +<a name="id2564055"></a>Generating Keys</h3></div></div></div> <p> The <span><strong class="command">dnssec-keygen</strong></span> program is used to generate keys. @@ -861,7 +863,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572192"></a>Signing the Zone</h3></div></div></div> +<a name="id2572189"></a>Signing the Zone</h3></div></div></div> <p> The <span><strong class="command">dnssec-signzone</strong></span> program is used to sign a zone. @@ -903,7 +905,7 @@ allow-update { key host1-host2. ;}; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572273"></a>Configuring Servers</h3></div></div></div> +<a name="id2572270"></a>Configuring Servers</h3></div></div></div> <p> To enable <span><strong class="command">named</strong></span> to respond appropriately to DNS requests from DNSSEC aware clients, @@ -912,13 +914,22 @@ allow-update { key host1-host2. ;}; </p> <p> To enable <span><strong class="command">named</strong></span> to validate answers from - other servers, the <span><strong class="command">dnssec-enable</strong></span> and - <span><strong class="command">dnssec-validation</strong></span> options must both be - set to yes (the default setting in <acronym class="acronym">BIND</acronym> 9.5 - and later), and at least one trust anchor must be configured + other servers, the <span><strong class="command">dnssec-enable</strong></span> option + must be set to <strong class="userinput"><code>yes</code></strong>, and the + <span><strong class="command">dnssec-validation</strong></span> options must be set to + <strong class="userinput"><code>yes</code></strong> or <strong class="userinput"><code>auto</code></strong>. + </p> +<p> + If <span><strong class="command">dnssec-validation</strong></span> is set to + <strong class="userinput"><code>auto</code></strong>, then a default + trust anchor for the DNS root zone will be used. + If it is set to <strong class="userinput"><code>yes</code></strong>, however, + then at least one trust anchor must be configured with a <span><strong class="command">trusted-keys</strong></span> or <span><strong class="command">managed-keys</strong></span> statement in - <code class="filename">named.conf</code>. + <code class="filename">named.conf</code>, or DNSSEC validation + will not occur. The default setting is + <strong class="userinput"><code>yes</code></strong>. </p> <p> <span><strong class="command">trusted-keys</strong></span> are copies of DNSKEY RRs @@ -1054,7 +1065,7 @@ options { from insecure to signed and back again. A secure zone can use either NSEC or NSEC3 chains.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563485"></a>Converting from insecure to secure</h3></div></div></div></div> +<a name="id2606637"></a>Converting from insecure to secure</h3></div></div></div></div> <p>Changing a zone from insecure to secure can be done in two ways: using a dynamic DNS update, or the <span><strong class="command">auto-dnssec</strong></span> zone option.</p> @@ -1080,7 +1091,7 @@ options { well. An NSEC chain will be generated as part of the initial signing process.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563523"></a>Dynamic DNS update method</h3></div></div></div></div> +<a name="id2606675"></a>Dynamic DNS update method</h3></div></div></div></div> <p>To insert the keys via dynamic update:</p> <pre class="screen"> % nsupdate @@ -1116,7 +1127,7 @@ options { <p>While the initial signing and NSEC/NSEC3 chain generation is happening, other updates are possible as well.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563627"></a>Fully automatic zone signing</h3></div></div></div></div> +<a name="id2563635"></a>Fully automatic zone signing</h3></div></div></div></div> <p>To enable automatic signing, add the <span><strong class="command">auto-dnssec</strong></span> option to the zone statement in <code class="filename">named.conf</code>. @@ -1151,7 +1162,7 @@ options { configuration. If this has not been done, the configuration will fail.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563709"></a>Private-type records</h3></div></div></div></div> +<a name="id2563785"></a>Private-type records</h3></div></div></div></div> <p>The state of the signing process is signaled by private-type records (with a default type value of 65534). When signing is complete, these records will have a nonzero value for @@ -1192,12 +1203,12 @@ options { <p> </p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563747"></a>DNSKEY rollovers</h3></div></div></div></div> +<a name="id2563822"></a>DNSKEY rollovers</h3></div></div></div></div> <p>As with insecure-to-secure conversions, rolling DNSSEC keys can be done in two ways: using a dynamic DNS update, or the <span><strong class="command">auto-dnssec</strong></span> zone option.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563828"></a>Dynamic DNS update method</h3></div></div></div></div> +<a name="id2563835"></a>Dynamic DNS update method</h3></div></div></div></div> <p> To perform key rollovers via dynamic update, you need to add the <code class="filename">K*</code> files for the new keys so that <span><strong class="command">named</strong></span> can find them. You can then add the new @@ -1219,7 +1230,7 @@ options { <span><strong class="command">named</strong></span> will clean out any signatures generated by the old key after the update completes.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563861"></a>Automatic key rollovers</h3></div></div></div></div> +<a name="id2563868"></a>Automatic key rollovers</h3></div></div></div></div> <p>When a new key reaches its activation date (as set by <span><strong class="command">dnssec-keygen</strong></span> or <span><strong class="command">dnssec-settime</strong></span>), if the <span><strong class="command">auto-dnssec</strong></span> zone option is set to @@ -1234,27 +1245,27 @@ options { completes in 30 days, after which it will be safe to remove the old key from the DNSKEY RRset.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2563888"></a>NSEC3PARAM rollovers via UPDATE</h3></div></div></div></div> +<a name="id2571814"></a>NSEC3PARAM rollovers via UPDATE</h3></div></div></div></div> <p>Add the new NSEC3PARAM record via dynamic update. When the new NSEC3 chain has been generated, the NSEC3PARAM flag field will be zero. At this point you can remove the old NSEC3PARAM record. The old chain will be removed after the update request completes.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2571816"></a>Converting from NSEC to NSEC3</h3></div></div></div></div> +<a name="id2571824"></a>Converting from NSEC to NSEC3</h3></div></div></div></div> <p>To do this, you just need to add an NSEC3PARAM record. When the conversion is complete, the NSEC chain will have been removed and the NSEC3PARAM record will have a zero flag field. The NSEC3 chain will be generated before the NSEC chain is destroyed.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2571826"></a>Converting from NSEC3 to NSEC</h3></div></div></div></div> +<a name="id2571833"></a>Converting from NSEC3 to NSEC</h3></div></div></div></div> <p>To do this, use <span><strong class="command">nsupdate</strong></span> to remove all NSEC3PARAM records with a zero flag field. The NSEC chain will be generated before the NSEC3 chain is removed.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2571838"></a>Converting from secure to insecure</h3></div></div></div></div> +<a name="id2571846"></a>Converting from secure to insecure</h3></div></div></div></div> <p>To convert a signed zone to unsigned using dynamic DNS, delete all the DNSKEY records from the zone apex using <span><strong class="command">nsupdate</strong></span>. All signatures, NSEC or NSEC3 chains, @@ -1269,14 +1280,14 @@ options { <span><strong class="command">allow</strong></span> instead (or it will re-sign). </p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2571876"></a>Periodic re-signing</h3></div></div></div></div> +<a name="id2571952"></a>Periodic re-signing</h3></div></div></div></div> <p>In any secure zone which supports dynamic updates, named will periodically re-sign RRsets which have not been re-signed as a result of some update action. The signature lifetimes will be adjusted so as to spread the re-sign load over time rather than all at once.</p> <div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"> -<a name="id2572022"></a>NSEC3 and OPTOUT</h3></div></div></div></div> +<a name="id2571961"></a>NSEC3 and OPTOUT</h3></div></div></div></div> <p> <span><strong class="command">named</strong></span> only supports creating new NSEC3 chains where all the NSEC3 records in the zone have the same OPTOUT @@ -1298,7 +1309,7 @@ options { configuration files.</p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572075"></a>Validating Resolver</h3></div></div></div> +<a name="id2572014"></a>Validating Resolver</h3></div></div></div> <p>To configure a validating resolver to use RFC 5011 to maintain a trust anchor, configure the trust anchor using a <span><strong class="command">managed-keys</strong></span> statement. Information about @@ -1309,7 +1320,7 @@ options { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2605958"></a>Authoritative Server</h3></div></div></div> +<a name="id2572037"></a>Authoritative Server</h3></div></div></div> <p>To set up an authoritative zone for RFC 5011 trust anchor maintenance, generate two (or more) key signing keys (KSKs) for the zone. Sign the zone with one of them; this is the "active" @@ -1383,7 +1394,7 @@ $ <strong class="userinput"><code>dnssec-signzone -S -K keys example.net</code>< Debian Linux, Solaris x86 and Windows Server 2003.</p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608598"></a>Prerequisites</h3></div></div></div> +<a name="id2606899"></a>Prerequisites</h3></div></div></div> <p>See the HSM vendor documentation for information about installing, initializing, testing and troubleshooting the HSM.</p> @@ -1457,7 +1468,7 @@ $ <strong class="userinput"><code>patch -p1 -d openssl-0.9.8l \ when we configure BIND 9.</p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2606646"></a>Building OpenSSL for the AEP Keyper on Linux</h4></div></div></div> +<a name="id2607336"></a>Building OpenSSL for the AEP Keyper on Linux</h4></div></div></div> <p>The AEP Keyper is a highly secure key storage device, but does not provide hardware cryptographic acceleration. It can carry out cryptographic operations, but it is probably @@ -1489,7 +1500,7 @@ $ <strong class="userinput"><code>./Configure linux-generic32 -m32 -pthread \ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2606784"></a>Building OpenSSL for the SCA 6000 on Solaris</h4></div></div></div> +<a name="id2607474"></a>Building OpenSSL for the SCA 6000 on Solaris</h4></div></div></div> <p>The SCA-6000 PKCS #11 provider is installed as a system library, libpkcs11. It is a true crypto accelerator, up to 4 times faster than any CPU, so the flavor shall be @@ -1533,12 +1544,12 @@ $ <strong class="userinput"><code>./Configure solaris64-x86_64-cc \ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2607026"></a>Building BIND 9 with PKCS#11</h3></div></div></div> +<a name="id2607648"></a>Building BIND 9 with PKCS#11</h3></div></div></div> <p>When building BIND 9, the location of the custom-built OpenSSL library must be specified via configure.</p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2607034"></a>Configuring BIND 9 for Linux</h4></div></div></div> +<a name="id2607656"></a>Configuring BIND 9 for Linux</h4></div></div></div> <p>To link with the PKCS #11 provider, threads must be enabled in the BIND 9 build.</p> <p>The PKCS #11 library for the AEP Keyper is currently @@ -1554,7 +1565,7 @@ $ <strong class="userinput"><code>./configure CC="gcc -m32" --enable-threads \ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2607065"></a>Configuring BIND 9 for Solaris</h4></div></div></div> +<a name="id2607687"></a>Configuring BIND 9 for Solaris</h4></div></div></div> <p>To link with the PKCS #11 provider, threads must be enabled in the BIND 9 build.</p> <pre class="screen"> @@ -1577,7 +1588,7 @@ $ <strong class="userinput"><code>./configure CC="cc -xarch=amd64" --enable-thre </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2607121"></a>PKCS #11 Tools</h3></div></div></div> +<a name="id2607742"></a>PKCS #11 Tools</h3></div></div></div> <p>BIND 9 includes a minimal set of tools to operate the HSM, including <span><strong class="command">pkcs11-keygen</strong></span> to generate a new key pair @@ -1595,7 +1606,7 @@ $ <strong class="userinput"><code>./configure CC="cc -xarch=amd64" --enable-thre </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2607152"></a>Using the HSM</h3></div></div></div> +<a name="id2607773"></a>Using the HSM</h3></div></div></div> <p>First, we must set up the runtime environment so the OpenSSL and PKCS #11 libraries can be loaded:</p> <pre class="screen"> @@ -1683,7 +1694,7 @@ example.net.signed </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608784"></a>Specifying the engine on the command line</h3></div></div></div> +<a name="id2634459"></a>Specifying the engine on the command line</h3></div></div></div> <p>The OpenSSL engine can be specified in <span><strong class="command">named</strong></span> and all of the BIND <span><strong class="command">dnssec-*</strong></span> tools by using the "-E @@ -1704,7 +1715,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2609239"></a>Running named with automatic zone re-signing</h3></div></div></div> +<a name="id2634505"></a>Running named with automatic zone re-signing</h3></div></div></div> <p>If you want <span><strong class="command">named</strong></span> to dynamically re-sign zones using HSM keys, and/or to to sign new records inserted via nsupdate, then @@ -1740,7 +1751,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2572468"></a>IPv6 Support in <acronym class="acronym">BIND</acronym> 9</h2></div></div></div> +<a name="id2572490"></a>IPv6 Support in <acronym class="acronym">BIND</acronym> 9</h2></div></div></div> <p> <acronym class="acronym">BIND</acronym> 9 fully supports all currently defined forms of IPv6 name to address and address to name @@ -1778,7 +1789,7 @@ $ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></s </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572734"></a>Address Lookups Using AAAA Records</h3></div></div></div> +<a name="id2572757"></a>Address Lookups Using AAAA Records</h3></div></div></div> <p> The IPv6 AAAA record is a parallel to the IPv4 A record, and, unlike the deprecated A6 record, specifies the entire @@ -1797,7 +1808,7 @@ host 3600 IN AAAA 2001:db8::1 </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2572756"></a>Address to Name Lookups Using Nibble Format</h3></div></div></div> +<a name="id2572846"></a>Address to Name Lookups Using Nibble Format</h3></div></div></div> <p> When looking up an address in nibble format, the address components are simply reversed, just as in IPv4, and diff --git a/doc/arm/Bv9ARM.ch05.html b/doc/arm/Bv9ARM.ch05.html index a057825e..3b60755f 100644 --- a/doc/arm/Bv9ARM.ch05.html +++ b/doc/arm/Bv9ARM.ch05.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch05.html,v 1.89 2010/08/17 01:15:30 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch05.html,v 1.93 2011-01-05 01:14:08 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -45,13 +45,13 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572857">The Lightweight Resolver Library</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572880">The Lightweight Resolver Library</a></span></dt> <dt><span class="sect1"><a href="Bv9ARM.ch05.html#lwresd">Running a Resolver Daemon</a></span></dt> </dl> </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2572857"></a>The Lightweight Resolver Library</h2></div></div></div> +<a name="id2572880"></a>The Lightweight Resolver Library</h2></div></div></div> <p> Traditionally applications have been linked with a stub resolver library that sends recursive DNS queries to a local caching name diff --git a/doc/arm/Bv9ARM.ch06.html b/doc/arm/Bv9ARM.ch06.html index edaed3f3..f376dee0 100644 --- a/doc/arm/Bv9ARM.ch06.html +++ b/doc/arm/Bv9ARM.ch06.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch06.html,v 1.264 2010/12/09 01:14:11 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch06.html,v 1.273 2011-01-13 05:13:50 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -48,58 +48,58 @@ <dt><span class="sect1"><a href="Bv9ARM.ch06.html#configuration_file_elements">Configuration File Elements</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#address_match_lists">Address Match Lists</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574267">Comment Syntax</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574290">Comment Syntax</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch06.html#Configuration_File_Grammar">Configuration File Grammar</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574921"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574944"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#acl"><span><strong class="command">acl</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575111"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575133"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#controls_statement_definition_and_usage"><span><strong class="command">controls</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575402"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575419"><span><strong class="command">include</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575425"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575442"><span><strong class="command">include</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575443"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575466"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575625"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575751"><span><strong class="command">logging</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575465"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575489"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575648"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575842"><span><strong class="command">logging</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577886"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577960"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578024"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578068"><span><strong class="command">masters</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577841"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577982"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578046"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578090"><span><strong class="command">masters</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578083"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578105"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#options"><span><strong class="command">options</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_grammar"><span><strong class="command">server</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_definition_and_usage"><span><strong class="command">server</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#statschannels"><span><strong class="command">statistics-channels</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588725"><span><strong class="command">statistics-channels</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589072"><span><strong class="command">statistics-channels</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#trusted-keys"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588933"><span><strong class="command">trusted-keys</strong></span> Statement Definition +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589348"><span><strong class="command">trusted-keys</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589048"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589395"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#managed-keys"><span><strong class="command">managed-keys</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#view_statement_grammar"><span><strong class="command">view</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589474"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589820"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zone_statement_grammar"><span><strong class="command">zone</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591047"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591297"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2593802">Zone File</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2594629">Zone File</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them">Types of Resource Records and When to Use Them</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596101">Discussion of MX Records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596791">Discussion of MX Records</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#Setting_TTLs">Setting TTLs</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596648">Inverse Mapping in IPv4</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596775">Other Zone File Directives</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597048"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597338">Inverse Mapping in IPv4</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597533">Other Zone File Directives</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597806"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zonefile_format">Additional File Formats</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch06.html#statistics">BIND9 Statistics</a></span></dt> @@ -477,7 +477,7 @@ <a name="address_match_lists"></a>Address Match Lists</h3></div></div></div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2574034"></a>Syntax</h4></div></div></div> +<a name="id2574056"></a>Syntax</h4></div></div></div> <pre class="programlisting"><code class="varname">address_match_list</code> = address_match_list_element ; [<span class="optional"> address_match_list_element; ... </span>] <code class="varname">address_match_list_element</code> = [<span class="optional"> ! </span>] (ip_address [<span class="optional">/length</span>] | @@ -486,7 +486,7 @@ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2574061"></a>Definition and Usage</h4></div></div></div> +<a name="id2574084"></a>Definition and Usage</h4></div></div></div> <p> Address match lists are primarily used to determine access control for various server operations. They are also used in @@ -570,7 +570,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2574267"></a>Comment Syntax</h3></div></div></div> +<a name="id2574290"></a>Comment Syntax</h3></div></div></div> <p> The <acronym class="acronym">BIND</acronym> 9 comment syntax allows for comments to appear @@ -580,7 +580,7 @@ </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2574282"></a>Syntax</h4></div></div></div> +<a name="id2574305"></a>Syntax</h4></div></div></div> <p> </p> <pre class="programlisting">/* This is a <acronym class="acronym">BIND</acronym> comment as in C */</pre> @@ -596,7 +596,7 @@ </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2574312"></a>Definition and Usage</h4></div></div></div> +<a name="id2574334"></a>Definition and Usage</h4></div></div></div> <p> Comments may appear anywhere that whitespace may appear in a <acronym class="acronym">BIND</acronym> configuration file. @@ -848,7 +848,7 @@ </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2574921"></a><span><strong class="command">acl</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2574944"></a><span><strong class="command">acl</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">acl</strong></span> acl-name { address_match_list }; @@ -930,7 +930,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575111"></a><span><strong class="command">controls</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2575133"></a><span><strong class="command">controls</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">controls</strong></span> { [ inet ( ip_addr | * ) [ port ip_port ] allow { <em class="replaceable"><code> address_match_list </code></em> } @@ -1054,12 +1054,12 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575402"></a><span><strong class="command">include</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2575425"></a><span><strong class="command">include</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">include</strong></span> <em class="replaceable"><code>filename</code></em>;</pre> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575419"></a><span><strong class="command">include</strong></span> Statement Definition and +<a name="id2575442"></a><span><strong class="command">include</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">include</strong></span> statement inserts the @@ -1074,7 +1074,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575443"></a><span><strong class="command">key</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2575465"></a><span><strong class="command">key</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">key</strong></span> <em class="replaceable"><code>key_id</code></em> { algorithm <em class="replaceable"><code>string</code></em>; secret <em class="replaceable"><code>string</code></em>; @@ -1083,7 +1083,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575466"></a><span><strong class="command">key</strong></span> Statement Definition and Usage</h3></div></div></div> +<a name="id2575489"></a><span><strong class="command">key</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">key</strong></span> statement defines a shared secret key for use with TSIG (see <a href="Bv9ARM.ch04.html#tsig" title="TSIG">the section called “TSIG”</a>) @@ -1130,7 +1130,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575625"></a><span><strong class="command">logging</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2575648"></a><span><strong class="command">logging</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">logging</strong></span> { [ <span><strong class="command">channel</strong></span> <em class="replaceable"><code>channel_name</code></em> { ( <span><strong class="command">file</strong></span> <em class="replaceable"><code>path_name</code></em> @@ -1154,7 +1154,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2575751"></a><span><strong class="command">logging</strong></span> Statement Definition and +<a name="id2575842"></a><span><strong class="command">logging</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">logging</strong></span> statement configures a @@ -1188,7 +1188,7 @@ </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2575872"></a>The <span><strong class="command">channel</strong></span> Phrase</h4></div></div></div> +<a name="id2575894"></a>The <span><strong class="command">channel</strong></span> Phrase</h4></div></div></div> <p> All log output goes to one or more <span class="emphasis"><em>channels</em></span>; you can make as many of them as you want. @@ -1753,7 +1753,7 @@ category notify { null; }; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2577230"></a>The <span><strong class="command">query-errors</strong></span> Category</h4></div></div></div> +<a name="id2577253"></a>The <span><strong class="command">query-errors</strong></span> Category</h4></div></div></div> <p> The <span><strong class="command">query-errors</strong></span> category is specifically intended for debugging purposes: To identify @@ -1981,7 +1981,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2577886"></a><span><strong class="command">lwres</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2577841"></a><span><strong class="command">lwres</strong></span> Statement Grammar</h3></div></div></div> <p> This is the grammar of the <span><strong class="command">lwres</strong></span> statement in the <code class="filename">named.conf</code> file: @@ -1997,7 +1997,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2577960"></a><span><strong class="command">lwres</strong></span> Statement Definition and Usage</h3></div></div></div> +<a name="id2577982"></a><span><strong class="command">lwres</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">lwres</strong></span> statement configures the name @@ -2048,7 +2048,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2578024"></a><span><strong class="command">masters</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2578046"></a><span><strong class="command">masters</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"> <span><strong class="command">masters</strong></span> <em class="replaceable"><code>name</code></em> [<span class="optional">port <em class="replaceable"><code>ip_port</code></em></span>] { ( <em class="replaceable"><code>masters_list</code></em> | <em class="replaceable"><code>ip_addr</code></em> [<span class="optional">port <em class="replaceable"><code>ip_port</code></em></span>] [<span class="optional">key <em class="replaceable"><code>key</code></em></span>] ) ; [<span class="optional">...</span>] }; @@ -2056,7 +2056,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2578068"></a><span><strong class="command">masters</strong></span> Statement Definition and +<a name="id2578090"></a><span><strong class="command">masters</strong></span> Statement Definition and Usage</h3></div></div></div> <p><span><strong class="command">masters</strong></span> lists allow for a common set of masters to be easily used by @@ -2065,7 +2065,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2578083"></a><span><strong class="command">options</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2578105"></a><span><strong class="command">options</strong></span> Statement Grammar</h3></div></div></div> <p> This is the grammar of the <span><strong class="command">options</strong></span> statement in the <code class="filename">named.conf</code> file: @@ -2079,6 +2079,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] [<span class="optional"> key-directory <em class="replaceable"><code>path_name</code></em>; </span>] [<span class="optional"> managed-keys-directory <em class="replaceable"><code>path_name</code></em>; </span>] [<span class="optional"> named-xfer <em class="replaceable"><code>path_name</code></em>; </span>] + [<span class="optional"> tkey-gssapi-keytab <em class="replaceable"><code>path_name</code></em>; </span>] [<span class="optional"> tkey-gssapi-credential <em class="replaceable"><code>principal</code></em>; </span>] [<span class="optional"> tkey-domain <em class="replaceable"><code>domainname</code></em>; </span>] [<span class="optional"> tkey-dhkey <em class="replaceable"><code>key_name</code></em> <em class="replaceable"><code>key_tag</code></em>; </span>] @@ -2109,7 +2110,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] [<span class="optional"> maintain-ixfr-base <em class="replaceable"><code>yes_or_no</code></em>; </span>] [<span class="optional"> ixfr-from-differences (<em class="replaceable"><code>yes_or_no</code></em> | <code class="constant">master</code> | <code class="constant">slave</code>); </span>] [<span class="optional"> dnssec-enable <em class="replaceable"><code>yes_or_no</code></em>; </span>] - [<span class="optional"> dnssec-validation <em class="replaceable"><code>yes_or_no</code></em>; </span>] + [<span class="optional"> dnssec-validation (<em class="replaceable"><code>yes_or_no</code></em> | <code class="constant">auto</code>); </span>] [<span class="optional"> dnssec-lookaside ( <em class="replaceable"><code>auto</code></em> | <em class="replaceable"><code>domain</code></em> trust-anchor <em class="replaceable"><code>domain</code></em> ); </span>] [<span class="optional"> dnssec-must-be-secure <em class="replaceable"><code>domain yes_or_no</code></em>; </span>] @@ -2234,6 +2235,8 @@ badresp:1,adberr:0,findfail:0,valfail:0] [<span class="optional"> recursion-only <em class="replaceable"><code>yes_or_no</code></em>; </span>] [<span class="optional"> break-dnssec <em class="replaceable"><code>yes_or_no</code></em>; </span>] }; </span>]; + [<span class="optional"> dns64-server <em class="replaceable"><code>name</code></em> </span>] + [<span class="optional"> dns64-contact <em class="replaceable"><code>name</code></em> </span>] [<span class="optional"> preferred-glue ( <em class="replaceable"><code>A</code></em> | <em class="replaceable"><code>AAAA</code></em> | <em class="replaceable"><code>NONE</code></em> ); </span>] [<span class="optional"> edns-udp-size <em class="replaceable"><code>number</code></em>; </span>] [<span class="optional"> max-udp-size <em class="replaceable"><code>number</code></em>; </span>] @@ -2255,6 +2258,7 @@ badresp:1,adberr:0,findfail:0,valfail:0] [<span class="optional"> zero-no-soa-ttl-cache <em class="replaceable"><code>yes_or_no</code></em> ; </span>] [<span class="optional"> deny-answer-addresses { <em class="replaceable"><code>address_match_list</code></em> } [<span class="optional"> except-from { <em class="replaceable"><code>namelist</code></em> } </span>];</span>] [<span class="optional"> deny-answer-aliases { <em class="replaceable"><code>namelist</code></em> } [<span class="optional"> except-from { <em class="replaceable"><code>namelist</code></em> } </span>];</span>] + [<span class="optional"> response-policy { <em class="replaceable"><code>zone_name</code></em> [<span class="optional"> policy <em class="replaceable"><code>given</code></em> | <em class="replaceable"><code>no-op</code></em> | <em class="replaceable"><code>nxdomain</code></em> | <em class="replaceable"><code>nodata</code></em> | <em class="replaceable"><code>cname domain</code></em> </span>] ; } ; </span>] }; </pre> </div> @@ -2400,18 +2404,27 @@ badresp:1,adberr:0,findfail:0,valfail:0] <span><strong class="command">named-xfer</strong></span> program is needed; its functionality is built into the name server. </p></dd> +<dt><span class="term"><span><strong class="command">tkey-gssapi-keytab</strong></span></span></dt> +<dd><p> + The KRB5 keytab file to use for GSS-TSIG updates. If + this option is set and tkey-gssapi-credential is not + set, then updates will be allowed with any key + matching a principal in the specified keytab. + </p></dd> <dt><span class="term"><span><strong class="command">tkey-gssapi-credential</strong></span></span></dt> <dd><p> The security credential with which the server should authenticate keys requested by the GSS-TSIG protocol. Currently only Kerberos 5 authentication is available - and the credential is a Kerberos principal which - the server can acquire through the default system - key file, normally <code class="filename">/etc/krb5.keytab</code>. - Normally this principal is of the form - "<strong class="userinput"><code>DNS/</code></strong><code class="varname">server.domain</code>". - To use GSS-TSIG, <span><strong class="command">tkey-domain</strong></span> - must also be set. + and the credential is a Kerberos principal which the + server can acquire through the default system key + file, normally <code class="filename">/etc/krb5.keytab</code>. + The location keytab file can be overridden using the + tkey-gssapi-keytab option. Normally this principal is + of the form "<strong class="userinput"><code>DNS/</code></strong><code class="varname">server.domain</code>". + To use GSS-TSIG, <span><strong class="command">tkey-domain</strong></span> must + also be set if a specific keytab is not set with + tkey-gssapi-keytab. </p></dd> <dt><span class="term"><span><strong class="command">tkey-domain</strong></span></span></dt> <dd><p> @@ -2428,7 +2441,8 @@ badresp:1,adberr:0,findfail:0,valfail:0] should be the server's domain name, or an otherwise non-existent subdomain like "_tkey.<code class="varname">domainname</code>". If you are - using GSS-TSIG, this variable must be defined. + using GSS-TSIG, this variable must be defined, unless + you specify a specific keytab using tkey-gssapi-keytab. </p></dd> <dt><span class="term"><span><strong class="command">tkey-dhkey</strong></span></span></dt> <dd><p> @@ -2493,7 +2507,8 @@ badresp:1,adberr:0,findfail:0,valfail:0] The pathname of a file to override the built-in trusted keys provided by <span><strong class="command">named</strong></span>. See the discussion of <span><strong class="command">dnssec-lookaside</strong></span> - for details. If not specified, the default is + and <span><strong class="command">dnssec-validation</strong></span> for details. + If not specified, the default is <code class="filename">/etc/bind.keys</code>. </p></dd> <dt><span class="term"><span><strong class="command">secroots-file</strong></span></span></dt> @@ -2648,10 +2663,10 @@ options { </p> <p> The default DLV key is stored in the file - <code class="filename">bind.keys</code>, which - <span><strong class="command">named</strong></span> loads at startup if - <span><strong class="command">dnssec-lookaside</strong></span> is set to - <code class="constant">auto</code>. A copy of that file is + <code class="filename">bind.keys</code>; + <span><strong class="command">named</strong></span> will load that key at + startup if <span><strong class="command">dnssec-lookaside</strong></span> is set to + <code class="constant">auto</code>. A copy of the file is installed along with <acronym class="acronym">BIND</acronym> 9, and is current as of the release date. If the DLV key expires, a new copy of <code class="filename">bind.keys</code> can be downloaded @@ -2665,10 +2680,10 @@ options { to be recompiled with a new key when the DLV key expires.) </p> <p> - NOTE: Using <code class="filename">bind.keys</code> to store - locally-configured keys is possible, but not - recommended, as the file will be overwritten whenever - <acronym class="acronym">BIND</acronym> 9 is re-installed or upgraded. + NOTE: <span><strong class="command">named</strong></span> only loads certain specific + keys from <code class="filename">bind.keys</code>: those for the + DLV zone and for the DNS root zone. The file cannot be + used to store keys for other zones. </p> </dd> <dt><span class="term"><span><strong class="command">dnssec-must-be-secure</strong></span></span></dt> @@ -2698,6 +2713,16 @@ options { 64 and 96 as per RFC 6052. </p> <p> + Additionally a reverse IP6.ARPA zone will be created for + the prefix to provide a mapping from the IP6.ARPA names + to the corresponding IN-ADDR.ARPA names using synthesized + CNAMEs. <span><strong class="command">dns64-server</strong></span> and + <span><strong class="command">dns64-contact</strong></span> can be used to specify + the name of the server and contact for the zones. These + are settable at the view / options level. These are + not settable on a per-prefix basis. + </p> +<p> Each <span><strong class="command">dns64</strong></span> supports a optional <span><strong class="command">clients</strong></span> acl which defines which clients see this directive. If not defined it defaults to @@ -3402,7 +3427,15 @@ options { Enable DNSSEC validation in <span><strong class="command">named</strong></span>. Note <span><strong class="command">dnssec-enable</strong></span> also needs to be set to <strong class="userinput"><code>yes</code></strong> to be effective. - The default is <strong class="userinput"><code>yes</code></strong>. + If set to <strong class="userinput"><code>no</code></strong>, DNSSEC validation + is disabled. If set to <strong class="userinput"><code>auto</code></strong>, + DNSSEC validation is enabled, and a default + trust-anchor for the DNS root zone is used. If set to + <strong class="userinput"><code>yes</code></strong>, DNSSEC validation is enabled, + but a trust anchor must be manually configured using + a <span><strong class="command">trusted-keys</strong></span> or + <span><strong class="command">managed-keys</strong></span> statement. The default + is <strong class="userinput"><code>yes</code></strong>. </p></dd> <dt><span class="term"><span><strong class="command">dnssec-accept-expired</strong></span></span></dt> <dd><p> @@ -3463,13 +3496,6 @@ options { values are <span><strong class="command">fail</strong></span> and <span><strong class="command">ignore</strong></span>. </p></dd> -<dt><span class="term"><span><strong class="command">check-mx</strong></span></span></dt> -<dd><p> - Check whether the MX record appears to refer to a IP address. - The default is to <span><strong class="command">warn</strong></span>. Other possible - values are <span><strong class="command">fail</strong></span> and - <span><strong class="command">ignore</strong></span>. - </p></dd> <dt><span class="term"><span><strong class="command">check-wildcard</strong></span></span></dt> <dd><p> This option is used to check for non-terminal wildcards. @@ -3604,7 +3630,7 @@ options { </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2583384"></a>Forwarding</h4></div></div></div> +<a name="id2583542"></a>Forwarding</h4></div></div></div> <p> The forwarding facility can be used to create a large site-wide cache on a few servers, reducing traffic over links to external @@ -3648,7 +3674,7 @@ options { </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2583443"></a>Dual-stack Servers</h4></div></div></div> +<a name="id2583669"></a>Dual-stack Servers</h4></div></div></div> <p> Dual-stack servers are used as servers of last resort to work around @@ -3851,7 +3877,7 @@ options { </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2584038"></a>Interfaces</h4></div></div></div> +<a name="id2584196"></a>Interfaces</h4></div></div></div> <p> The interfaces and ports that the server will answer queries from may be specified using the <span><strong class="command">listen-on</strong></span> option. <span><strong class="command">listen-on</strong></span> takes @@ -4303,7 +4329,7 @@ avoid-v6-udp-ports {}; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2585309"></a>UDP Port Lists</h4></div></div></div> +<a name="id2585331"></a>UDP Port Lists</h4></div></div></div> <p> <span><strong class="command">use-v4-udp-ports</strong></span>, <span><strong class="command">avoid-v4-udp-ports</strong></span>, @@ -4345,7 +4371,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2585369"></a>Operating System Resource Limits</h4></div></div></div> +<a name="id2585390"></a>Operating System Resource Limits</h4></div></div></div> <p> The server's usage of many system resources can be limited. Scaled values are allowed when specifying resource limits. For @@ -4507,7 +4533,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2585655"></a>Periodic Task Intervals</h4></div></div></div> +<a name="id2585881"></a>Periodic Task Intervals</h4></div></div></div> <div class="variablelist"><dl> <dt><span class="term"><span><strong class="command">cleaning-interval</strong></span></span></dt> <dd><p> @@ -5322,7 +5348,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; }; </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2587836"></a>Content Filtering</h4></div></div></div> +<a name="id2587994"></a>Content Filtering</h4></div></div></div> <p> <acronym class="acronym">BIND</acronym> 9 provides the ability to filter out DNS responses from external DNS servers containing @@ -5443,6 +5469,134 @@ deny-answer-aliases { "example.net"; }; spuriously can break such applications. </p> </div> +<div class="sect3" lang="en"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="id2588117"></a>Response Policy Zone (RPZ) Rewriting</h4></div></div></div> +<p> + <acronym class="acronym">BIND</acronym> 9 includes an intentionally limited + mechanism to modify DNS responses for recursive requests + similar to email anti-spam DNS blacklists. + All response policy zones are named in the + <span><strong class="command">response-policy</strong></span> option for the view or among the + global options if there is no response-policy option for the view. + </p> +<p> + The rules encoded in a response policy zone (RPZ) are applied + only to responses to queries that ask for recursion (RD=1). + RPZs are normal DNS zones containing largely valid RRsets + that can be queried normal if allowed. + It is usually best to restrict those queries with something like + <span><strong class="command">allow-query {none; };</strong></span> or + <span><strong class="command">allow-query { 127.0.0.1; };</strong></span>. + </p> +<p> + There are four kinds of RPZ rewrite rules. QNAME rules are + applied to query names in requests and to targets of CNAME + records resolved in the process of generating the response. + The owner name of a QNAME rule is the query name relativized + to the RPZ. + </p> +<p> + IP rules are triggered by addresses in A and AAAA records. + All IP addresses in A or AAAA RRsets are tested and the rule + longest prefix is applied. Ties between rules with equal prefixes + are broken in favor of the first RPZ mentioned in the + response-policy option. + The rule matching the smallest IP address is chosen among equal + prefix rules from a single RPZ. + IP rules are expressed in RRsets with owner names that are + subdomains of rpz-ip and encoding an IP address block, reversed + as in IN-ARPA. + prefix.B.B.B.B with prefix between 1 and 32 and B between 1 and 255 + encodes an IPv4 address. + IPv6 addresses are encoded by with prefix.W.W.W.W.W.W.W.W or + prefix.WORDS.zz.WORDS. The words in the standard IPv6 text + representation are reversed, "::" is replaced with ".zz.", + and ":" becomes ".". + </p> +<p> + NSDNAME rules match names in NS RRsets for the response or a + parent. They are encoded as subdomains of rpz-nsdomain relativized + to the RPZ origin name. + </p> +<p> + NSIP rules match IP addresses in A and AAAA RRsets for names of + responsible servers or the names that can be matched by NSDNAME + rules. The are encoded like IP rules except as subdomains of + rpz-nsip. + </p> +<p> + Authority verification issues and variations in authority data in + the current version of <acronym class="acronym">BIND</acronym> 9 can cause + inconsistent results from NSIP and NSDNAME. So they are available + only when <acronym class="acronym">BIND</acronym> is built with the + <strong class="userinput"><code>--enable-rpz-nsip</code></strong> or + <strong class="userinput"><code>--enable-rpz-nsdname</code></strong> options + on the "configure" command line. + </p> +<p> + Four policies can be expressed. + The <span><strong class="command">NXDOMAIN</strong></span> policy causes a NXDOMAIN response + and is expressed with an RRset consisting of a single CNAME + whose target is the root domain (.). + <span><strong class="command">NODATA</strong></span> generates NODATA or ANCOUNT=1 regardless + of query type. + It is expressed with a CNAME whose target is the wildcard + top-level domain (*.). + The <span><strong class="command">NO-OP</strong></span> policy does not change the response + and is used to "poke holes" in policies for larger CIDR blocks or in + zones named later in the <span><strong class="command">response-policy</strong></span> option. + The NO-OP policy is expressed by a CNAME with a target consisting + of the variable part of the owner name, such as "example.com." for + a QNAME rule or "128.1.0.0.127." for an IP rule. + The <span><strong class="command">CNAME</strong></span> policy is used to replace the RRsets + of response. + A and AAAA RRsets are most common and useful to capture + an evil domain in a walled garden, but any valid set of RRsets + is possible. + </p> +<p> + All of the policies in an RPZ can be overridden with a + <span><strong class="command">policy</strong></span> clause. + <span><strong class="command">given</strong></span> says "do not override." + <span><strong class="command">no-op</strong></span> says "do nothing" regardless of the policy + in RPZ records. + <span><strong class="command">nxdomain</strong></span> causes all RPZ rules to generate + NXDOMAIN results. + <span><strong class="command">nodata</strong></span> gives nodata. + <span><strong class="command">cname domain</strong></span> causes all RPZ rules to act as if + the consisted of a "cname domain" record. + </p> +<p> + For example, you might use this option statement + </p> +<pre class="programlisting">response-policy { zone "bl"; };</pre> +<p> + and this zone statement + </p> +<pre class="programlisting">zone "bl" {type master; file "example/bl"; allow-query {none;}; };</pre> +<p> + with this zone file + </p> +<pre class="programlisting">$TTL 1H +@ SOA LOCALHOST. named-mgr.example.com (1 1h 15m 30d 2h) + +; QNAME rules +nxdomain.domain.com CNAME . +nodata.domain.com CNAME *. +bad.domain.com A 10.0.0.1 + AAAA 2001:2::1 +ok.domain.com CNAME ok.domain.com. + +; IP rules rewriting all answers for 127/8 except 127.0.0.1 +8.0.0.0.127.ip CNAME . +32.1.0.0.127.ip CNAME 32.1.0.0.127. + +; NSDNAME and NSIP rules +ns.domain.com.rpz-nsdname CNAME . +48.zz.2.2001.rpz-nsip CNAME . +</pre> +</div> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> @@ -5652,7 +5806,7 @@ deny-answer-aliases { "example.net"; }; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2588725"></a><span><strong class="command">statistics-channels</strong></span> Statement Definition and +<a name="id2589072"></a><span><strong class="command">statistics-channels</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">statistics-channels</strong></span> statement @@ -5712,7 +5866,7 @@ deny-answer-aliases { "example.net"; }; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2588933"></a><span><strong class="command">trusted-keys</strong></span> Statement Definition +<a name="id2589348"></a><span><strong class="command">trusted-keys</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">trusted-keys</strong></span> statement defines @@ -5752,7 +5906,7 @@ deny-answer-aliases { "example.net"; }; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2589048"></a><span><strong class="command">managed-keys</strong></span> Statement Grammar</h3></div></div></div> +<a name="id2589395"></a><span><strong class="command">managed-keys</strong></span> Statement Grammar</h3></div></div></div> <pre class="programlisting"><span><strong class="command">managed-keys</strong></span> { <em class="replaceable"><code>string</code></em> initial-key <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>string</code></em> ; [<span class="optional"> <em class="replaceable"><code>string</code></em> initial-key <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>string</code></em> ; [<span class="optional">...</span>]</span>] @@ -5887,7 +6041,7 @@ deny-answer-aliases { "example.net"; }; </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2589474"></a><span><strong class="command">view</strong></span> Statement Definition and Usage</h3></div></div></div> +<a name="id2589820"></a><span><strong class="command">view</strong></span> Statement Definition and Usage</h3></div></div></div> <p> The <span><strong class="command">view</strong></span> statement is a powerful feature @@ -6153,6 +6307,14 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" }; zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"><em class="replaceable"><code>class</code></em></span>] { + type static-stub; + [<span class="optional"> allow-query { <em class="replaceable"><code>address_match_list</code></em> }; </span>] + [<span class="optional"> server-addresses { [<span class="optional"> <em class="replaceable"><code>ip_addr</code></em> ; ... </span>] }; </span>] + [<span class="optional"> server-names { [<span class="optional"> <em class="replaceable"><code>namelist</code></em> </span>] }; </span>] + [<span class="optional"> zone-statistics <em class="replaceable"><code>yes_or_no</code></em> ; </span>] +}; + +zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"><em class="replaceable"><code>class</code></em></span>] { type forward; [<span class="optional"> forward (<code class="constant">only</code>|<code class="constant">first</code>) ; </span>] [<span class="optional"> forwarders { [<span class="optional"> <em class="replaceable"><code>ip_addr</code></em> [<span class="optional">port <em class="replaceable"><code>ip_port</code></em></span>] ; ... </span>] }; </span>] @@ -6167,10 +6329,10 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2591047"></a><span><strong class="command">zone</strong></span> Statement Definition and Usage</h3></div></div></div> +<a name="id2591297"></a><span><strong class="command">zone</strong></span> Statement Definition and Usage</h3></div></div></div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2591054"></a>Zone Types</h4></div></div></div> +<a name="id2591304"></a>Zone Types</h4></div></div></div> <div class="informaltable"><table border="1"> <colgroup> <col> @@ -6299,6 +6461,55 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" <tr> <td> <p> + <code class="varname">static-stub</code> + </p> + </td> +<td> + <p> + A static-stub zone is similar to a stub zone + with the following exceptions: + the zone data is statically configured, rather + than transferred from a master server; + when recursion is necessary for a query that + matches a static-stub zone, the locally + configured data (nameserver names and glue addresses) + is always used even if different authoritative + information is cached. + </p> + <p> + Zone data is configured via the + <span><strong class="command">server-addresses</strong></span> and + <span><strong class="command">server-names</strong></span> zone options. + </p> + <p> + The zone data is maintained in the form of NS + and (if necessary) glue A or AAAA RRs + internally, which can be seen by dumping zone + databases by <span><strong class="command">rndc dumpdb -all</strong></span>. + The configured RRs are considered local configuration + parameters rather than public data. + Non recursive queries (i.e., those with the RD + bit off) to a static-stub zone are therefore + prohibited and will be responded with REFUSED. + </p> + <p> + Since the data is statically configured, no + zone maintenance action takes place for a static-stub + zone. + For example, there is no periodic refresh + attempt, and an incoming notify message + will be rejected with an rcode of NOTAUTH. + </p> + <p> + Each static-stub zone is configured with + internally generated NS and (if necessary) + glue A or AAAA RRs + </p> + </td> +</tr> +<tr> +<td> + <p> <code class="varname">forward</code> </p> </td> @@ -6381,7 +6592,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2591414"></a>Class</h4></div></div></div> +<a name="id2591986"></a>Class</h4></div></div></div> <p> The zone's name may optionally be followed by a class. If a class is not specified, class <code class="literal">IN</code> (for <code class="varname">Internet</code>), @@ -6403,7 +6614,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2591447"></a>Zone Options</h4></div></div></div> +<a name="id2592087"></a>Zone Options</h4></div></div></div> <div class="variablelist"><dl> <dt><span class="term"><span><strong class="command">allow-notify</strong></span></span></dt> <dd><p> @@ -6648,6 +6859,78 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" <span><strong class="command">statistics-file</strong></span> defined in the server options. </p></dd> +<dt><span class="term"><span><strong class="command">server-addresses</strong></span></span></dt> +<dd> +<p> + Only meaningful for static-stub zones. + This is a list of IP addresses to which queries + should be sent in recursive resolution for the + zone. + A non empty list for this option will internally + configure the apex NS RR with associated glue A or + AAAA RRs. + </p> +<p> + For example, if "example.com" is configured as a + static-stub zone with 192.0.2.1 and 2001:db8::1234 + in a <span><strong class="command">server-addresses</strong></span> option, + the following RRs will be internally configured. + </p> +<pre class="programlisting">example.com. NS example.com. +example.com. A 192.0.2.1 +example.com. AAAA 2001:db8::1234</pre> +<p> + These records are internally used to resolve + names under the static-stub zone. + For instance, if the server receives a query for + "www.example.com" with the RD bit on, the server + will initiate recursive resolution and send + queries to 192.0.2.1 and/or 2001:db8::1234. + </p> +</dd> +<dt><span class="term"><span><strong class="command">server-names</strong></span></span></dt> +<dd> +<p> + Only meaningful for static-stub zones. + This is a list of domain names of nameservers that + act as authoritative servers of the static-stub + zone. + These names will be resolved to IP addresses when + <span><strong class="command">named</strong></span> needs to send queries to + these servers. + To make this supplemental resolution successful, + these names must not be a subdomain of the origin + name of static-stub zone. + That is, when "example.net" is the origin of a + static-stub zone, "ns.example" and + "master.example.com" can be specified in the + <span><strong class="command">server-names</strong></span> option, but + "ns.example.net" cannot, and will be rejected by + the configuration parser. + </p> +<p> + A non empty list for this option will internally + configure the apex NS RR with the specified names. + For example, if "example.com" is configured as a + static-stub zone with "ns1.example.net" and + "ns2.example.net" + in a <span><strong class="command">server-names</strong></span> option, + the following RRs will be internally configured. + </p> +<pre class="programlisting">example.com. NS ns1.example.net. +example.com. NS ns2.example.net. +</pre> +<p> + These records are internally used to resolve + names under the static-stub zone. + For instance, if the server receives a query for + "www.example.com" with the RD bit on, the server + initiate recursive resolution, + resolve "ns1.example.net" and/or + "ns2.example.net" to IP addresses, and then send + queries to (one or more of) these addresses. + </p> +</dd> <dt><span class="term"><span><strong class="command">sig-validity-interval</strong></span></span></dt> <dd><p> See the description of @@ -6895,7 +7178,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" <code class="varname">krb5-subdomain</code>, <code class="varname">ms-subdomain</code>, <code class="varname">tcp-self</code>, <code class="varname">6to4-self</code>, - and <code class="varname">zonesub</code>. + <code class="varname">zonesub</code>, and <code class="varname">external</code>. </p> <div class="informaltable"><table border="1"> <colgroup> @@ -7064,12 +7347,55 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> </td> </tr> +<tr> +<td> + <p> + <code class="varname">external</code> + </p> + </td> +<td> + <p> + This rule allows <span><strong class="command">named</strong></span> + to defer the decision of whether to allow a + given update to an external daemon. + </p> + <p> + The method of communicating with the daemon is + specified in the <em class="replaceable"><code>identity</code></em> + field, the format of which is + "<code class="constant">local:</code><em class="replaceable"><code>path</code></em>", + where <em class="replaceable"><code>path</code></em> is the location + of a UNIX-domain socket. (Currently, "local" is the + only supported mechanism.) + </p> + <p> + Requests to the external daemon are sent over the + UNIX-domain socket as datagrams with the following + format: + </p> + <pre class="programlisting"> + Protocol version number (4 bytes, network byte order, currently 1) + Request length (4 bytes, network byte order) + Signer (null-terminated string) + Name (null-terminated string) + TCP source address (null-terminated string) + Rdata type (null-terminated string) + Key (null-terminated string) + TKEY token length (4 bytes, network byte order) + TKEY token (remainder of packet)</pre> + <p> + The daemon replies with a four-byte value in + network byte order, containing either 0 or 1; 0 + indicates that the specified update is not + permitted, and 1 indicates that it is. + </p> + </td> +</tr> </tbody> </table></div> <p> In all cases, the <em class="replaceable"><code>name</code></em> - field must - specify a fully-qualified domain name. + field must specify a fully-qualified domain name. </p> <p> If no types are explicitly specified, this rule matches @@ -7085,7 +7411,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2593802"></a>Zone File</h2></div></div></div> +<a name="id2594629"></a>Zone File</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> <a name="types_of_resource_records_and_when_to_use_them"></a>Types of Resource Records and When to Use Them</h3></div></div></div> @@ -7098,7 +7424,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2593820"></a>Resource Records</h4></div></div></div> +<a name="id2594647"></a>Resource Records</h4></div></div></div> <p> A domain name identifies a node. Each node has a set of resource information, which may be empty. The set of resource @@ -7835,7 +8161,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2595512"></a>Textual expression of RRs</h4></div></div></div> +<a name="id2596202"></a>Textual expression of RRs</h4></div></div></div> <p> RRs are represented in binary form in the packets of the DNS protocol, and are usually represented in highly encoded form @@ -8038,7 +8364,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2596101"></a>Discussion of MX Records</h3></div></div></div> +<a name="id2596791"></a>Discussion of MX Records</h3></div></div></div> <p> As described above, domain servers store information as a series of resource records, each of which contains a particular @@ -8294,7 +8620,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2596648"></a>Inverse Mapping in IPv4</h3></div></div></div> +<a name="id2597338"></a>Inverse Mapping in IPv4</h3></div></div></div> <p> Reverse name resolution (that is, translation from IP address to name) is achieved by means of the <span class="emphasis"><em>in-addr.arpa</em></span> domain @@ -8355,7 +8681,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2596775"></a>Other Zone File Directives</h3></div></div></div> +<a name="id2597533"></a>Other Zone File Directives</h3></div></div></div> <p> The Master File Format was initially defined in RFC 1035 and has subsequently been extended. While the Master File Format @@ -8370,7 +8696,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2596866"></a>The <span><strong class="command">@</strong></span> (at-sign)</h4></div></div></div> +<a name="id2597556"></a>The <span><strong class="command">@</strong></span> (at-sign)</h4></div></div></div> <p> When used in the label (or name) field, the asperand or at-sign (@) symbol represents the current origin. @@ -8381,7 +8707,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional" </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2596882"></a>The <span><strong class="command">$ORIGIN</strong></span> Directive</h4></div></div></div> +<a name="id2597572"></a>The <span><strong class="command">$ORIGIN</strong></span> Directive</h4></div></div></div> <p> Syntax: <span><strong class="command">$ORIGIN</strong></span> <em class="replaceable"><code>domain-name</code></em> @@ -8410,7 +8736,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM. </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2596942"></a>The <span><strong class="command">$INCLUDE</strong></span> Directive</h4></div></div></div> +<a name="id2597701"></a>The <span><strong class="command">$INCLUDE</strong></span> Directive</h4></div></div></div> <p> Syntax: <span><strong class="command">$INCLUDE</strong></span> <em class="replaceable"><code>filename</code></em> @@ -8446,7 +8772,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM. </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2597012"></a>The <span><strong class="command">$TTL</strong></span> Directive</h4></div></div></div> +<a name="id2597770"></a>The <span><strong class="command">$TTL</strong></span> Directive</h4></div></div></div> <p> Syntax: <span><strong class="command">$TTL</strong></span> <em class="replaceable"><code>default-ttl</code></em> @@ -8465,7 +8791,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM. </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2597048"></a><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</h3></div></div></div> +<a name="id2597806"></a><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</h3></div></div></div> <p> Syntax: <span><strong class="command">$GENERATE</strong></span> <em class="replaceable"><code>range</code></em> @@ -8889,7 +9215,7 @@ HOST-127.EXAMPLE. MX 0 . </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2598138"></a>Name Server Statistics Counters</h4></div></div></div> +<a name="id2598897"></a>Name Server Statistics Counters</h4></div></div></div> <div class="informaltable"><table border="1"> <colgroup> <col> @@ -9446,7 +9772,7 @@ HOST-127.EXAMPLE. MX 0 . </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2599611"></a>Zone Maintenance Statistics Counters</h4></div></div></div> +<a name="id2600301"></a>Zone Maintenance Statistics Counters</h4></div></div></div> <div class="informaltable"><table border="1"> <colgroup> <col> @@ -9600,7 +9926,7 @@ HOST-127.EXAMPLE. MX 0 . </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2599994"></a>Resolver Statistics Counters</h4></div></div></div> +<a name="id2600753"></a>Resolver Statistics Counters</h4></div></div></div> <div class="informaltable"><table border="1"> <colgroup> <col> @@ -9983,7 +10309,7 @@ HOST-127.EXAMPLE. MX 0 . </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2601016"></a>Socket I/O Statistics Counters</h4></div></div></div> +<a name="id2601843"></a>Socket I/O Statistics Counters</h4></div></div></div> <p> Socket I/O statistics counters are defined per socket types, which are @@ -10138,7 +10464,7 @@ HOST-127.EXAMPLE. MX 0 . </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2601458"></a>Compatibility with <span class="emphasis"><em>BIND</em></span> 8 Counters</h4></div></div></div> +<a name="id2602284"></a>Compatibility with <span class="emphasis"><em>BIND</em></span> 8 Counters</h4></div></div></div> <p> Most statistics counters that were available in <span><strong class="command">BIND</strong></span> 8 are also supported in diff --git a/doc/arm/Bv9ARM.ch07.html b/doc/arm/Bv9ARM.ch07.html index 04b27783..16f30a86 100644 --- a/doc/arm/Bv9ARM.ch07.html +++ b/doc/arm/Bv9ARM.ch07.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch07.html,v 1.233 2010/12/09 01:14:11 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch07.html,v 1.242 2011-01-13 05:13:50 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -46,10 +46,10 @@ <p><b>Table of Contents</b></p> <dl> <dt><span class="sect1"><a href="Bv9ARM.ch07.html#Access_Control_Lists">Access Control Lists</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2601700"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2602595"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2601917">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2601977">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602676">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602736">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch07.html#dynamic_update_security">Dynamic Update Security</a></span></dt> </dl> @@ -122,7 +122,7 @@ zone "example.com" { </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2601700"></a><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span> +<a name="id2602595"></a><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span> </h2></div></div></div> <p> On UNIX servers, it is possible to run <acronym class="acronym">BIND</acronym> @@ -148,7 +148,7 @@ zone "example.com" { </p> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2601917"></a>The <span><strong class="command">chroot</strong></span> Environment</h3></div></div></div> +<a name="id2602676"></a>The <span><strong class="command">chroot</strong></span> Environment</h3></div></div></div> <p> In order for a <span><strong class="command">chroot</strong></span> environment to @@ -176,7 +176,7 @@ zone "example.com" { </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2601977"></a>Using the <span><strong class="command">setuid</strong></span> Function</h3></div></div></div> +<a name="id2602736"></a>Using the <span><strong class="command">setuid</strong></span> Function</h3></div></div></div> <p> Prior to running the <span><strong class="command">named</strong></span> daemon, use diff --git a/doc/arm/Bv9ARM.ch08.html b/doc/arm/Bv9ARM.ch08.html index b545d6a6..f4efb954 100644 --- a/doc/arm/Bv9ARM.ch08.html +++ b/doc/arm/Bv9ARM.ch08.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch08.html,v 1.233 2010/12/09 01:14:11 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch08.html,v 1.242 2011-01-13 05:13:50 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -45,18 +45,18 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602057">Common Problems</a></span></dt> -<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2602062">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602074">Incrementing and Changing the Serial Number</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602091">Where Can I Get Help?</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602884">Common Problems</a></span></dt> +<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2602889">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602901">Incrementing and Changing the Serial Number</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602918">Where Can I Get Help?</a></span></dt> </dl> </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2602057"></a>Common Problems</h2></div></div></div> +<a name="id2602884"></a>Common Problems</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2602062"></a>It's not working; how can I figure out what's wrong?</h3></div></div></div> +<a name="id2602889"></a>It's not working; how can I figure out what's wrong?</h3></div></div></div> <p> The best solution to solving installation and configuration issues is to take preventative measures by setting @@ -68,7 +68,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2602074"></a>Incrementing and Changing the Serial Number</h2></div></div></div> +<a name="id2602901"></a>Incrementing and Changing the Serial Number</h2></div></div></div> <p> Zone serial numbers are just numbers — they aren't date related. A lot of people set them to a number that @@ -95,7 +95,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2602091"></a>Where Can I Get Help?</h2></div></div></div> +<a name="id2602918"></a>Where Can I Get Help?</h2></div></div></div> <p> The Internet Systems Consortium (<acronym class="acronym">ISC</acronym>) offers a wide range diff --git a/doc/arm/Bv9ARM.ch09.html b/doc/arm/Bv9ARM.ch09.html index 297c83da..1242c45d 100644 --- a/doc/arm/Bv9ARM.ch09.html +++ b/doc/arm/Bv9ARM.ch09.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch09.html,v 1.237 2010/12/09 01:14:11 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch09.html,v 1.246 2011-01-13 05:13:50 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -45,31 +45,31 @@ <div class="toc"> <p><b>Table of Contents</b></p> <dl> -<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602290">Acknowledgments</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602980">Acknowledgments</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#historical_dns_information">A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></a></span></dt></dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602393">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2603288">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#ipv6addresses">IPv6 addresses (AAAA)</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bibliography">Bibliography (and Suggested Reading)</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch09.html#rfcs">Request for Comments (RFCs)</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch09.html#internet_drafts">Internet Drafts</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2605673">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606432">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bind9.library">BIND 9 DNS Library Support</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606156">Prerequisite</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606166">Compilation</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606190">Installation</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607177">Known Defects/Restrictions</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607254">The dns.conf File</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607281">Sample Applications</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608049">Library References</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607529">Prerequisite</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607539">Compilation</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607563">Installation</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607799">Known Defects/Restrictions</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607876">The dns.conf File</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607902">Sample Applications</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608944">Library References</a></span></dt> </dl></dd> </dl> </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2602290"></a>Acknowledgments</h2></div></div></div> +<a name="id2602980"></a>Acknowledgments</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> <a name="historical_dns_information"></a>A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym> @@ -172,7 +172,7 @@ </div> <div class="sect1" lang="en"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id2602393"></a>General <acronym class="acronym">DNS</acronym> Reference Information</h2></div></div></div> +<a name="id2603288"></a>General <acronym class="acronym">DNS</acronym> Reference Information</h2></div></div></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> <a name="ipv6addresses"></a>IPv6 addresses (AAAA)</h3></div></div></div> @@ -260,17 +260,17 @@ </p> <div class="bibliography"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2602649"></a>Bibliography</h4></div></div></div> +<a name="id2603476"></a>Bibliography</h4></div></div></div> <div class="bibliodiv"> <h3 class="title">Standards</h3> <div class="biblioentry"> -<a name="id2602660"></a><p>[<abbr class="abbrev">RFC974</abbr>] <span class="author"><span class="firstname">C.</span> <span class="surname">Partridge</span>. </span><span class="title"><i>Mail Routing and the Domain System</i>. </span><span class="pubdate">January 1986. </span></p> +<a name="id2603486"></a><p>[<abbr class="abbrev">RFC974</abbr>] <span class="author"><span class="firstname">C.</span> <span class="surname">Partridge</span>. </span><span class="title"><i>Mail Routing and the Domain System</i>. </span><span class="pubdate">January 1986. </span></p> </div> <div class="biblioentry"> -<a name="id2602683"></a><p>[<abbr class="abbrev">RFC1034</abbr>] <span class="author"><span class="firstname">P.V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names — Concepts and Facilities</i>. </span><span class="pubdate">November 1987. </span></p> +<a name="id2603510"></a><p>[<abbr class="abbrev">RFC1034</abbr>] <span class="author"><span class="firstname">P.V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names — Concepts and Facilities</i>. </span><span class="pubdate">November 1987. </span></p> </div> <div class="biblioentry"> -<a name="id2602707"></a><p>[<abbr class="abbrev">RFC1035</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names — Implementation and +<a name="id2603533"></a><p>[<abbr class="abbrev">RFC1035</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names — Implementation and Specification</i>. </span><span class="pubdate">November 1987. </span></p> </div> </div> @@ -278,42 +278,42 @@ <h3 class="title"> <a name="proposed_standards"></a>Proposed Standards</h3> <div class="biblioentry"> -<a name="id2602743"></a><p>[<abbr class="abbrev">RFC2181</abbr>] <span class="author"><span class="firstname">R., R. Bush</span> <span class="surname">Elz</span>. </span><span class="title"><i>Clarifications to the <acronym class="acronym">DNS</acronym> +<a name="id2603570"></a><p>[<abbr class="abbrev">RFC2181</abbr>] <span class="author"><span class="firstname">R., R. Bush</span> <span class="surname">Elz</span>. </span><span class="title"><i>Clarifications to the <acronym class="acronym">DNS</acronym> Specification</i>. </span><span class="pubdate">July 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2602770"></a><p>[<abbr class="abbrev">RFC2308</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Andrews</span>. </span><span class="title"><i>Negative Caching of <acronym class="acronym">DNS</acronym> +<a name="id2603596"></a><p>[<abbr class="abbrev">RFC2308</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Andrews</span>. </span><span class="title"><i>Negative Caching of <acronym class="acronym">DNS</acronym> Queries</i>. </span><span class="pubdate">March 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2602795"></a><p>[<abbr class="abbrev">RFC1995</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Ohta</span>. </span><span class="title"><i>Incremental Zone Transfer in <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">August 1996. </span></p> +<a name="id2603622"></a><p>[<abbr class="abbrev">RFC1995</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Ohta</span>. </span><span class="title"><i>Incremental Zone Transfer in <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">August 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2602820"></a><p>[<abbr class="abbrev">RFC1996</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A Mechanism for Prompt Notification of Zone Changes</i>. </span><span class="pubdate">August 1996. </span></p> +<a name="id2603646"></a><p>[<abbr class="abbrev">RFC1996</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A Mechanism for Prompt Notification of Zone Changes</i>. </span><span class="pubdate">August 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2602843"></a><p>[<abbr class="abbrev">RFC2136</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">Y.</span> <span class="surname">Rekhter</span>, and <span class="firstname">J.</span> <span class="surname">Bound</span>. </span><span class="title"><i>Dynamic Updates in the Domain Name System</i>. </span><span class="pubdate">April 1997. </span></p> +<a name="id2603670"></a><p>[<abbr class="abbrev">RFC2136</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">Y.</span> <span class="surname">Rekhter</span>, and <span class="firstname">J.</span> <span class="surname">Bound</span>. </span><span class="title"><i>Dynamic Updates in the Domain Name System</i>. </span><span class="pubdate">April 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2602899"></a><p>[<abbr class="abbrev">RFC2671</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Extension Mechanisms for DNS (EDNS0)</i>. </span><span class="pubdate">August 1997. </span></p> +<a name="id2603725"></a><p>[<abbr class="abbrev">RFC2671</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Extension Mechanisms for DNS (EDNS0)</i>. </span><span class="pubdate">August 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2602925"></a><p>[<abbr class="abbrev">RFC2672</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Non-Terminal DNS Name Redirection</i>. </span><span class="pubdate">August 1999. </span></p> +<a name="id2603752"></a><p>[<abbr class="abbrev">RFC2672</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Non-Terminal DNS Name Redirection</i>. </span><span class="pubdate">August 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2602952"></a><p>[<abbr class="abbrev">RFC2845</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>, <span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, and <span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secret Key Transaction Authentication for <acronym class="acronym">DNS</acronym> (TSIG)</i>. </span><span class="pubdate">May 2000. </span></p> +<a name="id2603779"></a><p>[<abbr class="abbrev">RFC2845</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>, <span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, and <span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secret Key Transaction Authentication for <acronym class="acronym">DNS</acronym> (TSIG)</i>. </span><span class="pubdate">May 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2603014"></a><p>[<abbr class="abbrev">RFC2930</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secret Key Establishment for DNS (TKEY RR)</i>. </span><span class="pubdate">September 2000. </span></p> +<a name="id2603841"></a><p>[<abbr class="abbrev">RFC2930</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secret Key Establishment for DNS (TKEY RR)</i>. </span><span class="pubdate">September 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2603044"></a><p>[<abbr class="abbrev">RFC2931</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DNS Request and Transaction Signatures (SIG(0)s)</i>. </span><span class="pubdate">September 2000. </span></p> +<a name="id2603870"></a><p>[<abbr class="abbrev">RFC2931</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DNS Request and Transaction Signatures (SIG(0)s)</i>. </span><span class="pubdate">September 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2603074"></a><p>[<abbr class="abbrev">RFC3007</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secure Domain Name System (DNS) Dynamic Update</i>. </span><span class="pubdate">November 2000. </span></p> +<a name="id2603900"></a><p>[<abbr class="abbrev">RFC3007</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secure Domain Name System (DNS) Dynamic Update</i>. </span><span class="pubdate">November 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2603100"></a><p>[<abbr class="abbrev">RFC3645</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Kwan</span>, <span class="firstname">P.</span> <span class="surname">Garg</span>, <span class="firstname">J.</span> <span class="surname">Gilroy</span>, <span class="firstname">L.</span> <span class="surname">Esibov</span>, <span class="firstname">J.</span> <span class="surname">Westhead</span>, and <span class="firstname">R.</span> <span class="surname">Hall</span>. </span><span class="title"><i>Generic Security Service Algorithm for Secret +<a name="id2603927"></a><p>[<abbr class="abbrev">RFC3645</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Kwan</span>, <span class="firstname">P.</span> <span class="surname">Garg</span>, <span class="firstname">J.</span> <span class="surname">Gilroy</span>, <span class="firstname">L.</span> <span class="surname">Esibov</span>, <span class="firstname">J.</span> <span class="surname">Westhead</span>, and <span class="firstname">R.</span> <span class="surname">Hall</span>. </span><span class="title"><i>Generic Security Service Algorithm for Secret Key Transaction Authentication for DNS (GSS-TSIG)</i>. </span><span class="pubdate">October 2003. </span></p> </div> @@ -322,19 +322,19 @@ <h3 class="title"> <acronym class="acronym">DNS</acronym> Security Proposed Standards</h3> <div class="biblioentry"> -<a name="id2603182"></a><p>[<abbr class="abbrev">RFC3225</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Conrad</span>. </span><span class="title"><i>Indicating Resolver Support of DNSSEC</i>. </span><span class="pubdate">December 2001. </span></p> +<a name="id2604009"></a><p>[<abbr class="abbrev">RFC3225</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Conrad</span>. </span><span class="title"><i>Indicating Resolver Support of DNSSEC</i>. </span><span class="pubdate">December 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2603209"></a><p>[<abbr class="abbrev">RFC3833</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Atkins</span> and <span class="firstname">R.</span> <span class="surname">Austein</span>. </span><span class="title"><i>Threat Analysis of the Domain Name System (DNS)</i>. </span><span class="pubdate">August 2004. </span></p> +<a name="id2604036"></a><p>[<abbr class="abbrev">RFC3833</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Atkins</span> and <span class="firstname">R.</span> <span class="surname">Austein</span>. </span><span class="title"><i>Threat Analysis of the Domain Name System (DNS)</i>. </span><span class="pubdate">August 2004. </span></p> </div> <div class="biblioentry"> -<a name="id2603245"></a><p>[<abbr class="abbrev">RFC4033</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>DNS Security Introduction and Requirements</i>. </span><span class="pubdate">March 2005. </span></p> +<a name="id2604072"></a><p>[<abbr class="abbrev">RFC4033</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>DNS Security Introduction and Requirements</i>. </span><span class="pubdate">March 2005. </span></p> </div> <div class="biblioentry"> -<a name="id2603310"></a><p>[<abbr class="abbrev">RFC4034</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Resource Records for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p> +<a name="id2604137"></a><p>[<abbr class="abbrev">RFC4034</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Resource Records for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p> </div> <div class="biblioentry"> -<a name="id2603376"></a><p>[<abbr class="abbrev">RFC4035</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Protocol Modifications for the DNS +<a name="id2604202"></a><p>[<abbr class="abbrev">RFC4035</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Protocol Modifications for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p> </div> </div> @@ -342,146 +342,146 @@ <h3 class="title">Other Important RFCs About <acronym class="acronym">DNS</acronym> Implementation</h3> <div class="biblioentry"> -<a name="id2603449"></a><p>[<abbr class="abbrev">RFC1535</abbr>] <span class="author"><span class="firstname">E.</span> <span class="surname">Gavron</span>. </span><span class="title"><i>A Security Problem and Proposed Correction With Widely +<a name="id2604276"></a><p>[<abbr class="abbrev">RFC1535</abbr>] <span class="author"><span class="firstname">E.</span> <span class="surname">Gavron</span>. </span><span class="title"><i>A Security Problem and Proposed Correction With Widely Deployed <acronym class="acronym">DNS</acronym> Software.</i>. </span><span class="pubdate">October 1993. </span></p> </div> <div class="biblioentry"> -<a name="id2603475"></a><p>[<abbr class="abbrev">RFC1536</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Kumar</span>, <span class="firstname">J.</span> <span class="surname">Postel</span>, <span class="firstname">C.</span> <span class="surname">Neuman</span>, <span class="firstname">P.</span> <span class="surname">Danzig</span>, and <span class="firstname">S.</span> <span class="surname">Miller</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Implementation +<a name="id2604301"></a><p>[<abbr class="abbrev">RFC1536</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Kumar</span>, <span class="firstname">J.</span> <span class="surname">Postel</span>, <span class="firstname">C.</span> <span class="surname">Neuman</span>, <span class="firstname">P.</span> <span class="surname">Danzig</span>, and <span class="firstname">S.</span> <span class="surname">Miller</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Implementation Errors and Suggested Fixes</i>. </span><span class="pubdate">October 1993. </span></p> </div> <div class="biblioentry"> -<a name="id2603543"></a><p>[<abbr class="abbrev">RFC1982</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Elz</span> and <span class="firstname">R.</span> <span class="surname">Bush</span>. </span><span class="title"><i>Serial Number Arithmetic</i>. </span><span class="pubdate">August 1996. </span></p> +<a name="id2604438"></a><p>[<abbr class="abbrev">RFC1982</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Elz</span> and <span class="firstname">R.</span> <span class="surname">Bush</span>. </span><span class="title"><i>Serial Number Arithmetic</i>. </span><span class="pubdate">August 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2603578"></a><p>[<abbr class="abbrev">RFC4074</abbr>] <span class="authorgroup"><span class="firstname">Y.</span> <span class="surname">Morishita</span> and <span class="firstname">T.</span> <span class="surname">Jinmei</span>. </span><span class="title"><i>Common Misbehaviour Against <acronym class="acronym">DNS</acronym> +<a name="id2604473"></a><p>[<abbr class="abbrev">RFC4074</abbr>] <span class="authorgroup"><span class="firstname">Y.</span> <span class="surname">Morishita</span> and <span class="firstname">T.</span> <span class="surname">Jinmei</span>. </span><span class="title"><i>Common Misbehaviour Against <acronym class="acronym">DNS</acronym> Queries for IPv6 Addresses</i>. </span><span class="pubdate">May 2005. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title">Resource Record Types</h3> <div class="biblioentry"> -<a name="id2603624"></a><p>[<abbr class="abbrev">RFC1183</abbr>] <span class="authorgroup"><span class="firstname">C.F.</span> <span class="surname">Everhart</span>, <span class="firstname">L. A.</span> <span class="surname">Mamakos</span>, <span class="firstname">R.</span> <span class="surname">Ullmann</span>, and <span class="firstname">P.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>New <acronym class="acronym">DNS</acronym> RR Definitions</i>. </span><span class="pubdate">October 1990. </span></p> +<a name="id2604519"></a><p>[<abbr class="abbrev">RFC1183</abbr>] <span class="authorgroup"><span class="firstname">C.F.</span> <span class="surname">Everhart</span>, <span class="firstname">L. A.</span> <span class="surname">Mamakos</span>, <span class="firstname">R.</span> <span class="surname">Ullmann</span>, and <span class="firstname">P.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>New <acronym class="acronym">DNS</acronym> RR Definitions</i>. </span><span class="pubdate">October 1990. </span></p> </div> <div class="biblioentry"> -<a name="id2603682"></a><p>[<abbr class="abbrev">RFC1706</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">R.</span> <span class="surname">Colella</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> NSAP Resource Records</i>. </span><span class="pubdate">October 1994. </span></p> +<a name="id2604577"></a><p>[<abbr class="abbrev">RFC1706</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">R.</span> <span class="surname">Colella</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> NSAP Resource Records</i>. </span><span class="pubdate">October 1994. </span></p> </div> <div class="biblioentry"> -<a name="id2603719"></a><p>[<abbr class="abbrev">RFC2168</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Daniel</span> and <span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="title"><i>Resolution of Uniform Resource Identifiers using +<a name="id2604614"></a><p>[<abbr class="abbrev">RFC2168</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Daniel</span> and <span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="title"><i>Resolution of Uniform Resource Identifiers using the Domain Name System</i>. </span><span class="pubdate">June 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2603754"></a><p>[<abbr class="abbrev">RFC1876</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Davis</span>, <span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">T.</span>, and <span class="firstname">I.</span> <span class="surname">Dickinson</span>. </span><span class="title"><i>A Means for Expressing Location Information in the +<a name="id2604649"></a><p>[<abbr class="abbrev">RFC1876</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Davis</span>, <span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">T.</span>, and <span class="firstname">I.</span> <span class="surname">Dickinson</span>. </span><span class="title"><i>A Means for Expressing Location Information in the Domain Name System</i>. </span><span class="pubdate">January 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2603809"></a><p>[<abbr class="abbrev">RFC2052</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A <acronym class="acronym">DNS</acronym> RR for Specifying the +<a name="id2604704"></a><p>[<abbr class="abbrev">RFC2052</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A <acronym class="acronym">DNS</acronym> RR for Specifying the Location of Services.</i>. </span><span class="pubdate">October 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2603847"></a><p>[<abbr class="abbrev">RFC2163</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Allocchio</span>. </span><span class="title"><i>Using the Internet <acronym class="acronym">DNS</acronym> to +<a name="id2604742"></a><p>[<abbr class="abbrev">RFC2163</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Allocchio</span>. </span><span class="title"><i>Using the Internet <acronym class="acronym">DNS</acronym> to Distribute MIXER Conformant Global Address Mapping</i>. </span><span class="pubdate">January 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2603873"></a><p>[<abbr class="abbrev">RFC2230</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Atkinson</span>. </span><span class="title"><i>Key Exchange Delegation Record for the <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">October 1997. </span></p> +<a name="id2604768"></a><p>[<abbr class="abbrev">RFC2230</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Atkinson</span>. </span><span class="title"><i>Key Exchange Delegation Record for the <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">October 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2603898"></a><p>[<abbr class="abbrev">RFC2536</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DSA KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2604793"></a><p>[<abbr class="abbrev">RFC2536</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DSA KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2603925"></a><p>[<abbr class="abbrev">RFC2537</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2604820"></a><p>[<abbr class="abbrev">RFC2537</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2603952"></a><p>[<abbr class="abbrev">RFC2538</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Storing Certificates in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2604846"></a><p>[<abbr class="abbrev">RFC2538</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Storing Certificates in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2604059"></a><p>[<abbr class="abbrev">RFC2539</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Storage of Diffie-Hellman Keys in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2604886"></a><p>[<abbr class="abbrev">RFC2539</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Storage of Diffie-Hellman Keys in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2604089"></a><p>[<abbr class="abbrev">RFC2540</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Detached Domain Name System (DNS) Information</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2604916"></a><p>[<abbr class="abbrev">RFC2540</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Detached Domain Name System (DNS) Information</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2604119"></a><p>[<abbr class="abbrev">RFC2782</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span>. </span><span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="author"><span class="firstname">L.</span> <span class="surname">Esibov</span>. </span><span class="title"><i>A DNS RR for specifying the location of services (DNS SRV)</i>. </span><span class="pubdate">February 2000. </span></p> +<a name="id2604946"></a><p>[<abbr class="abbrev">RFC2782</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span>. </span><span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="author"><span class="firstname">L.</span> <span class="surname">Esibov</span>. </span><span class="title"><i>A DNS RR for specifying the location of services (DNS SRV)</i>. </span><span class="pubdate">February 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2604162"></a><p>[<abbr class="abbrev">RFC2915</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="author"><span class="firstname">R.</span> <span class="surname">Daniel</span>. </span><span class="title"><i>The Naming Authority Pointer (NAPTR) DNS Resource Record</i>. </span><span class="pubdate">September 2000. </span></p> +<a name="id2604988"></a><p>[<abbr class="abbrev">RFC2915</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="author"><span class="firstname">R.</span> <span class="surname">Daniel</span>. </span><span class="title"><i>The Naming Authority Pointer (NAPTR) DNS Resource Record</i>. </span><span class="pubdate">September 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2604195"></a><p>[<abbr class="abbrev">RFC3110</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)</i>. </span><span class="pubdate">May 2001. </span></p> +<a name="id2605021"></a><p>[<abbr class="abbrev">RFC3110</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)</i>. </span><span class="pubdate">May 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2604221"></a><p>[<abbr class="abbrev">RFC3123</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Koch</span>. </span><span class="title"><i>A DNS RR Type for Lists of Address Prefixes (APL RR)</i>. </span><span class="pubdate">June 2001. </span></p> +<a name="id2605048"></a><p>[<abbr class="abbrev">RFC3123</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Koch</span>. </span><span class="title"><i>A DNS RR Type for Lists of Address Prefixes (APL RR)</i>. </span><span class="pubdate">June 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2604245"></a><p>[<abbr class="abbrev">RFC3596</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">C.</span> <span class="surname">Huitema</span>, <span class="firstname">V.</span> <span class="surname">Ksinant</span>, and <span class="firstname">M.</span> <span class="surname">Souissi</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Extensions to support IP +<a name="id2605072"></a><p>[<abbr class="abbrev">RFC3596</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">C.</span> <span class="surname">Huitema</span>, <span class="firstname">V.</span> <span class="surname">Ksinant</span>, and <span class="firstname">M.</span> <span class="surname">Souissi</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Extensions to support IP version 6</i>. </span><span class="pubdate">October 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2604302"></a><p>[<abbr class="abbrev">RFC3597</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gustafsson</span>. </span><span class="title"><i>Handling of Unknown DNS Resource Record (RR) Types</i>. </span><span class="pubdate">September 2003. </span></p> +<a name="id2605129"></a><p>[<abbr class="abbrev">RFC3597</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gustafsson</span>. </span><span class="title"><i>Handling of Unknown DNS Resource Record (RR) Types</i>. </span><span class="pubdate">September 2003. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title"> <acronym class="acronym">DNS</acronym> and the Internet</h3> <div class="biblioentry"> -<a name="id2604334"></a><p>[<abbr class="abbrev">RFC1101</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Network Names +<a name="id2605161"></a><p>[<abbr class="abbrev">RFC1101</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Network Names and Other Types</i>. </span><span class="pubdate">April 1989. </span></p> </div> <div class="biblioentry"> -<a name="id2604360"></a><p>[<abbr class="abbrev">RFC1123</abbr>] <span class="author"><span class="surname">Braden</span>. </span><span class="title"><i>Requirements for Internet Hosts - Application and +<a name="id2605187"></a><p>[<abbr class="abbrev">RFC1123</abbr>] <span class="author"><span class="surname">Braden</span>. </span><span class="title"><i>Requirements for Internet Hosts - Application and Support</i>. </span><span class="pubdate">October 1989. </span></p> </div> <div class="biblioentry"> -<a name="id2604382"></a><p>[<abbr class="abbrev">RFC1591</abbr>] <span class="author"><span class="firstname">J.</span> <span class="surname">Postel</span>. </span><span class="title"><i>Domain Name System Structure and Delegation</i>. </span><span class="pubdate">March 1994. </span></p> +<a name="id2605209"></a><p>[<abbr class="abbrev">RFC1591</abbr>] <span class="author"><span class="firstname">J.</span> <span class="surname">Postel</span>. </span><span class="title"><i>Domain Name System Structure and Delegation</i>. </span><span class="pubdate">March 1994. </span></p> </div> <div class="biblioentry"> -<a name="id2604406"></a><p>[<abbr class="abbrev">RFC2317</abbr>] <span class="authorgroup"><span class="firstname">H.</span> <span class="surname">Eidnes</span>, <span class="firstname">G.</span> <span class="surname">de Groot</span>, and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Classless IN-ADDR.ARPA Delegation</i>. </span><span class="pubdate">March 1998. </span></p> +<a name="id2605233"></a><p>[<abbr class="abbrev">RFC2317</abbr>] <span class="authorgroup"><span class="firstname">H.</span> <span class="surname">Eidnes</span>, <span class="firstname">G.</span> <span class="surname">de Groot</span>, and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Classless IN-ADDR.ARPA Delegation</i>. </span><span class="pubdate">March 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2604452"></a><p>[<abbr class="abbrev">RFC2826</abbr>] <span class="authorgroup"><span class="surname">Internet Architecture Board</span>. </span><span class="title"><i>IAB Technical Comment on the Unique DNS Root</i>. </span><span class="pubdate">May 2000. </span></p> +<a name="id2605278"></a><p>[<abbr class="abbrev">RFC2826</abbr>] <span class="authorgroup"><span class="surname">Internet Architecture Board</span>. </span><span class="title"><i>IAB Technical Comment on the Unique DNS Root</i>. </span><span class="pubdate">May 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2604475"></a><p>[<abbr class="abbrev">RFC2929</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, <span class="firstname">E.</span> <span class="surname">Brunner-Williams</span>, and <span class="firstname">B.</span> <span class="surname">Manning</span>. </span><span class="title"><i>Domain Name System (DNS) IANA Considerations</i>. </span><span class="pubdate">September 2000. </span></p> +<a name="id2605302"></a><p>[<abbr class="abbrev">RFC2929</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, <span class="firstname">E.</span> <span class="surname">Brunner-Williams</span>, and <span class="firstname">B.</span> <span class="surname">Manning</span>. </span><span class="title"><i>Domain Name System (DNS) IANA Considerations</i>. </span><span class="pubdate">September 2000. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title"> <acronym class="acronym">DNS</acronym> Operations</h3> <div class="biblioentry"> -<a name="id2604533"></a><p>[<abbr class="abbrev">RFC1033</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Lottor</span>. </span><span class="title"><i>Domain administrators operations guide.</i>. </span><span class="pubdate">November 1987. </span></p> +<a name="id2605360"></a><p>[<abbr class="abbrev">RFC1033</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Lottor</span>. </span><span class="title"><i>Domain administrators operations guide.</i>. </span><span class="pubdate">November 1987. </span></p> </div> <div class="biblioentry"> -<a name="id2604556"></a><p>[<abbr class="abbrev">RFC1537</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Beertema</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Data File +<a name="id2605383"></a><p>[<abbr class="abbrev">RFC1537</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Beertema</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Data File Configuration Errors</i>. </span><span class="pubdate">October 1993. </span></p> </div> <div class="biblioentry"> -<a name="id2604583"></a><p>[<abbr class="abbrev">RFC1912</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Barr</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Operational and +<a name="id2605410"></a><p>[<abbr class="abbrev">RFC1912</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Barr</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Operational and Configuration Errors</i>. </span><span class="pubdate">February 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2604610"></a><p>[<abbr class="abbrev">RFC2010</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Operational Criteria for Root Name Servers.</i>. </span><span class="pubdate">October 1996. </span></p> +<a name="id2605436"></a><p>[<abbr class="abbrev">RFC2010</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Operational Criteria for Root Name Servers.</i>. </span><span class="pubdate">October 1996. </span></p> </div> <div class="biblioentry"> -<a name="id2604646"></a><p>[<abbr class="abbrev">RFC2219</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Hamilton</span> and <span class="firstname">R.</span> <span class="surname">Wright</span>. </span><span class="title"><i>Use of <acronym class="acronym">DNS</acronym> Aliases for +<a name="id2605473"></a><p>[<abbr class="abbrev">RFC2219</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Hamilton</span> and <span class="firstname">R.</span> <span class="surname">Wright</span>. </span><span class="title"><i>Use of <acronym class="acronym">DNS</acronym> Aliases for Network Services.</i>. </span><span class="pubdate">October 1997. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title">Internationalized Domain Names</h3> <div class="biblioentry"> -<a name="id2604692"></a><p>[<abbr class="abbrev">RFC2825</abbr>] <span class="authorgroup"><span class="surname">IAB</span> and <span class="firstname">R.</span> <span class="surname">Daigle</span>. </span><span class="title"><i>A Tangled Web: Issues of I18N, Domain Names, +<a name="id2605518"></a><p>[<abbr class="abbrev">RFC2825</abbr>] <span class="authorgroup"><span class="surname">IAB</span> and <span class="firstname">R.</span> <span class="surname">Daigle</span>. </span><span class="title"><i>A Tangled Web: Issues of I18N, Domain Names, and the Other Internet protocols</i>. </span><span class="pubdate">May 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2604724"></a><p>[<abbr class="abbrev">RFC3490</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Faltstrom</span>, <span class="firstname">P.</span> <span class="surname">Hoffman</span>, and <span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Internationalizing Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p> +<a name="id2605550"></a><p>[<abbr class="abbrev">RFC3490</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Faltstrom</span>, <span class="firstname">P.</span> <span class="surname">Hoffman</span>, and <span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Internationalizing Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2604770"></a><p>[<abbr class="abbrev">RFC3491</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Hoffman</span> and <span class="firstname">M.</span> <span class="surname">Blanchet</span>. </span><span class="title"><i>Nameprep: A Stringprep Profile for Internationalized Domain Names</i>. </span><span class="pubdate">March 2003. </span></p> +<a name="id2605596"></a><p>[<abbr class="abbrev">RFC3491</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Hoffman</span> and <span class="firstname">M.</span> <span class="surname">Blanchet</span>. </span><span class="title"><i>Nameprep: A Stringprep Profile for Internationalized Domain Names</i>. </span><span class="pubdate">March 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2604873"></a><p>[<abbr class="abbrev">RFC3492</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Punycode: A Bootstring encoding of Unicode +<a name="id2605632"></a><p>[<abbr class="abbrev">RFC3492</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p> </div> @@ -497,47 +497,47 @@ </p> </div> <div class="biblioentry"> -<a name="id2604918"></a><p>[<abbr class="abbrev">RFC1464</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Rosenbaum</span>. </span><span class="title"><i>Using the Domain Name System To Store Arbitrary String +<a name="id2605676"></a><p>[<abbr class="abbrev">RFC1464</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Rosenbaum</span>. </span><span class="title"><i>Using the Domain Name System To Store Arbitrary String Attributes</i>. </span><span class="pubdate">May 1993. </span></p> </div> <div class="biblioentry"> -<a name="id2604940"></a><p>[<abbr class="abbrev">RFC1713</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Romao</span>. </span><span class="title"><i>Tools for <acronym class="acronym">DNS</acronym> Debugging</i>. </span><span class="pubdate">November 1994. </span></p> +<a name="id2605699"></a><p>[<abbr class="abbrev">RFC1713</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Romao</span>. </span><span class="title"><i>Tools for <acronym class="acronym">DNS</acronym> Debugging</i>. </span><span class="pubdate">November 1994. </span></p> </div> <div class="biblioentry"> -<a name="id2604966"></a><p>[<abbr class="abbrev">RFC1794</abbr>] <span class="author"><span class="firstname">T.</span> <span class="surname">Brisco</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Support for Load +<a name="id2605724"></a><p>[<abbr class="abbrev">RFC1794</abbr>] <span class="author"><span class="firstname">T.</span> <span class="surname">Brisco</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Support for Load Balancing</i>. </span><span class="pubdate">April 1995. </span></p> </div> <div class="biblioentry"> -<a name="id2604992"></a><p>[<abbr class="abbrev">RFC2240</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Legal Basis for Domain Name Allocation</i>. </span><span class="pubdate">November 1997. </span></p> +<a name="id2605750"></a><p>[<abbr class="abbrev">RFC2240</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Legal Basis for Domain Name Allocation</i>. </span><span class="pubdate">November 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2605015"></a><p>[<abbr class="abbrev">RFC2345</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>, <span class="firstname">T.</span> <span class="surname">Wolf</span>, and <span class="firstname">G.</span> <span class="surname">Oglesby</span>. </span><span class="title"><i>Domain Names and Company Name Retrieval</i>. </span><span class="pubdate">May 1998. </span></p> +<a name="id2605773"></a><p>[<abbr class="abbrev">RFC2345</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>, <span class="firstname">T.</span> <span class="surname">Wolf</span>, and <span class="firstname">G.</span> <span class="surname">Oglesby</span>. </span><span class="title"><i>Domain Names and Company Name Retrieval</i>. </span><span class="pubdate">May 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2605061"></a><p>[<abbr class="abbrev">RFC2352</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Convention For Using Legal Names as Domain Names</i>. </span><span class="pubdate">May 1998. </span></p> +<a name="id2605819"></a><p>[<abbr class="abbrev">RFC2352</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Convention For Using Legal Names as Domain Names</i>. </span><span class="pubdate">May 1998. </span></p> </div> <div class="biblioentry"> -<a name="id2605084"></a><p>[<abbr class="abbrev">RFC3071</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>. </span><span class="title"><i>Reflections on the DNS, RFC 1591, and Categories of Domains</i>. </span><span class="pubdate">February 2001. </span></p> +<a name="id2605843"></a><p>[<abbr class="abbrev">RFC3071</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>. </span><span class="title"><i>Reflections on the DNS, RFC 1591, and Categories of Domains</i>. </span><span class="pubdate">February 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2605111"></a><p>[<abbr class="abbrev">RFC3258</abbr>] <span class="authorgroup"><span class="firstname">T.</span> <span class="surname">Hardie</span>. </span><span class="title"><i>Distributing Authoritative Name Servers via +<a name="id2605869"></a><p>[<abbr class="abbrev">RFC3258</abbr>] <span class="authorgroup"><span class="firstname">T.</span> <span class="surname">Hardie</span>. </span><span class="title"><i>Distributing Authoritative Name Servers via Shared Unicast Addresses</i>. </span><span class="pubdate">April 2002. </span></p> </div> <div class="biblioentry"> -<a name="id2605137"></a><p>[<abbr class="abbrev">RFC3901</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Durand</span> and <span class="firstname">J.</span> <span class="surname">Ihren</span>. </span><span class="title"><i>DNS IPv6 Transport Operational Guidelines</i>. </span><span class="pubdate">September 2004. </span></p> +<a name="id2605895"></a><p>[<abbr class="abbrev">RFC3901</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Durand</span> and <span class="firstname">J.</span> <span class="surname">Ihren</span>. </span><span class="title"><i>DNS IPv6 Transport Operational Guidelines</i>. </span><span class="pubdate">September 2004. </span></p> </div> </div> <div class="bibliodiv"> <h3 class="title">Obsolete and Unimplemented Experimental RFC</h3> <div class="biblioentry"> -<a name="id2605180"></a><p>[<abbr class="abbrev">RFC1712</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Farrell</span>, <span class="firstname">M.</span> <span class="surname">Schulze</span>, <span class="firstname">S.</span> <span class="surname">Pleitner</span>, and <span class="firstname">D.</span> <span class="surname">Baldoni</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Geographical +<a name="id2605939"></a><p>[<abbr class="abbrev">RFC1712</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Farrell</span>, <span class="firstname">M.</span> <span class="surname">Schulze</span>, <span class="firstname">S.</span> <span class="surname">Pleitner</span>, and <span class="firstname">D.</span> <span class="surname">Baldoni</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Geographical Location</i>. </span><span class="pubdate">November 1994. </span></p> </div> <div class="biblioentry"> -<a name="id2605238"></a><p>[<abbr class="abbrev">RFC2673</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Binary Labels in the Domain Name System</i>. </span><span class="pubdate">August 1999. </span></p> +<a name="id2605996"></a><p>[<abbr class="abbrev">RFC2673</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Binary Labels in the Domain Name System</i>. </span><span class="pubdate">August 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2605265"></a><p>[<abbr class="abbrev">RFC2874</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span> and <span class="firstname">C.</span> <span class="surname">Huitema</span>. </span><span class="title"><i>DNS Extensions to Support IPv6 Address Aggregation +<a name="id2606023"></a><p>[<abbr class="abbrev">RFC2874</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span> and <span class="firstname">C.</span> <span class="surname">Huitema</span>. </span><span class="title"><i>DNS Extensions to Support IPv6 Address Aggregation and Renumbering</i>. </span><span class="pubdate">July 2000. </span></p> </div> </div> @@ -551,39 +551,39 @@ </p> </div> <div class="biblioentry"> -<a name="id2605313"></a><p>[<abbr class="abbrev">RFC2065</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">C.</span> <span class="surname">Kaufman</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">January 1997. </span></p> +<a name="id2606071"></a><p>[<abbr class="abbrev">RFC2065</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">C.</span> <span class="surname">Kaufman</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">January 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2605352"></a><p>[<abbr class="abbrev">RFC2137</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secure Domain Name System Dynamic Update</i>. </span><span class="pubdate">April 1997. </span></p> +<a name="id2606110"></a><p>[<abbr class="abbrev">RFC2137</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secure Domain Name System Dynamic Update</i>. </span><span class="pubdate">April 1997. </span></p> </div> <div class="biblioentry"> -<a name="id2605379"></a><p>[<abbr class="abbrev">RFC2535</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">March 1999. </span></p> +<a name="id2606137"></a><p>[<abbr class="abbrev">RFC2535</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">March 1999. </span></p> </div> <div class="biblioentry"> -<a name="id2605409"></a><p>[<abbr class="abbrev">RFC3008</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Domain Name System Security (DNSSEC) +<a name="id2606167"></a><p>[<abbr class="abbrev">RFC3008</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Domain Name System Security (DNSSEC) Signing Authority</i>. </span><span class="pubdate">November 2000. </span></p> </div> <div class="biblioentry"> -<a name="id2605434"></a><p>[<abbr class="abbrev">RFC3090</abbr>] <span class="authorgroup"><span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>DNS Security Extension Clarification on Zone Status</i>. </span><span class="pubdate">March 2001. </span></p> +<a name="id2606193"></a><p>[<abbr class="abbrev">RFC3090</abbr>] <span class="authorgroup"><span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>DNS Security Extension Clarification on Zone Status</i>. </span><span class="pubdate">March 2001. </span></p> </div> <div class="biblioentry"> -<a name="id2605461"></a><p>[<abbr class="abbrev">RFC3445</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Massey</span> and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Limiting the Scope of the KEY Resource Record (RR)</i>. </span><span class="pubdate">December 2002. </span></p> +<a name="id2606219"></a><p>[<abbr class="abbrev">RFC3445</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Massey</span> and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Limiting the Scope of the KEY Resource Record (RR)</i>. </span><span class="pubdate">December 2002. </span></p> </div> <div class="biblioentry"> -<a name="id2605497"></a><p>[<abbr class="abbrev">RFC3655</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Redefinition of DNS Authenticated Data (AD) bit</i>. </span><span class="pubdate">November 2003. </span></p> +<a name="id2606256"></a><p>[<abbr class="abbrev">RFC3655</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Redefinition of DNS Authenticated Data (AD) bit</i>. </span><span class="pubdate">November 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2605533"></a><p>[<abbr class="abbrev">RFC3658</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Delegation Signer (DS) Resource Record (RR)</i>. </span><span class="pubdate">December 2003. </span></p> +<a name="id2606292"></a><p>[<abbr class="abbrev">RFC3658</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Delegation Signer (DS) Resource Record (RR)</i>. </span><span class="pubdate">December 2003. </span></p> </div> <div class="biblioentry"> -<a name="id2605560"></a><p>[<abbr class="abbrev">RFC3755</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Weiler</span>. </span><span class="title"><i>Legacy Resolver Compatibility for Delegation Signer (DS)</i>. </span><span class="pubdate">May 2004. </span></p> +<a name="id2606318"></a><p>[<abbr class="abbrev">RFC3755</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Weiler</span>. </span><span class="title"><i>Legacy Resolver Compatibility for Delegation Signer (DS)</i>. </span><span class="pubdate">May 2004. </span></p> </div> <div class="biblioentry"> -<a name="id2605587"></a><p>[<abbr class="abbrev">RFC3757</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Kolkman</span>, <span class="firstname">J.</span> <span class="surname">Schlyter</span>, and <span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>Domain Name System KEY (DNSKEY) Resource Record +<a name="id2606345"></a><p>[<abbr class="abbrev">RFC3757</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Kolkman</span>, <span class="firstname">J.</span> <span class="surname">Schlyter</span>, and <span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>Domain Name System KEY (DNSKEY) Resource Record (RR) Secure Entry Point (SEP) Flag</i>. </span><span class="pubdate">April 2004. </span></p> </div> <div class="biblioentry"> -<a name="id2605632"></a><p>[<abbr class="abbrev">RFC3845</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Schlyter</span>. </span><span class="title"><i>DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format</i>. </span><span class="pubdate">August 2004. </span></p> +<a name="id2606390"></a><p>[<abbr class="abbrev">RFC3845</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Schlyter</span>. </span><span class="title"><i>DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format</i>. </span><span class="pubdate">August 2004. </span></p> </div> </div> </div> @@ -604,14 +604,14 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2605673"></a>Other Documents About <acronym class="acronym">BIND</acronym> +<a name="id2606432"></a>Other Documents About <acronym class="acronym">BIND</acronym> </h3></div></div></div> <p></p> <div class="bibliography"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2605683"></a>Bibliography</h4></div></div></div> +<a name="id2606441"></a>Bibliography</h4></div></div></div> <div class="biblioentry"> -<a name="id2605685"></a><p><span class="authorgroup"><span class="firstname">Paul</span> <span class="surname">Albitz</span> and <span class="firstname">Cricket</span> <span class="surname">Liu</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></i>. </span><span class="copyright">Copyright © 1998 Sebastopol, CA: O'Reilly and Associates. </span></p> +<a name="id2606443"></a><p><span class="authorgroup"><span class="firstname">Paul</span> <span class="surname">Albitz</span> and <span class="firstname">Cricket</span> <span class="surname">Liu</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></i>. </span><span class="copyright">Copyright © 1998 Sebastopol, CA: O'Reilly and Associates. </span></p> </div> </div> </div> @@ -648,7 +648,7 @@ </ul></div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2606156"></a>Prerequisite</h3></div></div></div> +<a name="id2607529"></a>Prerequisite</h3></div></div></div> <p>GNU make is required to build the export libraries (other part of BIND 9 can still be built with other types of make). In the reminder of this document, "make" means GNU make. Note that @@ -657,7 +657,7 @@ </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2606166"></a>Compilation</h3></div></div></div> +<a name="id2607539"></a>Compilation</h3></div></div></div> <pre class="screen"> $ <strong class="userinput"><code>./configure --enable-exportlib <em class="replaceable"><code>[other flags]</code></em></code></strong> $ <strong class="userinput"><code>make</code></strong> @@ -672,7 +672,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2606190"></a>Installation</h3></div></div></div> +<a name="id2607563"></a>Installation</h3></div></div></div> <pre class="screen"> $ <strong class="userinput"><code>cd lib/export</code></strong> $ <strong class="userinput"><code>make install</code></strong> @@ -694,7 +694,7 @@ $ <strong class="userinput"><code>make install</code></strong> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2607177"></a>Known Defects/Restrictions</h3></div></div></div> +<a name="id2607799"></a>Known Defects/Restrictions</h3></div></div></div> <div class="itemizedlist"><ul type="disc"> <li><p>Currently, win32 is not supported for the export library. (Normal BIND 9 application can be built as @@ -734,7 +734,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2607254"></a>The dns.conf File</h3></div></div></div> +<a name="id2607876"></a>The dns.conf File</h3></div></div></div> <p>The IRS library supports an "advanced" configuration file related to the DNS library for configuration parameters that would be beyond the capability of the @@ -752,14 +752,14 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2607281"></a>Sample Applications</h3></div></div></div> +<a name="id2607902"></a>Sample Applications</h3></div></div></div> <p>Some sample application programs using this API are provided for reference. The following is a brief description of these applications. </p> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2607289"></a>sample: a simple stub resolver utility</h4></div></div></div> +<a name="id2607911"></a>sample: a simple stub resolver utility</h4></div></div></div> <p> It sends a query of a given name (of a given optional RR type) to a specified recursive server, and prints the result as a list of @@ -823,7 +823,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2607380"></a>sample-async: a simple stub resolver, working asynchronously</h4></div></div></div> +<a name="id2608138"></a>sample-async: a simple stub resolver, working asynchronously</h4></div></div></div> <p> Similar to "sample", but accepts a list of (query) domain names as a separate file and resolves the names @@ -864,7 +864,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2607433"></a>sample-request: a simple DNS transaction client</h4></div></div></div> +<a name="id2608192"></a>sample-request: a simple DNS transaction client</h4></div></div></div> <p> It sends a query to a specified server, and prints the response with minimal processing. It doesn't act as a @@ -905,7 +905,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2607497"></a>sample-gai: getaddrinfo() and getnameinfo() test code</h4></div></div></div> +<a name="id2608256"></a>sample-gai: getaddrinfo() and getnameinfo() test code</h4></div></div></div> <p> This is a test program to check getaddrinfo() and getnameinfo() behavior. It takes a @@ -922,7 +922,7 @@ $ <strong class="userinput"><code>make</code></strong> </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2607512"></a>sample-update: a simple dynamic update client program</h4></div></div></div> +<a name="id2608270"></a>sample-update: a simple dynamic update client program</h4></div></div></div> <p> It accepts a single update command as a command-line argument, sends an update request message to the @@ -1017,7 +1017,7 @@ $ <strong class="userinput"><code>sample-update -a sample-update -k Kxxx.+nnn+mm </div> <div class="sect3" lang="en"> <div class="titlepage"><div><div><h4 class="title"> -<a name="id2607643"></a>nsprobe: domain/name server checker in terms of RFC 4074</h4></div></div></div> +<a name="id2608880"></a>nsprobe: domain/name server checker in terms of RFC 4074</h4></div></div></div> <p> It checks a set of domains to see the name servers of the domains behave @@ -1074,7 +1074,7 @@ $ <strong class="userinput"><code>sample-update -a sample-update -k Kxxx.+nnn+mm </div> <div class="sect2" lang="en"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id2608049"></a>Library References</h3></div></div></div> +<a name="id2608944"></a>Library References</h3></div></div></div> <p>As of this writing, there is no formal "manual" of the libraries, except this document, header files (some of them provide pretty detailed explanations), and sample application diff --git a/doc/arm/Bv9ARM.ch10.html b/doc/arm/Bv9ARM.ch10.html index 9bf4f711..7ff08e1a 100644 --- a/doc/arm/Bv9ARM.ch10.html +++ b/doc/arm/Bv9ARM.ch10.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.ch10.html,v 1.19 2010/01/08 01:14:09 tbox Exp $ --> +<!-- $Id: Bv9ARM.ch10.html,v 1.20 2011-01-05 01:14:09 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> diff --git a/doc/arm/Bv9ARM.html b/doc/arm/Bv9ARM.html index 99be7f79..ec93fe6c 100644 --- a/doc/arm/Bv9ARM.html +++ b/doc/arm/Bv9ARM.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: Bv9ARM.html,v 1.254 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: Bv9ARM.html,v 1.263 2011-01-13 05:13:50 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -41,7 +41,7 @@ <div> <div><h1 class="title"> <a name="id2563174"></a>BIND 9 Administrator Reference Manual</h1></div> -<div><p class="copyright">Copyright © 2004-2010 Internet Systems Consortium, Inc. ("ISC")</p></div> +<div><p class="copyright">Copyright © 2004-2011 Internet Systems Consortium, Inc. ("ISC")</p></div> <div><p class="copyright">Copyright © 2000-2003 Internet Software Consortium.</p></div> </div> <hr> @@ -51,39 +51,39 @@ <dl> <dt><span class="chapter"><a href="Bv9ARM.ch01.html">1. Introduction</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2563412">Scope of Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564391">Organization of This Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564531">Conventions Used in This Document</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564712">The Domain Name System (<acronym class="acronym">DNS</acronym>)</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564371">Scope of Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564394">Organization of This Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564534">Conventions Used in This Document</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch01.html#id2564715">The Domain Name System (<acronym class="acronym">DNS</acronym>)</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564733">DNS Fundamentals</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564768">Domains and Domain Names</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567173">Zones</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567250">Authoritative Name Servers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567422">Caching Name Servers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567553">Name Servers in Multiple Roles</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564737">DNS Fundamentals</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2564771">Domains and Domain Names</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567176">Zones</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567253">Authoritative Name Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567426">Caching Name Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch01.html#id2567556">Name Servers in Multiple Roles</a></span></dt> </dl></dd> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch02.html">2. <acronym class="acronym">BIND</acronym> Resource Requirements</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567587">Hardware requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567613">CPU Requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567626">Memory Requirements</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567721">Name Server Intensive Environment Issues</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567732">Supported Operating Systems</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567590">Hardware requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567617">CPU Requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567629">Memory Requirements</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567724">Name Server Intensive Environment Issues</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch02.html#id2567735">Supported Operating Systems</a></span></dt> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch03.html">3. Name Server Configuration</a></span></dt> <dd><dl> <dt><span class="sect1"><a href="Bv9ARM.ch03.html#sample_configuration">Sample Configurations</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567764">A Caching-only Name Server</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567780">An Authoritative-only Name Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567767">A Caching-only Name Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2567988">An Authoritative-only Name Server</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568007">Load Balancing</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568361">Name Server Operations</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568010">Load Balancing</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch03.html#id2568364">Name Server Operations</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2568366">Tools for Use With the Name Server Daemon</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2570381">Signals</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2568370">Tools for Use With the Name Server Daemon</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch03.html#id2570385">Signals</a></span></dt> </dl></dd> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch04.html">4. Advanced DNS Features</a></span></dt> @@ -92,64 +92,64 @@ <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dynamic_update">Dynamic Update</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#journal">The journal file</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#incremental_zone_transfers">Incremental Zone Transfers (IXFR)</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570825">Split DNS</a></span></dt> -<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570843">Example split DNS setup</a></span></dt></dl></dd> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2570823">Split DNS</a></span></dt> +<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2570841">Example split DNS setup</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#tsig">TSIG</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571345">Generate Shared Keys for Each Pair of Hosts</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571555">Copying the Shared Secret to Both Machines</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571565">Informing the Servers of the Key's Existence</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571602">Instructing the Server to Use the Key</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571659">TSIG Key Based Access Control</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571708">Errors</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571342">Generate Shared Keys for Each Pair of Hosts</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571553">Copying the Shared Secret to Both Machines</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571563">Informing the Servers of the Key's Existence</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571600">Instructing the Server to Use the Key</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571657">TSIG Key Based Access Control</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571706">Errors</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571722">TKEY</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2563989">SIG(0)</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2571720">TKEY</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2563987">SIG(0)</a></span></dt> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#DNSSEC">DNSSEC</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564057">Generating Keys</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572192">Signing the Zone</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572273">Configuring Servers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2564055">Generating Keys</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572189">Signing the Zone</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572270">Configuring Servers</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#dnssec.dynamic.zones">DNSSEC, Dynamic Zones, and Automatic Signing</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563485">Converting from insecure to secure</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563523">Dynamic DNS update method</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563627">Fully automatic zone signing</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563709">Private-type records</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563747">DNSKEY rollovers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563828">Dynamic DNS update method</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563861">Automatic key rollovers</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563888">NSEC3PARAM rollovers via UPDATE</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571816">Converting from NSEC to NSEC3</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571826">Converting from NSEC3 to NSEC</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571838">Converting from secure to insecure</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571876">Periodic re-signing</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572022">NSEC3 and OPTOUT</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606637">Converting from insecure to secure</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606675">Dynamic DNS update method</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563635">Fully automatic zone signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563785">Private-type records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563822">DNSKEY rollovers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563835">Dynamic DNS update method</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2563868">Automatic key rollovers</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571814">NSEC3PARAM rollovers via UPDATE</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571824">Converting from NSEC to NSEC3</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571833">Converting from NSEC3 to NSEC</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571846">Converting from secure to insecure</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571952">Periodic re-signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2571961">NSEC3 and OPTOUT</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#rfc5011.support">Dynamic Trust Anchor Management</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572075">Validating Resolver</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2605958">Authoritative Server</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572014">Validating Resolver</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572037">Authoritative Server</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch04.html#pkcs11">PKCS #11 (Cryptoki) support</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608598">Prerequisites</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607026">Building BIND 9 with PKCS#11</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607121">PKCS #11 Tools</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607152">Using the HSM</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2608784">Specifying the engine on the command line</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2609239">Running named with automatic zone re-signing</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2606899">Prerequisites</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607648">Building BIND 9 with PKCS#11</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607742">PKCS #11 Tools</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2607773">Using the HSM</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2634459">Specifying the engine on the command line</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2634505">Running named with automatic zone re-signing</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572468">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch04.html#id2572490">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572734">Address Lookups Using AAAA Records</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572756">Address to Name Lookups Using Nibble Format</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572757">Address Lookups Using AAAA Records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch04.html#id2572846">Address to Name Lookups Using Nibble Format</a></span></dt> </dl></dd> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch05.html">5. The <acronym class="acronym">BIND</acronym> 9 Lightweight Resolver</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572857">The Lightweight Resolver Library</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch05.html#id2572880">The Lightweight Resolver Library</a></span></dt> <dt><span class="sect1"><a href="Bv9ARM.ch05.html#lwresd">Running a Resolver Daemon</a></span></dt> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch06.html">6. <acronym class="acronym">BIND</acronym> 9 Configuration Reference</a></span></dt> @@ -157,58 +157,58 @@ <dt><span class="sect1"><a href="Bv9ARM.ch06.html#configuration_file_elements">Configuration File Elements</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#address_match_lists">Address Match Lists</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574267">Comment Syntax</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574290">Comment Syntax</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch06.html#Configuration_File_Grammar">Configuration File Grammar</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574921"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2574944"><span><strong class="command">acl</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#acl"><span><strong class="command">acl</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575111"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575133"><span><strong class="command">controls</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#controls_statement_definition_and_usage"><span><strong class="command">controls</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575402"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575419"><span><strong class="command">include</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575425"><span><strong class="command">include</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575442"><span><strong class="command">include</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575443"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575466"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575625"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575751"><span><strong class="command">logging</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575465"><span><strong class="command">key</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575489"><span><strong class="command">key</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575648"><span><strong class="command">logging</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2575842"><span><strong class="command">logging</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577886"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577960"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578024"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578068"><span><strong class="command">masters</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577841"><span><strong class="command">lwres</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2577982"><span><strong class="command">lwres</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578046"><span><strong class="command">masters</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578090"><span><strong class="command">masters</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578083"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2578105"><span><strong class="command">options</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#options"><span><strong class="command">options</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_grammar"><span><strong class="command">server</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_definition_and_usage"><span><strong class="command">server</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#statschannels"><span><strong class="command">statistics-channels</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588725"><span><strong class="command">statistics-channels</strong></span> Statement Definition and +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589072"><span><strong class="command">statistics-channels</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#trusted-keys"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2588933"><span><strong class="command">trusted-keys</strong></span> Statement Definition +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589348"><span><strong class="command">trusted-keys</strong></span> Statement Definition and Usage</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589048"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589395"><span><strong class="command">managed-keys</strong></span> Statement Grammar</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#managed-keys"><span><strong class="command">managed-keys</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#view_statement_grammar"><span><strong class="command">view</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589474"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2589820"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zone_statement_grammar"><span><strong class="command">zone</strong></span> Statement Grammar</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591047"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591297"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt> </dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2593802">Zone File</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2594629">Zone File</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them">Types of Resource Records and When to Use Them</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596101">Discussion of MX Records</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596791">Discussion of MX Records</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#Setting_TTLs">Setting TTLs</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596648">Inverse Mapping in IPv4</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2596775">Other Zone File Directives</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597048"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597338">Inverse Mapping in IPv4</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597533">Other Zone File Directives</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2597806"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch06.html#zonefile_format">Additional File Formats</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch06.html#statistics">BIND9 Statistics</a></span></dt> @@ -217,41 +217,41 @@ <dt><span class="chapter"><a href="Bv9ARM.ch07.html">7. <acronym class="acronym">BIND</acronym> 9 Security Considerations</a></span></dt> <dd><dl> <dt><span class="sect1"><a href="Bv9ARM.ch07.html#Access_Control_Lists">Access Control Lists</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2601700"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2602595"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2601917">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2601977">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602676">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2602736">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch07.html#dynamic_update_security">Dynamic Update Security</a></span></dt> </dl></dd> <dt><span class="chapter"><a href="Bv9ARM.ch08.html">8. Troubleshooting</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602057">Common Problems</a></span></dt> -<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2602062">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602074">Incrementing and Changing the Serial Number</a></span></dt> -<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602091">Where Can I Get Help?</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602884">Common Problems</a></span></dt> +<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2602889">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602901">Incrementing and Changing the Serial Number</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2602918">Where Can I Get Help?</a></span></dt> </dl></dd> <dt><span class="appendix"><a href="Bv9ARM.ch09.html">A. Appendices</a></span></dt> <dd><dl> -<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602290">Acknowledgments</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602980">Acknowledgments</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#historical_dns_information">A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></a></span></dt></dl></dd> -<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2602393">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt> +<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2603288">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt> <dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#ipv6addresses">IPv6 addresses (AAAA)</a></span></dt></dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bibliography">Bibliography (and Suggested Reading)</a></span></dt> <dd><dl> <dt><span class="sect2"><a href="Bv9ARM.ch09.html#rfcs">Request for Comments (RFCs)</a></span></dt> <dt><span class="sect2"><a href="Bv9ARM.ch09.html#internet_drafts">Internet Drafts</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2605673">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606432">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt> </dl></dd> <dt><span class="sect1"><a href="Bv9ARM.ch09.html#bind9.library">BIND 9 DNS Library Support</a></span></dt> <dd><dl> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606156">Prerequisite</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606166">Compilation</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2606190">Installation</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607177">Known Defects/Restrictions</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607254">The dns.conf File</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607281">Sample Applications</a></span></dt> -<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608049">Library References</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607529">Prerequisite</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607539">Compilation</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607563">Installation</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607799">Known Defects/Restrictions</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607876">The dns.conf File</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2607902">Sample Applications</a></span></dt> +<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2608944">Library References</a></span></dt> </dl></dd> </dl></dd> <dt><span class="reference"><a href="Bv9ARM.ch10.html">I. Manual pages</a></span></dt> diff --git a/doc/arm/Bv9ARM.pdf b/doc/arm/Bv9ARM.pdf index 231a0fb9..42ad02ae 100755 --- a/doc/arm/Bv9ARM.pdf +++ b/doc/arm/Bv9ARM.pdf @@ -804,573 +804,579 @@ endobj (6.2.16.19 Content Filtering) endobj 541 0 obj -<< /S /GoTo /D (subsection.6.2.17) >> +<< /S /GoTo /D (subsubsection.6.2.16.20) >> endobj 544 0 obj -(6.2.17 server Statement Grammar) +(6.2.16.20 Response Policy Zone \(RPZ\) Rewriting) endobj 545 0 obj -<< /S /GoTo /D (subsection.6.2.18) >> +<< /S /GoTo /D (subsection.6.2.17) >> endobj 548 0 obj -(6.2.18 server Statement Definition and Usage) +(6.2.17 server Statement Grammar) endobj 549 0 obj -<< /S /GoTo /D (subsection.6.2.19) >> +<< /S /GoTo /D (subsection.6.2.18) >> endobj 552 0 obj -(6.2.19 statistics-channels Statement Grammar) +(6.2.18 server Statement Definition and Usage) endobj 553 0 obj -<< /S /GoTo /D (subsection.6.2.20) >> +<< /S /GoTo /D (subsection.6.2.19) >> endobj 556 0 obj -(6.2.20 statistics-channels Statement Definition and Usage) +(6.2.19 statistics-channels Statement Grammar) endobj 557 0 obj -<< /S /GoTo /D (subsection.6.2.21) >> +<< /S /GoTo /D (subsection.6.2.20) >> endobj 560 0 obj -(6.2.21 trusted-keys Statement Grammar) +(6.2.20 statistics-channels Statement Definition and Usage) endobj 561 0 obj -<< /S /GoTo /D (subsection.6.2.22) >> +<< /S /GoTo /D (subsection.6.2.21) >> endobj 564 0 obj -(6.2.22 trusted-keys Statement Definition and Usage) +(6.2.21 trusted-keys Statement Grammar) endobj 565 0 obj -<< /S /GoTo /D (subsection.6.2.23) >> +<< /S /GoTo /D (subsection.6.2.22) >> endobj 568 0 obj -(6.2.23 managed-keys Statement Grammar) +(6.2.22 trusted-keys Statement Definition and Usage) endobj 569 0 obj -<< /S /GoTo /D (subsection.6.2.24) >> +<< /S /GoTo /D (subsection.6.2.23) >> endobj 572 0 obj -(6.2.24 managed-keys Statement Definition and Usage) +(6.2.23 managed-keys Statement Grammar) endobj 573 0 obj -<< /S /GoTo /D (subsection.6.2.25) >> +<< /S /GoTo /D (subsection.6.2.24) >> endobj 576 0 obj -(6.2.25 view Statement Grammar) +(6.2.24 managed-keys Statement Definition and Usage) endobj 577 0 obj -<< /S /GoTo /D (subsection.6.2.26) >> +<< /S /GoTo /D (subsection.6.2.25) >> endobj 580 0 obj -(6.2.26 view Statement Definition and Usage) +(6.2.25 view Statement Grammar) endobj 581 0 obj -<< /S /GoTo /D (subsection.6.2.27) >> +<< /S /GoTo /D (subsection.6.2.26) >> endobj 584 0 obj -(6.2.27 zone Statement Grammar) +(6.2.26 view Statement Definition and Usage) endobj 585 0 obj -<< /S /GoTo /D (subsection.6.2.28) >> +<< /S /GoTo /D (subsection.6.2.27) >> endobj 588 0 obj -(6.2.28 zone Statement Definition and Usage) +(6.2.27 zone Statement Grammar) endobj 589 0 obj -<< /S /GoTo /D (subsubsection.6.2.28.1) >> +<< /S /GoTo /D (subsection.6.2.28) >> endobj 592 0 obj -(6.2.28.1 Zone Types) +(6.2.28 zone Statement Definition and Usage) endobj 593 0 obj -<< /S /GoTo /D (subsubsection.6.2.28.2) >> +<< /S /GoTo /D (subsubsection.6.2.28.1) >> endobj 596 0 obj -(6.2.28.2 Class) +(6.2.28.1 Zone Types) endobj 597 0 obj -<< /S /GoTo /D (subsubsection.6.2.28.3) >> +<< /S /GoTo /D (subsubsection.6.2.28.2) >> endobj 600 0 obj -(6.2.28.3 Zone Options) +(6.2.28.2 Class) endobj 601 0 obj -<< /S /GoTo /D (subsubsection.6.2.28.4) >> +<< /S /GoTo /D (subsubsection.6.2.28.3) >> endobj 604 0 obj -(6.2.28.4 Dynamic Update Policies) +(6.2.28.3 Zone Options) endobj 605 0 obj -<< /S /GoTo /D (section.6.3) >> +<< /S /GoTo /D (subsubsection.6.2.28.4) >> endobj 608 0 obj -(6.3 Zone File) +(6.2.28.4 Dynamic Update Policies) endobj 609 0 obj -<< /S /GoTo /D (subsection.6.3.1) >> +<< /S /GoTo /D (section.6.3) >> endobj 612 0 obj -(6.3.1 Types of Resource Records and When to Use Them) +(6.3 Zone File) endobj 613 0 obj -<< /S /GoTo /D (subsubsection.6.3.1.1) >> +<< /S /GoTo /D (subsection.6.3.1) >> endobj 616 0 obj -(6.3.1.1 Resource Records) +(6.3.1 Types of Resource Records and When to Use Them) endobj 617 0 obj -<< /S /GoTo /D (subsubsection.6.3.1.2) >> +<< /S /GoTo /D (subsubsection.6.3.1.1) >> endobj 620 0 obj -(6.3.1.2 Textual expression of RRs) +(6.3.1.1 Resource Records) endobj 621 0 obj -<< /S /GoTo /D (subsection.6.3.2) >> +<< /S /GoTo /D (subsubsection.6.3.1.2) >> endobj 624 0 obj -(6.3.2 Discussion of MX Records) +(6.3.1.2 Textual expression of RRs) endobj 625 0 obj -<< /S /GoTo /D (subsection.6.3.3) >> +<< /S /GoTo /D (subsection.6.3.2) >> endobj 628 0 obj -(6.3.3 Setting TTLs) +(6.3.2 Discussion of MX Records) endobj 629 0 obj -<< /S /GoTo /D (subsection.6.3.4) >> +<< /S /GoTo /D (subsection.6.3.3) >> endobj 632 0 obj -(6.3.4 Inverse Mapping in IPv4) +(6.3.3 Setting TTLs) endobj 633 0 obj -<< /S /GoTo /D (subsection.6.3.5) >> +<< /S /GoTo /D (subsection.6.3.4) >> endobj 636 0 obj -(6.3.5 Other Zone File Directives) +(6.3.4 Inverse Mapping in IPv4) endobj 637 0 obj -<< /S /GoTo /D (subsubsection.6.3.5.1) >> +<< /S /GoTo /D (subsection.6.3.5) >> endobj 640 0 obj -(6.3.5.1 The @ \(at-sign\)) +(6.3.5 Other Zone File Directives) endobj 641 0 obj -<< /S /GoTo /D (subsubsection.6.3.5.2) >> +<< /S /GoTo /D (subsubsection.6.3.5.1) >> endobj 644 0 obj -(6.3.5.2 The \044ORIGIN Directive) +(6.3.5.1 The @ \(at-sign\)) endobj 645 0 obj -<< /S /GoTo /D (subsubsection.6.3.5.3) >> +<< /S /GoTo /D (subsubsection.6.3.5.2) >> endobj 648 0 obj -(6.3.5.3 The \044INCLUDE Directive) +(6.3.5.2 The \044ORIGIN Directive) endobj 649 0 obj -<< /S /GoTo /D (subsubsection.6.3.5.4) >> +<< /S /GoTo /D (subsubsection.6.3.5.3) >> endobj 652 0 obj -(6.3.5.4 The \044TTL Directive) +(6.3.5.3 The \044INCLUDE Directive) endobj 653 0 obj -<< /S /GoTo /D (subsection.6.3.6) >> +<< /S /GoTo /D (subsubsection.6.3.5.4) >> endobj 656 0 obj -(6.3.6 BIND Master File Extension: the \044GENERATE Directive) +(6.3.5.4 The \044TTL Directive) endobj 657 0 obj -<< /S /GoTo /D (subsection.6.3.7) >> +<< /S /GoTo /D (subsection.6.3.6) >> endobj 660 0 obj -(6.3.7 Additional File Formats) +(6.3.6 BIND Master File Extension: the \044GENERATE Directive) endobj 661 0 obj -<< /S /GoTo /D (section.6.4) >> +<< /S /GoTo /D (subsection.6.3.7) >> endobj 664 0 obj -(6.4 BIND9 Statistics) +(6.3.7 Additional File Formats) endobj 665 0 obj -<< /S /GoTo /D (subsubsection.6.4.0.1) >> +<< /S /GoTo /D (section.6.4) >> endobj 668 0 obj -(6.4.0.1 The Statistics File) +(6.4 BIND9 Statistics) endobj 669 0 obj -<< /S /GoTo /D (subsection.6.4.1) >> +<< /S /GoTo /D (subsubsection.6.4.0.1) >> endobj 672 0 obj -(6.4.1 Statistics Counters) +(6.4.0.1 The Statistics File) endobj 673 0 obj -<< /S /GoTo /D (subsubsection.6.4.1.1) >> +<< /S /GoTo /D (subsection.6.4.1) >> endobj 676 0 obj -(6.4.1.1 Name Server Statistics Counters) +(6.4.1 Statistics Counters) endobj 677 0 obj -<< /S /GoTo /D (subsubsection.6.4.1.2) >> +<< /S /GoTo /D (subsubsection.6.4.1.1) >> endobj 680 0 obj -(6.4.1.2 Zone Maintenance Statistics Counters) +(6.4.1.1 Name Server Statistics Counters) endobj 681 0 obj -<< /S /GoTo /D (subsubsection.6.4.1.3) >> +<< /S /GoTo /D (subsubsection.6.4.1.2) >> endobj 684 0 obj -(6.4.1.3 Resolver Statistics Counters) +(6.4.1.2 Zone Maintenance Statistics Counters) endobj 685 0 obj -<< /S /GoTo /D (subsubsection.6.4.1.4) >> +<< /S /GoTo /D (subsubsection.6.4.1.3) >> endobj 688 0 obj -(6.4.1.4 Socket I/O Statistics Counters) +(6.4.1.3 Resolver Statistics Counters) endobj 689 0 obj -<< /S /GoTo /D (subsubsection.6.4.1.5) >> +<< /S /GoTo /D (subsubsection.6.4.1.4) >> endobj 692 0 obj -(6.4.1.5 Compatibility with BIND 8 Counters) +(6.4.1.4 Socket I/O Statistics Counters) endobj 693 0 obj -<< /S /GoTo /D (chapter.7) >> +<< /S /GoTo /D (subsubsection.6.4.1.5) >> endobj 696 0 obj -(7 BIND 9 Security Considerations) +(6.4.1.5 Compatibility with BIND 8 Counters) endobj 697 0 obj -<< /S /GoTo /D (section.7.1) >> +<< /S /GoTo /D (chapter.7) >> endobj 700 0 obj -(7.1 Access Control Lists) +(7 BIND 9 Security Considerations) endobj 701 0 obj -<< /S /GoTo /D (section.7.2) >> +<< /S /GoTo /D (section.7.1) >> endobj 704 0 obj -(7.2 Chroot and Setuid) +(7.1 Access Control Lists) endobj 705 0 obj -<< /S /GoTo /D (subsection.7.2.1) >> +<< /S /GoTo /D (section.7.2) >> endobj 708 0 obj -(7.2.1 The chroot Environment) +(7.2 Chroot and Setuid) endobj 709 0 obj -<< /S /GoTo /D (subsection.7.2.2) >> +<< /S /GoTo /D (subsection.7.2.1) >> endobj 712 0 obj -(7.2.2 Using the setuid Function) +(7.2.1 The chroot Environment) endobj 713 0 obj -<< /S /GoTo /D (section.7.3) >> +<< /S /GoTo /D (subsection.7.2.2) >> endobj 716 0 obj -(7.3 Dynamic Update Security) +(7.2.2 Using the setuid Function) endobj 717 0 obj -<< /S /GoTo /D (chapter.8) >> +<< /S /GoTo /D (section.7.3) >> endobj 720 0 obj -(8 Troubleshooting) +(7.3 Dynamic Update Security) endobj 721 0 obj -<< /S /GoTo /D (section.8.1) >> +<< /S /GoTo /D (chapter.8) >> endobj 724 0 obj -(8.1 Common Problems) +(8 Troubleshooting) endobj 725 0 obj -<< /S /GoTo /D (subsection.8.1.1) >> +<< /S /GoTo /D (section.8.1) >> endobj 728 0 obj -(8.1.1 It's not working; how can I figure out what's wrong?) +(8.1 Common Problems) endobj 729 0 obj -<< /S /GoTo /D (section.8.2) >> +<< /S /GoTo /D (subsection.8.1.1) >> endobj 732 0 obj -(8.2 Incrementing and Changing the Serial Number) +(8.1.1 It's not working; how can I figure out what's wrong?) endobj 733 0 obj -<< /S /GoTo /D (section.8.3) >> +<< /S /GoTo /D (section.8.2) >> endobj 736 0 obj -(8.3 Where Can I Get Help?) +(8.2 Incrementing and Changing the Serial Number) endobj 737 0 obj -<< /S /GoTo /D (appendix.A) >> +<< /S /GoTo /D (section.8.3) >> endobj 740 0 obj -(A Appendices) +(8.3 Where Can I Get Help?) endobj 741 0 obj -<< /S /GoTo /D (section.A.1) >> +<< /S /GoTo /D (appendix.A) >> endobj 744 0 obj -(A.1 Acknowledgments) +(A Appendices) endobj 745 0 obj -<< /S /GoTo /D (subsection.A.1.1) >> +<< /S /GoTo /D (section.A.1) >> endobj 748 0 obj -(A.1.1 A Brief History of the DNS and BIND) +(A.1 Acknowledgments) endobj 749 0 obj -<< /S /GoTo /D (section.A.2) >> +<< /S /GoTo /D (subsection.A.1.1) >> endobj 752 0 obj -(A.2 General DNS Reference Information) +(A.1.1 A Brief History of the DNS and BIND) endobj 753 0 obj -<< /S /GoTo /D (subsection.A.2.1) >> +<< /S /GoTo /D (section.A.2) >> endobj 756 0 obj -(A.2.1 IPv6 addresses \(AAAA\)) +(A.2 General DNS Reference Information) endobj 757 0 obj -<< /S /GoTo /D (section.A.3) >> +<< /S /GoTo /D (subsection.A.2.1) >> endobj 760 0 obj -(A.3 Bibliography \(and Suggested Reading\)) +(A.2.1 IPv6 addresses \(AAAA\)) endobj 761 0 obj -<< /S /GoTo /D (subsection.A.3.1) >> +<< /S /GoTo /D (section.A.3) >> endobj 764 0 obj -(A.3.1 Request for Comments \(RFCs\)) +(A.3 Bibliography \(and Suggested Reading\)) endobj 765 0 obj -<< /S /GoTo /D (subsection.A.3.2) >> +<< /S /GoTo /D (subsection.A.3.1) >> endobj 768 0 obj -(A.3.2 Internet Drafts) +(A.3.1 Request for Comments \(RFCs\)) endobj 769 0 obj -<< /S /GoTo /D (subsection.A.3.3) >> +<< /S /GoTo /D (subsection.A.3.2) >> endobj 772 0 obj -(A.3.3 Other Documents About BIND) +(A.3.2 Internet Drafts) endobj 773 0 obj -<< /S /GoTo /D (section.A.4) >> +<< /S /GoTo /D (subsection.A.3.3) >> endobj 776 0 obj -(A.4 BIND 9 DNS Library Support) +(A.3.3 Other Documents About BIND) endobj 777 0 obj -<< /S /GoTo /D (subsection.A.4.1) >> +<< /S /GoTo /D (section.A.4) >> endobj 780 0 obj -(A.4.1 Prerequisite) +(A.4 BIND 9 DNS Library Support) endobj 781 0 obj -<< /S /GoTo /D (subsection.A.4.2) >> +<< /S /GoTo /D (subsection.A.4.1) >> endobj 784 0 obj -(A.4.2 Compilation) +(A.4.1 Prerequisite) endobj 785 0 obj -<< /S /GoTo /D (subsection.A.4.3) >> +<< /S /GoTo /D (subsection.A.4.2) >> endobj 788 0 obj -(A.4.3 Installation) +(A.4.2 Compilation) endobj 789 0 obj -<< /S /GoTo /D (subsection.A.4.4) >> +<< /S /GoTo /D (subsection.A.4.3) >> endobj 792 0 obj -(A.4.4 Known Defects/Restrictions) +(A.4.3 Installation) endobj 793 0 obj -<< /S /GoTo /D (subsection.A.4.5) >> +<< /S /GoTo /D (subsection.A.4.4) >> endobj 796 0 obj -(A.4.5 The dns.conf File) +(A.4.4 Known Defects/Restrictions) endobj 797 0 obj -<< /S /GoTo /D (subsection.A.4.6) >> +<< /S /GoTo /D (subsection.A.4.5) >> endobj 800 0 obj -(A.4.6 Sample Applications) +(A.4.5 The dns.conf File) endobj 801 0 obj -<< /S /GoTo /D (subsubsection.A.4.6.1) >> +<< /S /GoTo /D (subsection.A.4.6) >> endobj 804 0 obj -(A.4.6.1 sample: a simple stub resolver utility) +(A.4.6 Sample Applications) endobj 805 0 obj -<< /S /GoTo /D (subsubsection.A.4.6.2) >> +<< /S /GoTo /D (subsubsection.A.4.6.1) >> endobj 808 0 obj -(A.4.6.2 sample-async: a simple stub resolver, working asynchronously) +(A.4.6.1 sample: a simple stub resolver utility) endobj 809 0 obj -<< /S /GoTo /D (subsubsection.A.4.6.3) >> +<< /S /GoTo /D (subsubsection.A.4.6.2) >> endobj 812 0 obj -(A.4.6.3 sample-request: a simple DNS transaction client) +(A.4.6.2 sample-async: a simple stub resolver, working asynchronously) endobj 813 0 obj -<< /S /GoTo /D (subsubsection.A.4.6.4) >> +<< /S /GoTo /D (subsubsection.A.4.6.3) >> endobj 816 0 obj -(A.4.6.4 sample-gai: getaddrinfo\(\) and getnameinfo\(\) test code) +(A.4.6.3 sample-request: a simple DNS transaction client) endobj 817 0 obj -<< /S /GoTo /D (subsubsection.A.4.6.5) >> +<< /S /GoTo /D (subsubsection.A.4.6.4) >> endobj 820 0 obj -(A.4.6.5 sample-update: a simple dynamic update client program) +(A.4.6.4 sample-gai: getaddrinfo\(\) and getnameinfo\(\) test code) endobj 821 0 obj -<< /S /GoTo /D (subsubsection.A.4.6.6) >> +<< /S /GoTo /D (subsubsection.A.4.6.5) >> endobj 824 0 obj -(A.4.6.6 nsprobe: domain/name server checker in terms of RFC 4074) +(A.4.6.5 sample-update: a simple dynamic update client program) endobj 825 0 obj -<< /S /GoTo /D (subsection.A.4.7) >> +<< /S /GoTo /D (subsubsection.A.4.6.6) >> endobj 828 0 obj -(A.4.7 Library References) +(A.4.6.6 nsprobe: domain/name server checker in terms of RFC 4074) endobj 829 0 obj -<< /S /GoTo /D (appendix.B) >> +<< /S /GoTo /D (subsection.A.4.7) >> endobj 832 0 obj -(B Manual pages) +(A.4.7 Library References) endobj 833 0 obj -<< /S /GoTo /D (section.B.1) >> +<< /S /GoTo /D (appendix.B) >> endobj 836 0 obj -(B.1 dig) +(B Manual pages) endobj 837 0 obj -<< /S /GoTo /D (section.B.2) >> +<< /S /GoTo /D (section.B.1) >> endobj 840 0 obj -(B.2 host) +(B.1 dig) endobj 841 0 obj -<< /S /GoTo /D (section.B.3) >> +<< /S /GoTo /D (section.B.2) >> endobj 844 0 obj -(B.3 dnssec-dsfromkey) +(B.2 host) endobj 845 0 obj -<< /S /GoTo /D (section.B.4) >> +<< /S /GoTo /D (section.B.3) >> endobj 848 0 obj -(B.4 dnssec-keyfromlabel) +(B.3 dnssec-dsfromkey) endobj 849 0 obj -<< /S /GoTo /D (section.B.5) >> +<< /S /GoTo /D (section.B.4) >> endobj 852 0 obj -(B.5 dnssec-keygen) +(B.4 dnssec-keyfromlabel) endobj 853 0 obj -<< /S /GoTo /D (section.B.6) >> +<< /S /GoTo /D (section.B.5) >> endobj 856 0 obj -(B.6 dnssec-revoke) +(B.5 dnssec-keygen) endobj 857 0 obj -<< /S /GoTo /D (section.B.7) >> +<< /S /GoTo /D (section.B.6) >> endobj 860 0 obj -(B.7 dnssec-settime) +(B.6 dnssec-revoke) endobj 861 0 obj -<< /S /GoTo /D (section.B.8) >> +<< /S /GoTo /D (section.B.7) >> endobj 864 0 obj -(B.8 dnssec-signzone) +(B.7 dnssec-settime) endobj 865 0 obj -<< /S /GoTo /D (section.B.9) >> +<< /S /GoTo /D (section.B.8) >> endobj 868 0 obj -(B.9 named-checkconf) +(B.8 dnssec-signzone) endobj 869 0 obj -<< /S /GoTo /D (section.B.10) >> +<< /S /GoTo /D (section.B.9) >> endobj 872 0 obj -(B.10 named-checkzone) +(B.9 named-checkconf) endobj 873 0 obj -<< /S /GoTo /D (section.B.11) >> +<< /S /GoTo /D (section.B.10) >> endobj 876 0 obj -(B.11 named) +(B.10 named-checkzone) endobj 877 0 obj -<< /S /GoTo /D (section.B.12) >> +<< /S /GoTo /D (section.B.11) >> endobj 880 0 obj -(B.12 named-journalprint) +(B.11 named) endobj 881 0 obj -<< /S /GoTo /D (section.B.13) >> +<< /S /GoTo /D (section.B.12) >> endobj 884 0 obj -(B.13 nsupdate) +(B.12 named-journalprint) endobj 885 0 obj -<< /S /GoTo /D (section.B.14) >> +<< /S /GoTo /D (section.B.13) >> endobj 888 0 obj -(B.14 rndc) +(B.13 nsupdate) endobj 889 0 obj -<< /S /GoTo /D (section.B.15) >> +<< /S /GoTo /D (section.B.14) >> endobj 892 0 obj -(B.15 rndc.conf) +(B.14 rndc) endobj 893 0 obj -<< /S /GoTo /D (section.B.16) >> +<< /S /GoTo /D (section.B.15) >> endobj 896 0 obj -(B.16 rndc-confgen) +(B.15 rndc.conf) endobj 897 0 obj -<< /S /GoTo /D (section.B.17) >> +<< /S /GoTo /D (section.B.16) >> endobj 900 0 obj -(B.17 ddns-confgen) +(B.16 rndc-confgen) endobj 901 0 obj -<< /S /GoTo /D (section.B.18) >> +<< /S /GoTo /D (section.B.17) >> endobj 904 0 obj -(B.18 arpaname) +(B.17 ddns-confgen) endobj 905 0 obj -<< /S /GoTo /D (section.B.19) >> +<< /S /GoTo /D (section.B.18) >> endobj 908 0 obj -(B.19 genrandom) +(B.18 arpaname) endobj 909 0 obj -<< /S /GoTo /D (section.B.20) >> +<< /S /GoTo /D (section.B.19) >> endobj 912 0 obj -(B.20 isc-hmac-fixup) +(B.19 genrandom) endobj 913 0 obj -<< /S /GoTo /D (section.B.21) >> +<< /S /GoTo /D (section.B.20) >> endobj 916 0 obj -(B.21 nsec3hash) +(B.20 isc-hmac-fixup) endobj 917 0 obj -<< /S /GoTo /D [918 0 R /FitH ] >> +<< /S /GoTo /D (section.B.21) >> endobj -921 0 obj << +920 0 obj +(B.21 nsec3hash) +endobj +921 0 obj +<< /S /GoTo /D [922 0 R /FitH ] >> +endobj +925 0 obj << /Length 240 /Filter /FlateDecode >> @@ -1378,32 +1384,32 @@ stream xÚ•OKAÅïó)rl›N2Éü9ZªRA¡27ñ°´[)¸[ºÖïïlWË‚^$0ïý˜y[Š *Z—BTK ÛÖXx+Þ½¡oFÔ¡Šsåð‡[ LÁ+T\@1M±_8±Eo=C¥BÈÌ~À—Ù,CyÄŠƒÂ•Ë»—Ùrý´š——ì,ãf׺Ãǹ¯ÏÇ~”ž›}Ó7ݶ™¿æ a$/¾äKc¼\óXwŸõûà›Û|
§â1'p®äðqH'`Ôð3‹zšüßÚ±y±n VG³1°™ž07l(%tî[þM^Xúendstream endobj -918 0 obj << +922 0 obj << /Type /Page -/Contents 921 0 R -/Resources 920 0 R +/Contents 925 0 R +/Resources 924 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 927 0 R +/Parent 931 0 R >> endobj -919 0 obj << +923 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./isc-logo.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 928 0 R +/PTEX.InfoDict 932 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 612.00000000 792.00000000] /PieceInfo << -/Illustrator 929 0 R +/Illustrator 933 0 R >> /Resources << /ColorSpace << -/CS0 930 0 R +/CS0 934 0 R >>/Properties << -/MC0 931 0 R +/MC0 935 0 R >>/ExtGState << -/GS0 932 0 R +/GS0 936 0 R >>>> /Length 843 /Filter /FlateDecode @@ -1419,7 +1425,7 @@ BqÕ•l9uš !=§ ¨Œø†vGc £I#/'~<1‚ÀÔRPy±´ýl1½Í¶w1 чd
}¡þa Ë9b :žÎÞF"‹>64”~0IGD˜Ëذ$ÙtMâ¯%Z½Gð¾¥Úñ§aÑÌ‘I¼ý—/øýzü+À endobj -928 0 obj +932 0 obj << /CreationDate (D:20100303120319-08'00') /Creator (Adobe Illustrator CS3) @@ -1428,24 +1434,24 @@ endobj /Title (ISC_logo_only_RGB) >> endobj -929 0 obj +933 0 obj << -/Private 933 0 R +/Private 937 0 R /LastModified (D:20100412113400-07'00') >> endobj -930 0 obj -[/ICCBased 934 0 R] +934 0 obj +[/ICCBased 938 0 R] endobj -931 0 obj +935 0 obj << -/Intent 935 0 R -/Usage 936 0 R +/Intent 939 0 R +/Usage 940 0 R /Name (Layer 1) /Type /OCG >> endobj -932 0 obj +936 0 obj << /OPM 1 /BM /Normal @@ -1459,22 +1465,22 @@ endobj /SA true >> endobj -933 0 obj +937 0 obj << /RoundtripVersion 13 /ContainerVersion 11 /CreatorVersion 13 -/AIMetaData 937 0 R -/AIPrivateData1 938 0 R -/AIPrivateData2 939 0 R -/AIPrivateData3 940 0 R -/AIPrivateData4 941 0 R -/AIPrivateData5 942 0 R +/AIMetaData 941 0 R +/AIPrivateData1 942 0 R +/AIPrivateData2 943 0 R +/AIPrivateData3 944 0 R +/AIPrivateData4 945 0 R +/AIPrivateData5 946 0 R /NumBlock 5 /RoundtripStreamType 1 >> endobj -934 0 obj +938 0 obj << /Length 281 /Filter /FlateDecode @@ -1485,10 +1491,10 @@ H‰b``2ptqre``ÈÍ+) rwRˆˆŒR`?ÏÀÆÀÌ ò‹KRS€j!îAˆBPˆi endobj -935 0 obj +939 0 obj [/View/Design] endobj -936 0 obj +940 0 obj << /CreatorInfo << /Subtype /Artwork @@ -1496,21 +1502,21 @@ endobj >> >> endobj -937 0 obj +941 0 obj << /Length 981 >> stream %!PS-Adobe-3.0
%%Creator: Adobe Illustrator(R) 13.0
%%AI8_CreatorVersion: 13.0.2
%%For: (Brian Reid) ()
%%Title: (ISC_logo_only_RGB.ai)
%%CreationDate: 4/12/10 11:34 AM
%%BoundingBox: 247 367 366 413
%%HiResBoundingBox: 247.0869 367.5654 365.0859 412.583
%%DocumentProcessColors: Cyan Magenta Yellow Black
%AI5_FileFormat 9.0
%AI12_BuildNumber: 434
%AI3_ColorUsage: Color
%AI7_ImageSettings: 0
%%RGBProcessColor: 0 0.658824 0.8 (ISC logo blue)
%%+ 0.372549 0.376471 0.384314 (PANTONE 425 U)
%%+ 0 0 0 ([Registration])
%AI3_TemplateBox: 306.5 395.5 306.5 395.5
%AI3_TileBox: 18 33.1201 594 786.96
%AI3_DocumentPreview: None
%AI5_ArtSize: 612 792
%AI5_RulerUnits: 3
%AI9_ColorModel: 1
%AI5_ArtFlags: 0 0 0 1 0 0 0 0 0
%AI5_TargetResolution: 800
%AI5_NumLayers: 1
%AI9_OpenToView: -381 793 0.92 1268 743 26 0 0 117 75 0 0 1 1 1 0 1
%AI5_OpenViewLayers: 7
%%PageOrigin:0 0
%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
%AI9_Flatten: 1
%AI12_CMSettings: 00.MS
%%EndComments
endstream endobj -938 0 obj +942 0 obj << /Length 11082 >> stream %%BoundingBox: 247 367 366 413
%%HiResBoundingBox: 247.0869 367.5654 365.0859 412.583
%AI7_Thumbnail: 128 52 8
%%BeginData: 10932 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FD1F52285252A8FD04FFFD05A8FFFFFFA87DFD4F52285252522852
%525228525252285252522852525228525252285252522852277DA8FFFFA8
%7D7D525227FD04527DA8FFFFA85252275252522852525228525252285252
%522852525228525252285252522852525228525252285252522852525228
%52525228525252285252522852525228525252285252522852525228FD21
%52A8FFFF7D7D525227FD0752275252A8FFFF7DFD215227FD2A522E522752
%2E5227522E5227522E5227522E5227522E5227522E5227527DFFFFA85252
%27522E5227522E5227522E5227522752A8FF7D5227522E5227522E522752
%2E5227522E5227522E5227522E5227522E522752277D7D7D275227522E52
%27522E5227522E5227522E5227522E5227522E5227522E5227522E522752
%2E5227FD1A52277DA8FFA87D2EFD11522E527DFFA853FD1D52A8FFFFFF7D
%28FD285228525252285252522852525228525252285252522852277DFFFF
%7D522752525228525252285252522852525228525252275252FFA8522752
%285252522852525228525252285252522852525228525252277DFFA852A8
%FF5227525252285252522852525228525252285252522852525228525252
%285252522852525228FD1852277DFFFFFD1B52FFA8FD1A527DFFA8275252
%FF7DFD265227522E5227522E5227522E5227522E5227522E522752277DFF
%FF525227522E5227522E5227522E5227522E5227522E5227522E52275252
%FFA852275227522E5227522E5227522E5227522E5227522E522752A8A827
%522E527DA9275227522E5227522E5227522E5227522E5227522E52275227
%5227522E5227522E5227522EFD17527DFFA8FD1E527DFFA8FD17527DFFFD
%0452287DFFFD155228FD075228FD08522852525228525252285252522852
%5252285252522852527D2752525228525252285252522852525228525252
%2852525228525252285252527DFF7D522852525228525252285252522852
%525228FD0452FF7D5228FD0452FF52522852525228525252285252522752
%2752527DA1A8A8FFCACFA8CAA17D5252275228FD3C52A8FFFD145228A8FF
%53FD0652FFA82EFD0C527D7DCAFD04FFAFAF85AF85AFAFFFFFFFA87DFD05
%522E5227522E5227522E5227522E5227522E5227522E5227522E5227522E
%5227522E5227522E5227522E5227522E5227522E5227522E5227522752A8
%FF275227522E5227522E5227522E5227522E522752FFA827522E5227522E
%FF7D522E5227522E522752275252A8FFFFAFAF603CFD041413FD04143C60
%AFFFFF535227FD3A52277DFFA827FD11527DFFFD0852A8FFFD0952A8CFFF
%FFAF3C3D1414141A141A141A141A141A14141461AFFFA8FD045228525252
%285252522852525228525252285252522852525228525252285252522852
%5252285252522852525228525252285252522852525227A8FF5227525252
%2852525228525252285252522EFFA85227525252285228A87D5252522852
%27527DFFFFAF603CFD07141A1414141A1414141AFD041460FFA8FD3D52FF
%A8FD10527DFF7DFD0F527DFFFFA9611414141A141A141A141A141A141A14
%1A141A141A141A14143CFFA827522E5227522E5227522E5227522E522752
%2E5227522E5227522E5227522E5227522E5227522E5227522E5227522E52
%27522E5227522E5227522E527DFF525227522E5227522E5227522E522752
%A8FF27522E5227522E5227522852275252A8FFFF3C1413FD191436FFFD3C
%5259FFA828FD0E52FF7DFD0D527DFFFF8B1414141A141A141A141A141A14
%1A141A141A141A141A141A141A141A141460285252522852525228525252
%285252522852525228525252275227522752275227525252285252522852
%52522852525228525252285252522852525227A8FF7D2752525228525252
%2852525227A8FF52275252522852525228522752A8FFA93CFD05141A1414
%141A1414141A1414141A1414141A1414141A1414141A1414FD1552285252
%7D527D597D527DFD065227FD1852FFA8FD0D52FFFFFD0A52277DFFFF601A
%141A141A141A141A141A141A141A141A141A141A141A141A141A141A141A
%141A142E5227522E5227522E5227522E5227522752527D7DA8A8FD09FFA8
%FFA8A87D532852275227522E5227522E5227522E5227522E5227522E527D
%FF525227522E5227522E52275252FF7D522E5227522E522752277DFFFF36
%FD2314FD0E527D7DFD07FFA8A87DA87DA87DFD04A8FD05FFA87DFD15527D
%FFA827FD0A52A8FF7DFD0952A8FFAF1414141A141A141A141A141A141A14
%1A141A141A141A141A141A141A141A141A141A141A145252285252522852
%525227527DA8FFFFFFA87D7D52522752275227522752275227522752527D
%A8FFFFFFA87E52522752525228525252285252522852525227A8FF522752
%5252285252522752FFA8275252522852525227A8FF85FD05141A1414141A
%1414141A1414141A1414141A1414141A1414141A1414141A1414141AFD07
%52275253A8FFFFFFA8FD045227FD0F522EFD04527D7DFFFFFFA87DFD1052
%7DFF7DFD0A52FF7DFD0852A8FF8B1414141A141A141A141A141A141A141A
%141A141A141A141A141A141A141A141A141A141A141A1427522E52275227
%7DA8FFFFA85252275227522E5227522E5227522E5227522E5227522E5227
%522E52275227527DFFFFFF7D52275227522E5227522E5227522752A8A827
%5227522E52275227A8FF5227522752525227A8FF6113FD2714FD0652A8FF
%FF7D7D28FD22527DA8FFFF7DFD0C5227A8FF7DFD0852A8FFFD06522EA8FF
%61141A141A141A141A141A141A141A141A141A141A141A141A141A141A14
%1A141A141A141A141A141A14285227527DFFFF7D52522752285252522852
%525228525252285252522852525228525252285252522852525228522752
%52FFFFA8525228522852525228FD0452FF7D5228525252285252FF7D5252
%52285227A8FF611414141A1414141A1414141A1414141A1414141A141414
%1A1414141A1414141A1414141A1414141A141452277DFFFFA87D28FD2952
%287DFFFF7EFD0B52A8FFFD065227A8FF7D2752525227A8FF8B141A141A14
%1A141A141A141A141A141A141A141A141A141A141A141A141A141A141A14
%1A141A141A141A1428A8FFFF525227522E5227522E5227522E5227522E52
%27522E5227522E5227522E5227522E5227522E5227522E5227522E522752
%7DFFA87D275227522E522752277EFF52275227522852A8FF52522752277D
%FF8BFD121413FD0F1413FD0914FFFFA8FD3352FFFFA8FD0952FF7DFD0652
%FFA8FD04527DFFAF141A141A141A141A141A141A141A141A141A14613C3C
%141A141A141A141A141A141A143D3C3C141A141A141A14FF7D2752525228
%525252285252522852525228525252285252522852525228525252285252
%522852525228525252285252522852525227A8FFA8FD045228525252A8A8
%27522852277DFF7D27522752A8FFFD051461A9AF848B1414141A141436AF
%AFFFFFFFAFAF36FD04141A14141461A9FFAFFFAFAF601A1414141A7D2EFD
%3552277DFFFFFD0752A8FFFD05527DFFFD04527DFF3C14141A141484FFFF
%FFAF1A141A141A85FD09FF841A141A141A14AFFD08FF841A141A1427522E
%5227522E5227522E5227522E5227522E5227522E5227522E5227522E5227
%522E5227522E5227522E5227522E5227522E5227522E52277DA8FF52522E
%5227527DFF52522E5227FFA852275252FF60FD061485FFFFFFAFFD041460
%FD0BFF36FD0414AFFD0AFF60141414FD3A5253FFFF7DFD04527DFFA85252
%527DFFA8285252FFAF1A141A141A141A84FFFFFFAF3D141A14FD05FF603D
%60FD04FFAF141A1461FD04FFA96136AFFD04FF141A142852525228525252
%285252522852525228525252285252522852525228525252285252522852
%52522852525228525252285252522852525228522752A8FF5252285252FF
%A8FD0452FF7D5227A8FF3C141AFD051485FFFFFFAF14141460FD04FF3614
%141460FFFFFFA91A141484FFFFFFA91A141414FD04FF611414FD3D52A8FF
%FD0452A8FF525228A8FF7D277DFF8B141A141A141A141A85FFFFFFAF1A14
%1A60FD04FF3C141A1461FD04FF141A14FD04FF8B141A141AAFFFFFFF601A
%142E5227522E5227522E5227522E5227522E5227522E5227522E5227522E
%5227522E5227522E5227522E5227522E5227522E5227522E5227522E5227
%522752A8FF5252277DFF7D2752A8FF2752A8FFFD08141385FFFFFFAF1414
%1361FD04FF36FD04148584856014133CFD04FF60FD0414FD04FF851314FD
%3D52287DFFFF525252FF7D5252FFA8527DFF3C1A141A141A141A141A85FF
%FFFFAF1A141A60FD04FFAF141A141A141A141A141A3CFD04FF61141A141A
%3C616061361A145252285252522852525228525252285252522852525228
%525252285252522852525228525252285252522852525228525252275252
%522752525228525252277DFF7E2752FFA82753FF7E27FFA914141A141414
%1A1414148BFFFFFFAF1414143CAFFD04FFAFFD091461FD04FF3614141AFD
%07141AFD2B522852285227FD075227FD075227A8FF7D27FFA8527DFF7D7D
%FF3D141A141A141A141A141484FFFFFFA91A141A1485FD06FF603C141A14
%1A14143CFD04FF61141A141A141A141A141A1427522E5227522E5227522E
%5227522E5227522E5227522E5227522E5227522E5227522E522752275227
%FD04527D7DA8A8FFA8FFA8FFA8A87D7D52522752275227FFA8527DFF277D
%FF52A8AF13FD0A1485FFFFFFAFFD0414138BFD06FFA860FD05143CFD04FF
%36FD0B14FD2852A8A8FD07FFA8FFA8FFA8FD06FFA87D5227527DFF7D7DFF
%7DA8FF7DFF3C1A141A141A141A141A141A84FFFFFFAF3D141A141A148BFD
%07FF8B141A141A3CFD04FF61141A141A141A141A141A1428525252285252
%522852525228525252285252522852525228525252285252522752275252
%A8A8FFFFFFA8A87D7DFD065227FD04527D7DA8FFFFA87D2752A8FF52FF7D
%A8A8CAA914141A1414141A1414141A1485FFFFFFAFFD071460A8FD06FF8B
%1414143CFD04FF36FD04141A1414141A1414FD2252A8FD04FF7D7D525228
%5227FD0B52275252527DFFFFFF5253FFA8A8A8FFA8FF61141A141A141A14
%1A141A141A85FFFFFFAF1A141A141A141A141A60FD06FF85141A3CFD04FF
%61141A141A141A141A141A142E5227522E5227522E5227522E5227522E52
%27522E5227522E5227522752277DA8FFFFA859522752275227522E522752
%2E5227522E5227522E5227522752277DA8FF7DA8FFFFA8FFFFAFFD0C1413
%85FFFFFFAFFD061413FD0414AFFD04FFA9141360FD04FF36FD051413FD05
%14FD1D527DFFFFFF7D7DFD1E52A8FFA8FD05FF601A141A141A141A141A14
%1A141A85FFFFFFAF1A141A143D363D141A141A14FD05FF3C1A3CFD04FF61
%141A141A60AF85AF601A1452522852525228525252285252522852525228
%52525228525252277DFFFFA87D2E52275252522852525228525252285252
%52285252522852525228525252285228527DFD06FF3C141A1414141A1414
%141A1414148BFFFFFFAF141414AFFFFFAF8BFD04143CFD04FF3C143CFD04
%FF60FD04148BFFFFFFAF1414FD1752285259FFFFA9525227FD2352A8FD04
%FFAF141A141A141A141A141A141A141484FFFFFFA91A141484FFFFFFA91A
%141A1461FD04FF3C1414FD04FF8B141A141AA9FFFFFF85141427522E5227
%522E5227522E5227522E5227522E52275227527DFFA87D27522E5227522E
%5227522E5227522E5227522E5227522E5227522E5227522E5227522E5227
%522752A8FFFFFF60FD0E1485FFFFFFAF14141485FD04FFFD041436FD04FF
%3C141484FFFFFFA8FD0414FD04FF611414FD16527DFFFF7D5228FD275227
%A8FFFFFF3D141A141A141A141A141A141A141A84FFFFFFAF3D141460FD04
%FFAF363C3CFD05FF141A1461FD04FF853C148BFD04FF3C1A142752275227
%52275227522752275227522752275227A8FFA82852275227522752275227
%522752275227522752275227522752275227522752275227522752275227
%52275252FFFFAFFD0F1485FFFFFFAFFD0414A8FD05FFAFFD05FF36FD0414
%AFFD0AFF841414147D527D527D527D527D527D527D527D527D527D52A8FF
%FF527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527DA8FF853C363D3C3C363D3C3C36
%3D3C3C363D85FFFFFFAF3D363D3685FD0AFFAF3C363D3C3C60FD0AFF6136
%3D3CFD16FFA8FD49FFAFFD11FFAFFD09FFAFFFFFFF
%%EndData
endstream endobj -939 0 obj +943 0 obj << /Length 65536 >> @@ -1784,7 +1790,7 @@ sÓ
·ÓíÑ·OÒ„ŸuMÊ’ÏyÒÁQÊ—*V€)-z=¦Hèªmƈœ~ÅñÓ×z…Sý[t¸c&4 ŽªªAj^råº;ņÜ(cçç Dx^QÜ×}Ì ˜ØyY‰Ÿ‹©
¨zŽ…N¬V¥%™‚¨™@“£=HU˜ü¢³l0¼Tq_PIÐ/u,dÆö¶fý"íŒØ¾MMæu [endstream endobj -940 0 obj +944 0 obj << /Length 65536 >> @@ -2026,7 +2032,7 @@ qlÞ¯ò×âô`> ¶“¬ûVG=# [ül&wJ΂fkíY”&{öñß1øÀ ÛÄ%'DSì F?؆Fß®U
E2,„Ò-[‰Ðð~Eô׈bˆ¨<Þë‹uAhÜš:®—Ú[ɬëxÏ*}ñ endobj -941 0 obj +945 0 obj << /Length 65536 >> @@ -2249,7 +2255,7 @@ uALŽk‹Š=ŽÉÀÇš?éì•ëðå0ƒ¨Ua¦7S“«ÙŽ®&éÀÓ˜çÈî¹m(‚4„Ћz35Ãùd2pnSø×¸®÷—fSµNP™š ]×g1ͼ‘ôAÚF¥5³ò(ª®Í endobj -942 0 obj +946 0 obj << /Length 53114 >> @@ -2446,43 +2452,43 @@ Y‘φ㧻Ç'ÇÕpV— ´Š›·§/ óü8 œ;ø#ñ<ݰ'€å‰íöÐ"W€ Ö^IYïc endobj -922 0 obj << -/D [918 0 R /XYZ 85.0394 794.5015 null] +926 0 obj << +/D [922 0 R /XYZ 85.0394 794.5015 null] >> endobj -923 0 obj << -/D [918 0 R /XYZ 85.0394 769.5949 null] +927 0 obj << +/D [922 0 R /XYZ 85.0394 769.5949 null] >> endobj -920 0 obj << -/Font << /F21 926 0 R >> -/XObject << /Im1 919 0 R >> +924 0 obj << +/Font << /F21 930 0 R >> +/XObject << /Im1 923 0 R >> /ProcSet [ /PDF /Text ] >> endobj -945 0 obj << -/Length 1059 +949 0 obj << +/Length 1063 /Filter /FlateDecode >> stream -xÚµVËn«HÝç+XÆRh÷ƒWÏŽ`l3Âà|£ÑÜY›ÄH‰±¹Vþ~ªéŒ‰f3ò¢«éãªS§ªDÃð#ši!‹S®ÙÜ@&&¦¶}¿ÃÚ+¬-îˆÂ&C¦ÁL¾XÕ
#ÃâšÎ䀳KÐ
Øâȶlªé¶É‘Å(èÇìn:§Tãˆ[ÔÒ²Í6m8¦Ö£²Ý_÷^uü<•¯ûfòwö»fbdc¤ÃX¶ba:'Æ…'B@nkúî'$*¡£ „"HU¤)@cãa¢SÓLk0íÁt“÷&ÁÒ -Mq:œ¥ŸuS¼×râU‡º:5åÇûC‡Ý¢‰Îš&þI©¤ž`Jë;?ëõ$Œ"Ó²,Œ@!¹ùø=Z¿„ߪO˜
·ùàõßä§ÿ§üx”&Lö¥ºÕKsÎOâÜ×£ký ³)ÅŽfS<-ç[ù:°~‰¾UÏtÅ”>E:ëâô^ÖuY$§¦’ãG]¨|¶ ï„r¯æïÕ®|}É»iu’ö®¬›SùüѨ›}©ª¾Éÿ¥ûS~ø”Æñãt¬jµ|.›½´:œøR}(=_ -…ƒ -ÙiíôP5å¶è5¸Nøx%í~<¹ÊªTëùÛ›L„;ˆcËg±Ë¢nšsÄ%'6âŒÚ-$[úªÕâyö4áôÞMÔ— •ã:‰3&gb÷ºi‡3i»Ñ¬ûèIcVè+vÃP*JâFYà«Å§ [J+ñn2“ÛŽ`FÇ)eBýXB³eGñò‘nfA´¸ -¬ÖaÐåò“x.Ç•ŸxKX˜ØÆ½û„Aöç¨`g!n8vÇŽ´ìæAùiŠ:rŒ_ÿ‡þ$áåÀ¨ÓëQQ÷1Tö<Nº¨*|ºö½À
:ßk9v'ntó \´
@0²Æbzq”úl€xTÝ•»èµ¸>Z}Zº"J–ÆXÒU/Ý„í×^úy¯Tbq:ˆ,(aãU7©ßå&Ý·óޥӇއ]œŒ5w»ÑË‚8—ÒÎw¤Qä/Â`áGž?Ž·žWxP‡ŒË-›1™0ò7éeHåØM‚´—"Þdc&ñk`ùŒ‡mÑïSÐgTV±ñ9#c×~³r‡|æßm™›«„n[p@šà•|{•ô`ý}{•PJ±ÞûD¿zL\_tmš”ÂvcÖXnª7‰·ÏOàHyiäù]4ªï-dûJ¡¤Ø«J¿^ÙŒ.'/+á¢9”yëÁ0ááÀnúÔ•î™pOÇÄöMsüm:=ŸÏBaTÖ[Tµ¤^§7·¶z´2‰gé~²þpz”¦endstream +xÚµV]“ª8}Ÿ_ÁãX5D’0ûÆ *[.àÚÚ»ŒâHÕŒXÂ\kþývH +c2Š˜I)Lî¬ê&#ˆB5šhÞ.Q7hf#Š)×t›qdQø ŸÓ‡ñŒ#nKKwšEáŒh*Ýþõè–ǯSñ¶¯G§¿kÌ@¶Á¢†!±0žaó“Nmq[Ó/p?!S ÅA®"O"†a>tÂa²Þ´zÓîÍIoòÎÄFobiù‡:?òZÎ’¯ªÎ?*9qËCUžêâóã©ÅnÐH§Ø +Dá1F„Boè`pÛU¤·ÏeÀWàí”AQ¶Šø±Y,Û|ÛÒÍêÖRî³×òWÞK!;™ÊºØä× ¯¤ÀÇ<SYj={—‰ð â†Å†™@ì"¯šFæ58¢&…’cqJì’.<ÕjÑ,}qòèÄꋟÈqG?ü©7•3±{¤Eˆ™´pÚ~t¥1+pü¥;A
%vÂÔ÷Ô⋟.¤{s'žÊm §1%ÔR¡~$¡é¢¥x‡|èë©Î¯‚ûËUà·¹ÜcÍä¸ôbw#Û|tžýÀOÿìì,Ä͉ݲÃ
»™Ÿ†^’ –ƒCÅ×ûá?IxÑ3jõzVÔßy”=‹â6ª +Ÿ¬<×w‚§VãØsŽí‰Þ|M`YC1Ý(L¼?ÖÀ +<*‡ÎÒ™wZ\¬¾,%M"H,n«—¬ƒæk'ý,Ž–*±(éE”ãU׉׿&Ý7òŽ¥“§–‡]5wÚÑMý(–ÒNcg QèÍî…®7Œ5žWx –[6c<¢6ä“ËʱûI'E´N‡L¢+ÖÀ,ô.÷Û¢Û§ Ï ¬bãsЇ"®¼:géôù̾Û27W ÁÂܶà€dà{•t`ý}{•‚¶'¼ó)ˆÞ{L\_tMšÞh&µ†úsf(ð>;#奖çw^«¾·í+…â|{.KuþºE=¸œÜì½€‹æPd“ÁÃÞô©#ÝSញíëúøÛx|>Ÿ…¨¨6¨lH½onmõ€¥‰'ê~¾þN!–Éendstream endobj -944 0 obj << +948 0 obj << /Type /Page -/Contents 945 0 R -/Resources 943 0 R +/Contents 949 0 R +/Resources 947 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 927 0 R +/Parent 931 0 R >> endobj -946 0 obj << -/D [944 0 R /XYZ 56.6929 794.5015 null] +950 0 obj << +/D [948 0 R /XYZ 56.6929 794.5015 null] >> endobj -943 0 obj << -/Font << /F22 949 0 R /F14 952 0 R >> +947 0 obj << +/Font << /F22 953 0 R /F14 956 0 R >> /ProcSet [ /PDF /Text ] >> endobj -955 0 obj << +959 0 obj << /Length 2886 /Filter /FlateDecode >> @@ -2492,379 +2498,378 @@ x6$a»N9pšÛCcÓ®³ŒhÉ\HŸE.õ]y<çö°þ4ü|U/6+›Íã¹2ù±?l¾žå™Éÿß$5>Ó;²}Ž`¸+äîù?CO$ êœqNLžYç<'\_³È¾já6Vü„×›êªè†ˆâ¶3ŒØ»*䉘øL&c1L R&‘00LPç#&,#LQ0á“~$q7“¢ºŠ/ös¡å³¤bŸ±d€!†TÁ!†ê|ÄÚ)¢â"à ¯«^lÊŸõ¬æŒ.>ãÉ8C'¨(‚S$'ÔyÀIåœäJ†r¥/X:œN6íMÝ,[;ã¹/wÊ•²¹/›þž”íc]²–Š4DØREL"AwΔ$Y–å3e(1JuÉP™Xžo–«¢y~y[Øâµ±9|¯†¨d €!F¡ Fê|¤@’©L ¸£àⶸ<(nöçNñ9.|ê’¹ -¿Z×U½n—÷Ð̈ƒ2fûHBÎ’ -0ÄPj±é½æX*¨÷€ŠoTn|Eä[S.în—-,>ÔB¿åpäeHfbŒA™1Æ"q`Œ¡ÞÇ{£Ä¦/÷…{ÙÙ/`Ó~ý˜¹îoe»¹ëJ$±Ïpøô%Ã18 <lz.êÝ@,7DRæëßuyqþæxn¿|˜‰}µE‘ E*gÐálKj6½¾‹á÷!f4T(Z„Þ”U·#çwNnÜ£n¥äÇòáñ6ÌY±p;/ï‹e³ý>´êuÛ?ö©¿®Ë ÏN²öÀÓfŸÓií#q`Ú£ÞÃÚ:ËìŠ*>j6[N6m½*Â^‹ƒaxÏÞ—ß§'Y|`ˆ‰Ó‰‰õ>Нíä™f@{¿¯ò¶¨6~…όگße(YþÑSä7L{Ìõ8æ+J¨ï6ì´÷{*§õÝCh°ûçÇþ‹ÒM˜]YÚÖ®5¨ö[ïoûŽÁ®_ñø>7ɪCLv˜{L÷H˜ð¨÷Qy‘‘ÜV’Ayÿ¢¨óÊÞÇWíác¶þn>µUÀÜgg¿,×mYuObfL}gšû¬$k1ÍaÖ1Í#q`š£ÞG͹"Æ·všË ùºmŽÍQ÷Jè á·/ðÐhè¦#úù,k…l%³ -‹µÁPá_ù™óœ˜ØûÆ»Õõ Î…~‰‰&Áº"15s_êb["_ø3yoÿµªendstream +¿Z×U½n—÷Ð̈ƒ2fûHBÎ’ +‹µÁPá_ù™óœ˜ØûÆ»Õõ Î…~‰‰&Áº"15s_êb["_ø3yoÿ>ªendstream endobj -954 0 obj << +958 0 obj << /Type /Page -/Contents 955 0 R -/Resources 953 0 R +/Contents 959 0 R +/Resources 957 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 927 0 R -/Annots [ 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R ] +/Parent 931 0 R +/Annots [ 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 988 0 R 989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1007 0 R 1008 0 R 1009 0 R 1010 0 R 1011 0 R ] >> endobj -958 0 obj << +962 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 688.709 539.579 697.4212] /Subtype /Link /A << /S /GoTo /D (chapter.1) >> >> endobj -959 0 obj << +963 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 676.5858 539.579 685.5919] /Subtype /Link /A << /S /GoTo /D (section.1.1) >> >> endobj -960 0 obj << +964 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 664.4876 539.579 673.4937] /Subtype /Link /A << /S /GoTo /D (section.1.2) >> >> endobj -961 0 obj << +965 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 652.3894 539.579 661.3954] /Subtype /Link /A << /S /GoTo /D (section.1.3) >> >> endobj -962 0 obj << +966 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 640.2911 539.579 649.1477] /Subtype /Link /A << /S /GoTo /D (section.1.4) >> >> endobj -963 0 obj << +967 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 628.1929 539.579 637.0495] /Subtype /Link /A << /S /GoTo /D (subsection.1.4.1) >> >> endobj -964 0 obj << +968 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 616.0946 539.579 624.9512] /Subtype /Link /A << /S /GoTo /D (subsection.1.4.2) >> >> endobj -965 0 obj << +969 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 603.9964 539.579 612.853] /Subtype /Link /A << /S /GoTo /D (subsection.1.4.3) >> >> endobj -966 0 obj << +970 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 591.7985 539.579 600.7547] /Subtype /Link /A << /S /GoTo /D (subsection.1.4.4) >> >> endobj -967 0 obj << +971 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 579.7002 539.579 588.6565] /Subtype /Link /A << /S /GoTo /D (subsubsection.1.4.4.1) >> >> endobj -968 0 obj << +972 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 567.6019 539.579 576.5582] /Subtype /Link /A << /S /GoTo /D (subsubsection.1.4.4.2) >> >> endobj -969 0 obj << +973 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 555.5037 539.579 564.46] /Subtype /Link /A << /S /GoTo /D (subsubsection.1.4.4.3) >> >> endobj -970 0 obj << +974 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 543.5051 539.579 552.5112] /Subtype /Link /A << /S /GoTo /D (subsection.1.4.5) >> >> endobj -971 0 obj << +975 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 531.4069 539.579 540.413] /Subtype /Link /A << /S /GoTo /D (subsubsection.1.4.5.1) >> >> endobj -972 0 obj << +976 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 519.3086 539.579 528.3147] /Subtype /Link /A << /S /GoTo /D (subsection.1.4.6) >> >> endobj -973 0 obj << +977 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 496.5559 539.579 505.288] /Subtype /Link /A << /S /GoTo /D (chapter.2) >> >> endobj -974 0 obj << +978 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 484.4775 539.579 493.4338] /Subtype /Link /A << /S /GoTo /D (section.2.1) >> >> endobj -975 0 obj << +979 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 472.3792 539.579 481.3355] /Subtype /Link /A << /S /GoTo /D (section.2.2) >> >> endobj -976 0 obj << +980 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 460.281 539.579 469.2373] /Subtype /Link /A << /S /GoTo /D (section.2.3) >> >> endobj -977 0 obj << +981 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 448.1827 539.579 457.139] /Subtype /Link /A << /S /GoTo /D (section.2.4) >> >> endobj -978 0 obj << +982 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 436.0845 539.579 445.0408] /Subtype /Link /A << /S /GoTo /D (section.2.5) >> >> endobj -979 0 obj << +983 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 413.5759 539.579 422.1635] /Subtype /Link /A << /S /GoTo /D (chapter.3) >> >> endobj -980 0 obj << +984 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 401.4527 539.579 410.3093] /Subtype /Link /A << /S /GoTo /D (section.3.1) >> >> endobj -981 0 obj << +985 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 389.3544 539.579 398.2111] /Subtype /Link /A << /S /GoTo /D (subsection.3.1.1) >> >> endobj -982 0 obj << +986 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 377.2562 539.579 386.1128] /Subtype /Link /A << /S /GoTo /D (subsection.3.1.2) >> >> endobj -983 0 obj << +987 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 365.0583 539.579 374.0146] /Subtype /Link /A << /S /GoTo /D (section.3.2) >> >> endobj -984 0 obj << +988 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 352.96 539.579 361.9163] /Subtype /Link /A << /S /GoTo /D (section.3.3) >> >> endobj -985 0 obj << +989 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 340.8618 539.579 349.818] /Subtype /Link /A << /S /GoTo /D (subsection.3.3.1) >> >> endobj -986 0 obj << +990 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 328.7635 539.579 337.7198] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.3.1.1) >> >> endobj -987 0 obj << +991 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [532.6051 316.6653 539.579 325.6216] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.3.1.2) >> >> endobj -988 0 obj << +992 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 304.567 539.579 313.6728] /Subtype /Link /A << /S /GoTo /D (subsection.3.3.2) >> >> endobj -989 0 obj << +993 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 281.9139 539.579 290.7706] /Subtype /Link /A << /S /GoTo /D (chapter.4) >> >> endobj -990 0 obj << +994 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 269.8356 539.579 278.9413] /Subtype /Link /A << /S /GoTo /D (section.4.1) >> >> endobj -991 0 obj << +995 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 257.7373 539.579 266.8431] /Subtype /Link /A << /S /GoTo /D (section.4.2) >> >> endobj -992 0 obj << +996 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 245.6391 539.579 254.7448] /Subtype /Link /A << /S /GoTo /D (subsection.4.2.1) >> >> endobj -993 0 obj << +997 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 233.5408 539.579 242.6465] /Subtype /Link /A << /S /GoTo /D (section.4.3) >> >> endobj -994 0 obj << +998 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 221.4426 539.579 230.5483] /Subtype /Link /A << /S /GoTo /D (section.4.4) >> >> endobj -995 0 obj << +999 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 209.444 539.579 218.4501] /Subtype /Link /A << /S /GoTo /D (subsection.4.4.1) >> >> endobj -996 0 obj << +1000 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 197.2461 539.579 206.3518] /Subtype /Link /A << /S /GoTo /D (section.4.5) >> >> endobj -997 0 obj << +1001 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 185.1478 539.579 194.1041] /Subtype /Link /A << /S /GoTo /D (subsection.4.5.1) >> >> endobj -998 0 obj << +1002 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 173.0496 539.579 182.0058] /Subtype /Link /A << /S /GoTo /D (subsubsection.4.5.1.1) >> >> endobj -999 0 obj << +1003 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 160.9513 539.579 169.9076] /Subtype /Link /A << /S /GoTo /D (subsubsection.4.5.1.2) >> >> endobj -1000 0 obj << +1004 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 148.8531 539.579 157.8094] /Subtype /Link /A << /S /GoTo /D (subsection.4.5.2) >> >> endobj -1001 0 obj << +1005 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 136.7548 539.579 145.7111] /Subtype /Link /A << /S /GoTo /D (subsection.4.5.3) >> >> endobj -1002 0 obj << +1006 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 124.7562 539.579 133.7623] /Subtype /Link /A << /S /GoTo /D (subsection.4.5.4) >> >> endobj -1003 0 obj << +1007 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 112.658 539.579 121.6641] /Subtype /Link /A << /S /GoTo /D (subsection.4.5.5) >> >> endobj -1004 0 obj << +1008 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 100.5597 539.579 109.5658] /Subtype /Link /A << /S /GoTo /D (subsection.4.5.6) >> >> endobj -1005 0 obj << +1009 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 88.4615 539.579 97.4676] /Subtype /Link /A << /S /GoTo /D (section.4.6) >> >> endobj -1006 0 obj << +1010 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 76.3632 539.579 85.2199] /Subtype /Link /A << /S /GoTo /D (section.4.7) >> >> endobj -1007 0 obj << +1011 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 64.265 539.579 73.1216] /Subtype /Link /A << /S /GoTo /D (section.4.8) >> >> endobj -956 0 obj << -/D [954 0 R /XYZ 85.0394 794.5015 null] +960 0 obj << +/D [958 0 R /XYZ 85.0394 794.5015 null] >> endobj -957 0 obj << -/D [954 0 R /XYZ 85.0394 711.9273 null] +961 0 obj << +/D [958 0 R /XYZ 85.0394 711.9273 null] >> endobj -953 0 obj << -/Font << /F21 926 0 R /F22 949 0 R >> +957 0 obj << +/Font << /F21 930 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1010 0 obj << +1014 0 obj << /Length 3289 /Filter /FlateDecode >> @@ -2887,1367 +2892,1372 @@ xÚímS#7Çßó)\uo ê¬=K/ Ëæ’ì²ÜÚ{UwI^8f\ñ1ö&äÓŸÆ3icMƒrû8©Z{ÚÝôÿçVK£±y¯ÿóž6Ì Ž¨¶+ïÒbŠ0VÐ环Fóy™Z쓎)MsÞùÕrt 0R<«>¦Inþ7*€ù} Q8™Ývˆ‰_4Ûž%?Æ·ú—sæµÿÿ÷Ú¶_¿« ÎulÖ®`ÚhÝ“¡G—uñœLº·àÖg¡ÐÿÞÄ endobj -1009 0 obj << +1013 0 obj << /Type /Page -/Contents 1010 0 R -/Resources 1008 0 R +/Contents 1014 0 R +/Resources 1012 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 927 0 R -/Annots [ 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R ] +/Parent 931 0 R +/Annots [ 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R ] >> endobj -1015 0 obj << +1019 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 758.5763 511.2325 767.4329] /Subtype /Link /A << /S /GoTo /D (subsection.4.8.1) >> >> endobj -1016 0 obj << +1020 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 746.445 511.2325 755.4012] /Subtype /Link /A << /S /GoTo /D (subsection.4.8.2) >> >> endobj -1017 0 obj << +1021 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 734.4133 511.2325 743.3696] /Subtype /Link /A << /S /GoTo /D (subsection.4.8.3) >> >> endobj -1018 0 obj << +1022 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 722.3816 511.2325 731.3379] /Subtype /Link /A << /S /GoTo /D (section.4.9) >> >> endobj -1019 0 obj << +1023 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 710.3499 511.2325 719.3062] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.1) >> >> endobj -1020 0 obj << +1024 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 698.3182 511.2325 707.2745] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.2) >> >> endobj -1021 0 obj << +1025 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 686.2866 511.2325 695.2428] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.3) >> >> endobj -1022 0 obj << +1026 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 674.2549 511.2325 683.2112] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.4) >> >> endobj -1023 0 obj << +1027 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 662.3229 511.2325 671.1795] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.5) >> >> endobj -1024 0 obj << +1028 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 650.2912 511.2325 659.1478] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.6) >> >> endobj -1025 0 obj << +1029 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 638.2595 511.2325 647.1161] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.7) >> >> endobj -1026 0 obj << +1030 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 626.2278 511.2325 635.0845] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.8) >> >> endobj -1027 0 obj << +1031 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 614.0965 511.2325 623.0528] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.9) >> >> endobj -1028 0 obj << +1032 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 602.0648 511.2325 611.0211] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.10) >> >> endobj -1029 0 obj << +1033 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 590.0331 511.2325 598.9894] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.11) >> >> endobj -1030 0 obj << +1034 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 578.0015 511.2325 586.9578] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.12) >> >> endobj -1031 0 obj << +1035 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 565.9698 511.2325 574.9261] /Subtype /Link /A << /S /GoTo /D (subsection.4.9.13) >> >> endobj -1032 0 obj << +1036 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 553.9381 511.2325 562.8944] /Subtype /Link /A << /S /GoTo /D (section.4.10) >> >> endobj -1033 0 obj << +1037 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 541.9064 511.2325 550.8627] /Subtype /Link /A << /S /GoTo /D (subsection.4.10.1) >> >> endobj -1034 0 obj << +1038 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 529.8748 511.2325 538.831] /Subtype /Link /A << /S /GoTo /D (subsection.4.10.2) >> >> endobj -1035 0 obj << +1039 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 517.8431 511.2325 526.7994] /Subtype /Link /A << /S /GoTo /D (section.4.11) >> >> endobj -1036 0 obj << +1040 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 505.8114 511.2325 514.7677] /Subtype /Link /A << /S /GoTo /D (subsection.4.11.1) >> >> endobj -1037 0 obj << +1041 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 493.7797 511.2325 502.8855] /Subtype /Link /A << /S /GoTo /D (subsubsection.4.11.1.1) >> >> endobj -1038 0 obj << +1042 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 481.7481 511.2325 490.8538] /Subtype /Link /A << /S /GoTo /D (subsubsection.4.11.1.2) >> >> endobj -1039 0 obj << +1043 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 469.7164 511.2325 478.6727] /Subtype /Link /A << /S /GoTo /D (subsection.4.11.2) >> >> endobj -1040 0 obj << +1044 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 457.6847 511.2325 466.641] /Subtype /Link /A << /S /GoTo /D (subsubsection.4.11.2.1) >> >> endobj -1041 0 obj << +1045 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 445.653 511.2325 454.6093] /Subtype /Link /A << /S /GoTo /D (subsubsection.4.11.2.2) >> >> endobj -1042 0 obj << +1046 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 433.6213 511.2325 442.5776] /Subtype /Link /A << /S /GoTo /D (subsection.4.11.3) >> >> endobj -1043 0 obj << +1047 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 421.5897 511.2325 430.5459] /Subtype /Link /A << /S /GoTo /D (subsection.4.11.4) >> >> endobj -1044 0 obj << +1048 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 409.558 511.2325 418.6637] /Subtype /Link /A << /S /GoTo /D (subsection.4.11.5) >> >> endobj -1045 0 obj << +1049 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 397.5263 511.2325 406.6321] /Subtype /Link /A << /S /GoTo /D (subsection.4.11.6) >> >> endobj -1046 0 obj << +1050 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 385.4946 511.2325 394.4509] /Subtype /Link /A << /S /GoTo /D (section.4.12) >> >> endobj -1047 0 obj << +1051 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 373.4629 511.2325 382.4192] /Subtype /Link /A << /S /GoTo /D (subsection.4.12.1) >> >> endobj -1048 0 obj << +1052 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 361.4313 511.2325 370.3876] /Subtype /Link /A << /S /GoTo /D (subsection.4.12.2) >> >> endobj -1049 0 obj << +1053 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 339.111 511.2325 347.8432] /Subtype /Link /A << /S /GoTo /D (chapter.5) >> >> endobj -1050 0 obj << +1054 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 327.0992 511.2325 336.0555] /Subtype /Link /A << /S /GoTo /D (section.5.1) >> >> endobj -1051 0 obj << +1055 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 315.0676 511.2325 324.0238] /Subtype /Link /A << /S /GoTo /D (section.5.2) >> >> endobj -1052 0 obj << +1056 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 292.7473 511.2325 301.4795] /Subtype /Link /A << /S /GoTo /D (chapter.6) >> >> endobj -1053 0 obj << +1057 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 280.7355 511.2325 289.6918] /Subtype /Link /A << /S /GoTo /D (section.6.1) >> >> endobj -1054 0 obj << +1058 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 268.7038 511.2325 277.8096] /Subtype /Link /A << /S /GoTo /D (subsection.6.1.1) >> >> endobj -1055 0 obj << +1059 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 256.6722 511.2325 265.7779] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.1.1.1) >> >> endobj -1056 0 obj << +1060 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 244.7402 511.2325 253.7462] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.1.1.2) >> >> endobj -1057 0 obj << +1061 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 232.7085 511.2325 241.7146] /Subtype /Link /A << /S /GoTo /D (subsection.6.1.2) >> >> endobj -1058 0 obj << +1062 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 220.6768 511.2325 229.6829] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.1.2.1) >> >> endobj -1059 0 obj << +1063 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 208.6451 511.2325 217.6512] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.1.2.2) >> >> endobj -1060 0 obj << +1064 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 196.6134 511.2325 205.6195] /Subtype /Link /A << /S /GoTo /D (section.6.2) >> >> endobj -1061 0 obj << +1065 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 184.4821 511.2325 193.5878] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.1) >> >> endobj -1062 0 obj << +1066 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 172.4504 511.2325 181.5562] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.2) >> >> endobj -1063 0 obj << +1067 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 160.4187 511.2325 169.5245] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.3) >> >> endobj -1064 0 obj << +1068 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 148.4867 511.2325 157.4928] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.4) >> >> endobj -1065 0 obj << +1069 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 136.4551 511.2325 145.4611] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.5) >> >> endobj -1066 0 obj << +1070 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 124.3237 511.2325 133.4295] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.6) >> >> endobj -1067 0 obj << +1071 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 112.292 511.2325 121.3978] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.7) >> >> endobj -1068 0 obj << +1072 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 100.2604 511.2325 109.3661] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.8) >> >> endobj -1069 0 obj << +1073 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 88.2287 511.2325 97.3344] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.9) >> >> endobj -1070 0 obj << +1074 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 76.197 511.2325 85.3027] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.10) >> >> endobj -1071 0 obj << +1075 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [499.2773 64.1653 511.2325 73.2711] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.10.1) >> >> endobj -1011 0 obj << -/D [1009 0 R /XYZ 56.6929 794.5015 null] +1015 0 obj << +/D [1013 0 R /XYZ 56.6929 794.5015 null] >> endobj -1008 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R >> +1012 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1074 0 obj << -/Length 3396 +1078 0 obj << +/Length 3422 /Filter /FlateDecode >> stream -xÚíYSIÇßùz˜xPmÝÇ>m°ƒ‰ÛƒqìÆ -Ñʼn‘„ýô[îªÊ†êµlˆ‰ðÈX©LåÿGYG³õÿ±U„ -'ÆI¢(Sƒñåœû{µÇÚ÷Û†ð]ÏO÷þñR˜#Ns=8ý +xÚíYSIÇßùz˜xPmÝÇ>m°ƒ íÁ8vcŽ…hƒb„ÄHÂÇ~úVwUeCuŠÚlˆ‰ËX©LåÿGYG³õÿ±U„ +'ÆI¢(Sƒñåœû{µÇÚ÷Û†ð]ÏO÷þñR˜#Ns=8ý>Ëj-œžýºÿâí›Ó£7§ï~?ýqïè4~(t̨¨?ñϽ_§ƒ3ïÿÇ=J„³jðÙÿ…æ\îI%ˆ’B„ŸL÷Þïý?üëÚ4÷E”°DYn2ß„sðM˜’ÄãF9¢ë¯¢ ÷¡~àB÷O/ªú;yK,5%”IãÝÕãѪ:Ÿ/¾¶o„.$%Ú†÷½»XŒ–ÕÁPR»O†ŠÒú‡tîÿ±»¡½â–hNYJï-±çƒæÅ ”/Ø
¡ámùn~dioÅpÈÅÁƒzOðHC´fÂ#îÏŸ×Õâë°Z,æ‹e e‰“V´o~HóñGKM/'!“Åœ y-¦bÔ@Ýï§&F
ê=QÃ1ÒH"5b#5—£åªÊöMÂs#½O¼2½ú» -9.&bA
1‚2q`¡Þ#AÚ¹fØ ’÷EÐæ–Ç}Ÿ–§˜>Rb.KI†)Rrq ¤àÞ)ÖKAS£6‚2¿ªµÎ‚¢ýg1³¡©±ŒíTSR\ÌO²Ãðbô܃sØ1ŠX¡Y‚Gß<wheŒ|ÔLÈe1%ÀÃj¥T?'™80PPïqöµ V+H!¬™}?ŸÏ§Õ¨õMK‡÷à¶rtGBºŠa -åx½¾í ¦¡â×ù¬j 8=pt1š-?¬Ê°',bâJ±€†]aúç!¹8,pï K Õ*lCÅû÷
oç‹¶ -ÌæVƒ+ñ¸F !ƒÅx$;Œ Çí 060×
-‰r ÞÅïr¢yæUìeCûÙ–bCc¢¥Ü¾V$$³`ˆqÅÂ@ÉÄ‘‚zO¨(îÃà©8Æå½¢r‡Ù
5¾áI+FbH@Q0$2q`H ÞõýLŠ¥ß|Hùã¤ú”»DCz‡~®„·JˆXkë…)¤»&`ˆÁå´ýk±¹80˜Pï ¦:Œš““¾˜6·+Úéí¹Ç'¦µ`ˆAeà ÉÄAƒzOÐÔ'¨KÅ6¾¹h[¯¿æ¡¡Æmº#AY»Ã+ -i-†bÐ@ÙlÿŠq.Ô{\F䎣
(ÇØpƒÂ3L_®ªõA±«›‡ú -/¦£õIÇGr™ÂÙdZŒ0Äp‚¹þƒN¹80\Pï ?)¶àx½JÜlNâm,‚?µ"Q¶6qÅT$; - ÆÄí 0$0׉¥‰UŠA$Ú¿ÌF—ádÌû«3?Ìç#§“ñ¤îo¤R[«xHL±äÀÓ&ÞõWrq`ª£Þi…ð#HéÇ™2”Û|Àh§x9™ÖpÊ=ú¾ã!^£ÅŒCŒ1(³ëßÑœ‹cõg<\pâ˜<Q\§kÍÚüCßÌ“j<oNM,oLeþ}Qµ³›Õ<LnÂpø¢>¢kŒxxÛ˜‘b½!¦7Ì8¦w&LoÔ{êJ8%Nr•ô^+.6KkÛÉAEHX1Àà -‚á‰Ãõžp –8Ã4À·8¬O\VŸW×a¿sõù*ÜÍ˱Y8YÏbôÖv!OÅ -Pï±`ÎJãU³bÍ@Ý N–ãëŒÜ?ÿ'Ó@HºË·åÇ–
B:!„äâ@Á½'BêçÐpg#!¢%ä]µJWoœžþ´æ@>/ïÎ º®1Æß•ŸÖn
süÜüüZAFû÷ÖçÁ -ªŠ"• c -uŸ †0©€Š@õÛ“ãWǯsO®3D°x£H§:ºDÖßµ2èZÌ0Äx‚¡¼dÁxAÝ'^¸ouŒ’€QÂËñë?½?<Êm©ö)-ú€ábûzªÊbR€!F -” -%%F -ê>‘ÂüDšJH‘%¤øÙTn_‰&VºJŒR»5).&bA í?˜#uŸÆÃ”.DªÎév@üüøõa˜1Õ†º9">ú¼ªfuÙæŸ~4Ìèþ*Ë3Ú“ªÂ.É^½>:yV—ýNsí“öcx*dž<ýŠ?½$„T“ -ŸL&Èá¥õÛ@ìÿâ1˜Ãendstream +9.&bA
1‚2q`¡Þ#AÚ¹fØ ’÷EÐæ–Ç}Ÿ–§˜>Rb.KI†)Rrq ¤àÞ)ÖKAS£6‚2¿ªµÎ‚¢ýg1³¡©±ŒíTSR\ÌO²Ãðbô܃sØ1ŠX¡Y‚Gß<wheŒ|ÔLÈe1%ÀÃj¥T?'™80PPïqöµ V+H!¬™}?ŸÏ§Õ¨õmK‡÷à¶rtGBºŠa +ÝB&Ô{â×Ù€ðl<®–Ë‚óÙjÝ^̧u§±CÍD/!qÅX +`ˆQÑÑ¥í/Fê=R¡¯×·¤Â4Tü2ŸU
§Žî/F³åÇõ Bö„EL\)ÐÁ¢#ŒéŸ‡äâ@°À½',,%Tw¨°
ß5P¼›/ÚÄëÉrUc!ŸZ‹˜¸b*’Åô´2A`H`®Úê,,h× ñöªZŒVëIézòñu¹ª.›×'Õr~½îPÆU€årRÓb¥z\«±1ÅÒCL[˜`LÜL˜º¨÷$¯Ò„qÓBQ?ˆ³ÉM‚¦·äW¼—€£b€!F +M»uÛ¨ÿììl½Éi4
«Üãô+ýb4¾XwNëí)9Ät
1¥aºm•9¦5ê=‰--ÖuK®»^½Ž[Ü^ú_ûvH(„Øá±`ÌX1Àã*bû„äâÀx@½'„&’ÙÎÞ!OªåÕ|¶¬ÂâÃt2móê7ªèÉ»_ü,T+?/&MeZ2ùà»õðõ‹Å†˜¸0½¶¿Âœ‹õwÄJ.‰”—ÌÆ±í .S, ž
½ñà7Û<=èå(dº˜#`ˆq•´ýEÊ\G¨÷ÄãD
JPöž8Ú¼±Úºm(<ÅŒó1^ b¶¿d™‹ãõžx¡”(ª@áÉmæÅƒ0Y®&ãåp|1šÍªinW¾UD*ë64B’›-8Ù³XÌ0Ä*Ùþâd.ŒÔ{dDXo d*Bqú-ÙÜÀ(÷‘èc!f«”hˆ°ÐQa!Âî=±`4Q:AùæCî«ÅõrU
ÿ¨¾öÝ€Àí¦ÁŠ•[; )-æ%Ùa¸ +‹á +†D& Ô{B¢£V;"±ùú§Iõ9wCŠô_ÈÏñVC ±©½0…tÃ1˜ œ¶ÿüG.&Ô{‚©ÞÙO]ª¿q}/0mnW´ÓÛsISLk14ÀƒÊ†A“‰ƒõž ¡’®Ûᛋ¶õâzjܦ0”µ;¼¼Ó]0Ä`‚rÚþ…ý\L¨÷wœm@•ÅÞL›[ £Øöt[1¥Ð@CšŽl®M0
î=® rK‰qà(’‹e¨}½ªÖ§Ä®îë$¤°`ˆ% +ïIJElNÖÓ½u€ º.Å<Ý•‚Ön
sÜüüZFûw¾æA0ÀÝÇ^€ÕÏáÎFxÛN–ãëŒÞ?ý'ÓBHº“ÏB†#1D F("™@0DP÷ #÷‰DD‹Èûj•nV9=}½A>0Ë +.b +ŒÌwÂC:ÂX¼ÞGÔC®ùx»º§doN}×K)“fP2^M>Õ“!Ù.wB!‹Å€ +2Q ¾Ó
Ꭵ‹i¸yÙHRÿåú.¡ú¶£ŸæÌ!¥d +Ä|‡bí<l‘íòpÝ2¸öö™xþó ¾ïi%ø/‚Ôæ»”£d†`´dyðÂnAŸÞ>äŽØ\¨þ?cÄ©æaOíañé‘öõtÇÚž)¼ †HÍÕ@ø1P»Ø=™LLë·ØÿEw““endstream endobj -1073 0 obj << +1077 0 obj << /Type /Page -/Contents 1074 0 R -/Resources 1072 0 R +/Contents 1078 0 R +/Resources 1076 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 927 0 R -/Annots [ 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R 1109 0 R 1110 0 R 1111 0 R 1112 0 R 1113 0 R 1114 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R ] +/Parent 931 0 R +/Annots [ 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R 1091 0 R 1092 0 R 1093 0 R 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R 1109 0 R 1110 0 R 1111 0 R 1112 0 R 1113 0 R 1114 0 R 1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R 1121 0 R 1122 0 R 1123 0 R 1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R ] >> endobj -1076 0 obj << +1080 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 758.4766 539.579 767.5824] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.10.2) >> >> endobj -1077 0 obj << +1081 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 746.5057 539.579 755.462] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.10.3) >> >> endobj -1078 0 obj << +1082 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 734.5349 539.579 743.6406] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.11) >> >> endobj -1079 0 obj << +1083 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 722.564 539.579 731.5203] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.12) >> >> endobj -1080 0 obj << +1084 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 710.5931 539.579 719.5494] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.13) >> >> endobj -1081 0 obj << +1085 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 698.6222 539.579 707.5785] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.14) >> >> endobj -1082 0 obj << +1086 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 686.6513 539.579 695.6076] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.15) >> >> endobj -1083 0 obj << +1087 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 674.6804 539.579 683.6367] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.16) >> >> endobj -1084 0 obj << +1088 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 662.7096 539.579 671.6658] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.1) >> >> endobj -1085 0 obj << +1089 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 650.7387 539.579 659.695] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.2) >> >> endobj -1086 0 obj << +1090 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 638.7678 539.579 647.7241] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.3) >> >> endobj -1087 0 obj << +1091 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 626.7969 539.579 635.7532] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.4) >> >> endobj -1088 0 obj << +1092 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 614.826 539.579 623.7823] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.5) >> >> endobj -1089 0 obj << +1093 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 602.8551 539.579 611.8114] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.6) >> >> endobj -1090 0 obj << +1094 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 590.8843 539.579 599.8405] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.7) >> >> endobj -1091 0 obj << +1095 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 579.013 539.579 588.0191] +/Rect [527.6238 579.013 539.579 587.8696] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.8) >> >> endobj -1092 0 obj << +1096 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 567.0421 539.579 575.8988] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.9) >> >> endobj -1093 0 obj << +1097 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 555.0713 539.579 563.9279] +/Rect [527.6238 554.9716 539.579 563.9279] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.10) >> >> endobj -1094 0 obj << +1098 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 543.0007 539.579 551.957] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.11) >> >> endobj -1095 0 obj << +1099 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 531.1295 539.579 540.1356] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.12) >> >> endobj -1096 0 obj << +1100 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 519.1586 539.579 528.1647] +/Rect [527.6238 519.0589 539.579 528.0152] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.13) >> >> endobj -1097 0 obj << +1101 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 507.0881 539.579 516.0443] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.14) >> >> endobj -1098 0 obj << +1102 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 495.1172 539.579 504.0735] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.15) >> >> endobj -1099 0 obj << +1103 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 483.1463 539.579 492.1026] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.16) >> >> endobj -1100 0 obj << +1104 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 471.1754 539.579 480.1317] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.17) >> >> endobj -1101 0 obj << +1105 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 459.2045 539.579 468.1608] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.18) >> >> endobj -1102 0 obj << +1106 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 447.2336 539.579 456.1899] +/Rect [527.6238 447.2336 539.579 456.3394] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.16.19) >> >> endobj -1103 0 obj << +1107 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 435.2628 539.579 444.219] /Subtype /Link -/A << /S /GoTo /D (subsection.6.2.17) >> +/A << /S /GoTo /D (subsubsection.6.2.16.20) >> >> endobj -1104 0 obj << +1108 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.6238 423.2919 539.579 432.2481] /Subtype /Link +/A << /S /GoTo /D (subsection.6.2.17) >> +>> endobj +1109 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [527.6238 411.321 539.579 420.4267] +/Subtype /Link /A << /S /GoTo /D (subsection.6.2.18) >> >> endobj -1105 0 obj << +1110 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 411.321 539.579 420.2773] +/Rect [527.6238 399.3501 539.579 408.3064] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.19) >> >> endobj -1106 0 obj << +1111 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 399.3501 539.579 408.3064] +/Rect [527.6238 387.3792 539.579 396.3355] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.20) >> >> endobj -1107 0 obj << +1112 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 387.3792 539.579 396.485] +/Rect [527.6238 375.4083 539.579 384.3646] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.21) >> >> endobj -1108 0 obj << +1113 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 375.4083 539.579 384.5141] +/Rect [527.6238 363.4374 539.579 372.3937] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.22) >> >> endobj -1109 0 obj << +1114 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 363.4374 539.579 372.5432] +/Rect [527.6238 351.4666 539.579 360.4228] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.23) >> >> endobj -1110 0 obj << +1115 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 351.4666 539.579 360.5723] +/Rect [527.6238 339.4957 539.579 348.452] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.24) >> >> endobj -1111 0 obj << +1116 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 339.4957 539.579 348.452] +/Rect [527.6238 327.5248 539.579 336.4811] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.25) >> >> endobj -1112 0 obj << +1117 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 327.5248 539.579 336.4811] +/Rect [527.6238 315.5539 539.579 324.5102] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.26) >> >> endobj -1113 0 obj << +1118 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 315.5539 539.579 324.5102] +/Rect [527.6238 303.583 539.579 312.5393] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.27) >> >> endobj -1114 0 obj << +1119 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 303.583 539.579 312.5393] +/Rect [527.6238 291.6121 539.579 300.7179] /Subtype /Link /A << /S /GoTo /D (subsection.6.2.28) >> >> endobj -1115 0 obj << +1120 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 291.6121 539.579 300.5684] +/Rect [527.6238 279.6413 539.579 288.747] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.28.1) >> >> endobj -1116 0 obj << +1121 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 279.6413 539.579 288.747] +/Rect [527.6238 267.6704 539.579 276.6267] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.28.2) >> >> endobj -1117 0 obj << +1122 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 267.6704 539.579 276.7761] +/Rect [527.6238 255.6995 539.579 264.6558] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.28.3) >> >> endobj -1118 0 obj << +1123 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 255.6995 539.579 264.8052] +/Rect [527.6238 243.7286 539.579 252.6849] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.2.28.4) >> >> endobj -1119 0 obj << +1124 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 243.7286 539.579 252.6849] +/Rect [527.6238 231.7577 539.579 240.714] /Subtype /Link /A << /S /GoTo /D (section.6.3) >> >> endobj -1120 0 obj << +1125 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 231.7577 539.579 240.714] +/Rect [527.6238 219.7868 539.579 228.7431] /Subtype /Link /A << /S /GoTo /D (subsection.6.3.1) >> >> endobj -1121 0 obj << +1126 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 219.7868 539.579 228.7431] +/Rect [527.6238 207.8159 539.579 216.7722] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.3.1.1) >> >> endobj -1122 0 obj << +1127 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 207.8159 539.579 216.7722] +/Rect [522.6425 195.845 539.579 204.9508] /Subtype /Link /A << /S /GoTo /D (subsubsection.6.3.1.2) >> >> endobj -1123 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.6238 195.845 539.579 204.8013] -/Subtype /Link -/A << /S /GoTo /D (subsection.6.3.2) >> ->> endobj -1124 0 obj << +1128 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 183.8742 539.579 192.9799] /Subtype /Link -/A << /S /GoTo /D (subsection.6.3.3) >> +/A << /S /GoTo /D (subsection.6.3.2) >> >> endobj -1125 0 obj << +1129 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 171.9033 539.579 181.009] /Subtype /Link -/A << /S /GoTo /D (subsection.6.3.4) >> +/A << /S /GoTo /D (subsection.6.3.3) >> >> endobj -1126 0 obj << +1130 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 159.9324 539.579 169.0381] /Subtype /Link -/A << /S /GoTo /D (subsection.6.3.5) >> +/A << /S /GoTo /D (subsection.6.3.4) >> >> endobj -1127 0 obj << +1131 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 147.9615 539.579 157.0673] /Subtype /Link -/A << /S /GoTo /D (subsubsection.6.3.5.1) >> +/A << /S /GoTo /D (subsection.6.3.5) >> >> endobj -1128 0 obj << +1132 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 135.9906 539.579 145.0964] /Subtype /Link -/A << /S /GoTo /D (subsubsection.6.3.5.2) >> +/A << /S /GoTo /D (subsubsection.6.3.5.1) >> >> endobj -1129 0 obj << +1133 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 124.0197 539.579 133.1255] /Subtype /Link -/A << /S /GoTo /D (subsubsection.6.3.5.3) >> +/A << /S /GoTo /D (subsubsection.6.3.5.2) >> >> endobj -1130 0 obj << +1134 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 112.0489 539.579 121.1546] /Subtype /Link -/A << /S /GoTo /D (subsubsection.6.3.5.4) >> +/A << /S /GoTo /D (subsubsection.6.3.5.3) >> >> endobj -1131 0 obj << +1135 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 100.078 539.579 109.1837] /Subtype /Link -/A << /S /GoTo /D (subsection.6.3.6) >> +/A << /S /GoTo /D (subsubsection.6.3.5.4) >> >> endobj -1132 0 obj << +1136 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 88.1071 539.579 97.2128] /Subtype /Link -/A << /S /GoTo /D (subsection.6.3.7) >> +/A << /S /GoTo /D (subsection.6.3.6) >> >> endobj -1133 0 obj << +1137 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 76.1362 539.579 85.242] /Subtype /Link -/A << /S /GoTo /D (section.6.4) >> +/A << /S /GoTo /D (subsection.6.3.7) >> >> endobj -1134 0 obj << +1138 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 64.1653 539.579 73.2711] /Subtype /Link -/A << /S /GoTo /D (subsubsection.6.4.0.1) >> +/A << /S /GoTo /D (section.6.4) >> >> endobj -1075 0 obj << -/D [1073 0 R /XYZ 85.0394 794.5015 null] +1079 0 obj << +/D [1077 0 R /XYZ 85.0394 794.5015 null] >> endobj -1072 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R >> +1076 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1137 0 obj << -/Length 3402 +1141 0 obj << +/Length 3413 /Filter /FlateDecode >> stream -xÚímsÛÆÇßëSð]¥™òŒ{ÚKŽS¥‰“JÊt¦i^@ D¢&š q?}ÄÝq)Ö:ÇŽ#›ñdDQXìrÿ¿[Ü@:JÌ?:’ЍŒe# "*GÅâ$MÍß¾=¡ö˜±;h:¿9yö’ëQF2ÅÔèæn$¤$LnO–’$MéèfòËéůn¾yus}öëÍw'ßÜø³BÏ4áÝ)ßœüòk2š˜ -ÎÝ;ó“ë“ú‚¿nMƒŸ„&„qÅ…1ðQº?J:Ò2#Š3¾ý Š˜@ÏÆ”%Ééõ:_Wíº*Ú³1“ÉéE³©×åÊü–&Ù)9KsÐÓû!²üEf¨ÈL}2„YMGý‹+ •·CÃC©Ï߉Ey -êž2çb¤…6Ì$lÇÊ–nèx•/Êž“ërõ¶\Ù׃ –>½…v™ˆbBÃL£BÁ„FÝï„æ’•B¡™úßMm…þ!¯Œ˜u^åûÔδø£;¨¨ûÈÑŠCLQ˜Rš¨aE`Š¢îwŠ2Nxª(P”[E¯Ê¶™?¢É¦Š=½‚=(·ËG´ÜÀ“æ•;&7ê~'75ú&Ê-¬Ü×Mñº\÷â^>ûñ}ª«D| r»|DË
1¹a¾i¢‡å‚ɺ÷r«,#ŒÁr-ÚÍbi¤½æÕú]¯í}µžuñ={)’½“i"²D™ºÓœ_¾zѵçÒÄ3mI`á´žá.c±< -ªŠ"C -uï¯T™Yæ˜â¶«öâ]/ª¢gêçå$_—{·Zªco,LŒËi41À#j†#æÀ}h$3nÊ„æn˜ºÝœQJOWÍæv^¶3sýê -ÒP~ü;ØÈ`g/2Jù`^àù|º
µ ™šLÚ|øÁÎE³Xtųk4?õj“›E7’â8¶‰nT>ͱ -"jOFž@ D¨{{e—*ë™cÈw/ײ溱‹÷Íêµi]í›5÷ý‹"·°]ö?þ“$lºÙ‚gKw³qg˜åþ´÷¶9ý›©è4ý -îr-80ć9G‚ Žº÷UCj"uŠ3[5.뢗¬ëÓûN]7RígMfy=Ýëë¹uÁ*·ó(¯6‹ÛnÁÁ8yB¥`—¦h€!”… êÞC $á:s¸Î׿f%l·Zö·n‰áïå|išÇÉ£XrÙŽf b,A5Q–`,¸vË#)3PuÞŸ›bÎØéó岬'UQO<{³G÷Å€ÖƒáP:¼Êχ%áÀm°A™ãµ6 ÝUTk“†âuÝÜÏËÉ´«ªÝr+ËŽ=°øöã’Ý~€!Ö~ x(2@0tP÷¶&²”(3dvätìd]êKíùª*ïlÕÚu³²Ë;Í݃Kñ‹W×®Ùý‘Jè—SI}²bI€† {b`$„AHÀÝ»""REdš8X_D¾-ërå:Y^å«òÎ^«ýVËú®Y-ò~êLe_fÅ$Ãå.š`ˆ‘µ¡txïG(ŒÔ½«Zƒv`¸qùÓ[eýdÒÓжeëÆa2ynþ3?i·Š¯ŸÇhH€! Ô …$ êޗň ÊQÂûòq^ÝΫfºÊ—³w;0üEâz3–íºœ¸²’OÌ0¯g†3öutÐ}梹 -GÂH’(‹ë{ôë’v -D4Ô÷N³”š* ™Ü×l³½ñg¸¹Mà]Bp—kmÝëe_ §«|q6Ö{k—k—°û Ñíì0‰@š(ÃFI„ùÞI¤²îñfÐHYêÖföÖ)4iyU?«ýó¢Zð¼¨bV¯Ý/UíÚÓjÑîïd»zyÑ¿‰ñwy
Jä>H´FÀ &вá-c¡@0™P÷v´Á¤& £;•t?ÚØ[vÙÛ*f’®yÜhfÅ¥3š`ˆ±åBY ‚±rà>´Q›qA„²wïwÛ9øéy½q{—ùÙ¯í»_ ûµ÷¢¢lø);ð|X.܆Ö1c„§Úæb»,ųÓI5ý2v<<¹9!¯GtˆX˃z£”ÁhCÝ{ÚÌñ¦;+-m¬§mÖt}J©¸ýþ¸9A¢q†nPpʇçB`¸¡în4K cÜáÆmq«Û¶,Æ“ö®ï½-^—¦ƒÀÓôHÓ‡bä‹4D0Ú’òá@(#ܽÇ(U„ -*,Fb#ãhžß–ó'þáÏÀŽËn4;ÀcªGùðÓP ;¨{ÏŽ$‘™cG>dgZvû6„<^×>M.ßÑ4CŒ&¨'åÃO?‚Ñ„º÷4)J2mŸ¯q¾]RÛÑÔmß6¯»µWID}$¢\Σ‰†QPS*†»H¡@0¢P÷ž(‘‘4“Ž(½GT[®×U7•u,P'—ðhœ€!†”ŠáùìP N¨{×$¥Üá”îãTMëÿmŸ°.?‚ô[Ar©Ž b A)©ž£‚„º÷ 1I4·9'YR7±>o'ÒûÝFJ²#ALËq4AÀ#jhêÇ0A@0‚P÷ž ʉ™#ˆ&Ýþè=„l-’Ç"ôá¹$G#1„ ˆTß´ -CuïJ(‘JS‡™q~&S”Ÿ~ŠÒ‹0ă"S‰t˜`ˆ¡îbiFD*=a©ÿ6›UÏ—«ª[ÉJ!ЦÇå7`‡°Õ£rxj)BêÛ£5‰ëgSn¹iݩű*}ªdÓý+Þû¾•´T‡!`ßµ‚8Þ=埸ý‡)Ñ#µª'…yEÓãªÜï͘Õ#þùüäý»MÖTaÏæ'ïÛiê¿¶qÌ2’¦Áï/1ÿS’IÉ~û·Dî¾ÌRhÂÓ¡ïc:#,Iô¨û1;ˆÞ"w@l¡ÿYþwendstream +xÚímsÛÆÇßëSð]¥™êŒ{Ƶ/:–§J'•”éLÓ¼€HˆBM4AZã~úˆ»ãR<lt±[6ãÉ’°Øåþ·¸'€t”Ùt$Q†™‘6‚ÈŒÊÑx~”¦öoßQwÌ©?èuv}ôì%×#CŒbjt};R&7'ËI–çtt=ùåøüÇW×ß¼º¾:ùõú»£o®ÃY¡gšñî”oŽ~ù5Ml +eŠNÅHKCg|óQìïˆu}rJ¹ÌޝïÊ“Sfß\ŠUÕ®ªqÛÿü²šÙ¿˜œ““S™eŸÛ‹0æýÏò@Ma¬öÆæ)$l/ýËé¨s v§Ðp_ýów‚ÐLïa厂ñ€ºï`‘t¤…¶¯4t,°lóf]¯Ê¥ý)ÏÌgŠÁ''Å'3™`ˆ‘Å¢Y>LJ$ŒÔý¶rpI„Ê+¡r¼*æ¾t”Ë·å2^F¶ –?½…ö™HbBÃL£BGÁ„FÝo…fœð\Q 4sBÿ»©Ð?•³.êqù[j->aõ9YQ`ˆ) +SJ33¬h$LQÔýVQJ ÏT”;E/˶™=¢ÉæŠ=½‚=(·ÏG²ÜÀ“æ•;&7ê>ÈŒ!ŒÁB-œÚWÍøu¹êµ½xöão‰®2ñ¨íÓ‘*6°C´†É¦4”:¢4ê{+t®‰}Ùê,ÎçÍ|aE½©fÕê]¯ê}µºë‚³c³s.M„É”
;ÍÙÅ«ýQ;íAÜhwL¾‡ ÿܺ„ƒ(ô K&!˜a lÅ ”s°†ÁÇ8öãM¥l_>×ùƳ¶ +’¹E‡IîG¨›QÐõ‰‰/›õͬlïìõ«+HCù gxì` ƒÈ(^àçCò±ï6Ö‚¤2Ýâa?/‘‡ÁÎy3Ÿwųk4?õj››y7ˆâ0¶InT!Í© +"jGFžH D¨{we—R¡h`(t/Vræºq³‰÷Íòµm]íºkîû7ãÂÁvÑ¿ü'ËØt½Ï•îfíÏpW„ÓÞ»>äôo¶¢ÓüP0(¸ÏI²àÀæ<&8ê>T
! ׯ+Î\Õ¸¨Ç½d]Ÿ>t꺑j?krWÔÓ¾ž_¬ +7òj=¿é¬“'T +!ðiJ† +%Òþ.P { +Âc&uKÆM}¢ r}((2>«ÉÈ + u¿:“„Ë +Ív„>-Úwõ8Yn-Žÿ¼³'Ó-v'»sû*›u;{×íÑbï)‘ÿÉCL"˜#ʆ7/ÅÁ$B݉˜á„©(Äwòs¶—7¬S˜ïZ-‹º-Æ~x‘gÕæ&)“ñOÓÄüL•Ø!êÁôaâE¢@´C}o¥Ë)¡¹Ò‰]é¦Eå$›–«n…¼ªo›nI«_ÎÚÙ,c¨‹y¹Ä*¬‘›‰•[rùñ5sŸ,Y³¦ÈªÙ~˜f˜ïfÊtON3@4¹+ÚzsÏÏpS›À„Öà!ßÒº÷‹¾N—ÅüäTï,[~¨
Âá“$‹1•`¦(~BP,L'ÔýV(©IÆ(J9¡êÖ¥÷ÆË4iæEU?«Ã3¢ZðŒ¨ñ]9~í¨jߪ–óvw'ÛåËóþÈ´H¿ËkP'ÿA’u†˜N0Q”
o‹‚鄺w£
&1Ül/_ºmì,»ìl³I×™<l4³âÓ™Ì +0ÄXr¡¬DÁXÙsÛ¨Í#<×}á?ë¶sðãŠzí÷.Š)²_;X?v¿64@ökïDEùðSUàù°\ì¹c2{¼í!ö«bg›e)nŽ'ÕôËØñðäæ„‚É-b-êR £
uïi£&'ŒqOëi»kºž¥ÔÜþpÜ‚ ©¸AC·Á)žwˆ‚à†»¸åŠPáTu¶YúêŠ[ݶåøtÒÞö½·ùëÒvxžhúÝùD'c1Œ ”b`¡îFZL‘ØÁÈÂã9š7åì‰?5ø°ã³›Ì0ÄØêQ1¼Ç4Æê>°£(1ZsÇŽ|Èδìömy¸®} š|¾“i†MPO*Ø0M‘@0šP÷&aHn¤§IíÐÔmß6¯»µWID} ¢|Γ‰†QPS*.R$Œ(Ô} Šk’Sî‰Ò;DµåjUuSY‡õápò OÆ b8AA©žÕŽ‚á„º81I4wô8#ù.NÕ´þßæ©êBðHï’Ou2HÀ Ji‹É0H‘@0P÷$ʉƃdzº‰õÉéf"½ßm¤$;ô» ò9N&bA
©~fm,Œ Ô} (£D*÷03B³nôB®ÉCúýù$'#1„ ˆTß´CuïÊ
¹Q@æy˜¡üø3”^ƒTÀ€ÂT˜ÊáÎR$ +„.Ô·‡Kk"2ßï¦V§ÿ6ëe]Ì˪[ÇJðIÿÞ“>½Éßz̰ï<ÙJGÕð„Ò~Ø÷ Ž·Oõ'~ŸE†;dZ¿ùCjq(Eó‰é}úÓŸðO~{ƒ&Cj?„=¤ÂW)ž2Cò<ú}öJŒ”ìý¿¹qû“Bž}ãÓ†°,Ó£î{¹Üè´z‹Üİ9 +„þ¿í†endstream endobj -1136 0 obj << +1140 0 obj << /Type /Page -/Contents 1137 0 R -/Resources 1135 0 R +/Contents 1141 0 R +/Resources 1139 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 927 0 R -/Annots [ 1139 0 R 1140 0 R 1141 0 R 1142 0 R 1143 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R 1196 0 R ] +/Parent 931 0 R +/Annots [ 1143 0 R 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R 1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R 1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R 1170 0 R 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R 1196 0 R 1197 0 R 1198 0 R 1199 0 R 1200 0 R ] >> endobj -1139 0 obj << +1143 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 758.4766 511.2325 767.5824] /Subtype /Link -/A << /S /GoTo /D (subsection.6.4.1) >> +/A << /S /GoTo /D (subsubsection.6.4.0.1) >> >> endobj -1140 0 obj << +1144 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 746.3946 511.2325 755.5003] /Subtype /Link -/A << /S /GoTo /D (subsubsection.6.4.1.1) >> +/A << /S /GoTo /D (subsection.6.4.1) >> >> endobj -1141 0 obj << +1145 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 734.3125 511.2325 743.4183] /Subtype /Link -/A << /S /GoTo /D (subsubsection.6.4.1.2) >> +/A << /S /GoTo /D (subsubsection.6.4.1.1) >> >> endobj -1142 0 obj << +1146 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 722.2305 511.2325 731.3362] /Subtype /Link -/A << /S /GoTo /D (subsubsection.6.4.1.3) >> +/A << /S /GoTo /D (subsubsection.6.4.1.2) >> >> endobj -1143 0 obj << +1147 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 710.1484 511.2325 719.2542] /Subtype /Link -/A << /S /GoTo /D (subsubsection.6.4.1.4) >> +/A << /S /GoTo /D (subsubsection.6.4.1.3) >> >> endobj -1147 0 obj << +1148 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 698.0664 511.2325 707.1721] /Subtype /Link +/A << /S /GoTo /D (subsubsection.6.4.1.4) >> +>> endobj +1152 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [494.296 686.084 511.2325 695.0901] +/Subtype /Link /A << /S /GoTo /D (subsubsection.6.4.1.5) >> >> endobj -1148 0 obj << +1153 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 675.4943 511.2325 684.351] +/Rect [494.296 663.4123 511.2325 672.2689] /Subtype /Link /A << /S /GoTo /D (chapter.7) >> >> endobj -1149 0 obj << +1154 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 663.4321 511.2325 672.5379] +/Rect [494.296 651.3501 511.2325 660.4558] /Subtype /Link /A << /S /GoTo /D (section.7.1) >> >> endobj -1150 0 obj << +1155 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 651.3501 511.2325 660.4558] +/Rect [494.296 639.3677 511.2325 648.3738] /Subtype /Link /A << /S /GoTo /D (section.7.2) >> >> endobj -1151 0 obj << +1156 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 639.268 511.2325 648.3738] +/Rect [494.296 627.2856 511.2325 636.2917] /Subtype /Link /A << /S /GoTo /D (subsection.7.2.1) >> >> endobj -1152 0 obj << +1157 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 627.186 511.2325 636.2917] +/Rect [494.296 615.2036 511.2325 624.2097] /Subtype /Link /A << /S /GoTo /D (subsection.7.2.2) >> >> endobj -1153 0 obj << +1158 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 615.1039 511.2325 624.2097] +/Rect [494.296 603.1215 511.2325 612.1276] /Subtype /Link /A << /S /GoTo /D (section.7.3) >> >> endobj -1154 0 obj << +1159 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 592.5318 511.2325 601.3885] +/Rect [494.296 580.5943 511.2325 589.3064] /Subtype /Link /A << /S /GoTo /D (chapter.8) >> >> endobj -1155 0 obj << +1160 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 580.4697 511.2325 589.5754] +/Rect [494.296 568.4873 511.2325 577.4934] /Subtype /Link /A << /S /GoTo /D (section.8.1) >> >> endobj -1156 0 obj << +1161 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 568.3876 511.2325 577.4934] +/Rect [494.296 556.4052 511.2325 565.4113] /Subtype /Link /A << /S /GoTo /D (subsection.8.1.1) >> >> endobj -1157 0 obj << +1162 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 556.3056 511.2325 565.4113] +/Rect [494.296 544.3232 511.2325 553.3293] /Subtype /Link /A << /S /GoTo /D (section.8.2) >> >> endobj -1158 0 obj << +1163 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 544.2235 511.2325 553.3293] +/Rect [494.296 532.2411 511.2325 541.2472] /Subtype /Link /A << /S /GoTo /D (section.8.3) >> >> endobj -1159 0 obj << +1164 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 521.6514 511.2325 530.5081] +/Rect [494.296 509.5694 511.2325 518.426] /Subtype /Link /A << /S /GoTo /D (appendix.A) >> >> endobj -1160 0 obj << +1165 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 509.5892 511.2325 518.695] +/Rect [494.296 497.5072 511.2325 506.6129] /Subtype /Link /A << /S /GoTo /D (section.A.1) >> >> endobj -1161 0 obj << +1166 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 497.5072 511.2325 506.6129] +/Rect [494.296 485.4252 511.2325 494.5309] /Subtype /Link /A << /S /GoTo /D (subsection.A.1.1) >> >> endobj -1162 0 obj << +1167 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 485.4252 511.2325 494.5309] +/Rect [494.296 473.3431 511.2325 482.4488] /Subtype /Link /A << /S /GoTo /D (section.A.2) >> >> endobj -1163 0 obj << +1168 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 473.3431 511.2325 482.4488] +/Rect [494.296 461.2611 511.2325 470.3668] /Subtype /Link /A << /S /GoTo /D (subsection.A.2.1) >> >> endobj -1164 0 obj << +1169 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 461.2611 511.2325 470.3668] +/Rect [494.296 449.179 511.2325 458.2847] /Subtype /Link /A << /S /GoTo /D (section.A.3) >> >> endobj -1165 0 obj << +1170 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 449.179 511.2325 458.2847] +/Rect [494.296 437.097 511.2325 446.2027] /Subtype /Link /A << /S /GoTo /D (subsection.A.3.1) >> >> endobj -1166 0 obj << +1171 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 437.097 511.2325 446.2027] +/Rect [494.296 425.1146 511.2325 434.1207] /Subtype /Link /A << /S /GoTo /D (subsection.A.3.2) >> >> endobj -1167 0 obj << +1172 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 425.0149 511.2325 434.1207] +/Rect [494.296 413.0325 511.2325 422.0386] /Subtype /Link /A << /S /GoTo /D (subsection.A.3.3) >> >> endobj -1168 0 obj << +1173 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 412.9329 511.2325 422.0386] +/Rect [494.296 400.9505 511.2325 409.9566] /Subtype /Link /A << /S /GoTo /D (section.A.4) >> >> endobj -1169 0 obj << +1174 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 400.9505 511.2325 409.9566] +/Rect [494.296 388.7688 511.2325 397.8745] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.1) >> >> endobj -1170 0 obj << +1175 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 388.8684 511.2325 397.8745] +/Rect [494.296 376.6867 511.2325 385.7925] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.2) >> >> endobj -1171 0 obj << +1176 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 376.7864 511.2325 385.7925] +/Rect [494.296 364.6047 511.2325 373.7104] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.3) >> >> endobj -1172 0 obj << +1177 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 364.7043 511.2325 373.7104] +/Rect [494.296 352.5226 511.2325 361.6284] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.4) >> >> endobj -1173 0 obj << +1178 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 352.6223 511.2325 361.6284] +/Rect [494.296 340.4406 511.2325 349.5463] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.5) >> >> endobj -1174 0 obj << +1179 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 340.5402 511.2325 349.5463] +/Rect [494.296 328.3585 511.2325 337.4643] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.6) >> >> endobj -1175 0 obj << +1180 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 328.4582 511.2325 337.4643] +/Rect [494.296 316.2765 511.2325 325.3822] /Subtype /Link /A << /S /GoTo /D (subsubsection.A.4.6.1) >> >> endobj -1176 0 obj << +1181 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 316.2765 511.2325 325.3822] +/Rect [494.296 304.2941 511.2325 313.3002] /Subtype /Link /A << /S /GoTo /D (subsubsection.A.4.6.2) >> >> endobj -1177 0 obj << +1182 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 304.1944 511.2325 313.3002] +/Rect [494.296 292.212 511.2325 301.2181] /Subtype /Link /A << /S /GoTo /D (subsubsection.A.4.6.3) >> >> endobj -1178 0 obj << +1183 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 292.1124 511.2325 301.2181] +/Rect [494.296 280.13 511.2325 289.1361] /Subtype /Link /A << /S /GoTo /D (subsubsection.A.4.6.4) >> >> endobj -1179 0 obj << +1184 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 280.13 511.2325 289.1361] +/Rect [494.296 267.9483 511.2325 277.054] /Subtype /Link /A << /S /GoTo /D (subsubsection.A.4.6.5) >> >> endobj -1180 0 obj << +1185 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 267.9483 511.2325 277.054] +/Rect [494.296 255.8662 511.2325 264.972] /Subtype /Link /A << /S /GoTo /D (subsubsection.A.4.6.6) >> >> endobj -1181 0 obj << +1186 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 255.8662 511.2325 264.972] +/Rect [494.296 243.7842 511.2325 252.8899] /Subtype /Link /A << /S /GoTo /D (subsection.A.4.7) >> >> endobj -1182 0 obj << +1187 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 233.4386 511.2325 242.1508] +/Rect [494.296 221.2121 511.2325 230.0687] /Subtype /Link /A << /S /GoTo /D (appendix.B) >> >> endobj -1183 0 obj << +1188 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 221.3316 511.2325 230.3377] +/Rect [494.296 209.1499 511.2325 218.2557] /Subtype /Link /A << /S /GoTo /D (section.B.1) >> >> endobj -1184 0 obj << +1189 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 209.1499 511.2325 218.2557] +/Rect [494.296 197.0679 511.2325 206.1736] /Subtype /Link /A << /S /GoTo /D (section.B.2) >> >> endobj -1185 0 obj << +1190 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 197.0679 511.2325 206.1736] +/Rect [494.296 184.9858 511.2325 194.0916] /Subtype /Link /A << /S /GoTo /D (section.B.3) >> >> endobj -1186 0 obj << +1191 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 184.9858 511.2325 194.0916] +/Rect [494.296 172.9038 511.2325 182.0095] /Subtype /Link /A << /S /GoTo /D (section.B.4) >> >> endobj -1187 0 obj << +1192 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 172.9038 511.2325 182.0095] +/Rect [494.296 160.9214 511.2325 169.9275] /Subtype /Link /A << /S /GoTo /D (section.B.5) >> >> endobj -1188 0 obj << +1193 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 160.9214 511.2325 169.9275] +/Rect [494.296 148.7397 511.2325 157.8454] /Subtype /Link /A << /S /GoTo /D (section.B.6) >> >> endobj -1189 0 obj << +1194 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 148.7397 511.2325 157.8454] +/Rect [494.296 136.7573 511.2325 145.7634] /Subtype /Link /A << /S /GoTo /D (section.B.7) >> >> endobj -1190 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [494.296 136.6576 511.2325 145.7634] -/Subtype /Link -/A << /S /GoTo /D (section.B.8) >> ->> endobj -1191 0 obj << +1195 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 124.5756 511.2325 133.6813] /Subtype /Link -/A << /S /GoTo /D (section.B.9) >> +/A << /S /GoTo /D (section.B.8) >> >> endobj -1192 0 obj << +1196 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 112.4935 511.2325 121.5993] /Subtype /Link -/A << /S /GoTo /D (section.B.10) >> +/A << /S /GoTo /D (section.B.9) >> >> endobj -1193 0 obj << +1197 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 100.4115 511.2325 109.5172] /Subtype /Link -/A << /S /GoTo /D (section.B.11) >> +/A << /S /GoTo /D (section.B.10) >> >> endobj -1194 0 obj << +1198 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 88.3294 511.2325 97.4352] /Subtype /Link -/A << /S /GoTo /D (section.B.12) >> +/A << /S /GoTo /D (section.B.11) >> >> endobj -1195 0 obj << +1199 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 76.2474 511.2325 85.3531] /Subtype /Link -/A << /S /GoTo /D (section.B.13) >> +/A << /S /GoTo /D (section.B.12) >> >> endobj -1196 0 obj << +1200 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [494.296 64.1653 511.2325 73.2711] /Subtype /Link -/A << /S /GoTo /D (section.B.14) >> +/A << /S /GoTo /D (section.B.13) >> >> endobj -1138 0 obj << -/D [1136 0 R /XYZ 56.6929 794.5015 null] +1142 0 obj << +/D [1140 0 R /XYZ 56.6929 794.5015 null] >> endobj -1135 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F40 1146 0 R /F21 926 0 R >> +1139 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F39 1151 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1199 0 obj << -/Length 622 +1203 0 obj << +/Length 660 /Filter /FlateDecode >> stream -xÚíØÍoÚ0 -—ƒ]?<Û×Ní¤:mÍë!J(LiÚÇŸ?‡àÔŽ§hp*Bˆ -
˜Í+ -ÌñŠh¦y% -Éñʦy0€—xùsÔ¦îÚ§uùó¯“À -[?V˜ƒ·6+QHV6}€…þÀjT{X‚°¾nºZ×
ý¹øýãÙûrpuQãžÏfD½ê) •*$#*Ÿ~e
sŸFƒ¨n»häªÞ®Jê¤<ŸªN+lýlXQ`VÜZ@7
+QȬñŽE-˜B+S7-ü˜ÓZüÿ-’—9þ‚´V¤—+¹eΡ!þ‡_?W¿ØŸ“KÝŠ*ÿµendstream +xÚíØ;oÛ0 +Ü[PÍùü²Qˆg›ì-ZHßg9iïvEú‹/qÃCO~:×q0ê¤ (UHÎ[6ýàMYf¬…àMwé¯ïDc…`ªKÑ
ê(²úµ}éG¾›Õ +Û>U˜C·ŒG•($‡*›~@åËð瑨lªiÚÝ•3vÖt&Ma¿'kŠsšâ~‚ÁqM‰Brš²éM +3»è'`hÀd^Q`ŽWÜ`°0Î+QHŽW6}àeü…ÓF^ØóògÔ¶j›×M÷ñgf_—€5lýTXq`Ö»Öæ`¥ +ÉÀʧ`9ËC¸¥¼‡õmWÓõ¦ªéWÎÅŸŸoÞÂ,êL¢ÂžOæDÅ=+ÆE% +ɉʦDYÍP™pÓ( Õî–µ\W»õ‚¢”óQuXaë'Ês°âÖ‚•ã°…œÀžQ£8Ó !õÌÿCÅÿ?’;>8ôwÒ9‘^®äŽ!KümD7W·Ø_£K=Š*ÿïK¿endstream endobj -1198 0 obj << +1202 0 obj << /Type /Page -/Contents 1199 0 R -/Resources 1197 0 R +/Contents 1203 0 R +/Resources 1201 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1211 0 R -/Annots [ 1204 0 R 1205 0 R 1206 0 R 1207 0 R 1208 0 R 1209 0 R 1210 0 R ] +/Parent 1216 0 R +/Annots [ 1205 0 R 1209 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1214 0 R 1215 0 R ] >> endobj -1204 0 obj << +1205 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 758.4766 539.579 767.5824] /Subtype /Link -/A << /S /GoTo /D (section.B.15) >> +/A << /S /GoTo /D (section.B.14) >> >> endobj -1205 0 obj << +1209 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 746.5215 539.579 755.6272] /Subtype /Link -/A << /S /GoTo /D (section.B.16) >> +/A << /S /GoTo /D (section.B.15) >> >> endobj -1206 0 obj << +1210 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 734.5663 539.579 743.672] /Subtype /Link -/A << /S /GoTo /D (section.B.17) >> +/A << /S /GoTo /D (section.B.16) >> >> endobj -1207 0 obj << +1211 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [522.6425 722.6111 539.579 731.7169] /Subtype /Link +/A << /S /GoTo /D (section.B.17) >> +>> endobj +1212 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [522.6425 710.7556 539.579 719.7617] +/Subtype /Link /A << /S /GoTo /D (section.B.18) >> >> endobj -1208 0 obj << +1213 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [522.6425 710.656 539.579 719.7617] +/Rect [522.6425 698.8005 539.579 707.8065] /Subtype /Link /A << /S /GoTo /D (section.B.19) >> >> endobj -1209 0 obj << +1214 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [522.6425 698.7008 539.579 707.8065] +/Rect [522.6425 686.8453 539.579 695.8514] /Subtype /Link /A << /S /GoTo /D (section.B.20) >> >> endobj -1210 0 obj << +1215 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [522.6425 686.7456 539.579 695.8514] +/Rect [522.6425 674.7905 539.579 683.8962] /Subtype /Link /A << /S /GoTo /D (section.B.21) >> >> endobj -1200 0 obj << -/D [1198 0 R /XYZ 85.0394 794.5015 null] +1204 0 obj << +/D [1202 0 R /XYZ 85.0394 794.5015 null] >> endobj -1197 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R >> +1201 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1214 0 obj << +1219 0 obj << /Length 2174 /Filter /FlateDecode >> @@ -4256,245 +4266,253 @@ xÚÝYÝoã6÷_áGXëø%‘ìãî¶ÅÅî’¢½>(ckK®>’ºý
9C[ŠåÍö6ÀE€ˆ¤†äpæ7¿Ê|Éà/M–2iÕR ìn+×í
7Éz[‹Žî‹º3k•¼iPÿ¦½1ɰó›ûE†Î•8þдØ(ÝÎmоª7´ÏÐo›¶êAÍ#Ž4ŽdÃáh‡¢¦•h+F žœˆ‡UûÃÎíÁEðëJ€¢ý¶ðîÒYR¬û¡ØíŽ8¾/¶¢)A$؆F~öË2XÂuëRPÂÈ¼Š¢eÑ(Vuqå 4¨joßñË`wÖj†Ž‚÷f|SHÚê~èÃ"Ùœ?ü¨ßü¾ZEÌs•J•B±b©È%bž§ -<ð|߬o¹ù`&͵KÞºö85ØÓNBƒÅp€ñs°o?||Oñ +<ð|߬o¹ù`&͵KÞºö85ØÓNBƒÅp€ñs°o?||Oñ FŠüäuܹê;´¡’<ÕY®§6<ÁG‰ÐB žD8^øú &®*‚îóSˆÏš|SXuYµ)©Ú„âüѳoSSiùS¯wUý•eg(£ãÜsÙºOëàïg7b¸„%Wð¡Ðñ€^Á;NÀNTÿ¯ÕâÛ»Ó÷›CHᙺQ ÿñæ·Å/¿²e¹`Ë,•ÖdË'è0°&TŠû…’Ðd™‰#»Åíâ_ÿ㬨ǨP¸ªÎc°5#º§Kâ™V܇3üôEjŠfø –Q£¢+O(Ÿèº³ß…Ù¤ -µ¾€Ð5༚ºÜ¸c3Í¡vÃH-Ôø·¿‹ß +µ¾€Ð5༚ºÜ¸c3Í¡vÃH-Ôø·¿‹ß endobj -1213 0 obj << +1218 0 obj << /Type /Page -/Contents 1214 0 R -/Resources 1212 0 R +/Contents 1219 0 R +/Resources 1217 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1211 0 R +/Parent 1216 0 R >> endobj 6 0 obj << -/D [1213 0 R /XYZ 85.0394 769.5949 null] +/D [1218 0 R /XYZ 85.0394 769.5949 null] >> endobj -1215 0 obj << -/D [1213 0 R /XYZ 85.0394 582.8476 null] +1220 0 obj << +/D [1218 0 R /XYZ 85.0394 582.8476 null] >> endobj 10 0 obj << -/D [1213 0 R /XYZ 85.0394 512.9824 null] +/D [1218 0 R /XYZ 85.0394 512.9824 null] >> endobj -1216 0 obj << -/D [1213 0 R /XYZ 85.0394 474.7837 null] +1221 0 obj << +/D [1218 0 R /XYZ 85.0394 474.7837 null] >> endobj 14 0 obj << -/D [1213 0 R /XYZ 85.0394 399.5462 null] +/D [1218 0 R /XYZ 85.0394 399.5462 null] >> endobj -1217 0 obj << -/D [1213 0 R /XYZ 85.0394 363.8828 null] +1222 0 obj << +/D [1218 0 R /XYZ 85.0394 363.8828 null] >> endobj 18 0 obj << -/D [1213 0 R /XYZ 85.0394 223.0066 null] +/D [1218 0 R /XYZ 85.0394 223.0066 null] >> endobj -1218 0 obj << -/D [1213 0 R /XYZ 85.0394 190.9009 null] +1223 0 obj << +/D [1218 0 R /XYZ 85.0394 190.9009 null] >> endobj -1219 0 obj << -/D [1213 0 R /XYZ 85.0394 170.4169 null] +1224 0 obj << +/D [1218 0 R /XYZ 85.0394 170.4169 null] >> endobj -1220 0 obj << -/D [1213 0 R /XYZ 85.0394 158.4617 null] +1225 0 obj << +/D [1218 0 R /XYZ 85.0394 158.4617 null] >> endobj -1212 0 obj << -/Font << /F21 926 0 R /F22 949 0 R /F40 1146 0 R /F41 1203 0 R /F48 1223 0 R >> +1217 0 obj << +/Font << /F21 930 0 R /F22 953 0 R /F39 1151 0 R /F41 1208 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1226 0 obj << -/Length 3185 +1231 0 obj << +/Length 3187 /Filter /FlateDecode >> stream -xÚÍÛrã¶õÝ_¡Gyf…âBðÒ7g/3o²v'Ó&y EÈæ,E2"e÷ë{ÎEJtvÛ¦ÓŒÀ¹ß`µð§6q¦³E’EÂJeëí…\<ÀÚß.ìÐjõÍÝÅ_Þ™d‘‰,Öñân3:+2MÕâ®øy©D$.á¹¼ûöíåJ[¹|óþû«ëß\}ϳ·ÿ¸½{û=‘V¾¹¹…º\)'rùúÛ«îÞ~ uÅG^ßÜ}xÿæï¯ï®ßß\þz÷ÝÅÛ»ë1eJDù·‹Ÿ•‹üîB -“¥vq€R¨,Ó‹íEd°‘1a¦º¸½øq8p´ê·ÎrJI¡M¬gX¥õ«l&b£gÕÝ£#ò6MU5‡²~ Ÿë¦~ru_6uGùîR¥KÞw® QYÓ·pÝzW¶£
͆¾}¸á›ë›7Ãá¿H©ö»7þK]¹¿ž²4NE¬$`E"ü¿Š§:‰LNxúŸí -xÈ(…ȬýhŸ„³xvLZšV‰ÑªhW$GòJ"‘¥É"11è’ŒI\—J©e3æù=ðl¥RmÌò§K-G":á×?Ïð7Ê‘©ïpùï¨C>°Åÿ ôÖÂÙ³8¦Áú"yŽ}tχÆënÑ!íÀd5Ú¢uB7Jý®ü„šK¹ü©,úÇ—¹EˆdrvIIp˜¿Ë.¥á4Iþà)ß•ù}åþP^°øóò*ÎÀ?F©ý}^Iôµ–ÂÌ{ïîò*xÂv߃%ÆFÚåÏw—™^ºO=¯±OtõºjÎ|g÷Û~â]ïwùú£ë»__äè×?Š£Çóÿp¯Zf"M (PÉŒ1ãPwòt’Š(5òbŸ`}”šZ¨H˜âá(æÅpªÌ€sœ€œ$èíýÞ4Û<ˆã&ßòìís×»íyzàMc¢€<™%Ù(ª¦fÙîwmÓñáÛ?z}Hõ²hÖû-„Yš§YXoèë>µaå7ñ)eÝõyU…È 3y]Ðqûö£síée¼Ã/Œ”oÜÜ3Í\×½ÛÕ®GÊÆ‘iavd13‰$Ùe×lúÃQs¢ÅÍܫ˕‘ ãÓ^¾wž>Ó´û©tœzÀaƒÍ¾.rdO^u퉃rƒ±GtB -ìÓ_1lK…V ùœ×U Ò÷Êf—UÓ|¤Ñ¾¥ï”³~‚¾œ½Ù J`9—jùLChÅ»‘SÄ–“ˆ
Þ=#ŽØÌͦžÍh¡1]Œb઄8´{ö ç+ºï -Â"×ñ=õÉz›÷45²SŒ8ˆø˜ÂKçœ8Å$Sc¯Ñ4ýoTIœžO¡Š ù”LvGizÄY|IäX Rþ„ -:C:„û1ØÇ„ðê˜ÌÈ+^¥É”WsÔ œIFÔL¼õи8ë½{晨±Å‡•3C4˜LžHœã&F‡e}ÊæeâpŽ:(üyèóØ{¾Ä@áã½/À|‡§„œ!9tÎÄÌ(Ú¤¡zùgÍ% ZeâQRŒH:Ã=n=bâ³¼»ç/Ë<SIìIöM‘Ǫ³)ìäAÁõ–ò !¨ÞQÓ -ì%ßÐéhHEÐz´t´c‚äZ†D¯zÐwCäl[c6ˆ1–~lÂDxØ?WÁ½çãvä\ú…Îd°££¢qm3£ª©ˆÌ$ÁpêG4„î€%ÿ1ª aò±þD}?s9‰ÏÃÕ|: AÓhðìC†¢vÓ7릚sîVÄzp("x%TfOl…¤¡Y -0ÿLDk»‡
>LÚȾß÷þÏNõ]E·>¾]BÍ$Ô)2˜ò+Åâøô³Vö -òÔDMúŽ/è‹K(Ï£ÙjüK
€`ß<91ï+î - -½ŽÂUîaôÎtöEÁuÔáNÄÍïZ7uöØÏ‡öqxÃjù°_ÍÙ:B¯?˜RÎ?Ùct…ñ±•„¿(3‚AÈ>2*0³Ð£õOY¤€~ü˜ó%X>V®ç§¦i‹–ùy¶WX¯Á¸í‘û'Åv¾êweO2ò©]Jï.ÌÊÚ†Þ -žM`zÜçÔ”CÝ®g`”-8|¯?æPsK» ™p(ç[Ó›FÜ´ø&¹v-Dò{á_ ŒÑô÷øŸ4_|¼ÿÚ:þ—” -&Mõþ0Å‘Bè3ÄÿQcþ/c©bendstream +xÚÍÛrã¶õÝ_¡Gyf…àBðÒ7g/3oºv'Ó&y EÈæ,E2"e÷ë{ÎEJtvÛ¦ÓŒÀ¹ß`µð§6q¦³E’EÂJeëí…\<ÀÚ_/ìÐjõíÝÅ7ïL²ÈDëxq·• +™¦jqWü¼T"—p‚\Þ}÷ör¥\¾yÿÃÕõ
o®~àÙÛÜÞ½ýÆ¿H+ßÜÜÂG]®”й|ýÝÕwo?кâ#¯oî>¼ó÷×w×ïo.½ûþâíÝ€õ˜2%
¢üÛÅÏ¿ÊE~!…ÉR»8À)T–éÅö"²FØÈ˜0S]Ü^üm8p´ê·ÎrJI¡M¬gX¥õ«l&b£gÕÝ£#ò6MU5‡²~ Ÿë¦~ru_6uGùîR¥KÞw® QYÓ·pÝzW¶£
͆¾}¸áÛë›7Ãá¿H©ö»7þK]¹¿œ²4NE¬$`E"ü¿Š§:‰LNxúŸí +xÈ(…ȬýhŸ„³xvLZšV‰Ñªè¨ÚÙH^I$²4Y$&]’1‰ëR)µlÆ<¿žTªYþt©åHD'üïúçþFY"2•á=.ÿuÈG¶ø?a˜–ÂZ8{VÃÇ4X_d#ϱîùÐxÝ-:¤ý›w‘mÑ:¡¥‡~W~BÍŽ¥\þTýãËÜ"D²?9»$Œ$8Ìße—Òpš$ð”ïÊü¾r(¯FXüyygà£Ôþ>¯$úZKaæ½wwy<a»ïÁc#íòç»ËL/ݧž×Ø'ºz]5g¾³ûm?ñ®÷»|ýÑõݯ/rtŒëÅÑc„ù¸W-3‘&”V¨dƘq¨;y:IE”y1ÈÏ@°>JM-T$Lñpób8UfÀ9N@Nôvˆ~ošmÄq“oyöö¹ëÝö<=ð¦1Qˆ@žÌ’lUS³l÷»¶éø‡ˆðí½>¤zY4ëýÂ,ÍÓ,¬7ôuŸÚаò›ø”²îú¼ªBä„™¼.è¸}ûѹöô2ÞÇáFHÊ·n÷ÑUî™f®ëÞíj×#eãH‡´0;²˜™D ’Îì²k6ýᨹ +”'ŽŽÄÅ6Hfr`vJ,z‚oNë¥Û‘€Öå:¯^á4D²ë!qØ÷Þx‘÷ù}Þ9Hquèiºë)rºŽŽ+ëM³ÛÍ +Â"×ñ=õÉz›÷45²SŒ8ˆø˜ÂKçœ8Å$Sc¯Ñ4ýoTIœžO¡Š ù”LvGizÄY|IäX Rþ„ +9›ÂN<\k)ŸÒˆê8À^ò
𘎆T¡GKG;&H®EaHôú¡§}7DAζ5fƒcéÇ&\A„‡ýslЛq9nGÎ¥/QèL;:*×63ªšŠÈLò¡~DCèXÒù£ +V ëOÔ÷3—“ø¬1<QͧÔ:Ï>t`(j7}³nª9çnE¬‡"‚GPBeöÄVH +ij+PÂé(;öÔüá3h2ëb6‘O óCˆ¥:l-¡âeÑò¶ H{÷ÂÈ£)biO\g·oÛf×ýšÁi˜
Ù>Kö¹usÏŽáÁ먰'
r€¿‡òTP€ùg"ZÛ=,hðaÒF&ðÕþ¼÷vªï*ºõñíj&¡N‘Á”_)(ǧŸµ²¨/ q~ÚHQue§ÊôœS‡„fè½øJ«pÞo”UbÉ´ùä«/2ÁIA ¼/j®æ6óÕfÌ-•Ì,
´ +H•²/hÊ +‘tôÚÄ„¶)Ã;Tèu®r£w¦³§( +®£fw"®höx׺©;°Çn|>”°ÃÓ¶PˇýjÎÖzýÁ”rþ!È£+Œ$üE™Bö‘Q™…Ê"ôãÇœ/Áò±r=?5M[ô°ÌÏ[€Ì°u¸Âz
ÆmÜo<)¶ó=P¿+{’‘OíRzwdîØPÖ6ôV`0ÐhõðlÓã>§¦|êv=£lÁá“xý1‡š[ÚÍ„C9ßšÞ4â¦Å7ɵkù ’ßÿe¬ˆ¦¯¸Çÿ¤ùâãý×þ{Ôñ¿Ä T0iª_ð‡)¶ˆÌ€ +@Ÿ!þêó4Ï©Êendstream endobj -1225 0 obj << +1230 0 obj << /Type /Page -/Contents 1226 0 R -/Resources 1224 0 R +/Contents 1231 0 R +/Resources 1229 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1211 0 R -/Annots [ 1232 0 R 1233 0 R ] +/Parent 1216 0 R +/Annots [ 1237 0 R 1238 0 R ] >> endobj -1232 0 obj << +1237 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [272.8897 207.1951 329.1084 219.2548] /Subtype /Link /A << /S /GoTo /D (types_of_resource_records_and_when_to_use_them) >> >> endobj -1233 0 obj << +1238 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [190.6691 179.6723 249.6573 189.0819] /Subtype /Link /A << /S /GoTo /D (rfcs) >> >> endobj -1227 0 obj << -/D [1225 0 R /XYZ 56.6929 756.8229 null] +1232 0 obj << +/D [1230 0 R /XYZ 56.6929 756.8229 null] >> endobj -1228 0 obj << -/D [1225 0 R /XYZ 56.6929 744.8677 null] +1233 0 obj << +/D [1230 0 R /XYZ 56.6929 744.8677 null] >> endobj 22 0 obj << -/D [1225 0 R /XYZ 56.6929 651.295 null] +/D [1230 0 R /XYZ 56.6929 651.295 null] >> endobj -1229 0 obj << -/D [1225 0 R /XYZ 56.6929 612.4036 null] +1234 0 obj << +/D [1230 0 R /XYZ 56.6929 612.4036 null] >> endobj 26 0 obj << -/D [1225 0 R /XYZ 56.6929 555.4285 null] +/D [1230 0 R /XYZ 56.6929 555.4285 null] >> endobj -1230 0 obj << -/D [1225 0 R /XYZ 56.6929 530.6703 null] +1235 0 obj << +/D [1230 0 R /XYZ 56.6929 530.6703 null] >> endobj 30 0 obj << -/D [1225 0 R /XYZ 56.6929 416.0112 null] +/D [1230 0 R /XYZ 56.6929 416.0112 null] >> endobj -1231 0 obj << -/D [1225 0 R /XYZ 56.6929 391.253 null] +1236 0 obj << +/D [1230 0 R /XYZ 56.6929 391.253 null] >> endobj 34 0 obj << -/D [1225 0 R /XYZ 56.6929 164.815 null] +/D [1230 0 R /XYZ 56.6929 164.815 null] >> endobj -1234 0 obj << -/D [1225 0 R /XYZ 56.6929 137.4068 null] +1239 0 obj << +/D [1230 0 R /XYZ 56.6929 137.4068 null] >> endobj -1224 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F40 1146 0 R /F41 1203 0 R /F21 926 0 R >> +1229 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F39 1151 0 R /F41 1208 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1239 0 obj << -/Length 3414 +1244 0 obj << +/Length 3415 /Filter /FlateDecode >> stream -xÚ¥ZKsã6¾ûWè¹jÍàA -¬f~oöTf¹Ð¹ßÓ”°R9È ªÝÊoH‹ùªÛõͺö&$/'B”Rg%ˆŠ¥XÿYm÷mºmBâÖee)]wÛ -¥Ž+ÙÁ:ÍnÕ×uO»jKM3ï4$ŸW}ŠíÔœfßtýUU•–èTµÃTy~zªiv•È”-4OXíÖ©UA‰„RÓE—Ëeöe9H%³¢pá«ú¹F1èdÜq“ú-y;YÐÚÿMÜ~Á&þòö„‹LËt»ö•è£r×è MèL8u&´7ÂdEiÃ)L Íd)3—«¯¹ -×áIðL{Z†6=9†Ð^b[õƒ‡äçüXiÿ}[=ûÑ ªõªÁiáx=ûf"À¯‹‚íw¶ï°{HùE•Ññ<Z^´ß׫æá•Öó›ðJ"H=‘ÈÖŠ{såü?›zGtÖ8¡ÉQún˳XÅš£K ŽÜåeqf¯(@M€¥ÑU÷ôþÒ´-© =šÃ{E¯Ax@¡Ó$òƒŸ,RPÙ -÷u-ëøÏ1ų—óöaס*†ÃÉ›aŠGî/!˜2)dA¾°òWi.°åO):5Ñ|zOUðlëªç&~—8 ƒm¢Ÿê”[üŽÍZ|ð‰ˆS€ó*µœ_>F ð%˜Êàý£è8Ÿà×ÕPQ‹Î‰GÒ1YXÁœ>”sÜèÂÍ×¥š£Ÿp°à åë8ŽAE HéÚúPù„Èþ\Ti“@ÜÕÃKwx"êCÕ´GŽ†Ð -2Æ~ ‘^-hÜÆkž_饣FÇÇÓSYÒ7)¤š*GHœ…d¸¨OóEf¹OúçºßÞQÂãæän·øVœ<à•©Ÿ÷¥‚»†âùÅgèèú{&Œ¸½õ•ß¿ôñ’ŸŸ”¦ãÌ,gÏ-uí«ÕSRTõ€pit ®€Âùóïc »%"Â+Ó:¢@ò¹úBhôu½ÇO¨^u°JŒpþxŒ>öqäÐu-SÛæ©Ž01 ºdž©ÂƵyLYS‘I0ÉèAŒ8/ùÈ,«äï•â¸Õ–;3j|žVkÂø›é—ÕšËy‘ƒûzuÃE
é×™ªFŒÔ™ÎdvQž’Zeé³Üä¸K֓⨛é°K/gcÉ,!np£™ò™¥†dUƒ‰èŒ>/B=ã'€påä…_ÅeŠ?œ» -<÷¤›jÏõ|WÖô|[¯6Õ.î -(öàÙÃ)Äfàš‘ShÇ*"…øŒÌÍ…CÍlfžz`M@ï8¯àÉÆ´ T -/2IkóÓ²‘/pûÉm2™» Y]2È” 3&ÌLꋳæ23R›¨?|d% ¯0§nó#â›4AÌ‚¯ªž‚ -èÿVÈLЬ¢U`À™oÇøJço鬴2"é¥ ±è rÈ‹^œksÀÆÓ®{Ùq ž*Ia2Uºq&@§us
§Ãw^“‚-ÿw¾<¡TºÇÂc;vpZœ×µ¶ÄѾndª'nNÁ+¢Âí[€¯°˜®i€¾§ WuÏ+™àô}˜âR4ª<0…9<@Tß?$“s±¹…±å¹³Ð¡…s±“EVÆK!RŽÕWeO}bX˜FúÜÜtÃw,Tëu'á¶¡®sÑÃùFÆ’"gó†ñ>ffçŽO.Šá]ß7K-Ž+Êèðƒ4è«!ÅC<Eìò:€iÔÇ]‚só—psÄYIÅ©Êh¥1¡òWST5C_·œICÏþdŽ)zûÍL¦?.yÝf‡°óÆš ½Ìˆ¾è€/ -¦@LƆ£àÍð#uô›žG™¤Y¾?F‰“ˆžªèÐáëSðôɈq—Wxã Ȧ8¹O¬àõ©Ö}çLœ÷å%¡rþÒnh†ãÀ™ZÊD—•Çêúx?›F/¯^|6>Í09<Pö$Y÷çkÁŠ£yå¾’ÏÚQÐ~0Y“E>¦¥n,BH-2§ÇªšœÆ0VNÚ¤ëh–ý¶ýBÈkáÛÓàâŠäEE™å_ ˆÊÂwUíë?Ó÷æFÙÛC#ÔVr;ÿÅ×VŽD§+-«½¨ˆ4 -7¾KLô
wÂænh_þÕeày®j$m«2—s~-H÷ÔSÁ -¥Ø”)Ã5õÔ<lBø5Ó“`´5\áÇl–g.Ã~:î7.X|iÁé_hhÅsNÝË™ùíÂÅûžc¶X乸¨¦z>5¼˜“u Û´Æh'cÀàP[_îÇýH Œâ¿¶ +xÚ¥ZKsã6¾ûWè¹jÍàA +¬f~oöTf¹Ð¹ßÓ”°R9È ªÝÊoH‹ùªÛõͺö&æÛ¹œQJ• *–býgµÝ·u¶ê¶ ‰[—•¥P<vÝm+”:®dë4»U{\×=uìª-5ͼ?Ò|^õ)N,´KPsš}ÓõCVUUX¢SÕSåù驦ÙU"S¶Ð<aµ[§V%JM].—Ù—å •ÌŠÂ…¯êçÅ sqw|ÄMê·äítfAkÿ7q#ø›øËÛ.20,ÓíÚW¢vÊ] $4¡3áÔ™ÐÞP“¥
§0=€4“¥Ì\®¾"ätÌq}]¾§sHR¥EHR¢ÂÅ|U툴öÔ€©Wƒ— t#Â!±¢Gßì[þ’ÔMEºùò8¨ðª•ÕAT’õËÖ€§mßQ‹Ï_’aj¡AûOè„ùÉÈñCBŠþì“ +FÙ—´·¤r™½úš©Àã§l¢b+åéykçÕWÛq‘´[S£æ9¡9ö[0ƒU½ˆNG ‰ÃÑvœÝ«t\ǼÛx]„ïIº]Û=òŠ4…QñR›¡y®G.Oìé•l°?>>’îƒqÒQ ùµ;‰®Zùó‡ï{jA¦½!åØÌ‰è%½†§ìˆòèÅ¢ +¶ÜÙ¼Ãî!åUVDÄóhyÑ~_¯š‡WZÏoÂ+‰ õD"[+îÍ•óÿlêÑYã,„&ODé»-Ï`hŽ.%8r——Å™½¢ +PÌÛ#„]‡f¨v0'o†)¹¿„@`>ȤùÂÊ;\¥9¸À–?>¥è<ÖDóé
<=VÁ³«ž›ø]‶uˆ~ªSnñ;6chñÁ'"NΫÔrr|ù%À—`*ƒ÷Cþ¢à|‚s@^WCE-:'IÇdasøPÎq£7_\—jŽ~ÂÀ‚'”¯ã8I% ¥këCå" ûsjPi¤LqW/ÝቨUÓ9BO\(ÈûFzµ q¯y~¥—ŽO3LOeIߤjª,!q’áþ¡>Í™å> èŸë~xG ›?»Ýâ[q~ð8€W¦~Þ— +îˆçŸ¡£ë_ìy˜0âöÖW.|ÿÒÇK~~nPšVŒ3³œ=·Ôµ¯VOIQÕÂ¥Ñ%¸2çϿ얈`¯LëˆÉçn @ê¡-Ð×õ?¡ +txÕÁ(1Âùãqt0úØÇ‘C×µLm›§:ÂÄ$è’y¦ +sÔæ1eME&Á$£1â¼äc w,°¬’C¼WJˆãV[î<<ΨñyZ ão¦\Vk.çEîëÕ
-4¤_gª1Rg:“ÙEyJj•A¤_Ìr“ãB.YOŠ£n¦Ã.9¼œe$³„¸ÁfÊg–’U
þ%¢30Jø¼õŒŸ| +ñ,…¸Hs
(5Û®ò¥.^ÚóÙz¡¼‡8àlD®}°EsÀÜD‘’ëuCu0h/Y€ÒØ,Ïeyj.›ã¶ò£I(ðÜ“jlª=w<Ö;ðQ\YÓóm½ÚT»¸+ L؃7fg¤X›ShFN¡«ˆ>à32o45³™Qxê5½ã¼‚'Ó‚P)¼<`È$ÍOËF¾Àí'K´Édî‚fuÉ S‚Θ0g0©/ΚËÌHm¢þð‘•€¼ÂœºÍˆoÒ1C +¾ªz + „Ùt/õDוdå’fd>‰²òôW"RZ*)Ööµ…pHãAQc€æ‹@!óòX:«¬>'NybÏúF†Ø=¤¥«òXÈ^¿B<جH¼Ç=ÀQJ¼à>LYÆCÛ×ì2“ í\VäNÎ' ¤ï) ÿ[!3A³ŠVg"¼ã+¿¥³ÒÊLˆ<¤”^$@ Ä¢' È!/zq®ÍO»îeÇzªh$…ÉT鯙 +¶|üßùò„R!èyìØ5Âiq^·f@ÔÚNGûºI©ž¸9=C@®ˆB +·o¾Àbº¦úž&\Õ=¯d‚Ó÷aŠKѨðÀæ@pð +–þvA•c«ÇøÀ†û,¤ÆAg€hCõoœ€}¼ew8ýš*çÐð‡#çô/œÿn1]/‚0Péú\í8°ef´>+sŒBOD‡+^ .ùRéØ{ endobj -1238 0 obj << +1243 0 obj << /Type /Page -/Contents 1239 0 R -/Resources 1237 0 R +/Contents 1244 0 R +/Resources 1242 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1211 0 R -/Annots [ 1242 0 R 1243 0 R ] +/Parent 1216 0 R +/Annots [ 1247 0 R 1248 0 R ] >> endobj -1242 0 obj << +1247 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [519.8432 463.1122 539.579 475.1718] /Subtype /Link /A << /S /GoTo /D (diagnostic_tools) >> >> endobj -1243 0 obj << +1248 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [84.0431 451.8246 133.308 463.2167] /Subtype /Link /A << /S /GoTo /D (diagnostic_tools) >> >> endobj -1240 0 obj << -/D [1238 0 R /XYZ 85.0394 794.5015 null] +1245 0 obj << +/D [1243 0 R /XYZ 85.0394 794.5015 null] >> endobj 38 0 obj << -/D [1238 0 R /XYZ 85.0394 570.5252 null] +/D [1243 0 R /XYZ 85.0394 570.5252 null] >> endobj -1241 0 obj << -/D [1238 0 R /XYZ 85.0394 541.3751 null] +1246 0 obj << +/D [1243 0 R /XYZ 85.0394 541.3751 null] >> endobj 42 0 obj << -/D [1238 0 R /XYZ 85.0394 434.1868 null] +/D [1243 0 R /XYZ 85.0394 434.1868 null] >> endobj -1244 0 obj << -/D [1238 0 R /XYZ 85.0394 406.5769 null] +1249 0 obj << +/D [1243 0 R /XYZ 85.0394 406.5769 null] >> endobj 46 0 obj << -/D [1238 0 R /XYZ 85.0394 301.1559 null] +/D [1243 0 R /XYZ 85.0394 301.1559 null] >> endobj -1245 0 obj << -/D [1238 0 R /XYZ 85.0394 276.6843 null] +1250 0 obj << +/D [1243 0 R /XYZ 85.0394 276.6843 null] >> endobj 50 0 obj << -/D [1238 0 R /XYZ 85.0394 200.1512 null] +/D [1243 0 R /XYZ 85.0394 200.1512 null] >> endobj -1246 0 obj << -/D [1238 0 R /XYZ 85.0394 175.6796 null] +1251 0 obj << +/D [1243 0 R /XYZ 85.0394 175.6796 null] >> endobj -1237 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F40 1146 0 R /F41 1203 0 R /F21 926 0 R >> +1242 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F39 1151 0 R /F41 1208 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1250 0 obj << +1255 0 obj << /Length 2457 /Filter /FlateDecode >> stream xڥ˒ã¶ñ>_¡[4Uš -my¢¬hIaë3aN•SNìU@7ؾ*ypêŽu C`ab5r´CþT&£ÆàLa¾¤¸á{ nx¯g§þž7››+ì%£ DäöÚ8V²ˆ-¢ïj2ÀÔÕö¨•éixpÝ+ð[f{¦oÓõ– î`PsŽögÐHãÖÇkÍ"t,EáŒ%™fÈ€ËбÔÛa{ËÓÒ]â8ˆ¤¼î;X”«uct;r`÷ÚzÈ0»zÔ%ÚÎ:xPJI©KS(ôu
Ôíè—ƒhèÉÁ¢0(AÄ#`¼Â04K²0=›ýö<nÔ€{¿šk¼®¿§]NwW|èÁî»cõpiÜÄ-èçéÒ˜‚ĽX{tRÆc‹A¤DIf‹,õ·pçÁ2wøjš¬»BׄiÉ -Înدõ‚f2È’L±-±ˆ‡cºµ<•¡‚ OÔíèwtò_ùhK_¾w¿p*øtH•/ë×]÷m8,YŠ÷+)˜:zÒ^¹®Lkû€
<Œ‚(‹ ³‰4È•LÉÿïs¹ý¨$[W÷qƒˆÜ3®Û€I@¦¼fWõjÜŠÂãížwaµíiý'¬'õwôëÎǃΈÛϰ1-\ÌD£_9R9¹lÎùv¶Så£ÐñLÞ…Ø18À j-äK†¹tÞ‚ßç ‘`† È;‹êUÀ^˜ª7´'°¥Þ*7‰(•¼v‘×ãÉOsq7÷-ÆAžÇÙ•ãÌó›¯0ÕõÞgúsÛµç¦z†€â U07'*fÒumÚªERRlÂäY²V -“Y(N×eçÜç;Ë€Ao…*ƒŠ¤d–#`ÀBM°º:ÔÆòè&J&A¦3…̧Œ¶ ;ŒÏJøt»T•`ç“FS|EÙ,¥ŠÇâ¥Ã›ã®hâøÅ"“ö”{€ø}0T^á€*„fl99!ÜCÖîwgìÈ$ÚÈź'؇_ܯããa,cyKVœ’\jH$„„4¹,Xs…¿›JÜ®õÕìB1+‡uÿv¦Q•«KÉ.F+H³2#'2‘eA¤„ô‘'ó‘ÇÇ0FàB[FtbÒRtszâÂù
$3Ìv™¤¡Èy;=_D -dŒ@Žv824@ú¨éPÒ9j…µ²£ïékþ½×Coý6ž=Ý.UoºíON™U6¨ô]7´%vÑiÎ.ì¯AtËh|çC…¥Ð™æ(¾ãuWˆ;w¡ÊŽd…F¢~OSdÔQè9Ÿ•x¤e2¾T¯~󾲋¹Û™k"1åBQX]Öºˆ¡`¨å«éc!/¡âBNÓ¸ckxšÙÄš"J±Mw´$¦(L‰ù9uÆebí;hb¢š-Yîõ…ÈÛ#ºPë6W1õˆžÄ²3˜Ö-!f<Ãè²cuï%jìðÜ:ß‘"59>TÛºçÙƒ.¾ËgÙ=Eáeï†Èþ¨1&ëcaH¥æþ‚Iž¯X-ˆ#¿Cº6 ŒµnºdúÊbxQ ×c¸ÓH<ßb<[:·;_6IÑÔ~Lô„¥ÊO½U>Nšš÷ÿþÂÁÌ· ®CO8«Þ6åÔp…õ êâêàŸ¾tµùÓ]{®x|zOo½fÝO²¸Y5pn
pÐ&‚w¢›á¤‹Ö)=$¥³·'€©RÃ
:¿ÿ ”b„[@˜¬õ«¹ZÀiçfE»XGM ƒ»µÙ³–K9*œæÞØ] õõì·FW5ìÇîd¦ÌI蓹õȹäW9œ6´6¬=
»Ã<·Þ¾ËÆ)ÒBÈmUð€œ–ð]¿¿îÞZ*æO)×r¬»—1¾g¸ì PJâE„¤Ò"ãÔ‘æ¾ÒG”._ukõa\ I±Ë À0no‚ºöò¢õúÀ™ÆÝ˸X›ç.Öfá…óô¥ØÙú§†Ù£“³ÑäZÀóW‡d’¢Ñl–+»PB*ÿnt±ãƒ;{¡ÙŽƒ4ËS_å¹K°ÂQìfÉ(+DrÝž&7Ý'L–U!›S¤‚*Rf—ñvjÈ©hSä—˜Jo«º²gB’)¡¡â!ˆ¦í!†°Žr—Óƒ’q 3øRŠÇ®ìPίè>ÏùóÕѤ3„.t¶ Ýëò=fzËe’|zW»+á^—êÊšíE?ü–B8MBµ¤P8ƒ[8šZ@µÆ¹3·Ì=]Žã§B ™Jt$ ,è1K‘ÒC(oÓD\EBŽZ5yùg†ñQšlÍ¥#~^ªuáëïªÞ“õÔ[Ϋ‡7þ[ô…ˆ,üމîÿþßeúû)J•erù/™…Ažª‘)Ktøÿæ–óÿuP:sendstream +my¢¬hIaë3aN•SNìU@7ؾ*ypêŽu C`ab5r´CþT&£ÆàLa¾¤¸á{ nx¯g§þž7››+ì%£ DäöÚ8V²ˆ-¢ïj2ÀÔÕö¨•éixpÝ+ð[f{¦oÓõ– î`PsŽögÐHãÖÇkÍ"t,©|Æ’L³@dÀeèXêí°½åié.qDR +^÷,ÊÕº1º9°{m=d˜]=êmg <(¥‚$ŒÔ¥)úÀºêvô…K‚A4tÈdŽ`Ñ”ƒ â0^a˜š%Y˜žÍ~{7jÀ½_Í5^×߯Ӯ§»+>ô`÷ݱz¸4n +âôóŠtiLAâ^¬=:)Hã±Å R¢$3áE–ú[¸ó`™»|5MÖ]¡k´d€€ã`é(7FîÍ|ÆÜ*Þ<Y×;æóy(ö‹žKÖ?sðCg7ì×zÁ3dI¦Ø–XÄñGaÝZžÊƒPAÐ'êvô;:ù¯|´¥/ß»_8|:H¤Êu‹ë®û6–¬?Å‹û•L=i¯\W¦µ}ÀFA”EÙDäJ¦äÿ÷¹\ƒ~T’«Æû¸ADî×maÀ$ S^3ˆ«z5nEáˆñvÏ»°‚‡Úö4ƒ~„Ö“ú;úuç‹ãAç Äíç +ؘ.f¢Ñ¯œ©œ\6 +ç|;Û‚)ŠòQèx&ïBì`Pµò‹%Ã\:oÁïŒsH°
ÃäEõ*`/LÕÚ…ØRo•›Ä”J^»Èë‚ñ䌅§¹¸Æ›û‚ã ÏãìÊqæùÍ× ˜êzï3ý¹íÚsÓ
=HC@qŒ*˜›3éº6íÕ"))¶aò,Y+ +®%~êŽ'},Q6ÿ³nøðJ&’PÌMfR…ˆÉ,§ë²sn‰óeÀ ·B•AER2Ë0`¡&X]jcyt%Ž S‰Œ™BæSF[ÐÆg¥@|º]ªJ°óI£)¾¢l–RHE„cñÒáÍqW4qüb‘I{ʇ=@ü>*¯p@• +B3¶œœî!k÷»3
vd’
mäbÝìÃ/î×ññ°–±¼%+ NI.5$BBš\ +¬9ÈÂßM%n×újv¡ƒ˜•ú;ÓŠ(„ÊÕ¥d£¤Y™Ž™È² RBúÈ“ùÈãc˜#p!-#ºÖ1é)º9=qáü’f»LRŠPdˆ¼ž/"2
F G; }Ôt(é
µÂZÙÑ÷ô5ÿÞë¡·~Ïžn—ª7Ýö'§Ìˆ*Tú®Ú»è4gö× º‰e4¾ó¡ÂRèLsßq‚º+Ä»PeG²Â#Q¿§)2ê(ôÆœÏÊ +S¦…€Äüœºã2±öŠ
41ÑÍ–,÷úBäí]¨u›«˜úDOâ‚ÙLë–3žatÙ±º÷5vxnïH‘šªmÝóìAߌå³ìž¢Çð²÷CdÔ“õ±0¤RsA„$ÏW¬DŒ‘ß!]ÆZ7]2}e1¼¨„ë1Üi$žo1ž-Û¯N›$†hj¿F&zÂRå§Þ*'MÍ{ˆá`æ[?ס'œUo›rj¸ÂúuquðÏ _ºÚüé®=
×?<>½'È·^³î'
Y܈¬8H·† +8hÁ;ÑÍpÒEë”’ÒÙÛÀT©áßÿ?J1BŽ- LÖúÕ\-à´s³¢]¬£¦„ÁÝÚìYË¥‹œ?NóNolÆ.Ðúzö[£«öcw2Sæ‹$ôÉÜzä\ò«NÚÖž†ÎÝaž[oßeãi!ä¶*x@NKø®ß_÷Vo-ó§”k9ÖÝËß3\vÐG(%ñ"BRi‘qêHs_é#J—¯ºµú
„0.¤Ø¿e`·7
A]{yÑz}àLãîe\¬Ísk³ð‚ÂyúRìlýSÃìÑÉÙhr-àù«C2I Ñh6Ë•](!•7ºØñÁ½ÐlÇAšå©¯òÜ%Øá(v³d”"¹nO“›î&˪ÇÍ…)RA)³Ëx;5äT´)òKL¥·U]Ù3!É”ÐPñDSƒöCXG¹ËéAɸÖÈ|)ÅãVWö(çWtŸçüùêhÒB:[ÐîuùžG3½åŠ2I>½+ŠÝ•ðN¯KueÍŒ€Îö¢~K¡@œ&¡ZR(œÁ +M + ZãŠÜƒ[æž.ÇñS!L%:P–ô˜¥Hé!”·i"®"!Gš¼ü…3Ãø(M¶æÒ?/ÕºðõwÕNïÉzê-çÕÃÿ@úÂ?Dþ ÇD÷ÿï2ýý¥Ê2¹ü—ŠÌ OÕÈŠ%ºaÜÿ?sËùy;:»endstream endobj -1249 0 obj << +1254 0 obj << /Type /Page -/Contents 1250 0 R -/Resources 1248 0 R +/Contents 1255 0 R +/Resources 1253 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1211 0 R +/Parent 1216 0 R >> endobj -1251 0 obj << -/D [1249 0 R /XYZ 56.6929 794.5015 null] +1256 0 obj << +/D [1254 0 R /XYZ 56.6929 794.5015 null] >> endobj 54 0 obj << -/D [1249 0 R /XYZ 56.6929 717.7272 null] +/D [1254 0 R /XYZ 56.6929 717.7272 null] >> endobj -1252 0 obj << -/D [1249 0 R /XYZ 56.6929 690.4227 null] +1257 0 obj << +/D [1254 0 R /XYZ 56.6929 690.4227 null] >> endobj 58 0 obj << -/D [1249 0 R /XYZ 56.6929 550.0786 null] +/D [1254 0 R /XYZ 56.6929 550.0786 null] >> endobj -1253 0 obj << -/D [1249 0 R /XYZ 56.6929 525.2967 null] +1258 0 obj << +/D [1254 0 R /XYZ 56.6929 525.2967 null] >> endobj 62 0 obj << -/D [1249 0 R /XYZ 56.6929 393.0502 null] +/D [1254 0 R /XYZ 56.6929 393.0502 null] >> endobj -1254 0 obj << -/D [1249 0 R /XYZ 56.6929 363.1913 null] +1259 0 obj << +/D [1254 0 R /XYZ 56.6929 363.1913 null] >> endobj -1248 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F40 1146 0 R >> +1253 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1257 0 obj << +1262 0 obj << /Length 2097 /Filter /FlateDecode >> @@ -4510,66 +4528,66 @@ hZã|jY/ýE‰áÝN6“dy 8xp]7b~{é0h”~’e±½„3×rÓ,Ã,*r¸2Ư{ë³½ŸØøÎê±×꛼cµ¬Ë" Ìk âþî^̲EÑÅk˜èP<sgÕ1BÚÖP!žÅj˜K±dx ’;mêá6¨BоI½Ÿp endobj -1256 0 obj << +1261 0 obj << /Type /Page -/Contents 1257 0 R -/Resources 1255 0 R +/Contents 1262 0 R +/Resources 1260 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1211 0 R -/Annots [ 1263 0 R 1264 0 R ] +/Parent 1216 0 R +/Annots [ 1268 0 R 1269 0 R ] >> endobj -1263 0 obj << +1268 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [519.8432 268.1131 539.579 280.1727] /Subtype /Link /A << /S /GoTo /D (acache) >> >> endobj -1264 0 obj << +1269 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [84.0431 256.1579 143.5361 268.2175] /Subtype /Link /A << /S /GoTo /D (acache) >> >> endobj -1258 0 obj << -/D [1256 0 R /XYZ 85.0394 794.5015 null] +1263 0 obj << +/D [1261 0 R /XYZ 85.0394 794.5015 null] >> endobj 66 0 obj << -/D [1256 0 R /XYZ 85.0394 769.5949 null] +/D [1261 0 R /XYZ 85.0394 769.5949 null] >> endobj -1259 0 obj << -/D [1256 0 R /XYZ 85.0394 574.3444 null] +1264 0 obj << +/D [1261 0 R /XYZ 85.0394 574.3444 null] >> endobj 70 0 obj << -/D [1256 0 R /XYZ 85.0394 574.3444 null] +/D [1261 0 R /XYZ 85.0394 574.3444 null] >> endobj -1260 0 obj << -/D [1256 0 R /XYZ 85.0394 540.5052 null] +1265 0 obj << +/D [1261 0 R /XYZ 85.0394 540.5052 null] >> endobj 74 0 obj << -/D [1256 0 R /XYZ 85.0394 447.7637 null] +/D [1261 0 R /XYZ 85.0394 447.7637 null] >> endobj -1261 0 obj << -/D [1256 0 R /XYZ 85.0394 410.3389 null] +1266 0 obj << +/D [1261 0 R /XYZ 85.0394 410.3389 null] >> endobj 78 0 obj << -/D [1256 0 R /XYZ 85.0394 348.7624 null] +/D [1261 0 R /XYZ 85.0394 348.7624 null] >> endobj -1262 0 obj << -/D [1256 0 R /XYZ 85.0394 311.223 null] +1267 0 obj << +/D [1261 0 R /XYZ 85.0394 311.223 null] >> endobj 82 0 obj << -/D [1256 0 R /XYZ 85.0394 189.9853 null] +/D [1261 0 R /XYZ 85.0394 189.9853 null] >> endobj -1265 0 obj << -/D [1256 0 R /XYZ 85.0394 156.0037 null] +1270 0 obj << +/D [1261 0 R /XYZ 85.0394 156.0037 null] >> endobj -1255 0 obj << -/Font << /F21 926 0 R /F22 949 0 R >> +1260 0 obj << +/Font << /F21 930 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1269 0 obj << +1274 0 obj << /Length 591 /Filter /FlateDecode >> @@ -4577,27 +4595,27 @@ stream xÚ¥TKs›0¾ó+t3AÕtt’:3Nƒû˜4Ç()SŒ\ÀIóï+!°Iâž:³«}|ì~Ú… ÕºÕõ«3uEó»$hô®ËZ«¤iëâa׺BÿÚ*Æ‘]…#;`ÞþÒþ{ã¿¡0FLzX¦ñÐS‘ŒÙ¾(Klô¡ða3?VþP%6endstream endobj -1268 0 obj << +1273 0 obj << /Type /Page -/Contents 1269 0 R -/Resources 1267 0 R +/Contents 1274 0 R +/Resources 1272 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1272 0 R +/Parent 1277 0 R >> endobj -1270 0 obj << -/D [1268 0 R /XYZ 56.6929 794.5015 null] +1275 0 obj << +/D [1273 0 R /XYZ 56.6929 794.5015 null] >> endobj 86 0 obj << -/D [1268 0 R /XYZ 56.6929 769.5949 null] +/D [1273 0 R /XYZ 56.6929 769.5949 null] >> endobj -1271 0 obj << -/D [1268 0 R /XYZ 56.6929 744.7247 null] +1276 0 obj << +/D [1273 0 R /XYZ 56.6929 744.7247 null] >> endobj -1267 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R >> +1272 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1275 0 obj << +1280 0 obj << /Length 1159 /Filter /FlateDecode >> @@ -4610,45 +4628,45 @@ JxI1|«ÄR{}Ö8!S8ÆM§,ývrö‹çf¨qdü)G%§ÀÚÉ®×r›6H–¬Ú‹½‹…¿ðÃJNXV„ÐO^nóëÅ¿_æ’£ Ó–ÿ¼\g¥»ÜE ¾qÂôrœº=ȘZ\
ö\FØÿxd²ó‘ód¦·$4%9‡‹{¦úÃ9šfؼ!¼‚¦ÿH ËI)xáõ8kØ;ߥo…<©»çÃ¥ÛŽ›>L/‰ÁÌ ²”Š,`îö$àžÇV”ðlרæÚ,˜Lá5]Ö·[öhLs&¾Ñ¡0ÌC/—U5U}hõö5¡æ^uº…®û]}á¦×=}»ž^êáý-Rb_ósoù _dð!AK"8YXù½±é_Á£µ endobj -1274 0 obj << +1279 0 obj << /Type /Page -/Contents 1275 0 R -/Resources 1273 0 R +/Contents 1280 0 R +/Resources 1278 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1272 0 R +/Parent 1277 0 R >> endobj -1276 0 obj << -/D [1274 0 R /XYZ 85.0394 794.5015 null] +1281 0 obj << +/D [1279 0 R /XYZ 85.0394 794.5015 null] >> endobj 90 0 obj << -/D [1274 0 R /XYZ 85.0394 769.5949 null] +/D [1279 0 R /XYZ 85.0394 769.5949 null] >> endobj -1277 0 obj << -/D [1274 0 R /XYZ 85.0394 575.896 null] +1282 0 obj << +/D [1279 0 R /XYZ 85.0394 575.896 null] >> endobj 94 0 obj << -/D [1274 0 R /XYZ 85.0394 529.2011 null] +/D [1279 0 R /XYZ 85.0394 529.2011 null] >> endobj -1278 0 obj << -/D [1274 0 R /XYZ 85.0394 492.9468 null] +1283 0 obj << +/D [1279 0 R /XYZ 85.0394 492.9468 null] >> endobj 98 0 obj << -/D [1274 0 R /XYZ 85.0394 492.9468 null] +/D [1279 0 R /XYZ 85.0394 492.9468 null] >> endobj -1279 0 obj << -/D [1274 0 R /XYZ 85.0394 466.0581 null] +1284 0 obj << +/D [1279 0 R /XYZ 85.0394 466.0581 null] >> endobj 102 0 obj << -/D [1274 0 R /XYZ 85.0394 201.2466 null] +/D [1279 0 R /XYZ 85.0394 201.2466 null] >> endobj -1280 0 obj << -/D [1274 0 R /XYZ 85.0394 170.5419 null] +1285 0 obj << +/D [1279 0 R /XYZ 85.0394 170.5419 null] >> endobj -1273 0 obj << -/Font << /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1278 0 obj << +/Font << /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1283 0 obj << +1288 0 obj << /Length 1771 /Filter /FlateDecode >> @@ -4662,41 +4680,41 @@ A‡^jfÜ‘ÂĦÒÁO†;A»í6µ¼×E®ÊÖNßçEa§«²TkKá×´*u¢vÚ™J+¦rv›£j¨‡S[ë3be›ïÔŸNÉ BƒHx<A‘xütHÁüÕêZ{Tùï®ç_ô]
bî¯þþjö€ñÈ_ª¦:ü×ö¾,;_Á±¾£ËeÃ.Ó6==€@BÀ‹hèYeÃÿÜ~4K Üüo@ªãs‹3•¿ƒT1½¿¿‡÷NÌâ¼öP&ü«LÜ¥ˆrÖÝâóðÿã£$Ø3áÝHY t01®q'Ô)W£®ìÕØã€¿²ÿŸÞ`ÛmËì<MÃÛê]‚QÿGx¶ãLo¬MÐ;46#¢‚&R^»]Ç6
çÚC]ªìD,oÖé¶ãj£íŠT’HFÁ H_Ø¡ …£Lµi^`_ÿÇáïá3µ?r;(8µùTø[}øëoHa=Ì<JúKÅYAˆE Œñ·ŠÊYUgø6:½”„‘–¶9Ü6ú*ìÐå@„9æ³¢$¼^(7¸»Ú·9(;"ED$ÔiÔ‰0Fé¢Wû¹A]„©Wê¯v–c¿N{êó¡ÆÒh=–KSnëSü4DÿD(ˆˆ!˜÷켎æIN9i%È9ÓEH!FÅQïÙùÒŸ®=xAL„”g5Üh’Ä¢×J«.©îþÎŽèþ;ÆP~×endstream endobj -1282 0 obj << +1287 0 obj << /Type /Page -/Contents 1283 0 R -/Resources 1281 0 R +/Contents 1288 0 R +/Resources 1286 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1272 0 R -/Annots [ 1288 0 R ] +/Parent 1277 0 R +/Annots [ 1293 0 R ] >> endobj -1288 0 obj << +1293 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [55.6967 61.5153 126.3509 73.5749] /Subtype /Link /A << /S /GoTo /D (rrset_ordering) >> >> endobj -1284 0 obj << -/D [1282 0 R /XYZ 56.6929 794.5015 null] +1289 0 obj << +/D [1287 0 R /XYZ 56.6929 794.5015 null] >> endobj 106 0 obj << -/D [1282 0 R /XYZ 56.6929 372.6686 null] +/D [1287 0 R /XYZ 56.6929 372.6686 null] >> endobj -1285 0 obj << -/D [1282 0 R /XYZ 56.6929 334.1957 null] +1290 0 obj << +/D [1287 0 R /XYZ 56.6929 334.1957 null] >> endobj -1286 0 obj << -/D [1282 0 R /XYZ 56.6929 266.1213 null] +1291 0 obj << +/D [1287 0 R /XYZ 56.6929 266.1213 null] >> endobj -1287 0 obj << -/D [1282 0 R /XYZ 56.6929 254.1661 null] +1292 0 obj << +/D [1287 0 R /XYZ 56.6929 254.1661 null] >> endobj -1281 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F21 926 0 R /F22 949 0 R >> +1286 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1292 0 obj << +1297 0 obj << /Length 2693 /Filter /FlateDecode >> @@ -4717,45 +4735,45 @@ v‚_Ñ&-Ë÷–Ðùs’LŒ“é¨úcº¯ç½¿ªîzWnBˇ¢—ålÊOøQ‚x#£cÇl»„“¬ðܯb¼ocàÁ p¬xJ´§¹=vrB þ²¡ðÙ£,ˆ†— N8çŒd¬`—·Àvÿ¤?í.îü›¾ü2õÃ%0'üµµQ†Ìè‘2ÂÒTúÄ„íû&·×ˆã<dÏÄŸ¼÷?²œÿ¿Gd„çùÌ9#×çŒ,ñJiõ‹©âþ^.5ÿ+Lendstream endobj -1291 0 obj << +1296 0 obj << /Type /Page -/Contents 1292 0 R -/Resources 1290 0 R +/Contents 1297 0 R +/Resources 1295 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1272 0 R +/Parent 1277 0 R >> endobj -1293 0 obj << -/D [1291 0 R /XYZ 85.0394 794.5015 null] +1298 0 obj << +/D [1296 0 R /XYZ 85.0394 794.5015 null] >> endobj 110 0 obj << -/D [1291 0 R /XYZ 85.0394 769.5949 null] +/D [1296 0 R /XYZ 85.0394 769.5949 null] >> endobj -1294 0 obj << -/D [1291 0 R /XYZ 85.0394 744.949 null] +1299 0 obj << +/D [1296 0 R /XYZ 85.0394 744.949 null] >> endobj 114 0 obj << -/D [1291 0 R /XYZ 85.0394 744.949 null] +/D [1296 0 R /XYZ 85.0394 744.949 null] >> endobj -1295 0 obj << -/D [1291 0 R /XYZ 85.0394 721.0357 null] +1300 0 obj << +/D [1296 0 R /XYZ 85.0394 721.0357 null] >> endobj 118 0 obj << -/D [1291 0 R /XYZ 85.0394 672.3079 null] +/D [1296 0 R /XYZ 85.0394 672.3079 null] >> endobj -1247 0 obj << -/D [1291 0 R /XYZ 85.0394 647.0603 null] +1252 0 obj << +/D [1296 0 R /XYZ 85.0394 647.0603 null] >> endobj 122 0 obj << -/D [1291 0 R /XYZ 85.0394 136.5325 null] +/D [1296 0 R /XYZ 85.0394 136.5325 null] >> endobj -1299 0 obj << -/D [1291 0 R /XYZ 85.0394 113.5963 null] +1304 0 obj << +/D [1296 0 R /XYZ 85.0394 113.5963 null] >> endobj -1290 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R >> +1295 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1302 0 obj << +1307 0 obj << /Length 3388 /Filter /FlateDecode >> @@ -4780,57 +4798,57 @@ Tg«%‘‹jTý"õXŒWK*lÛDQ$Ê•ôöûÕ}ªˆÉgŒÂÈö,Xv!/É‘RNO9îÎrÔ®”~düžÏòûT¦J PX¨ì Ѩ´<[7Œ.Z+|¹ÒÂ} —¼÷ÉŒ€ X Ç Tç¦í2ÂV¸µ-VeÿŽý endobj -1301 0 obj << +1306 0 obj << /Type /Page -/Contents 1302 0 R -/Resources 1300 0 R +/Contents 1307 0 R +/Resources 1305 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1272 0 R -/Annots [ 1307 0 R 1308 0 R 1309 0 R 1310 0 R 1311 0 R ] +/Parent 1277 0 R +/Annots [ 1312 0 R 1313 0 R 1314 0 R 1315 0 R 1316 0 R ] >> endobj -1307 0 obj << +1312 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [219.3839 329.5541 281.1025 341.6138] /Subtype /Link /A << /S /GoTo /D (options) >> >> endobj -1308 0 obj << +1313 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [491.4967 274.4996 511.2325 286.5592] /Subtype /Link /A << /S /GoTo /D (dynamic_update_policies) >> >> endobj -1309 0 obj << +1314 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [102.5211 265.1945 156.7673 274.6041] /Subtype /Link /A << /S /GoTo /D (dynamic_update_policies) >> >> endobj -1310 0 obj << +1315 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [243.8464 219.4451 306.1963 231.5047] /Subtype /Link /A << /S /GoTo /D (options) >> >> endobj -1311 0 obj << +1316 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [425.9845 164.3905 495.353 176.4501] /Subtype /Link /A << /S /GoTo /D (dynamic_update_policies) >> >> endobj -1303 0 obj << -/D [1301 0 R /XYZ 56.6929 794.5015 null] +1308 0 obj << +/D [1306 0 R /XYZ 56.6929 794.5015 null] >> endobj -1300 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F41 1203 0 R /F53 1298 0 R /F22 949 0 R /F14 952 0 R /F48 1223 0 R /F55 1306 0 R >> +1305 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F41 1208 0 R /F53 1303 0 R /F22 953 0 R /F14 956 0 R /F48 1228 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1316 0 obj << +1321 0 obj << /Length 3086 /Filter /FlateDecode >> @@ -4849,21 +4867,21 @@ W
Ú·~Hž/7!cëŸqůÞkÝùDjfy/‹”˜zó p¥å‚‚žk¬`߆²X4œ¶á}FWRX£bTŶ—ï_io¨ B®—rÙ.ÛŒ½=—¿%9¯I”Æv¨^ì¹Æ‚Ì q_òÛ¬zÌ<6˜ðjر½Ob>µe¢SÓÚâM¯ËÚ½ª’Ú©¹4ƒ)h*ÑÜHÁ0+¶ùi矚¯²¢ÍR†ÅŒŠ€|¯ù.+v¯Þ|?‘`àL𘸛óð½võ¨I8!ò$£™?¹‚WW×82S>ñyÈüéÝŠÌÚ˹n×Ä·eènöìÉâ»2ÃYÛËb;çLû…³ñÒý^—mÆs=—»@?+w;0Y€ÍËn °‘ìé¬'ümÓm¶2Ϫº!êï&V&6ñ•±ú=ƒe“Ù{aÕþ”ÅÛÃ%bç7%Š…K-±×Ì/à“í&y¶swĶ:.‹?Êý~î.@è@‹æbë+ïDl@(‘çÖ×0Ö×,(Ï„V¦·@ÿc4ìàûNþ.«ZâÛë››wohÜZâ#Ôšðñýëµ+ª*ݺß_MbŒÅ„\ÐE§¿ÔQw͹S7/ÆÆÅŸŠªæ2î%¦ñFµ…Öpþtn¸Ç{®§Ôw†ëÐ
4k~w梾ãÏ:'öþ;ˆýê_¶?ªÿ’ñ9 ,ïƒDÊ)…à|¨¹–q cM¨þ'[–Cendstream endobj -1315 0 obj << +1320 0 obj << /Type /Page -/Contents 1316 0 R -/Resources 1314 0 R +/Contents 1321 0 R +/Resources 1319 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1272 0 R +/Parent 1277 0 R >> endobj -1317 0 obj << -/D [1315 0 R /XYZ 85.0394 794.5015 null] +1322 0 obj << +/D [1320 0 R /XYZ 85.0394 794.5015 null] >> endobj -1314 0 obj << -/Font << /F37 1014 0 R /F48 1223 0 R /F55 1306 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +1319 0 obj << +/Font << /F37 1018 0 R /F48 1228 0 R /F55 1311 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1320 0 obj << +1325 0 obj << /Length 3852 /Filter /FlateDecode >> @@ -4893,29 +4911,29 @@ y¢,~O _ò†<¨u=-uÜøwÔb¯áj|‰çÁ
Ò]¤›ÒW|€G`Ú¤@øìè³…3ÅÇNTÌÝΈP—dÖÉcò]M¸xò ×kGþéöá(Ñ4ñ Œþè½øœ“üŒn|~6ÚÀI’5>ó”ôiJWëŸ^8>ô!^7õÎ]àžû¨#ÞlŒÝºÿ§ÓÞ¥>¦a 5.l4K÷Jà?ñé·ÝðùÅä`ø¾‰ áë“ç© z\ŽT0©ßerÚeê«r©3ü<q¢(ÿç/·ñú#Î|ŒRüäK†Máι8Ù9g™¹Hlý¿Ñ7ëendstream endobj -1319 0 obj << +1324 0 obj << /Type /Page -/Contents 1320 0 R -/Resources 1318 0 R +/Contents 1325 0 R +/Resources 1323 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1323 0 R -/Annots [ 1322 0 R ] +/Parent 1328 0 R +/Annots [ 1327 0 R ] >> endobj -1322 0 obj << +1327 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [91.7912 473.8206 148.0099 483.036] /Subtype /Link /A << /S /GoTo /D (controls_statement_definition_and_usage) >> >> endobj -1321 0 obj << -/D [1319 0 R /XYZ 56.6929 794.5015 null] +1326 0 obj << +/D [1324 0 R /XYZ 56.6929 794.5015 null] >> endobj -1318 0 obj << -/Font << /F37 1014 0 R /F48 1223 0 R /F55 1306 0 R /F22 949 0 R /F21 926 0 R /F53 1298 0 R /F41 1203 0 R >> +1323 0 obj << +/Font << /F37 1018 0 R /F48 1228 0 R /F55 1311 0 R /F22 953 0 R /F21 930 0 R /F53 1303 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1327 0 obj << +1332 0 obj << /Length 1516 /Filter /FlateDecode >> @@ -4929,89 +4947,94 @@ S†Œ¼‘p`”Wéþ›ºiûñ?þïc~ÛŒä,Iþ„ÙNì±;$V)FºC|òkMÜó—oãªõÿ›¤#}2@ª°ä†pôÅõÝ\ a¨‘ÒÚ·Ôç§Ïž¿}=ŠbHYÊ×På÷™Ù«œ1sx“Üá¶™ùÄÆ@3é³÷ÔÇ}" e-›ËÄAFàê2B—uöMíÄ”, Hšü€rÜæRðD’†VÐ6îß³~ ô^„¾Âa Íã²ã0¼P¿¼›Ä^%yPt~‰ÄC;ïMâ´Ì»„Ù×ÓŽ‚ùç¢ýËÌÕœeÐbpÃù×h&8Âá»
°ìôl}7ÉŒdVΓl`åÁ±óôÿÂ1b(ŠHÀšF5þtuð ÞY‘2öµA!4gs_ºpÔ½o÷wµýçFè ™ÖtžÃ¼0DЕ‚.ÏÂî±û׉
ŒÿAáôendstream endobj -1326 0 obj << +1331 0 obj << /Type /Page -/Contents 1327 0 R -/Resources 1325 0 R +/Contents 1332 0 R +/Resources 1330 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1323 0 R +/Parent 1328 0 R >> endobj -1328 0 obj << -/D [1326 0 R /XYZ 85.0394 794.5015 null] +1333 0 obj << +/D [1331 0 R /XYZ 85.0394 794.5015 null] >> endobj 126 0 obj << -/D [1326 0 R /XYZ 85.0394 556.3324 null] +/D [1331 0 R /XYZ 85.0394 556.3324 null] >> endobj -1329 0 obj << -/D [1326 0 R /XYZ 85.0394 529.0279 null] +1334 0 obj << +/D [1331 0 R /XYZ 85.0394 529.0279 null] >> endobj -1330 0 obj << -/D [1326 0 R /XYZ 85.0394 499.5106 null] +1335 0 obj << +/D [1331 0 R /XYZ 85.0394 499.5106 null] >> endobj -1331 0 obj << -/D [1326 0 R /XYZ 85.0394 487.5554 null] +1336 0 obj << +/D [1331 0 R /XYZ 85.0394 487.5554 null] >> endobj -1325 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F48 1223 0 R /F21 926 0 R >> +1330 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R /F48 1228 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1334 0 obj << +1339 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -1333 0 obj << +1338 0 obj << /Type /Page -/Contents 1334 0 R -/Resources 1332 0 R +/Contents 1339 0 R +/Resources 1337 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1323 0 R +/Parent 1328 0 R >> endobj -1335 0 obj << -/D [1333 0 R /XYZ 56.6929 794.5015 null] +1340 0 obj << +/D [1338 0 R /XYZ 56.6929 794.5015 null] >> endobj -1332 0 obj << +1337 0 obj << /ProcSet [ /PDF ] >> endobj -1339 0 obj << -/Length 2475 +1344 0 obj << +/Length 2407 /Filter /FlateDecode >> stream -xÚ¥YKsÛ8¾ûWè¶TU„ˆ'wO³yLeImì=lÍÌ&)›ŠÔˆT²Î¯ßn4À‡DÇ©šr•‰g£_øºbã4ã2S›)¦¹Ð›âpÃ70÷Ëk”–L+)¡³2»ÓÒ1íR»Ù͉üóîæ§w©Ø¤œ“êÍÝ~<ËXÇœ6éæ®ü-yý˜‡ê´Ý¥š'jûÇݯ´M1ë¬ÀmŽÐÌ™Lû
?—_ò¶¨JÚñæÃ-5ÞUùp>UýHA(&â)ɜ̌§ ˜Øîç<ùÐ
õþ)lI7ËLjÂŽÔ1Žô‡Hi’ïÞ¿ûµë¿6É©{¨ŠÇ¼ûu‡Ç|óMÓ}íâ¼÷²b»¯N_ªS˜:ZÜCDUǵMþ¥ºÚf“nOƒxôCuA+G¹P!X¦µð¢|ëÚêo°0•:)ó!g°–ëä}KC§pIÕ»¶¯h©á7;iI¤†Ia‚´ƒv®µ©3JÚ°lïé‘®ÿDÍ`›DÜZ•¼Â‡š3¤l~›†ZÅcU|^2ÛW‘{olÕCµWwA^P *i'ŒnÁsƒ²È7é\p.ÔµÐêø§Šó‰”Ö40чNÞ–¯ÂÆ=}ÁÂq¤‡:üò¤á”·ýžôÀFS:Æ… ¯|סwp›:â€zu»ïN‡|ð<à@~ßj¢#¯˜QƒÌ©²/™QfLr¡e¯ˆ¤W56¼F°QV}qªÞKÊ5'âÌ -OoŸ»’–ÉщºýºÅå7oï&IJ‚ÁU€†sLI.‘hòô°¡Æ§„ëwó
aG¾¢‹¼ÜVÅÄŒa)æ‚¥%ç'|K¿ÏH„Re
S6Ümp6p¥ƒsBM±Éh
Ck,—S**uÅF&cN)”Ÿ7}·{ÖPàM&“ÑM®ˆGMDæ¿oœqýn¾áZ'×tÆAQƒqìKƒÅ‚¡+Ó„5/1qA Yðë’»U÷‡@g¬U? -ÐfêÙ?ÌT¬òy†àLË4ZâãvgDrÿÓäí¥b€&K7Ò‚r3•âÑ›?7‚q•e’ÍÚ^ÔI~à§÷‡tó¦63™"áÝœ²Ê¤Ì´Œ[˜ù™Ð Ì}À9JàÁr›B<Ú¦cCêlòm+ - ³¯–Ä–eÅ<|‡"á"P§BšÕr`f^‘œAüh,èyEJ~3
Q¤.œoÀ”ä#ùjÑÆ¥ã…ô•íîüœ'™”9žÅxêmýáT3¡brCwÇ®©‹µüÞM«‹ÆƒØLYâ™BC[(VÃ.Ÿó^“†dŒ;åëäƒ -Bªàp»”ߺ^I Œà<šh -áSÈÌ=@¹ì€À4F«ÅÇšãC.'œšƒÔ^ŸœóßTÓ)”§Ç9¦ñYÒFd“ ¿Á”dqcºÙÛˆ;>{E§¦âav ñå ›~ˆ›ºB¯ ?îrª¼~ÿ§‡ Óš¹s“&_ŠS’‰1gŽ'5$S^)3T÷ùOÈ)u‹/`Åyô`LGc*j“ß¹æß¦Ìô܇Íþ%îöík˜4µïÂ31v(ØÃ*ɹýûkøäÓ§Û÷¿¼¢ù°•Pº†$5/ó§•Wà|s{ -Ø<—žƒgjK†ü™‚Ùì€TãczYѰ¿íðÍé_—õh,§ÄÑû‡M.kÀ™ -M,]PŒ4sÁj0ˆ™ +xÚ¥YKÛ8¾÷¯ðme RÄ·¸{ÚÍ™:Øtïa03Z’»…±%Ç’“éüúb‘²d«ÓÄY,Ö‹U_±Ù*‡lU¨,V®Œ•™Ê™Z•û›|õ +«©E¦ +nVé”Éîo^¿çlÅóLk®V÷Ûñ,mT¦)V÷կɛGwêã:å*Oäú÷ûŸh›ÌLanËá›å’I¿áßÕW×–uE;ÞÞÞÑà}í†Ó±îGLfBj8h“å$C2cë”åyžÜvC³} +[øÊfVsv‘I%éLŠ:¹ýtÿñý/4nzü5‰£Ï}]>º¶é÷ô9<º!¬ïvÝ·>¹Þ+‹ã¾>~aa舸%‰‹º‰´;÷µ¾Úf’nK“xôC}ÁË¡b¨ +c™UŠ{U¾wmý äB%•\´¹J>¶4u\³"©ûC×ö5Í 7üu£eÏfb\g‚™AÞÁ:׿”,ÓR˜@¶õ‡tûÈ×ÿDËà˜T\™¼Â‰-VÈ8üÖìv4*ëò¹°}¥÷nÀQ3ÑzMô¢‘Rb5H0ó’Ò¹]h5¡×ñw\*OG2Z;ÐÄ™?|¸¶z6né<gÚfhÜø¸Ë“†£kû-Ù!‹®ä,c… ¨|ßatä&Ùw$}5í¶;îÝàeÀ ·éN
1ܨ@g.ÍKn69ÌÙ+béMoTu_›ÃY +W6©Bp +¢I[ÃäÚ91Àáh‰(ü3Ò§Ó
×6¹æ;sªœc®D*°Z̺rM yIˆN(‚ϱEr¿þPé´1ò/¤P#sÈ”B‡®ìv¤™ÏKàÂþP—ÍoyΡBúÌ&´«z^šŸ>¿CfÎ.Í2Fã™Ö Ê_n~ý=_U`ŸŸnòLØB¾ÁGž¾Úß µJÆ™ÝÍÝÍGŽÂ +‘éœéçyѾx…!íP¬Ò(]*8à1÷Ȩìve1¿Àª°6“¹¥;{;±±ÒÒ#
–gJðèŠOëT³äþçÉ»KË +SDôçÃÃ@x´»'¡w˜+
"1f¼ù¤È,Üì£ù™0Ž–ïé3€>5áwâ„K¤`Á.ä›&‘¿——0*«í*
{ÿvÖœ¦º3±ž¶X“N'ÒqåZ±ÐïðÐï¼}W6%eüÿ*Ÿ/7?ã&mã&?ö%~ýìëá±C +ƒ·¡Å/øx#}o›žž‹$ͳ"·± z_?ǘ«ŒÉoˆazèvM¹„0Ò(SØ@]î|›‹=Ój(íjØåQï5k€cy!£~ý€rP• Œâv^RöÐ÷]8ƒ +×j¤‡ +΄£Màõ¿|ŒÜHÖôA-08×I@t98ÔÌÁˆÏùMã혽B†·Ã³å`æp„²Þ"°q—o—^ÇãsÇM´^„|UÀ1øXžÆÛŒØ<âr“ü–«üû¦GŒ—¼{÷Ö-m»ðhŽ|€Jä¹ùç_4’ÏŸï>~xEë·°•z…)AÃK,¹pÝ×¶½ÿ¬&TdÍ9³à¤Õ‚w:|d…êäÛ£dZK&œÈªVŸ±*Œ£_KSÐ=5m8#<ÌÁ,–JÍ#D±”îI—€-`ñcóÝÓ|Ä—×Ç:—üK³›”Œüs +ý1àÖº@TÿyÀp.ª…aGØ…~æII¨L>óznvFš¥Â¦ˆBE D¨3SÏ>º^÷µµ^endstream endobj -1338 0 obj << +1343 0 obj << /Type /Page -/Contents 1339 0 R -/Resources 1337 0 R +/Contents 1344 0 R +/Resources 1342 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1323 0 R -/Annots [ 1343 0 R 1344 0 R 1352 0 R ] +/Parent 1328 0 R +/Annots [ 1348 0 R 1349 0 R 1357 0 R ] >> endobj -1336 0 obj << +1341 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/usr/local/share/db2latex/xsl/figures/note.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1354 0 R +/PTEX.InfoDict 1358 0 R /Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] /BBox [0.00000000 0.00000000 27.00000000 27.00000000] /Resources << /ProcSet [ /PDF ] /ExtGState << -/R4 1355 0 R +/R4 1359 0 R >>>> -/Length 1356 0 R +/Length 1360 0 R /Filter /FlateDecode >> stream @@ -5024,12 +5047,12 @@ qª„Ñ«ò^ÿï>‹«>÷—
.13×…Óƒ!¶3¢SËAÕ”ih¥Å¨Š^…(€<Îm䦽ªšÛÆlLÊâ³ò7Ù n*Œ1½÷¨¾x¥Æˆpîâ‹&Xîܧ³±è\íD¤ßä0}#XŒûž˜‹¸À>#^V°¡|2Îi‰9ÊÎr)`˜¢Xh¡Ò& „hb—H°Œe"Ãê þrÓGçX5¾ûû8‡´ÕªOª«t–Ô³$Ây°‰—BÒ›ÀÄ5©/¨vp÷o`kA“ôr±ñœÓ4N.4Žæ endobj -1354 0 obj +1358 0 obj << /Producer (AFPL Ghostscript 6.50) >> endobj -1355 0 obj +1359 0 obj << /Type /ExtGState /Name /R4 @@ -5039,180 +5062,167 @@ endobj /SA true >> endobj -1356 0 obj +1360 0 obj 1049 endobj -1343 0 obj << +1348 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [470.3398 484.6246 539.579 496.6843] +/Rect [470.3398 467.2776 539.579 479.3373] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1344 0 obj << +1349 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [316.7164 472.6695 385.3363 484.7291] +/Rect [316.7164 455.3224 385.3363 467.3821] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1352 0 obj << +1357 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [304.6433 205.7899 373.3153 217.8495] +/Rect [304.6433 163.6578 373.3153 175.7175] /Subtype /Link /A << /S /GoTo /D (dynamic_update_policies) >> >> endobj -1340 0 obj << -/D [1338 0 R /XYZ 85.0394 794.5015 null] +1345 0 obj << +/D [1343 0 R /XYZ 85.0394 794.5015 null] >> endobj 130 0 obj << -/D [1338 0 R /XYZ 85.0394 769.5949 null] +/D [1343 0 R /XYZ 85.0394 769.5949 null] >> endobj -1341 0 obj << -/D [1338 0 R /XYZ 85.0394 582.6901 null] +1346 0 obj << +/D [1343 0 R /XYZ 85.0394 576.3463 null] >> endobj 134 0 obj << -/D [1338 0 R /XYZ 85.0394 582.6901 null] +/D [1343 0 R /XYZ 85.0394 576.3463 null] >> endobj -1342 0 obj << -/D [1338 0 R /XYZ 85.0394 544.5476 null] +1347 0 obj << +/D [1343 0 R /XYZ 85.0394 533.5444 null] >> endobj 138 0 obj << -/D [1338 0 R /XYZ 85.0394 327.6392 null] ->> endobj -1351 0 obj << -/D [1338 0 R /XYZ 85.0394 295.6795 null] ->> endobj -142 0 obj << -/D [1338 0 R /XYZ 85.0394 119.5277 null] +/D [1343 0 R /XYZ 85.0394 299.6823 null] >> endobj -1353 0 obj << -/D [1338 0 R /XYZ 85.0394 92.1076 null] +1356 0 obj << +/D [1343 0 R /XYZ 85.0394 263.0631 null] >> endobj -1337 0 obj << -/Font << /F21 926 0 R /F22 949 0 R /F62 1347 0 R /F63 1350 0 R /F48 1223 0 R /F41 1203 0 R >> -/XObject << /Im2 1336 0 R >> +1342 0 obj << +/Font << /F21 930 0 R /F22 953 0 R /F62 1352 0 R /F63 1355 0 R /F48 1228 0 R /F41 1208 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1361 0 obj << -/Length 3424 +1365 0 obj << +/Length 3579 /Filter /FlateDecode >> stream -xÚ¥ZKsä¸
¾ûWô-rÕ´VEQJNÞ;;©Ä»±GíãÀ–Ôní¨¥^=ÜãýõP¢ÚšCÊåŸ @°ÃM -_ÆBØ–úêñêŸA§×L]dø‘H¢IFÑš$eæ'"F’û¶;–ì,μÝ+íPŸNeSTÍ35‡’ -åç¡lúªmpÛßÜÅ¡C<¢R%È’õmjµ`!J`±àACë. -jVåT!&ßÁaH?×cÏĆƒæÎ|P@pg;Û– -}ÝžyÔ¡l¨¤—»!εQßg$Mz%³øÎâ‚Êžtý·ä;¼áñcÓ¥.€ãHÄ,ì(õðЖôв֝–ž±l³}Í!À7”ô=VÍ8”½¡*@a`WdbЧPF£4k§Dl÷Ä‘…¯þdøRÞ©ÖyiXÞ‡±c¢©e\MŒ§ÞÉì¹ÍÁl
åNÜ€h -ˆmí¨… аW`1ó•éDp÷i
…Ÿ¡· AAäÞØ¤»¡×šQ@ÅòÊ4åã±t“›“Cí€]ZýeeѤ´$Ÿ#`\±TÙ¥ƒÆAÇáØ™µy^ðÛuCH?IaÓu·@Öë=Y#"äsC;)‹Uû±Iƒ¡Q2Ã4‘ZKÞìºccIŒ•Ñw\£qýaŠöÌ[îÌ;ÝŒv;õYMJ˜6¨ì+õ°ÎHü¡2?Ì …îðO§¶ÓCi¨+1DVì†Àx–ÏlJPaøÁRÛ~¢’1&žÄÈfFr[{ž2Çó¼6ÿþ ›ç·‹±xÇšëDíÑú8вaª±J‰Z×8/m¬w_v¼áŸeŸ\ÒìWkëí.Üh_+„NS9ë¯:A)&"0 Ùø'éÂ?í©ô™Ý° -¡Cšáε-z–Ⱥ§Î»'oE³}Š ðnrrÎXx.F†Þú
p™J–6`ÈéóÊ1ÄÊ—i ¾r‰F“]‘›´ÁIÝêâ‚aÒÿâ’{ÂÝiâ¶l&ÕÜF*öƒ ¿ ¢Ž¯õ§M‡pl1HÕŽS?‹á|8×p½
ÄÞy·pv?NÀódlméñɆ·r€eDäÇY8þ+]s«éqi8¹Uj_&4°…
zhó–çȃ™šª„Щ¹–R¡¯¹x¡Mp±$c=”æ£Á Oýn
*º± L$Ãx‚ˆÇq„d(NÜe¤
¾ ¤PÍNTQ ÖÂå}¾ôPTºØ>Ì'Ä—s€œn¡†ôîÞSC˜eÒPN¼Ç²¼ÌíĉôÃL&€ôÆRa–…:»ç
œ´Ì4~ëNx›–yK¥öÓ´‘¸k‹AêË -®–;»26Sš 0ö©xGW''
ŵ™g¤3» Â*s…ÇÛXä÷–Ž;ð‚¹®DìÊ€pCÐ-š÷£ UDlAº(vÉINœ0`:DœÂ*f6ÍŒr8`Ï4
Ø`×i˜r w)Àm¨`JoVŸéö´Ýwíq[ -ð7¦\1XoàH*ËŒìeÆ -¯6ŽýTEétÚÃxâ þivf¹"`ì†RZ1óª{LŠ{
u=ë¦úÝÚ -´Ú„8<ëfXîŒ (×s¢z˜}Sè§ -àŠXL—BamѼ¶Ñ@·3ËiL·/Ð6޳‘@ݼ[ñ*=Â`ÌŠj!¯ö$R !— -×Ka˜úJ…üÐRX¬øšßÑ6húXä…"Ûô<öÄÛ¡Ü«ƒ¯%M‚ïÔïÅ<íéˆXÖû%Á/<€ô„7ŒmW¯?Ü4¬:¨NÈ(’%2B!£Hd’ÑFÔÉ´qÁÆjÆH¢[<RÕF͆}¨›'CjrTj€M˜Aìië.59#hÞ•‡ª)¾ø<ßuP©b4WwD§0SÆ:vô*2ø`Ï©3¯^2pbÄŠ¯ZL¿hóc ;vuûã‘9ãa°¿ˆŒ¾1«xDÑtsùfb×ÆÞ¾šØl¶=ó³ª^{ÃYhÔðlùîb)Méxç8ñ— -tœþ—~ø"¤¿VYI2À?Ÿëÿý£˜ù§C±òEšFëÙŠH¥~œf -&o8·¿žyËúÿ -endobj -1360 0 obj << +xÚ¥ZIw㸾ûWèú½‡.ÉÉÓmg:/ñLlgy³ ’²8M‘.V{~}ªP”ÙÓ‡<ˆµ +6ÏÐ÷׫Çlí ;êÛ§«oîd²Éü,ñæiïÐJý MÃÍSñ“ùÒ¿ +÷ñþýÃí?n“È»ùûõV¨Àûñûû[*==ÜÜ?ÞÝ><Rõç@ÿ{÷ +ì´ †wÐn ЗÝKÙQù|(›‹n\¼ëª®C/§úÄœ¡?®BñTë!²”¥0“Kíþb™ ¼`ÍpÚÅɾömw4lj2:¨>ʦ IA3‘†Bùy(›¾jÒ(t4$MSIŒªŠdý_›zEDÊIdÔdZ +ÞÔ¡k.7-÷î˜hYT¤dP>êf4ûF˜ò'&~&EjvM›Œ“Yý |®Œ‘BI×}K¥6Ï5ÊUGuÕÀ“1"*Æã ¿„œØ3Xúy{<Õå0ÕЇ¡gÚû‹Á¤ÏUXNqJB‡–ÊN4]+š9p$•5àLxöK<ƒBA¤±ëª\Á¢ætYèéý`Ø}¥Î<~¨Ð&ß°ÜÏõØ3±á y3 +îlgÛR¡¯Û3"s‡’^ƒ’š`í ˆIo¡dÎß™]PÙ“®ÿ6'É›=~lú¡ÔìXȈ™-R…¶¤W”µ~µôŒe›Eèk„ +ÒÝÐ#XXDË+Ó”Ç~ÐMn$‡Ú§´úËÊĤ´ÄŸ#`\±TÙ¹ƒÆAâpìÌÚ<¯@ø…íº!$¤§pè…ZX ëõž¬ò¹±ÎüÆ3ç?´¡†Šx†3h"µV|8uÇÆ+‘w\£qýaŠöÌ[îÌ;ÝŒvÁv곚3mPÙWêaq¨Là/8ÐÁÝ5àŸNmGÜ4PE*+vcc"ôÌŸÙ” Âðƒ¥¶ýD%cL<‰‘ÍŒä¶Z÷<e&Žò\õïçÈÍ]ŒÙ;Ö\' jÖÇ6pgj¬R`¢Ö5ÎKëÝ—¯á„uuI³_·»p£}u¬:Må¬W`â8A%§0JÊ…ÛS;è3»a¯Ða“Tl?Ð:;eÁ¡’ôìÏ]ç¡L4Æ“cKëç…÷<jàÎP9‰z´¢#è`µaHf#Þ,ñŽsfõ5'€Ì܆͡9ô€?O¨y8´„n
•¶!§™xoœµ?sÂêb.âùböÙOƦ
+ˆG—2È,Ò6ü
]ØÞG<Kšx¯íH…ƒ~Áí¥ìA¡åH4uåÛiôÌ…t +±Ìd'b|çJæìÛÙ»ÃØÉëã¤é=b©í>ý°?UÞ‡ª×»zΦ +j=§’úq’IÇ¥kn5 .
'·JíË4¶°AmÞò\y0SS•:5×R*ô5ãOÀ!O ´ .–d¬‡Ò,üÔïÖ ¡¢¥hÆcD<Ž#Ô”-r–QjÎð +´Úl8<ëfXžŒ (Ñq–zxûȦÐOžüö^þ‡9žï
Ä'“’G³¡ÄÝ?õ‘³ŽÞj¶š
%&êÀ*½ñâ Wð]Gjä]$’cä„D"é€ FoŸH¬a™ú™®¼Àè™2i+ê‚ó1/=Ó’ Ü|ꊞW°Òâ“I¿|À)%í6N”+qìxfß¹¥(wF$Œà ÃpbrÁÃÁÄ'¸M¾ +Gg\ªà
8"À`xbílgC‹›d¬.â)h¨Ký©§¢cDߣɑb ÃЯ¿Tš*%„$¼Âî`ªˆ ™qÄgylþ; +endobj +1364 0 obj << /Type /Page -/Contents 1361 0 R -/Resources 1359 0 R +/Contents 1365 0 R +/Resources 1363 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1323 0 R -/Annots [ 1364 0 R 1365 0 R ] +/Parent 1328 0 R +/Annots [ 1369 0 R 1370 0 R ] >> endobj -1364 0 obj << +1369 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [464.1993 416.3401 511.2325 428.3997] +/Rect [464.1993 393.2115 511.2325 405.2711] /Subtype /Link /A << /S /GoTo /D (proposed_standards) >> >> endobj -1365 0 obj << +1370 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.6967 405.4011 105.4 416.4445] +/Rect [55.6967 382.2725 105.4 393.3159] /Subtype /Link /A << /S /GoTo /D (proposed_standards) >> >> endobj -1362 0 obj << -/D [1360 0 R /XYZ 56.6929 794.5015 null] +1366 0 obj << +/D [1364 0 R /XYZ 56.6929 794.5015 null] +>> endobj +142 0 obj << +/D [1364 0 R /XYZ 56.6929 769.5949 null] +>> endobj +1367 0 obj << +/D [1364 0 R /XYZ 56.6929 749.4437 null] >> endobj 146 0 obj << -/D [1360 0 R /XYZ 56.6929 488.287 null] +/D [1364 0 R /XYZ 56.6929 458.7525 null] >> endobj -1363 0 obj << -/D [1360 0 R /XYZ 56.6929 451.1363 null] +1368 0 obj << +/D [1364 0 R /XYZ 56.6929 425.4132 null] >> endobj 150 0 obj << -/D [1360 0 R /XYZ 56.6929 282.1132 null] +/D [1364 0 R /XYZ 56.6929 270.5184 null] >> endobj -1366 0 obj << -/D [1360 0 R /XYZ 56.6929 242.7532 null] +1371 0 obj << +/D [1364 0 R /XYZ 56.6929 234.9696 null] >> endobj -1359 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R /F55 1306 0 R /F48 1223 0 R /F40 1146 0 R >> +1363 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F55 1311 0 R /F48 1228 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1370 0 obj << -/Length 3171 +1375 0 obj << +/Length 3172 /Filter /FlateDecode >> stream xÚå]sãÆíÝ¿Bo¡3'v¿¹LŸ®9§¹Lr¹äÜ6Ó$3¥%Þ™=™TDÚ:ç×Xì’KŠ’ìfúÔуö° -ú[5w—<Ùµ_®‹»rM‹0r |g¹ÔˆÑsöâr ÂH^׫t†§WŠûG~ašyÄ<’©äY@[Ú¹šÁ§ÓLK5àãÄómW>”»bC“U³Û6»¢+ ¨ºÒƒu·Ež|(i¨‘ ˆ
ˆè\éŲWЪê®ÜÕˆYd:©Ënßì>Òd_u·4Ú]r›”m¹{ -<Ÿ1"¹ËpYüý…I±i‰À°êƒD`qç:ÿ°¿ˆpµ*[·kûÝU¹ëŠªž³@aÙÔ›GÒ:f;5™‚ˆ{»jºYê7o$±qöæÝÒÁXÓžËÁ¾^£d9Ë -#<ø‹ŒK¥yÊ4f>±~³øc˜³”g\Ž8=*p~–ۼǹTÙï!raS°µXâIØ'ÈQ]J2¾¢W:®¢E»f0 ð+"•©ñ`I-€ò<ök8ëÑâ„l Gä±qäœWÙ•¼ó°hâ„â® ›ˆóö6UÜš?"õC¬˜K1+k/
ÈŠµb:B/Ks¶'Éåvb8Ï0D ->óF£R)GÂy†‰û£ -®R#@ßÞƒxÅ_æ"Á«ÏLâ}_9-x?ameLöäcš4“}æ4>C®Ÿ|<‡1HcÝ@¾SSÈd!dšØ%Â,D?9G˜ÜÝ·þ¨7¥—’ÎR«™ÄÔe -Ÿ}áÿºjÁI6{šQú -÷qÒe¬!NâÄ¥ðß$=Mœ& ->âAg‚°}ëèO»¨ìRy*p
™D‚så†VËØ.x_n{_êlwÆÀ¤HMÎÕ9“5ãÏòãpqàþ—¨bƨÃ5V€|î7k:i¸ÇU{˜öžÒžípX·…§%’ïÊ'þIï{ÑÀWmÇQ€ÄLvÔßœ©¦!¦sÁÂEÜï÷g$#-“Ÿ“+×yð²ï»íœô`¤ÊtwA”OyW¹ÑP& ÉÝ¡¾ûÉç›’ÍHìøÉ¹Æî€ -¾¾Hï>y7«8_ÕØ*Ï´ 'ZGåÙU xƒÏ[§Fñ¸‘ÝK 'ì8¸*E€I×^f¼Á²¿†¡šžcŒÉT?áNÉ”a‡èÔK™yî•‚ˆ+â+EÇhoé"!ë¾¼ÄÕm¹ªÈٱ仟hñ@ï¸èr{ߣᩖVDW”:S7·^õI3zg4›}þY0.5g\*Ù6¥È…Ã3"Tpå*rå°ë]9+ÜF©.˵KøX¹*î]€(€ÀV¸ -ª¿Þ#Ê}@ÅTD„:YxùáˆâB%Ã}Ö\Q#“MÓ|¤CÁ"V¦‡0è<öu¹©ÏW´ÝÁy=ѸЃ¸Iþq©uB1 ë«%1VÇLˆ˜èâÅ¤Ø -Ì„|×Uq~/p²€¹¾Ó 6Mu§'ÊÎQ½x[úѨî¢ÚÐ׊õ˜Î¸ïp4Âí¹ü,tË<š2îòN:n;ÖtGð,²/fî.6WHþsÇøÂ;á<Í”ÔägÞ\.
#ÌøÏýCeýs¸e@:r_oо¤Ô¡ÝêFå#°«´õ«¤]¹„ÅÝ—ÛbóÞ¯ù0tqiVÕ=ưÐgMRGÅ»Ôf -r¿)VûÖé¹Go“"A7õ9'Úk -‘1ã”Îɵ¯Å¸ñVíF
ýû.%Œ¶—.È æ ÚvoØBÈXÊ -’ ×Á@#ôNJøÀ¡öPÚiçq椩´}EìºÛ3ÙOžZ#CJH¢ãQåKù(ÃlOÙCÍ>ÉÞ½ý¤Ô -<›ÅD;7*;Mµ‡:$;IÛa¬Ì˜ì·6Ò¡)gd!Ûd#o9iÏÔ#R§Ú0y¾Æ—™ÕO¨¹Ô38×øÇ4(Mš‰ÌžÑ`uBƒê¼OQ48%;¯Á˜ìÿRƒgú<3öåóSZŒ€2·+œDÝsŠŒ N(2@Wä)ª‘"§dç“}º"Üuøá¨¬8Ôjðà'eC—UuVV'©²: ;+«Ù«¡§4©Ã{¿á
à8PަYœa„r/åCÓ8cƌ̯‡ù¨üemO --ÜüüÆœÑQuBG꼎NQt4%;¯£˜ìÿ_há -¿†g>¨‹¡Nh0@×à)ª‘§dç5“=Ë@£ôIÒy-j‘B†—=I‹æÙQå¿Ôâb)bÎò|rÙËþ…LQ¿/Sþ;-us`Ò×XÐø7®¸NY}:‹™ò_ò¹áÞ/ýÛ½ -ÃѺlW»ê†¾Î -¬’vÁ9èKÓÇœ´¹û° Á‘q÷ðËøCã>Ä‹‚x'S~ÀûLpÌÌÁý -@ç8˜âŠ^KËR™¾ˆÃÓ¤~þhDlj߱ÎðÍúoTÿð粃cSP¿Y+æ% ™IȳÀžñЩõßÕ²þ™ep^endstream +ú[5w—<Ùµ_®‹»rMeaäøÎr
¨£çìÅå„‘¼®WéN¯÷üÂ4# X€d*yЖ„6E®fðé4ÓR
ø8ñ|[„Ã•å®ØÐdÕì¶Í®èJj«®ô`ÝmÑ…'JZ+j$b":Wz±ì´ªº+w5b™Nê²Û7»4ÙWÝ-v—Ü&e[î@‚nåµ{¬De&yë +–³/êÕ+ò¤¢´†Ë«MUö0Èþß”JLÇ;^›ÍæÁƒ +ÀíÛ¦íð®x|N]Ã㽺-êéÈ…ì+p=RÙ4Y²-wáqŒJÀ'>·@ºÏgŒH®Ã2\aRlÚ†FA"0¬úÁ ˜EGÜy€Î?ì/"\ÊÖíÚ~wUªçl+PX6õæ‘´Ž†ÙNM¦ âÞ®šnÖ€zàÍÆÛ#I`lœ½yE·t0Ö´çr°¯×(YÎð" +¶z[n=Þ0,y¨-¹ÍOÎGÍÖ!šÚתð.¬+6Çîè¦q}©SP}]UOl
üëœeÑ¥Ô£›3¯`œØ MX¾ñÀ«¦þ…1ñážÎ¾¦UgŽðÿ¾ÙíI*kBP„ç»/wUélÓ*t9å¶íôæ¯ÉRiLp yÚ³}èo„„ÂþbãRiž2™O¬Ä,þæ,å—#NO§ +œŸå6ïq.UFö{ˆ\Øl-–ƒxö rT—†LD¯è•Ž«h@Ñ®üŠH%ä€Aj<XR <ýÎz´8![Âyl9çUve + °®‚ê¯÷ȃrP1¡N^~8¢¸ƒP‰Áp_„5WÔÈdÓ4éP°ˆ•©ÃáÂ#:}]nª‡€Ãómwp^O4.´Å n’\jPGèújIŒÕ1"&ºx1)¶3!ßuUœß\‡,`®ï4¨MSÝé „²sT/Þ–~4ª»¨6ôµb=¦3î;ð_{.?Ý2¦Œ»¼“ŽÛÄŽ5Ýü‹ì‹™»‹M`ÁÂ’ÿܱ¾0ÇN8O3%5ù™7—KÃ3þsFÿÁPGYÿ\'nŽÜ×´/)uh·ºQùH#ì*mý*iG.aq÷å¶Ø¼÷kþÝE\šUu1,ôY“ÔQñ.µ€†¬&¾m€CŸ¹ËõÜ
téË“µ;Ëéúô]#f‡ëƒ‹þLýv>Ê~û4p©¬!?=q7 +3ƒ¾ý4ÆEýùa[î6—<yt/Q\Þ†VÕ´ÍÚG,?Ö>:¸/íôö99»*Þ€góÊù×#·tÒ¾sõu¤CÞC—rò¤?Þ=ò<¹x¤½ú¼ßJÁ޼˜•qC7CKú&zÚvùÜy¤ÿ>×cRw‘‡Þ,EˆOÿÜj<3Ë9Íg]aä°‚ÜoŠÕǾuzDîÑÛ¤HÐM}Ή¶ÇZ«AdÌ8¥srík1n¼U»QCÿ¾K £í¥Ë2(ƒy‚¶Ý¶2–2Àöm}‡‚dÂu0н“>ph =”vÚyœyAéF*m_»îöLö“§ÖÈ’èxTùR>Ê0ÛSöP³O²wo?)5€}âá.Õ)®_ÞNne‰=<ï*XÆCUr|åóà!Q6`×ç3†pª±î£¾‡îÚ™KÑ~Bt¥v1º„Á…5ϼ~ÔY +åk~ðú1yAä!
Qwìeë»7ÊùÅ/µ¾8ö–Y +CEÕ0´2ÂE¥Ï¦D1ÑÎÊNSí¡ÉNÒv+3&û-¤thÊYÈ6ÙÈ[NÚã3õˆÔ©6Lž¯ñefõj.õÌ‚NgÆ5þ1
J“f"³g4AÐ`€:¯ÁST#
NÉÎk0&û¿Ôà™~ ÏŒ}Fùü”# ÌÇ-ÆãЧQ÷œ"#¨ŠPçyŠj¤È)ÙyEÆdŸ®Èw>B8*+µ<øIYÅPÇeÕC•ÕIªƒ¬ÈÎÊjDöjè)MjÇðÞox8Ž”£igc¡ÜKùдΘ1ãóë!G>*ÿcYÛ“B7?¿1gtAÐQ€:¯£ST#MÉÎë(&ûÿZ¸Â¯¡Ä™êb¨Pç5xŠj¤Á)Ùy
ÆdÏß2Ð(}’t^‹Z¤áeOÒ¢yvTù/µ¸XJ ˜³<Ÿ\ö²ÿD!SÔïË”ÿNKEݘôµ4þ+®SVŸ…Îb¦ü—|n¸÷Kÿv¯Âp´.ÛÕ®º¡¯3€ÔMó€_A=’¼iº2 *º0 +L…ÿ1NÌÑlyÙó¨G¯‰ÿ<©EFoc§wòæPdNŠ-Z|lîwçAQÙQ†Î_[–S“V «¤]púÒô1'mî>,hðcdÜ=ü2~àиñ¢ ÞÅ_ÁÉ”pã>3sp¿Ð9¦¸¢WÄÒ²Tkk¦oâð4©ßÇ‚?QÀqâw¬3|³þÕ?ü¹ìàØÔoÖŠy HfR+ò,0…g<tjýwµ‡¬ÿíp~endstream endobj -1369 0 obj << +1374 0 obj << /Type /Page -/Contents 1370 0 R -/Resources 1368 0 R +/Contents 1375 0 R +/Resources 1373 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1323 0 R -/Annots [ 1373 0 R ] +/Parent 1328 0 R +/Annots [ 1378 0 R ] >> endobj -1373 0 obj << +1378 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [417.8476 110.3446 466.5943 122.4042] /Subtype /Link /A << /S /GoTo /D (sample_configuration) >> >> endobj -1371 0 obj << -/D [1369 0 R /XYZ 85.0394 794.5015 null] +1376 0 obj << +/D [1374 0 R /XYZ 85.0394 794.5015 null] >> endobj 154 0 obj << -/D [1369 0 R /XYZ 85.0394 769.5949 null] +/D [1374 0 R /XYZ 85.0394 769.5949 null] >> endobj -1372 0 obj << -/D [1369 0 R /XYZ 85.0394 749.3028 null] +1377 0 obj << +/D [1374 0 R /XYZ 85.0394 749.3028 null] >> endobj -1368 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F40 1146 0 R /F41 1203 0 R /F14 952 0 R >> +1373 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F39 1151 0 R /F41 1208 0 R /F14 956 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1376 0 obj << +1381 0 obj << /Length 735 /Filter /FlateDecode >> @@ -5222,21 +5232,21 @@ xÚÅWMs›0½ó+˜œà Y€a|r§m¦“IcÚKšÅrÊGïɯ@ ܤNÓÉL‚–§ÝÕ{om›Hü`Óõ ÀtvÍ Æ¯/t-lvWo{‡ Ý‚Zr*4ÐÂ'ºzªë"ÊÖ)“ÏQšæ7 äѪX2.c?‹V¹¢€‰%Ö‘ ÛºÑr%¶õÄÓÈYQò$.åêòŠñ»M_qÌ -k²lúðÌ´“g.û‹F8‹¯x!>÷d[z!¼§Â@ëcýè4Í„Y” ÷B ]:^#öФd²Û:Œól¯mGµ©s€ònÝ©¥¥v™¨†ö²Q¿ÈV9¹2ÏÔ$‰<*“kÖ(–§We£@åÚ§meg@ûšÀ-Vy[ãm™žúÏZ-Š4RÜõ]u® /uy抺ԟLQŒú5´ã"=6ôeD·Òü_Æo¤ð¶Áï
°Êù^7½M…É»ÍÒî³óêÑéÍÀKˆÅ»À¯d÷ÿMÞMÝ5šº°ºûj.½¨cç+öÓÎRß'Íí™Ö홌}èø"ɦ©ªsì÷:Wwñ~ë¿ÈUendstream endobj -1375 0 obj << +1380 0 obj << /Type /Page -/Contents 1376 0 R -/Resources 1374 0 R +/Contents 1381 0 R +/Resources 1379 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1378 0 R +/Parent 1383 0 R >> endobj -1377 0 obj << -/D [1375 0 R /XYZ 56.6929 794.5015 null] +1382 0 obj << +/D [1380 0 R /XYZ 56.6929 794.5015 null] >> endobj -1374 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R >> +1379 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1381 0 obj << +1386 0 obj << /Length 1364 /Filter /FlateDecode >> @@ -5248,149 +5258,150 @@ R/JýÄŠïÛ@‰2/ü@ƒrý¥—]#jŠø‹ØP}Õ6ÄØ´ª&?AFÉîNvDçmó1ý‚±|ò‰Iæ¸ï±ü@c";1cóª! ÑKLæ—Ä£´ïéãÓ© ñ¦lÌ.Ù´C]çÚ¦§‚7nœ¿\ê}Ÿ¤fß'Ùƒzä’£4>U¹„J9$iè‰}óÆ5 ÃÆž9ò'+eÆF
z{ãq’W°»Š8ƒê&' €n¿ëÛu'vre‚íÙD¾-Dv¸ºüò“ôá
&^¦¾ýµ°ØKý,B˜yvêùáíúëÿ¨6Eendstream endobj -1380 0 obj << +1385 0 obj << /Type /Page -/Contents 1381 0 R -/Resources 1379 0 R +/Contents 1386 0 R +/Resources 1384 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1378 0 R +/Parent 1383 0 R >> endobj -1382 0 obj << -/D [1380 0 R /XYZ 85.0394 794.5015 null] +1387 0 obj << +/D [1385 0 R /XYZ 85.0394 794.5015 null] >> endobj 158 0 obj << -/D [1380 0 R /XYZ 85.0394 223.4026 null] +/D [1385 0 R /XYZ 85.0394 223.4026 null] >> endobj -1383 0 obj << -/D [1380 0 R /XYZ 85.0394 185.2496 null] +1388 0 obj << +/D [1385 0 R /XYZ 85.0394 185.2496 null] >> endobj -1379 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R >> +1384 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1386 0 obj << +1391 0 obj << /Length 2265 /Filter /FlateDecode >> stream -xÚ¥Y[wÛ6~÷¯ÐéK©“% -f¸Ê/“i¢f0 OS1+/B%™ -¥t+ÅÅíÅßz‚ƒ·æè¤NxÀ„ŒÄ„R„˜RŠJY$…4JY×U×ÌyâÕÅÜ—qêíivŸo²
¬éIZÃQÞÂ3 ¼;ÝÐB{ØgM^7¨Pa”ÆÞr—¡v@>ApÉd‚÷1Ü+8¸ÑÛ9”6T,il7Z©¶.{ŽûºéÚSÑîsMƒÎñ‡ü9MÓDX²þÇ Î\±X -ÇYW› :"`Qöd'ÈøaÈ™Bðùœ³T)a^–HÓ`©È«ŒFõ¾Ë몵“†žyuÜ€VÀç¡u'îèÙM*°Ä”•ðc6%"Dqd÷°žL//ÜB€:Ž·H1½/ñ¹Ïƒ ð^gUÖ 8·;Ýdöz¿föFwîJWz½£Ñ;7ã›\×-ô\Ì -@aQÔyµ¥iïŠ8yÈ‹‚FÛÏx=M‹\$>hœ&W]sN³ë7‹Kÿöz!”}mԆݽMÖ®çÜkòU¶±Võ}fô‚íò[]m3±D¨¥‘Å+M -+&d—Ö èD& ^ /w -)q‡ÊedÕ•n3? -ÉdYµ®7.)´]C˜´Ð;$N1îL%m(‚D,]ž‚¬òb*\J–bÍô!ˆ®u5RÙgœëÎÉsG¥EyÁ¬]̸Ï× ;Ò6±i{©A1ó>½˜¸Ïã˜ñD¦cÔ˜‹´ý¦¸R—^§¿?«[þáS ŇÍâ§Ÿ¾„¼d€¼5?¡W%˜8ÖbÿOJFâëª>××1C<©±©Ô -f× ]ô»¦µ»‡@¤`µjë‘HÉÐ4·j -ˆ¥FaK˜¾$<fÝ.жF1bn.ÅÞǪ~¨hØ»Œ‰x6óÄ;صnGqå°ÝM•ç‰`2J] X–‰ ¬‚“†q臘ŒŽb' -š±rÂ:YsO¾yÒ\ºVîû¹Rž}õ9o;ã¾]oJ½Å.ö¼
’ ‹d˜|½Ÿ -¢T}±¡÷•*–J¶hœ¢1õ]œÖ˜Ç¥%eœ6A'õJM_Ý8,g}ŸK¤æ>”èß·SŸgA œ°½Ú°u]ÝMÈAÆŽ"§*Q&ŒšÇ$
±k‡Š«´ÿ -p^Íš•:À¨‹mÝäÝ®<«ž|*£gãÞïž**¾££þ CúP÷ï§Q5¼Š5IxúCkéB.²ƒÁ‡ -/ ‚3ÉÝýsÑÿ«Ži¹endstream +xÚ¥Y[wÛ6~÷¯ÐéK©“% +@aQÔyµ£iïŠ8yÈ‹‚F»Ïx=M‹\$>hœ&W]sN³ë7‹Kÿöz!”}mԆݽMÖ®çÜkòU¶±Võ}fô‚íò[]í2±D¨¥‘Å+M +Nƽ“š2:Š` +„®ìNgx8»u+–ª‹8¶3й=¨©¶Õ;w"ßU„¨Ø~ŠŽRâ×êçSîˆ(•AHÅ +€u¾}¤1¡ +/ ‚3ÉÝýsÑÿdiÙendstream endobj -1385 0 obj << +1390 0 obj << /Type /Page -/Contents 1386 0 R -/Resources 1384 0 R +/Contents 1391 0 R +/Resources 1389 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1378 0 R +/Parent 1383 0 R >> endobj -1387 0 obj << -/D [1385 0 R /XYZ 56.6929 794.5015 null] +1392 0 obj << +/D [1390 0 R /XYZ 56.6929 794.5015 null] >> endobj 162 0 obj << -/D [1385 0 R /XYZ 56.6929 726.8027 null] +/D [1390 0 R /XYZ 56.6929 726.8027 null] >> endobj -1388 0 obj << -/D [1385 0 R /XYZ 56.6929 697.6944 null] +1393 0 obj << +/D [1390 0 R /XYZ 56.6929 697.6944 null] >> endobj 166 0 obj << -/D [1385 0 R /XYZ 56.6929 648.8841 null] +/D [1390 0 R /XYZ 56.6929 648.8841 null] >> endobj -1389 0 obj << -/D [1385 0 R /XYZ 56.6929 624.769 null] +1394 0 obj << +/D [1390 0 R /XYZ 56.6929 624.769 null] >> endobj 170 0 obj << -/D [1385 0 R /XYZ 56.6929 472.4047 null] +/D [1390 0 R /XYZ 56.6929 472.4047 null] >> endobj -1390 0 obj << -/D [1385 0 R /XYZ 56.6929 448.2896 null] +1395 0 obj << +/D [1390 0 R /XYZ 56.6929 448.2896 null] >> endobj 174 0 obj << -/D [1385 0 R /XYZ 56.6929 356.0575 null] +/D [1390 0 R /XYZ 56.6929 356.0575 null] >> endobj -1391 0 obj << -/D [1385 0 R /XYZ 56.6929 324.2991 null] +1396 0 obj << +/D [1390 0 R /XYZ 56.6929 324.2991 null] >> endobj 178 0 obj << -/D [1385 0 R /XYZ 56.6929 275.4888 null] +/D [1390 0 R /XYZ 56.6929 275.4888 null] >> endobj -1392 0 obj << -/D [1385 0 R /XYZ 56.6929 246.3805 null] +1397 0 obj << +/D [1390 0 R /XYZ 56.6929 246.3805 null] >> endobj -1384 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R /F40 1146 0 R /F48 1223 0 R >> +1389 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R /F39 1151 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1395 0 obj << -/Length 2934 +1400 0 obj << +/Length 2935 /Filter /FlateDecode >> stream -xÚ¥Z[sÛÆ~ׯà[©ÙnÍ“l˱’ÚI%º34‰ˆI@!@Ëj§ÿ½ç¶à‚„¬Étø°÷³g¿sö\Ô3?=ËâHÙÜÍÒÜE±Òñlµ=S³{ûáLËœ…Ÿ´g½^ž}÷Φ³<ʓ̖w,RY¦gËò×ù›÷¿,/¯Ï&Vs/âDÍ/Þþã\k=¿øøæò-½ýxÕw—ç©›/?]_bÊaž‹Y¹üéòŸç¿-<»\ü…gÐÊ"sœýú›š•p”ÏTdó,ž=BCE:ÏÍl{æbÅÎZß³9»9ûû@0¥¥S˜Ä6‹â̤ =Ó:ÊãØŒP‰ó(±Æ*°"r甚_5]¿Û¯úº¹gúuÅ•›j÷¥ÚIgËå§®:šõSõ„ˆÀ¾&†šÁ`ät–Ò†7u³‚ùVeóÏÕSǵbw®³9uçón-Í’o«þ±ªnô-WÖm×Ëê¶Ù<‘_AÛXf:aëÛ}×3ý[íÛìð¸öäŸa©o=+\=pY<_Âfph<æ€5ó®ÝlÚÇɺã²(K<VˆcϾ{çt€šÖ„”€ä‰\SlaÇUÛÜM œ˜È$I,Sÿ¥”ÙˆDîÚÐVÁ|«#›ê\æ#z‚ªÑQœf~Ö+9Çݑ̯~Æ€urÒönbç,Rk²`g3µ³‹T’ûóxè4ÜÈDö¯h-¬ÓQÇ9ÔTd4lK½üuXÎÿ̼ÀF’càIT@b6âžïÿû=_`Cç·€9Ëi·ý¦¯HLi.[š´´xâ®[zT«¦G€ÂÝî{"µ§K–£ìwŒpPвÚ<ee£²fÂpÛ¿ÈVe[ÉŠ¦íy(\_Ô
÷l×U+^ÜwÄS2ïÚñ` êž%LJ‚Ê(
QD¥áâ±ÝmÊ“,ÊâÖk/kr4Î"§lE®¦´+œÍìKjí"ë G‰†4%:%fP ÁÅ}Å}ýºè¹æq+¸ÉÌþ±¯:AŠnóhEp#%wÓhÇz³áÚwõ}CV‚Fûµì°–ÝCµª˜CZhm”f*>Qc²‰ÑP܉±ÉËH×PرT_-ëTä¨mÓUÝØÀ
ÇAUà“ÍðzΔƒ‡¶¦#ȵÑáf2Íö*’Ã|]ºz[oŠ4ú¢¯¶p—¸É>.UÅepݸTõ?Æ‘NÜ‹vldAÿÒ1E¸S(¼ûý®èë¶áÎÁhS=Vtú‰5lÿ9Ëí÷
ôvÐÜ9í ’©~ÙLƒW÷Û, ïûF¤b x‰ãd¬—ã›3¥[EÀ±ýSǽ‡@À ø «ÀbÛ®Ô
AP,AÐòæê‡C8C•×Eçµòbµ<Ü0Ž»vórÈóúê#Æ–™ž<{Nì;È…@À®¦äÊ®h˜Ï -‡›ÕLˆ eK€÷T€@G\.xžv!ÂY”‡» J)X"'ã ãÝÓ•Â!ø}‚ -H#õjtwÕn‚ĽFçît.VÀ1†¡_Ú?”`¦(BØžz³x?!Ø4JôÀÚÈ…vèacë=lÏ×U£K¬U_{ð7$/˜@…^‚›»Dù SBîZ"î(Öä¾Û–¼6,ùLZ -}í~Súy¬¬À“Wå$2:JsžúRíQÈ3©ß¡3¾h¼c(¶Þy·wÞCLlŸa>“¦#}¥rÞfÊé)Ô}üÀ''O2jg#£t6Gû†áðÍÐï¹èŽ ‹àéý…‡zùQ|½âïzì)÷`^¼©‘ðn*è>±¡EwêAoŸFQÖ \Ê%$Â2ÆMÙƒíÁpµ^І³ÎØGTHrpËp‘—Œµå¦ªŽóf 0W.†+m#•:ƒ,îîg\¹RÞaþ"\À)oÈÙ)]f`%ŽH ' -H=„ ”¯ð[è‚Єú‚Vñj Êç4¢è÷‡×ÂDÞ -ü
Ç´9§ïC0ˆ=Œ@‚†3ZI¤L~Z?só$æ©2úų;•Ž>Ãùü$?22Ù‘‘ÉýM…{#Ÿ´’I,ÞŒ
¾¬«<_¡ññáËÀ’‚“Óóå`Y\â^<^‚y(Ob.éŦ;ú*±ïŽ?Ù–Õ¦êýG‰òCÃÇ1Ÿ½âsü÷°u!sE‘¿Ôí¾ó=ƒ¡Šžûw…ÚÚ©÷5¤éÿ÷?µpid³ì™‡
¸_QfòÔ3…P}Ìùð…SÖÿfæ°qendstream +xÚ¥Z[sÛÆ~ׯà[©ÙnÍ“l˱’ÚI%º34‰ˆI@!@Ëj§ÿ½ç¶à‚„¬Étø°÷³g¿sö\Ô3?=ËâHÙÜÍÒÜE±Òñlµ=S³{ûáLËœ…Ÿ´g½^ž}÷Φ³<ʓ̖w,RY¦gËò×ù›÷¿,/¯Ï&Vs/âDÍ/Þþã\k=¿øøæò-½ýxÕw—ç©›/?]_bÊaž‹Y¹üéòŸç¿-<»\ü…gÐÊ"sœýú›š•p”ÏTdó,ž=BCE:ÏÍl{æbÅÎZß³9»9ûû@0¥¥S˜Ä6‹â̤ =Ó:ÊãØŒP‰ó(±Æ*°"r甚_5]¿Û¯úº¹gúuÅ•›j÷¥ÚIgËå§®:šõSõ„ˆÀ¾&†šÁ`ät–Ò†7u³‚ùVeóÏÕSǵbw®³9uçón-Í’o«þ±ªnô-WÖm×Ëê¶Ù<‘_AÛXf:aëÛ}×3ý[íÛìð¸öäŸa©o=+\=pY<_Âfph<æ€5ó®ÝlÚÇɺã²(K<VˆcϾ{çt€šÖ„”€ä‰\SlaÇUÛÜM œ˜È$I,Sÿ¥”ÙˆDîÚÏ·y0ßêȦ:—ù¤ž jt§™ŸõJÎqw$ó«_†ƒ1`œ´½›Ø9Ë£Ôš,ØÙLíì"•äþ<:
7$2‘ýëZët”Äq5
[àR/ÿD–së?$3/°‘äXxЂ˜¸çûÿ~OëGØÐðàé-`Îršóa¿éëSšË–&--ž¸ëV†ÕªéQ p·ûž‡Hí©ÆÒ€å(û]'㔢¬6O@YkÙ¨¬™0Üö/²UÙV²¢i{ž +×uýE#ÛuÕŠ÷ñ”Ì»v|ˆºgÉñ¡ r+JCQi¸xlw›rÁ$‹²¸õÚËš
¤³ÈÄ)[‘«)íÊ#g3û’Z»È:èQ¢!MI‡N‰” +n2³ì«N¢Û<ZÜBÉÄ4Úã±Þl¸v+Ã]}ß• Ñ~-;¬eA÷PjÄæZ¥™ŠOÔ˜lb4”wblò2RÁ56A,ÕW`@DË:9êCÛtU76pÃqPøäG3¼^„3åà¡éÀrmt¸ÙÂLs«½Š$Äð_—®ÞÖ›b'¾è«-Ü%n²O KUq\7î +ï~¿+úºm¸s0ÚT~bc
ÇÎrû}}„4wN;ˆ$Fcª_6ÓàÕý6$KÂû¾©^â8ëåøæL©ÄÄÅVplÿÔ±EïÇ!p~Â*°Ø6€+uCK´¼¹úáÎPåuÑy¼X÷Œã®Ý¼ò¼¾úˆ±e¦ç$Þûr!°«)¹²+Fæ3ÀZTUÌ +oþÆ•²Âá¦F5"HÙãà=`'Зž§]ˆp¥‡Àán‚R +–ÈÉ8Èx÷4E%‡ðc~Ÿ ÒH½ZÝ]µ› q¯Ñ¹û…‹pŒaAè—ö%˜)ж§Þ,ÞO6=°6r¡zØØz›ÄóuAÃèkÕ×ü
É&@¡—àæ.Q>蔀†»–ˆ;Š5¹ï¶%¯
K>“–Bßc»ß”~G++ðäU9‰ŒŽÒ\§§>ƒT{òLêwèŒ/ïŠíƒwÞí÷Ûg˜Ï¤éHßB©‡·™rz +u?ðÉÉ“L†‡ÚÙÈ(ÃÃѾaÄG8|3ô{.ºc¢xzá¡^>A_¯¸Á»{Ê=˜oj$¼› +ºOlècÑzÐÛ§Q”5—r ‰°ŒqSö G{0\´!Ƭ3ö’Ü2\äÄ%cm¹©ªã¼Y+Ì•‹áJÛH¥Î`˃»ûW®ƒ”w˜¿pÊrvJ—X‰ãÈ À¬¹–’,Ê3ðBá'¹÷0ë%FR¹1‚Î7”PYw«}×
¼µÇrß¶>)•ðØV_k—OE¨c°ÕÆx[Íê¶xh7õj*IOÐäZ!‡0iÚ‰ZÈ¥RK·éȉ&âD/w»v×½ìÙ éTâ®+çÌÐGÇ׉7ŠÐ3h7Ôƒ°Z«¢áÉâJ!½ârЏ´‚L°Øp£Úñv;´Ú&Ï0 âÙ}„ZÇ»H|=tu+›¶YL¥Br¦ûqxYÀ¦¤¨©£ÛäDúßý|ýáòúš‚²l)µ€öÀ¿rÐ%á¹ã¥¤hûEhwüö‚£¬SŽˆp•=ø+È(9"‘uÏb“Y?)ÛTÆ›AÏ}Y„¬‰ ›$
å.À8:FÆ:0{Æã€ñ!7ÈC I +¨zÝ“
5aÔퟖˆXëi5eÀ¡8â‰sNä2c.WyÎÄÜÄ|”Î&>]XCÙ%¬-Ö¤¡¶àÀð u¼Âà#Xh,†±Žæ5\î›ÏMûØð*ŸRáš“lûÃÄŽ—±–ÁÊ’m&ã<ÎZ-$¡"dz*ˆ°Pkn®Ú²âi]Õ‰–Ë×oñù•S@ê!¡,x…ßB„æ€ Ô´ŠWë +»¾›m1½U*ÿVy‚3,œU*ÏŽÉgêÆhC!"dž® +öÒ÷rÜò0F ;Ráû“Œ43€-Ȩ£ìæäÃÇ€q–ï"¥´O2žÁ +Ò*†'Qg Höî‰kÌŸòZ–ç’ìäò¥`E˜ C;^PttÝÏ5-[k`N.0§Å`¸ã%’—!‘¦ +7[døÙ/ÏŽl©\˜G¨Ð½7Þf«ù[Hï4?ÝW‹÷Õf³¥ëèSª¯¨÷•g±¥§Q:xçÙ: ú}‚XÒäfàªâ‹ì]pÇ48A„òípc´Œ®W±é×íþ¹³h„k +ò-?ÎCño_iòvËõT‚du¹|Hyž¿ª1¾ð¤ Ká$î´ô‘…»‚H½R”hcð|æB±=„” Wào8¦Í9}‚Aìie:l5œÑJ"eò£Ðú™›g 1O•Ñ/žÝ©tôÎç'ù‘‘ÉŽŒLîo*ÔØ»ù¤eø{”Ljeñðflðe]åÉø +Ÿˆ_–œœž/Ëâ÷âñÌCysI/6ÝÑW‰}wüɶ¬6Uï?J„@>Žù콟㿇™+Šü¥n÷ìUôÜ¿,$ÐÖN½G¨!Mÿ¿ÿypø«…K#›eÏ<lÀýŠ2“§ž)„Òèc·¿(œ²þ?G°±endstream endobj -1394 0 obj << +1399 0 obj << /Type /Page -/Contents 1395 0 R -/Resources 1393 0 R +/Contents 1400 0 R +/Resources 1398 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1378 0 R -/Annots [ 1399 0 R ] +/Parent 1383 0 R +/Annots [ 1404 0 R ] >> endobj -1399 0 obj << +1404 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [101.3082 379.428 169.9802 391.3282] /Subtype /Link /A << /S /GoTo /D (dynamic_update_policies) >> >> endobj -1396 0 obj << -/D [1394 0 R /XYZ 85.0394 794.5015 null] +1401 0 obj << +/D [1399 0 R /XYZ 85.0394 794.5015 null] >> endobj 182 0 obj << -/D [1394 0 R /XYZ 85.0394 769.5949 null] +/D [1399 0 R /XYZ 85.0394 769.5949 null] >> endobj -1397 0 obj << -/D [1394 0 R /XYZ 85.0394 749.2913 null] +1402 0 obj << +/D [1399 0 R /XYZ 85.0394 749.2913 null] >> endobj 186 0 obj << -/D [1394 0 R /XYZ 85.0394 546.785 null] +/D [1399 0 R /XYZ 85.0394 546.785 null] >> endobj -1398 0 obj << -/D [1394 0 R /XYZ 85.0394 519.0032 null] +1403 0 obj << +/D [1399 0 R /XYZ 85.0394 519.0032 null] >> endobj 190 0 obj << -/D [1394 0 R /XYZ 85.0394 364.477 null] +/D [1399 0 R /XYZ 85.0394 364.477 null] >> endobj -1400 0 obj << -/D [1394 0 R /XYZ 85.0394 339.5007 null] +1405 0 obj << +/D [1399 0 R /XYZ 85.0394 339.5007 null] >> endobj 194 0 obj << -/D [1394 0 R /XYZ 85.0394 175.6792 null] +/D [1399 0 R /XYZ 85.0394 175.6792 null] >> endobj -1401 0 obj << -/D [1394 0 R /XYZ 85.0394 143.0963 null] +1406 0 obj << +/D [1399 0 R /XYZ 85.0394 143.0963 null] >> endobj -1393 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F40 1146 0 R /F14 952 0 R >> +1398 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F39 1151 0 R /F14 956 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1404 0 obj << +1409 0 obj << /Length 3227 /Filter /FlateDecode >> @@ -5401,286 +5412,287 @@ vÑíÛïZø—\m¤ÈU½úáúç»›÷0ÔP ñúõ¿®’$‰®ß½ºyMS¯ßÝRçÍÍõUžFwÿ|s{õûÝ7wÎ9/‰PH䇋 îšöttº( vDw’§Eá£ÐÕ&â, =pÖ˜ç áwoß½F‚²¨ Æ\¶#ïô -¶<wÁ†]0ûÈ/8_ºð¯OÃÔÃvME ÉÌõ43Ò`¡¹F(²E~A€‘Ú¡ÇfÛZMàˆväš(5AØŽ'Ãf·¶:šé‰F(f"<sùpl|ÊNn¶AÖ‹B@A‘{ ú0²ÒöKm–NÏ~šl7'£»ü8'¼Öì3¤ó™Øº˜ •ŠR¡£2L",e_m¹˜Ôà·•€ªŠr<Øb5‹0j;V‡fë,†ìBÀµó•8a†Ý!¤(gÅQø(ynªö×îÏ[
ep>ëòp¡)"xt9 +¶<wÁ†]0ûÈ/8_ºð¯OÃÔÃvME ÉÌõ43Ò`¡¹F(²E~A€‘Ú¡ÇfÛZMàˆväš(5AØŽ'Ãf·¶:šé‰F(f"\sùpl|ÊNn¶AÖ‹B@A‘{ ú0²ÒöKm–NÏ~šl7'£»ü8'¼Öì3¤ó™Øº˜ •ŠR¡£2L",e_m¹˜Ôà·•€ªŠr<Øb5‹0j;V‡fë,†ìBÀµó•8a†Ý!¤(gÅQø(ynªö×îÏ[
ep>ëòp¡)"xt9 !šs 9ÅZ˜oàwu¾€ˆZb¹óŒA.ÁÑ9'úè‚â6GlxÉ,föñùrûih¡0¡²°Õ¾Ÿ#Az^6LØÖŸXU9N
k
v§¿bÄVgÖYqJ¹ÓEN›Æ2-|M³Ù\'p<ºH}FÛlŒ™ÆàO…HFñšû£?ÐkÔ’ÌRrˆ^ ŒCYŒÒ:z×»8“iïx3>³“e9 é»$™ÇÆ‹O‹03±¼ÞâÖŽt÷¡¦5©:KõqKCf$Y•Òp‚
€ÇþðÈ Þƒv‹è—•ýXªÐãgÛ9üø½.ôV©\çæòK¡7=
Ü£áÌ(3"”S¿üýÝÍúƒ·’…w†/h; ü&„!èmù¤ãÈñÂøÀbÔYA‰ñN@ÞÊ+9ô»ßÛ®¶| -/\øŽó8«úÁjÜ(,ÿñÃ=½•8 «þXÒЙv¦òsð \}6óiÁ@È»Ÿ¾û¥ü%Èã;VÅ—A.T¥fþµ0ó$N井¯™QqfÂWCd -<Å^Ÿ"ßX=³°ŸDáS¢“+(}€¦þº7ILç©ð¯¿`yZÐ÷+/a´~¨EJG:š3&<¯§væa´üP„ÁNr9M|zvÜÎî!}Ì3-%Üeàñ³3×>e~æfC‚™Šd¹Õt0øè?ü¶ÏŸ,|(þ̯;”Žñ'+¿Å!}þ¿ùqúÉKšÇʹþ£™›85° å>µÉg”ûŸˆ<'ý¿ÅJ<úendstream +/\øŽó8«úÁjÜ(,ÿñÃ=½•8 «þXÒЙv¦òsð \}6óiÁ@È»Ÿ¾û¥ü%Èã;VÅ—A.T¥föµ4ó$N井¯™QqfÂWCd +<Å^Ÿ"ßX=³°ŸDáS¢“+(}€¦þº7ILç©ð¯¿`yZÐ÷+/a´~¨EJG:š3&<¯§væa´üP„ÁNr9M|zvÜÎî!}Ì3-%Üeàñ³3×>e~æfC‚™Šd¹Õt0øè?ü¶ÏŸ,|(þ̯;”Žñ'+¿Å!}þ¿ùqúÉKšÇʹþ£™›85° å>µÉg”ûŸˆ<'ý¿w€=endstream endobj -1403 0 obj << +1408 0 obj << /Type /Page -/Contents 1404 0 R -/Resources 1402 0 R +/Contents 1409 0 R +/Resources 1407 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1378 0 R +/Parent 1383 0 R >> endobj -1405 0 obj << -/D [1403 0 R /XYZ 56.6929 794.5015 null] +1410 0 obj << +/D [1408 0 R /XYZ 56.6929 794.5015 null] >> endobj 198 0 obj << -/D [1403 0 R /XYZ 56.6929 678.9507 null] +/D [1408 0 R /XYZ 56.6929 678.9507 null] >> endobj -1406 0 obj << -/D [1403 0 R /XYZ 56.6929 644.5195 null] +1411 0 obj << +/D [1408 0 R /XYZ 56.6929 644.5195 null] >> endobj 202 0 obj << -/D [1403 0 R /XYZ 56.6929 514.5361 null] +/D [1408 0 R /XYZ 56.6929 514.5361 null] >> endobj -1407 0 obj << -/D [1403 0 R /XYZ 56.6929 481.3387 null] +1412 0 obj << +/D [1408 0 R /XYZ 56.6929 481.3387 null] >> endobj 206 0 obj << -/D [1403 0 R /XYZ 56.6929 279.5586 null] +/D [1408 0 R /XYZ 56.6929 279.5586 null] >> endobj -1408 0 obj << -/D [1403 0 R /XYZ 56.6929 251.1623 null] +1413 0 obj << +/D [1408 0 R /XYZ 56.6929 251.1623 null] >> endobj -1402 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F40 1146 0 R /F41 1203 0 R /F48 1223 0 R >> +1407 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F39 1151 0 R /F41 1208 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1411 0 obj << -/Length 3214 +1416 0 obj << +/Length 3255 /Filter /FlateDecode >> stream -xÚ¥ÙrÛ8òÝ_ášÚª‘w"š xaß|%q’ñd|dâÌì%Rc’’#ïÏo7ºA‘§vK@£Ñw7%mø‰Ãгl©ÜÃ@¹–gïpšØ‡s˜{s xÍØ,wWÞ¿–Á¡²”ïø‡·³®Ð²ÃPÞÆŽÎÞž|¼½¸>;ž=r£±çÛ£“óOGBˆÑÉÕÙÅ9M_ÝÐàõÅÉQàŽnï®/ -@êžôÆ2´GËÕ$K§4¼5ŽÄ¨^”+¼7B'¼2-jPÑ$6oÈA\ÛTOeÁ#boߘ
Ól§Å|»K_ÀíÞÌ’¶'Í
˜Õ;×tËWÀv»Ëo:eUã ûŒtqè+ÞòË«³wç¸Ç®m[*°Ã¾PëL<;«{k%34
éYÂ/‚«Ñã9àþlÛݤóBßZyÁ*ðyµ:àq\xÏü]~ ú:QÃ1OÃHƒ -Ž\ë9¬£õ7ZÚ¯’Zg -Œ€M»PîäMᥕ2ïi(„ùðôòêœ p/Qj $Rq»KºÂLÀ -><K"C"¹i$¨:Â0À+¢bº -H³£ùóø|ð†ž4©RÛË0©ÃPáé[ïË^ÒòLbâAm´7Ì-
‡ÊÒ“½lóe¸vKsëÀTÓr©;¥BÁÍF!“ÆPÑ@§?¸Š„éx¥G=œ”KãZÔTÞœ›-¼Å^Õ
ËÒâÀ¨£½uÔ`œWÑ~²"s~ª·ˆp/–®x]W³ZêzSŽN¨’¦ˆ€Q–Öº§ÞbH5 …aøƒª\úª“QP®¥Ä@¡Áš—ÿñuZà%N’ÜЦ}&<“o©¶ ņ©o[d\S96ÄEÇU}£kÝ{Ù~•š*kòl)d\u¼PŒ¢´…´™ÚÑ`±eüû‚÷˨—ŒíeW%.#zÝb…wnÇ*iêFövD«¦ÌÁO)!¦MˆF«%£- Å-„¬Óˆ×¯ÏhàÙBô‰à¶nqLt÷}#¨oQ -J —ÙòC>Ï)¦I/ÿ‹ÓëÉ2Nêi•NŒn¤\çeQ9«!F˜þâ¦ÍYârºÊu'‘úí®©ƒÓOMîŠ,}Ð$Ç2'pGá+úøb Ýh".éSä΀ ‰Hgö+{‚•ËÊ(f´ºƒ)îEÀ$ÛÀ¨4„(È8… ®y•éÁl\Éø:ô|©ÓÈÚeÜ^¥Œ¤S½}p:™‘¿“Üúø¨¦¤Â/¥õ‚ZgRèêп|$F›%Z ½w·ï@ö/0ÊÊòFu™' síq‚¤ép7ѶÝ/k(¸D“’þhµ;(ÁAEÏúIém?ÌÀ{é“Ôp@©È-•þÄrDH
ok3U£ÍTõ髦¦ò¶‹•H™GEúÄ|ÑÓ%='É.´3{©ô¿õÖ¾mºž2í/szP숰zúmçBa¡Ý0LÇH¿Õ ¥ó’zM“.îQPuCWÏj&Ñ´ü³¸Ø"Ù -F\,YëUÎ…ðŽÏ -AƒÅËåö*ÛÜ›D¨Fiž¯´–¸6ó^§å -1OëÄ,,xÑ‚‰1*nv€²ÈF\„l$‚y±.ÆÓfÓN“sË ÃÈÜí{´-ek ƒÄJÞl)öµîþGãPÊØ;í—c=åa«?®Z+©®ÿ§ž0ôt&®Kt“ˆö=õtU.¶3Þü¸möös.Ñò“õ!N‹´I£l¬{±p¼€²÷øéôêÞ}¬þøUg³w¿œ}ŽíêÓçÍ}^N𠾏˜½—Óìzò&º}¼¡ë˜vdÑï¾Uo¾½û£ü²ò/ƒOïVÇjþͽ;OoNÞfŸßÇîÓýåòz1¤³Ñéûb==sîTþeñß-cñ©.ßžÄ_¯’ðCþkV<Ý˧óy3´Ý}ÈþøíäüöãÓÍZ%Qþ5ü$Âoß|=ý}jî×ÇYá}9Y~½Ÿ9»Åìv‘Uù‡‡8z"¾üú»óÛYqrvŠàüµ{zw×Ç“äüífùÜ_B¤gáÿ8þÀa·ÝŸÿûï"ÛÈ€2Ê0t†ÿ "±eæ¨À…÷tä.åíÿJöIÿ/¦I«endstream +xÚ¥]sã¶ñݿ“éLèö„ +)·‡ù±éòR–UOÏC_4ZznÊ9=øúi°Ï«ŽFk¶›¬[uO{‡c›ÛÅ#=K^ØðQËCU»S·åñdð):ÍÇ1bÌOR†uÙƒÎk%ƒCO¦qèóMIÊA}µ«ê¼£ h†Àñ4Öá?Aíf8™$@h<L%èp +¤ž‹o¡3ì˺ZÑ÷8RA¿mxq„.yeÕô ¤eáÞ…¸vp¨~kxû“Û°ªEÕlŽ»ì
¢ñ…ÁÄ„–±vW`^ŸÜ3LEb€ïrÌp:åÐã 県p˜Þò‡¯ÿúíû›Ü‹HJaR™Mí ÀÈw`i½ðØýüCǰM‘‡@Ÿ‚”RwÕ¦±·¶RÞ²üyu~:à c¡•Ñ/™JR3UŠŽùmiš‚ÜgÍk¤Œl^¤‰¬ž›†F9==+•I„Ž„‰N½mžfD†PB§”¨b`¶çD‚CÎbcÎd*ø¦ŽŒ³ß·MQ_´J3Vá 88ûÕÀóþ°Dby¿WfÉʰ=c‰‚¥F‰b‹€)VcI@oŽÐǪ®iÄ.ȘÓàEê…ÑÔ)|äÀwªÈZŒyté73è@2í|#bÑs¼Eš)^„¾ëèÄ0‡èööîÃWÏ!’ΰˆEÀ}ë!QOŒÖ-:,Ãfä×bM΋KdŽ +•±,PMt|˜;a¡Y +Žzâ4ž?*’j|dlvÇ#ßx§Á†øžó¬Û[0"ÞH¬û–±5à»cU|dXžü’×çEᦠüòº~²Û>“?NLÔÔuûH^^!ØÙ`Š/hN=
)f˜Ô)r6ïûÃÎï¬~ö´°jè=§‡0xPX³Ñ$‚ +ü¸ÕsXGëCîµø¿ÊÞf +>é|Ê™ ½Ÿjµ†œÏIÞºFxçOF»Ž';0ÞíÀ#¬¨–¤MûF‡=£m ¥|y¨rÜ~yMƒX*5%‚ nEtŸ|Yƒ*¼fU¾Ä•WÛ» ýß>ýl ãÔù„O{mŸ;JÈûUW-nTܼڵÓEC^±šÕÀ¼nºxðù~Ñ®;Û…§ˆ%"îuâÛ¦®~ædö݇øÑ¼tÆù´ƒèÀÐDÑ–œ‘“k„çjýÄéð¤%F0Jž!L·yÁh{Nø¹‰“lA˜é·œÙƒˆ+ˆiÕ¯rV˜-Z!3ŸVŸoÀŽZÀ§ls-]Ÿ¸˜æû>Ó¯µôafM“QU˜à÷ÓžFPCB¡Qõ[ê9keÛ*!8å+<íÑFè}¼ýœ +=º§u|ü¤ 3ìt¹§v½g¸”Óþ=!ãö"È‘ÞæK<‹Ã—xöôÃÐS_hŒ•HÙäMõóÅN·ô\–s7ôîSmìÃÄ»êDºvZl\Û8Ájô:笉oùìP
³2ñ +dlVÕïóU9†ãÂ3ê +¢èêuÏ$º¾Zrôô“‹‘ÛÚ–GÁbB„½žþ0séÄaeø¨(üTŽ=þ(W>€²Úí”hKæ½ý·VvU_º…
/Ú21NÅÝP¶fèi²‘æÅ¶‹U
O~šœXŠ0;탆þ[Œ˜É±•%…ŠŽÁ8zjÛtÿ¯=&JEÊ“¨ò…ÂFXŠiºH#M¬?Ú '›ÑÄ-ºí7üdžض³ôÌvÆ;‚á{¨©<->Ÿâª©†*¯öÂ8¥ž<>{÷ñ‡è±û×ßTs½þúO×ß²ûîû§vírHû››õ7zUß.¿Êïïžû‘Žþ÷gæO?Ò·ÿï¿ÿUBÐYÎÿ{Hc54©# +™êSÊý‘ÎIÿݳÊZendstream endobj -1410 0 obj << +1415 0 obj << /Type /Page -/Contents 1411 0 R -/Resources 1409 0 R +/Contents 1416 0 R +/Resources 1414 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1378 0 R +/Parent 1383 0 R >> endobj -1412 0 obj << -/D [1410 0 R /XYZ 85.0394 794.5015 null] +1417 0 obj << +/D [1415 0 R /XYZ 85.0394 794.5015 null] >> endobj 210 0 obj << -/D [1410 0 R /XYZ 85.0394 672.4905 null] +/D [1415 0 R /XYZ 85.0394 671.4386 null] >> endobj -1413 0 obj << -/D [1410 0 R /XYZ 85.0394 642.5136 null] +1418 0 obj << +/D [1415 0 R /XYZ 85.0394 641.1061 null] >> endobj 214 0 obj << -/D [1410 0 R /XYZ 85.0394 448.2445 null] +/D [1415 0 R /XYZ 85.0394 444.8166 null] >> endobj -1414 0 obj << -/D [1410 0 R /XYZ 85.0394 420.9177 null] +1419 0 obj << +/D [1415 0 R /XYZ 85.0394 417.1342 null] >> endobj -1409 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R /F48 1223 0 R >> +1414 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1417 0 obj << -/Length 2033 +1422 0 obj << +/Length 1913 /Filter /FlateDecode >> stream -xÚ¥Y“²Hò½…1/«Û#ÖAqÄû`«í} à5;ˆØ -xnìß‚B?ü>ff#&:¢+ÉÊÊ;³²„%@ÿ`‰œ #¹$Ê<G -eBp¹Ñ©O´Ö´REP"FRoÎ*Âr}Ôh5Ù=Å€ÏV½"òeMŸ¶ÔÊïZï¥=5Ì[NÔ;¾ýö;(YÔ˜Þà°,‘Ò…~ -D8€’r\ùŠ¢Ôg³ðÝ- -Ï`ÛÖüQû€;Á\èÝ{?ìÍVøîæè
Ï/#MøZ‚ âè¾<®ã³¹Ý+
©qï»amW¶k¶±ië¸HÈ5Æ– -nã®ðáL¢ËûreݽåÐ(âÜíµ7ü·nA¿»½[«›‚ÖK%ÜÝŠˆ~ð¼†hŒýhx[ö;¥==O®»"5ºÊboq¯}|?Gö¹
„ûü^½±ìmå°ÑÝø{ØNjǹ&mt^hEÄÍÚÔ,Þ›XÃú@ìô–Þ¶¾j’A‘Džwê$Zõ:v³¡ßæËð<YÙѪswzÞ6›©ýózkÛZOßíWa¼Å£RG² L¿¤]ÍíJîúQbc""½êòãÕÆn‚à\-v«±ÓÇÞ³~ÙfÕöµ—ÜÍŽ¾ý éÙð\+½Ï~ ¯ÊeZMbˆG¡äÿÅ âd™ðÅ£UT¤Ly€þ˜;(¯|œxeõ}…˜§w« <'6„žmŒŽlâ°iË¡cŒQbkJ)sD #%¤VÒÉŽjžRŒ©Ó`Y£ÿQ¹õ£g(O "‘6:Ì!™ž¡¢KGÚÕ -e;ù—ŒUÉ–ç&sÛuý¹1Œ]Á ̆¶e„§s‘r’X´ cž”»>Ãz%ð »æÉ£0òýA‰0b†Ê©“iiåSŠ‚„Î ý!¼ sH’¥R> þ^^%Ld&Ö÷÷ÂßËú|ªbN€ô5•KÕŸß\f¢(ñ,ªó¸IÏ7Wçk;ùNHWÖ,öaø)@ƒV Dz˜úœ"ÍÀÿ7 -R£y>-Óµ7âÇ.óš*[§ÓÈÎÈÒ“§IºE"ÕÃ$à™©þ”Äðg_²ƒb2…Ó(0Ì3ÑØI¶<ÞkE7¦ó)ÆE¿€çÕñ·wø^öô¾Å’„Š«žö=Ž—(“L©tìåÒüñÅϪÿí‡Øendstream +xÚW[“ªH~ï_aÌËê:B](.qbPlñ. +^˜AQQؘÿ>¥h»³—8Ñ•·/³2³²` Ð?X"<ÃKH* Ç +5kó}p‡Ö¡š¤ølV…×Âh,:ž7Úëp[·Úq¯½Q%s½†ÂŽÃÞ¼ª`=Aí,ÔŽ'› +)ì Dš&›ÉèhvTGiél'#Ó9šEÌJ{œxŠBФ›,=ÇÑ;ÆŽozÛÂ>˜ž4H¼6ÞŠÖo‹þòYbc"ò¥ß~½Úò‹ö·«åßÝj¹4Ã0…÷lx<:«šZËàQp©süV„øÁšXoßï³/ìµB»9ê¢Qò½¼8þ¿šE!b$‰pų(*P¥@+—T×cù”ø¬êû$/ +8îcbE裋ё•G” +iÇ!€D.÷upsõÎ)1„§#.e¤#0l)ð;ÇÆ–uú•›_Cu T„b ¹3¥mj€“$œ3½¬ï®~Á}ƒmïPI‰¨C¥ŸžŠk¯šïNñèe§ÊEíC‘†FÌG§Ám>©!A*GëÛ¯X>ym²sûw›ªn¤À¿Y9ÕŸìþ1ßq*”óÙ$'YñCSRA¤|Ë+Úƒ1GÊí0ßß[ôFà@ùä¯Î]ÓGί_@ÄQtÊ·^à<<P…”£ õ_Œ~9Ž—$Jbé%~.«nùK$ž¦Õ÷çÒÏåüK¢òôò#Òk¢þøâäéý„€tw|æ9·ø"ñãÁy[¿Öõíû=ú›·;ÿ°Âû‚žL\"m>NTà=àts…ÿ endobj -1416 0 obj << +1421 0 obj << /Type /Page -/Contents 1417 0 R -/Resources 1415 0 R +/Contents 1422 0 R +/Resources 1420 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1419 0 R +/Parent 1424 0 R >> endobj -1418 0 obj << -/D [1416 0 R /XYZ 56.6929 794.5015 null] +1423 0 obj << +/D [1421 0 R /XYZ 56.6929 794.5015 null] >> endobj -1415 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F62 1347 0 R >> -/XObject << /Im2 1336 0 R >> +1420 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F62 1352 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1422 0 obj << -/Length 2459 +1427 0 obj << +/Length 2465 /Filter /FlateDecode >> stream -xÚ¥YmoÛ8þž_a,p€|[+¤(êe‹;ÀMÒÔ›6}±ÓM»Ý²EÛÚÊ’cÉIÃý÷›á²ìUvW°FÃápf83|¨ðƒ?Þ‹¤ËDì÷ÂØw%ã²7[°ÞÆ.O¸‘X¡A[êÅääô¥{±^ЛÌ[º"—EïMÒ_³WÃw“‹ý'™ã»ý˜3<ÿØçœ;Ã볋s:¿ñòbØ}gróábÜA(aVlæÐøâì™™ñézøftF/Ÿß^_ŒÍÀðÚèÞLú<rÞ¾!Vv<º¼]_ö›ü|r1iÜl‡‚3>Þüú륑ŸO˜+âHöà…¹<޽Þê땾–“ŸŒOÞ7 -[£zjWh¥ˆ\yaGl=¯+¶2vá Û‡e6[§“Ù¬Ü ·iV,ˆU—ôÌꊈu¢%TQ›Iղܿ)ÑËä^5Uª0ãj¶¥)î“Ñò"Wøqð·ÂÅ=7Ž¥ß.Öð0tYúO+£‰”²™r¨lŸ³Rr×!˜¸rîÆRzؘ¹!‡\
¹t9)°×èÙø9s¥ðÀv-ñ¶?¸3_Ϲ8Ž
èô9ØxÒ6–îÝõ¸ËüVÐB-Z;»‚fœŽV^ï¼z-§¬âA[³v*h'÷0&>{.“2Ð&ÿ²ÔÛ*¤S/q§…ïÜ÷=é$y–&5$Û¨™Ê4_UÄIì@µ.‹ÊÌœoÊ•6J·E•- -•ÒøcŸK§,”]0©‰Z&m¾cæ@ - l¼ní#¼AÀë$+*z+Jzžéi—Ò/ó¾`ŽNª¶êÙ2ËS·±#tcáEÚŽÑ$¸ÍM.rS×c [I×ãgêqiH2…¹Fd½)ûV¯²‹içÛ˶æ“õ¹S²ÐÝPQ$žâ¤â`zЮÜÊŠžÐœÕºVÆóAÄM·óæ•¶î\aìlJ@ÆåÂÃ<kz‚ÏEY›AcKkx_+ø–TÕv¥m%Kúe:ê+é9µsèa¶u¹ -ÔîyWNeµMˆßÕ¬®Žr ½Ndrˆ¼\T–EOµÙ”Úÿ΄™X}0q¡ÒöãNbsñ‹çùÆWª°zg2}S–óV¾&Y®R”>°-Ö -¥ñªµ½7Ï›Út…„avšÍ \±Ã°ˆ°íIŒ4†Çh\º‰/<ç“ìºà;Y¹!!Ü'œôb„¨©Ø
!'„ÍJdÙá"dï{¼à:N]-ÍzlL>€)jc: -¼6¢“ €Ô‘¨ÛËØ1ÔÝÉ*›¨‘¬,ê+znër•ÔVf§âÀ=Œ±-¶[ -P™yÒæ¸kŠŒjBç·—¹+½Ø"¤+í¾tã0À{7ôõœv˜‚—Ò ìµ¤ÐÅ\ƒXXX_<ïZ[Aëí4Ïfp¸º‘§CÞÞHݹ --Ót¬QN×ʨ<×H>p†E—w{Ü¡A‘¦IÛâ›O«\±wšón~TîY‘ÕYbÔTÒ$3UýmHãY„Ú¥Íç[*'¢éýk3Ñ]n‡¬íveœ4ßCXX4‹võ“βøU^Qc;¶âß$R×9~ºº‡‘³^#¤éÊæÒžŒfz„ô>\‡Ÿ®o^²«õôÝЛ…—aðqÊ£{V««‰¸Ø
/ç/æ¯#õ>Jr!…Q:â«Óñðý‹o£»7ó×õèáî—wé¢^V[$—ѿþÄÛÿÇ‹ðI/ÒÓ°LoN¿ô^_VÙ|úº~¿ªßFéËóz2ü|;¾õ~¼êôæ:¿‹G¯îÄ'F³oë36Ú&ùéÝ×äêã·[ååetVÿ˜¾ nÔrwv÷õϼ¨T‘>õµZHׂw}Šg=»¯ßýá„ôQäuÓ,€äŒÃÆ*t“Ƕ7ÿ"è0þýÍ…6endstream +xÚ¥kÛ6òûþ +¡Àò¡VDQÔ£p7›t›ë¦Íº=¤M?heÚÖU–\KÞs¸ÿÞÎP¢¥w@°Àj8g†ó"-¼þ„—© ”yì¥y¨P(¯Ü]…Þæ^] ¦™[¢¹KõõòêÙK™zy'Qâ-ׯ,³LxËÕ/þõ7‹ï—7ogóH…~Ìæ* ýÅ‹ŸfBqw}ó‚¦^ÜÝðòf1KcùãÛ›û™LR«r^D÷7×_òŠww‹ïn¯iðó›»›{žXÜ1ÏÅË™Èü7ßGK{ûêîöîÕì×å·W7ËAM×"”¨ãïW¿üz+°È·Wa óLyO0‘ç‘·»Š•T,¥ÅÔW÷W?Y³tÊ´JfÊ¢t¶Q4e[•‰Œ¤±mWm½b;]¨®¦ñ‡¶ÑO۪ܸ.ªš ¾¥ïcQW«¢×̦hV¼¨ª™’¸öÇCÃöƒãTÊÿé%ZuqûÏs~ý–(ëJ7}€f]ç"D–§Fð·ºÛ·MgäËbWœ`é2EÜ +„YT»ã•ôAžçST¬Ç”ekÖ²}_¨zöÀQVëÛöX³§m‹Gv™›Ko>§ +–Ë¢t&BÿØ™Qâ—mó>#”§ÅSÕoiÖh‰(âd‘³¦GQ‘à G($NUM+«¶)êúDóµ^3ƒc3Ÿ +JÒJ¥”‰‹j«!á( ê÷0‹BÿD0Í«õ‰³"ÔÚǪ ŠÁ¸JÙê Üó³swPšŸá?Ic8Ïö°êP«/'³&Mš±W +ë‹ï£(¶Å×DXbO?´¦u±þ +^!õ™l¹a°iY+×j£6χؙlN(…)¬^U%„+f˜0£Äh[‰F“ãmƒ{C6‰eä¿Uø=ª +>!W"Êš°‰=æ:à>Ø
Mgs&Š„6gIiÌÀ˜ØÚCèÛ‹bŠCÇäŽþSnDh*.«jœ§Ðt'Òs+úgv Ø‘¨<ɽùx;ø¼.æ¼ñP"kt$<2N"÷.'9ô‚,
—,8Þ0¼¼dšbW•|ÉÂ+Åå=aqì[ha-Í=TìÇ6ƦD8Ú6T EÑ¢£B…a åàF€7 +BB'TÅÄû÷‡ZÓ¬ñ@À–Û¢Ù0® ÔÊʃTcavlr
׳¶ØåhkÂFSœ|(ÊßµZ„wÒôŸòÛ©Ëߊ +îpc4ô
ú@0–O‚Z#yé+`À¦n/ ÛK膓<·‡>Îë¶«Q?ôæÜ?aw>¦§ggÜôù©@ŠŒÊæ5¸JIMUdõ„sòò³¬¸Ä“} +cT‘öí/.v“;8¢[#‰'¤Ñum:ùÄ_4SÞ5ö¦É¸|~ààu“®˜;¹Þ/½jª¾*˜Mǽ!-¢¡ÔÝ_¶4éÐÐD¶?u[Òág +&‚©~þïfirÜØY-ÜdÅ*òkHè´Ã¦SÙd2(þFq×t,ì„›ýƒHú¾&@¿O=€‚yð×…‰ŸÂÁŸý#Æx« endobj -1421 0 obj << +1426 0 obj << /Type /Page -/Contents 1422 0 R -/Resources 1420 0 R +/Contents 1427 0 R +/Resources 1425 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1419 0 R +/Parent 1424 0 R >> endobj -1423 0 obj << -/D [1421 0 R /XYZ 85.0394 794.5015 null] +1428 0 obj << +/D [1426 0 R /XYZ 85.0394 794.5015 null] >> endobj 218 0 obj << -/D [1421 0 R /XYZ 85.0394 529.7809 null] +/D [1426 0 R /XYZ 85.0394 486.5796 null] >> endobj -1427 0 obj << -/D [1421 0 R /XYZ 85.0394 497.9369 null] +1432 0 obj << +/D [1426 0 R /XYZ 85.0394 454.3582 null] >> endobj 222 0 obj << -/D [1421 0 R /XYZ 85.0394 456.7623 null] +/D [1426 0 R /XYZ 85.0394 412.0822 null] >> endobj -1428 0 obj << -/D [1421 0 R /XYZ 85.0394 426.8078 null] +1433 0 obj << +/D [1426 0 R /XYZ 85.0394 381.7503 null] >> endobj 226 0 obj << -/D [1421 0 R /XYZ 85.0394 197.042 null] +/D [1426 0 R /XYZ 85.0394 150.1125 null] >> endobj -1429 0 obj << -/D [1421 0 R /XYZ 85.0394 169.7375 null] +1434 0 obj << +/D [1426 0 R /XYZ 85.0394 122.4306 null] >> endobj -1420 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F62 1347 0 R /F65 1426 0 R /F21 926 0 R /F41 1203 0 R >> -/XObject << /Im2 1336 0 R >> +1425 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F62 1352 0 R /F65 1431 0 R /F21 930 0 R /F41 1208 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1432 0 obj << -/Length 3040 +1437 0 obj << +/Length 3008 /Filter /FlateDecode >> stream -xÚ¥ÛrÛÆîÝ_¡—3•§Í½ðÖsÚÕq\7‰s±Ü¦·J\Yl(R6);Î×`¥H‰N2ÓÑ—X,Àâ¶ ÄȇŸ¡&2E‰ö_£ÅúÈÝÀÜù‘`œ‰Cšt±~š<WÑ(ñ’P†£Ù²C+öü8£YöçX{‰wüñ³Ë««³ÓïŽ'2€—ß/§¯.Néå×—gW<1½|ƃëÙ±ˆÇ¯_M#=ž9Ü«‹óË‹ËócFÁøôçé›ÙÙ;šÑ¼ÏôÙ¯ÇB tzÆ´`k<?#j×ïήŽÿžýrt6kÅìªBø -e¼=úóo”F~9ò=•ÄÁè^|O$‰t ¼@+å ÅÑÕÑÛ–`gÖ.Tð=©B9 [)‡t$^¨¤²ºým•óÕ¸Yñ`»ÉÒ†Çw¨@s»5uC€‡¼(p$Ç‹j½)ŒCL‹uåpòõÚd9Ð(ñ\„Ümð©*MŸš—/žó”#4ì{ß”&cË&/Pù ¢èˆè&BxIH+\™ŒÖÕ„R^‡€H«´¢‘ƒŒM¾F"1n*‚<¤Åž³2À€e -Œ´m÷f¬¡Áú¬eŽÒ#ËÕ3ŠCšÊñ+ÇuÃ\(J'ݹjƒY>¯J‚ÿå~myn -<D[e[W.]â[fš4/jX%09‰ª\á$R,‘«¾PŸŒR±â[vT‡Ëw†Xf^Wü%.~'~'{%T -}#¸Y˜kÍ#^Ç×} -˜ºb1¾häÂw4ÎÜ:~V%Æ‹³2L)çU¬“ß›š i9p,*‚¦|w0we¶èðfñE¯ @‘dôÿ
PŒ¼HÇÎPçà!\NK†mÀ¿uÇLÅ6'½ç:òi×!Ñì´J3k‡ûB€Ô¾$^Üï Àdt|½Q×`3C!n"¢Ô(öb5à›Qô¹Ø |é Õê3/Å6³v9Û‹âq:§`Ëm¹À€ŸyÓöZ@3P5„ÁV‰Ë -k -2 -Ú@<ÿ1²è‚ýðß# -á?ÑQ<’Á‡|(d"û -íq¶ªjÓv)q W¶€±UsÐ!…²€¤”»: i÷e[ºPÇËÈ<¨ZÞ˜š{¬k¿çüdÿ~v]ó¡ÄO\@¹¾þž -käVqŽ' `DòšFÔ…ö BæÆÖ0Ê\A¶½è d`( -öû -:òTËáòr½§ñì˜)”Q†œ»?0²þÞ¦ØÛendstream +xÚÝ]sÛ8î=¿Â/7µg׊HêƒÜ»Û7M³Ù¶iš8mÚÝ}-&ÖU–œHNšüúR–l¥íL÷áæ¦“ŠA +ˆÆ>RÔÙyˆÙ°. rŸäŸíœ‘V@J +»îZú–4ׯ<˜³…yvA„†¤àyižiD +d…§°GûCÄIVú¬¶a4ssijt +Ã<©jØðD•'vE½Hj7ÒĽf•%E–U„
û_$Yá5f£Œ=¾™!j>”k0`³ZA2Bu•×4DÚ‚æ³¢ª5ÂË+žP¬o‘‰å:OiÞx8“b³@œŽNÎ&ohn[ëm®PÃ=n˜YµEjãKÍ _Âcޤ±8 Ñ7æ +&ÂŒ jŽž‹äNo-x{Ji²—yŸe5aTÚ0dŸ +c驆¬#ò§ï‹äÚz¼p§]aéðPÙÖ(6'ÞV"ºJôÈ#;É¥76ýƒâYQY%>òê:·aþû›üÿDšbÿiêû¤ s"SÂwÖ}ø–ÆEF±Tþß•'×àkè.z… rAËaÜMrá5í ð&5¸•ÿIEy¯ï ¢‚[6Ûuvh…|ܤ,žYZÌî[öùƒy1ð|Îd;1 +? Ĉƒ„†Š¹¦±‰…ðœ³<Ý'†—å›]ØMäún„Y°nè`J +6«Vå(0Ò¶ÙÛbÍ
Ö§
s”\gÚ¥)¿|XÕ–Aé¤=W®0ËgeAð?ýЯ´EžéÏÑ®€²-K—.ñ-Õu’å¬b˜œXDU®p +‘«¾PŸ¥´ŠoØ-vz,ßbÕ›y]ñ§\üV~+{)* +¶ÎMQ‰E˺.—Àïœ^mQn$ßu ÌZ$é4ÅT‡ÉXò¡.’™Q¨Ê0e顇+[z Ø–[îÊ¢¯ZÊ:"’§EUéy?pi$wÕl¹²ÊGâ%±Bg +î)ÚË{[²66CÇkÌéz’V¿ôÉÈ¥Ìñ•£ûöî*âæÆ +cKðˆ:qjíÐrÙ¦¥*°(¸¨3_±-ÿ…!”h‹ur¼Œ³¨ÇB(¦<!ˆäÔnóŸ{‡žôcÕ>óþDÁ ßZ¬¹) a×J“ÂçX¾³ØÆ(˜ø¬hf6ìÖåí!Qœ$¤Š@à7óÕù +ês‹þ¯Š±ÒYŠã\"‚ËI×!Ñz¶ÁHè7îøk©˜î’ +¶\‡?í:$𹑖IjŒbw_óÃo‰'[â=!˜L Âï— +`WëbŽ?ɳºi¶€j « Ú%.ËA¬IN‰É„f2ýϺª·6B½=«¬ska×¹Ü-#ÛåjE@LFø¬æ®10v›;4ãæˆ€ÎfžM<úg–-¼%PP1$à}xÅòë\ëíVjÀ¸ÆÁ@ÀéI'1_Ú¹Ûë
ÎZMP‡>nã›h7voSÝäª1°Õ²#±¸ÛaHJO©(êp´ÓŒm°¾ÅˆžˆTÔå$¡ûM_K™+‰N¦¾¡‡¦ÏÞÆßÝ~‡jK•®±ö¤"˜€TÇÀãÚ[ì(¢Áú'Š<… ¼ÃŠÉ)XØljo¬z²&–¦<õkã +—s]U„NŸû‚|- K +›>RÛØ-N
ƒÆAzKè‘ê«d״̆wI¾¶CÇj†"@ßõúz/(\Ä!ðþâ„w +æáp`Û 1ž`>)˜“»ÇAéæñOl (‹GŠJ%ÁÃ0g#ºS.@ÐèÛ@Ëym>x跰˧¸é‘÷~‘Í6¶s›¯B]æÂv› ^Ìþ]=𠨲mzƒœ‡î\ endobj -1431 0 obj << +1436 0 obj << /Type /Page -/Contents 1432 0 R -/Resources 1430 0 R +/Contents 1437 0 R +/Resources 1435 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1419 0 R -/Annots [ 1438 0 R 1439 0 R ] +/Parent 1424 0 R +/Annots [ 1443 0 R 1444 0 R ] >> endobj -1438 0 obj << +1443 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [411.5778 357.3512 489.9929 369.4109] +/Rect [411.5778 307.0154 489.9929 319.075] /Subtype /Link /A << /S /GoTo /D (man.dnssec-keygen) >> >> endobj -1439 0 obj << +1444 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.6967 345.396 134.1116 357.4557] +/Rect [55.6967 295.0602 134.1116 307.1199] /Subtype /Link /A << /S /GoTo /D (man.dnssec-settime) >> >> endobj -1433 0 obj << -/D [1431 0 R /XYZ 56.6929 794.5015 null] +1438 0 obj << +/D [1436 0 R /XYZ 56.6929 794.5015 null] >> endobj 230 0 obj << -/D [1431 0 R /XYZ 56.6929 491.0706 null] +/D [1436 0 R /XYZ 56.6929 439.2963 null] >> endobj -1434 0 obj << -/D [1431 0 R /XYZ 56.6929 460.6164 null] +1439 0 obj << +/D [1436 0 R /XYZ 56.6929 409.315 null] >> endobj 234 0 obj << -/D [1431 0 R /XYZ 56.6929 264.3156 null] +/D [1436 0 R /XYZ 56.6929 215.0565 null] >> endobj -1440 0 obj << -/D [1431 0 R /XYZ 56.6929 236.5115 null] +1445 0 obj << +/D [1436 0 R /XYZ 56.6929 187.7252 null] >> endobj -1430 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R /F11 1437 0 R >> +1435 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R /F11 1442 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1445 0 obj << -/Length 2543 +1450 0 obj << +/Length 2621 /Filter /FlateDecode >> stream -xÚ¥Y[wÛ8~ϯðÛÊ{b
EêºožÔít:Mº‰;{º3ó Øt¬S[r-9‰ç×/@€Ô%j§söø‚ -ïˆûÔ«Ê´ë‰÷»*xÐkâÉkj—2\UûÃN7ûļÊK¾×]‘ûê‘æÞc‘ÓÈú\æûbEÔÓa7ÓÀÓè¢Tzó¦ÑûCÃk5ÕPͪš>¢À -³ ð³(’fK‡cñ˜7šÕœÜ{±?$>»õî™.vºlÐ(øU<”4A¯}»–`¾(6k½Ý 2©ºP&uƒ‰Wݽ¨©ýSq•åŽD³µc¶Íi6[ë#›vÕ±h¶{ú,Oû{Ç -ä¼R½N»5‰(õ£eÈs¿(;¥x$Þ->™²o3Ð6€2Æí–®G>+Ò"Xg]¬À5±¬¶yù`?Œ[»®áX*ÇX”Ì—“`ú0ŠƒàñMTcà¨Ô[ö•1n€¯jóm]{§”³ªÊ†tÀ(À¸ÆÖ¨øašAˆÞÎß…(¢AŠà(×—=câRïv6ë°Wô1oŠŠ—CaÔMuÜsœæµfŽolµû¢©MÈþð::YÀºwB®)ŠÅ³ -ÇšEus×ÔÏ‚€DÌÁäA–±o¶ØË ¢j½:‘gM5k¿ˆEƒOj,
"#‡Ã’Eù@,TQHÜg}æ%L2DÒ=KZW¥¶k¥yªˆð”Ÿëô4ôNµ“›Ó M•#¶tÏdP͵BÑ……5n§ -$~fPPŒ„ü{^—5l{Äzhý(cÖ?þ¦£þ¸çB¬|©2ñDAâ\[×ÙÔß+Ù´êïu³ÖíÍ%žÄŠ2;#ø^è¤P†Ä%(é– ¤5 Jï\lúÔœH^&_[‚5nïp)‘ø"ŽB6Ù;ã´ÈÏ’$ÓøI¨"3ðÏ‘Íe~¨ÂpÒᄱӬ÷¦:¶+³vOn»ÌTW–RÊKßCò“~˜$a?ŒÀzÌÜJùi$¼Ð2UFrMá -Êì!ç…ó>oœˆî˜©R ɘŽID1@Š;Íп½iÔ8 -)ÎQæ|Gù#›Saì‡1„†ø›âúoEwÁfB_d‰T„üT½S»Ä $UÔÞóH
ÀÁ¤éÔ&›ÞDÞyj\‡ö“Êû[ʱ¥FŠI8§¨‰hq×@d‹zJ¨zCÔ3’E^b 22W™º²éÄ–)Wovym+!™¸¬•¶<YÈóU -ñRåÅ8bÅŒk”©LHFŒÄ -Z¢6´,8´.i€\i 3 ±SC>Saf
ZÄÖ0]洞¬aâ/d«XHŽ„žÿ\>«0ÞF;*b‚Å45QÈܸh5¶[ý|(H>b?ö#3e°bÍXˆrG†rsä ³Ú Oà“¨4¾û÷ŒÖÐB%+6g’g¥í4Dô¦ -ýXT§Úè¨$=J¿ †9ÛУ¬.M` -Õei<…eRÅ$FI¬-’‹†ô6'²ËµkY%¿œŠÕg«T> - ðÔ”~Îø©zÒl2.ܹBœµˆŒf®ø3„Úå+™{OÑÏEÝ8ª›Y
…× œè¬á/K9`nï©Æ2#»3ϓ҂¢™µ‘ƒP®¸&AU6á……â’ÞÉÈãÌaÖFÚ†¢kO‚ø)¥dÊvÒ¡¡V´Uàï®1R£ùrÁ×`,xÆó©¹:Çö‚Ò…@zÌwźhx\¨‹jÍ{ '”ÂûñLk½ÉO»½‘Åħý‹7Wl[‚ø6SR«ÊÏ5K¡b6vQÙ«-ýæ«ï·ùF÷/=Œóí:ÚÚ·ÇØ}m2Hó{ËhÊe”áütÛw ü$äƒ| -øäÑ‹ ;prŸÞSñƒ{÷<½½vÎ"yó†ÈüܽCU”L¤Ÿ æ¿0‚¨ÿoCµZUvÅz#ñÛOÃ.ú¬ÝFù¿êÑ„/'m¯³}ì7öo•Š|ü‹iä¿%áâûÿþ'«ýÐJS9þ'Ü -í(“¡æî/¯—ªÿ¸Ì`¹endstream +xÚ¥Y[—Û6~Ÿ_á·•÷Ä*EêÚ7wâ¤iš™ìŒÓžlÛMÛ:‘%Ç’çÒ_¿ +Ò‹†Ú¿µW[îH´;;fÛœfÓº>²ù` ÜÖÇ¢Ýíé³:íï0&IœWjvõ©\“ˆJß[†üpÐ9÷‹êl¡óÁÛÅÇшíÙÌÖLÉ·[¹uú¬H‹`u±W4IJÚåÕÖ~·ž¸‚œ¤cQ1_N‚éÃ(‚dÄ-›¨ÁÀQ©·ì+cÜ +0®±5*¾Ÿf¢7ówcaЍ@"8JçÇõ¥FϘ¸Ôeicи{õAó¶¨y94¶@ÝÔÇ=ÇiÞh–áøÆV»+ÚÆ§4ÐKv—³Pú +ê‹Ù®xeë÷ËkÈ÷=“Ì“ +â¹¼YÌ—‹1³‰Çynï®ûdž«k4(§ªÀiÖå*Ô2õcɹ ++X4B³ä‚º,!-›‘¬‹ËDD‘1›Y +ç¾Ýa/ƒjôêD^œµõ¬û"Nˆ
Ni°0ŠŒ<KÕ–X¨ž’8(&¼„ɆHºcIëºÒvM¢@y!ÂCþÔüÒÓÐ;5NnNƒ6WŽØÒ•{“B5WnˆEÖ¸gø"ñ³0ƒrj$ä'Øóºj`Û#Ö‹b?ˆ2fýÛèOqŠAê{.ĺŸ*(3±Çœ'Ñu±uÍý=ÀB; þ^·»zýmo.ñ(Ö”êÜ!ÁSÒ]uáaH\ƒ’ó”tTIà=Õ'›?5gÒ–—É×–`Û;]J$¾ˆ£MöÖ8-ò³$‰Á4~*Òüß#›ËüP…áäŒ3F©YïM}ìVfíÜv™©©-ä”羇ì'ý0IÂ~ô˜¹•òÓ Ix3& eªŒZv0\A™=$½’ÞGãÑ3• +$Ó1‰(fHq§ú77
G!Å9Êœã(ds*Œý0RV÷û6Å +™Çj°~<$ÁŸˆü‘™2X±a,aD¹#C¹9rÐY•(Æø$*
†ï®äžÑZ¨dÅæ‰äYi¥¦ƒˆÞ´€¹#oO]€xŽ5kw•õnU]ÄhŒŠqÄÑÅÈÈ…ˆoqT¥ñYnlUˆ9MFý"8éÇÞ‡÷/é½aáÓˆ)öù'MÃ+w/À1ʾ‘×ôŠŒ“Æ63ªõ‘³`K#܆U$‰ý,•ÙwT€ +ƒ*k+\~:("õ©¤žž›8½lu…›ÜîžÙ¦¶·ƒsŒ¸M«®sDekF3 +ÚÄs°–0X›>ÜÃd5Xð`nªkJEæ¾
áèLS6òÕ΀ ˜Ã§€†U‹eÍ܉p€¶„=¼;çÌnÎ>vÀTÏ]*’ÊÌB»3X|K ~"€;²®#é'Aö‚m±×#c)•Zv¼F#ÐŒà>»!µÇ‘:øDÄá9PçÀÂ!’~h}Ä+PV endobj -1444 0 obj << +1449 0 obj << /Type /Page -/Contents 1445 0 R -/Resources 1443 0 R +/Contents 1450 0 R +/Resources 1448 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1419 0 R +/Parent 1424 0 R >> endobj -1446 0 obj << -/D [1444 0 R /XYZ 85.0394 794.5015 null] +1451 0 obj << +/D [1449 0 R /XYZ 85.0394 794.5015 null] >> endobj 238 0 obj << -/D [1444 0 R /XYZ 85.0394 589.241 null] +/D [1449 0 R /XYZ 85.0394 544.6974 null] >> endobj -1447 0 obj << -/D [1444 0 R /XYZ 85.0394 558.1215 null] +1452 0 obj << +/D [1449 0 R /XYZ 85.0394 516.8643 null] >> endobj 242 0 obj << -/D [1444 0 R /XYZ 85.0394 501.4129 null] +/D [1449 0 R /XYZ 85.0394 467.6389 null] >> endobj -1448 0 obj << -/D [1444 0 R /XYZ 85.0394 470.138 null] +1453 0 obj << +/D [1449 0 R /XYZ 85.0394 439.6503 null] >> endobj 246 0 obj << -/D [1444 0 R /XYZ 85.0394 282.7564 null] +/D [1449 0 R /XYZ 85.0394 266.4633 null] >> endobj -1449 0 obj << -/D [1444 0 R /XYZ 85.0394 251.4815 null] +1454 0 obj << +/D [1449 0 R /XYZ 85.0394 238.4748 null] >> endobj 250 0 obj << -/D [1444 0 R /XYZ 85.0394 137.9619 null] +/D [1449 0 R /XYZ 85.0394 132.4384 null] >> endobj -1450 0 obj << -/D [1444 0 R /XYZ 85.0394 109.6518 null] +1455 0 obj << +/D [1449 0 R /XYZ 85.0394 107.4147 null] >> endobj -1443 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R >> +1448 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1453 0 obj << +1458 0 obj << /Length 2222 /Filter /FlateDecode >> @@ -5694,71 +5706,71 @@ xÚ¥YKsã6¾ûWèHUEX<ø<*¶&™lÙãÈò¦RI4 IÜ‘HE¤ìq~}ºÑ h!jˆQÈØpCkÙÙ®§ Eô·6 ŒÁÒ¡â®äùÌ€çÒ aÌ ÌwQ¾ílÓù±$í{ïœ>ØQãÃÌU:®3[W'W¢P?ÒÿPbHQ‘/'aÀ „'øÅ˜ÖŽ›
–½OÌ-û¬ÇO_˜Þw.¯ó ³NõIh‚εñȈ¡5êI¿øÌÝ2}]‡Ym8ö¡^¿®œÇ[ïù×ñ»ÿoøÐ‡Æ±×\F1ócb•BÅe|¡¹ûÚ©úßúQyrendstream endobj -1452 0 obj << +1457 0 obj << /Type /Page -/Contents 1453 0 R -/Resources 1451 0 R +/Contents 1458 0 R +/Resources 1456 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1419 0 R -/Annots [ 1462 0 R ] +/Parent 1424 0 R +/Annots [ 1467 0 R ] >> endobj -1462 0 obj << +1467 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [379.778 61.5153 440.978 73.5749] /Subtype /Link /A << /S /GoTo /D (managed-keys) >> >> endobj -1454 0 obj << -/D [1452 0 R /XYZ 56.6929 794.5015 null] +1459 0 obj << +/D [1457 0 R /XYZ 56.6929 794.5015 null] >> endobj 254 0 obj << -/D [1452 0 R /XYZ 56.6929 769.5949 null] +/D [1457 0 R /XYZ 56.6929 769.5949 null] >> endobj -1455 0 obj << -/D [1452 0 R /XYZ 56.6929 748.2119 null] +1460 0 obj << +/D [1457 0 R /XYZ 56.6929 748.2119 null] >> endobj 258 0 obj << -/D [1452 0 R /XYZ 56.6929 682.7685 null] +/D [1457 0 R /XYZ 56.6929 682.7685 null] >> endobj -1456 0 obj << -/D [1452 0 R /XYZ 56.6929 651.6058 null] +1461 0 obj << +/D [1457 0 R /XYZ 56.6929 651.6058 null] >> endobj 262 0 obj << -/D [1452 0 R /XYZ 56.6929 598.1176 null] +/D [1457 0 R /XYZ 56.6929 598.1176 null] >> endobj -1457 0 obj << -/D [1452 0 R /XYZ 56.6929 566.9549 null] +1462 0 obj << +/D [1457 0 R /XYZ 56.6929 566.9549 null] >> endobj 266 0 obj << -/D [1452 0 R /XYZ 56.6929 448.4378 null] +/D [1457 0 R /XYZ 56.6929 448.4378 null] >> endobj -1458 0 obj << -/D [1452 0 R /XYZ 56.6929 417.2751 null] +1463 0 obj << +/D [1457 0 R /XYZ 56.6929 417.2751 null] >> endobj 270 0 obj << -/D [1452 0 R /XYZ 56.6929 351.8318 null] +/D [1457 0 R /XYZ 56.6929 351.8318 null] >> endobj -1459 0 obj << -/D [1452 0 R /XYZ 56.6929 323.6339 null] +1464 0 obj << +/D [1457 0 R /XYZ 56.6929 323.6339 null] >> endobj 274 0 obj << -/D [1452 0 R /XYZ 56.6929 230.1472 null] +/D [1457 0 R /XYZ 56.6929 230.1472 null] >> endobj -1460 0 obj << -/D [1452 0 R /XYZ 56.6929 190.6255 null] +1465 0 obj << +/D [1457 0 R /XYZ 56.6929 190.6255 null] >> endobj 278 0 obj << -/D [1452 0 R /XYZ 56.6929 125.8181 null] +/D [1457 0 R /XYZ 56.6929 125.8181 null] >> endobj -1461 0 obj << -/D [1452 0 R /XYZ 56.6929 94.6554 null] +1466 0 obj << +/D [1457 0 R /XYZ 56.6929 94.6554 null] >> endobj -1451 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F48 1223 0 R /F41 1203 0 R >> +1456 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F48 1228 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1466 0 obj << +1471 0 obj << /Length 3064 /Filter /FlateDecode >> @@ -5775,33 +5787,33 @@ AÕ‘/=4TE‘1ýoXJ~Ázé×¼ýi×AÏ3üŠ×v»fÿrƒ%ÿ°%C_(€o銿oØe|‡y‚dC˜ÀYc=—Ú·¡"\ÀG^ ¹¹»²½ÎFX:N:!ÈG«'[;懪¯7@ä÷ë´ƒûv|!³A~ÒÍHÏR€~-³b¾œ”¨¹(áeSÓ—º9Öòô!9÷Øì¿0ƾÊ}ˆB6¿ÃWÅPr·>Ô¼jýö’1V_„:g“)ö,i3ÀÑ¥2MÑ¢gÏ$¨5Iʲ‚ò™ÊÜÄùf"ÜJׇó|k0w¹TÎõ-Ã`L;K .:u•vòXÁþð/=é“Ð`ÝÒže&DE°þªx(©]ìßËúðm¶ð¸†®Ï®û—¥ÆX’7Çvò1Á¾çîK¿ŠCÅ?eÏü†íõ?Sÿß¿˜ÿµ ŒÝÀø1|ìä¹êË î'çœ÷??gý?û”ƒendstream endobj -1465 0 obj << +1470 0 obj << /Type /Page -/Contents 1466 0 R -/Resources 1464 0 R +/Contents 1471 0 R +/Resources 1469 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1419 0 R +/Parent 1424 0 R >> endobj -1467 0 obj << -/D [1465 0 R /XYZ 85.0394 794.5015 null] +1472 0 obj << +/D [1470 0 R /XYZ 85.0394 794.5015 null] >> endobj 282 0 obj << -/D [1465 0 R /XYZ 85.0394 769.5949 null] +/D [1470 0 R /XYZ 85.0394 769.5949 null] >> endobj -1468 0 obj << -/D [1465 0 R /XYZ 85.0394 750.8067 null] +1473 0 obj << +/D [1470 0 R /XYZ 85.0394 750.8067 null] >> endobj 286 0 obj << -/D [1465 0 R /XYZ 85.0394 180.7476 null] +/D [1470 0 R /XYZ 85.0394 180.7476 null] >> endobj -1469 0 obj << -/D [1465 0 R /XYZ 85.0394 140.0669 null] +1474 0 obj << +/D [1470 0 R /XYZ 85.0394 140.0669 null] >> endobj -1464 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1469 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1472 0 obj << +1477 0 obj << /Length 2492 /Filter /FlateDecode >> @@ -5815,28 +5827,28 @@ FYKÌ4ü‚óÝ ö@fdžàõô1C¾Ex¸Áàq7jÕ´úÈC„dªÎ,ÅV™ ·“)¾›ÔpÔê¾¥Á×±;.ôcÇ×~Àr¨qX7Õ\ßâ=ÊdüîëLê6ÉsùöÌó-}¡€¹ÐPÒ`¤Ok©ÝÑU[¯mx›:ð
l೘’´åþ ¶Ê9\ ö»•.B0ÎO9aú¡E¡U;Ð5:Â2h*P-¯lÇ3p¤ÆyUôMá…Öø<ÉJ?Ll¸ÀdzqÜÿ\*aÒ ô[‹áMóç}œ>ÔWßŸîø™çø6&©~Úã \x÷ya%L">!wIO_U“¾ï¾ä—‰Ž°:*5áŠ÷0]Б†Ú
8[j8Nöìèb Ö‰Êùªi.˜Ã3@Éáîôüêk5pÞ>ÿ:°8Bø¡×ó„ÝÃäÛÁ‡U'äƒî0 DM*çÉS´çØQì‘ÿµÓcoðµ¡m×Õ¯¯®‡ƒ
§Ù¶…]5›«¶Ú7©ºbÔ‚I'{ó}úÁ›v¡ªwûk¤¹Ä÷vÕ+è:^”2K øþmMÀÿ)Ïu]S'}ê@ÓŠ<ótÄQPTθ;øqSó>.jÁ@6¥á>Ï×¾‡Û^ä‰Ófñ¯D³ÊËl¡Û–+ endobj -1471 0 obj << +1476 0 obj << /Type /Page -/Contents 1472 0 R -/Resources 1470 0 R +/Contents 1477 0 R +/Resources 1475 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1475 0 R +/Parent 1480 0 R >> endobj -1473 0 obj << -/D [1471 0 R /XYZ 56.6929 794.5015 null] +1478 0 obj << +/D [1476 0 R /XYZ 56.6929 794.5015 null] >> endobj 290 0 obj << -/D [1471 0 R /XYZ 56.6929 769.5949 null] +/D [1476 0 R /XYZ 56.6929 769.5949 null] >> endobj -1474 0 obj << -/D [1471 0 R /XYZ 56.6929 749.1192 null] +1479 0 obj << +/D [1476 0 R /XYZ 56.6929 749.1192 null] >> endobj -1470 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F14 952 0 R /F62 1347 0 R /F41 1203 0 R >> -/XObject << /Im2 1336 0 R >> +1475 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F14 956 0 R /F62 1352 0 R /F41 1208 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1478 0 obj << +1483 0 obj << /Length 2317 /Filter /FlateDecode >> @@ -5851,34 +5863,34 @@ dæž2×ëº<êù6žb*RÃm0ðˆRÁˇ ¸¿×úJ«ÚMµ+V„_f„«JK¸&DgW^
¬~~R¾·QPܪŸªŒ4f©È®W–b5í²Õ/ýÌ€}RS? ðþeý»‚8<ezàîQ$§»ÅÉ8´BáÔ³Ç[_EÌd8!ú endobj -1477 0 obj << +1482 0 obj << /Type /Page -/Contents 1478 0 R -/Resources 1476 0 R +/Contents 1483 0 R +/Resources 1481 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1475 0 R +/Parent 1480 0 R >> endobj -1479 0 obj << -/D [1477 0 R /XYZ 85.0394 794.5015 null] +1484 0 obj << +/D [1482 0 R /XYZ 85.0394 794.5015 null] >> endobj 294 0 obj << -/D [1477 0 R /XYZ 85.0394 629.0401 null] +/D [1482 0 R /XYZ 85.0394 629.0401 null] >> endobj -1480 0 obj << -/D [1477 0 R /XYZ 85.0394 603.8306 null] +1485 0 obj << +/D [1482 0 R /XYZ 85.0394 603.8306 null] >> endobj 298 0 obj << -/D [1477 0 R /XYZ 85.0394 304.8197 null] +/D [1482 0 R /XYZ 85.0394 304.8197 null] >> endobj -1481 0 obj << -/D [1477 0 R /XYZ 85.0394 279.6102 null] +1486 0 obj << +/D [1482 0 R /XYZ 85.0394 279.6102 null] >> endobj -1476 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F62 1347 0 R /F21 926 0 R /F41 1203 0 R >> -/XObject << /Im2 1336 0 R >> +1481 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F62 1352 0 R /F21 930 0 R /F41 1208 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1484 0 obj << +1489 0 obj << /Length 1904 /Filter /FlateDecode >> @@ -5895,45 +5907,45 @@ vɣќÐGÉ¥å`-5nÕ,íFžÀ%!oˤKwlj®|‡±Z«¡°VC¼ên…>ºm €}¢ëE5}ŸÃ¸WÚsT²«û¬ :Ö¬z9zŠy*ˆŽž º„ìá÷‚%X$xpfæWÞ#~,NŸRgyÀ"¼¬ÄÔM^™3c‚´×úšS×Åo8«X±ŠÞE¿ÍZ&$,áE\&ÉÚ¬#)ÞØQÐiS¦i†öø£Af„Z ýæöû‘sÁ:M'ÇìØ]#ös²Ã=<0Îã bÅÊÎ&û±s"Š"vªì‰ž] ÒʽðäÙ&sàÐKrsëCÏ.”R ÔQL`Mø,
ý.òI¨AP#¯Ñ„ž¬mÔ› endobj -1483 0 obj << +1488 0 obj << /Type /Page -/Contents 1484 0 R -/Resources 1482 0 R +/Contents 1489 0 R +/Resources 1487 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1475 0 R +/Parent 1480 0 R >> endobj -1485 0 obj << -/D [1483 0 R /XYZ 56.6929 794.5015 null] +1490 0 obj << +/D [1488 0 R /XYZ 56.6929 794.5015 null] >> endobj 302 0 obj << -/D [1483 0 R /XYZ 56.6929 596.0056 null] +/D [1488 0 R /XYZ 56.6929 596.0056 null] >> endobj -1486 0 obj << -/D [1483 0 R /XYZ 56.6929 566.6651 null] +1491 0 obj << +/D [1488 0 R /XYZ 56.6929 566.6651 null] >> endobj 306 0 obj << -/D [1483 0 R /XYZ 56.6929 532.1171 null] +/D [1488 0 R /XYZ 56.6929 532.1171 null] >> endobj -1487 0 obj << -/D [1483 0 R /XYZ 56.6929 506.5445 null] +1492 0 obj << +/D [1488 0 R /XYZ 56.6929 506.5445 null] >> endobj 310 0 obj << -/D [1483 0 R /XYZ 56.6929 353.6477 null] +/D [1488 0 R /XYZ 56.6929 353.6477 null] >> endobj -1488 0 obj << -/D [1483 0 R /XYZ 56.6929 325.2657 null] +1493 0 obj << +/D [1488 0 R /XYZ 56.6929 325.2657 null] >> endobj 314 0 obj << -/D [1483 0 R /XYZ 56.6929 132.6175 null] +/D [1488 0 R /XYZ 56.6929 132.6175 null] >> endobj -1489 0 obj << -/D [1483 0 R /XYZ 56.6929 107.4872 null] +1494 0 obj << +/D [1488 0 R /XYZ 56.6929 107.4872 null] >> endobj -1482 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R >> +1487 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1492 0 obj << +1497 0 obj << /Length 2294 /Filter /FlateDecode >> @@ -5946,27 +5958,27 @@ IÅL/ëñtŸÏîû }s´B[x`}w¥¾hÑN©š—@ßý÷Ä'þœ+¨ÛKSVµ[?«N[ÂÐârx]Po]þÍ!SaXƒ"À\®òGT˜Äñ@ƒõ‘ Ô‡á)‹g¹8B‘«9FŒ]8zÈ5ë}Yä¼E‰¥ya¶§–·=îýš ¯Z[ý¦IõmiÕ0{¹žùŒh‚{d³°C D–6)æ“í—$à¶Vc‡o›ýíøS’0_‚D´³ïáÒZëÚhÕgÔ¾ðFÅÍ龦 ¾EÇè0–‹Ö'Ç'½ ¶ÿ©ø‘#ãXôñ”nèÄ"‰ŒRèV)÷5oÿS8Tý/Þn™endstream endobj -1491 0 obj << +1496 0 obj << /Type /Page -/Contents 1492 0 R -/Resources 1490 0 R +/Contents 1497 0 R +/Resources 1495 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1475 0 R +/Parent 1480 0 R >> endobj -1493 0 obj << -/D [1491 0 R /XYZ 85.0394 794.5015 null] +1498 0 obj << +/D [1496 0 R /XYZ 85.0394 794.5015 null] >> endobj 318 0 obj << -/D [1491 0 R /XYZ 85.0394 704.2027 null] +/D [1496 0 R /XYZ 85.0394 704.2027 null] >> endobj -1494 0 obj << -/D [1491 0 R /XYZ 85.0394 675.9152 null] +1499 0 obj << +/D [1496 0 R /XYZ 85.0394 675.9152 null] >> endobj -1490 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +1495 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1498 0 obj << +1503 0 obj << /Length 2284 /Filter /FlateDecode >> @@ -5982,52 +5994,57 @@ xÚ¥koãÆñ»…€×\¾i¤ŸÜ»8‘]K ÐÜJZYÄQ¤Â‡\å×wfgø’ØË…?h8;;¯ÝyåÄ‚?9ñ|áGv4 "Wx ¦ã(N˼ôC"‚Ü9‡Ý<Bh:äMM¾ìï¢<©Å4E>(£º,š7(ˆ O§¬e³™4"’E=y5iŽë†•+HÿùÿE…¢ëay½Ì}o›„»7£²ºx>jûXæfØÓµ½4h¹oŸNÆ^ÒOàó÷È»·Õö ÿ÷+{÷ï¸"NÚãY.ܘ°RèfǽмyŽ¿Tý?,{Cendstream endobj -1497 0 obj << +1502 0 obj << /Type /Page -/Contents 1498 0 R -/Resources 1496 0 R +/Contents 1503 0 R +/Resources 1501 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1475 0 R +/Parent 1480 0 R >> endobj -1499 0 obj << -/D [1497 0 R /XYZ 56.6929 794.5015 null] +1504 0 obj << +/D [1502 0 R /XYZ 56.6929 794.5015 null] >> endobj 322 0 obj << -/D [1497 0 R /XYZ 56.6929 519.9229 null] +/D [1502 0 R /XYZ 56.6929 519.9229 null] >> endobj -1500 0 obj << -/D [1497 0 R /XYZ 56.6929 488.8874 null] +1505 0 obj << +/D [1502 0 R /XYZ 56.6929 488.8874 null] >> endobj 326 0 obj << -/D [1497 0 R /XYZ 56.6929 326.6298 null] +/D [1502 0 R /XYZ 56.6929 326.6298 null] >> endobj -1501 0 obj << -/D [1497 0 R /XYZ 56.6929 298.4037 null] +1506 0 obj << +/D [1502 0 R /XYZ 56.6929 298.4037 null] >> endobj -1496 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R /F11 1437 0 R >> +1501 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R /F11 1442 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1504 0 obj << -/Length 2428 +1509 0 obj << +/Length 2429 /Filter /FlateDecode >> stream -xÚ¥YKsã6¾ûW誥ª,/‚¤ošgœJ<^[“29Ð"d1C‘‘´âüúíFƒ%ÑÎV]e4€F£Ñ
ZL8üŠI2®=‰ÍB.ÂÉrsÁ'0÷ñBxžYÇ4r½Y\üøAE“„%FšÉb53Çb²ÈþÞþ4¿]¼¿›ÎdÈͦ³Ðð`þî·©"˜ß¼}ÿަÞÝÜñáý|é`ñùî=Œ -ª •ÝSn÷¾·ò »¶=Þ’{ÜÔâX£,›–ì|¼ö…*èÒ¯µö´äVQÌbˆÀ <™Ñp@(fir÷è_mwƒçrÏ?.è¤à;“‹¸‡ë,ïjª9“Lœ= -~®àÍ„‰™ö¸rb_\ÄŽý¢´>ÛÁ™ÆB*Ét‰„cѽ:oèùð -fܸ¢Ôb%ÔÿWÐøÝ=ZÜ\uLß¿ Ón©MýäQúà@î'J¿'Ò}¤Dä?`-ÅŠ®Ç²ñý´ËXìÔ9dÉ3у>sRMðWëŠkgx¯ÈØcbÌ+‚wÞ¹ï5”Ô"Q'µ71X¡‹Ž±ÓRƒŸtAáhfà¶h¼Eµ«% Utä¡Ùz(9¶Øª*Šjßûb_µ…߈`³z—1º\3ˆu\Y¿|07úØ¡7ÐøKŒr¶O˜3ÜÉ ¿vëÈ[çud2!‹BÕ=w؈8|—A¬ý2Žrvü³–A+\O²#Wž†…`üµ_H?Ä_¡5°ˆ= -ŸN8<‡ÆÐ޳#°wj»—Äÿ© +xÚ¥YKsã6¾ûW誥ª,/‚¤ošgœJ<^[“29Ð"d1C‘‘´âüúíFƒ%ÑÎV]e4€F£Ñ
ZL8üŠI2®=‰ÍB.ÂÉrsÁ'0÷ñBxžYÇ4r½Y\üøAE“„%FšÉb53Çb²ÈþÞþ4¿]¼¿›ÎdÈͦ³Ðð`þî·©"˜ß¼}ÿަÞÝÜñáý|é`ñùî=Œ +Û0h›Ã½®¬Ä*Qª#m1‹¢(øä6uû£[À¦5©çàF½O€JhÂûÄt¨>Zþ!/ÓÝ3ñéƒ-œ;œYD…lËc€ù–ò˜oÂàkYíK" +Œ—ÚÔÍb;°B9ø’Pá¡mht +3¡“w„ßnˆLƒTB
!6R„ØDSáæÑdHp;±Ô¨!åß#÷Ý)ÜõæÚ™·~¥T*»§Üî}oåAwm{¼%÷¸%¨!ıFY6-ÙùxíUÐ¥_kíiÉ¢˜Åx3£á€PÌÒäîÑ¿ÚîÏåž6\Ð=HÀw&-p×YÞÕTs&™8{ +ÿCñçöŽë_´8—†Z0}bø€ž©'á RLnúz´¤Š}6¥Ôÿ…î$ê|®wg@ÝáÍúxõ®Y¢…v›,¨ +;÷5øñU^xrÒ˜{T᳑¬îÒ$¯Ëmp%/¶ÙxåIŒJuå…‹3Oµe‘µGBôéeCªšWäÕ[»Ì1“l=†}¬CÙ˜z4H¾ +AËwuø± +ˆ‚ÒÎþ"b_’C´8qHÂâ8JœZ?|º»þˆï—1ÀûÑçɺª!I# ¬ +øa/Íé{v»xÀ1`WÙC|u%^ŠŸ±øQJ»ÜVŠ8ËË™g6pY >yõàûl ì` 3Ïfcá¦ÈÜG;\¯¼jè8¸ÎÝyn¦¤–B§»!:‡!= ÌÁ/Þ
ÿÐýuð(Zì²{ò5ëw aàÝÞ—*WW+ø¹‚76&fÚãʉ}q7:ö‹ÒúngG©$Óa$FBŽ!D÷꼡çÃ+˜qãŠRÿ‰•Pÿ_Aãw÷hpsÕ1}ÿ‚N»¥6õ“G郹Ÿ(ýžH÷5’‘ÿ€5¶+¸ËÆ÷Ó.c±Sç%ÏD +øÌI5Á_+®á½"c}ˆ1¯Þyç¾×PR‹DÔÞlÄ`!„B,:ÆNgH~Ò]„£ý™ýÛ¢ñÕ®–€TÑ‘‡dë¡äØb«ª(ª}ï‹}Õ~#‚Íê _ÆTèrÍ bÔqeqüòÁÜèc‡Þ@ã/1ÊÙ>aÎps$ƒüÚ#oבɄ, +U÷Üa#âð]°öË8ÊÙñoÌXp=ÉŽ\y‚ñ×~!ý…ÖÀ"ö endobj -1503 0 obj << +1508 0 obj << /Type /Page -/Contents 1504 0 R -/Resources 1502 0 R +/Contents 1509 0 R +/Resources 1507 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1475 0 R -/Annots [ 1507 0 R ] +/Parent 1480 0 R +/Annots [ 1512 0 R ] >> endobj -1495 0 obj << +1500 0 obj << /Type /XObject /Subtype /Form /FormType 1 @@ -6047,60 +6064,60 @@ xÚm”In1EOPw¨u€$ÅIg0²Êľÿ6¤¤êV5oʯÅésÀóή¯ƒÖ×O²Î Ž¢‘ÿ¨#h8Çùø:„5?ù 6\>RgÈbÏWÖ¹j[†› WŒÏ¢®{6;»²þFÃÇñ÷ø]š¨)Õ/Ô¬Mu;pk;Ì©Ëdh<åE–ñ¬AÏw³ð¬±±Nê¦ó¡Ä½t•‹ùD„™Â²]°Ä(‡;„ ·åްŠr²ÂÙÄLûˆ
T¥Í¡èª‹ŠŽt’¹w_=Î]ˆ‹=¦uSä÷—ä"ï±yl±‡µÃ-ËkHsŠöreOÚ³êvg›<7ºt,‡Ýe—;ãÒèÐ/I…B÷&ê(ýê³ö󻉨YÙ¹Ç,çkRÔšÚ'^
m" ^˜h±ÎW9AVªy©/fýÆ"•œãûFy-Sng \Çdª¼˜©Æ¥†Í}B©•µŒÎ$âw1.¶&Øíþ²C¶O–ÃVç X×9g¹E{îÇ<•ãóP)!ÍZÜÅŸLÞª~ÑÔ'¯UâXLµüc“ÅXsЖõÚ¯½˜Ó’~òBL–§èªÆ¹O¦ºNZ_[Èü.øšŠû*]3QôçÇñ!Ö-žendstream endobj -1507 0 obj << +1512 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [377.8384 431.1147 436.8266 441.8991] /Subtype /Link /A << /S /GoTo /D (ipv6addresses) >> >> endobj -1505 0 obj << -/D [1503 0 R /XYZ 85.0394 794.5015 null] +1510 0 obj << +/D [1508 0 R /XYZ 85.0394 794.5015 null] >> endobj 330 0 obj << -/D [1503 0 R /XYZ 85.0394 640.7425 null] +/D [1508 0 R /XYZ 85.0394 640.7425 null] >> endobj -1506 0 obj << -/D [1503 0 R /XYZ 85.0394 609.2714 null] +1511 0 obj << +/D [1508 0 R /XYZ 85.0394 609.2714 null] >> endobj 334 0 obj << -/D [1503 0 R /XYZ 85.0394 416.9256 null] +/D [1508 0 R /XYZ 85.0394 416.9256 null] >> endobj -1508 0 obj << -/D [1503 0 R /XYZ 85.0394 388.3459 null] +1513 0 obj << +/D [1508 0 R /XYZ 85.0394 388.3459 null] >> endobj 338 0 obj << -/D [1503 0 R /XYZ 85.0394 261.2322 null] +/D [1508 0 R /XYZ 85.0394 261.2322 null] >> endobj -1509 0 obj << -/D [1503 0 R /XYZ 85.0394 232.6525 null] +1514 0 obj << +/D [1508 0 R /XYZ 85.0394 232.6525 null] >> endobj -1502 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F62 1347 0 R /F21 926 0 R /F40 1146 0 R /F41 1203 0 R >> -/XObject << /Im3 1495 0 R >> +1507 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F62 1352 0 R /F21 930 0 R /F39 1151 0 R /F41 1208 0 R >> +/XObject << /Im3 1500 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1513 0 obj << +1518 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -1512 0 obj << +1517 0 obj << /Type /Page -/Contents 1513 0 R -/Resources 1511 0 R +/Contents 1518 0 R +/Resources 1516 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1515 0 R +/Parent 1520 0 R >> endobj -1514 0 obj << -/D [1512 0 R /XYZ 56.6929 794.5015 null] +1519 0 obj << +/D [1517 0 R /XYZ 56.6929 794.5015 null] >> endobj -1511 0 obj << +1516 0 obj << /ProcSet [ /PDF ] >> endobj -1518 0 obj << +1523 0 obj << /Length 1913 /Filter /FlateDecode >> @@ -6112,59 +6129,59 @@ xÚXQÛ8~ï¯È£h\K²-û±½Ù[tqW,º³O×{Ple"Ô¶²‘=¹ù÷GŠ’gœn ¦)Š¢Hê#e¶ÉàÇ6U‘f¢Î7²ÎÓ"cÅ ¯“Ä`ÄЖœè• Hg‘…žEÎJŸ°ÕËûk޽.{²úöúâ-Tšz§mØÀ"'©3V‡+úJZ•ø?Õ“²Û¦t¾¦¿
,çóýÃì(êTÊ¢ºîUÞýò4KŒ_E‘â÷Ƶ¯Qd{‘¡O‹“‘ä endobj -1517 0 obj << +1522 0 obj << /Type /Page -/Contents 1518 0 R -/Resources 1516 0 R +/Contents 1523 0 R +/Resources 1521 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1515 0 R +/Parent 1520 0 R >> endobj -1519 0 obj << -/D [1517 0 R /XYZ 85.0394 794.5015 null] +1524 0 obj << +/D [1522 0 R /XYZ 85.0394 794.5015 null] >> endobj 342 0 obj << -/D [1517 0 R /XYZ 85.0394 769.5949 null] +/D [1522 0 R /XYZ 85.0394 769.5949 null] >> endobj -1520 0 obj << -/D [1517 0 R /XYZ 85.0394 576.7004 null] +1525 0 obj << +/D [1522 0 R /XYZ 85.0394 576.7004 null] >> endobj 346 0 obj << -/D [1517 0 R /XYZ 85.0394 576.7004 null] +/D [1522 0 R /XYZ 85.0394 576.7004 null] >> endobj -1521 0 obj << -/D [1517 0 R /XYZ 85.0394 544.8207 null] +1526 0 obj << +/D [1522 0 R /XYZ 85.0394 544.8207 null] >> endobj 350 0 obj << -/D [1517 0 R /XYZ 85.0394 403.9445 null] +/D [1522 0 R /XYZ 85.0394 403.9445 null] >> endobj -1522 0 obj << -/D [1517 0 R /XYZ 85.0394 368.2811 null] +1527 0 obj << +/D [1522 0 R /XYZ 85.0394 368.2811 null] >> endobj -1516 0 obj << -/Font << /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1521 0 obj << +/Font << /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1525 0 obj << +1530 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -1524 0 obj << +1529 0 obj << /Type /Page -/Contents 1525 0 R -/Resources 1523 0 R +/Contents 1530 0 R +/Resources 1528 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1515 0 R +/Parent 1520 0 R >> endobj -1526 0 obj << -/D [1524 0 R /XYZ 56.6929 794.5015 null] +1531 0 obj << +/D [1529 0 R /XYZ 56.6929 794.5015 null] >> endobj -1523 0 obj << +1528 0 obj << /ProcSet [ /PDF ] >> endobj -1529 0 obj << +1534 0 obj << /Length 3198 /Filter /FlateDecode >> @@ -6177,47 +6194,47 @@ q@ÏÉÉ ÖgM± q^Pב"Ü*ïJ¬}9ÊôÅ9u•½Ma®¨«„¬ÖbP„sÉ
dKFè±2dw£CF:ñPïBFã!¤C‘Ÿ·(9˜p@Ê@èë‹òˆq6F™‰xT¨âTD_ZÈœW¡¸8öõëýGz<i=Ô°…¼¦BNƒñø¸ˆ=º†s/ÞÎß0^pw$Vóz]®®;¼¿‡ä‚6žq)^i·¥‘ºé«'Ìaüs¹Ú…ÞðøÉþð…`¤1ô¦«6å¶ì ÞÆÚ×åüÜ/Rü‹ý‘êb:ÅÅ#¡.³©k @;“‚®*kÌÌkå7V° *3ëÛk endobj -1528 0 obj << +1533 0 obj << /Type /Page -/Contents 1529 0 R -/Resources 1527 0 R +/Contents 1534 0 R +/Resources 1532 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1515 0 R -/Annots [ 1535 0 R ] +/Parent 1520 0 R +/Annots [ 1540 0 R ] >> endobj -1535 0 obj << +1540 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [356.2946 363.7923 412.5133 376.6291] /Subtype /Link /A << /S /GoTo /D (address_match_lists) >> >> endobj -1530 0 obj << -/D [1528 0 R /XYZ 85.0394 794.5015 null] +1535 0 obj << +/D [1533 0 R /XYZ 85.0394 794.5015 null] >> endobj 354 0 obj << -/D [1528 0 R /XYZ 85.0394 769.5949 null] +/D [1533 0 R /XYZ 85.0394 769.5949 null] >> endobj -1531 0 obj << -/D [1528 0 R /XYZ 85.0394 576.7004 null] +1536 0 obj << +/D [1533 0 R /XYZ 85.0394 576.7004 null] >> endobj 358 0 obj << -/D [1528 0 R /XYZ 85.0394 479.565 null] +/D [1533 0 R /XYZ 85.0394 479.565 null] >> endobj -1532 0 obj << -/D [1528 0 R /XYZ 85.0394 441.8891 null] +1537 0 obj << +/D [1533 0 R /XYZ 85.0394 441.8891 null] >> endobj -1533 0 obj << -/D [1528 0 R /XYZ 85.0394 424.9629 null] +1538 0 obj << +/D [1533 0 R /XYZ 85.0394 424.9629 null] >> endobj -1534 0 obj << -/D [1528 0 R /XYZ 85.0394 413.0077 null] +1539 0 obj << +/D [1533 0 R /XYZ 85.0394 413.0077 null] >> endobj -1527 0 obj << -/Font << /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1532 0 obj << +/Font << /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1539 0 obj << +1544 0 obj << /Length 4062 /Filter /FlateDecode >> @@ -6251,33 +6268,33 @@ s–Ö*hîžm™â‰µ  ›¬sì§¼h "”IŒ)%F*<zé“'â¡jÿÿÍ”àxÒ‡BvÉ endobj -1538 0 obj << +1543 0 obj << /Type /Page -/Contents 1539 0 R -/Resources 1537 0 R +/Contents 1544 0 R +/Resources 1542 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1515 0 R +/Parent 1520 0 R >> endobj -1540 0 obj << -/D [1538 0 R /XYZ 56.6929 794.5015 null] +1545 0 obj << +/D [1543 0 R /XYZ 56.6929 794.5015 null] >> endobj 362 0 obj << -/D [1538 0 R /XYZ 56.6929 165.9801 null] +/D [1543 0 R /XYZ 56.6929 165.9801 null] >> endobj -1536 0 obj << -/D [1538 0 R /XYZ 56.6929 136.242 null] +1541 0 obj << +/D [1543 0 R /XYZ 56.6929 136.242 null] >> endobj 366 0 obj << -/D [1538 0 R /XYZ 56.6929 136.242 null] +/D [1543 0 R /XYZ 56.6929 136.242 null] >> endobj -1541 0 obj << -/D [1538 0 R /XYZ 56.6929 106.2766 null] +1546 0 obj << +/D [1543 0 R /XYZ 56.6929 106.2766 null] >> endobj -1537 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R /F48 1223 0 R >> +1542 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1544 0 obj << +1549 0 obj << /Length 3065 /Filter /FlateDecode >> @@ -6289,43 +6306,43 @@ xÚ¥ZÝsÛ6÷_¡>En,˜ø ^ŸR×iÝi“\âÎ=4”–`‹cŠTHÊŽ§wÿûíb’’(¹£ "è1þ(¹q$1o*?¾Íî¹. Púù˱`’IÓêä€ÅP >}‹±;¼æÚm¾²øB Äô‡êÑ>t®+eJgIŠh HCÃhŸ7yUPÖ2kCÍ“(4b
Š"?GÊMVg0Û_lnJØuªfcÞålæÏß - –^P‘p»#r•!ø°/ü€‚ŒðÚÕ…Ÿ¢Uº¤QïçKý³î(ÚxK žÀöÀBËxÃx€ !é¸+s¼ç!™ + –^P‘p»#r•!ø°/ü€‚ŒðÚÕ…Ÿ¢Uº¤QïçKý³î(ÚxK žÀöÀBËxÃx€ !é¸+s¼ç!™ ¬_²Õº°n–Ô§X;‘LjÉRÓaXΓçB}ƒY™š~E•qùÍX|ë$Œ¤Ï\tc©ÕƒZN‰ -覷=èv/P>ÂQl'æ^r) \œùòåË3ŠKU=ú”¸´Eq¾¶u÷”ú„ËÍïe‚€=éýƒqï!C§Pü°Sœ;bH›4†.¦•¤ÿ(|í:‚bƒŽkw_á(B™QAû‚µÎŸ\oà.©¼ ÁÒ¡ÈÁÁÝ9½2ú¹ÿˆ¥L +覷=èv/P>ÂQl'æ^r) \œùòåË3ŠKU=ú”¸´Eq¾¶u÷”ú„ËÍïe‚€=éýƒqï!C§Pü°Sœ;bH›4†.¦•¤ÿ(|í:‚bƒŽkw_á(B™QAû‚µÎŸ\oà.©¼ ÁÒ¡ÈÁÁÝ9½2ú¹ÿˆ¥L endobj -1543 0 obj << +1548 0 obj << /Type /Page -/Contents 1544 0 R -/Resources 1542 0 R +/Contents 1549 0 R +/Resources 1547 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1515 0 R +/Parent 1520 0 R >> endobj -1545 0 obj << -/D [1543 0 R /XYZ 85.0394 794.5015 null] +1550 0 obj << +/D [1548 0 R /XYZ 85.0394 794.5015 null] >> endobj 370 0 obj << -/D [1543 0 R /XYZ 85.0394 730.0812 null] +/D [1548 0 R /XYZ 85.0394 730.0812 null] >> endobj -1546 0 obj << -/D [1543 0 R /XYZ 85.0394 700.9798 null] +1551 0 obj << +/D [1548 0 R /XYZ 85.0394 700.9798 null] >> endobj 374 0 obj << -/D [1543 0 R /XYZ 85.0394 216.5924 null] +/D [1548 0 R /XYZ 85.0394 216.5924 null] >> endobj -1547 0 obj << -/D [1543 0 R /XYZ 85.0394 187.7778 null] +1552 0 obj << +/D [1548 0 R /XYZ 85.0394 187.7778 null] >> endobj 378 0 obj << -/D [1543 0 R /XYZ 85.0394 127.6814 null] +/D [1548 0 R /XYZ 85.0394 127.6814 null] >> endobj -1548 0 obj << -/D [1543 0 R /XYZ 85.0394 101.3894 null] +1553 0 obj << +/D [1548 0 R /XYZ 85.0394 101.3894 null] >> endobj -1542 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F21 926 0 R /F22 949 0 R /F14 952 0 R /F40 1146 0 R >> +1547 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R /F14 956 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1551 0 obj << +1556 0 obj << /Length 2310 /Filter /FlateDecode >> @@ -6337,40 +6354,40 @@ LHE(ãÍã{¦˜…“«µš¼«á‰ï•ïÜClùÖœdC¶ïŽùøÿÌD Œ[†,Šñ6ËËãgÛ¸¸¤þ¥q¤QjÜ%ć*[›šV®~ ¥l¹$4tµùÊÈ·K°Yìv¥)Hrk‘å9AÇ¦ÑØRñVŽéh×4Û•ÞvSsè€ãsqÏŽ×ñ%Š(î z9Jwâ‘AQ”<#2òqh›†M5µ«Ÿ‘[^Z›hºVnÇaZXAŽ ËfØù»Õw-ËoúLþ°û-RŽÅ‡Ë£¶Õ2!*”ÕŽ€vmQíÃL1}\‚w^Çî¿P‚ DC!¢§%˜@ôLÛä ós.ÔÓ‹c–Šš¿è‡g¹Õlt^ wÃ"nË ¯Àݬ»ü“÷Áê·D¶î„o¶
‡’7ï²×î²›õhøß¿{éÏ®éBÔâÃÕåã²òøð:Æ`[‰â È*bI”¨±ßßøäYÕé¯}}öÄ Dú…˜gñq‚¨!.dU JN÷³ …òHÿ’ Q>endstream endobj -1550 0 obj << +1555 0 obj << /Type /Page -/Contents 1551 0 R -/Resources 1549 0 R +/Contents 1556 0 R +/Resources 1554 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1557 0 R +/Parent 1562 0 R >> endobj -1552 0 obj << -/D [1550 0 R /XYZ 56.6929 794.5015 null] +1557 0 obj << +/D [1555 0 R /XYZ 56.6929 794.5015 null] >> endobj 382 0 obj << -/D [1550 0 R /XYZ 56.6929 730.9277 null] +/D [1555 0 R /XYZ 56.6929 730.9277 null] >> endobj -1553 0 obj << -/D [1550 0 R /XYZ 56.6929 704.9004 null] +1558 0 obj << +/D [1555 0 R /XYZ 56.6929 704.9004 null] >> endobj 386 0 obj << -/D [1550 0 R /XYZ 56.6929 236.9993 null] +/D [1555 0 R /XYZ 56.6929 236.9993 null] >> endobj -1554 0 obj << -/D [1550 0 R /XYZ 56.6929 205.1553 null] +1559 0 obj << +/D [1555 0 R /XYZ 56.6929 205.1553 null] >> endobj -1555 0 obj << -/D [1550 0 R /XYZ 56.6929 146.386 null] +1560 0 obj << +/D [1555 0 R /XYZ 56.6929 146.386 null] >> endobj -1556 0 obj << -/D [1550 0 R /XYZ 56.6929 134.4308 null] +1561 0 obj << +/D [1555 0 R /XYZ 56.6929 134.4308 null] >> endobj -1549 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F21 926 0 R /F22 949 0 R /F62 1347 0 R >> -/XObject << /Im3 1495 0 R >> +1554 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R /F62 1352 0 R >> +/XObject << /Im3 1500 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1560 0 obj << +1565 0 obj << /Length 2383 /Filter /FlateDecode >> @@ -6385,45 +6402,45 @@ w¨ª26áÚm αú.ˆß»V øæµJ—Ë4ÂNÝ?/GLÁ¼¤àÀ !ND!ÔûO´mÔÛ·³ÚõÇeÚLCùJøG“©„ÿ㇡ƒ<'‰(
$è%ݼ|‚©4Ưø`4`±G'ÝíJµ®„»P~¢ücÓãëÔ²uÏסVÆOý°¼©Š|J=Ò*¶BÖÃieü‚* g†õÉ8è”ÆP±ªdîÆq«9•ÐÊÛÆ†÷-•|Ë-AîV9xÁu r&K)ͤ“nÛ¬ÕmTë–LÁµI&Ã)ñB >>‹7¼Ùn*N"¼‰!¾Ýœ½xSwï.!}C]«¤
_V”õ„'E¥’ ¤l ƒQCaþɤ¤.×uäq)mÌžù>oCxÜ:(µ»@¿ÃpZÝÆ€›Ë]zÏÄò¸ñ´•ž$HPñ3¢@Áu¯ ?àˆ—U¼?œÅõ=#ÑÛiímä¥ÍEÝÓ*vŠ¢ºÏfƒú¾^ÄI·Î"Ô]4Ò ÿ¡ 6k„ÌjE¥Õ_ã1í
è§Õq—»jÕt¼7[غã˶§˜ÉùP JE.z—Œëñ„¸{P¢öe°t^¼_GŒ±þ²¡ÿ+’]ÓSÙc_ᣃØë©ÿs²ù‡ÐrnÇÛJçœQ(<“V_\eðHã¤ý|[moendstream endobj -1559 0 obj << +1564 0 obj << /Type /Page -/Contents 1560 0 R -/Resources 1558 0 R +/Contents 1565 0 R +/Resources 1563 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1557 0 R +/Parent 1562 0 R >> endobj -1561 0 obj << -/D [1559 0 R /XYZ 85.0394 794.5015 null] +1566 0 obj << +/D [1564 0 R /XYZ 85.0394 794.5015 null] >> endobj 390 0 obj << -/D [1559 0 R /XYZ 85.0394 513.3136 null] +/D [1564 0 R /XYZ 85.0394 513.3136 null] >> endobj -1562 0 obj << -/D [1559 0 R /XYZ 85.0394 488.974 null] +1567 0 obj << +/D [1564 0 R /XYZ 85.0394 488.974 null] >> endobj 394 0 obj << -/D [1559 0 R /XYZ 85.0394 420.2055 null] +/D [1564 0 R /XYZ 85.0394 420.2055 null] >> endobj -1563 0 obj << -/D [1559 0 R /XYZ 85.0394 390.0916 null] +1568 0 obj << +/D [1564 0 R /XYZ 85.0394 390.0916 null] >> endobj -1564 0 obj << -/D [1559 0 R /XYZ 85.0394 312.7536 null] +1569 0 obj << +/D [1564 0 R /XYZ 85.0394 312.7536 null] >> endobj -1565 0 obj << -/D [1559 0 R /XYZ 85.0394 300.7984 null] +1570 0 obj << +/D [1564 0 R /XYZ 85.0394 300.7984 null] >> endobj 398 0 obj << -/D [1559 0 R /XYZ 85.0394 159.3 null] +/D [1564 0 R /XYZ 85.0394 159.3 null] >> endobj -1566 0 obj << -/D [1559 0 R /XYZ 85.0394 131.3824 null] +1571 0 obj << +/D [1564 0 R /XYZ 85.0394 131.3824 null] >> endobj -1558 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1563 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1569 0 obj << +1574 0 obj << /Length 4330 /Filter /FlateDecode >> @@ -6447,48 +6464,48 @@ epc .ѯs±“YGþóêpŒÕr:q#"OÎr'tå-½ý"„JÈVÆr°‹ç¬¨Î€õ|bE‘¢£
i=k·ÕÀÑ ©„zÂ+?l 9ѽ1W·.ýU¥Q^^‡«ltsiçÛ×þzÖ`šX°ÏxÀíQºº¢¶ª;Ïòxš!ºÄ¢W‘ƒpÇ€~1\Má™$¿ »à…Kq˜x•Ò/Lå6I“«“4ý€ûdè»"ÃÞ¿N©+Žåã8èð?aR‹ÌXéÊ™T~oñ?b´ÿ@"›ýªJþCÌw»¤ kþï%A\uWo*´>¯O¦—u†ÿ•HL²Èüÿ£Õ†xB…8‘i5EAƒLáj”:â<üGÖ1ëÿnI”endstream endobj -1568 0 obj << +1573 0 obj << /Type /Page -/Contents 1569 0 R -/Resources 1567 0 R +/Contents 1574 0 R +/Resources 1572 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1557 0 R -/Annots [ 1571 0 R 1572 0 R ] +/Parent 1562 0 R +/Annots [ 1576 0 R 1577 0 R ] >> endobj -1571 0 obj << +1576 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [55.6967 387.5149 256.3816 399.5745] /Subtype /Link /A << /S /GoTo /D (rndc) >> >> endobj -1572 0 obj << +1577 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [268.5158 387.5149 332.4306 399.5745] /Subtype /Link /A << /S /GoTo /D (admin_tools) >> >> endobj -1570 0 obj << -/D [1568 0 R /XYZ 56.6929 794.5015 null] +1575 0 obj << +/D [1573 0 R /XYZ 56.6929 794.5015 null] >> endobj 402 0 obj << -/D [1568 0 R /XYZ 56.6929 692.9565 null] +/D [1573 0 R /XYZ 56.6929 692.9565 null] >> endobj -1324 0 obj << -/D [1568 0 R /XYZ 56.6929 660.5438 null] +1329 0 obj << +/D [1573 0 R /XYZ 56.6929 660.5438 null] >> endobj 406 0 obj << -/D [1568 0 R /XYZ 56.6929 112.3379 null] +/D [1573 0 R /XYZ 56.6929 112.3379 null] >> endobj -1573 0 obj << -/D [1568 0 R /XYZ 56.6929 85.6994 null] +1578 0 obj << +/D [1573 0 R /XYZ 56.6929 85.6994 null] >> endobj -1567 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F21 926 0 R /F22 949 0 R /F48 1223 0 R /F14 952 0 R >> +1572 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R /F48 1228 0 R /F14 956 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1577 0 obj << +1582 0 obj << /Length 2372 /Filter /FlateDecode >> @@ -6503,68 +6520,68 @@ gRLöõ„ÝáÉC)’g~.™‘ R‹ë„zÎÍË\D€úQQy($-ËåßÍ®Á2x{Œ{Çöˆ‘ÃU?–3ü‚¼Š:åN)"B®Ni q„Ìc–!l4+׬‘¢oT¸oFˆ'|7búz
EF˜öÉ],m“¨Ü–ˆTmË`aÁUÔr¢óþùêÈæ.~Áúçƒq\Á ™,c߉WÙaìÛÖ
ؽ!OdFÙ1ÔÇLðC
4ѶbD‰®6´"ÈÍG¢Vy,ê3ö.B–`‰ `ΠryoÈêCŠÓ%lK0fz0fQ€f+b%µ„-«Y¼Ù˜:n¡ö7á×}?¸¿•Óvr Ú.æmµï·¸£m¡èÛbm_Jú…ÄœIc‚(Äm f"ÊøÖ¦Xì[CEýôä-úiŒaïhìûaLA½jÛóCa?#Fß0¾bÁ6 à÷<í$E¤Ç¼ðèë¤]áî£}8.Ô
„„G{ZÇZøül«"/sw—!ôe.õ{úMþo3 Ç
w³rùS›]ªÂ_}oz7º]mf6›9¾þèä+нC>ؼ Æ–aín¯¨ÔöžÓ¤) NÇj{I6UoÝé5ì4Ý”=Ûš‘,yõX¶eæaë y®|§u9BÝÁõçéPÄ¡ÆÇÇ]ƒÇ´Íà«^ÜñÒÉVÕ§ï)÷fJlJ©Í;w8EeÞ¢þ|Ïc¹»Ñ)OdÃ¦ß ù|ƒAЊËXuLYÎÃIï·ÿ“sÊú_—0‰Äendstream endobj -1576 0 obj << +1581 0 obj << /Type /Page -/Contents 1577 0 R -/Resources 1575 0 R +/Contents 1582 0 R +/Resources 1580 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1557 0 R -/Annots [ 1582 0 R 1583 0 R 1584 0 R ] +/Parent 1562 0 R +/Annots [ 1587 0 R 1588 0 R 1589 0 R ] >> endobj -1582 0 obj << +1587 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [406.6264 524.1437 456.8481 536.2033] /Subtype /Link /A << /S /GoTo /D (tsig) >> >> endobj -1583 0 obj << +1588 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [140.5805 512.856 196.7992 524.2481] /Subtype /Link /A << /S /GoTo /D (controls_statement_definition_and_usage) >> >> endobj -1584 0 obj << +1589 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [103.6195 470.0794 159.8382 482.1391] /Subtype /Link /A << /S /GoTo /D (controls_statement_definition_and_usage) >> >> endobj -1578 0 obj << -/D [1576 0 R /XYZ 85.0394 794.5015 null] +1583 0 obj << +/D [1581 0 R /XYZ 85.0394 794.5015 null] >> endobj 410 0 obj << -/D [1576 0 R /XYZ 85.0394 769.5949 null] +/D [1581 0 R /XYZ 85.0394 769.5949 null] >> endobj -1579 0 obj << -/D [1576 0 R /XYZ 85.0394 749.3189 null] +1584 0 obj << +/D [1581 0 R /XYZ 85.0394 749.3189 null] >> endobj 414 0 obj << -/D [1576 0 R /XYZ 85.0394 679.8163 null] +/D [1581 0 R /XYZ 85.0394 679.8163 null] >> endobj -1580 0 obj << -/D [1576 0 R /XYZ 85.0394 652.1211 null] +1585 0 obj << +/D [1581 0 R /XYZ 85.0394 652.1211 null] >> endobj 418 0 obj << -/D [1576 0 R /XYZ 85.0394 573.4726 null] +/D [1581 0 R /XYZ 85.0394 573.4726 null] >> endobj -1581 0 obj << -/D [1576 0 R /XYZ 85.0394 542.9681 null] +1586 0 obj << +/D [1581 0 R /XYZ 85.0394 542.9681 null] >> endobj 422 0 obj << -/D [1576 0 R /XYZ 85.0394 335.1831 null] +/D [1581 0 R /XYZ 85.0394 335.1831 null] >> endobj -1585 0 obj << -/D [1576 0 R /XYZ 85.0394 307.4879 null] +1590 0 obj << +/D [1581 0 R /XYZ 85.0394 307.4879 null] >> endobj -1575 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R >> +1580 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1588 0 obj << -/Length 3488 +1593 0 obj << +/Length 3489 /Filter /FlateDecode >> stream @@ -6573,44 +6590,48 @@ xÚZ_“ã¶
ßO±“'ïÌYÿJê=]’½tÓæ’^6Óé$™ŒlË»êYÒÖ’ooÛéw/@€”ä¥ïÜöÆ"A J;âê×SgÛí©1ÜW4·-fÕWû÷Õý'“‹›¡h§ÀÖ*‹½¾/Û¶ÚEÔ[j‘%&ËÕå2l¼ðp¿/{XR*°wßwëôî±/Ýax84ÖTÃ}·é_`O£àMÉ#A#|…¶¨}Ò×h ìí ·ã)õ• 09¤ …@Ã&tž™‰è¯øìÜáÀV¸ÚÕ½ .v`+ð…ݽod”O¸/yUÌfÆãZî{çÁ&ÍH3a¼fÂ.rÔLÉE=ÐÈ£ãsi@fÑwNŽ %Ï$z/¦í3r[*U$µÁ~™%ÃÁø -›0©j‡òµ«½ìöüJÝÒ“ó¨Šl*Œ†M…ö]Çot³7u8\‘}öQŽƒ&ïYR ð±ÔD bR·ÞE•_¥Ô‘P!¬ •ûýZÆvÔËES#êa’JÎ4ýCµ®Q{Î0Gn´™N¬Á¸ª -…‚ö)äiÅ4Ž!µ#¢ó_èÏŽ]%S—°‰C9xzXtÎkÈà -܉6T'鵉N•wœ ^äºA$ÖÚIñN\\
°ÏG¦éBäùz F«ä§§Nt¦|Ü Kâjä’Cé ´ñ18B[„U¹~wx ñq»p¤ÛŽ–pÃã9°K¦ÙQÄD¦2Ƀ¸„ô3ÉØ -[\¾A·& ÓgÙⵋÒ@®>@xwLí -¥§‚rBži¹¹F`&åâÜs¶PY;ý´{@˜ñ™¥O?%=â_H)»*Àí´&åh@«„œwîû“`Yþк<GP!i]øƒà‘%hxH]x胇fåÊh»<O¿ ª -G®>¬«jÓ½X·›zÍ -Á$´ÞËÊlñ¦£>`{šÑ޳èv½ƒò…¯F¹Šf€ü2`_¾/ùP÷C¸f
7£>#šîkˆûüZù -+™,\*·ÊBŠ™Á_P¼h;Z¡é¦ënÊ¡äZðÎR{üýΡєp=>ѯŠR*)ÜóžGé4AãÐ5¿Ùw
v‡aÙm—+²š -뫺o¨K’5`Ýž_Ø3ÿýU,×ô%4¾¢—…œ™æ”ѯ¡.mÊush|ü¢Ø*&«³kƒUu_¾¯ÃÕñ©KŸ§°hÇ·•ÓP”ׄ¤iÚ¯¬ŽXDj›døMçS‘TÚO -Øè8"+“©³9ı¹ÓõÑn"³°:Ÿ©*lüŒU¶¿sñûŒÎ_âTRàŸ,f»¹ÑF8é~¡ÕDö=h7°%ÓæeôûѾn‡%U«8ï©ê£éhÞüS]˜»ŒŠ{η¸“)ÒäáÚƒ¯g# ÒJ!N\1ÉÉ“œ_{ a’œ^I†€“QX{p—íÐF{…ÙÈý‘ø‚âÀß±É +›0©j‡òµ«½ìöüJÝÒ“ó¨Šl*Œ†M…ö]Çot³7u8\‘}öQŽƒ&ïYR ð±ÔD bR·ÞE•_¥Ô‘P!¬ •ûýZÆvÔËES#êa’JÎ4ýCµ®Q{Î0Gn´™N¬Á¸ª +¨}ùÔ
‚¡Ë«Ä{Ä"8Éš +Žú†šbƒ#ω³ +‡H¿nêˆ$'ÐØÎD¢âœP±ŸN°7÷8h+~©\¯«‡ÁA2_=-0îPMMFNÀ‘ºÂÆ<)„)øDÔí¶‹Åš<ÉEbMjÄro³$SFÌ]ÃÁ?%²Ñß°ã-<ƒ'c§Œ!7a’\ûœ†•Á&v’Ó¤(”
!²j+õ¯<Ô
¯ +Ð]’Fâ$F˜ü]¡PÐ^"…<˜Æ1¤vDtþýÙƒ «dê6q(/@¡‹€Îy
y˜ +’˜ÈT&ya—~&[a‹Ë7há¶Àtú,[¼vQÈÕïc€©ÀF*í4Ö÷]G§Nòq’‹wUõàסµyB·ÛPc¢’·A*l¨Y˜áöôøè4À(Áý|¾
¦H²,@QÜXñM—’ùâïùakUm»P®B¿fº+´àIþ«"`§m–†+
úçò@P™÷AÏ<ìK¬@ºÈJІ,²ŽŒI‰ ösf(Ôœ™Ïð.Ø~~^q¡4æçš 8…ÒâH¡ô´BPNÈ3-7×̤\œ{Îê!‹b§Ÿv¨ +0sÈèi.AëÆò9¤}kÂé e5ð¬=Lò×å’oŸG\d¹Ø-ÆRˆoÍÒĤG †o¹= +ˆÒ†–/º°µáúØpˆD ;&9^UÌÅúHáÈÕ‡uUmú£ëvS¯Y!˜„–Á{Y™-Þt4Ãg + +̉ˆµ·üƹ|Aƒ*ŒEN( #Ëì§Ñ0Ai‡(ö*›•Ã~èÐx!”J´qН|½…„°Ð†X +íISÓkè K¿q:Ö©J”ÍåÜF‘#%ón·#w‘|×+±vXïëU ¯º÷üWÖÒ•ðh«Gj€¢‚ØJ8ñw‡Ã`aØ©äôs +vk^)úåDa%“…KåãVYH13øŠmG+4ÝtÝM9”\k +ü“Ål7·5Ú'}Á¯"´ú‚HcÀÀž¢í¶dÚ¼Œ~?Ú×í°¤jç=U}ô#Í›ªs—QqÏùw2Eš<\{ðõl$a@Z)ĉ+&9¹b’ók$0L’Óë#Ép2 +kî²Úc¯0¹¿C8_Pø;v! ¹(Éï3S|µŒ@x"BÉ_–
IJ,Ç÷xc$†âÖ•Æ'Ëýн.ô'
& endobj -1587 0 obj << +1592 0 obj << /Type /Page -/Contents 1588 0 R -/Resources 1586 0 R +/Contents 1593 0 R +/Resources 1591 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1557 0 R +/Parent 1562 0 R >> endobj -1589 0 obj << -/D [1587 0 R /XYZ 56.6929 794.5015 null] +1594 0 obj << +/D [1592 0 R /XYZ 56.6929 794.5015 null] >> endobj 426 0 obj << -/D [1587 0 R /XYZ 56.6929 769.5949 null] +/D [1592 0 R /XYZ 56.6929 769.5949 null] >> endobj -1590 0 obj << -/D [1587 0 R /XYZ 56.6929 749.2381 null] +1595 0 obj << +/D [1592 0 R /XYZ 56.6929 749.2381 null] >> endobj 430 0 obj << -/D [1587 0 R /XYZ 56.6929 540.3599 null] +/D [1592 0 R /XYZ 56.6929 540.3599 null] >> endobj -1591 0 obj << -/D [1587 0 R /XYZ 56.6929 517.4049 null] +1596 0 obj << +/D [1592 0 R /XYZ 56.6929 517.4049 null] >> endobj -1586 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F40 1146 0 R >> +1591 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1594 0 obj << +1599 0 obj << /Length 3318 /Filter /FlateDecode >> @@ -6625,29 +6646,29 @@ Sÿ&t«&b_À’‰ÌG)MœJH•œÃBÇe^0CÉóèXè ùÂlÂd 0—AÎÚ¢#h-Jʯ‚£Î4^Ñ0FBï¹*YC g’×± ˆü"Ф{'BEc„LåEiÇ3¢å Y=ˆ&Òñü¹D6u;iÖXûÖŽp5ów/ÖÂÙÁg¸:sNjYR0ß×Iµ|à†ÀË¢9¡\ˆy˜°õB^î|ÝáØ¡æ•œ¤àå/Pú«—öP,Ë5Wgùh¡yIýÞ@FÕœRjþö¢Fdôp¸ïCi"= åò7wÎolƒ8óÇ«6‡]jw]b˜ÁE_ëú«÷¡ au–z¢³(½¤¼ÿµÕSÒÿ:[)Žendstream endobj -1593 0 obj << +1598 0 obj << /Type /Page -/Contents 1594 0 R -/Resources 1592 0 R +/Contents 1599 0 R +/Resources 1597 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1557 0 R -/Annots [ 1596 0 R ] +/Parent 1562 0 R +/Annots [ 1601 0 R ] >> endobj -1596 0 obj << +1601 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [173.6261 273.4719 242.2981 282.8815] /Subtype /Link /A << /S /GoTo /D (the_category_phrase) >> >> endobj -1595 0 obj << -/D [1593 0 R /XYZ 85.0394 794.5015 null] +1600 0 obj << +/D [1598 0 R /XYZ 85.0394 794.5015 null] >> endobj -1592 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +1597 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1600 0 obj << +1605 0 obj << /Length 2400 /Filter /FlateDecode >> @@ -6663,33 +6684,33 @@ kü"YS•Í·<Ê&À=b¿*MÈ*£P˜TJ–`yœÒ[ˆP!GrUí÷.áG‘—î&
^Ôæ_ïL¿ÇÆ®oÚq4Á‡Ë“±~žÎ ª÷.k}ü
“sgó'í—<œ_÷§^G4ΞÅÄñÛ+‡ôÍð8‚¿yõ5§î!±×õæû¯ò½šª†ç.;ÁÁ™O ðôÜ=4³ªŸzºfKeÁ“Þ bœ–£æ<5LzÇD/µHÂ~šÃŒ‡ìB׎çæ)Ïù ±'2ÄŸ[/±<
S½]’À¹AÆ4 rb=Eáé4r5ÈŠAÔ×vü 0Bè§,/²».†ŒºÄpm(,î ;Ízm×c?Ú¾@´€Ú6âÁÃOB¤3Ç"ÔÐÚ?ãéê–H‚äì¥ñÿ;åÁ^ju¬õãй endobj -1599 0 obj << +1604 0 obj << /Type /Page -/Contents 1600 0 R -/Resources 1598 0 R +/Contents 1605 0 R +/Resources 1603 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1604 0 R +/Parent 1609 0 R >> endobj -1601 0 obj << -/D [1599 0 R /XYZ 56.6929 794.5015 null] +1606 0 obj << +/D [1604 0 R /XYZ 56.6929 794.5015 null] >> endobj 434 0 obj << -/D [1599 0 R /XYZ 56.6929 520.4669 null] ->> endobj -1597 0 obj << -/D [1599 0 R /XYZ 56.6929 495.6849 null] +/D [1604 0 R /XYZ 56.6929 520.4669 null] >> endobj 1602 0 obj << -/D [1599 0 R /XYZ 56.6929 178.7136 null] +/D [1604 0 R /XYZ 56.6929 495.6849 null] >> endobj -1603 0 obj << -/D [1599 0 R /XYZ 56.6929 166.7584 null] +1607 0 obj << +/D [1604 0 R /XYZ 56.6929 178.7136 null] >> endobj -1598 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R >> +1608 0 obj << +/D [1604 0 R /XYZ 56.6929 166.7584 null] +>> endobj +1603 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1607 0 obj << +1612 0 obj << /Length 2418 /Filter /FlateDecode >> @@ -6705,21 +6726,21 @@ P>9ÿ‚™(ˆ$Ìd#Ã727M=Län|Ž}Þ|µ»Ô…˜“¶˜BF£¬ïÛV8®åvû}~Ñ´;Ÿ›éWg™¶æ"-'n,×f·÷¥l "Òû|'¤ L*¼ í¼{lñ¢]@¤ÐDZRY7kMþ/ÌŠpendstream endobj -1606 0 obj << +1611 0 obj << /Type /Page -/Contents 1607 0 R -/Resources 1605 0 R +/Contents 1612 0 R +/Resources 1610 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1604 0 R +/Parent 1609 0 R >> endobj -1608 0 obj << -/D [1606 0 R /XYZ 85.0394 794.5015 null] +1613 0 obj << +/D [1611 0 R /XYZ 85.0394 794.5015 null] >> endobj -1605 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1610 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1611 0 obj << +1616 0 obj << /Length 2956 /Filter /FlateDecode >> @@ -6737,33 +6758,33 @@ J”Kï¢Æ2oÄÜ=²„ì.ÕEV¬xØR)FG ã2õù0ƒzMz,CÏI$ 2ÇFL>h©F Ó“²‡äMÕÈ“T‡Ç“w®ØÉ˜qj †ãõ*¨^úëev«Ô¸6 á :)rP3uV1wŒr°“ŒTeìÄÆv‰€çN…Ã(Àcw_ÏËü^ …x¤ÈœgLÊ»qÀÇ6ü¹h&n¤6Ø3Pã8LúxÏõ‚£Ó<ˆëj-ÞÌ埬A‡µmã¦Fy
Ù½’±1’Ú>Ñ
“!Òfø>Á½ÓÑšµü¾ÞPõ”ìž”ÔÍ?¶Qr‡Â×¾JjœÞó±C^û4•©Ô=..i*ÈÞî:nXyÛ¬Àç°Q~ðÓJR"vŠACrÐ}ªÄpÈ4–“dc
íl¶6A/”—œf•¨¾ endobj -1610 0 obj << +1615 0 obj << /Type /Page -/Contents 1611 0 R -/Resources 1609 0 R +/Contents 1616 0 R +/Resources 1614 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1604 0 R +/Parent 1609 0 R >> endobj -1612 0 obj << -/D [1610 0 R /XYZ 56.6929 794.5015 null] +1617 0 obj << +/D [1615 0 R /XYZ 56.6929 794.5015 null] >> endobj 438 0 obj << -/D [1610 0 R /XYZ 56.6929 510.1455 null] +/D [1615 0 R /XYZ 56.6929 510.1455 null] >> endobj -1613 0 obj << -/D [1610 0 R /XYZ 56.6929 482.5541 null] +1618 0 obj << +/D [1615 0 R /XYZ 56.6929 482.5541 null] >> endobj -1614 0 obj << -/D [1610 0 R /XYZ 56.6929 117.762 null] +1619 0 obj << +/D [1615 0 R /XYZ 56.6929 117.762 null] >> endobj -1615 0 obj << -/D [1610 0 R /XYZ 56.6929 105.8069 null] +1620 0 obj << +/D [1615 0 R /XYZ 56.6929 105.8069 null] >> endobj -1609 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1614 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1618 0 obj << +1623 0 obj << /Length 2444 /Filter /FlateDecode >> @@ -6782,27 +6803,27 @@ gveÄìÁ´Ôö›UùˆDµ/¼§)ÄVÇtÌŒÏ'VìÕ1øÏ„µå>üЉ¥€•_=ÆQŸdåbãeEojœ«4)*—ÞS"¸ïwp Sm8ÒÂo[Wøä‰½›lµ**ê—cÙÈ4I>™?.>x¥$Nö«{_‘žË#nþú’€kbï|Iø¾UaS¦b ¥,KâD÷¿@Üù¡8 É4ž`>Î$Wº3©Á}†Ï$J@‡“A¹wÄà‰¬‰òâj3'Ø¢¸-
ÉÁÚHQS¯ |SÎ1íćí˜oé4þåÙX44Ê<Áö¦n<½eš°Ööy4åXñØ]Žðz>wU L\SÀœKŠG¬³«\|ÁãRf×ûp|~:ûû åèôFµÍå„ÚR¯*æàn=|'/GP³Á‡xWP5žÌ?Þ¼wtzæ¡Ûç ㇎М&sgÑ= =ÎG<@xñ`aü?hÕ÷IXÿ%,˜„u'a=.a endobj -1617 0 obj << +1622 0 obj << /Type /Page -/Contents 1618 0 R -/Resources 1616 0 R +/Contents 1623 0 R +/Resources 1621 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1604 0 R +/Parent 1609 0 R >> endobj -1619 0 obj << -/D [1617 0 R /XYZ 85.0394 794.5015 null] +1624 0 obj << +/D [1622 0 R /XYZ 85.0394 794.5015 null] >> endobj 442 0 obj << -/D [1617 0 R /XYZ 85.0394 220.329 null] +/D [1622 0 R /XYZ 85.0394 220.329 null] >> endobj -1620 0 obj << -/D [1617 0 R /XYZ 85.0394 191.1908 null] +1625 0 obj << +/D [1622 0 R /XYZ 85.0394 191.1908 null] >> endobj -1616 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R >> +1621 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1623 0 obj << +1628 0 obj << /Length 2008 /Filter /FlateDecode >> @@ -6817,3015 +6838,3109 @@ nþ±ÓW›zÆ»\£nè‰ÁUXÑ}¢ò¿`·‡#™D '¾vþšöµM« Ì# ˆoƒAAÔVˆ1f×þûÃ\ê–ƒ*‚»%Wûª2xâEW¼|ÑuÚgæ4\ö§)ÌœFY6OD"ΈG¬©*çI§“æÄâf¢;ê´+Êg¢q¶«–3Ü«Hs¿{8ˆ¶+S7SÿÕÔv|'Û†t×À&»Ùb*O€ëë?n¨»h7Ö¹µÕ1IÌã&¿ -T`à<›)ŒK.æN´£me°1é³Ègo,v‚Cgå/ÍØP2†Î„]©ÿ:£îÉœ Üì'§•!±ÔŸØ|Ò‡"pzî¹#‰´ïÓl³ÌàmvCÞ£‹¶·¾Í
7û9^wMKŒ^îáPg;Þ4]¿Ÿ2îíÕï'ÎÓ}{Yäã×û"?݃¼huÖ708¢O
¦ÑòmŸO|‡Ó<Ì| jºåw¸a°´ü\xó·=ưîºt[,³Vç -' Lý"³]û¬»û¦½¯›S`4þü.l‹ü_jwÐóõúiÿn×qZž”¿¹äawÂ_Ñg~ÇäÃvöÝ?Öïÿ'N~Ëù_De»PJ¬Sdpôìð«þ±ëÿ~{›endstream +T`à<›)ŒK.æN´£me°1é³Ègo,v‚Cgå/ÍØP2†Î„]©ÿ:£îÉœ Üì'§•!±ÔŸØ|Ò‡"pzî¹#‰´ïÓl³ÌàmvCÞ£‹¶·¾Í
7û9^wMKŒ^îáPg;Þ4]¿Ÿ2îíÕï'ÎÓ}{Yäã×û"?݃¼huÖ708¢O
¦ÑòmŸO|‡Ó<Ì| jºåw¸a°´ü\xó·=ưîºt[ }úðö8Æ:²VçÐ^EŒ¨BVlÓòT_ÜömJcè·D’oÆ[ÅýYøÖ§§ Ê€¹*Jýölæ»jûÎOñ:l€pòçS,é +§ìEf;ÿYw÷M{_7'XŸ|þζEþNçù;˜õú–Ow}î7yØ ð‡ô™Ÿ2ù°£}÷ïõûÿ̀ÇÇrþGQÁFƒëý;ü°ìúÿ endobj -1622 0 obj << +1627 0 obj << /Type /Page -/Contents 1623 0 R -/Resources 1621 0 R +/Contents 1628 0 R +/Resources 1626 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1604 0 R -/Annots [ 1626 0 R 1627 0 R ] +/Parent 1609 0 R +/Annots [ 1631 0 R 1632 0 R ] >> endobj -1626 0 obj << +1631 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [491.4967 730.5319 511.2325 742.5915] /Subtype /Link /A << /S /GoTo /D (lwresd) >> >> endobj -1627 0 obj << +1632 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [55.6967 718.5767 89.457 730.6364] /Subtype /Link /A << /S /GoTo /D (lwresd) >> >> endobj -1624 0 obj << -/D [1622 0 R /XYZ 56.6929 794.5015 null] +1629 0 obj << +/D [1627 0 R /XYZ 56.6929 794.5015 null] >> endobj 446 0 obj << -/D [1622 0 R /XYZ 56.6929 769.5949 null] +/D [1627 0 R /XYZ 56.6929 769.5949 null] >> endobj -1625 0 obj << -/D [1622 0 R /XYZ 56.6929 749.3309 null] +1630 0 obj << +/D [1627 0 R /XYZ 56.6929 749.3309 null] >> endobj 450 0 obj << -/D [1622 0 R /XYZ 56.6929 523.534 null] +/D [1627 0 R /XYZ 56.6929 523.534 null] >> endobj -1628 0 obj << -/D [1622 0 R /XYZ 56.6929 498.8411 null] +1633 0 obj << +/D [1627 0 R /XYZ 56.6929 498.8411 null] >> endobj 454 0 obj << -/D [1622 0 R /XYZ 56.6929 429.268 null] +/D [1627 0 R /XYZ 56.6929 429.268 null] >> endobj -1629 0 obj << -/D [1622 0 R /XYZ 56.6929 398.8008 null] +1634 0 obj << +/D [1627 0 R /XYZ 56.6929 398.8008 null] >> endobj 458 0 obj << -/D [1622 0 R /XYZ 56.6929 365.2487 null] +/D [1627 0 R /XYZ 56.6929 365.2487 null] >> endobj -1630 0 obj << -/D [1622 0 R /XYZ 56.6929 337.6865 null] +1635 0 obj << +/D [1627 0 R /XYZ 56.6929 337.6865 null] >> endobj -1621 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1626 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1633 0 obj << -/Length 1130 +1638 0 obj << +/Length 1135 /Filter /FlateDecode >> stream -xÚ½X]sâ6}çWø1<ȵlöìS6%ivºÙ–Ò§4Ã[dÉ+É|ì6ÿ½2þˆ
fÒa!Ù÷螣««‹ aé4<×´`ŒüéZÐ5‚¸gÏúÙ]ï€ò%Pëã´÷Ë32|ÓÚCcÕ°<Óò<hLÃÇ«›ß®ÿ˜Ž'}`»ÖÕÐìwh]}¼ø5ñóææËÃíýÝß“ëþhp5½ÿòOÆ·ãÉøáfÜÐs¡¶·„#·÷¿ó_w“ëÏŸ¯'ý§é§ÞxZq©ó…–“ùÚ{|²ŒPÓþÔ³LÇ÷\c;– }ß6âÞÀuLwà8åíýÕû³¬=Ý™¶éç:žézö¨EÀ¬ -Ïôþȹ¾9tlg§àc-ë -¥jØ&ä1",Úb9ãbÆø‡¼ÿ”±ÕSMßuíºyˆ¥<@ -Î -)" Þ -– gwp"N©" Å `(îÀ¸"Ñ~äÝóoJ‚2B‹ÁI……^Bº=¨ÀA*¤ÍóýQ`;–Ô6Áð|óTê8AÂ9=?Ʋ½ôM$ÀÉ¿3AH¢Ì‚r™þ±\«]ò\ÝÆ¤h…µ<%30)q -oò“ÿä,Åê}çl¡)Éœö|¾JY™½¯óš³‘úöÎÞ—(àj5S•%,å,Fº6žQR&ç—“}¬ã—ÅåÞ
ƒ
^›wqx‡üF·[À•@LFe:½˜{ÅíÅÜp/¯DšèÂ_X‡uFµ[/àtœ§‚¥\v®Ît³ÄÛâµ êPçõ"P\çïzí¸—P>üÈ#¥ã\Ùi]]3Ûjä–©–D^l=çT—iN/·»³¿a«HÃd%UÓÕläÜ0^qý¯îˆðÀÃáÅ=ì‚ØvCæ¸fvÕrŸeUEí›oÏ^¯#Óñ<»º³íÚŘc
MÏöG¥Sk×Ù÷¼ºf;tý?³˜"endstream +xÚ½X]s£6}÷¯à1~åÃØ0û”M4;ÝlëºOiÆ#ƒˆ5+ tÛÿ^§†xw2Œ@G÷]]d–ú³
ß3-7“`dz–ía2°Œgõìn`ï€ò%Pëã|ðÓ;13;cc×°|Óò}Û˜GW7¿\ÿ6ŸÎ†Àñ¬«±9ÞØºúxÿð³n ôåæËÃíýÝŸ³ëádt5¿ÿò ›gÓÛélúp3Û÷lÕß)Nt¸½ÿuªÝÍ®?¾ž
ŸæŸÓyÅ¥Î×¶ÜœÈ×Áã“eDŠö§eºï[uc™v8F2y®é\·l!ƒ?¿W€µ§/]Ûôó\ßô|gÒ"àÈ® h[¾Œ‚‰1ñsì:î‹‚C0¶¬«¿E@H(±8ºqÄ‚ñeôýSÎW
+lÛ<Ï©ÀL® +ÔƒeÇÇI oÿÑ´K Ë-($âj +ÉþŒ(9 +3.Tjv'ÈãÐq-È}Šìîô2¡ò<)c¤‡¸jmKõð.æ` êŽñÒ5æ,ŽcÄ
ËiúËò¬vɵº&Aà©ö9Î@…@!@.I‹îHpe5k§ÃUfÈN‡Ö†M[C#t€>@•Ø9Šm¦b7iò¬Û®ä™Z‡†+V(Vú*,pŒØ^’C.Õ‘ç-zÚCM†(•ÊêSÌQÔÃ8ßBë•/ÀÆ\Ęy‚û ;×ȈiùM_ÊüM0Š +eSÆeÕžß<é»bÓ4Ëñ^.ÿž£O¦PÙh¸VróMÆÉ±¾½€9®ä5GC«ƒ.z¶¹)þ\™g:°F„çqÏe.U(2¬«’¦© håQH®R¥fì~§¢ÑRî+µ8[¤sޤSÉ@›)1i4àgÊ8:µÀZጢ,U{^ÈxôŠ×;·ÞÐ1Ù}¯ÁZ(n1‰Âj½vñÝ_m<è™c¹ïî%[]ü@΂o~ü˜xI0}î®R^oE[]Œ6¬ïh—;ÇÅ +¸Z1U`å‚„X$PÍ‚Ks>´V¥÷ôO`‚rg¿l¨ „jn¾ò;ÃnQCrHE\ÚéÅb>ªz/{y%²TU|—ž;
+Š:£ZÀ/µ¬ÅºÇG´®ÎÔeö9Ä¡ êQäézH¦ü»^;ʇ· ¤Êsæd¬tYõu¶Íˆ=•+$°¸˜ÞK¢Ê´#—Ëüûl3Y”‚¼¤j†š·tMã
SŸ{ïD|á¸^ÛI™ë™ùñV˹–U• ï>E;1Ž&¦ëûNu@æ8µ2×›¾LÊ rΞ{yuÜö:ôÿ endobj -1632 0 obj << +1637 0 obj << /Type /Page -/Contents 1633 0 R -/Resources 1631 0 R +/Contents 1638 0 R +/Resources 1636 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1604 0 R +/Parent 1609 0 R >> endobj -1634 0 obj << -/D [1632 0 R /XYZ 85.0394 794.5015 null] +1639 0 obj << +/D [1637 0 R /XYZ 85.0394 794.5015 null] >> endobj -1631 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R >> +1636 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1637 0 obj << -/Length 1183 +1642 0 obj << +/Length 1187 /Filter /FlateDecode >> stream -xÚ½X]“›6}÷¯àÑîŒT} „fŸ6[ïv3ͦqݧÇC@öÒ`p@ÞÄMúß+>lÀf1ØÍ€Ä=÷èÜ+é"l }aƒYÐD\˜!Ìw5@ÆR÷Ý
pñ
Ø}ª_½™~¾¥ÜPXÄ2¦‹ -–
‘mccê=-HàH# áÍû‡Ûû»?'×#n§÷ïF€04¼½ÿmœ?ÝM®ß½»žŒ -›_ô‚Xb¬&£™”îZ‚Áƒ{ÀJofÚ¨FP‹4h⊀6‚ÒPœ hQB3GÀBhø‰’!ˆÂüµh]G±ÊŸüõ¼|™å·oùÍñ¼X&É|å(÷ižåíÿ^í¾Ö"i¦ -m ²JÉ€uyûV&ó(ž‡Q×ÅkoÒ§Bòp³ú(ãfܱY{Ž’~¨düì§±jtVÎW b'L2Ê_Ià‡CDÕsH5ß.¥‘At¢QÃPî¸/ÃÞ1Ñ3GË/=½¶¸ŸdsR7w7qâ?ËîîköÚ¹ïyr‚X§COú{_&g¨VT`#ûšï‚¶ˆb]Îý(”@ðEîW "Üá¶h/—,Üa¨;wI–b˜œC59'·ö¶k=Ö°o‚íU:¬{:Ô9ÕÅ‘AÁ¹Õ¼6>•n³Æ5²m?;àYÛd[6Uúc¨Du}ÍEó†(ÐKÖ -Úá¶WåjžËU@‚kד҂!æÈê.mƃsÈ‘}¸vLSÛ狚ŸØCkb„‘ò[àÉÀÙîÖ/7 -½¤Ród,:Í¥²öoT‘]6—8…Ôâ4ËÓ3©œ–? ;±ÀØ„·DEš«sÏÎ1q‚$9RíWQ³*‡ÚÂ6E¶)´ìôwº¿+NvƒÖêÅú)8ðsTËø_1¢%Hüä…Ìß:ä¡ÞKóôiž¬¥ÛÁt9rlÙ‰Út=éô´¯ù_øÁ®ˆèoœ(Çýt {7Nè‡KpfIü$X}”Ž: 3[8®ì€$PºžòÝä\ -*ZG:ý¶ÝÎ\fWmñÐs£ü¶/T½HŽ©@{»Z®@ËZŽƒüØÚ{8CˉÚrfåè¿¥ÎùI -]Ç}êh|´ô°kï/¾ïùjÛ˜ -…PùˬûóÓ•i™Í’0òêç‰VEIïŽÚÄÝ¡^$¤¶kÙÒtlKLÏZYÑþ@àâ#Ýò¼ÛÔEm“ýi-!•ÓZÂmhÚ¤ •”™GÌwg¿ÇÔÿäÑ -iendstream +xÚÍX[“›6~÷¯àÑîŒT]‚Ù§ÍÖ»ÝL³i\÷ÉõxÈ»j08 oâ&ýï°Yv·Óñ–ÄùÎwnÒAØ@ú‡
fAË!ŽÁ2„™áÈxÔkw\¼v/ê[o¦ƒo)7èXÄ2¦Ë +–
‘mccêφ$p¤ÐðæýÃíýÝï“ë7‡Óû÷#@ÞÞÿ2ÎÿÝM®ß½»žŒ ++gk endobj -1636 0 obj << +1641 0 obj << /Type /Page -/Contents 1637 0 R -/Resources 1635 0 R +/Contents 1642 0 R +/Resources 1640 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1639 0 R +/Parent 1644 0 R >> endobj -1638 0 obj << -/D [1636 0 R /XYZ 56.6929 794.5015 null] +1643 0 obj << +/D [1641 0 R /XYZ 56.6929 794.5015 null] >> endobj -1635 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R >> +1640 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1642 0 obj << -/Length 1476 +1647 0 obj << +/Length 1348 /Filter /FlateDecode >> stream -xÚË’›8ðî¯àè©ZˆGåä$žì¤6“ìÄ9%S.dCAÂ'Ùßlâ±=±j5ýîVë5þXóˆnX¾¹¾-XmßÞŽpMƒ"Ô¥z5½¸¶\Í×}Çt´Ù²#ËÓ
ÏÃÚ,ü2~ý÷äãlzw…LbŒý -Ç¿º¹}£0¾^¸½¾yûùnråÚãÙ͇[…¾›^O醴¯§W{¿YKø
ÃõÍ?S½½›¼?¹»ºŸ½Mg/]±aIG¾¾ÜZn¿ºå{DÛÂÄбï›ÚzdK'¶e5˜dôiôo+°óµbб<x¦;@wˆ
O÷mßÕ\âëŽeZU¿\!Ç0Æë8EE– ®¦i¹^°â¥šÜK7AÂX÷ 1»|%g(~Xj¶c|žó4SÓøó"ÛÄá ŒanÜå.Ø÷’qq:wO·(((åˆç4`—:Q-Æ#$â5ëÆð˜ž/kúp‘KD±{†ˆÊŽsEô\ɳB((Îçrr‚Z†±ˆ³”&hYdkDK]š}Y
¢s’Û¯1š† #d›¸©œŠhžÒ&:'µ²ñøGÍ&¡9ÏYp†DhM󜅜„Zጟ¿l–q"”=üP–¢Ð_
bFé—°^¾¡0¥AËO°»£O!~¶y’.Ì+¿æIÌëªùï™`†SÛ}óqã ÖNüЈ—|¦¥û² E Hb–6ÍîX£ròÇı‡ )Cöy=wy¹lƒSE«v‚)Ê‚Ãb‚JIvç7ÙâæFƒéj{ytaKV°&VIÉökyÒ«á üzˆÛ·Ó³Š™/¨óÎJ>¶[ôøÓYûy€ÍšPÂVTô³q¤fdêTJ£åÔ~›k±K²Õ¥3Œ9]$Ñd•±ˆÖõ‚ƒ~Jã´_Ý
‰J4v\ÝrM{¸½?Òvê/t\„jÆ,•ö]ê^-$HMãt…âºÜ†&gfV}þæP·4”C§wñ)äbI{nq´~†–Y]ëqa -ö ~t+WÜÉòØ:;Ä!ÂOíÀø=ÈRAqÿ€úYÊøùecŠG‰ -/¡ùY>ý`E†ÒñŒ"!’K
Úsöq©ïKwˆ¦|+7üþå©l¿±\Tç·ZÚË£m¨kRÓ}ƒE>ÇŒý½Ìlö2øøâÚÄZ‹^J“‰¡{®A*"yÅ\H
—å²Õsuåü$¨`kX˜jú†}53ι -çT|ætÅj]fçªLGw°©ì™E¬5¨sK„K¢ï;@,i…Y ɲHMÇ;ÆYÖ˜3y¶’P™«q•dÙ%üèLD&G{¼`5—ç( -vj”×y]³(®Ùö®iM,Ïa´¨õT[¤‚¦2Cˆ4÷3#÷"ËqÆTîš„Œíª,¨Š®ü&1 ;âo– -)"èEØ3Å(“hX.u<Ýó}ütd] -ÜÆòÞ$),c…S´ -†Ô¨Ï2ð^áèñ½~lB¶¤eRÝ6NUé"Õý?ÔžAÝ Ö\W7]¿úÔ4¨CT½Yô‚Ö>¨ÔDÒ"* …Gu—ÚÓŒmC·ìUÝêîæÛD·lÓï)Ÿ$I¶•Q÷œñâçr#³MÌšUhaämËÃSå%±pVh˜êV+Á -º€Þ%æÏTe¯¬ ˆV -Ü*g&Û¦]AU-0Ûwü½4ÖÒ«¥%Ç:¹²´L¼(…BÇK5v„Yã €ÝÔHÕ -H[z"ž%eU¥¿yR¯ä;Ø@>¶>û¹íñ-҆ãç™Ã•aÉ•búnc”0!û–·ïr‡¦ÿ‰Ö‚—endstream +xÚX[sÚ8~çWøfV®/È—ÉMI7-éRú”faÐÔØ®%dÛÿ¾G–16qˆ¡!“±|¬s?çÓÅÔø35ë†í÷5×ïëØ0±¬:†¶€o;f1í'¡ê¬÷“λÛÕ|Ýw,G›Ì+²<Ýð<S›„÷Ýë¿_&ÃqYØè:zaÇ辿}P_=®ïF7·¿=·ßÜÞy<¼Ž‡£ëa™6ß*$¼ÀpsûÏP>ŽŸ?ƽ‡É§ÎpRúRõ×4léÈÏÎýƒ¡…àö§Ž¡Û¾‡µGx1tÓ÷-mÕéc[Ç}ÛÞS¢Î×ο¥ÀÊלµ)~ØötìYnC +cP”æyúá¿2OÒ…iî×4b¼¨šß-bf8…Ý·_6J¡wØv/^òY¶îK$o²(ˆ÷`w™5Gù•9y3çè6ˆÖ!}3óøz^'V!¬ÄëŒC3A¥D»VµVsåyÑ4s£Æt•Î]01/Äi¶ÙcÔ¡7_-!$± x…±ŽoPk4Ë Ñš7Ï Ö4øÕ£»Ñð¬î¡`'Z‡i:N-ÏÏÀ¼=k=ñ° +ýi,í»x]SB‚ˆ’|·Çb€Õ
‰Î̬, +rÑjÔ„¡(hÏwñvãbIGnq¬5Í“`òИ‚nůŒ<ÊŽk-®R±{VÚ`xÎþº´Vÿ”Ä”Ÿ_6VSW$*ºMÏòé‰f ŠÄ‚„ˆ.5èHÌŸíÏBï‰ù£ÜaÔ÷D¯œÇpFS‘o[@ÚÕIªš1rlP£È71ãhéæiÃ-M"ìjâŽr_nÜlCãÚÊKÒ:e[EÖrZH©‘‚ƒ¦*C}aøÝòwðñÝej%y.ƒÐwáíªÓ±¼02
–¤r
ãêà« ‚® +ìøÕà'Zè²*çqPeaÝ´±R5YÒÒ Ê¡Îì¾ïÀd9goÁsa¶GzóxÅ8Ûîr*w©r´NÕs%3 ùr|p^D"ŸýîŒ\îHåh¶SOy»¢«ádÉ +¶#…+RL–;Z’zòµ_ª2ƒ±4Û¬7€Ì¬í8]"nÐOÆv±ÎˆŠ®ü&);ìwoçŠ(– endobj -1641 0 obj << +1646 0 obj << /Type /Page -/Contents 1642 0 R -/Resources 1640 0 R +/Contents 1647 0 R +/Resources 1645 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1639 0 R +/Parent 1644 0 R >> endobj -1643 0 obj << -/D [1641 0 R /XYZ 85.0394 794.5015 null] +1648 0 obj << +/D [1646 0 R /XYZ 85.0394 794.5015 null] >> endobj 462 0 obj << -/D [1641 0 R /XYZ 85.0394 179.8868 null] +/D [1646 0 R /XYZ 85.0394 134.4238 null] >> endobj -1312 0 obj << -/D [1641 0 R /XYZ 85.0394 148.102 null] +1317 0 obj << +/D [1646 0 R /XYZ 85.0394 104.1161 null] >> endobj -1640 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F21 926 0 R /F22 949 0 R >> +1645 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1646 0 obj << -/Length 3140 +1651 0 obj << +/Length 3108 /Filter /FlateDecode >> stream -xÚ½Z_Û6ßOaô%Z bHJ”¨öi7Ý´)Úä.Ù»{hœlɱ[r%y7ÛÃ}÷›áú·ô&AƒD
‡ÃápæÇÊbÅá'V*aI&³UšÅLq¡V›Ã_}€¾.„å S8庾½xñ*JWË™¬n·YšqÅê¶ø5H˜d— /ß¾yõú‡¼»ºLãàöõÛ7—¡T<xõúçjýðîê—_®Þ]†B+¼üñêo·7ï¨+±2®_¿ùž(=Î}wóêæÝÍ›—7—¿ßþtqs;¬eº^Á#\È¿þÎW,û§Î¢L«Õ=¼p&²L®±Š˜Š£ÈQöï/þ>œôš¡^û Îd”H¥œP¦²LR•±$’‘1`^°&ž›|³«êÏáM$A¿kº’:îªò¾s<56Ò Ûåí¥ÐeÉ-Æï/QS#Ñ2ôåÈï,åPšöÁ'ÒàØt]µÞ[ru8šIš;+¦ìšý©¯šm…`™RÒ¬¦Ü"ËoœËMUÖ›Ú®µ}žPAjö»ª£VsDal¦™R™vÚ¬(&V`¼„ÇÀkÌ×÷°Ê–JÌS“+Í"®3MÓfYpÈA©ˆó ßw
‘Ö%Qºc¹©p
eAUíÓ#,Á×H6î’G©˜–¥ëó¾<”ußÁ&GB¢\#ÿ~Wmv4÷&7ÛŽ“öôë·mU”1ô´ÎU(ã˜i©“ù|Ø7ë|ïQWf,Uú–2-¤žY6(Ô)S)×þ}RÑÔ>šA88óSM£UDœiÍÅ*HIx”}I¼J–iýÑéHŠs墈éDgą̃d|æ ãƒ5Fç@ÿ‘ÙhÈ!ÜÖim߇p-njükWÖãpsi -‰Ý45*ùádc–ôqPäsäI™‰ÙÜ‘F|Q ÿéÐ`ÂAÙÕ©hBJª1¢˜ŠÉ‡‘F|àþÝc^jÞWýΊw¤yÁì¿mÚ3òµÏ£i5Û¯+}ˆ…‹PÉØ‡aprãÕ†h-Ø[¸Ú: -¤^ç@°pÊôŽfÔí¨
‚<;I2û¹(U8´j©ÙÜ[š™C.Ñ*xÕØîòSñƒ(c²ÆjÂk>}éwôf_Ý"¡yõœž×öi’l¼\šCÖŒYô\û‘ƒBE‚æS(Ô”i5Ba;O¥Ž3n§p¶}Ej#’8Y¦6 ݸ쨅Cm–…߸â?ç^ijŽ:HˆUx€-¨vCƒÆ„'LÄÊÙ…JëÇG÷ÿ–VÏÖl
- À”ˆå˜K… d;ß\}Cÿ˜ Ý4³}xñ‚X(¥ÄÖ8~—[RÕÛ†ñ¼„ó1#Yî+c6N³ÑêþûoÌDã뿦q‹&·T´7>¯žugu}ÅYî;ï2ä—-ãåSËÿWÃO5^AèõŸ^*Xè—÷Ôš¼æô€Ž‡SgYw¦R¢á¶Ñ™ô[Çf_aqƒmË(e<v ¹‘/oaLO89ӄʘ17Ó¶Üô¾}µE!âc”PJ)lN-£Fq*ÃRmoJwN -•Âf]д©ç·ÔË$$àŽÁNl>†ˆó’8K-ïs4iýpÐoöe^à -ê†=¸ê¢©È4e1Ÿ©,CQw]¹ óͦ<öaùéXµÞÌ<˘ÒêkÅ‚ŠU‘»âzy}À™~BdKÄãEIxÈ?0„}ï³@Uâ'äÆp,
UŠ«Ÿ”—@ÕÆ“¯‘GâºêOßA—h%ü¨ŸÍ² -_‘y^¤ÝÔ–mÖMØ5ù9Ua”t¢]z–~\β³7Mo2‹Ø…ð2‰mD}m .ŸÒfBì(LˆOáµ=uÇÀBé*e>PcÕ“p4ÝXyⲨ,ÔL 2ñ!ƒÔÂl}šÃÇ”Ã+Êáç |§Òæm@ó¶ÅXBùdE‰xSÛŽ3ÊAkÙMËiqÀúÐòž”.ÈÎwÊÕH²I驵ノ3ô¯îÞŠTm’¼’ö(€Ö'(
)k‚èËÉ;I³6¥¿oŸùG“FÂ,eÝÙ&åkpxºœ“å¹Cж>Òx趇íi»çì램¦œÒ"È‹CUƒŸ@-ÒÒ(xf{ìqD?ZW{Äüþº(åƒÉêî4f¸üQ‘ùþ¶)m)UÙ -ÉcúEA]ØZ-eKB%4ºk/upòa¶<î]–…ôìÒX°Tˆd%“Î.Î\òS8å¢;^á¹$¸È-œïxݺ˜9Ká<Óú陓gæ)– i¸5›šR© ®o?’cÂKasH:àxoˆJ¥¢r%žrJ -¶4žÞ¿=§¨§;+è¼É+mcìÙÁàðþÛcˆ(‰ äéô^€eiêÎõgÏÉcb±(MÔÜeÈãb±T+Še°¥ïbp×î±pƒäp‡júÉÁ^Ü·½¹»…œÎyŒg1¿²4òì%v®í8sAß@ðÄp:TBCš'óI šrªgýX>„gÁJ¼ûŸžÝ1yfŸ•”[©h>=ÝŠãåë±l!èX<ŠjC§#äÈ%µ)-€Ú¬ÜœÆÒŽ6ui>³ÈØpüцé~’Äñld=žÖ{7ŸÍ5Áá8n^ìT[Ýu0@¾óþýÍKj,¨1 -;éÃDìú²¡[itAxYŽ -`hŒñšé3ñª¥ó4lHÄáu¼w†ÁuCD—B{½˜o̺n(S >¡Ó¡2w™ay¼Bð~¸Ç05ï}Õ9ålà¥)“˜¿Ì@æýWR%”˜ ìžø¾6Þ!Û -¢s(p™½Iý=•%,Ž„ËØáL´GšE*–üÅt7”yQ”ÅÙÃâ1’Ÿ©Fžófy†T0ü„Ø¿)&à|}bÖg9mÌgIW`8™—>½E‘Á>²ß›†éJÙ—ÌÝ%ÓáÞ
]GP
‘$SÀ“þéƒ}š&äà9|'1D§À䪋9¯ÿ3ŠŒ“Q¤¦ßνÆt–ÃøxlɇïùD㿬â”EZŸIŒdªY¬AˆU -W +xÚ½]ã¶ñ}…‘—ÓgI‘•<í^öÒšK{·m’ +£EôúO7¹¿{OS‰£qûöÝ·Éèqèû»7wïïÞ½¾»þåþû«»ûA–©¼‚Ç(ȯW?ýˆýýgqfôâ^8Y&û+¥c¦U{ÈîêÃÕ_‚“Y»4¤?¥
ÓR% ɘ)iâ°–K… +‰t-ýÇmeö^[;¶›öôí·mU”!ôÞ¤RÌH“Ìàã®Ymž³+3–ê4ûƒjK™ƒhÓZš”é”›ðAéxª à @G$ÕbÎŒáb‘@@±Ò$”K–cÂ|9P\NIÚ8g.Ž™IL6îŒLZÇ
b¸ô‚ŒÖìÄ„ãôþ†°†@+÷>økÁðTÓèÛ²—¬Ë@’N ·ñ±"ÀH!„ðX]Ù‚±ÙuS#“Îi‰K +Y(Ä–¬~z'·VmNƒ½‹WÁÊÉ>V»:ž»§éú=\ØœÈwN;…[0j«p +óÍŠNí&.0u¬C·…,'á +=ÄtAzθ(ÔL ÈU¥ÇÖ½‡6ÎÐÀºGGF¸«½Ì5m8p¹ +éÄe¯M|m:Ìîh½VØ›®@4ÉK1_R°XUuá*ûaf&«%øê³Lð“¶H]lcÚºX3<ñ@ì‚küJCµùù5˜I†•]Ùaõ4-©ú5f“Á…8ÍLñ™Ÿ*ŒHÏüRÁ!Q}ZçËb‰Š{&Z@h&+ƒÁÂáœó0‹)hè1e‚‚0OÏ|šCIh?Uá$}“H£mC5Œ3H endobj -1645 0 obj << +1650 0 obj << /Type /Page -/Contents 1646 0 R -/Resources 1644 0 R +/Contents 1651 0 R +/Resources 1649 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1639 0 R +/Parent 1644 0 R >> endobj -1647 0 obj << -/D [1645 0 R /XYZ 56.6929 794.5015 null] +1652 0 obj << +/D [1650 0 R /XYZ 56.6929 794.5015 null] >> endobj -1644 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F53 1298 0 R /F41 1203 0 R /F40 1146 0 R >> +1649 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F53 1303 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1650 0 obj << -/Length 3766 +1655 0 obj << +/Length 3808 /Filter /FlateDecode >> stream -xÚ½[YsÜ6~ׯÐ[Fµ'Ú'Ç–o6NÖž$II,Ïòããßo7À€räJ*[*‰ Ð -Ä&àiŒ|ÒÆöõþpÛÎN6—3n@ïR‘0øÍç•Ùc*Ú1§Ìž -¹>Ô_×÷}_<6ër«n‡¦ØNÙ - K‘,ðÕWwwž°Æ‚YÝAªúMJíøÌb½Ï2¦SÜ´/ß¾¿žYT,G/ND$eVu»¢igV’¦,åYâ¨qb»šlµ¹ÊÕª#~½sC -
T7)µ×ág3®Ug,1©÷¬ÖW,ò’p–pé9ßz·¹Å¶ï¨tüݰèè•‚«LÄyGS-;º@5ÃüÈ»iÅ„ybnO43÷ȻȄ’“É7¤%ÙÊ1`ËÅãã• -¦
Ïž`)g<M<Qý¥|(Ú{ë'8˜§›oW|¥B·§éBEÛ9’þ±.›»¯ÔìÂG~©o‚\-½
ÓHsGc%GbôUBˆ•uöbõ措)Ô=¬þ HpÎŒL'–Gûœ§n,Ùm†ghmsž‘{ĆÏÕ(ÝÖ3~D$† {Óõ{‘pîÞàˆø -¸j˜³ -ˆ35"Q(¿J9)©äØ4’” ÁI JR‚¹ôF°‡hÚíH,õ*TÍ="À q
åÜœ•˜FþÇ$d’Üâbd~ס7Å••E_÷ÏȲ¾œÑZiδ€¡Fb¤‰g&—àç…_‰‡M2ËÉggÎ'a…ü€V¿ë©Ê;5¤Ã žöAsÁ*‹€¬óÛM¯m×®ë/
D~TL$ì·Ç¡òÕ¶ùà—god=>ÌŽ<¹0`g@`RpÃÉ·eC’åY–ÍçBë0â:rÆïHˆ„Ê3û-wb&ÔÃ6eÒkÇÙýì)MM6ŽóJpër0¤~í.Úø/‡¾iï]ò¢¼Ãa~*öƒ“ðvÛ>XW5±¶®C¶üKÍùS-‡ì@u4˜”átŸ!¸òDŸŸÚÍL=ŽØ’qÈyÇsÛˆ-Á»¾lîP¢(„zýC½Ýî¬>{WŒ$ - -£R@Ë*{â˜:¦ZV˜@eOê›jIM`?¥Òéù¹ÕÌäã¬W1)’ñäï"c·êŽdTzô G·šÍ¹Õ4h د -vPÂ.eÝ»Š7/E‹Y`*:`ƒõdvÌÑΫ„§;/³;¯9f¥ádàš4LḴòÉ7 -H®÷‡öÚêýe°sÉ0€méøPòW’~±‹J–„•ö,5å?c ñ3¶DfÍðPÔö¹À|ÑÖuTÓ×ëß7÷m±íC³ƒƒŽµÓÙ™•YmK¸"Óþ»´ÄßeÀ½èÕ{:2BÒÔž(5Æ€Fkƒtw6ó -?¬aî¸äHµac’óªFþÀ -ï"Ý
ôë¸Ã©îžŽ‹ü¿¯KwÏÀ^hÒ’Ñ“ÜV@À¹qtbCê >NG;ë:À±<•ê¼ëˆ©–]G ²:š¶ÂSÄó!1?Ï@ šá`&$Ê1SÇÄ”Öô´ªlœ'`ªý¾©\‡Ác¯"-ò@bëz -R@æÎLq>ÂØŸšÊ·Ý~ûN,нO=¦ûÉãO– {}_G¬Ñ1u.ÀÓL?ðè-}4pöLÚ`Qû/TUÛ÷u¹Þv݇¢GÌD%ÎÀ8×!!VõP4Ûþ¯‰œ)”…wAö" -*³2ÿÃ9µ0 ž8çˆÎ¨¾#¢›%å¾ë†EÍW9“ €às³¢ÓéÇS3©“l4ÿÆ_ŠÔ^SNM‡\EPü¸2à@¼Häp öWǰԻ\£µ{™Éf5:;p8ƒ#²Gô,•fŠóléÀÒyþ‹žÎõÿ>²dgXúV}ß-´HžPȈêŒFz*RIëÖ`.Ji$3ÚdçYT3<ŒÝqŠw2Ę ÂqBÆ8NHÂq£!8ÊtãK¥ôUxæCÅ‚taKnÅôBw ßß×y¯±„‡½ZrËx=„%úxóT!D,:WÀÂì;êÓ+ûé
;¬·s:-™ÈM|$‚„F9H]'0õhÐt„„С\n¢òŸ7]ϨœH™ûh|²ç†i‘Ê1‹¿qÃ1XMÕÍÝ]†üF`y‚yêuD¾|Úà—’t\fìôfCŠ—œÓ,ææTõ=ÑLLÇB.p/TNG=JJBÐÀ^jÊöØS=m4Äa¬‰H±p+ccšJ/yÒ¥õc·mʹJ@á^#Bþz0ý»~æ^%daòxð¸íÊbN7•b<ç^iºG+qJr–A.w‚éý§ÞÑyOK`?€•â¶;Ó;wu1¨åKWöÁAã=û™„_ÇÌŸ¾Îü_¼'ŸeHO@-S(“N9÷þOYÿ>>#Åendstream +xÚµ[ÝsÛ6÷_á·“ç"Ÿ$1÷”6õõšöbßÜÜ´} DÚâD"‘Šãÿþv± +ÍirµÔ)[|wóá
Q=¾ÿùû›÷ÿúøú*S‹»›Ÿ?ùãÛwo?¾ýðýÛ«%Ï5‡ñÂÍ03àÝÍ?ÞRëýÇ×?ýôúãÕïw¿x{Þ%~_Î$¾Èç‹_g—%¼öß/X"M®/ŸàK¸1ârw¡´L´’ÒS¶·ÿF½vè”þ´Ì‹lBBD +äÚ*½Ì´IR)¤Uàí¯…Né¥6E·¡V{OÏ~SQãK]=Q«)vŽVwô<tUI§ºß J®ß)/lÒDI‹Ù%“ݧê¹#¾€ðR§Â±U_ûªéê¶¡¹‹²¬ÊäDá,al!ðNi®¦
Ì1-c.ÒŸ20Ï…Ràë–˯÷Õ~¼4—YÂRiί¸Nb¤#%¦´®~·A%K™/ÚÇÞªBÊlh«®ÝV}•LèÒ˜D€98]Þô4â©èh +Ú3$Õ
=éÐ`_N„¾¥g÷XëûgGDƒ@¦Ç¢ß)ļØM²ÄŠJ'BÊÔ 3TéHî¥ÌÒ$å@[rž
Á1û+/ü°/v .¥7Ö.òpØó…yÏ”/š–~wÕc±/ú)‰¸Ê)5ÿ‰4œ)£c¡Uè䋦ªÀ@ÿ†"ˆEÝ;êý¡YãÆÛºŽ˜ÅêPo{Gjz'³SàåR0x{ɽx“NCWí¿€´àfDšé,@œ?1×ü‘\(EÇwùÐuÅc½„f_¬NŽFÆ™êd\BüX„TéHŠ;k‰<]üøñ;M-'ŒmÿƘØ:kð£ÇF¶¸o÷Dy{»¼»½yïúK0—c +œ¨ó‡©Zl[¯vü|"´ƒO„¶}g™Jë1Ђ:ö5€,7ðÐY¯€ÍÞO=íù/—^ Á.‘·éø®þýÁª¼KFv +~z²ÅŸF;uC<öŽÆþ&„rZÌcŒKƒ¯òó͇Ûë ]™ÄåÄD6”í® +Ò½¯^Ç®zˆç)úÄ“¸ +çòè7ùul=TM…¶¤Çôj $)Øófq÷ãÛÿLØŽÈÁÑiàÿÞTþÈeŽ6¯ÌÐ ×Û¼1Æš4Ž56úh:’ õ‚H&aYš‡|o½)šë1 +âŒ%ZdéÐiÓ>›Ì-»Íð]ƒm69 +ì ô†U5•=§:áÊø\ÅïEÊÜi¾¯qFü éN?¡fzV¹ÎÜXZFf±{šõA M¦e|2>?Ã[îŸê®rZ’KdÎGfä’G¿˜FZ-ÉôØ5Ð0– Ãi Z3Z‚Yp±{ÀíŽÔ²©¾R£¬01›ÐSÐ6ú¬†àh˜?¦!›®¢ð»¶ëéÍÖEWu¯èdOçÍK©X¢¸œV‡‹‹Ð€ En(4äÎ'!ÁC H"ÿÒÉ;5äÃ^ +Äã‚$‹“€õÛM?›¶YV_kÀ@h˜ÈØVÇ©Ìb[riopz|Hxr®áœƒÊ$QJ}K-M$&ÏóéJÚ2̸Œ§œðû<O4—渲ßrç!&`lS.¼uœÝm +Z÷”îí\¬—×m`ÿ”E9¬\7£BùS»ÿŒ¿t +§¢Oá&‹oÆ,ñ"2#h(t@üOcŸ0ã2žÒšÃ@:©x"PsÍÛb2©0`Ï•äAas§ðun÷…Sq9%žË–@ª]×=@ÏzÝÍ—_ŘóR® 1&5Išs1”ÃÅ+üeËX¹·œ…yã |ìkªêC^ÆmºâÁ;¾°›§u‹5ô$ÞcŠQ‹$4]Ñ}J-fë÷Àž™„³fbsNÜ®LeZ¹íE'lÆ`œÄœ™‚RÌ5o0Ë^ßÕ圙 +Ìðš¤&×ûCsmíƒþM`+¦Rq +€—¶„ ‡Ž¤W+A|GÒú)ØÈ“½Ê}òû©Ú{Õ¬·mø°Æ§e{ ”ÚŸ½¬žq¡x“É„JϻИkÞ….‹£ð‚sÇ9Gªt1&=/Aàšaà4€9ÂÖq¸ÕΪáÙ_ñ…ç6«ý9Ð:ºüÓ¢ú?°œ¿¯«ÐQôÔ:eàÇzt9ªµ3S§ "Ydë.{Àa޲Éڵѷõ›íðf;þºj”eCR‚07lÔtRgqòÿ†tó48'SŽ>…*ô¼aãõ
ÓúÃŽ¸Î¶ç²8èE$‰wV„À5!ð^”dOõPŠtLÅ~YŒÀœ‰"!Ä?¦ŽÄ€€³x|„pÖ¹Ž3Ú-=]Öìã¬+b*ÝÓf]L»ÂÑT¹:K˜b#‡Göˆ·Çs˜P)]ÃËl‹T`!;D*Öé»Ké#RIåŒ%‚¦9ãCKœ“ð½Ì²šÁ¸ZìUúÑ
8‰¦Ê>þŽžbCÊÐ +HÁ…Ïš\I’ÃQî‹zÛÙH¬\$æ>‹“HìëÛÐEb>ãÿжU¸tšÉÔÈá×GhÐÉÌ7ÚÃob’¹à!öãWë¦ÝÎýéãÿs endobj -1649 0 obj << +1654 0 obj << /Type /Page -/Contents 1650 0 R -/Resources 1648 0 R +/Contents 1655 0 R +/Resources 1653 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1639 0 R -/Annots [ 1652 0 R 1653 0 R ] +/Parent 1644 0 R +/Annots [ 1657 0 R ] >> endobj -1652 0 obj << +1657 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [250.9056 228.7768 314.5963 238.1864] +/Rect [250.9056 118.0395 314.5963 127.4491] /Subtype /Link /A << /S /GoTo /D (statsfile) >> >> endobj -1653 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [108.9497 85.4256 178.334 97.4853] -/Subtype /Link -/A << /S /GoTo /D (dynamic_update_policies) >> ->> endobj -1651 0 obj << -/D [1649 0 R /XYZ 85.0394 794.5015 null] ->> endobj -1648 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R /F48 1223 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1657 0 obj << -/Length 3182 -/Filter /FlateDecode ->> -stream -xÚ¥]s£FòÝ¿B•—ÃUË -¶&È¡aœu½§A»a”åÓÝGñYŽÄ„è?=çnͤ떑w:+~÷<_çß_Ï/´'×ëôP2^ÑÐ6¿û~XÖYZÎQF tf -ÜS¡ò<ç—ëÄâEN¨/iyÐ
o¹¿Êaj›mšÍ›M*@¯¡”4'¥…±ë*
PAehê^öed q ÔG - -H¦Ñ(.Ó°Œ)
Kå€yaàôáMÅõಅmÓ¢*ßVµÀ¡Îi… -Ø#J«›ŽðÌ"‘`ŒphÌ Ì«$O\«AˆL³Ý¤•ås*‚¿eIu&Õ!0Xiz¦«’G¦ægVo·‡ªÈ0lÀ+$UFÙ0蹬W)“ÑŸM2„rÅ÷äeïc·ðO´3¨·ó\¿ÙdJˆ#pó‹ÛwXûSBF3dÀX»H<§©ÉÕ3žc -ðlŠçJ3ò¿ëJ7èŽ2a§2˜;&lбl™
š86µb ›}aÀÆ -ÌŽF&~¾F9x‰Í £èãCÅ¢°éð¦ãÎè±çJŽêÜMÿDƒÅ¡6éh³–æùŒÀ qbBÇr¡^‹†Ç.ª¢-làÍê -µô| Ë"`Y§9GvŽôÇ|âa
µo;ŽæÅÖ&Šß¡<ÏçŠË ^°ä›ÃªÙƒ`iNH¸is6 „Á¥¾Qæô±Î'Ë”9{½Öû½ÎçÏh‰'YÀ]ÈàòþÖÃ,»2ˆ¢!Æw”?v™Ä:¤ -œ²@_#´öm§i„~C¦0 -=À -Â9ÄöŠ!3ýÁMÎU¨„!ãX0‘å§Û†ÐQÄm½#p©_tɯ×XÓ6œ=•½t€7(YÕ-ÙS¸‘_q˜?."SkS»¾¹é¯YyÈYßè3®M‚¾ ‚·Otg†XP·oap¢¿‚+¶TdÐ%>W¼ºMs=\áâåˆÕÍ«îbŸYy£çQ’4gq¨«e |âÚéÈäDýB7NîÓ¨;NZ®EÈñqÕb™l®Pnڦįéy¢uro”áUƒI8qräd°-× æHÝî@~¢4yø×íçû›»‡ÓˆÐô]¼~)r›O8¼¸¹_œ‰x³P¿èA²9kDz‘ïeFFtA:ˆÌžA$†jŒ<«ÆˆJRum)¶eeS÷ MäàMQæ„w|»hùÙÐ -ÝÃáKåkúÆv5hÁ4_83æh˜kõ~[TzÊj Àá0H2 -÷óò†ßë,/€6w§¿Ø²Ÿy‹v£ÆæÛ´>Yìo„„=rKk`Ó-Æ4ׄMïCÒˆMèÁyaßëy攇ó -endobj 1656 0 obj << -/Type /Page -/Contents 1657 0 R -/Resources 1655 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1639 0 R ->> endobj -1658 0 obj << -/D [1656 0 R /XYZ 56.6929 794.5015 null] +/D [1654 0 R /XYZ 85.0394 794.5015 null] >> endobj -1655 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F48 1223 0 R /F41 1203 0 R >> +1653 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R /F21 930 0 R /F39 1151 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1661 0 obj << -/Length 3273 +/Length 3460 /Filter /FlateDecode >> stream -xÚ¥]sã¶ñÝ¿B}£g" - $޲|°HDG‰_°ÞœJÔ€ÛÐ>í2'à1+‹yÖÖzÝí’ Œ9ÊÊ6ßTYëðe°ÊÛe=g"õžÆ™ -Pº~ËíÚ«½79#~²^Ì@ßGn˜Å ‹”Hˆq%bǸ”2 -zdfÛ
iLÅ{e
ø -B4”šãMhï
{¾2ÏšœfÐÉ¢—N{éY÷½´fåùçuAdäR²w6A•ï•eP½}C:*;Ῠ¼qh£Ôë#Æ GöžO3¯wªŸ“*Œ/([±"IXúŠeÛ®›ó³³Ýn‡§‹f’>œ5u¹EoÎæå#±#VË0Ò«íŸsá(I!Uͼvhâ4¥\˜¦xè»çùq·rÚ_êòãÏw@Fþ2–'…‰¶I§»¤$IB…ÆÀsa$½CY`ø”гáü‘tLjŸß—ùª!”bì^¥€ÔL€á¾é^ÁϘ¾ÅÕªæ
õ¶B—
²6ÂàPõ4füú¬ljÆW낌
¹h´3òD•#Èè^óy`^©Š‡òÔQJ,¾ú -v›—O…‹2I¸43ÁÌÇ剡\FÜaðÉÈjåRAŒT6 -–õn`ƒ5(d¼°¬ûmëqìlPMAQ½v6Zz ¸Äè»ðÙç%Їàà™¸ÌÊlŸŒN€(lýPMw\‹ˆ^NµÏ`{a·çeÂAZÖSÜ›w—çxµ"ø©A‘?×I(;¥Uö®Æ&ª'¤ÛEhz-ë8ñ§é¬®ÐÉ?l÷á[:æ‚ -~®ë¦)Ànœ.cšÔÒ8kº¹|Äëœzž2‘òH6êãÌxÚSƒúì6EÛz‰£ìN¹·gŸÄKÓ^ÀrÔxÙvý°A‡>kpÁ 0¼܈ècoDtX½$a…UÕ}>x»yÞ°@eÿ2ÖƒnDŸ:àãÖ¾TÓ( –E¾ÉœÄf -Ê(=(Sº¾ƒŽ±ò/Ia4Ø{YÖ;Šš«$Àûª€ˆHtÌí%vÔHÒÉMö·Tàø°Y£÷uN²‚öÈ@è1Rg#מ@%àÃK»qåíô˜ƒµ`KÖÇüz3VïJ(ED«¬ÊŽÓƒØ¦LWƒ³j¡ø®Ú¯:5ÒlPióEmB#¿€eÕó±Ù¬-ó£¾PkÌ’—]aé¸'ôHÌw¬Ÿ9>AŒ—öìžo:48ì³Oå-Å4Ў˳ôNO£.\¥>k›ÑNuZª×+Ka_´´h AEC+ìœÍ ¾þñQS‚—Íçœ349sÛrFx4òÛ6ß49qˆËœ-B¯6a,ÔA³÷9±D÷OÁ¤qä e‹†¨£àº¥Y`c,[ßôƒÑ–©Ü3UìV0~E3lü{[Í|ÏRúì Œ0nè[E¬yÇËìHuŸ`/ Wu“–½i(Mâ=à<G×Qå¯ÎcÇA„©«}ƒh:Ë\ý9¤lç‡mÙëòeÜœóWíõÍs2Þ@û -εFí¸õ|\\¢ümÏ (Um3º»‚-›•Dž3Üb¯'‡3ž¦w
f¥Š‡öÅùÒ©Ñ–zŠe.]m(•=ürâU‚SØÖkŠkÁ5]'v$ýQ¡MbŸ¯dÕÓ»74€¸ÓVdù¶TalÔ«g]šyx‘r½|¼pËZÙ™+;Æ‘ûƒ„OëÁ
"aŸ«*Ì;Ë|FûÚþ8ùWÇÌпº¡Î#Â"çËg²*é1ƒjªRuÌ¡rûsP‚'åýÖu5/|ëö¢×€gÏr͆KÉtßY|±fD‰„¤Æþ/ª¥&T6•o6nÐê×;±]ÊÜ7níŒ/·©×¬üó¬ÜŽæ9 -?«wÕØ¼ugÄ --~ºdÊÿ’UAëíŠirßûó¼Í7«¢bÕÐüÙJ±8i¨éâRN4gàsþHzQùOm.ÊÂü*k¡¦#ª:ð·ôËÆÒæÊIØn\’1üêîT¼ëdRXšA°Ÿóµ87•Œw±£¡Åõ«ã—”jÇDG¦S±ní¢å1We†Y Ï·˜lGzˆÃ.ƒaîÊûo¸ pj…C›¬(ê‹û¯x0Üåz -Çœ7ýô…¦è«€[á³àÔKÙHÑ\Ýâ6ë>Z›P[“îwÊ€ëp¤‘¦!Êà Jÿç(b¨¶7‹™L¥¥—ÿÐCŠ3ûŽÁ4 -elÏdì8“¿ÿñΫ®÷«{Ÿèb}~u•¾???Ã,‹vÁ[ýîŽ7ÎìÕ_ãEÙ[ò'>Õ»×(Èwí“è³Í‹ÏÏðw.àÏý·ŸgìqQ|ökßqãyìØ¼1î)H:Á’jª!ˆ"BÅ_;A‘'O§XÞ×u™ûtû£óͱŸ7¡æ¨ÑùˆNÓÿïŸ>í'UÖFã…ªîûPâ™Â£™ôsÑÍØ(aý¿Žü¶Ðendstream +xÚ¥ZÝsÛ6÷_á·“g*š +½ÔŒ#\Êıޕ°¸„à[ˆK|v®Ûáé¢BÜ õ².²5K: ’åRz<Üü@¿15൉x2•iR‹Il>¾Î /оç÷{e·vfG—Ay¡ +„¨´â«ÎN åb×"f×P‰'ø‡O»ÛæiÇ–å¦%^«=¦CZL: LãÐ1¦ƒ(b£BWiP\ˆÅ,¬•öü +‚ID‰EÒYž°´ÜÖe‘ÍmTvˆCn;ݘªû‡ÃC<D] +õlr5…$Ða?E4蟀.pM²4”£,
ve¤è@·ã +(ÊSïs. 9çÊå\@Kõ9°Rzì3-hp‚”s‹R" (%b>íW¥ŒžæDHàÜèXMœÇl¦[ÑO‚I$A. ŒÈY FA6 +È&,0d1sHÄ_±Q"Å_
²Qâë·ƒ¬N"1²V_²/¼À>œÚ×3]Z”-5œ¬£Ö¢2N ¾ÒÑ$4ÿÅèª"(<Ã7jçÐñ#ã„põmÝtÓ¡¼†8¹¢“9\q”ú°HÇÃ_®º|x÷5¬@E‹j·yÄj¹“u%2Ò€é–Di€EæËLñ\TOÄ"wg‡VyϽ¾½§¡[ª§»:«K^«IWÈÃc™a@ޕշN@
'yP±F€u¼ +ãªþ©¬SžL4 (éË7À=:n'e// +X´‹Ä_´5òŒÛèúð .Š ¸}%ÚŸ,pÏ™ã$ú9 ‘B¯+q3‡ÏmSlÒ¦(™]“»Y-â€
º¿yÇ9$Ž*Nƈ¯·XȘÛï¸àßÙPiOÚÒóáß7¿Ç©jS[ +ÚäÔÕbЕc_dÔèËpŸl‚϶xªÿYW¦Åã¨>TVrË[qLX–s€¶YJ w`0 +¸¬Í´ü‰‡Kü±+ra“ufò/>Ãl,Ä"¢ø’0|2Õ_D½ÆÝÃÞDZ0NÔ|[§»¶39z´ˆ^¥É5D·y‘v³‹o9›9{±@«ðî˜o@`.éÜÎEyH ”«¤y÷±x/«¦é +šÖ›Ñ¾¯L"D÷q,F‘¨ +HØœ^¿—šQ`"Oa8ÖÀžxzY(w ã`Q-ÝÛƒX÷º5D!¯HÀ&Àº‚?fàòqþ#Od6E×ÏôhVûœ„“èz¢S L¼³Ë:]Ò</\1 +§*ˆ&©ÂÈ¡«u×}vûùÆ?¥ +‘'™YÐØL-´k¡ocè»m)%%ª/K±,+ñójÏm“A^eNrûÑEÇÏ–zè•/é+O°alñ…-G«\gšMQ™ÙpmØÍš +Ÿ¤?}¹¿ùò )*¸À'F6¿$Êq*Îc'å» endobj 1660 0 obj << /Type /Page /Contents 1661 0 R /Resources 1659 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1639 0 R +/Parent 1644 0 R /Annots [ 1663 0 R ] >> endobj 1663 0 obj << /Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [278.4002 609.7643 280.3928 621.8239] -/Subtype/Link/A<</Type/Action/S/URI/URI()>> +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [80.6033 669.2413 149.9876 681.3009] +/Subtype /Link +/A << /S /GoTo /D (dynamic_update_policies) >> >> endobj 1662 0 obj << -/D [1660 0 R /XYZ 85.0394 794.5015 null] ->> endobj -466 0 obj << -/D [1660 0 R /XYZ 85.0394 104.1274 null] ->> endobj -1357 0 obj << -/D [1660 0 R /XYZ 85.0394 74.7058 null] +/D [1660 0 R /XYZ 56.6929 794.5015 null] >> endobj 1659 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F48 1223 0 R /F41 1203 0 R /F11 1437 0 R >> +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1666 0 obj << -/Length 3529 +/Length 3629 /Filter /FlateDecode >> stream -xÚÍ[Ýsã¶÷_¡·È3'†ø NŸ.‰ïêLÏ×\œI3Ih‘¶ØH¤+RvÜ¿¾»Ø J”t—¦Ó?pE.€Åb?~Àbߘ%&2™Ìfi¦£$Él¹¹ˆgðíí…`ž…gZ„\_Ý^|ùF¥³,ÊŒ4³Ûû /ÅÖŠÙmñóÜD2º„âù×ïoÞ\¿ýáÃëËTÏo¯ßß\.dÏß\ÿ튨·^¿{÷úÃåBØDÌ¿þëë¿ß^} O†ûøêúæz“ÑãH§®Þ\}¸ºùúêò×Ûo/®nû¹„ó±Â‰üëâç_ãYÓþö"ŽTf“Ù3üˆ#‘er¶¹Ð‰Š”³¾øþ⻾Ãà«k:¥?Ø(‘ÚÌJGÆŸÖ²ˆR!€)M²È(©z-K1¥eÏ…ZÎ×ëæyQ—Ï‹7uÙîÏZÀ¸Âˆ Ñ” -TŽcy!Éö»K£LÉ”y^].”ónUÖ@%fN2™/󚈻’žyQ”“=·—v¾«»jSRó§*ç1C%Š,Žb4º‹eß#8!¦KδoÑl‰¿(×eçe˜ -eD80UÄÔ`Á…ˆ²$‘î;txD -r˜°–yW.šzQþ3:ÈXi¤!IŸ–¡çšb4_-#m`eFRÜ’€&›Ç®B·Aú9w/¬±_Š?
èÃZwCdYçwkŽÅËU¹ü~Ýc®pk[nší±¯Ëü7?8÷ŽjpQ]Ð@ΦL€AȱË1ö©ê†Ýš
Â'ƒp>yͳðÁéÇrbmöÛ9ÁÛãö %$þÔž±‡€ë„=x.œh¦í L´]µ</βÓÃ÷\ãLA*À, Ñ‘ -ñ>I»îÍË#SÎ9•€ù7õÆØB -çž:ŽÚ!Šï 1+½hÏëÊ5 *~:ƒ@b•?>–5÷‰Ž£åã¹PŒj_:ß—sfû”¯_ÑÏÆ
ˆTéÑÙ~ý‡±LöF¼*ómwæ¹ð=ME^ÙD{ßà0%ç«æ±¼ßî…ŸÅnË™_ú¸†1±„yº -NnwH¨… Þ=») -°Ã~ñÑ#6X²È$Vœ>b¹Ž±õ\n ÿ\TX[@4ƒlR©Óƒ÷\£Ë½ƒˆÃf<ü5–í€zü5=·¯èPÖßUI†køJ— -úÐV›Ýš‰¤ß}D®æ®mðö½¦ë%@Ð,ÜàËëï~¸úp ¸õ§K!ÜAq(O2ϸVØÕÞŸ’vr°bi|µôG{g,$ïõN.®‚N5„†Ó‹pX\Ïå·ì–«ÅÃzW®„‚ V§Çî¹&mÀ7gÜ"1vXA“Îûw¼F¸}i¼fÅe'w+ ÊÔ¶¯ƒ .LÁPË«¤¿k¹Ìùþб~“-
vå,o!ÙyÞuåæ±÷•,È»J¿Ú; %YðœË¢fçˆåè?ZlÇGEUÔ_0½¢F xk
3šºíÜ=Î%[}æç -àg¾)û³øÀ÷ZZúUìJ"ؼÊꉎ3 å÷×oo¯>¼{E<IúÔpgEÃ`’¹œg/7ʱUäõ‹¿0Eûçxg¨ý¨óÓñÖ>êa¸}rMöc^tÊ‚}Ô?p—ÍBA”Q“wÁãÙY´ù±ä‡ÿІì‘û¸X^@ÈS^(÷¿ñ¡kÄ‘TFNˆþ(ÞUendstream +xÚ¥]s¤Æñ]¿b+O¨ÊË1ÌÃ]*U²NçÈöé.:%©”í´ ‰˜…õÂJ–Sùïéžîa±’ìHÛÌôôôôô7ˆEÿbauÉT-’T…:z±ZE‹[˜ûæH0ÎÒ#-‡X__½ù “E¦&6‹«›-FÖŠÅUþCpúדÏWg—ÇËXG —ÚDÁ×çïi$¥ŸÓOοùûåÉq¢‚«óO4|yöáìòìâôìx)¬°>f +|8ÿþŒ o.O>~<¹<þéêÛ£³«þ,ÃóŠHâA~9úá§h‘ñ¿=ŠB™Z½x€‡(i/ÖGJËP+)ýHuôåèo=ÁÁ¬[:'?-m¨mœÌP‰ +#
` +ÓTš±<UŒõ¤›ÚeQ=–.è$&pYg‚¾Ò…€DS(€wX|n²^»Ì—ƒ;¨$ï‹-¶yx$ã…åhÝ/;o‹sgƒâ +j”øeWŸ(á%àò ï¢é?–(‚ciâ-w0}2ºDaã‰ÑõÁõK“AQ<HhQxàdÂQ–6ˆÀŸ®ÎÞÎΣ~Å¡ò‡¦®QœXßZWŶ£ +F;<;ÍvÐÐëLM¨PÄ}®õú¨ýªMÓ¼‹KK +w'1Ôùàs'Ë Å%€ŽÑpŠëëIq¦c>¬!θö¸ÃÄkœ÷ O½í$Ëj€‘í~Ëö`ÃCÚ8ÔÖ¾ÐSbnxôXƒÜcÕÛu±x·}Úõ°I˜ª8yžk†Q×#ÁNøø‚vƒj'Á]Yl©¹´°¥Á‡»ruG rK>ü:âLÆ$èzîdþ6b_QÝÖîÒà™4 +“ì€TiZR§¡ÐIÿ¦@RS˜ÀÒß 8&q†rÊU€¦¹JÁÕ¿ržâ^ +mªçq‹¶Ï_Æ&ç9Ég»=§ÿ‚—½öÔA+ÌaâwÙ=ãUE}ÛÝñ0µì£@ÆìLTäË€6xÞ¹ÿ)ï—1±O›.?œò’Hdz½Æ“</ñ~!<rÓ€š ¾Ò۶ܸ8ÿl“ËϘ‘Ÿ +%–8Ga¡knm¬h=f +4Aý¾}'ÄŽ¤ÃS
ýÞÁjFãh{%µF&ý\“â”éˆÞ¶RXï±Á~ØŠ7MÓNHäbyòþýåaB»¶Çmk ×–¿¹sñÓ‹“g”ºNŒbêœQ@й½/¶s¡jQÙW™xõ3¾ +eôÐÊ–`ÄŒ9Š*4*6Pbn à¯÷)û‰”bºKB‡/Føu5tÆS|óë\l +ŠêãVQÿ:Çô4£øuZÿÍ[õF`¯“qÊu7“ñ8+Pœ¨ ¼û·\ü
DZüZc¤7þËVlvÛMCZ7ø¾!/ºb».kV
Åoª%‹“†Úá[mÉ9ÚD㾋8©ýÛurç +”·[Ý1a9<
øW‹jÔŸ«`kÿòp·Ý÷³žd Í +H÷*Þç6aVP‘ïç|{ŒÇÚ»ØÙÐrBÝÂg”D‹0Q±îUì·¦°uÀUMߺß^7 ¿1CÄa—jÁ0½w3þõ?.(ZáÐ6++J¤ŒqÃ}Á0\&_N!|Y¥ÓàëGîKE¡1Oc†!-\ÚáÒ[ +_Ц^2ÈþH2ˆæZn³þ;*«'/£Ì¥ }!Š«äl…õ§ü¿¿ÝZ«ð¦6žoÈÈ„6ÆÆ1…Ðé”óþ3Ó§¬ÿ°.¿endstream endobj 1665 0 obj << /Type /Page /Contents 1666 0 R /Resources 1664 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1670 0 R ->> endobj -1667 0 obj << -/D [1665 0 R /XYZ 56.6929 794.5015 null] +/Parent 1644 0 R +/Annots [ 1668 0 R ] >> endobj 1668 0 obj << -/D [1665 0 R /XYZ 56.6929 350.3471 null] +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [278.4002 485.7209 280.3928 497.7806] +/Subtype/Link/A<</Type/Action/S/URI/URI()>> >> endobj -1669 0 obj << -/D [1665 0 R /XYZ 56.6929 338.392 null] +1667 0 obj << +/D [1665 0 R /XYZ 85.0394 794.5015 null] >> endobj 1664 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F48 1223 0 R >> +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R /F48 1228 0 R /F11 1442 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1673 0 obj << -/Length 3577 +1671 0 obj << +/Length 3076 /Filter /FlateDecode >> stream -xÚ¥]sÛ¸ñÝ¿BoGÏyø Hpú”Ë9©;Ó:îC{w4[œÐ¤"RvÜ_ß], -Ì -ŸŸ
aOdKy2µI>ñœÀk5vm÷ìṀ´ÙÛy*ÛÊ[êÃÃ]‚ó3ÀîüÌÚ<”ûÆG³¥„P€=H¦Òo›ø¦ÙÉ,ÉϾav#¬3f籬Ù5Dâ¸Âð~lt#ÊB¨ó¬ -&ÌfY"s©§$¸+Ô!ÖL¢È|¬‚¡ÚM9W&«ëðX6M÷â@úqÙ¯ÅrùŒzüMùìF¼óíÍ›Wd,P%¥«©±±œDÑsÝ5¥ã†FÁ0iüró‰F !k×¥ÛÃÚ@Hñ`¼ŽÛ })'•ÍKùÚû=v5•a8cÚ¢©2ýìÔK3{Ù]êh2ÇûnØLÓ±§ïÁ¿A~PÉI !¼‚dëÊE«-øÓŸTäTC: ¸<¯Èc¬ÓŠ°Èº¬¡æúËE’s%ÏŸ°žkždE–MO^œ%гQCðDqå£:C{]2νøB©sR©ŠèæãÝõ»Xl_>âàLð¸8ÕCrA9g‹@”k DçÁŒ58XûíöÈ[kv@äTƒlâ&™ŒªMÙ1H0Çðuœ7k™d²Ó4g‰1 ˜ir÷¸"àv|/?/X¸—£}‘®OÆ¥yH[šð95PŸB½\è 5Gº°¾AÃñn.O3MAÉ]…HœrÆ(õÆéa¦ðvzzh ˆ³À¨w¯ö·»U›{+JË¡¤/R9sl6 lN.eêöÀ{„ƒ® -ŠÉÒOßðÁº ÚÍÚ«7f'[o™‡ß²}×ÓC`~vÒq‚<KÕ˦ï⃘]äy5…¡Ä -yc퀎Ò>vz"\Å„Cáv`5 -iMˆ@!toè×¶ ƒ»\'–‹ƒˆ˜îPâ›J””žì?Ù’ÁR„^6uµ!°Â^‹…ê~!eßíÀÉô稂]&,Ífªå;¥±ÐÅiqe9\ôœDtÛ"£¾ ,~éöÍš@W~imEgw6:uÛBƒG›[Âô°ßµn u›Ý4%»8ì“]@®Ýlí¬J—õÂ\ß@–Ú‡ÍÖÑn«]ÙoN¦]2…¢#äÙ´kŒu:í -X5Œ‡.î»ò¸9Š/J˜>|ÀZ8ÚÖ G2!`Ñz5ˆ§àç“/`:ø¶5^ÓÈ
ÕÆTŸ,\ -“X w6E†ß€a3{ø½½íÍ@«ËGlA
3D°11q«±m(^ÀgŸ…˜E1Êê} -ˆ°Ë(è¡vi?ñ‚ - +xÚÍZÝsÛ¸÷_¡><"ø" +™1-¹œXm™±–,˜ÏVç‰á|ºYÌD&Ýü›.‚¿t¯™I&Œ{)L°8ðRÈpÿŸ×h
P)‘Še¸{?¯£‰ÁèWWWÙ›W¯^f&®‚3@'¹$B°,M¥Ÿ7[•EµmÚäÕÓÁZý9ëüþ¾˜¦ü!ìêõsÈÅÇÙj7/"új‡É¯^-àï‡?ÿ_÷d\±f·X”ã\bIF·Mó_^ÉþÁ%`i+‚9)ãV©úÂ0€¦oêzUäôýý¶¬«æ +´\#È>žUÆúÆ@…·² v}Vð^äYžH³}q–eJÚÀóâ<QNL·ËLªR3¥
™NgyEÄmA×|>GÜyrK×͹›îªm¹.húC™œ¬È8ãZé°è¦šÏZ‰¸àˆšÎ=ÓqF½!þy±*¶Q‡ñµ`¢PFô—"ræVfDxD•²Ìê,ÈÈ©ŸÞ,BÞ¼Xä»Õ–nÊfä,Œ_.
ó«zì(‚"q‰c0Ö3{ÅÓ &áÝv™Tçõ:/«K1 vjí–épñ!~Ó\êÁê£ð͘UÅO¡×õÐ+[ôr‡Ô$ œHm#$..Æä:–YnK„7·x²þš¯ó§@7Å–«+¸þûwïß]¼½¦»Í¹pÓ¢¹‡¸T4AÁ⡼傮¨¨Ò›‡bÓ®æ¡*´`Òº½˜YÕ7—A*Ûî =…;8Çz +pÊò¡ +o˜ªfù¶Hê*)>ÂŽr•e +ªÓ:´\#Jö«%ÓNf Å
á,Yû„Môcîœq<2<ê +TG,ˆîšÈ¢ÊoW! +Ï–ÅìWÜ-0Kø³-Öõæ‰Ø¡Xø5.¤£|<´Ç”áÌ!‡.Êãò®ªƒ[@Ä4ÐßO^…]Ä`ô}±µÖûó¼âÍq<hÀ–2ö<ô¸Nà!rùÒ±X7[Ͷœ–-βÓË·\#ë +%ÁÔ÷tð_VöNÂó÷Ñøù]¤4ŠYë>³‹œ$Ò¦ÐL)¬gB¡B¬íÎ!¡»ØwuAr¿!–Ìé,6´m哹PKc8 ÃÐmA×½í(Å„è5¢Jê ~l»æ‡²xÑD¦Lp—ö +¬y}¢+½y1e-“F?ïøY¡mpcÉ
‚épÂ]7D¶è5 *¿Ã·›c«s¦œ6ƒÕCnTÐEÙlÿü}Þ4wÆ|-eR¥bOCÍ[½´èôÒ¼Õ‹žP ù~¹çRüÖ]‡ƒÄÔ‚˜€Çö +s ÝkSð¦â´Ãì\ôw$²Cq,ª†ôj8’Íæ„V-¼…òÉFG'·Ž‰7¡«äGÜMiÇRןänI;iØuŽ÷¢{qvhÜ4eÎe±*=Í”RvûÏ]²Ì¼lðasX¸XÆ¿³˜õà5E¦àЙƒH—Ÿôõ[Y(GEš
¿~ÿ¾YQ^ì=ªÍã +qÆPT÷”@ƒ~Íù™e”ÝD*ÊzxßþÔs_±éô´™Ì&%£#\Â*{ÀÕųþ¡h+ñsݤ¯ÿÿf4¾Vw.û¬”ørüÕUkdÍO9ùžPˆˆü½B?®@áŒo–Ç¡ý vDAÔ¨ñ:µ¾¬í¾(B±iÆ=c<éð—)úÄë5üˆÔUry:‹=~Ùo-ÕSâ+6I©æSá¯+´“§«…¡µF`uÊZ==¾bkqÎ7úkqpºL=“ðŸÅÖ '$5Ò¯ÛXÎ1“ +uÚV™„úÍfÏ$ð#¶ú„xÕSâëµ”Å/Fœ¶”ãLºÐ6†’ù÷ì„'ö”ùRë~±÷ÿ(‚ð³‚3ʘB~½á“gõS¨ØýŠS[¨þœ/”¤…2Ä)‰¿"Òñ‡lüðƒWøEcàê©þ_ì¶Aendstream endobj -1672 0 obj << +1670 0 obj << /Type /Page -/Contents 1673 0 R -/Resources 1671 0 R +/Contents 1671 0 R +/Resources 1669 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1670 0 R -/Annots [ 1675 0 R ] +/Parent 1675 0 R >> endobj -1675 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [182.6146 466.7905 231.8861 478.8501] -/Subtype /Link -/A << /S /GoTo /D (notify) >> +1672 0 obj << +/D [1670 0 R /XYZ 56.6929 794.5015 null] +>> endobj +466 0 obj << +/D [1670 0 R /XYZ 56.6929 636.8504 null] +>> endobj +1361 0 obj << +/D [1670 0 R /XYZ 56.6929 609.3387 null] +>> endobj +1673 0 obj << +/D [1670 0 R /XYZ 56.6929 172.736 null] >> endobj 1674 0 obj << -/D [1672 0 R /XYZ 85.0394 794.5015 null] +/D [1670 0 R /XYZ 56.6929 160.7808 null] >> endobj -1671 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F48 1223 0 R /F40 1146 0 R /F62 1347 0 R >> -/XObject << /Im2 1336 0 R >> +1669 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj 1678 0 obj << -/Length 3991 +/Length 3726 /Filter /FlateDecode >> stream -xÚ;]sã8ŽïùytW¹â‡$ê1ÛžÍÖNÏ\:S7U;û Øt¢jYòHr2Ù_ -Æ©ß6ì»Æy¬
.¶gå#rka©@Eš*O;Φ3…Š€óê±Ä9 òXö¨ª:Ó‹Ç7ùY7oUóÄ¢¯´L(ò\±lŽ×ØÐ´sÚ®E"a]車éB¡žN¢ -‘kð´‡9f„—E. ip[× C ¶”™,Ógk·)÷õ@SVýŒRH%…ÊÁ£Óh³¹{õR7*Òdr*v˜¹Ç¹¥YL„ïÛòaµ‚Ç%Eè¾?#÷܈ĤA&]³^ÆŸÓaøY&G:¬“Åësµz¦ïHs‘€õþƒ\lwô²%„¡åç3s‚ŠXs»–É~-éÓ—JZ!½! ɸ^$–%{Êx•"K‹©ƒüê\p†}{âS¬Æuåà$|΂:»§kjܽKÀ_Ž?˜ñ.'ã"E_ÁÞ£ÃÏ\ÈcŠ”Ñ àoÆœx¹ˆõ§£EUœs홬L—]ûë¼kXqËýöš£‰)`íå‰ÒéēݶÈDªµœNL›Î‹¸Ùb;ÂÎo¶…ZŽ7Û¬ÈqXj›,ÞÚ=
Ð8¯ÔÐòÚÏuÕ—^ëáåî·Ï÷Óî’»²UÞ×eG‚ñËíøÚv„F;GÆh¤„7–
‘\€.™©3©šMÛm˃ª…ç¼ÁÙPæs×µ/Õú°VÇÓY|Ê$|iN9
OÍu¦µ(’<DzúrŒ?£ÐÇ£ÎØ•ÒS£ÁûƒwK'äœhZÄz‡ŠÓѾ×áè¢[“|·X"þ{Œ{"#ô15F¦âˆw¤±Þ¡át´ËÎ&¬ýËÎf„uÁÙ¬9%ž8|0cÁ®/αf¦Ÿîð ™UÓù£PµëW]52—v3cˆE.eþ#SÌáѱùÁ›a:aô’ýüwX>÷{-r ™×jÖÖ;dœŽvQ×RŒ†ùŽ®±ÎëZÄòq•ƒ¤ªæu-)`ÏÕêòìkfú©®‘£uMæÿïèÚ1ǺÞÈ<¯k¹+'Œ^Òµ€ÿ˧ã~¯®é\X•¾³îë2NG»¬kIƒ÷xG×FXt-`áŒCçÊa¹¢Œ¬ì—ý®\¹Ó,¹€0¨—ɈX3tL”N‘ª$Â#! -<„‹Ð²ôÀpŸÛò›cˆ×_“²ez^kz]•]W•OüõazKï˜ÿ®”!†Ìq¼_Ãæ—$!™lf²T°Â`3F …ÍÓ0΃‰#Óõ\våjI1™¶™Hr;
Ɉâ -»]£°êãlI¦£öÎ;°€\¡6–¯
a(püA!õ`Ó×L{Cž,6m]·¯qô_n~º
ó®ç\Í'ÂÀµX5½ˆX¹(Šœrþÿõh©ØE`ËËEúú!ÚäH¾ -سLšÒž°¾Ýro_
û’Õ>ó^°(¸º|ÌϾ0¾ê°’äOô¢ß£±©BQ” -â°ÕîkÞ¾½q¼V½‹¦G§ƒdXXÇêßt¿?6{6ö#wm=MŸQ«$˜‚û³Üî¼Â«cƒP‹n;Ù-b³ì¿õÔÚЧÖowøé7z²^·AgæynûýúäIk‘Û"élÚV0EbÕnçN¨ -‘eztê‡d{µÅY¼,pÞSZð}Àc°Ô€™TÕr‘¤9å!ÓY’,dBÏmYÕ‘ôÆ
sGSZŠ4‰åmœÅÓgqÝ–e‘&ü‚²Îô˜rÅ@ÜEnøâ/YÜÀ?ÚíðmêXô -¶Tˆæ˜œ ,ˆäò´PSéÌ3ƒ%‡uaSä4|é/@¼KÅ3.W×(ˆ@Pýôi_†¹ïqýW»B7!½?}ãa¢†—¦¨QÅo¸g¬U€QÐÆðÕ
èAÉŒmâ>‚Q™:D0IÆXeÿæJhƒ•ùSJ# ‡
5}>¾èivuxÖ£L„³oÖ>¸Ž`ѽ!…ßÁ=tì\Y#vL\t°Í4š®—PgJgÔÁÕ•jéÆHG÷f#Åmk=Šáå
j$cpW|ótccßÇ~|NCí ,Kb»ç8:¥]¡ô¡žñ+½x©Üë(ÂéÀÍ -yï£õhÉ_ñ˜:öpëy¾°§=:HÜãöÇ4íÜŸÔòŒãˆÍÛˆºÙŒ½·¿kb½ûÖ*E ø9¾ -`zbä²ß½–1A 1½q]WÖT©ÓŠjÎØKÚÐÚ–§¹¾xãN{74¢Ïïf4‰“J¼<äþKÅ»JÃ÷Šü(aãÄFÈüñF,‚¿””/¾VÍÊa“Sñ^TÉÏ©, -¾0¥ØL)fw§NUK%l¡²Ë^UŸóªËøý„ßg
¦˜ðæn$Þ«ÃR%(+¦øv–¾à™IŽ<l,S„¤ßµ´XμŠÇ$ÓèK_Ì„ûÛÏ¿~½ý$.‹Â‡Ï!1³l‡iÁ;ãœ3kÞ&ɬÖýLO -…͉ìya”ýIÑ—'ˆìîÖ[mwäòb¢¹?{˜$¼Åv¶ðëo¶(ˆ÷/–~ÇXç‹¿‹r‹aõ¼Ü–»[/1«Á»t§wM1pÖ6½LGÄš!dz=4RÁ)%³—M!LH“ô;.›æ£´“B¿5P*ŒÏ»_^󉀣Œ“9„© ñ„Þv‚>BÂ{}()åqþ -Þ.(y6Œ£x„Ù=Ô[M¹XTtœ‰æƒŽ,K¦¾nIŠ·Þ¯Ha‹h•¯m÷ÐIÝ)=Çž’ß\׸:nEØ\iLc¥ÏO±?Ötˆ‚OΘˆ 6Ý~Îv‰côÈ >»i¨„ⓈB²ñ®Ÿ¯ãîèìšN8 -Þù|Ç_ðq
AÛÉ¢YO°Õ·+`曯†g:”SµÏû¼^ù½€N^òŸ1™$^Šýÿ–àðCÖe:‡ÀX„‰ò?³P§nkú™š!ýÿ +xÚZÝsã¶÷_á·È3' LŸ.ßÕž¯ñ9ÓI“<ÐeqŽ"‘:û×w@¤DÉÉ´ãñÀûõÛ%Å5‡?qm4ãÊ&×™M˜æB_ë+~ýc®„§™¢ùêûÇ«¿¼WÙµe6•éõãr°–aÜqý¸øeöîooÿùxûp3—šÏRv3×)Ÿ}wÿõXúy÷éþý݇ŸÞÞdÉìñîÓ=u?ܾ¿}¸½w{3F˜/ý +g&¼¿ûÇ-µ><¼ýøñíÃÍo¿º}ŒgžWp…ùýê—ßøõŽý÷+Δ5úzœ kåõú*ÑŠéD©ÐS_}¾ú1.8uS§îO +ˤµÙõ\%̤°Æ€ê„Z!µQpÛÚ²TIo[ÊÁmí$½ÎTIânû¾íK:¿Ê{j5ív×Ô¾ÿôx÷þgjo¶7ÂÌڢ캪y¦¾ªsüä|‰D˲èËõ<½à3bÀŒL4KlšÁ E•×»§2--3Yf<;‘g\ƒâdÎdD2žh>¤¢ûSÚ¨pÇeþ¥œW¿ïÊíËñÞB&RÒÅÍ#ÕÄî#é$Š -Æ»ß5p…Fõ7É̼_›€´ÜÍÃX»é«¶¡Ñ²ÉŸjwï0ÐUë]÷$*xîW%QµO][—NîÐýÃýgjÐ!Eÿ²ñ£w?þ¶¨²ÙÏ7BÀˆ
æ·*¨˜äN+˜ÕZ:æ›òk¹%X´¥×“Ázî90Ù6ge›¦–e™’—e;¤:/ÛHåd[öÅjþ\ïÊSÑr˜ššË{Gª‰ÍG¢UoxÜý‘$˜šƒÓlû¼ŒàÂUªH Û_<´@œµ$f¸“«2*õæ28à<å|öR851“2¥Ñ¹9E¾ëœÁ¤1ÀUWnI–ØÙÒoÞ÷åzÓAèt;’J@73ÊŽu‚x‘ÖÌœ/)»vçŨ·hÝΪ§ßEµh¾óíUþÕOٯʆZEÛtýöÆÌv…×zÎ +Æûôi¶%g‰Œv‡"œØÞB,ÍB,Ý.©¸™#œS—%™‰w5m \¿¶ž¤‚øVæ‹óF ,Þ|)
©.e rro»~Þõ€Óº¾*N232ir™H5ÁÁØ(Ai–Yp2ºCttPz<†Á_ ¿”寻]AQ~gpDËvë§~%ðM<ì8%E`,†ã— +˜ÚhYÛ¼ ‹ +NÎ7D½?[÷†žw]9U8€ +œH¨l¶íWÀФ°§VV2Iú:௞D&L¥ /ÛÛ€ê‚Å*gsUSóz¾õYÆ©wÍ€CÄ—YˆT<ŒƒoÊbÀwˉ˳€3MúB¹„r¡³tÆ Cngбm(Fèt”WuDâ}¬xVX¡ªkšÑ6õõA&GÓlèHË廹‡é€ñ¬=ªRô«€8®ðžr0%ÆÉ"¦”,*’ÅŽúý•‹ab‹º©ýû®:d@ò+×¼dÏÎÆÐÓÔ峫8ÕWÌ +Ÿ]†Ô£»‚©‚MÙä!]ç/1¼PÉîk¬ñ•!'Ù.±Ê×ÁR—G^Þϼš¢ŒG‚=(®“ÿCž¡2Î4W¯„¹!Õy³‹TÎìàDßyá²ÆÓ'˜²R_f RMp0:lš2•)3fÁKÌjxЦaÓ« «òCÞÕCˉÓuxÌëÚ°I?ñ:*Y 7Їꉎ×@”ïîß~¼%cÌ(‘˜A
uìÔà¤"}ZªäQ·Ó(è&‚*4B€°f‘û5œ
DX£àuüÍ>m”×ûü¥kl+J½p¤l–¯#uG»ŽtT¸q…¢ˆŸÚ~5†`ëÀ¶/»@’-#i,Ô,^àf«ÂG«
øÌçÏ)²HYª¬}E‘T9P‘uõ˜7ë¯,Z]Þ7RMl<6ÖŒ¥6MÇ;O
ÁÄ +]4¸}¾¦ÆÃP.~>œ0!—“u‘¯Ï¡ž‰¼%LœTç‡Ùš7§Õ¹@õ +§«y +ÃÕ‰·"XI¥MÔ‘csù[á0¹RI()&Ñ`ûPZL°nÛôúÇ’¢„b4õó§·Ôøè\kº õ"¨7¢“ÆÏw‡‡_W7<l×ÑC<üÑN§ +CÌ +G°»½žHŸ1aW”tº(¾ì•ÉÏ„op
›—ß6uUTý—IÆŒäÙŸà2ð&#¿J¾'tŒå¥‹Á#ðR{à¤Mi‚æ‰RØ]¦3êQåœ@TÕI6ÈŽÑMßRb” czÞzÄÁñš\´ŒhX“oöê…EýLÈ ^Ö#¢É”³TêdgΨq1Òe8(Àˆ±—D§’~]Ù1š±ÇZ80m\XBÄô›¸€2ß4ÓJN°æäR^,þ*wدªbEÍ«,®…ïºð ûvN¦»Ä
$ìŠñ$㸪£siìùëJ3ô1‹è¶eJu˜¼owõ‚š>ý2Æ][¹Ä/rzgl [Âp¿Û6~ +U˜ý°am/¬Í¬ò£•ß0¾}„±®”ÚÅÅÖÓ#C*¶y·:»D†…(þJItHuvEªƒÎûvÞµùiA_æssyûH5±ÿ¸l˜@2b`Òz
\—Á:ú6|¯%¹ñŸo@£X•ÅlZ¡q0¾Vë¨ÃAdnÙÃïÃCWö4;ÆTDèb"6\Ld~¶ûÞ„â¾K‡ø,_¦ª_£ ï'DA•‡ýtŽ,0pzyȤç>.cãìÿôp÷áîc4=ç~ñªoÖí6›–Ô×oi¿¢m° HÙ—TÁtã²OÊTJ‰’J=ƒ*›aJ¶vï:°ÛǸPðÓ³Ïíº‚’Šv¶j÷¥OÕ}ON3QÓ±K×øòÊÇxt';lú»F¸E¯±xU- +Ó!mŒÔÎ&ð“4´‰óþ‰ endobj 1677 0 obj << /Type /Page /Contents 1678 0 R /Resources 1676 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1670 0 R -/Annots [ 1680 0 R 1681 0 R 1682 0 R 1683 0 R 1684 0 R ] +/Parent 1675 0 R +/Annots [ 1680 0 R ] >> endobj 1680 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.4479 674.6404 244.1386 684.0698] +/Rect [182.6146 300.8791 231.8861 312.9387] +/Subtype /Link +/A << /S /GoTo /D (notify) >> +>> endobj +1679 0 obj << +/D [1677 0 R /XYZ 85.0394 794.5015 null] +>> endobj +1676 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F48 1228 0 R /F39 1151 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1683 0 obj << +/Length 3742 +/Filter /FlateDecode +>> +stream +xÚ]sã¶ñÝ¿Bo¥gŽñA|tîìÔž¯µi:Ihв9G‘ŠHYq}w± +o¿Ü]†"Ž‚›Û^Sí‡û«ÏŸ¯î/Cnb|üûÕ¿¯ïiH»9¾¿½ûD=)'&½¿¾¹¾¿¾ûx}ùëã?.®ûµ×Ë#‰ùíâç_£Å–ý‹ˆÉÔÄ‹=4"ÆÓT,Ö*–,VRúžêâáâßý„ƒQûé,ÿxÄ„Ôb†Bh8‹Ó4^$qÊ´Ò20«aI2ŠÕ%7ÁªÈ;lë YQ^•Eíú~Û—<Ø–Eü’‘>fùKY?ä:{£JÛ•UåfÉóÝ–z³Ö•5
ÆA÷RÐ@[l_ø8þ7÷MYwŶÎ*j5›b›ueSÀv´»ü7¸rÎÒ8´´–vëîËãíÍ©ž-—[Ä[´n°jš¯»]‚‡¢ppUÛàœÀB>`!ך¥F(@…VE—¿„Ïð…`‡ìV†)n¸Ížš×‚Mä…³„s½H8Ì+sb (BÑöò9ýðPˆv»Ê…ŒLؽm +~Œó„E\Ëóè{¨üÃõr¼O=&à¡è:+"2J`ËÖÕw•Ì Kt;޽íWEú
Ø[Ià ól×KAâé%É!´e[ÔKªÝ=PIò7¶\¶ôiV5žè}Ù½Œ&N‚‡/W6þÖ +aÈ…f\%éXWÍ–$«.žAx_½œÕí¾Øzñ{|qÝËb•íªŽe;Ã+JœðÔ‹WÝÌðÊã'‰ðy{ ÁŒ0ú[¬•4Öøšyk¡Œ0éøô\ô]s¹ªÿb<Uè©uÄ™ ê©ë9V-a kb¡!1è¦]ëÝ€±VÜr#b±ìU÷Ëe¨yðÿE01ãléBó˜)¢^ü¶à,Ri* hP·k=ðÀv|w»‹O
¬h1\”›8Îl¥Çª$ÁB+¹ÐB€AÆÙE5(‰ Þ.E®Q®7U±],]GM¥sfPK'[¯tÊ„IÍbÈÜ?·_6B§àóƒ«úsÒŠ”ƒŠ$À0$<9oãD³(æéyëØC!GÁd„å2Ü4M5±‘aI”Ä‹á´SÛ衦Øe:ÒDØP\èý£5‡¨âÍýY¯îÔ÷Ô6UÑ͹`›ŠµéÛIð’UûìõõªÉ³®pMðäÛ7ªÞ~r}+kÄšµû€ +dÍI¯«˜ÉHèwöe +ö/eþBß¹ Xîà<°ÞP6dM +–äI¶{IŸÎ +n·6„8Äûý"¶„nÞéÀª¤Œ
ä$¸Ùˆ7”‡G)S2±‘·ÏÎß‹‡‡ÌX—ɼ烯0œM¢s¡$ÈØ›!‚‰•ë¡Þ¡c:ÛlLè¶J8¬÷$C¨Ó¦½‡ê]îïàkާîÅÜœG즈GÞ6ÕéI>FLÎV&iïl±Þ÷v¶©`’NôñDÁ[³£ ê +5Ô¬ôC¹,ÛìÉJ=4nº¹gTl²-ˆò®Ê¶4akØtl&žŒ<Gʨ8‡–›Ö)"Ç‘“²†cÇ:;ˆš/çÎĹun¶Ík¹<ìÕ±‚:£¼M…/õDáЬbA§ãLnøŒfyðp?#ÐdzÎè•`ÜS#Áúƒu‹GäL$‡z‡Šélßjp¤6,VÑ7³¥‡¢É¼Æ(&'8@ñWz¨wh˜ÎvÞØÈõR¾clPgŒ‡šâqò³½>‹½‡šA?öð NŸ#ü½ +oAŒ$¦ÂØ*Ë˪Ä3-µ«&[Ò
Ì`ou “NñX£#”Cm7I¡âǻ۟¹oph[/YèѽÐþÀB(CPP빨ñ–†dÁå. ;såÝ#•viP~úò@•µ½R*ì“ n¸!¤¨|j0+5G%ÔNí?O(Ùùû_Ïì?ìªéS[ÎÒ¯ç;·„øIÌàØ•þA)¯d(…Ñ:\.B2påGLJºØWeís†Y¿½Ç¹Å</6°Óü•ÆòÈÍe7ËçšnMŠåi[ +‡£Óô[:€:cK=”½Œ[.K$)«ÂÕ¶Y‡Ù®{ùÐ_ކrlj™1¸¥DšóöP3$ŽO2–ù|L£O¥Êñ¯¥FÞÔdL¤ÒeYRL½d¯¥=1âG+*Qãl kl¶hðò‰F°(ÆHo¸ëÞ+YŸ¢ÆwUÖà +\Ó‡£‘¡<Ø•0ÚoòQ¤j;{ãA76‰
ý.mOÅœ`XVQš;¥$5.7j»|>Ý/< „RóæHUìhŸj7ξAßð{ã“üi`-ø/Çä¿ ¯mÖn´-»]æÄ>³1M]vùøÃ®†`¾Üb&ÉÞ&Hzî +q#g´ +¼›Ý^k³ÿ€ªIŸhÌwÛ–>˜d)œœØø±â°{å‡(iÛÅàQÅ€‡ÓeϧH˜´Ž“£pø >ÃókÕ<ÞÂì³mM±4Ö`ÿ²çbV˜ÎqCf¸ö'‚ùã&DºâÔK‚„qÝÛÇ,‡h’xÀ•U^
¡B,SÂÅÖƒ‘¶ÎÕ~:RLå™tóÄ“g3…—®3'ᨠ+ï<Uö¸˜&ÜËéâÿëpendstream +endobj +1682 0 obj << +/Type /Page +/Contents 1683 0 R +/Resources 1681 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1675 0 R +/Annots [ 1685 0 R 1686 0 R 1687 0 R 1688 0 R 1689 0 R ] +>> endobj +1685 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.4479 508.2615 244.1386 517.691] /Subtype /Link /A << /S /GoTo /D (statsfile) >> >> endobj -1681 0 obj << +1686 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [265.4578 630.102 326.6578 642.1616] +/Rect [265.4578 462.9269 326.6578 474.9865] /Subtype /Link /A << /S /GoTo /D (server_statement_definition_and_usage) >> >> endobj -1682 0 obj << +1687 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.5441 630.102 416.2908 642.1616] +/Rect [367.5441 462.9269 416.2908 474.9865] /Subtype /Link /A << /S /GoTo /D (incremental_zone_transfers) >> >> endobj -1683 0 obj << +1688 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [280.9692 600.149 342.1692 612.2086] +/Rect [280.9692 432.1776 342.1692 444.2372] /Subtype /Link /A << /S /GoTo /D (server_statement_definition_and_usage) >> >> endobj -1684 0 obj << +1689 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [277.6219 570.1959 338.8219 582.2556] +/Rect [277.6219 401.4283 338.8219 413.4879] /Subtype /Link /A << /S /GoTo /D (server_statement_definition_and_usage) >> >> endobj -1679 0 obj << -/D [1677 0 R /XYZ 56.6929 794.5015 null] +1684 0 obj << +/D [1682 0 R /XYZ 56.6929 794.5015 null] >> endobj -1676 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F40 1146 0 R /F22 949 0 R /F48 1223 0 R /F14 952 0 R /F41 1203 0 R >> +1681 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F48 1228 0 R /F62 1352 0 R /F39 1151 0 R /F14 956 0 R /F41 1208 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1688 0 obj << -/Length 3671 +1693 0 obj << +/Length 3806 /Filter /FlateDecode >> stream -xÚMwã6îž_‘Û:ïÕZñC<¦ÓL›¾Ýiw&}{h{m:ÖŽ,¥–œ4ýõ ¾L;í&ƒ$D -
ìˆ;ÊdQªŠ©‹=,Jhc®—=ÞRˆÈ$‰$ôæ…v²mªgÛÜ9Æzr¬6«Êî©£¬;{¨‹ªz½B,€D%b”¥aÍv>UóÔ•Mͳpߦl×ÍñP<ÚMt¢Cq' Þ™H£<‹EØfi9Æ¢-!›ñXÈú/q,+à9\ð·lê%lÍŒ‘ä‘NUz™+@ÉDùRiÍ”Ò4©ä %€©§i»žâ4¥€Ý æËÎ2*›:@†¾ñó›ýSY¡ºÊnGP;æ”Dç#êdf"mRͺ´\ÚW[nKÔ¿ -w(ÎÀž:êx,ŸËú‘`–MÝ
:á÷›Ÿg]•¶îxôXWÎÑà@Ndgy¡]ñl dVÛ5râñxFâu²þ½3_Û9kƒM™l!û»„47Ѹ ,]ìô´!\¬À;‹šê¾´k+½›HEJnG7v[«®_ìT•Ð`'©wjM@µ<é„2ZâÔGÊ<Ê…ð¨ÿÄi&I$…ÔSA]Ù¾x% ¨Ú† ûÀöÉ®K\Ì©£sžÚ[Yžyy.íKÈŽt”Ê,a¤¶+:»g-A/Ë+7pNÊõ¾—ǪYUhmEqœf_,˜,‰Œ -ÞËTº 5'Õ>€ƒÑ}ñÙ¶D1S`÷©ÛWTnÉýóT+ëâèÙZ½îB'‡›]³n*êñ‹á4~³é¬»©ò%8ÉáQÜeVÈ$]ìízWÔeëÂÚüšúÁ:jÛ[Ò¨táÉÄè>PokÀ#ÏGJ›x}tç¿%ˆ
O
ÿÒ™hÉ3³7ÌDÀû-nCv³-Y•ÔLÁë´j<Ä€LØ€dé -c–ÛC³_nÀ!@ck¶^ST2)ÀJÒ§ËäôXz&!-¤c9¥çß¼'ó„ÜD¹‘êbˆ,äìÊÇâl&˜©$ï-;«¦ptÔSCºáÚ¨(Φ±Ë7#¤}Ñv~Š?@?hp±ßùRìv.ؘ4C 8u:.tánB51•Žõ£¥‘‚ˆ<häA¯#Ï#o¨\2Œ#ãÉ1¬Á>ÆB/ -±4-…ÉSQÑ8s(®(°õµ6f‹†èäAt,©x+…¯Üçžt3&k~ÊhóØçŒŽ†˜œÜ'L·Z+Èù¸Ÿz[ÛQ›Äaƒ»)Q•ñPÈμÃ(<gqAQ5L¢kMKûŠŠNœÿÖRçš#V ©á÷áöˆµRDg—5Ì -ðõ -´iÚÔ—rÓ¹úµ¢”~I9°¿?YÊMcMj=oÅÕâÝ?ñ5÷ìí¾9¼Ád{Ü3Yu´w0NÆKÂ9ǘ`i]‰ºßÛ$œdåö¬áIW{z! 7<lPEZ. -úñ;ÌeÖ„J¥˜vÑɧS¹q¡V¶pÉ\Gƒ£$Ø$˜³[¶v™ÔÉÙí@’ -%"8§Ð] -~
O`ˆ'pån gÅ•âÄpd<
V%åS£‡X¬‡SnãÅkzöî+ÊÕzÌ~µ>xø”'ßì<dëìþ©9‡²EÀÄÖÎR¶@6þdÇ䎳 -¿¯þÊa.k.ÖqQt<ÌŒýͰav6›<RC=ˆK„¢´õÚ>um`Á$=ñ…O¶‹Ó‰•Š”IÓÑ¡¨_Að ûÂ"’Á -½Œ•Ç¢,À—u -èêÊ|í{jË&’"×——ï±ëOXM4¾ôȦÜÕ´ä£Ê0Àíñ bŽáÛØ[ùÖÞÆ‘1*n
uœ.~ò·¬¹Îro©³MLÖĨ¿nfYnÞÖÂ<–þÊoewËçTt‚Øò/“L·G¡-’Ÿ‘2Rjêfa‚®’”#j|‰:kwÞ‡ FgõY¤xõe}c×çk¤ÏÏEUn -—Ìu6‚¹LB aÊ.KÔcB„×i¥²^§QåÚg®‡Ó(U™ùRµN2±øÐt¡ÛpÀ²Ì'&?›9Í¢DebÂ"µ¯·vܵb&¹0‘…Mo4¢¥4ñØgŠ[XSë¯`O=>.]Èô¿xdŹþ¿h0 -Q´zCƒGX4Øc¶‡†%äãå`Z Ä牺LF cZ 4QƒeO¹uЕ´#É®@Ï. ‰o+a”®]m³Qoá«UbôN„ž4”)ZØùUÀŸy/‚ÚòÉv]à&jüÂ#¨Äߪìrav¢»•uþ;“@’fæ‹b’çcUÛ>¿ò_’ãSÕ?Jéºbý¹=ÿ¸.W¾õ¶n@ºð´Ž‘:¼!|Å p®¦Å‰¾¸ltºîd7ÑãåÊþ„/n¶È»ŽQÿø²V"‰ú±ˆÉu:3dš½ -öuÅ‹Œ1iq(Ä,6oïšÊc=<Û9t.rÄGYÛkÆW„}š9–ãü¡ LœH¯Nmµ
,€ üs=°DųLƒß%}Õ¿ªgo†¼À’±ÀÆO7-Dç{_B²Ð~.…µC‰exjcaç:©Àñ›«Þ’üô™ÌDŸYWUá[â€öŽ—øËO–‡÷Ü:%ÈeXA %0˜‰BÂS5§¼Û|Júæ<Ø`endstream +xÚ¥Ërã6òî¯ðm媈K +Bã…1R]}¹úϰàd”¦®ñ/4‰&:^a Ö*ÚAt‡©mˆEÖe7[g®šæ©?¶Ð ÓÍCß14«Ú†[ç½y1Ëú‘Áý‘ÝÞÊŒº=Û2˜™ts¿/[*eõ¾í³ªzaà0±°myºQÉÆB„ÝgÏes’ɵ[¹Gß*å¥a¨éYßí›SÙe]ùl·M«ãEµöôÔPNÀës—6ÆFÞœžwµm[6»%V–ï‘2l3×°U +:P%ý¶·Þ@aâÜRøñO«`ƒS•ÙÔÙÁ2` ´ Àê¦Þ +Uý©…Cщ +›3Þ#`Á{2KSƒ';Ä?úÑÜ"”mÉÔä šªÇ›™‘”ƒ¡ô.ÜŸïù!xf°úž¯ýxÝÝÒvŠÅÞJ¸ûsȺ|¿=dÇ£-¶ 1' .aA†ö}/J‚ôm:¬B¦‚¦ýЋ¢ÈÌ)¹Û±LÉ”f/ ý@ú… [:áØKN%P“b’kHØÀ÷îÓs çD@Š€HPàØ|/-Dn‰ØãzaØú©*ÛŽäo«´†ÈÁ„sekç„ÜwZn…UJZCÑ‚ñ"‰#«îqÔ•æè¤
Ζ °RHðŠ>gM<7§'FgqoúZ02þ<ÙSm+§¸%c§d~I9rš´µ½Q›| +¼î&fX¢¼º‘¢8G)…®Q>pÊYæÖ.ƒH·Ô(ÜcìX”mÞô§ìÔ+&5´gT¾mR§X¯›ÔŽŽ±ê80ÞfðÁó®fA‡ +QWMô6!Ö +%3+/ÀöÎH`ôÈ%h3‡cz€dÏ )œ`—lIâ”ç¸õ j:–Ù
œÀîÚh4-̸ŽS/H#gÈ·[[ãnÛ]‰ŒÚ²Å4F{iš…ÁߊØéÈK “‡Ó¥ÁÆ}ÙBC^0x-=«GÁ8ç8ddÜ S•5†™DHwƒè¼øù¬+ˆd'á»·Õq±›r$gŒ)±'Ö;
q :µ;ÈÒä¡oò£ÍÞK¤€Çò™M)´Z<73<H4Â÷»_'¯Jp?2Ú×û/èÀˆìl ¢e”‰‘<Y‘Ï:ÛÿŽÔ×vÞš
{êûr`ºà/A¸‹@G¶³ +–(W£™ã¤ì4˜‰HEl&p´°»¬¯ºa³KI4* +¤h¬Ïº‡¦¼Î«¾°b†BÅÓxn‡€_nßÃe'ñÃŽ¬ŠçÓiäâlÎ(d†Æ;øã–Sî1¥B¼!‚Na+Kv&–z,dÃ*|4ÎZ;·ƒŽwlqùã±*—q$k—f¦tLÆhå¡èT,2»±ð5+ˆ¬°„¿"ŸqªŒ\æÃÉfOۢ˯i„òâ!Ë×\T?e„ߨºà7~cgà7¤úþd )D"“AíRV`_™~&›wmûÇGÛvõnå…Z/|79¯HÉ]J‡jà`ô=Ùv†¨LSéB`LQ¹có/K=XÎûç{
²@ 7»&o*)QÈŽc8s +àNÞ%!Ä9t…o¦ZÑæ`ó}V—-…µ!ø5Ã-'s“4}ËmÙ€(52„µ5ì°Ð†NÉÿ[n‰¢Áॢ
3IEKYY¬dK_k¸Ì5=™ÔHI«ô¤œ +m‰õ õи–x³é!Ò„’Oê`TèÀe€Ð@Ð!¾áz¢t@´Ó;€ +=+ÄKR6Of—âƒ+Ì–¹´«TN¶°uéü«ã´¿Æi_‰±d'¥s ÎL““ ‰È·…@EÓ Ñ íXIt`¶sÅ´˜¨–Šð\ɲuµ©æ@¬ˆ_ÌQËC⤋ïxÎà±VI'Y¹…I˜Ë×-ޤ$C,v2Ђ¡¡ãÈÙé4.u€tOðE}P[®)]Sšáô-
]¼Ž¢Í$®fp#Á“Ð(ßÛüiQî[–UËñ…+%jð›€zI½šúMø¸C+ Ê¥¾Å1Îp)hUoWWÇÂjš¾6ݽy,öMNp%¶NÊÒKÛ¹bû†GYõÔ¶NoFV¾z´å³»—™r¿šüƒÛðT¬ÞÎý'H¯§þ ZþÉ1×Û°ÐÙÙ“óËšª‚},~¾EË€tIÌ,šj_ψùex$˜§â)ÖøÍ›Á±V…s˜JHfÂd|í +é2„€s£(ÐòKUÃL4•Œ–G2`ò ?’P"Ï!U¨(
Æ‘éâÐ L°Ð~BÍ[aÚDoJ0.'W{ä*›‹‡äÈDTLqúµ¸rXŸ8ÒÓ)éRí3éˆÆÑŽ}.AÝxHÈI\Ê€åÖ*ï+ÈöÎЖj›Ðgv¤›Q†ù.§"f‡’s¯£ÈšCäÉľ2W
„‘¨ºAÀ¶*pµ” $6þ£eà›ëƒÜqw‚myA +_3® +ö\Ρì:GSøÍ¹n¹<n³ƒìƒ"ÑòĬ]dréøB$È"Ažc"«>á[ªÊ…ìo8V€Þ媃 é‰ µÒmøû Ã\gÆ)®dŒmàâ¢ò2g4\r;”+)†“â!h†pf?€4m×.õ\ô0íN–}ydžýóh9+õùeÃÙ2)‡›ÍûO?Ë +µ@öÐЃ0´!Œlûƒµ²Oàÿh"ˆÀà &hZW¢ì: >¬Ü½ªxšªNgnЇ®Ek~ÑÃ
K5ä")&\ìǫ́*7dÅJã:œ¤¿®¹2Ó¶ôéíH’YWJD £³"»î½f7{çiË¿,¿ò°’ñä©HhHᡬÝK’›8®(ˆpÄʽ%¹G%ao:°p°pò <`»¿BIWÎ$›]k=›Sv*‡(T,'+ÈyKØtÊ^Èæî^ÝcÃ’×î‡2\]eÿÛ˜aá›ÓÄ3c%HŠƒi,Xíʆa©yèJž¢—ã™4Š&N¥rÁƒJŠì$WkóÚ7‹ãWÐU"¡%ÞAl`ZîTOUÒ>ïK²îi<y \¶ÈxzóÛÿjÆÆ^»Rn·(¹J
dœfÕZñ3I½X
7ô:¿µ—êÈmØœÖØ¼$ +ƒ¿cwèÅÆ¸ˆŽ,ø¼:…ù6ýÚiò²v·HJfœúÅåÀTN5І“j£ÌÛQôéõ(Ú!Ç`Ër;òm4Æ‹’$ysëérïYÐ$^ûj¶ùýP–~`i„Y)BÉ´^šžqäáZx€cåzt–‘XtТñGÞ`âܯš²xÓÊb;2|‘Þ°Ò¯ƒÅìÒ,!å1ÞùÌ4U€RõJ}2»‹¾îg+vÇ3*2ó|ª‡C:"e˜Ø½wŘ_<rCX;KS¥¬ÌÜ„þð@|v3G³
lÓýâÂüþEhòÈ[é‡ñâ5îŒqåÊãO +!D!á‘YR>ü<÷’ôÿÚßÌtendstream endobj -1687 0 obj << +1692 0 obj << /Type /Page -/Contents 1688 0 R -/Resources 1686 0 R +/Contents 1693 0 R +/Resources 1691 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1670 0 R +/Parent 1675 0 R >> endobj -1689 0 obj << -/D [1687 0 R /XYZ 85.0394 794.5015 null] +1694 0 obj << +/D [1692 0 R /XYZ 85.0394 794.5015 null] >> endobj -1686 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F48 1223 0 R >> +1691 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1692 0 obj << -/Length 3334 +1697 0 obj << +/Length 3567 /Filter /FlateDecode >> stream -xÚíZÝoÛ8Ï_‘G¨¹â—$âž²iÚÍî6í9¹»=ìîƒjˉPGÊZrÒì_3œ¡>lÙnÑ8\ÔÔpÄÎŒ(O#ø“§6±Sî4qFØHÚÓùÃItz}oO$óLÓ´ÏõýíÉwotrê„‹U|z»ì•Š(Måéíâ×I,”8ƒ¢ÉÅûë7Woÿ1;?KÌäöêýõÙTÙhòæêçKj½¿{w>;›ÊÔÊÉÅçn/gÔóß_]¿&Š£Ÿ=ƒÎ.ß\Î.¯/.Ï~¿ýñäò¶K¾2Ò8‘?N~ý=:]À´<‰„v©=}†‡HHçÔéɱZX£u ¬NnNþÞØëõ¯ŽÙÏØTXeb°¤*–zÜÊR$RSb¤P&R••³ràB+Ïïóù§i™=äõöŒ¥´Bx·?ìŽð–kDºêI— -æ©ô–øÛû¢>›jã&ÕcST%´amSç¢4QÖg2äu³.æ
÷ÜçÔ5¿ÏÖÙ¼É×D¯ó†èY¹ FýR6Ùgê–üR¾n²‚Å.ªjCY„´)Ñ2§SŠDƒSÎZBéCV“HO~‹"µòoÁˆý®âŽ××7Ô`õ«²|DšçÅ“Ÿ+P–žT=ÐÍeÞ<WëOÏ)ŽÉ‹|™mV
=<eë¢U`>¯üH‹¢¼ã±*?“(LÖ`Sgw0˜J¢IFÚd D'jò€¶p”D°•cÃô@lý×ZHåfû³*Q1âg¤Ù©ŽÔ¢•¦ -«µá!Š»²Z.…Z»ÎBÞÊ&"ÕàƒÁ߃"Á“ ìXMÒÉÆoCëÉÒ[È«ü.[í¾ªÞߨãÒ_žDž€‡àMÁ=ùš
=cßìÍ‘a™øÍ’¹KOR%Y(þP-ŠéØ®DgõãN~hH бj40É–oß2m¬À-¬vöø¸"×Ç¡÷¶‰fß„ê¹ôNhÁ1"uI¿ç¯¨ëþ…|.ÞýB*;¤ §rrÕW¶ª+~±SC³Æ«á>¨<0TðÚ*±A9lïY;™½¦£ÿ;'N --׈ƒ£ÏX‘$à‰J\ ¸uÒ.<6dØô^Q'nLØK€ÀVëú<™ƒßËü‹b‰=K†`É/£×Â_ˆ~n./HÞGØ
›†ÚapÚÚU'i<F?deX]Ð*;ÉÿØx/®bBWYh‚$At -}Í©:ºKL -!\dŽì’×]¸º]òðy[°s"µQzXp`<0Wd H -îàe49•F8£Ý°Â -T¶Á/ïÙfâ´y!jOãt´.ÖKk´ìyZ+ª. -qß—”v)L*¿À½§ÇB"ù¬¶êˆSíqðª«ÉOç¾ö´íUµÆÁÊo¹FzÖD˜Ä™¡WËË9aUÅ׿52Ú&ÁŠofÿáK¥¾X cW´!|ôMû”÷«[ÛmÙÄãž‚½rj DÊ…M _\Ÿ¿»¼áB½Ô1$=©¢|/”èÂX -‘h‘ÄJ]±T*‰1Ã:RûësíUËÕ-X½~:ˆªÃòÓˆüLé¡{0¥Mú5‚U”}HÅ)C*vR@ -Jt€é[K:„¼Ö@й‹«8”»nÂJ¬ˆ¼ƒ++·#öÿ6®4øZ}¬ZÖç:€«ÀÕä¹êï|¤O…Œ@߃â[®ùÃôZD)œþE«nâÉ#„”r˜dõ -êWÔÇA ‚tÓú †ùx2r@ö1E†! -¼–2„ ÍÒHúüJ -¿Ý[jå$-5ÒÃR{üÁ¢J#·ð7ºþNIJdËjlõ¥€–>ºúB4g¬~ëÀê.Ÿb=. ¤°ú©þ´˜@0»#´\#*±Œ¶t …ךWHkËù· œLÿ&9#zÅad6÷'6>’f$ÂéöäÆ[ -†ðiäU¢ºù‰–_°º9à”ZŸò—¡â‹œªLœÑ)ô·x¯m€™{ŸCöÝ‘Ç;¢ûj³ -7<ò6cÊ39jÌ -×Ô¢Ïù¾¼á‹þ¯èoÇð\€«Ýp?Yd]hu¡ àrŠíݯÁ‡påo /è²5`^6EïãñVIgàcF,ü·h‚’Ý´˜PS§Õ=á¨Å7M -¼V;âÄ¢VÓo¾½Û]m6ø]*Ý„©$&…AX)±Ùì‘P:V#ªÿˆc)¨endstream +xÚÅZÝsÛ6÷_áGy&BñMðÑMœž;'g»wiûÀH”‰Dº"ÇýëoðC‚¤xz3Ï„àb],~ûˆâœÃŸ87–Ù\æçY®™áœÏÖgüüú~:g™¦C®ïÏ~x¯²óœåVÚóûÅ`.Ǹsâü~þÛÄ2É.`>yûñæýõO¿Ü^^dzrýñæb*
Ÿ¼¿þçµ~º½üðáòöb*œ“·ÿ¸ütuK]6ÌñãõÍ;¢äô80éíÕû«Û«›·WÜÿ|vuße¸^Á.äϳßþàçsXöÏgœ©Ü™ógxáLä¹<_Ÿi£˜ÑJEÊêìîì_Ý„ƒ^?4e?m3R[°¤b™i#– <™æ,s¼72H9r¡‘çUÓ”³iYŸWåî’…äÌeb0$%¾ãJÈ—ùB挒c®HòT:9ywswwõ–ÚÍöé©Þ´ô²¬Pµõ©™æ`Vî'ªŠu9lC±Š³<´ As;ù¥Z•M$•AJ[ÓpíÃaÆä*)›„‘±\É(âMBWÃT–ŸRT1Ç¥\ŸËÇâkT,Âs¹Ï ñ¼ŽUÝâ”çS%%LM…`¹1ÒÏÕÛ +êíB +¡2sî¸WBÑ’-ØÅr1VäÒk€QUL¼rŸ4ˇªhšbz~,+êýZn–‹Âtô HìĤղßCìíý^’{U<³âóAßM\îʶõŠ!JÚG@¡U?… ŠÔT,È¡©»œt0sh©b’[•¾xÚ÷™³ÌºÓ•˜v:BõëvU•›P¥’ŠþIf|Z/ô^´m1ûÒDÉ +þ¹-7/«úaWpž1k\~\pdJí'—Ìjˆ¤#ÉwOåÀë×!yaƒI*'ˆš=Ю½y¬·«9uø¼Ž´¶Ø´å¼›%UI
ELÎÅéSŽë>\mÚÆçe‹i'eÓÖF˜
¹31ˆW¦+l=rAY¬ºi `ˆiH9à$Fíæœ%f +’ÒLÊ?·>ŒKK c$1ê¤t +‘Ç«?5¬–T8ª4Bá8+é~°ûn„‚4B(Õ’ygüÝ“Ì +ªõ¦¥NF‡ÆpÅDYíì‘nv¼jõfÙ>®I +ðràÈ&UKÿE@ãÕo>>¬Åß•x¸ŒÍó+Фâ€óݽ†®VâqL2+L>ÎÜdtük¶!¨ôÀ°¦>ì¾àæ:ß;î¾®#î¹z÷]Vmù +|*7`[*Ž×ãNu1'ýì‡^KÏâUo¨‹~>å„°?Bw-D àèG‰XäÕg8x¿ÝÁ†\Š g]ò¢aP%*1L|JÉð£¶f:" x/©I7b Š829; UT[«mI#öd$§(¿-›0” ðüŽ-Ý}ï±:GëÐ=Œ³d.—s¡?uÿ0uåËU‡_(LÞyxï€v1úüVùø
=h±E”_oÛi½è¦ÉÓ$Ò¶I˜ãBèáÝÿÔKô³î
ç¿Ê0ƒ eu®ƒU¸˜à•¦ä‰½Ãΰ~èŽËâçrU?µŸã‚aqÐêÂÅÀ(ÐÓŒâa›C'T¾®ŒELŒG"_W
+æ
õ…{dhÅò\w1ˆq%ž}ÝCÕ`<P endobj -1691 0 obj << +1696 0 obj << /Type /Page -/Contents 1692 0 R -/Resources 1690 0 R +/Contents 1697 0 R +/Resources 1695 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1670 0 R +/Parent 1675 0 R >> endobj -1693 0 obj << -/D [1691 0 R /XYZ 56.6929 794.5015 null] +1698 0 obj << +/D [1696 0 R /XYZ 56.6929 794.5015 null] >> endobj -1690 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1695 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1696 0 obj << -/Length 3440 +1701 0 obj << +/Length 3339 /Filter /FlateDecode >> stream -xÚ¥ks£Fò»…¾\µ˜»OήwÏÙÄÙ³ºÊëFÈ¢Œ@ÈZå×_÷tϲ“ºÚòÒôôôôÌô…³ -i0kaC2ž—K|FónU³/¶—a2/ÿËýg¦Ìꡲãx<ߵł ®¡á¶|ª³b&EÝ•ýI6u'.=X•V’ÖÎ_—¬1`ЬàÌagaogRI_$aç{ZÔm[ä -€+ïOžØ?ÏÍôÂÐOµ†Aެ״M¸êª4, -جÔ$Ä
H˜œ°„Óó¶èh6dÄQý}„"ðu¤5ïãP´2‡±ŸJ‘0Í;`—„x.ö`‘ûz×v´àcAό׊Ìuû†Çò®|á™ÏÅE]6[Š—b{ Ѭzj¶e·ZÓ-¹ñ̉x!è¡J9<K¢iáêQAd¢æeMO£|¸½ÿ|ý3ÁwwpDÿ+Œ’99Ê ¹N>ß&ÀÜÓ`è;´)¶LcÅe‹C1¿Y: Ü©¡`eypwÜÛIoó¨
æ|دÊ|E ]>BÄ÷ëûöO– n±.ºwãÙVuû²ªzd=½nˆíb$J·Ê˜koËcø÷Å -Ü–Ó>™‰¼>¹”pÂ';ªžùÁ”É{nŸ›º:Œ¥SáË$zCG5!ÇÀ&ÒØ—@2„Œ’Üy}<Yt` :§ÎXéX°yí6‹¬+¼|Uäϸ• {L¤ -ò„¬ï4›nEË»7’LÙ}$ýD$É_0ûøhöB¦ss²f<jtxeýDÖ(UêË“q‹XÏtÀÊ£â#?p#G‚}iD5{o -)‚4â#eH!8'!èÿ&ëÊDz*»Ãe†&O‹]þ:óì$J‡Æþ¶ÊC¶ªÂ(z=P`”‰Óùs¡ÀbC•¾¡=ªW4ÂRõ}F‘ï¶…×5^Y<–D¡/„´WEqT²ô·-(ß‚‘,WUÕìÑêÓynåPgë2'ë@Fo`¸Ûfu[rÞxÒ fM£f6a´³àÉ;´#@‰á¦ô¯k!“þ -ëf^¡5`W%™ÄóGTì$Ý¨ŠŽt°F"š%
s.÷ré˜ 'ç°h1ù‚<,±Du»» ÷I“püI’ü=/‹ËPŽsŃ"6S -øI䲿¢Ðp¢ -ØsÚO…+>eÉrÁÞÉR\qÑRH—f -ïC¨ˆw - -6:ÊÈ+By›"L#êqÆDÆxà™¹YÍ–#Ʀ©dm]¦ìóè›T¤Rcí7Q,j^|Ý€i9•½‘âÚŒ$"SïélÍxZätuÖÙ -°äœ ã‚p×9wt¬F±Ž.|ã[&ä¶Á+Ã^KDd\€Éè•ý% V¨oˆz,LãPySÿâiçJS7uÄDž@ò¦Rë3²Ä -ÄÓåþ¦ÜAøqX@Ž àJ—ÜlË—Ìî…û€>æá6ÿ„NáH¯rÔèò±Âù*¥f…M»ñŒý1¸ùÑ@¸h¶½ ¯Ør³øä -OVÙˤ'^°»Ê‘NÄlASZeÓ@ÜÔ¸UÓñ’àÝMy‹ûÒ$énJ<¯šæ™ ݆hÌ1•&ç,¯’Õ‡}Fˆg¥k`O™€ªÉ!EãÔ7A¦M=ÕIèVMË®ÓÙùž_ak¿¹åÉ.ù -rµZ
ÊÈ‹¦“›Ã²‡ÄtïØÛ°ã‰F‡Ïæú\f¤‚7ª¿>Õù\ßQá9‘Ñ.Nª>ú:çðêÂŽjbåѯµ”Ã¥©Í!!p}ö4œ;]0`ÖE†ý 客ÒR[¢çxÈ +xÚ]sã¶ñÝ¿Bo•g"– +oùO»mu³h›bÑuÕøÔBÇQ–‹lÖ_új‚Ùã@heF‰!ÿ~´5\½óí¹Èæ¶Ûmëò\Ìë»î±Ù–]Ñ•ÏQñ¼¶áÍOkŸšºµ-¡º†o?^âÝ–4Ï[Û1Ù#/xw÷aš5!xD¸àRPQ.
žVD¹ÖÄ;m½lÜsE +t<…eLYÓ“Àé@¯]veã‰z‚dp¡ôV!‡~îÊ®‹]ÕñÊ-27´4I$Q!bÇãÁz¢,’(OTÆ4ÑugJó4Jóܼ®x}ªÓЍ&o±,–p±ú™ŒMg¯³¨&ø9KÀ½1d„ÔOäÉY(QëD®æáŽš†o}M#2”Ž0¹Ó7Ä£¾ç´
'~tÚæ0<»'k™’5⽬‚TE"‚’—œT€<JEmÝLI_D +wÜ=ŠÎ.@äËO‹Oí§‚OÁSˆô
ÕƒÓš82¹ñ@‚WŠ%¤”vò@„“ÁØpô¹¨vŒ7á.5“Ê"£Ó7ìÎD¹’†i¾‚å´ž»{`üÖßß~OÀ}Éû—Ì®=%è“=_ÙÎn7emIe¤4cb9tZÍ~äÜ:Î=6»Š½Ö=îZïÇöä©z°µÝ‚a8ñöæöêCKð¼!y¹àÝvd8ìØšÚ:ƒ; + G:Õú/øë¬ç¯3§9GÿÌ7»¶£
ï-=Þ·²…êö
-)¡Àqï¥4yMÐV4ZT˜%>nh„¶|Z‚A„’bÙDBÚ‚èËÊŠ™i +¸ÁÇwÃù”çˆ9Æw7Ãé)ŽóŽ †²A7b‚IŽ«†¸0Åu7^t£ÝÙ“D‘|Â@$e2÷IB½ì%ïe`øB[äœ!@Ì{MrÄqžÀäªËM öWeP”õ +ý¢\Mß§¡dl"K»ßu#wRäpq.ÛNC]#i¯šŸŽ¤Ô,Ε8Iaæâó”€zšÜG®¿@1êG±‘é0~AW!•‘Îý%U¥» «õÄb"‰L’¤_dö=Nì«^.-ºpÍ/í\A†(Sùv†({f~201ÃÁig/$°go8ûÕ+ÎÞS!‡Ýö°è–O‹]omû8Õ®S +üñ«ª Æí:%ôƒ»óÂKP—C>ü®9ùxäAªŒ|U \)Éœ˜ß½û‰ +)…4â=eH‚›À8'#èÿ£÷e…-µP7†üÕ5ïTšý×Û*Ùj"ÒôÿÑGSie(ÎW5¢OuZ#Ußg`‘m]³(k‚ÇœÈXDª’×Y T¼ô-ã4’ñˆ—‹ªÂÖ‚9ÖþJ‚[9ÔŦ\Žõ@Pí‰Ãݶ¨Û’óvÀ“5í7Â,xò ýPb¸)#¡Ø¹ré¯ôža¶ÈSì‰5`W%—ý™™ß£bgèFe©»Ø#Íš†9—6½\ÚŒzÁ-&¿R’‡¥%QÝ Ôîè}Rã\–e_æeqʱ
W<Èb3¥Ð ¬4d[E¡áFXžÓ~*\ñ,KÈ_Ülˆ–R…4@—fHÉQU*Ÿfà¤9GO'»B§,3’-w{õ縘Àõíå;Zy$æTBr*!C–Ð<[^á¨yøæO7ÑÄá|ŸƒÁÞVÕd…zåZ©ï1¤¡5âò´–pȶrm Úéœz)÷ «Ú†0µ]Ú¶-¶^›ÑtQƒý4ýÓy.ç7?Ò —€½ó¾àrªé|ªà££Jýµ"´,vØGL#í]qÁDÎxàY„YÍöØP_‘µ¥$LÕ_£oR)·Æ®:¢ ^’¹ýü¦e—Tö¦ ×fÄ™ÚøL'kÆ—% §«]sgðA‡;œë]7èpŒu´œo(ˆÛüºA‰a+†S²-ÀôÊî¨nˆº·®ï¨eSÿÇòa*SweÄDšKìEy—Qì LPÜ Å0[îàoÊÄqdâØ»ò±oSÖOÛò¹ðgáv i¸O?!ÓñèóY±D….ï± +õ*|Ö¨J +võ¢ä“"ÒFä¯o¨&v¸{™FZ+5Üšz +r‰ÐdÏé;Ñ€³±6ƒÖ»ŠF\@Ë}%ˆžã!3 +í«iãCªL¹ÎŸÿdÚ'¥ endobj -1695 0 obj << +1700 0 obj << /Type /Page -/Contents 1696 0 R -/Resources 1694 0 R +/Contents 1701 0 R +/Resources 1699 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1670 0 R -/Annots [ 1699 0 R ] ->> endobj -1699 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.5469 176.4417 428.747 188.3419] -/Subtype /Link -/A << /S /GoTo /D (zone_statement_grammar) >> +/Parent 1675 0 R >> endobj -1697 0 obj << -/D [1695 0 R /XYZ 85.0394 794.5015 null] +1702 0 obj << +/D [1700 0 R /XYZ 85.0394 794.5015 null] >> endobj 470 0 obj << -/D [1695 0 R /XYZ 85.0394 410.8245 null] +/D [1700 0 R /XYZ 85.0394 227.0652 null] >> endobj -1698 0 obj << -/D [1695 0 R /XYZ 85.0394 382.6773 null] ->> endobj -474 0 obj << -/D [1695 0 R /XYZ 85.0394 161.0792 null] ->> endobj -1700 0 obj << -/D [1695 0 R /XYZ 85.0394 137.8735 null] +1703 0 obj << +/D [1700 0 R /XYZ 85.0394 197.3345 null] >> endobj -1694 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +1699 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1704 0 obj << -/Length 2692 +1706 0 obj << +/Length 2753 /Filter /FlateDecode >> stream -xÚÕZMsÛF½ëWð¶T•1™o -®h#ŸÏ~ûƒÏ–ØöÏgœ©<3³'<p&ò\Î6gÚ(f´R±e}öñìïÝ„½^÷ê¤ýgRY9a@){Ì3ynf©É™UR9î¶EÝ>4Ûv–Éy~ï‹6Ñ<_®|Ëî¾ô¦XÜWux¨Zÿ»|,Ö$©y»+ŸÊå+<åœÞª÷ïÃZÐIôt‚5Y®2ìÏiCÓ$n†¤-·_ÊmÞìÃ0i„¯Ü_‚.uãËÕ¹Èæ«röòX¯ËÖM4K”²Ld0B"Ë‘nŽb± îlwÿ-ÂcÏ>x„]¼p[ºAZVmq».—þ© Þ\ÍfSÔ¡wí
éwnxÉîØ”M2œOÊÓ°ÁºØÄÉ=a-Xš)Fc^15i¢à›Êr
)cJeY?Â2¨àœÏ_÷ñ¦©wÛf=±"Ÿ%2…ËiƒÝKZzëi¶Œ^^µï½
[:¨²Ým«ÅÎím·EëEám©å~²Ë_}G±\†WòÍj0R„™??bòª¾ª<·»r·Vpëe9^
qŠ^›Á(\K -#ß¹½›yáºwÝø¤ÿÂaÜÎKVûÿ¬âá”L€IŒëþô'¢ÿ´šàYLèÜé°j¶Á‡Ë]QÛ¡ß7OÃhÊEµzöî,(Ngá|¼Ýµìp3,ÂÎ,¼/å'öâ%ýQ~+bj+q”‹áõºyJêfGŽBaψ¨“«w£&–ï[RˆŒ ´–ÿH¶ùsY’¤˜?ÝW‹{¦
,â[o+ßîTvÎŽgdü†¸»û*¼Â,DÀ*SOÑ®¡ÉÆþ«©Ã‹û¢¾‹ -UuXu¹¬œçy@´ÌH©#úˆ&]€>œHðS’´)DÛv -bÀËyšÇȆ|&” ƒ7ųŸ½X·aéÛ°^ÛÙuéhQ·C„’Œk'vz®.
ÓFG€ß -™T0•Yy…ú£Ž£P7jïöàíÁ5•ÎO/ÞšX}B)ãªáòCÚû0RŠ…(Ì:Bû…(ªšÐØ~ò
º¬êbûì»Þ^}ô]ž]ḓILŽ,
Œ4€ƒÎ.cnʘVôÑ@F4ðQ—[¸C·siŽy€Ôà ¿ÓšÌ¹Î_€
€Ê&Bf¼›?Z¢C¿89{ªúXp\‘q–JÆH@oœ¶ì+ðß!ƒ)Æ
òêÁ\.ïìÇèÿEà:Õ¼HúU1JG±¹^ÇLb*%ˆõˆšêý5Õ9Š¿lºZBbŠh°Úž˜Ë¿Ç1Wãé’¨]¢5ü%³ý0ìl -gB"œÂÍQv1Í¥çÏ«ÞyKi2Nš3C›ôçõø*æ7ø¿œT‘™%"ÕHSŠ!Zyöy&@ly®ü˜žìvº·€køár#goìgÖßR˜7éMì¶é¹¤T8¸$Œ‚½IÓð¹0sïT.ÌŸ“E±8‡=Ûª´œ -×ÿÎÒŒj4šÄ?<úL?
°“f½]UÖàÝ3%F^@Ä\n¥m΀SÙ¬wpßæ - -‡ls$zɾ -ÿ6GEm̲ÉRB©Øæ4i€=}šˆºQ#ÀM|®7à"I® -µü+ÊztÈ‘4åœÀ×zÛ]z¬óˆ‚$v(HT@ÑoUSXnëb¬Š…+DC{¹ECû¸ó]%ì焯o†–ÿÜùÙÜø0i+øl©l ?U»ûæ1àx]RHÛ*&SŸêæ©{«Ã~§`]¬ãK»§fû)¦Wƒ›¢~Ò+g:Wæˆ'ŽÜÉ0g@þB‡R€$GóbLó"мPǨU"š‘ê¾Àó -üËÅÑÇšIì‰^tD/Ñã·Oôâ(ѧ(´Œ§üž¬s$ÒŒjН±[šZ{$ˆ½ƒ³øÓ€xwÐQÿ¡·L¥ - -,„•·OU;ÉGÀ"eRóµõyf¸úš¥IP½O.Ÿ!àWœëÑ…ã~ß``çî5⪣j§Æú5!¸k;m;_CS¼¶_Tr–E;ÖH¦C˜r®ýÅhËd\›÷Œëz¼bùŽ6©•¾òLÞRBÎTœÝeÃȲÚñV®ü3ÅÉ”bP^Êîê>÷ø—ªLhTÓ2“£:Rüèm˜ÐD÷Ò|Ôq(êFMBÑT)bpRf§µèFM¨1À#Ô%èè1,ExÚås(b)ÂKôúR}w•û̈¦Š¨¹wá.ORhŽP„ŒÀç\èô9:9—ÏÕ2fR=ªDþãDÌãÔ‰œ¬~>ÈÉ^M]Ý¡œügcïœúö(Y–v±DŸ9'œ=' ø:ùöÔlœåº»<î®úeּ஽Q'Ü5Ž:‚ÁâĞ‚âN*КÐ`X4Ó
©0dN»ÿ12§í]ງŽ9Ï—è—*_/ù¡nO_BÓ¾Z¥7î½?ÞÝdž*tí¿:Ñ÷ -3endstream +xÚÍZKsã6¾ûWè¶rÕC<’ÇÉŒ'ëÔffÖã=l%9Ðm³†"Q²×ûë÷k4@ñ%;µIªR®2ÁF£Ñht÷× +ÏjDYì“L…ŽmæX?TÅ*^®óšyÕ6Ür‹¥®¦&{ÝØ*¦6Ÿk¸i¶yé»nò¶lß #ˆš§n6¶l4îªæ&¯ºÞ‰~ÍþlêÖjÜꢡœ¾V/›Çb·+7›‚Ô°féÔ=çÇc¾+gnô5·L|ÊŸ[ì™F8þûoLg³€±-öLyÈwûr}¨ò¿ó‚[ær~"üÃ÷–·´Ž[¶NQ·B„™ÈÚ¥³ :ïóÇb¸>ÎN9§‹©HðŽâÎ$"Aˆ@B/àxxSWÏoi?wmÙšT k2éGÞP¦„bHXoüø?ëfÏÞZ˜ûl¹ÓÅ8Ôµ¡EÁÅÂDYF1Ì»»7®zAßñ¯ú¦A?•낾X“û„ü¬„J& +eø(4É=×kjL¤‘bf«°2E¹T»„k£¤¤´B`¢(Z~8äÕªÝçëo¼†¯ÅîÑ'ÐÑÌp‹Øãäôjm±x.—ëÞyç +~á´¦5¢ºí±3oì‚…ˆUN9Š(>O6»=÷ÿý©Ù}ëËoõ†ßhnGº©ŠŸ…"”ž,._ßç7eURŒ’°ÍÁ«GÉb&î«Î*.šÉßN'ïŸÜ(JðíË/fèÏ Ø!üäÜ„Æ}ÓzY[èVÖ…˜ µ‡Cii^ÆÌ>×iÌì¸h›nWíqëØ©3!í/ª˜fT §AÁCÈ©Mìí¢]Öù6Éžô¡(q9ÿA—·¢ð„máþ|½7S'vÓpoì·Ì‰v΄N·g笱4éÐ1ö»¼nÉ(µÛü¤@’R&ÕIæô'Í™H¨LT +ä-#=@SÛœû··jPo +¦äpe¦8A qQ=†Ž{Ïæ£yJÄá½QZæÖ /ïOLÕ²ôÏûœg¢Ä-Ž(ì¶hx3{þ–ŸäHÔÒKçMn©*sÎ^ÇOÓ¼_d:UæýqŒ%±P±C¬¹\Uƒgálí×r¨+Ú·¡ˆw!ÓÌŒ Ð{ˆÏÆÃŒíÙ‡b6÷l7EQàli§6'¢|Ýl·Î³è¥báEeX!îæR·JQW&‘õ¤õÃWfÆñŸê`Ž®H›à€¶ + Ê`úáPÉåÓ}¹¾§¦rˆà©]aDt§2Ÿ|üaO¿Ç°¿/ý8G¾`V àÔòŸ'¹( +ñùIц•Îõ8#âÔ«”¡Nð
I-ª4ä幓¥"K2ŸˆÆÛ1²¡„–:%¶ù3Kçc"µnü|mg×
\Uçu›ê µBia‚`§÷tv¤/›Ä3ppä!|†Â~©¹FVòöBºL2™
V:ìVá芼îųj&(Îm´ìN¡4æÃÁÈÒÚ‰êTŠ$¨f¼¥ð°]ä5Ráí¡¢wÃàæã‡s$n’Ñ‚¼[&ѱÌ-_&Ø”nú +Úa+$*g«úqØy!¼)*Ÿk•¡÷×ÁŸz†BYºŽPwiyÃ>#ÁÊå5þ«åäŠ>µ„¤Gº¥î&zñëBÚ²L3S¯íÖz´#¼½ÜªÅ‡+Zôå¯ú’Ý¢Iz^©´°ØD±6VIÃçGkç“tdX>¯ÖùúàÜvpRËè»@H·phY¿ø+oÈ¥ç±È¤#u8[ôØCå5š5ñ,c3T•.ú{÷ûÜAcŸm! Ž_9~Ÿ³ú÷Ì]§km^)‰•ÞhýÊ'‘Žk”tW\ï
ðH‘3@»¾ä)®x¤6’C
†x¤x„fլݥN&ßFtꋚ]àaÏíÂ`=0ÂÏ.¯¹tÖT±~BK/ç¡iýG8¢S±âJ[â@ÿ†*ãë$Cu'rl½t¾IÊB&¤f— é…Qô,k*‹]W«Û|íN£ž^ì@ü7‡=7è>á(ξ +,þ³gis×9a®˜ŠÖ'uºk>—×ÅT¾+CAõßPúùß)XçU´§Û×Pb
6lþ£á·¡©'ŽÜ±‘É endobj -1703 0 obj << +1705 0 obj << /Type /Page -/Contents 1704 0 R -/Resources 1702 0 R +/Contents 1706 0 R +/Resources 1704 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1708 0 R -/Annots [ 1707 0 R ] +/Parent 1712 0 R +/Annots [ 1708 0 R 1711 0 R ] >> endobj -1707 0 obj << +1708 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [455.0966 678.2985 511.2325 690.3582] +/Rect [339.2005 701.7636 400.4005 713.6638] +/Subtype /Link +/A << /S /GoTo /D (zone_statement_grammar) >> +>> endobj +1711 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [455.0966 503.2689 511.2325 515.3285] /Subtype /Link /A << /S /GoTo /D (address_match_lists) >> >> endobj -1705 0 obj << -/D [1703 0 R /XYZ 56.6929 794.5015 null] +1707 0 obj << +/D [1705 0 R /XYZ 56.6929 794.5015 null] +>> endobj +474 0 obj << +/D [1705 0 R /XYZ 56.6929 686.5799 null] +>> endobj +1709 0 obj << +/D [1705 0 R /XYZ 56.6929 663.4862 null] >> endobj 478 0 obj << -/D [1703 0 R /XYZ 56.6929 726.0224 null] +/D [1705 0 R /XYZ 56.6929 548.1865 null] >> endobj -1706 0 obj << -/D [1703 0 R /XYZ 56.6929 701.4185 null] +1710 0 obj << +/D [1705 0 R /XYZ 56.6929 525.2522 null] >> endobj -1702 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F63 1350 0 R /F62 1347 0 R >> -/XObject << /Im2 1336 0 R >> +1704 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F63 1355 0 R /F62 1352 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1711 0 obj << -/Length 3348 +1716 0 obj << +/Length 3342 /Filter /FlateDecode >> stream -xÚZÝsÛ6÷_¡{:y&DˆÄô)MìÔ&MßÜCÛJ¢"N$R)»º›ûßo ¢dgZg2K`±üí'I')ü£“<#)×b¢´ YJ³É|s•N¾ÀÜû+êxÏ”Ä\ß?\½¾åj¢‰–LN–ÑZ9IóœN¿NßþðæÓÃÍýu²t*Éu’ÉtúýÝÇwHÑøóöç·wïÿuÿæZ‰éÃÝÏ‘|s{sóñíÍuBóŒÂýÌpæ†Û»Ÿnpôþþ͇oî¯øñêæ!œ%>/M¹9ÈW¿þžNpì¯RÂužMžà"%Tk6Ù\‰Œ“Lpî)ë«ÏW¿„£Y{ë˜þD–“Œ 9I¸ ¹„5Fµœ’4%*ÓDrƃ–Ó²ç2Z.Öëæ)Ù•óý®š:iêáÁ©¢„K‘OâÕOd\#B°Hª$áBÒ¾Ÿ·å¼ú-MYÙ^'œ©éÓªš¯ÌPN×ͼX#µX,v×4Ÿ–m‹Œr:/j77Ÿ—Û‰ÈdôXâôûrW•H§wKd¬›§Û ÀâP„œv«Òhb’HIDšš#R¢³ŒY岨¯;DLÕâo×à¯Õ)’’“/@Ýþ7ˆHN@èž´¢ŠðLègàq]€ƒç:Âa¿]]y‘#Ó—w\#Û÷€î¹`ýý{@`iîÀR5]5mç¨êÈ]™Ë2Ùg - - ÖNlçÍí¬A)-AÝ0¥INY敃‰—?>:Á¸²ÎIä¨$ lˬ´)æü©ž>\k6m§¬‹ÙÚñ……Š+¿Bfw—‡1=iJhƼž.€Îáy{Ù©¶¨^³ßU߯ä.~F±¬8O§Åzo37 -šá&÷Œ•ÚAc2¤Œ¬ªçæÙjo€3¶MÝV³j]ud@ï@4)›
/0žƒû¦Ó…X#]5ûõÇnáWyªºÕ`ç¸ÍåîíÓ‰jó<ÏÞ‹vyë/ÐeÛ©rY…Sƒ9`-‹{ˆ#8 -;¹r\ÇpI\ -+g‘¦u'b.E -8ݘ´¢Ô1µ zSÖMEiØÁ§Õ0œM^ØRPÔ®ZØâá¼4*'ÌÄ!—ËYkýQ#õ™’IQ50Í‹êÓPýàréÑ™g¿©eCô*Dž—õ¯" --3rIµ5Ù±sh.޶l÷t+ìm~Ȱ¬5'A³~,½¸X2ÁÙ´}è™
×”Ò©ƒÔ/q¯2Š©¥¶éYz¿ïÐ8+ã–¨)>JtÛïá>O‹!Æ Tê«¡ú¼É›n½¯îÎ -”‡Â|,Ú%‚‚e0ÈWÍ+—L¥hõæý•$»Nh -¥ö©˜—C#›@ªÅ2¸ÕiÏ M€ 7ÙŠó;˜Ø6;Ûƒ¡ëÞhæ[„;³²7·Ožz|£ -ÜaÁ -ÅŸâÆH)DŽL¼äå#:ÏóñWIX0‰V´æÜ“Š{¢ø8Ï…YS‡†Ø“PA&šJþ÷Iè|FÂìBÃ%´~åœ/Q§M»Î©y<ÇŽ‡ôqF ÷„k|¶&ùÀü‰Q’J9@[ÏÌ|6ã#Íì0H„Nº¨Þ๕óœ¯~ t6é:2g|}P„¸½´Ÿìa>€Ó«¶ëQ»L ŒôKl‡‘\…¬;¤^?qGÂ)ËúÖ·-Ê?‹
HñjÄ‚’œ“âc¿kvǶ&]¯ - ¢HÞkÇ;Vƒ;Qyf9¾èö -N™á–ƒ«×T^jõÂN1ÜÉ=({BËZù†"ëbãHÁÜ?T ؇ª|‹aÛQƒ™>ÆÌ-¨ƒ¥}?¶6žÙÐl„JQŸYo§Næ¼Æ|UÕ¥oþ9Ж˜ ;oÅ9`;m¡ôXyŒà”ú´øf˜úý/1á¹ôLÊ»Œ¸Ûyj‚'/Þï>= -¯ï@Hè)eÞhÇ/ý4x$qrÚäQŽ5ç%‘±õÊDWnºjqWáÒ0_/ޏòåiìó¸‡Tà -~] -N_lw -«žÝßB¥³ƒ
o -σ¨ÉY4»†Ã6VäN?À„ˆhñV•ÚêXdpx‹¹{o÷Ìg1v?±/,Km*óŽ=3PQ¯æÐÆ=B.Õ9vÔ-LxÝZjO›î,«ÁëuÜsV®ŠGPWeoË] -øïö—?‘<~?*~u5þÞ/•P²kå…²»Jž'•35"úÿŸG¨9endstream +xÚZÝsã¶÷_¡>Už91ø" +aûUóP6ž§_YÉr—ж2¬¾é–õf×ý—0«’ôŒz’c˜¢ +†
8Mj{°â +,‹˜`/NL ·3 U€ÖEc”R7F‘*kŒ„ì‘=²`Aà +¬u™wª‹NRj9¶7ŸåΘU&1°Âp¯$Æ»ì9ç=ÑÊñŒ'?ç-„ŒeÅ'û‘Ã
чa¹OaÌe÷ ¡—L|®ûdª¼¸5…`¼,c|,JÏ*òÑå85ç\×r•q98ë¢Ëqli1r9©-ºè\J0nÒˆò²¶¦Tçµ5Re –s-†RC„v‘‡H•abêºè‘¹«¬ˆ®EŠèZ°wâZpÔ¹7¶\6OuNÕ†½ºb`«˜ó&HHa¦˜x„0A`ŠNàô¹ÞdÂÉy¯²Ùœxäö¤eÐò +ªpTG8žVõpšó¨|¨.ï©2Û€PBè,•ï?‰1ì1Æ0Ávco´Ýî!Øn$rï +Q2•c•j{‘‹HtÊÆH¬,¸HNtªÀZF†fP`h¢Ãi<*0´ +ŒN¡‘hS2mS?{M€=+&†Ûé4¾(?òíû†žIjÈ×Ê1ƒE‡Î“®=7ÍInœ]p#‰GiäïÁ&ò`è¸ +1ü¿!ḑήùŸ\Ô#SÙ5¼¡åƒL‘¡2)Ï,ÙèÜy¶½w£ˆO8š¯ÑS–ƒ÷ 'ŸÌ‹7Ü:³¤, zžš=¬´ÅPe!Y5¿»Ä¼#šfWßo<]ÜZ™T°°ò"v÷á5'§ +2§RÈQT˜E6œ#ÐŽ’>/ZHÕ‚d¿<+Z¥L'ü>¼: `
í¹Þ¨þæ#G_Z[×»ëX’`F˜?÷Š
–wðš2ëBz£ÕdÙäx¹UA0_§¥‰AæäùJËî°4?‘#Z–¡€ÇA2ò˜I8ˆ`06b dín‰ï¶ +šðÞâ©Ûõí}»i‡W" »Ð‰Ášs,Ð^‚ᆅ˜ØP_¿î›µýÂòÒëÉÎÑeãĘmyV)òä?çìk7dÅKÊ#ÉûJe½fÉ +‘*ÃÄ8ß+!Y9æânMAr9ïžü+‚öKí:5@tˆ6‰ÒûÒÒø16úm×9c€{pƒmXJ‚ërþþ<]ç{4ýb±m<r>`Úª‰wüUµkïÉÅÁ”M}ßlzì¥gZÛÌïÛ]½MiÐWÚjþD9Gë$ìÑå½?‹ö¼éÀ[nAj¿4RFS‰Çѯš'Ÿw‚QòÕQ6-‹†x>¾ + ‹a²@æ6J•á¡‚Ø€èm³suAÅã!¸†¦»ù‚A +qžcÞÈGtNÃúpÔD|HrÃÍD5/Нbñ¶1 håCÐF¯žã¢Öùbç…úU 5|µâŒîBÞQh´£u7¥:¯»‘ +~¿8cÝmNkTyeç@”Ùy¤¶RV‰ÉÖ“R¥p!ülÚ~ V÷à¦ÕÊ¢Q«¡FŒ÷„ðé¶|aR$eM‘\9ÀCr}{ú.J”Üb‡ç Û<7]Jœàl•VcÍ¥Ò;ç|î!õSZ«L|*A)”Ч7~Îî„D4Þ7iI…UðCç÷»;‡ÏÓ”H‚2(ÃLr}Fåñ»”+—aÂÝãÛ+õÔ”êP•ù™Øä§5üå +cã-j•1=Ïy;wóoÔCaì(ñC)¼ú¹]pùöL›jȈ2{0´+….C¤ë²Tt/qŽËZ)ºƒ§nïªbœJ„ä–Gó€m¯Tn2ÞžSïñ>¡J?ê¡Ìø•ºï}ª<v«^ŸQ$Vñ3¾LqðQe¼vCÈ4á–hrðE¤rÙÈ€›Tåg,da¥”Cý»³‚ +cdú¥MÜ=‘*HÃø*fÆ_x2Iýþƒ›QÒ + ‘ |\Ú‚ùüïÚWn¢¨¬µùoÜqÅEº¤SçâF€‹d6
¤‰#&
„¢LËÿ#“aÅkLZÐ +ÞúˆIg[ÎÙc•ÔÜ*_CÅ—t¬}èà¡EÀðïÙÛ„ÅP‚Lë æFÊ"šàmî_'ÁÐI݃$mä$¾òÖ“@6NƒÎ^GâRN=dpŒñxZˆú,_û´Éª'+ U}Ž +>2‰±cPZœðÒòÇ~*Íõ¸x“Q¤~XNrÌ÷‘W¥ôeK°…)ì¨2;-^Mf’ô°¾ö¦YÊ/O_p=Z;÷¹ª,üÆ4ãjá¿çãþ”õø¯2tg˜¯]ARhEeSÎߘ)ç%(Wi…ɰþ_°ù +
endstream endobj -1710 0 obj << +1715 0 obj << /Type /Page -/Contents 1711 0 R -/Resources 1709 0 R +/Contents 1716 0 R +/Resources 1714 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1708 0 R -/Annots [ 1713 0 R 1714 0 R ] +/Parent 1712 0 R +/Annots [ 1718 0 R 1719 0 R ] >> endobj -1713 0 obj << +1718 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.0783 690.9141 261.825 701.6985] +/Rect [213.0783 509.6055 261.825 520.3899] /Subtype /Link /A << /S /GoTo /D (dynamic_update_security) >> >> endobj -1714 0 obj << +1719 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [398.1622 569.2185 446.9089 581.2782] +/Rect [398.1622 387.8124 446.9089 399.8721] /Subtype /Link /A << /S /GoTo /D (dynamic_update_security) >> >> endobj -1712 0 obj << -/D [1710 0 R /XYZ 85.0394 794.5015 null] +1717 0 obj << +/D [1715 0 R /XYZ 85.0394 794.5015 null] >> endobj 482 0 obj << -/D [1710 0 R /XYZ 85.0394 372.9462 null] +/D [1715 0 R /XYZ 85.0394 191.2307 null] >> endobj -1715 0 obj << -/D [1710 0 R /XYZ 85.0394 349.997 null] +1720 0 obj << +/D [1715 0 R /XYZ 85.0394 168.2099 null] >> endobj -1709 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F48 1223 0 R /F41 1203 0 R >> +1714 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F48 1228 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1719 0 obj << -/Length 3157 +1724 0 obj << +/Length 2884 /Filter /FlateDecode >> stream -xÚZÝsÛÆ×_Á>…ÊÈ}8ØOŠ-§ÊÔŠ£*3í$y€HHĘvú¿w÷v “,§=à¸÷µ··ûÛ“œ ø“³$Ó\å³,7q"d2[lNÄìú~8‘<&òƒ¢á¨ï¯O¾{¯³Yç©Jg×·ƒµl,¬•³ëå¯ó4Vñ)¬ æoº|ñÃ/Wg§™™__üty©DÌß_üíœZ?\}øpvuI›ÈùÛ¿ž}¼>¿¢®”×øþâòQrú<±èÕùûó«óË·ç§¿_ÿxr~ÝŸex^)4ä“_³%ûÇëÜ&³ü±Ìs5Ûœ˜DljÑÚSÖ'?ù¹_pÐë¦å'E¬tªT*$À$S´àÙi¤¥š¯«¶Ã–œ7·DÙ»®Zì×ÅŽ~_|¼OiD±\îN¥—m[¶Ô¹(jjë¶¡Q7%QÚm¹¨~B•ËW@QټⱇUµXùùmIÓº•ŸWîîËÝ‘»²n™A¿•œ]‰Wòˆ¤Œó$Qîpm³øTvtg·ÍŽe»bkÀ'{EúyW¸ïr
DG)á÷°*c^ÙñŽeÙV4“>ûxAŠç·ûí¶Ùu¾ÿæa²Bû -؉x¡ÔM]~…þ^ 8 Ó¡Tœ‰äå‘*eGAk; 3bïÊ(– é%m2)œ@²R/KòÉÒô²4#oC]ûÚÁðã“iib+2f6 -<eš'†‡ÐäÈ ¢DFÀJàkÆJX_‡šÅ¹ÇMk"8,;k«$É;“+¼o>9h'÷öxùÔÄ:ËŸ=”Œ!xÉ'Kœ›Vï%Ä~–€Èì‹ØOy$ìâ/7p4F@ 8Šï)hšõ -fóó¾Ü±™žBhbFp™Bê£i z -·N=ü0žÉA_´hj»ý1
‚A°î]9Þ[A·$Ú~ËkÕL`é¦ä«°àlÁn‚ÇñDÇË|’$S ‡Ó…tz~½b¶|¬ŒøBýnÙ|z3y‘2NqH퇔Á¸ ‰µM½a -aÜ~ݪÙûèC‚ðÛowÕ=àœÓ1@T´Q$SЂýìV ÉïÓ.—vO¸Ð ÀyIïBx`Œø(ÎDP'”àµJŽz¬D~5&÷„ gíþY“¼Þ8'GEW;HË¥/à[_G]î€à«ÞŠÃT,)}\?N¦Üã–c¸‰Gôoºt@ÜúŠ*¼>¨»åÿsF5ÔÕ¬÷d~&CbK¿,Ëu1^!-.Çû¢5zÌcUmð¨EÍ£þÂwŠ¿Ã€+cÉáî·äxtœzKvº¡ý¶¸-=¥ª'øêîñfˆ®»¾§thjº ðüª/ªúXhjõ5¾èóâUŸ,k„þH'1Š ð;¢¯üÏÿtüç)¬$Y«Âÿú£2‹0Sî…Ì>âÜÿ#ÑcÖÿm +xÚ]sã¶ñÝ¿B}ŠÜ9!ÄÜ=9w¾Ô™œsqÝét’<Ðmq,‘Š(Ù¹éô¿wP$\Óñƒ¡ÝÅb±Øo‰O2øã³Ü 71N1q=™¯O²Éà¾?áf‰f}ªï®O¾ý(ÍÄ1—‹|r}ÛãeYf-Ÿ\/~™æL°SàMßÿtùñâû\5½¾øéòt&t6ýxñã9¾¿:ûôéìêtÆæÓ÷;û|}~E¨<ðøîâòAý{‚éÕùÇó«óË÷ç§¿]ÿpr~ÝÝ¥_žI¼Èï'¿ü–MpíN2&Õ“Gø1¬O”–L+)#duò÷“Ÿ;†=¬ßšÔϘ¹H(Pˆ”µc¹Ò+ð±ZàRp½².nV%®åt·, Xë ++ÿ\=L·]|~PQ=»r{[ÌË–.;Ë53Ý”îL½&E.ËËrutÛÙCž¸0š%—‘¸Ùì*/• +Ú—nºoËAv
A¼:n¿ ׄê‹LTdS@P-Áâ!Ëê”Oç˯N«°+hUõ´ +P4u¯–lŒšZUÏ›uUß‘2ß—ÛªŒoYÖáömGŠÏGVEŒþ¹,ƒ™¨¾ŠG¶÷ïÓYžÁ;Ö_ÞÑê? M8{õf¦o[°Ó" vñq'ÃòLEED÷BnÀ¹¥Í'`µyM(ÌYkÓpÖqœõYú(7ÇÄ€ÃÉäù;xâ‘'—üÿ'dÇñ!†‰Œ»¡h]‰gš9“Û pаý׸žÌX®$µë 'ÌÀõ0¼ð<8ZGt0ŒESÓ € pžªŽ†·lŠm±£<¹c +Xý£mæ÷>ðJ¼ÂxáÝVè
´ê|š>#¾¶*Í´ +¼‚ˆ°"E3˜Ý†—]³)APrBøØ~ui½,Ÿ²nöwA®³Ïr¿ñÑtdxï ¥…KØlúk¦³ÎËæl¿…—ÿïˆnÞÔ°{ÝÔ« Wß@*'ûÙr€ÓJÀ1*°ÙéE
7)|®°A9@DæÐÒVÊ•.fê¾¼ðóÂ+z‘Ê£½Wðç9Ê}3`Ñ©€Mí/PR*ÞÃãfUî9)Q±:Pe¸Ë²y,Ñ !ËHwæM¹,0šûm6$›®ØR9 ¢M]ìùéè“ùnÎ9-¬¸¯NÆ¿«æû(Ð&½"EOoh¥ˆœc-ƒ‹bÕ6DuSd˜óá\_² rz +íoKÚæ/é÷Òù÷Æ£"]ÏM³'ܳ¯ŠàŸÃr$‡›…ú„>Þ+Z‘Ãbɪ¤Çe oGÅÌ¢l+Ú“aôJ±` óe\yÃK¾Ø§ýjWÑ%¦‚° êÕaÓðŽ˜ÂfÎ?§—«Œ)¾\ phE:=þQ í¿I$×™3L*i‡Ù} OïÇùþ]*o$ç•Õ=fYÆß.nìÛ·ßJñ.}ÂqIGX¡zÝ„Ìt×MÈ,ô¤nAÔ›%ÀH4„`yŠoy +2ˆk„õvŽ]à>²©~A2r§ƒú¸SÞ¢B²áj$QdAd >…z@Mÿ½š³¡Íè_jð2:\·t¾ìqt«pŽW"BÉ}qå«¡òÅÐŽjIùÑõ©Ó†ly]Ü—Ï4$]ã”êGü«Æâ÷©8ôrùû¤ƒÔM]~…ýú4¦ø“-œÉôëcD.„=êj82uÔÒ)›~Ð ¬Íé@.»6†]ªN—Šj%@íëU(ÕÇE#WÌf±œ¥î…mî´ê·¥(h/øbOeÀ rÍ0=v=ÌP¡†9 E4ñÄà°Hœ,Z›ÞÉ” +š{Zµ’ønÇìsŤqÏ^Š3gnÄzܤðåbJ|èû7öUâç*H8%>"à# ÀBˆ€ +c_2LYÞBÇœ ùWZŠ¿¦Dc™ÒQ2L¢øá¶jï}¶ƒnURû +=š¦”Ã*9=SM½q®lL±
KÄ™Áa÷3¦)-s]Ÿ¶éLœ¥x«€ÖÚ[´¼«ð!·àÖÍš6¾Ýчz¿¾)‡[o‘,ìEßlÞÔ@îö‡6ˆ€ï]9<SA‘· Ø~xÕT ›0†¬à¤Î‡ž&«.NKœ‰M€(˜r¸¸®ÒÒ{IÖp-CrùñFpŸN@›i€ÛE$©#I™¬4“6ŽBÎÔl¿ØÌh~{üP6ƒü¥dÏ«oãsaÿe3^A‰JA³ÌhÙ?/Ÿµ‰ŒY7^=' +è9JE‘‚ûPL¢H!b߈ö#ô„óÕ~á'Qˆ¤¼{¼‚[Ž +Nó€@P£†Dn£$ÅCS-^Ò£Ãéa§Ç´²@!YîÌm§.p*Ñå+ôNÆ…6Óƒ^{W=”«hŒtRØwôuD˜#ørg4sHë âœÑœ¿.ñçW2û¬‚¸cR•à÷d²Ô]ìL(½”oSƒˆÌLæBãå@zjàÙtÂ}‘æ$ì4)Õ!ðMâsõÝ€S8fq‰]8™6y!fÜHv°‚tÙp,ž’hD8G?%~N:ý„tú ݸ”ãŽchŽZÁTæÑÜò¯ŠK`¤½’°ÁïÚ”{^Ï“FœP;Öƒ~2ãò~L}²[‘оuß5„,ìçËr~Ëœ†ÖVDZ«ÑßM~EI ÁtË´‡‡jáœÔ¾•qþÑÜm‹5}…†8lw ¡†ïâ›øON²Ûâä·|ˆÈeXxq endobj -1718 0 obj << +1723 0 obj << /Type /Page -/Contents 1719 0 R -/Resources 1717 0 R +/Contents 1724 0 R +/Resources 1722 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1708 0 R +/Parent 1712 0 R >> endobj -1720 0 obj << -/D [1718 0 R /XYZ 56.6929 794.5015 null] +1725 0 obj << +/D [1723 0 R /XYZ 56.6929 794.5015 null] >> endobj 486 0 obj << -/D [1718 0 R /XYZ 56.6929 529.2786 null] +/D [1723 0 R /XYZ 56.6929 356.0631 null] >> endobj -1721 0 obj << -/D [1718 0 R /XYZ 56.6929 499.7745 null] +1726 0 obj << +/D [1723 0 R /XYZ 56.6929 328.0517 null] >> endobj -1717 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +1722 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1724 0 obj << -/Length 2465 +1729 0 obj << +/Length 2563 /Filter /FlateDecode >> stream -xÚÍ]sÛÈíÝ¿Bo¥f¢Í~“ì=å;õMÏNÝtÚ»{ ¥•Å9ŠTDʧÓÿ^`±¤I™RÒÚϘ ˆ°X|®Ä„ߘ$†q•êIœjf¸0“ÅæŒOîàÛÇ3hf-ѬOõãüìí…Š')K´“ùªÇ+a<IÄd¾ü5zÿ—wŸæç7Ó™4<²l:3–G?^^} LJ÷×W—¹y7u4¿¼¾"ôÍùÅùÍùÕûóéL$FÀz8Ypqù×s‚>Þ¼ûùçw7Óßç?Ï»½ô÷+¸Â|9ûõw>Y¶:ãL¥‰™<Àg"Måds¦bF+ÕbгÏgëö¾ú¥cö3*a&‘ñˆµ3 I™URyf÷U¾œÝëÙ~¹m«]SOg–óè_ÿþ7fB°ÔÙ'·GÈß^HÙ“‹•`<ætXWUãþöK»#âi”2P@Á£¼lvS‘DÕr¿pKÂ5k÷·"´bÂñ¾v³/{·{D@ªQ&åà6q–TÛ&¯Ê £"Uêý2#œgæÕŠžõ~±¦o»¬\VÂz[¼A8‰n÷·ÝL*ŤQzhÃf×ÈÀ>)ÁMÔâÊê!|¼«Â5Ž>ߺEÛ¤OÞJn_çå!ÐJž¬Î6&‚y¨l»)€6Ù#}+«†0·¦Þ¯PÊoœËEîʦ„µ[ìI>ã´ÑEµzŠ»DFZ´*D˲º*ÑPZFyCüÞáyçJ·Ë -/ -Ww(ïãe^/ªý.»óî$þètëù*¬Ëè±ÍvM¾ØÙއ³…/«j–z—J$ÃÃ"OñŽ5«Aì¸•Ì -k[·Úð›i
éÀ&vè}ÆR#¼cÁo[ÿ@ È›Ÿ›m‘/r:ã-”Ý®¦7: -’¦½rý(¨4L%Úº3PÈÆL*Ú/.èù4(°š*Ž¥É¿ÜVÍš _>|"J¨¡aáp\ÐoÕü=ÐÉD·ºA³XÆhPÉ=–¤m2€xëB
"|¶…Båë|«J_¯¼"Œ×‡2 ËPVÑ8H˜á&ƒ -¯ØB‘ßûþ¶+Žå>œ`"8C4ÌŠ[ýšIDA¦±T¯ŸEúœO¤•¦L¨0Å~®|“*h -P À˜ ƒÓ.Ð@í³¬\ ÷í;4ôç1®iü ┢Óc©Ÿ% mö—.WàFÝÈXWù?ðŸkB˜‘þ)¿ÌqþÿCf+Ô³S¿B
iS¦DüQàU±N^3@$¦)êœ_7>zŒO„‡zƒ“ç(!gE]TPè1ŒRíœÔÀhS¯0Ã;_=O—Q±”îÆ·P+4œAˆ44¿Q›ÁO¸jo'އFït_æ/¯}LX*sº—Šƒf†/Ò°MÂ>†óèŸU¦ÏùTù‚süÆHbð“/Ó-‘²6Zg5·Xge^oÂ;öVøÜ™Og -šgã*t¾2ÕßÞQHä•2›ñv⥯“2Á’etWT·0zT‘×
Aþ$áëå§@uÑ_YÕu»¾%)ý¥bj0Éd8yZK+Ãæ-OP»2\]Ï//þAð$dw®M8$™\>¬]éî}á·þrRA_õÖ„]TÛG‚È'Eë°¼s|@ñº«[¾Á:Ÿ„(ò@Nƒ¾Q õ¸<í^ÐnnIíú¼?IWŸÇZqR}QùçÊ‘ C³2&Z»b@¯<]Yï;³"ž¬
ìÜû½›0ˆ €º„oyQôeŸ/þÀ€¡å%š8ß…5Þð„-fÎKþ…¶ÏÆbûÚÇ¢¿»Äç/8
ÝDêîæQ‡ûV -Œ^ö{
Ãth)æ‘3]=ÃÁç÷.èæ¯ËuBû; õ -{+ÒGÕsYRCºì¨Æò³¸Cló ™|1xÕ._ÒÄ -ߌg×é#&ˆ™<Þƒéð¼3ÔÀÇñßC”òPKü,‘Ñß×h¥ù¨’”ÁäÛ·‚—yÜú,ŸY„Va‘JSõ¥{ý©Ú]Õõa#rÀb -èÅÑËNeþÈ9Rþy7ï¼ø·Ôþå%4ôÉ‘Û\Å-K$ä³ ”ohÓCÍ»]Ÿ«þM¼xsendstream +xÚµY_“Û6ßOá·“gÎ,ÿ‰’š§4Ùä¶ÓnÒ3Ó™¶²EïjjKŠ%ívïæ¾û%K^ÙÉu“ÉLDƒ ‚À +ÔucwÿÀ
DöÚ¤í¶¡)woD¸³ÛÚf4Ú¥4¹ò¢š²$B½ËÍ] Òš»¼&RÕ¶hY©‚ÔÙË1¤~ß^·~3Ø{ÒÄm;:Eöú9™ÔηŽ\Z\Ú¦´ÂHÀ%Üuæ¹†Ž¯Ò$ž‹Ô×pÕqÐE^ܾÀôêê °ž¥Ó;r²„Ò¶)wi“¯½× +5_ Ôøö/°ó:'°cÔþ8äz4²4è1Æéᔳ…Š)EcÃMÁâý +à€.I·D8\¼#ñ79å±aBËðsn+YÅž‰"¬&á.ðqP‘îò"+RÈÜÜ뻡o]î<Å9à£LTð±‰ö¯tWmÜJ‘@Ìðp|£¯¯~Åø–!kúáãFEÙÐ +"ݺ¦Wv¼ÂÝr[hó®"¶:Ýyž‚a˜û-<—éÅ»’æ(¹ +}ûŒcÔèñBCI’AÊÆ‘”æŠånÙ(÷DL*J·×ƒÊh¤læŠ»Þ +}2D"ˆ>HJÓ"àB‰¯šic
g¾A¢>E¡§ø`-²ûKÓÓªœNu½RíM½A„·.{žO£Ðf)Ý·pý3Í8C'LÅÝ›)D4›ŸÉÍà'\u/§Ccp»Ïó—oP—Ä&‘Så1ŸuÏþãñÁ×ufŽåt¸º+‰f*d ‹ú“›¶ÿ3sÇ6PþÙzÒendstream endobj -1723 0 obj << +1728 0 obj << /Type /Page -/Contents 1724 0 R -/Resources 1722 0 R +/Contents 1729 0 R +/Resources 1727 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1708 0 R +/Parent 1712 0 R >> endobj -1725 0 obj << -/D [1723 0 R /XYZ 85.0394 794.5015 null] +1730 0 obj << +/D [1728 0 R /XYZ 85.0394 794.5015 null] +>> endobj +1727 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R /F62 1352 0 R /F63 1355 0 R >> +/XObject << /Im2 1341 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1733 0 obj << +/Length 3444 +/Filter /FlateDecode +>> +stream +xÚÝZÝ“ã¶
ß¿bߢ‰Y~JÔã%ÙK7ÓÜ¥wÛÉ4Z[ÞÕœ-9–}›Í__€ +]únÖv»fùrÌ[I'J[—™'ª îCì(€ì ÷oê_¤Ôm©}VaQd«î¡ZQÓªéwT ½w?0ñb±½Q>«ûžÆLâ³¶Z×TëëíGB‘æ§±4’ÿ€ +ˆ ¯[&xóöþîõ?©¾Õc F—v秺L†eä*[²xOÔ:ï6/T#HªˆW™p/³¦§.Dk½øþxÏF$qÅ
BŠþ‘
f9¬þ ÞêQÄñ#~_0§7ïǶ@N–DŸw¡\ +-Ó’ÍãÌMO,›5ËÖ´ÔTMð,” +ç/ËÁ4bŒ0èœp9àt$Ç]û +‡® +ÿ¯ +âJ}æzsáÊxO›„üZ¸çntÇU+•…Ã5í®Æ3v‚{‚µKβ!ÉÁ-Ȉ+¢ˆÂÖ.ß±yéúzÞµ‹ t@7;i„wîè thZžw' +¼vŸp'¢î„‰ŽtÛÐ|äK”ùeÖLrÊyäK´¹E_2`}‡£ËKí3cÌLä˜Û–g?â™c`eíÄ0¤:m<´63Ìqã¡#l<´Á¶Î÷[{Øõ0
;!Ãgš‚0üÄ…ùŒñ +áKÏ-c<éH›ì")ZÌ”]/˘ÚÄ8›ç›4 +‡L2 + +'0ÌÊåVï§aW‚¿LÙËcÜ)árâcçáµÄ¶!]‘¤@ÐQ¹¨Ãe´er2Î@Íò#.ñ!…ˆŽÖenŠì «Fz„º;¹³ûѰV)N±¡ Ë +WEöÍ›÷Ô¹aj
¡¶²ìè-<˜§ÖøGC¢ê©o1µ&íBHn?¥°*=lªù–=¼ìÇpƒ£d|®áµGI¤SÙµ*Žß©±ârÓõ}ó°bRˆ½:î§‚u$&q¨…÷êsQï…T&¾‡4Ì}ÝâÒ"«ƒ‡ÄxïAÚdáz¡Š4¨kÃjý~ƒ¯hõ‚Ï‚\‚œ::Ó_èRIœVÕŽãð¬)1ĦN¾ „*ÝwðeD[¾q`{ØÃ l)M:ʡϋߙ˜2rÐgE)5vísuxÕµp½˜6uS–à+¬ª˜÷ŸzÊ)£˜R¿)…ô ZÉ.1Üx-Í@«¡õ‡%Ã(Óß7sJ<ôÝ’›~¼q0´èž{š +?HoÂ)Ø´‡°š„˜X=lg‘—öӫןZ}!d‘§Àì„+Ê?íSm©T’Ž_â÷*ôd¹¨Ûñ÷+ÙÂÓ*úx¿xxùÌ Dƒ¿3.=4òt*Båéâ5xË<|(ëðSªO$r‡TçƒD5úÂgê]@ÂÙ†Ûy‘{¢š`?~é´ø–ó§W>mw ü“¢jmùÌøÇŒœN/zü‚ mú ÅRØ‚•¦=U!ÁèrÂßAàuÀèÃ%Ôh‘›âÌÔÈxSÕh6öèÞÁ®äôp˜;ÚÃÌÂeû®%{®«€¹ ÀEšüÈHâ>‡M`Qå $z!‰ûM.RPÝo°ä8†ß˜´sn›ÙAKþZ]/P†Ã!¨bÇ׺ÒáëÊÑÓ;·QdËj˾,£ÏÔ&?:[uóøˆ¿?;c@@ŠY¹‹ö3 :o>‘h¬õ©<5 +endobj +1732 0 obj << +/Type /Page +/Contents 1733 0 R +/Resources 1731 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1712 0 R +>> endobj +1734 0 obj << +/D [1732 0 R /XYZ 56.6929 794.5015 null] >> endobj 490 0 obj << -/D [1723 0 R /XYZ 85.0394 245.9796 null] +/D [1732 0 R /XYZ 56.6929 769.5949 null] >> endobj -1358 0 obj << -/D [1723 0 R /XYZ 85.0394 222.9232 null] +1362 0 obj << +/D [1732 0 R /XYZ 56.6929 751.4715 null] >> endobj -1722 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R /F62 1347 0 R /F63 1350 0 R >> -/XObject << /Im2 1336 0 R >> +1731 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1728 0 obj << -/Length 3560 +1737 0 obj << +/Length 2952 /Filter /FlateDecode >> stream -xÚÝZÝoã6Ï_‘·:ÀšÇOI|Ün³½×íÞ6Å×öA¶•DX[r-9ÙÜ_3œ¡,ɲ“½;à€Â¢È9þæ“V—~êÒ%"ñÚ_¦Þ -'•»\n.äå=Œ}¡˜f‰æ}ªoo/þòÞ¤—^øD'—·w½¹2!³L]Þ®~%B‹+˜AÎÞýôáýÍ÷¿|z{•ÚÙíÍO®æÚÉÙû›¿]SëûOoüñí§«¹Êœš½ûë۷ןh(á9¾½ùðõxzœ˜ôÓõûëO×Þ]_ý~ûÃÅõm·—þ~•4¸‘?.~ý]^®`Û?\Ha|æ.ŸàE -å½¾Ü\Xg„³ÆÄžõÅÏï&ì†O§äg]&œ¶ÉåÜX‘ÁúÓRV"U -ˆRçEb´é¤¬Õ””#Jy“™·»¼jîŠÝ•Êfó¶Üó²o_9)\vÙ_ሦ™`C÷ØPÎ —(3äã¦ZÔûju57™ý«® -jEÖ|5³ÝU6ÛWUYÝÓðº®îo"}È«Ø*jmò꙾ܔվ-¸û©\¯©µˆë»M9ÇMûxU)ìG ïœüUy[¬ -1Ä#l¯$Á+|Å"a€%"+6Lòç°Y.ó"u6;°>Õi€uT(¡¦Ø•ùzþǾØ=Ïw ¬#`”çy˜fbý¨L"¼ˆjÀÀÏëü%f4òòH†Ét溷Àb½*—ùzýLc[ÜäMŒt÷¾×³¶¦çoRê` -L}÷ágêÙ@Þ”ßso°—Í $'ØXýÞ%É}EOc«©=iÐ?àß¾œ®‹öd›/?3ïyC+†l.Å$œ¬”Žy×*ñÞPgÎÏmÝ4åbͤÕ<N–‘˜Ä¡Y¦^‹úLHe<—¼ú¦>D§é¬zŒFxY‚ß`f‹d süQ]…¼ZÍ~»w²/H$ È©‘O¦“VZç-¸ãuHŠ1ТAÎB“²XÝhËyö‡C1Âh:Wc™øÂÄT…”½1+¼pÔYWO9Ÿ&:dL«ºñl…Íú"æó§?¥Sâ7^ȬƒV§—t7ôÌ×
½4=©†”>F]Hýc¹¤"DSßq×?®œê§†¦ªr -cÕ‘™±æJNÀ Î5an!Ù¾©H“‹< mB; d‘&©G<ÄqÀºä{ÁÐ3qÜl‹BAs¿Å'GøØây$}¸/ª%w†ÃÀÙ4C"f n!ˆ¢å„Î;¼c ÍZ¨+²N•‡íÕ -u¯†êÚZ† -S‡gˆ6'UGg™0©´çu§OuZy:ª¡à§ -Ö -acÁ”}BÒ*Dš“ •&jè)½gíyx£) MkÚ&‚žÅ—e(¥‡ó¿Ÿ?÷ É¥Ôž±§9ï0ˆ>[–³5Ø8 vS½J…O¡R-/ÕW(}ª3(ŒTCFV—¤t&¬5ê<ÕÃôÑ$C>¸€Ù¿0€—CM‹BJÌ9¾p‰Z
®YÂë…DŒEìZ0åößïØh±fz–ÜQ”„üyrÿðàš6iÚMŠðŽ1µØ™ƒ…åpÏ[ö}Pù¨ü Pi:Ÿ¨h¾õ”Í>M“žW0òU^¤å¼Âã¨É‚“˲AÔ„[
Þ•ÿN2®èŸ¡¸l”žðŠªÀ8Ø…óêà3tÊ>ëÊ-Ñ‘wÀòSJ¼CoIÅÞ‰êjÄMÿq€1°Ò;ÄcŽJw¯"¸X׌ß]4ÿ«ÅBOì¯ù™Óð8ôŸRèšü×=±ëDèi!¡1‰`‚a‹ue)·;.òvG«M/y.$ÿÖ
±ð?rU’ -—$/TØúT§mdGu”A`>¾<¾ÔrŽô&:ª¸PÚ#$^ÅÅL ´4‹QcWÌ ×~²«æ˜CdÔ,_7ÏŒoÙfâ“M.PÓÕ!X”–Z·ï>R´¸*–XŽâëA¼¨P -ÆSìð -ÌõÄŠ1½KþEAÕ ¼ -ù•/Ü&ü× -%è +xÚÅ]oÛ8ò=¿Âo§ +Í2“_NµaÙ/×ï߯Óçõ‡÷o¯ß}þôêÒªlvýá=¡?]½½útõþõÕå”;Ía¼ˆ3œðöú_W½ûôê·ß^}ºüsöëÅÕl¿—þ~9“¸‘¯üÉ&Øö¯,—ÞéÉ4Xν“õ…Ò2×JÊ„Y]ü~ñïý„½Þ0tL~J»\e&S©rg`ŽQ)³œiÚÔjŸ)ä^Ê‚I9Q¡”»mQ·ËrÛN7åö’»lZ·‡[çÚäÖy3éÏÄÅžj„
Ñcƒž[ËüÙ] âç,[WëÝšõn}lMóY³$\Uß4»zAÿ6u·ßHlÞ›5¡n"弩ç»mØlYw«ÇáømUߢ +úÜV÷eM M»nº’Úu±ŽP[nïa/ u ‰Jø¸eèY”Ëb·ê¨q_¬v_…“xùVõOQ(•[Ã-ùD2°Î½µ&àb’e×õœX+Ú¸ÁíÐ:iù8ê”Z¬dœ K¼¬‹Ç¸ÕMY.Hˆ”S;{ ÅÝær*9‡S*x&÷´ÐmYÏKêÅÇÎvUÜGžwû`a³›]GȪ#ºbÕ6„ œ ªzÚv9X’g«¦XQSpÓ?Dì C¬ôñX†,í’—u®5ÜËž¥A]¥“YsJ¹X †!¾‰ß‚ºÓÔ‘3 +‡ÜFð‘ÈváØ +·yÌ;hz®¥‘‡ +0°’¹Q>Qnî¶$\ämI«/1•ÆåVé¡.DÆ—‘`6Ñq™¶+ºr
6?²ÌÑü¤Ò^ž·‘}ªÓ6rO՗ɹÙmç屉¹êL쩾Á×6÷L?Cm©Yç¢ÔeWn×\¸™`îªù«f^¬äY±XÊ·‰¬Z +F¿Ñæu×êúã½"höú#përÞU
):´Ë9hÆðbìÚçÒŽæ‚ï²ì_ +&‚õÁOûØÂ$¿#ï¸ZF +4–h½Ks›MYl [Õq»8×pn‰sÿ£±‘’›\s“ü0§y˜îoþñu76WL$[LêG+ NE,sϽ4 YJ¸o Ì:6nÊà&„‡—µBš¬Z!Å]@Vµ„ +-ô%ÛMC@ÇbǸŸLäFèOôM³'qÝ'X ;&Rà@±";s Nh +áÈbà±ûj&|_•‘`K©‡¢TìIžÁG"‚eµ[wt1ª=‰ï•Ï™0êÐ}&€ C9?¼Uw‡š‹iÐøÑ(›[Í’˜ÃŽW +›¸m¶#óÀªÎèÄ\Ïè<ÌúÈÞ€Ãú‹xëó +È4fv’±ìÝN³£Æ+bŒGÈ0µÇl!Ò| +jÎ(aêŒ&*’WW-O©‚Û‚E²³Ë奄±>×`„§ç8Ìk$$®†<5`ù/Ö{%Ó驱ƒ0º•õ©ä.æó@Ú¯¥c;”ÐqL,¡#1U’±÷¦ŒÎ5AKS„*ù[ü¶%Õ
löþÃìúí»>ŠÛP,7F¦º/të¾HIu_ìJu_ã¨îkRVËÄ·K³š˜Z•—~‡ÜR<=‚¹}“ø£ +Âg¿/]>C
Ádº~éç¥_öoÆZÅ"/ çEæ@K˃bpÆú¥ßÐÆZyíè3¬ñší°‡êÂr½Xý
Aà#}{Õ_štÄ[°‘Z™ç‹ƒyvôlJóï+¼1ó{¤•*)͇yV‰ö¥Þg•ŒV©7™U©sü¡Íˆ…dûlñ‡Ïóôc'È5åANÚÜ€Ø\x›˜ÂýZ~ȹÆ;ÁÔëÿ|ˆ8Àendstream endobj -1727 0 obj << +1736 0 obj << /Type /Page -/Contents 1728 0 R -/Resources 1726 0 R +/Contents 1737 0 R +/Resources 1735 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1708 0 R +/Parent 1712 0 R >> endobj -1729 0 obj << -/D [1727 0 R /XYZ 56.6929 794.5015 null] +1738 0 obj << +/D [1736 0 R /XYZ 85.0394 794.5015 null] >> endobj -1726 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1735 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F62 1352 0 R /F63 1355 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1732 0 obj << -/Length 2499 +1741 0 obj << +/Length 3231 /Filter /FlateDecode >> stream -xÚÝZKoÛH¾ûWè¶0ìéw7‘“'±³d¯£3s %Ê&"‰ŠHÙãYìߪ~P¤DÉ ’ÁbÂbw±ººêëz´ÌFþ±‘U„ŠLŽL&‰¢L¦Ë3:º‡¹·g,ð¤‘)írý49ûñR˜QF2Íõh2ïȲ„ZËF“Ù¯É뿟ßL.nÇ)W4Ñdœ*M“Ÿ®®ßø‘Ì?^¿¿¾¼zûñö|ld2¹zí‡o/./n/®__ŒSfƒïypäƒË«wžz{{þË/ç·ãß'?Ÿ]LÚ½t÷˨À|>ûõw:šÁ¶>£DdVžà…–e|´<“J%…ˆ#‹³gÿhvfݧCö“Ü-´¥v å—¬*¬3¢^•‚/4ÑT–ÿŽ‚¬@Æ/ú¢RFÁ…RRmQZfw91F2¥8º—1E4—fd$‘îü{v¬~Ì'%Jp â‘ãý8Õ,™Àÿ<¹Ø÷ -\Ù‘¡”X#.>ú<b„Ê,ž«C»Ýî¬à~¼ZòÑ› -ö4ên+JN»¢Ý¾4ï –)Ø¢¥ ãÄ -›9¥?T‹|¨SIYÁmY‰"Ì“ùjæ‰"ð,ÊbãGfUøWUã‰z»^W0-iGЦ)W÷þ¥y(ÂhµÝLÏf›¢’æcA -¬ƒ -Nr˜[›yµY3ÿºj‘¼ºyÔ -¢¥øšP¿8–&%–7Üê—Ò¤Ò–HÉÙwM“ -¢ ö¯H“]Ñ'Ò$;D0ê·u…¦4yƼSmýˬÂ'žÊúÁSú@¸ƒƒPHÂéÁI@Ì -h73áë.3á[73qÃ\fr\ÝW@ÄÌ„ôpf¢–0@çñḬ̀§½•D2ÉûÙÉ)>œ Vj:ÙÉŸ QÙr#ûçâD°¯D?ê‚æKÙ)Ö-RPÂ…=]Ût˜N`(0 ÓÕ
ú]£ßOhÒ2ªÒÃPP“˺º|¬Ñù6Æ›õÀ„ã;0Ù¬¦ÚOWaBÁ8¦\šÀ™Ç²xªƒÈ¶Î„ñz]LKBj›¢2›ó|»hÂW¹±‘Ây1耟šVÕ€»tý,¢¨‚ým 7…b·¥qgEE‡WdT` QAÐsQe Ö—‘ç7ªèÜYFuï?¬L«å:oÊ»rQ6ÏÀʎ££2Nâ¯Ëu€-—·WSΟaZ~ðéå[®Ög -b¸´V`¿§ºCéØÍ -€ä²\¹v›Êä顜º"ºñjš/üh¯‡)ì«îêëfC/¬Õº)«U¾À¬ïßÜøo yoóS¹‚ -’Ø~9án|ªÅg]ø;“\¿Ÿ\]þÓ.Aü¾¨á˜h- #ô—
¶«gàÜÖM˜Z¯ÝµÒåÊËw°Ì"Œd±yÄ#jdò·¡¶Rèúʶü\æè7C8–(.b¤vc½§¥ÒýOùO”Ò|:5…À -åPPCj¦c
µXTO©‡Â€.*#ñâ™òk¹AËÕ
Dªe±jÂ+Þ‡8 -Í4p˜%TÎ™Ž†øBÄlÛª¸ÇÜ!4—”lƒÓ<Ôq`,£E?VÝ…:¬mÊÙ¬¥ÖбªóuH
¡7!Úvf0Æâˆ¢¯vQë¿gÿ,WÓÅv¶+‡º©¤þrsÐŒFtLòŸJä+¯Í°ñÁ †p©XEe{‹AýFMUóWbûÞdÄê¶ÝtÆ”£¹‰JßAÀørÀ*Dýx73V˜—ÃđEq´x0”øŽ·¼ê;ÞòrÈô€@õRûʡ痜›ïÚ¾‚õduó´¯]Ñ'ÚW®±‘‚´üËÛuôÿô-/§ŠXÅ_èÈZ®ƒ¨5Ô‡A"álÓ•}XÏD®zàÒ2-³}Þ•ŸŠÁ«<bÚôñbtÓrÁú÷¸.«¸»Úõ0¹+TÝ3äNGÇú"v5«¦Ï‹·¸AÔ®àÀrd P3Íààà ÀMZŠ¿È1M Œe”R_4¡¼(š<õ:È:¢šk¤ÌÚ–çQ¦ÛÙ:Åk¨ô0PBk›µÛè!ÚÛX›äU9{I&`YBçù¥2–ú«´„›ic1Y¹§ïiéJžŒÆœç:%ç^¡]M -ó -Kóö ýÂÈW²þ+d (>8H©†€ñ/ÿØä«û“‚m=©Ä›Wžþ÷«¡Ì8p‚ºb%Ä$úê` …Ãa‰‡_bè¯ âIá@Þ÷)ÅBþ›ÿ”`÷wÒÈŸ|‚B¼å™iµBCv‘Êÿ¾*jendstream +xÚ¥ZKsÛF¾ëWð¶TUˆ`ž¬OŽ-{Jd¯¬œ²9€$$¡LJa¶ö¿o÷t^%»œT™ƒAÏtO?¾îHÌbø_ÌŒl*ÓY’êÈÄÂÌVÛ‹xvïÞ_¦Y¢EŸê§Û‹ß©d–F©•vv{×ÛËE±sbv»þ}n#]ÂñüÍÇëwÞÿvóú2ÑóÛ¯/ÒÄów~¹¢Ñû›×¿þúúær!œó7ÿzýéöê†^YÞã§×oi&¥Ÿ3›Þ\½»º¹º~suùÇíÏW·íYúç±Âƒüyñûñl
Çþù"ŽTêÌì âH¤©œm/´Q‘ÑJ…™ÍÅç‹·öÞú¥SúÓÒEVÙd²E*6âkØ*çµè¦ÙÆ`8Jš?»‹a/†ÃND&MÍlš‰ŒT®5¯”3!¢Ô‰öuI$Û6·dßkÔ°§L#cµ@BGFI
»#ÅÇË…ó[øWÎOìál”‚-f ðqJ"çÙŸ3Å:MÑôÆþ¨ +üĶrö¶‚Íúgâ}½ý‘¬ìy¬ +£Õ,A’&Îü¹Úd{ðB3/êË…²éÔ fåš9ÓlŠ|O3ë*gú²jhPv» +^ëxfò¦)Ê{zhržû³õzŸ×¼ÓÝ¥Šç°¨
mÞZļ}ó œ=q°xu)ãùü'oêK*ëYÛ4’.u³¾¿ÏmøƒM!†ëŸS/d9—¤>NL¬Ä4‰ŒjÁ]-&eg[)&Ш¥BaŠ»ã‚Ô½x´c5 GÎèYëÑ„ +=’÷ùÝ] +€[^Rïò™WÙyF?Ð0ŽÌ¼º£°«ö*hOc=DmRºà +Æ7×ô°Î›|¿-Ê|ÚP”yõÛü¯l»Ûä1OEó0âpWm6Õ“Ïhø¸ªÊÿı¼?ì3¯ï¸ºïëîJDÚÅÉt -, +Käa‰Š’ž«2 +GÊÐÙç½ZêBå¥8ëÉ0Eà{•Â?˜Hp_ +Àî‚j¦ñW¸È%ÐË|þö¶]e± Œe +¸G´ú©)”g¦Mgͬ"ЖaªÖm<ŸÕCUÕ‡ÀÍC,Ì>Þaº&Ï…&–éÈ`4Ö„Æ4„¢]o‚3 +–ÙêËí°i»ƒ\›¢9Ž +m¢•Éë¼ ³]ÇËa|Џ’°3pØÓ <©#ìÚ0ËÉÒÝoèùç*ÐuLÀ7‰ƒÅƒR¬*ÿøå_<74_û½pä‘~}jB:s.”s®‡üIlæKÞà°zàñ0ÒPf4 µ@I#>Póé¨Â™¢®ÚqÜã7QªJ<Ô]`XpôcžˆN/ZèRAÂTÏß÷©Îß·T>]Uû| +"R^g^`ˆ&÷}9u€vÄø6 Zô¾|ú;o±êP‰
.vÛÃäm‡Ž„õA©§W4R +¼¥·/&
ID·÷Ðçûº7yÁ(=ªgŒ¨¼dY“1J‚ÉæYÆh‚ñÈ(‰÷0&e¦¢gx tKco–4ö"2i¾°©ÂqÖ· à÷â·àáXz)Ùñ錓FSÊÂ2ßl4`¤€‘¯vsÀÎTF‰³rt³†D:ƶúO» +EœeÃY– +#†Ø~‰kÛ×R:¢·ª˜~KW[(Ï‘Þqú”nÑß'Žy¬xC[Q£?kÑ•aÚòÅ)ï<0×bLÌ&̵A·``vy-*T$HÛ‘LÈ©Ž•¤ endobj -1731 0 obj << +1740 0 obj << /Type /Page -/Contents 1732 0 R -/Resources 1730 0 R +/Contents 1741 0 R +/Resources 1739 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1708 0 R -/Annots [ 1735 0 R ] +/Parent 1747 0 R +/Annots [ 1744 0 R 1746 0 R ] >> endobj -1735 0 obj << +1744 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.1233 128.088 539.579 140.1476] +/Rect [442.7768 585.1346 511.2325 597.1942] /Subtype /Link /A << /S /GoTo /D (query_address) >> >> endobj -1733 0 obj << -/D [1731 0 R /XYZ 85.0394 794.5015 null] +1746 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.118 305.4141 409.8647 317.4738] +/Subtype /Link +/A << /S /GoTo /D (configuration_file_elements) >> +>> endobj +1742 0 obj << +/D [1740 0 R /XYZ 56.6929 794.5015 null] >> endobj 494 0 obj << -/D [1731 0 R /XYZ 85.0394 185.9364 null] +/D [1740 0 R /XYZ 56.6929 644.8926 null] >> endobj -1734 0 obj << -/D [1731 0 R /XYZ 85.0394 162.4216 null] +1743 0 obj << +/D [1740 0 R /XYZ 56.6929 620.2417 null] >> endobj -1730 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F62 1347 0 R /F21 926 0 R /F63 1350 0 R /F41 1203 0 R >> -/XObject << /Im2 1336 0 R >> +498 0 obj << +/D [1740 0 R /XYZ 56.6929 389.0825 null] +>> endobj +1745 0 obj << +/D [1740 0 R /XYZ 56.6929 361.9608 null] +>> endobj +1739 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F62 1352 0 R /F21 930 0 R /F41 1208 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1738 0 obj << -/Length 3525 +1750 0 obj << +/Length 3329 /Filter /FlateDecode >> stream -xÚ¥ZK“Û6¾Ï¯Ð-šªˆK< nNNb{Jì¬gR{Èæ@IÔשˆÔŒ•_Ÿntƒ%J³N<å"4Ñ
ûë$&)ü‰‰±‰Íe>Ér˜T˜Ébs“N`ìí`šY šÅTßÞßüãÊ&y’[i'÷«h.—¤Î‰ÉýòשMdr3¤Óï>¼óîí/_ÝfzzÿîÃûÛ™4éôÍ»_SëíÇW?ýôêãíL8#¦ßýëÕÏ÷¯?Òå9¾}÷þ{êÉéqaү߼þøúýw¯o»ÿáæõ}¿–x½"U¸ßo~ý-,aÙ?ܤ‰Ê™<ÃKšˆ<—“Í6*1Z©Ð³¾¹»ùw?a4ê?Ý?‘&RY9²RŽm É«¤òøË÷?ßΔL§Ûf×µØÓfE]ï~~²Ô³)Û¶x([êo˺£þÕîV¸i³Á} -×=rǪY¯›çª~ þ]Qƒ ÿ¼i8e%3눬kh\åðïk”d2“°s:3Ùd&D’#½:MSAáSÓG¾]ÔKÖšs:kŒ2ÉÈn¤ÀÂ%ÂhRÛâ©©–³'=Û/·3Úùóqy¢µ[ƒlGvÙ%.3IãiíL»(`ƒe*ü†ËTN÷m¹¤¿(èÙúC.ŸðÔÏ%ÈóD—¿tÌ*Ý2LÕ«ç³xlšÖŸr+Z꺖:à@—¤a“™Ri’ÊüäÀÚfï'\àtîU™Z>\ÔÑ=ܪZzÎ×Íâ“_2ÎÔyÀ}ë¿i*iýÏê&ö5;¢.NÙÏλMÝ€âòÜÅv»®EW5uû
·ŠÏ§¿ïËÝÁ/=
K&z&ÔfÚì}ÂítÔUÐ#Þ$ 9q¤_³9D_Ù“ƒÎ+›³±!QÝ>£øØ~nöë%}T7<óCÙųÚã—§I³-TƒUÊ^›€ -‘…£8a¢eâ$4cœ3sXžaêfëU›æ-hÃè…·}_/¯ÇÐåzɆ°ö¶-¿áã},ÃyÀ
ÈKØMóT-KFê•·Xh̋ŧgš‡Íf8¯ÖUw8ø€êÛ¦m«ùš‡Ûjf»â7¯MDäQ -;1àŒS2|¢™EDç–òû@ä}U³+Çð!W‰æ:×@sÎ5Vãô3·C®÷ÏŽï§?ÊÕ(Ò -1X î7[Èû#.ʇíôH¢˜(V…ì‹nAƒûÐJ0ÝÅãÐ@S¦Üõóˆ©.HOå%+ºâ‰dèf®2D#ŒOÎ$Ó ˜Æ´™¹ˆ^ÈÑRÛKžz™´Ü4˜Na»ß÷æïçâQÐmº”<ò9¼Œš‚Ø+Ë3óŇŒ0ò†ÕO¨™Ë$sV‘ƯÅ@®ØÇýùÑùCÓ#><ëÒÑÂ
EÈÈ2Öw+êã͈?‚ ¥„ÙÞÂVµLÕð -+Oí L©±—β‚ïwÜZ—>«öaúã2-@ÇiHÐÐ<Ɔ^¾wüªZPäy -˜÷XA«çP -ÃD•§´jtäìÕ¨úvœ7øLÛúÐ{µGÔ¶ÊWް¯ ÇsÁ4ÞSXv„ö6ø
$gˆIÃ1‹%1˜ÃѨy¡`ÁÛé•zóé|Ïq%Eš–Ó%hàd%5¹H¤x;zWT-ú77‘7·Á^¡Å·¶n-9"w›†é7TÔBy4ÆFè¹E}Yæ¡ÙcmrµªE}Õ¢baÞóÅ.¯<Ð×cLÊ9&ôõFº¾ä˜“ñ§Ã
…ôï÷…IFBãb)•¤ -,V¬Ëö”o*Õu¾h„ïI%K;e‡|9žÍâT0›ÖûÍœÂˌԞABÿÒ…ÏŽhÆ€y&ÕýÇ[Ÿ•AkÑÔpjuà!„˜z7G!Žþ -^ÆýU¦mûrûµ4Ù gë«ì—TC*'õa_LuåH•G¢®X|3²Ä‚ϼÎ9p–'Å+ ×°þzˆâ?/$Ó<¸”CÓùRýåá!^¸Ô¸¿žÖL4 -1°‹ã!Å;¯»¢.›}KTdÕ¼®|7ͧý¶„pbxFèA¦Åu#ÿ -4V9Ýðüæåc±F1¸ö/Wyϰ6—*^†‹áÄ](< -¦\.úK_ØÇn§T’‹TGUÇTN¿-!`ròˆØŠöÁG©½t4Ì×Ð*hpUT;ê˜W]¼ª¾èŠa•q×oŒ°p¤ÂÔøÓ -ß–þw2‚ -D8FS{V -¹\îÈ2ˆÔäð!ÄÊ1òâñ*"aϜߗå‚öµ .Š·²$È””–]DÚ cøs¨þ&&X}´¹É¥_o*“àO.G
þóÆÿí_vöª3°]'Ç-VB¨«LÂBá*3yŽSüÐsÑÿýšïlendstream +xÚ¥]sÛ¸ñÝ¿Âo¥gN(ðœ>%©“ú&ɥޝ÷p½J‚,6©);º_ß]ì"eJîM'ãp±X‹Å~Sò:†òÚ¤"ÖEr‰Hc™^/6Wñõ#Ì}¸’L3óD³!ÕÛ‡«¿¾×ùu!ŠLe׫ÁZFÄÆÈë‡å¯Ñ»¼ùòp{3Sieâf–fqôöîóß SÐãÝOŸßß}øùþÍMžDw?}&ôýíûÛûÛÏïnofÒ¤ÞW¼Â™Þß}¼%èÃý›OŸÞÜßüöðãÕíC8Ëð¼2Öx߯~ý-¾^±¼Š….LzýƒXÈ¢P×›«$Õ"M´ö˜úêëÕ?ƒY÷ê”üRmDjT>!@%§˜"ÓJ;â™eÌ‚â8޾Úݓݱ|l×îwK£Õ¦ê;<1¬«ëÆ×3• #MæV|XÃZѪëö¹jqh¢vÛWmÓÑ\g{jZ•(Âõ~…Ž™Kø¿¸»‘&¾nd´wð‚i°ö~ãöð«”¼GI/Ñ&¶Yµüâ’¦«¦·»¦¬ëç<$KJQ¤©rÇrL¡º„v% †ý1i»µ@á$àÞ<t½ÝˆJ‹8}ÎÜK¡Ì´‘0ÑlHuþ޲¾)¿Ïªï+wêYÝ>κê{ʅ̤ÈM\\f#PMð1Ô ™e"Ï +,ªzž³ ÛÚE…k í:ÜÝ +vZ6¶ÝwDEV͇ ¢ºm¿í·Ý(‰“£|½™o"¡ì +÷¬µ'2ÒD'—}HuÞÚ•»©Åö¬këBõyqó@5±ûÈÎuÛŸìNöQd3‡A0s€ÂóÄÌtà‡w_Ù6
9 ¨V$Èí•Ílö +å‰>ئÝ?¢=' ¥ +ù1ÊÊ_‰!ñî,ºÎä¸s’žÉ2d‰Œ_íÙ±¶]ç·t}0ÚÓ»
7Æ{ö•ËKÜœ‹˜òñ•^;0gÞ!ªæx:Î/bМü$óZí{êZêºB(ÌŽÝ(êÓ»,ë²óÑ·ïkvæv…ˬ fŒë¬_nRa³lŸÏUP'‹X¥¯å!Õyߨ|+feõt#ÊɸÐùåýÕ#µNˆóTŽ9 Vob†
˜"*7íC.N¸´ ({qó.YœKFà>oüæ´ñ(wRL +àâO܉çNeŠK8-˾$Èi<¹üS´-œÑq#“@ä¦\¦†9o–_
ÀœA¸) .8û奨NT‘ý¾|ßÇ[¶‚Òët=Ù¦žSÆ©@/II“ˆÚÒiôñþgMqoWööñ@ÔWH|:”úà +•ùkuîê|H
T>Ý¥yiåÞN5µd—9T,œ6µd +)Ôˆª'ë73ídµí×.è™#m ÀîÛ +º8¬]ck‚Ù†:z5DÔ4*ÎôIDu51LNåXïôGJ%[9r.ˆ )ŠQ;!(Ë{rÕ5ÏÛg6es ÈåýL},âiÉ’¹ h‹3+cH~KÂUÍ”ûÓ+)Éì |.+þ€*E€>N +ƒÄ)õŽ endobj -1737 0 obj << +1749 0 obj << /Type /Page -/Contents 1738 0 R -/Resources 1736 0 R +/Contents 1750 0 R +/Resources 1748 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1744 0 R -/Annots [ 1741 0 R 1743 0 R ] +/Parent 1747 0 R +/Annots [ 1753 0 R ] >> endobj -1741 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [361.118 570.951 409.8647 583.0107] -/Subtype /Link -/A << /S /GoTo /D (configuration_file_elements) >> ->> endobj -1743 0 obj << +1753 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [347.1258 193.4648 404.2417 205.5244] +/Rect [375.4723 642.7661 432.5882 654.8258] /Subtype /Link /A << /S /GoTo /D (journal) >> >> endobj -1739 0 obj << -/D [1737 0 R /XYZ 56.6929 794.5015 null] +1751 0 obj << +/D [1749 0 R /XYZ 85.0394 794.5015 null] >> endobj -498 0 obj << -/D [1737 0 R /XYZ 56.6929 651.2334 null] +502 0 obj << +/D [1749 0 R /XYZ 85.0394 769.5949 null] >> endobj -1740 0 obj << -/D [1737 0 R /XYZ 56.6929 626.1263 null] +1752 0 obj << +/D [1749 0 R /XYZ 85.0394 751.8451 null] >> endobj -502 0 obj << -/D [1737 0 R /XYZ 56.6929 322.0105 null] +506 0 obj << +/D [1749 0 R /XYZ 85.0394 170.9666 null] >> endobj -1742 0 obj << -/D [1737 0 R /XYZ 56.6929 299.3741 null] +1754 0 obj << +/D [1749 0 R /XYZ 85.0394 144.1282 null] >> endobj -1736 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +1748 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1747 0 obj << -/Length 3325 +1757 0 obj << +/Length 2501 /Filter /FlateDecode >> stream -xÚ¥Û’â¶ò}¾‚·ÃT-Ž®¶ü8ÙÌæL*ÙÝ3!'Ip± 6Ë’¯O·Zò›ªÔTZV«Õê›dø„ÁŸ1™ªI’ªH3®'ËÝ›l`ìûîifhÖ§úvþðÍ;™LÒ(E<™¯{¼LÄŒá“ùê·éÛÿ>}œ?¿>΄fÓ8zœé˜M¿}yÿaRjÞ~xÿîåû_^Ÿ5¿|xOè×çwϯÏïß>?Î¸ÑæÏáÆ„w/?>ôýëÓO?=½>þ1ÿááyÞ_Î$näχßþ`“lû‡ÉÔèÉ :,âi*&»¥e¤•”S<üüð¿–aoÔMÓŸÒ&ÒBÅ“™‘ab\É,b”6Kâ4í”,ø˜’*¹YîgË"·eS_n˜K|E2é³½Z¼¥Y]ôVç2å/VŸo-è<§»ìK¾;î¨Sw{ ¸ZS[ÃpÑd¥Ž5aHj‚ço?zdU–vÙäU驚mÖÈ•Lk{øØŸò¢ ([.í¾‰P “™HÐas<Jµ=YÁ>Vv,ÔÉÚ¾y§úšŽE¤Ò œÈ#š¡>’(• 6¢‰®¬ÍŸ)¨*2:V÷¾Ouûà[*\ñ`V³ºZ~²#§³ô¢ïKÐRˆ0Øm¬#‘$f(ƒS©âº=qÅéÄ÷;c¢ðã+[/ù¾©5!ÜLýhÚº:ÐÚéô
uëf•Wëdj›%ÃÀ`¶¹çTZ»ò`SQ»°Är‘oÈ´Ž¤äö`Ëê¸Ù‚(åf -%ÁüȲåÌ€ÖšaÜY3àò²±‡u¶´ÞzÇňÒtE¦Qf;ØãµI)Á…§*òº±Îè}U¾á«â(Ž!p±1Ç¿`®ÒH)DÈ<ß“uÞ Ú¸šîÝTŸó•%êW;R äà‚ñ A -ðîÈ„„#?6›*/7Ô#gàÏ£=䶦NV®ÈËeµk‰ÿªJKPsÈÊzm5±tGì:ÅÙcþ -äà!\ùíj.n:¬iÑÝ" ‘`ÐùœG‡OÆ×›I!¡£ÄТ¸0#ë -HF„c#5¨ÎT?tªne¥ÇWæ<’XnÿdÅÂÖuX2+Û5CØpýß™f³Ÿá?hqò/ªöô3/;¹ñ®r^Œˆ¼ìvç,d—t¨©õ±9Ò\ -؆}<¥¸âV‡ðÜ®ð6óÈ"ošÂs»F6kÈ~‚'þõQƒ -ËUuªoÇf¦"ÁÁ˜ïÇæÕØ¨P~Pïl™-·vVçÙ«ÈuK¡~º»~K5"ÀÀ¬¡Â`‰æC œ]Ke:ë’*f»êˆ)0”98¾Ã™Æ1 îXûÙÎÃÝHà’/Ô^ÿ© åv -Z&Ò?âçÆ¢#Çàc¿nmÙqqV¡L!ž"H'bAÚUÖd9Ë‚–ü -òÞ!kìæLuEX_é° -ôôȧ¤¡
nQkJ3;¢öFÆÃÑ"X•Å™ “7#G—ˆÁ|þ£_ª;¼'9}-líFý†hÒ'{>y9}ˆ5=‡ºØá±t -Má:ÁR8¤T -“z#•)ï¹`½Þï¼PRÌxzË:ß”N5@%ÆÆ<CÐìźûÿ0ˆc¹$ÐX¾Ü9ÎÄMƒj"/ûÀF·ÙgÐ0¿ -,èÔvŸaÈ(ÎÔwáJ³(X05ónÏ\Ì$~ûp¢³Û—%ײ›)U¥,ŠÕW2jèvB
D¡Ö¥y5åq$£¦OXzwù–èzýáMGE\CõÔÀ§ÓÔ—é“(3é´´o¶.Ý™Ž¶UK½åŠ€¶Ð”^¡ˆ”~îËznSU‡Ò{ï©ij›K5¤}Ë‹\ênÃè* ]ÄgyØBaVõ9suF
QÖD(+0á ò†‚táǶՉ€]Vž r¿§î®ïÄ2óRPžEÈ9”1¤¿á »¤Ì°{Á99<§üÚ] C—$¨v~Ü
\ÀRë6ÊàȶóöYM¹`ç*І7÷Ìðt4pÐ×ÑHNu4@ÒD5„[Гp3+FãÒ!ËkLÉ×7<(£”Å1\0 øóÏhøòÅãˆóÇgí>Â¥ªZåKrÅù#GÁëOÔ}Á‹)„ºú–ƒJ£¢Âþ]íÝvÐ@„2.*f¹_ÿú5.ÌÈ»ë·D×=4‰”Iãso»bÚŠ@=í’dWR -ùÛzdÕ&\d|a”C*ª‹–.œ¤#µ {µ’€P+hA®ó؃D¢#¸ä§¾N=¬1óPÙäåÑ×óp%¦'\\0¥¦t -ÈUE«*;]ºtUÔg¦ûÖ›œÌ^5íy(L4¤~ÆÒr}¦ÀâóØåÕ•¢È£úwÚ²ºŸm³øÅQu[|w33KžÂ‘*ýÏïQÝqý@åjF›š…Íš;ÎGÒHs_†–jDˆá;d¬ùP -zŠdÝU±sÇŠßšÞœ½ËPæ2+—–†ˆ¤5у$Ãdè™à¼šp»ìðɽ\:{”2‰¤lï+¸|÷#ŽE¹‰mÒ¡QáeÇR˜ILHÌIÚn€ïbŒóÍÔ¿gáPW|@'ÌŽõ{þs^mVWe¶(üÔ¶R¸»ÀÁtØ -#»¡2ƒ±ö®èíA_ Ã.—Çûž(´Ähø•"¹OuÛ[*”±}•¾ã‰2йº/B a˜†M¤S-‡2ø‹CÚ{cé´Ø%½y¤! Aö°
ÜÆ?e»Ãr› [¹MHiŠvG×Éks•Û¤¤â^¼I_¼[¶^ÅS÷íZô*l;N*G§Þÿ4Æ¡¨ôæÝŸŽæ-™7B=óîñ
¯³ÀÍGœy#€æìyCxrù´Õ$Ž â¯q|°¡ã1©mi0c‡¤‡„èÌ -!¥¢üHJí? -®òš¾ÿ„;¾Ôý=®GÓûV²"® ¹çÑÅKìEu -œžÂßÛ.Ó…1P¢=ø4«ÊÑŒh¿8ÿä^ Ü'‡Aª›jÞÒq¥¶x åFßõ²&T,Ÿ}øÛPìÄNÕÊ7c– Úˆ¯T}ªÛ1¯¥Âm×
l+ÃúnÐc2þŠ-Õˆ—añäBŒ÷ôJÖ«?Ü -‡ýö#O]TzeævùžêH¦í—«;)àc©¯‚œ2Ò ¬+(âI…_j’ò³Ë—¡.mãóQxRî‰\ÚÆ·JÛš
Ò62¦màý²5n3|Ãbo†Ur_±CË^x)H±WöȨHÅî·R©äŸü -ýcÆñ -Òoí7yÑ<¼<H3ô«YnÚN¤$ÞöPð# ŽbÂã×@Ε$ìYvW@ ÉQŠð]ôÔ{|:‡ÿbú|¥`*¤ÅDE©¡ßÇLþœà=0M%õ`·×NñÍËNL¾«`G“þ¦ãY³ÛU<üŽÅqÔLŒˆþbÆíÉ}È€Róü(ànä;ùn_Ø-Ý]Ð!Jjý‹ +xÚY_sÛ8ϧн)3µÊ¿’8}ÊvÓ^vnÓ»\îiw›¶5•¥ÔRšævî»@2e+iwÚé¤"AÈ@€æ ƒ<Ñy–a’¨L3®“åîŒ%{Æ=Ï"0-b®ŸnÏ^¿“Eb2“‹<¹]G²ÊŒ•%OnW¿¥y&²sÀÒ·®ß]½ÿÏÍÅy¡ÒÛ«×ç¡Yúîê—Ôzsñë¯7ç^jž¾ýûÅ?o/oh(÷2~ººþ™(†>Ͻ¹|wysyýöòüÛ_Î.oG[b{9“hȧ³ßþ`É +ÌþåŒeÒ”:y„˸1"Ù)-3¤”æìßgÿF£nêÜþ)]fZ¨<YH••°þü.ó¬à˜ +m²\ +9î²às»¸p—·¶Úw¶u;Øýçª96œK8YÈ$–~¢ÃÈ5£„ˆ”àJfŒ—ùT‹Û=_(V¦=¨`÷Ø.ÒǺiˆzo÷ën¿#ò»Ö3ï*Ô¹Ú¥¥¡¡ê?ö4üD«‚œ×mWí?Ú‘«
>Ú*)‹L©€m¨Þª®š‡{Ï[³ +8Cab
Ňtïak{KMlÒ°Õ-—{ŒÙ‰ÿ{'Ë
ËòRÉ—=1æzÞG.ÔÑc]-힨3‘úeF®%¦žÈ2¡Êrª«6£'Šü°?@]V-µ†ÀØÚá±Û$ÎÑkê~ ºÃÓŒ§ É +šÂ{Úü&i^òŒëà›o²têãù´!¬êb +ƒÑ¸É@ñ‹n…߃ aíƒ#|sS|ÇÓßø%|c+Âw$×ãe#¾qÄáˆoïð
ñ©>çéa#q÷½ÛÍœ«úÓ)MÚµÍ.p숌¨EGe×þΘØ<ì«¡îZš‚”Æ38ç…oÓU+»µ•(Ó‹õ`÷G’P/PZ2ÑrpñQ·;»©ýJˆ +Û.ælAá 5y,6>=Ø}íšT)êŠÄª}¢Fkß\Õý²Ã…1äˆ6©§>ͽãè>×+âR¨¹—q˜Øišî1Hºóìø¾(Kô%í1é
m箌À;æÑ‘ Z^QHªÚÕq”ê‡îžZ´’Û5¾ZúÆvSØ«jm«Ï>þm(xâ +ppÎ_zÌdEÉ¿ô"®‚^àB³ûÌí‡zÙ¿õ„'ó%F®-&QOBÚQ°#5®«z”€¸ö¨öCB‚#wž»é6‡h?á¸Ñà‰¯ž±ø4ı\ê“§Jé³vÈ(àÁhQGþä3œ…øÎ¢{:áÞFèøîÞ†¯¿·5›ÜÛ(`zoƒlwo#<›»·áË<”Û.à÷°±Sdßy-hcOðۢр%™Ii×7dáèoPT”óY8ÄŸ‚g9Ëõó²hY¾fLE-‚veÀ%”P1ÇSÃ-2Q”"Ñäa.ì ¡@çŠ;èÀÝ(A¡à$|<½…ÿEzRž”yf 4I4Ó™)•³&ù” +¬¡”›}áêœ +Üï]«K9Áÿj)‡3Ž2‰ÃW,++Ÿ©ärнà9T?&c†›QÉLVˆÓ(£óà +¹ w >ãð÷|E€Äˆñ‚øq&årò®‘™ñ…bšçG‰p)y`ì‚[ù6ðÛv?¤0ŒŽêûa¦MnþJ]øUh¾ðKBàÿîÀUEµª˜ƒÌT B¤Î@s¡NŸÿX& .Ù"åÿ#z_ãendstream endobj -1746 0 obj << +1756 0 obj << /Type /Page -/Contents 1747 0 R -/Resources 1745 0 R +/Contents 1757 0 R +/Resources 1755 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1744 0 R +/Parent 1747 0 R >> endobj -1748 0 obj << -/D [1746 0 R /XYZ 85.0394 794.5015 null] +1758 0 obj << +/D [1756 0 R /XYZ 56.6929 794.5015 null] >> endobj -506 0 obj << -/D [1746 0 R /XYZ 85.0394 439.4679 null] +510 0 obj << +/D [1756 0 R /XYZ 56.6929 463.6862 null] >> endobj -1749 0 obj << -/D [1746 0 R /XYZ 85.0394 414.5066 null] +1759 0 obj << +/D [1756 0 R /XYZ 56.6929 435.2029 null] >> endobj -1745 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F48 1223 0 R /F62 1347 0 R >> -/XObject << /Im2 1336 0 R >> +1755 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F62 1352 0 R /F41 1208 0 R /F63 1355 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1752 0 obj << -/Length 3430 +1762 0 obj << +/Length 3018 /Filter /FlateDecode >> stream -xÚ]oÜ6òÝ¿bïéd «ðK…<¹©ÓúÐ:ãÃ=´}we[ˆVrVÚ8Fqÿýf8C-¥ÕÚ9$0‘Ãáp8ÎW.üÉE’Æi®òE–›82Y¬6'bqc?HÆYz¤eˆõÃõÉëw:[äqžªtq}в±°V.®×Di¬âS ¢·ï/ß]üô﫳ÓÌD×ï/O—*Ñ»‹_ΩõÓÕÙ¯¿ž].¥Mdôöç³ß®Ï¯h(e?\\þHœ>Gˆ^¿;¿:¿|{~ú×õ¿Nί‡½„û•BãF>üñ—X¬aÛÿ:±Îm²x„Žˆež«ÅæÄ$:NŒÖRŸ|8ù} Œº©³ò“"V:U3TrN€I§ZéA€2¥¹!¢ëS)eÔ>´u{÷„Û"* "K•ÆÂˆÔM?«ëÓ¥Áý}¹Å¦Šúûª¹ë|SB›Àå§]Q¿‚6Hÿñ¾l<rI˜]¹ýì)¬îÛ¶+™DAŸ¦Ø”4ºÇ”QßìÓ®Ü>èv{*mÔn‚Ù*ª«®gFo âèÁþpGRÆy’(·#¢Þ£:—Q³@´Ñƒ#ZÞÂ4ñ#mSzHÁÈ•Ç!1V«¢®ŸhhUãÆz?Îø}WÖ· ƒ©±Ñõ}ÉbÏN‹,NSàYì1±PyΈ]_ôå¦lüz§ %sW43ëØ,6i–ðüb½t"ZÇ2ÉÌXTëmÙuÓ+`%ÜN©™ -É·©ZžäåmO042â1;p‘Š -M?P4ŽQMÍ1›€èÙt¬"£~uÖ|˜S1í½Ì©±žSº,¼º;öP“ë:PÝaêµÛ ¬ËÛbW󬽆ò;Té½úWl÷©[ˆ«P:o‚>l¿éã\tn2™]xÎ=Ï3ïûaÓ@+UrÏÓ¢yhqÓϘ„C¤ó<ÎòÌ4ëv‘Âyg2…ÔÀÆÒæä^ƒÛ•¤ OŒ Dœhe8‚xB‘Ý/!Þ<H[€¤ÈT¶0‚¨Äíeñiq—ÉAJ'h»î%à -Îq´@»sÕºjÝwÝÑD4™WW3âë¶Ýn\ÊŠ£ÅÿCo6—D>sã—){\ü»ãLò€AÊl±å3[l³;Äq`‰2Hìqì¿Û6Ô'ÿ‘'Ð÷31šÈNM?悘XAZجKEaçpœå};3Ž -[“6áh»f<È:võ:Ä+¶Û¢¹ÎÐ5P(žS`ëX—If€¶¶ŠÚ‡m§…F–r-ǫβh×ѵÂ9.úÅÆ>/™ÙiÉAùuj6¥'ÊHA ˆ_—„¸É-ã`~ºFØŠüa!g%¯æ®/ùHV -w¡ -¶#ÐÊ]#h¬qQ—¦T<äxœî3‡ßr„µêÝ•v æO!ÔÝŽC/dOäÑ\‘Ì ÊÃöcðõbõXv˜ ÓÁWž7æ8Nœ¹Û´!›aJè¾å"EÐTfP6õ±v6Yt’óuk™Ö€L{øgG½àTÐ**ô3Uç§:ùX¯¦Ÿvã2¥Aj$p•—‹{”ÍõCë3´Ò§mÈf7 mǑɸ¸“ƒÅ0ÞÊ
NòÐÄi'Ò¦3:ð²hW9ÅÎM y{¦ÎŽKwB̗±…h`¨ÝÍ–çÐ (
)ƒÖÎü[Ë_ÅeHò0ÌPÖÆ - ÖÑÃj¬±ßÇâ<j8F“étÌäñNõ¸D'Äa‰a=!˜›† ›v({@ÏÕêP›©TLv×Â^ŒžÒ¸†Ê#Þ•ÀäÙWTŠu~eÎÕíuënä -¨‘‡nW@ÄhA‡@™!É_t»Œ¿'̹Ý)Ý±ÛÆöÏzàä ¬—˜q»Œõ'Ô·«!]¦ª;†ö\EE¡M¤Y={bÒ€åC²ò¼éÚxÄÍ®óôÝûWêP&k
šr)òAò•_êjUõ3ì¤&6€ú¼‘3$’¥\~“}{ÝS\†$gŠè d¸Y’íW>^é·d`¿“žâKLæ"¶Êê1“Ç̈…$ypT³¢‡%Œb¶è[jøÚ9¾e …€ˆˆdëê÷{$?’.úà˜K¦°qÃ3I/Ttñi‘L€oiÆA଱"!€›–ä8Í}Ùê!_&(go¡e;ØrûJ¨T›`ºë©ì4u -+ÉŽÍÈôˆÊòô;8
¦¸IÎ9$N3³_ø¸c£›ëÌ~G=Å—x–«43yL#M¬³Ä?"Râì–¾%½AË?lø'$lb>é´0áz>|W÷åê#ÁãAz%ò‰*ñu…~_n²nÕÂÚXˆfø¢4wM_qdWЇß>F5ÿv׬ç½÷ô¨aüc4Bn´Q“—C¯Ë£Ì
"ߌtC/9†™Êµ{‚Ä|<Y±xÍà[AÄ]ˆ‚{”/ïbfœŠÖc& -%&UÕ¦ê«Ï%u÷vD -ÿÆ-Ω3ÐÉGʉ|¤$} -ïH¦á=¾¾J¾:íp&V#CöYcŒe'îÐ6•²ñ„Ðsÿ@ŒÐ‚>ûata©/é¤Sž -½
ÔÉ=N…0‘6UC¯Ð‡kVLo½_½=n912s^elÅšõïøÐ gGGPÛlÿˆ»4JS±Ð=T.ꫲrL;"û×tk÷³œ— ›ÒØ>•Q‹ó׿§sháÓùŒ„ÂwTÞ -I`XLž”ò°‚<Ô™ŸpKß¡(íJU5‚]kÀ¸óʇgSW‚„ë²üÒÞÆíQß,¾܆þ “˜þt)dVØÈ×u¹þi#™c¦icùZbŽÐR˔Ջ۞ª¬Ö—=·¬¸ô(쾤êI*&ÉÂ`D#û7^aIùgœû•„ž¯ƒ"¼»oj? q?ºë…’ --Cy'‰Ž~ð'Š©ÃÙa¯ k˜æŸéh +xÚÅ]oÜ6òÝ¿bßN² +?% +yJS;qÑ:ãÃ=´}we[ˆVr$m£è¿©¥´ZÛwñá`’Ãáp8œ/-_0øã£c&3µH3kÆõbµ9b‹˜{ÄÎÒ#-C¬.^ŸÊt‘ÅY"’Ååu@ËÄ̾¸\ÿ½ûðö×Ë“‹ã¥Ð,Jâã¥NXôÃÙù4’QóîãùéÙû^¼=NUtyöñœ†/NNO.NÎß/¹ÑÖGáÀ‚Ó³ŸOzñö—_Þ^ÿyùÓÑÉåp–ð¼œI<È—£ßÿd‹5û§#ËÌèÅ=tX̳L,6GJËX+)ýHuôéè·`0k—ÎÉOKk#Ò +>'@Å‰Ò +ÏÌ“˜Kc,º¼-è„]ÓöUÙõÔûÔç}±)êOtE@—-–ÂÄ™I´¥H¤ŠÚcn¢¢»kêΎȨoh&§î矨ÿe[´nòš\Á2ÚF›kÜl«¾¼«Æ4[¬F£«Æ¶ëŽþÁ4»¸è á„uÝ´›²¾¡Ùü?¡À#sgZ{ä®@>3å·)zÜtI)éä“u¾qPW´_‹–àû²ªÜ<°”WÕõhÛ~ÛÖÔï‰ŒŽ€¾_Ùß–ãYÙÝ ôsyMËcÕë¢/ðäp4êÎìŒFÏÏsµEz,®p3RƒP½àÀFkÐT»²meÓ:•Ñ,œ{ÜnP.Køž<+¡dÌx²HY§R[ý¦¹öfAÀEð <ú2ħ÷2±GyùT¬ú²©‰ÿ8Ô”!ÉU,”s´÷0¬'Ù§æd*$²Ä©0´ªÊAL^[+R%œmÖ¯»m¶Õ:ÄËÛ6¯o‚´ +ß$Ž–I'»€N^åGn™ÎðŽzÁ IèdÊÎ/µò1^M¿lK‡ë(
R# „»X{:k‘U«’à¹è~ û ÷.ŽØ¦ÁâÄ$jðbû6ŽƒçL”òvË»È}'ÁCL±oà$øX´ªÖ˜b窨š{ç—2¸¼ü3žgòzŽpö&ËGerÝ·O6¤&]$€.„QωDøpcæãå@q’Ü2$ØK¤z·3²¹ÉûÕí“JÅFrñ‚LzŠO1©ÒØÆÇL¸JžÆ2‘ܼ^Óí”58Rg›zwceO—§¦‘MãÍöº»bU¢>¯¬Ÿ'Ëkà,Jš±ƒmÅG•ðε@e©cªo¹y˜á}œ +ó‹òU¿Å¬Ar̪ÊMÙ—_êî, g.±ÃaÇ9u:#ùp>‘礀¸í†µ
µàÄÀÏûm®¯çNE—/²iaId”B»i¾NF†EWÅMY×”ERóÑ|HÔæf2:›â„>_Þc›Sãªe!ñ{Ç…·æ¯¨¤ÔSÒçHÏ$¥]7nEg«1N²&ê]Vß“€S/LHúÈö”{ÜùĘ8UL>aqYÐÚ…–Ë;/`Ì<ÅeHr.‘ +a0#‡·u¬öÏœ¢F×)çë 8ÞÝ6÷5W@¢)£Î¡PV!y(oeôÛ ˜€?QLÀz95NÃ$Uq-u«|@a$͹R«?®Ô©×I€‚ƒÙ¾+è"8UyMwˆS.HÑ阬
4´÷‡zz–¨õ¬zz!”ŸxùÌ\ÄNZ:›JKžñ.áqÒ¸º¦ÇX6ì®Üî>YšAÑSiÚ‹Ðøˆp—ž9afN˜3§™¾e4ˆõ`Ë–Àu9ªccÑ4xÁX^
%öúTñɇÁÀzî¾(&ŒEY¦„Œ3üP:bíõkB9;¥ÖÊWõFÐ +vFÇüÚË'ç]—ßóºt +ÙÚWâ +SiÔ•›²Ê[´Eí™Ó#æ¡G K0=©“%ÖÅ]›nÁˆÿ-T©8‹¿9..‚X—QÎp0¤,Hkˆl%WLz9"èCÄ!B‘å_mxƒ”áHWj”ÙŽÆX´8DØ
ã×4 ³tK±¡v—yA'g‰‹™gàM`äp÷F¸/ÜôC!h&* +¿_?ü*¨V:÷Ó6©c5ÿÝ
þÝÎßý³·ÝoñÙ1âÀ<–€¡ÌRÏž8ÕS·ßÇí³þoòÒ!endstream endobj -1751 0 obj << +1761 0 obj << /Type /Page -/Contents 1752 0 R -/Resources 1750 0 R +/Contents 1762 0 R +/Resources 1760 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1744 0 R -/Annots [ 1756 0 R 1757 0 R ] +/Parent 1747 0 R +/Annots [ 1765 0 R 1766 0 R ] >> endobj -1756 0 obj << +1765 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.6732 308.8411 286.8984 320.9007] +/Rect [242.0197 702.9298 315.2448 714.9895] /Subtype /Link /A << /S /GoTo /D (rrset_ordering) >> >> endobj -1757 0 obj << +1766 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [209.702 230.3842 283.4678 242.4439] +/Rect [238.0484 622.4676 311.8142 634.5272] /Subtype /Link /A << /S /GoTo /D (topology) >> >> endobj -1753 0 obj << -/D [1751 0 R /XYZ 56.6929 794.5015 null] ->> endobj -510 0 obj << -/D [1751 0 R /XYZ 56.6929 769.5949 null] ->> endobj -1754 0 obj << -/D [1751 0 R /XYZ 56.6929 749.6227 null] +1763 0 obj << +/D [1761 0 R /XYZ 85.0394 794.5015 null] >> endobj 514 0 obj << -/D [1751 0 R /XYZ 56.6929 377.478 null] +/D [1761 0 R /XYZ 85.0394 769.5949 null] >> endobj -1755 0 obj << -/D [1751 0 R /XYZ 56.6929 355.0589 null] +1764 0 obj << +/D [1761 0 R /XYZ 85.0394 751.153 null] >> endobj -1750 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F62 1347 0 R /F63 1350 0 R >> -/XObject << /Im2 1336 0 R >> +1760 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1760 0 obj << -/Length 2103 +1769 0 obj << +/Length 2587 /Filter /FlateDecode >> stream -xÚÅY_sÛ6×§Ðô‰¾©`ü%ÁæÉÍÙ©;sUtsÓIóÀX”Í)Eª"Çíô»ßP EIn™Ž -diBµfÓÅò}ôú»‹ÿ,.çg3®h“³™ŠiôíõÍ¿‘’bóúíÍÕõ›ÿÎ/Î-®ßÞ y~yu9¿¼y}y6cZ1XÏ„®®¸ÄÞ›ùÅ?^ÌÏ>,¾Ÿ\.:[B{Æß&ï?ÐéÌþ~B‰Hµš>€–¦|ºžH%ˆ’BxJ9y7ù©ÌÚ¥cø)¡‰Ò<ó1 -4§Åˆóºâ“kѽæxö@ʰ¸ -*Z?”mÑ'çµm—
²dH
9Ú‡me}¦‹ÊÇÇ^5öìÌœ‹Këì H…«‡iöîB¾ø¥üî!ÜÏÅ;9rmL1‹ï¨>r$›2»µZKZÛm¥t€ä\Ú:§‰7à«&¢ïŸŒ@°Ñ ߈ÝnáfµyE‰Jxêx›6kó5†-Ør“o×…½¬ ÈÎþ¬-ì}k'´–˜^`ÝËðzgœÓAUS¸§S†Mà
0êË i;ÞåŽ?+›º{‰á¦x¨Kå±ð÷p4!  -¿×U5~ÑsÏaC*ÎXäºæ>æ–æKxù -ûo…FUYÇ-iFÃ<ÞâÄ_û‹›ŸÇCCœJï»Å¡rÚ)åõ¨´É»½ìäAÝÒP7}@·DÉ»”vL·ø¸nÖ;ƒ -‡û!€s<¿JA4T€Uî/!ã?ŸñÝ?@Þ%ÖÕÑyï- iðlø€i[NJï’ÀVíHÚÔÏà°h …F¿×U>VЛUeNöª0
«8æÓ™—¡mÎz·ÿóEú‡B¹¡å©óƒøËã›#«–øaã/œŸ -aïjùîüížM½ö<¸Ñ $2:‚úΜ—!$)% ‡wÖ,ÊD±±bšNOÈsÿGÜýÉ*MàÕüÀó +xÚÅksÛ¸ñ»'Ÿ¨Î Á›Àå“/g§¾é9£N§“ËF¢cN)R'Rq|7ýï]¼(ð!;©¯ÓÉ$„€Åbw±o„$þDH$5ÕI¦9˜ˆd½=ÃÉ'X{sF<Ì2 +|zóx9:Ð][|yIc +:ض˻b[Ô;rWì·e×:BŽüç]ÙÔÂò ßžÊ^æ¢í¾ Èœ(À¤¨Î†g/T'wŸHà×O<wÁé»ÂÃçUÛ¸Q7/7•esdìp*4Ɔ‰‘̾ûF%b|„¤)N”ñnqÿ)qƒ›ÈmôðËxƒuÃã'x
¿ë?² M:CZi6 iâÀz¨§(™`3” w¥Œƒjiœ@Ávñ¼ž½Dpy‰öº'I¥²DýÀúk9Ú”šwãË€o!tÃÉ,ý±öÆwÅzF+(E‹`JeënbS«qîÈ(¡Ÿ¾mªª¹o¿÷î.Tc$•Yï×UÞ¶î Áâƒ$‚ØHüA=T,-Bʰ'4C:“ìÙòê1.c”VbâÜeFAb=˜!²Î·ÅœÈ +a¹.»Ò† +†Çµ.,ÛZ7†í˜»/«ÊMnón}7'–>VâtýO‡÷уþÖÃ>åob¥zž¢uÿØûD,"5b$ŸP:#%é 7)ji¦Àló"PÀsÁæ‹ÚЕc¦e¨¸ói—ÍÞI¹ø’ow•ã£vž¹MHp%V“ÆKÔËùéàæ}bj ®®Ý×8vtî>.3£¦Ý‡<%4ø…›Îr®ñÕœÆGPΜ}Ïo–°¾ç7j×A1¦ˆpñÚk¶”é:?´Eè·=Ä/×’±-»ÌæU®}fy4£ó“>Ù·ð¼ÌÐÉ`êîrßûË?{TÇœrp;TSPò¶±gØ„P!MKrcÖ<¹û´‡[Cõ@ÆsdÄô}’¬6áf Ó¼ºÏ¼ûýø¤ç}$ÈÙþÖyå3×|Â~®5ömž>vñ'<¹UòìèÉãÖÜ4_æÕŽì“íHÉ´·Ö»]‘[ZŽÅÅÃsuã˸WˆJC¸Álä=A£º‘Ë…Cª²hÑ©—È¡2ÙW=%(²µà'nÅ@Řþ—vŒ\rÿd”A>lØõÊÙ€5 U¸p%\îpÝ„ +08:ù5!àcµf([^2°/¯¶4ù±Ž’ˆ©€xc¶LÉ*ÓqÊŠ@ù‡ˆ+PgNLÞ¤f´/ª"7îÉü0‘Ú|]bFtŠs}lËAƒ‡c„©Ô½/`‹ÓäÅÇîÅ€0Á!)îK먹nÎÛ4…'̪«´‡ÝθFS]¸›åDz€¢Ø×flpĬk'æÙä$R§
yn%¸ÁcÊpã< ˜¹,=f0³íN´Ñ©I¸Î*lrXG™üèÊm1%À¦3·¾\§?qJçNXF¼R»òÍÚ}-ÃÀ,ÓÇâ „mÁ‰ºøswÓ< ’ ª´JbzžQó”æò¤Ç]ÆÐÎ…yu›- ŽÁôos¿ͲÑCí¯càìh.¸‰,C4“äÄ+§ƒYF@§) @† +2™e×U“?Ø»†xìÔ endobj -1759 0 obj << +1768 0 obj << /Type /Page -/Contents 1760 0 R -/Resources 1758 0 R +/Contents 1769 0 R +/Resources 1767 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1744 0 R -/Annots [ 1762 0 R ] +/Parent 1747 0 R +/Annots [ 1771 0 R ] >> endobj -1762 0 obj << +1771 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.6787 237.4931 427.332 249.5528] +/Rect [325.3322 626.0361 398.9856 638.0957] /Subtype /Link /A << /S /GoTo /D (the_sortlist_statement) >> >> endobj -1761 0 obj << -/D [1759 0 R /XYZ 85.0394 794.5015 null] +1770 0 obj << +/D [1768 0 R /XYZ 56.6929 794.5015 null] >> endobj 518 0 obj << -/D [1759 0 R /XYZ 85.0394 308.0833 null] ->> endobj -1289 0 obj << -/D [1759 0 R /XYZ 85.0394 280.4919 null] ->> endobj -1763 0 obj << -/D [1759 0 R /XYZ 85.0394 154.8032 null] ->> endobj -1764 0 obj << -/D [1759 0 R /XYZ 85.0394 142.848 null] +/D [1768 0 R /XYZ 56.6929 696.6262 null] >> endobj -1758 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R /F53 1298 0 R >> -/ProcSet [ /PDF /Text ] +1294 0 obj << +/D [1768 0 R /XYZ 56.6929 669.0349 null] >> endobj -1767 0 obj << -/Length 2721 -/Filter /FlateDecode ->> -stream -xÚYKsÜ6¾ëWLåÄ©2i¼›“bKY¥yWšÝKœ5Y¬pÈñcYIíßàk8ò+vÙÁÐhtøº‡.ü¥‹T&R3½PZ$)¡éb½=#‹÷ðíç3êeâ ¥~Z½¼äj¡-™\¬îse É2ºXm~‹dÂ’%Ì@¢Wo¯/¯~þÏÍùR‰huõöz³”D—Wo.°õóÍù¯¿žß,cš¥4zõÏó.nð“ôsütuý{4>NLzsqyqsqýêbùûê—³‹U·—á~)áv#Î~û,6°í_ÎHÂu–.á…$Tk¶Øž‰”'©à<ô”g·gÿî&|uCçì'M(K9P$œÑg–Å%,ë›B%#j²jL‰N(üS2Ìë΄ÑÁ™Pš&"S•êDrÆÝ™¬ŸÖe±¶¦i6–i¢ÓÔ®oÅn̺Þ/im´jîÞ¾`»=ì+³Áž¢òbøð«ôÂõ¡ÚÄØº²~³·ç—X•`ñ˜RÔÃjqu’‚‡£‡VaÕ,Z×Õ;BØûª²Á¯Eû€öÁ`ãcþISåw¥‰í OTÙ7¦µßPªÞµE]áÔy;§ÊºÞîŠÒNÊIÔKmÍû&ìZ•ïw«2
æ(Ú"/±·ÛgQ½ÇÏõýDþæÔÁ¾Ç¢,±s›·ë‡±.W8ÌZ°òfgÖ…ÝÛô<:Ñ?;Y+Všd"U‰ ÜeàTßç¨\d 4XÄ}€|.âìEÔ$â¾mTP„Jp -?ÀƒŠÝšW"ÇGs¸·Ú:²È¡hÔÖhRžÁIÁF—ù“‡ß»Ï"/žä,²Æœ‚w8ãÛ€ ûál߆ôCˆ?äÞQ:$Éí¡l0¥7ãÐðn5)2oÆaT›<%p£éÔË6mÞš©Ú°ƒÝÎäN— ->Íl®ª[¿—z·RØ!œ š 'xT;\X¤,L“œb)ç–eˆ/¢”%Z§b¾À”_Èn -ï(IR΂뿴 Ñ -þgÑû‚)‰*Mw˜ºø° Zs”´ÝN{¸Ž—W[¶x]Ã~ƒ-…yãÁÄnGr£p?0«÷S‚ ]+šÂ1[Za[{SšÜB“}±·´}"û°-
þ–s~áŒ!ùo ’&uçÁK‚^¼d$ê<y¤X -úP!§žŒëmjãs®jÍa·³°(À;±Ç1*K`f`
âÏíû©=¬Ã@¤#RGwV½'lo̽'‡8µÀ!htYø™Q`fü:¯üDŸ–lÙ9Ë0ÑWX¼´ÅÖ+à¨Ìý“|æRÒ9\!ì}DëpÍ -ŸÇаŸzêhzIPl -'Làæ_-)0ÑCåct<0‚_RšÏg^&Ö$YEJ`1qÛ–ÓUáv&Nà¹UƒÌñª#HP©R:ZõÖ´>Áèˆê°½s÷%t:ÞÏîÌÊÝ—6Õ¨}J’¯qs7>|)Ãûa’¢ÚëÜæ6ÀHìßMQü¬v6kty©w$%«‡ÿÀóøå´!Ùô`rýv5sur¤àSbW l|6f“ÀjyÃ*Ü€<hf¨å"ÑÔ ˜ãÌú]Èš[‚]Qâ¹AQZÓàÒîŠ6“{x›*¶Ïr>æåÁ<§s¦yPršY}d9ú@~¬Nâi$ÒtÌßßO…ƒ@Úš[à"-f¼¥;´4øm!n±>%BëõõííÅ+lËM’Ó4ºÏ‹Ò缟«c4vMëƒï1+ËóúoE€3ÁöŠxb;ûÖž³ƒô^ßÑŸp>µg©¹ï±`!°Baü¨âþˆXuÆÃcô+µã‰!,š02¯fÕJNâ@—ì3øÔ=ƒO^ÈY)ÿWn›s(E!Ñ$OŸ]¼:^}è ”Ar`‰ñpùÕRÙ:AêcwsX»b‚ˆ*Ó>Öû?ðc»Ï»´cß1¬˜½À×8ÖQÛ³3{Hºà&\»âÓ¡D‘ö34mÝû |«Ì{ðÑ^2¯šG³Ç™X2mÒVÃFwdËim*K$í0Ãy ãäl97'ú
4rÔ³‡èó©ø#F“‡1-L5™+5¾Ïï_ŠªûÖ -öÅÈ™zGôËéêàôØH)$=ЉqtÊhoœc$ÔpÁpÌ!g †.§êƒ]!,bó¡>ì{Lœhž/!‚}›æÀ"}B¦"óim\T¤¼½|.¬œÿ"S!Ö°#oòe†AÒÜ -›ÖI0€ÂsW—ÊDGI2¯Ãè?ñ®±w›?a#”À2KJýp0þª„ÞÖè+0ø~{q³Sý÷ÒÖ7ί޼À±wgœ+ä&œCZSÛ"ç-Ú`/~µ%kðâÙàÍøÅ¥½”Ýys°fesß{}‹Ow£ØïÝöm×9üyyŽíI™ÉsK·& -8°þV©Ëƒé™Ú÷¹Bp2ΨJ“ÔîþÙ8J޳NÊÅYQÅûºn›£#FBô<»t'5³ö(Æ€¡k¡Ôxqsd޹ùÈÒ}z’fž°y{׈¥ÚUƒŸ|!Zȵ‚É?Šþ—øêÃ4C¤ë¥LÓN|ðêѪÙdÕEî|2‘p1
Â|½6»ÙëçóŽld/™d© -¥C6W0DÐB#ÇÉ(äàpõQ¸9U_ôÓ «ÙÚßNÕìLªô×üŒFLòù ],I¢8˜m¾f—A¶£2ÛY¦þŽš]w‚‚TQA^—ò¿d¦ûy+v–K.¸=-5Vì®{)ð^[·…2ãk6…/õøŸ -¡¥O—o†ü¾£á`t© ÿª_¸žušHÙ7f„tçþÝ¿aªE*ÕN@R÷£O;—=%˜$ŒËNj úÿ&Ï?endstream -endobj -1766 0 obj << -/Type /Page -/Contents 1767 0 R -/Resources 1765 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1744 0 R +1772 0 obj << +/D [1768 0 R /XYZ 56.6929 543.3462 null] >> endobj -1768 0 obj << -/D [1766 0 R /XYZ 56.6929 794.5015 null] +1773 0 obj << +/D [1768 0 R /XYZ 56.6929 531.391 null] >> endobj 522 0 obj << -/D [1766 0 R /XYZ 56.6929 429.6422 null] +/D [1768 0 R /XYZ 56.6929 132.8855 null] >> endobj -1769 0 obj << -/D [1766 0 R /XYZ 56.6929 406.031 null] +1774 0 obj << +/D [1768 0 R /XYZ 56.6929 106.4421 null] >> endobj -1765 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F62 1347 0 R /F63 1350 0 R /F48 1223 0 R >> -/XObject << /Im2 1336 0 R >> +1767 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R /F53 1303 0 R /F62 1352 0 R /F63 1355 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1772 0 obj << -/Length 3659 +1777 0 obj << +/Length 3335 /Filter /FlateDecode >> stream -xÚ½ZÝoã6Ï_á·s€Z+~‰Òãv7ÛÛÞu·—¤Ú>(¶œèÖ–\KJ6ýëo†3¤>,{8à ’CrHþ8_´XÄð'©‰b•é…ÍtdbaëýU¼x„¶®ó¬<ÓjÈõýýÕ›Ê.²(Kd²¸ßÆJ£8MÅâ~óëòÝ_ßþ|s{½’&^&ÑõÊ$ñòûŸÞSMFŸwŸ?}øøÃ/·o¯^Þüü‰ªoo>ÜÜÞ|zws½©Ð_òg:|øø÷¢~¸}ûÓOoo¯¿ÿñêæ>¬e¸^+\ÈW¿þ/6°ì¯âHe©Y¼@!ŽD–ÉÅþJ”¯Ù]Ý]ý#8hu]çöO›42R'‹0ËD¨ù]Ž£ØÀ®¬‘Ô±»,ÅÜ.{.Üå¦|\=ç»rS¶¯«²j‹#”¦kÖD6Måb8Á‰kF9C€¼6ÉÌX»C±.‹cY4p6Y¶OvYuû‡âH•õ–ê6ù+³Ì5Õq‡d¹íÚîx-Ò%—_žŠŠXÞº»»yGµ°ò*÷Œ
µç][ïó¶\áÀ:â(•ÊÀÒD”C¸\ç»Ý+°Çéò±¨ŠcÞ*æ
éÃ#w»–ÊNvøn^«|_®©Ð60 -=±ƒŠ‰e¬Xu”I‘1¯Æ{,ŸK+Ò¨›2Ë'¼B8„¦±N[Á×RñFR‡E4Åk„º}þµÜw{*À]Á3çáŽBAÄ4Ôk‘ºŒpÿ…Êìô.šX%ILæçC…}KÁ^' åÖTUVëâÀºŠm¹÷
}» -AY’žp]*@jËü5}늻áá5¼ïŽÕK±îŽT_µÓIýp0*œ -™BNËÞ•û’ò}ݹ1vçßõ®^!²ùR¼\gryn‹)C0 P·F FÊY`‚¯LE -î;²sf°% h$xWyK»"oZ®kŠgÐ#;jØÃ](;Ã(ƒjÚC¨¸ûü–jzOe’ëZ,ýHnKáK[êà$èvk'xÂvûÄ* ØTç†Í½ÑƒŠ‡¢}) -.°X1€úXÖ]õp¬<d^ñy¥O‹8쥛F:±ÉeWnÈuÞ•\þùB¯ªzS4'n\’D*UÉe׌#mcE¤…pnÜ7BxL„øs@»ó’—:ÕTõ -!U–ÚËr®AFkÎ HÇrôH’ƃDsÏžËSíTT4íÐ$õ©kïº:Ý$½¿ãêŠ#à -n+®C½.š† ÑOŒc(¥ -\S|µ¯‡âY&ƒp9N.K¸fD6pÝʱ=´2M‘†Ã/Ÿ P¸}Oéü÷–ªœ¨D¡‚ÊŒó–±Ü5N3ŧûÎì[éå—‚gx\š
Òš¼‰s«´ò&î`°ŠÒ¾@Õ%ÞJC¤£Ì - àJS›
Q -4Ï™,Lö×´{.Ü>Ð/«c±
ú´B¿á;:90ˆ³ÕŽ»=¾žòúÊ“ˆ< (Ï‹K\3kEäÄJËñ" -Î[ˆ¤™œLCšTYÝû !mkö.‹â‹Svsbé$²hä‡+—‰PIiú21§eºÑŸÎda&Ýïñ‰›ÌdÁÌÆ‰g2Î’ÉlTÀ…ÊÉBÏvp³À§I¾&
¹ÎöÀåîø¦jVÝæ -¾c…>œ±ïN¯ ïòõP»bÙP™}Ü¢|Æ,¶Ã¯Ö˜}šdiþ‰š -Ç w޼³©]œ4NJtðcŸ7…º®é\6+ƒÜ•I6Ì…3:_OtÈâ -‡Å µœÓÝî!wy_|¨©¶ãtT‘ -wz3NøÕºîàÈ91Ü”4Ï€¡ó5$–Éá̦€By•]Þíóg”Y]EÐvƒÿéçS -aÓ5bsFŠ”28S•Lr#Ó…>ÎÐtÉXŸš.dâT²óÓCÓ…=ƒ5ÂFoºF}´÷åÔ˜¹~à.鑱šÑMçM즞Ë&¤ù½lSà–Ó÷ÈÊœÐ:'º ìÏÏ`B¬(ƒõߺ7˜çõ³0F8GB&vdwï™,y9 Kýlý2F}â~ÇI
2C¸’ǰrÿœÜ+v÷˜»%#.Ög"`TUœy±ú¼-°6ã*¾ñ;°žéÂÏÀ˜‰. ¦†P¼]±‚û»'7hüx¨¢Dªô¢éT„qRBã 8”aô0%8C¦xÛvL³pŽv?@/eÐzÎÆLܧ SL«ÛDré÷Tžýò’NFýš -ÅI"ð~¦Â€¢EØÚ‹»˜.‹p2VVFh¯»Óöi¯.ÏüîDÄ -ÂrŸ÷h‹¯íÜk‚Š2üQ$1}ÇažL"¡“±ñ¿ÒXà—ÎÙ奆9{×Ó‘Ñ>D:°÷ -(ÇÍÅÅ¥zù¡¤sÇq+úÖ”„C’PÓÐ4Nç.TAࢬL¾±R…ˆ«·í(êë¡äŸb±øº:÷RL=©ÙŒ@çþç_—ö?½Õ 1¦ÝçaþR*3,.Ëž Ô¨42©´3¢ÿñ§%„endstream +xÚ½]sä¶íÝ¿bß*Ïœt")Šâ£sçK&¾Öv:ÓIó Ý¥mÍi¥=IkŸóë ¾Vk§s3µ‚ ‚ +ÇT?ܽÿ$ÔJG:åéêî~4WÅYÆVwÛß‚¿øçÝåÍyÈe¤Ñy(Ó8øáêú#b4~>|¾þtõã¯7ç* î®>_#úæòÓåÍåõ‡Ëóe’ÁxN3œðéêçK„~¼¹øå—‹›óßï~:»¼ë÷2Þ/‹…ÝÈ׳ß~W[ØöOgq$t&WÏЈ#¦5_íÎ)"™á1åÙíÙ¿ú G½nè’ü¤È"™qµ @ÎGd1ÀIºRRG©à ðç|g®+a[Iäe[#´©«®9gYP—ÅÈ {4D´«U‡p}ß®ØQïÇëÛÛË?åe±Í»¢®pŠû¼(nVÓÒ\Ø¢5óÍ£Ùˆ8î͸¯ðp¦]Q¡•>ˆ d,ÒRr·ŸÝa‡'ä8ƒ¯ˆñÛØÒ¶ÅF¾ß—…Ùb£«ñ»Î áø@Ѐ +C£ +š²ó½å <ÛÝú•ºéÄ¥i[?2¯ÙŠŽ4)Žb J®Xi.Õ²åQ8¦ÂƒgK–㩜 òoaåvêv0[žI%\ë××縉hžL£„11åàî\óÀŠˆË +ôGÆÁÇúдÐfK'œñHÇ ÿß8gD¾É«ªîpómcÐ˨@‘¼òâÆª°° +õ\”äWÖämÚ¢„ƒ/_È•4çYp +Û·´¨þýÉFXW?¿Ã±kƒ3Nnvt9–!² ¬ÛÎB%Ú"{5¸1ÐâÙ ÍØssÓºcµ°Ýy{°fisÂ^ßâ×]*¶ãÁmߢ.àïý¸…
^‹g„k"S +¿”̤<Ñ +2¹T¬Æ"ý¾SL©!u
‡Œóût(wa;¹(%^@† 2êvÚ›õT.Ä+B—hÝKèÜ?´ŽÎ_ÉHe_8ölžjÉY»*… sÂÈíÞl +›£¸»Où€@©Á»Òy7Õ‚€žkÄÑ +¦d“‚÷ +¶¤_Ä÷úÅÀÛ'IüÆãÙ˜ê´~õTsýê^öæøùLC*§¯sÐS-°0Ùmš@¢Ã§,ª¥ñU>û¦xBM€ÆÍG|½vVD9V²JK|[€6½CD§EÏ]%ÁC«b®d^µU"†BµLlMäTú”$°Qðát¾ë¹ ®°Ð×Ëè¹ +´GĉœFWv1FEq&íMi":ãÄ›•ƒ<Å>oòÁX›ù‚7 +øL2xè¶UD¼Ÿ™ÉoŒ_ÐŒ©põ~’¶ƒ»#PZÅžàiu d¡Þ(©^QwOÕŒÍ=¸ÐÇÐïðèì{ÍÚQwÍË1G%å™¶ohÙë[è©ö0IÊ5¤"áÓMÜá«(åÖ-6F¿t@„»ñ-àßqÀ€þFá>Ï`jW!+ôÚ<æO…Ñ„Ü)ÿX{ï½=ZŒÀ‡]ø#øóõ`C…æ…¨Šø€£I +Hà†D=À¬¥uÙ +,Ðv‡5¢,S--OÝ`-e¾ÛŸú}–‘ýQÕ‚“‰ûØâ»»5ü°-Qdü„·²Ï>\+Ï”½RsÎûy³þ'oPÑÂendstream endobj -1771 0 obj << +1776 0 obj << /Type /Page -/Contents 1772 0 R -/Resources 1770 0 R +/Contents 1777 0 R +/Resources 1775 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1744 0 R -/Annots [ 1774 0 R 1775 0 R ] +/Parent 1747 0 R +/Annots [ 1779 0 R ] >> endobj -1774 0 obj << +1779 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.1789 725.4794 363.5077 737.539] +/Rect [315.1789 427.0782 363.5077 439.1379] /Subtype /Link /A << /S /GoTo /D (dynamic_update) >> >> endobj -1775 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.2799 73.4705 410.176 85.5301] -/Subtype /Link -/A << /S /GoTo /D (zonefile_format) >> ->> endobj -1773 0 obj << -/D [1771 0 R /XYZ 85.0394 794.5015 null] +1778 0 obj << +/D [1776 0 R /XYZ 85.0394 794.5015 null] >> endobj -1770 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1775 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R /F48 1228 0 R /F62 1352 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1779 0 obj << -/Length 3706 +1782 0 obj << +/Length 3924 /Filter /FlateDecode >> stream -xÚZmoã6þž_á°ÖñU¤ÐÃÛÝl›âšÞes‡Ú~Pl9*K^KJ6ýõ7Ã!iI‘“wØ`E)r8œ—gFæÿøB§Iš‰la2•hÆõb½¿`‹ûî‚û9«0i5œõíÝÅ_>I³È’,éân;XË&ÌZ¾¸Ûü¼L‘\ -lùá§›O×ßýëöý¥QË»ëŸn.WB³å§ë¿_Që»Û÷?þøþörÅæËß¿ÿÇÝÕ-
¥~o¯o>%£Ç™Eo¯>]Ý^Ý|¸ºüõ«»x–áy9“x/?ÿÊ8ö,‘™Õ‹'è°„g™Xì/”–‰VRJuñùâŸqÁÁ¨{uV~œ%B¦bF€Bhy¢³L/ŒÎ’T -éx(Ö]±cÁ»Ÿzy_Pÿ¡¨‹cî‡üì§í -<7¬Î«s)%žpÝ:ߛպÙʪø½©Ã+C†2pm´£kš -îAZ¹¼iº‚öìvyG»>튚h9Ü¢Žðc¢ò<—ãI›r{Éír[ñQÔ²±X aA -tŽó$ÓZ8¶ÍqOÛIܸ&–Õð”Z%YÆL`¹øÚÍœK€Hiý¤²¥«&ß›w3¢S:‘VË¡äfVùn„ŸµÏŸiÙf_z µÍ¾ð´m8„—ÊzW¬ó|<íÊõÎË´é/ù²ò×ïß>G”DÐ -h“ÐxÊ#ÌXf(gÅOW ]ТžŒ%È˹}S‚’«ÔO¢{AÝ`fyíW?äÇ®\÷U~DÛœ+ƒ¶ü"N+n;³aʦe6œÛÒ>›†NU7òáz¦&ŠÆ
Ε°8!‚Ió§¹£‚eK3wÒ»]Ù’äÁ¬`RÕ•|ß¾ÈkdRKwZ“ -›Ñ? ý›‚‚§ØäHèc,ФÕpa>¶â,gU ¢mWá¿ôÅñùñ´Ï¿®fǧ\ -™%ʦüu6ã¬>Ç’T‰JuŒ½Û- -¥h…ØÐ^¤@)ë²+óЍyÕ{ú/L³=îû=49çõ†Fá|8Bºßß1* -¸q3.ËlI°cÝÛò± RëT]^MßeA؉ŽúdÖÐÈëgj<ÀÛ55I¨®‰“vñ‘JkÃzýuFMb”
^äºÂw_ºçü¿®ò¶YÔ‚¿M#FùÛ[kz “Þ‰»V@q_CfùT‚ë"§¤ ÈH%Æ–˜¯×ÅÁEð%JŠýl¹qæp ·3òͦD;q×}¯‘ɬûg1ä¿tj±·´SކË8±-ª-µº¾öLv€t
ßvj£k€™EP)ä -{2a ɇ‡bƒñ‡3Ôu¢nŠmŠE·WKíü$3¶ä̉$0'8á -ðŠÕÚzr|ó4ò
Ív×ô.B›V_$!… Ò®y¢Æž4Z¨®¥ã„kðf{¿stð$U‡FN èЬóédR l”qÈïÜ忞]w‘¿¶©‹p¾¡bpÁÝFN˜by½%’÷¿<Xº“TãOG‚Nñu]Ôáñª½øç0)Ú¦µÑõ¿B2Á'Zسmû}vËýe—þ ¥çiSä•7 ñ£˜—lD"1Š´¬nê•—Ø¡©ƒ·J—§pO$Ï‚}d|2^½ÃI)‰VúƒwIºzïw;n;réÔÔaЯþn|·Â -CÍé
?'Ú™òv&ÛD<„Ñÿ0ë!ævpªm3pÖ–•a`®lÆ™FÍz!^s^¼P'ˆ*"ÕW°ÏDÆœ),Öd¬„%+aœŒ‘0±2"¨ž°Cc7,P7ô~p‚BÒ}Ó£|°Ù¸·üûyMSËý¡i?ãþys®! ‰I@:<= -äœè¼]I-2`tbA'™Q“€iÆcRHÿ=¨ƒ®g~WA¢™d,ÅkK¡˜ŽuZžÂßå - -éN„.¢\/f;.¥Q1°SÉÔ8I\ÚÓbÒòå¬è±Ü8'Œ£‚`kWT‡m_ÑÄM™?Ô
8þ5
ޏ@B·£¥ú‡½‘=8.$á!í>{Ä¿› ->—fâçCÍP¦vÙ;V™a# -IbI±€c_fbé¦S é;p°“÷¢IÏÜ?„¸û–«Áš|L½½SÀ•ŸiÓ
&Ÿ¢v‘élðY|=TåÚ¡lè…÷4ù œSË•Hubl¦ÇèûOÈy\ë)ƒ¨±ÞÅÜ;ÀÍa%b ‰k‚6{
gGBq–“[X©§ûfXÑc[?gf×ÉW<%ïêá†Û»N¨Ñ -±j -Ð&«>4Çο]æÔð -Š =5vÊ–ž]%±çõâ•a'âh;rï…ü=…ÈÓ?㇚í3ÚäLhb -ÊCæ“Áw~3ÿ»ÁTd£cøÊ:ïÛ3è@&€&¿ñ8ûíMR§_%ââÊ'Æ™§Uø
ä¼%ª¬HryjRâLÎGV÷Ò)²ÅjWµÏD% 7ËÔ¬ -7öexô?¦}Éú +xÚ¥ksÛ¸ñ»…?Ê3'ž|L;Éå’k:mýÒö-B2ŠÔ‰T߯ï.v‘e·Ó‰'Âc±X,ö
Ê[ÿäM“´PÅmV˜Ä +io7ûq»ƒ¹Ÿn$ìÐzõÃýÍ÷ïuv[$EªÒÛûíWžˆ<—·÷Õ?Vi¢’;À VoþøþÃOûôæ.3«û?¼[++Vï?üùµ~úôæ/yóén-s+Woÿøæ—ûwŸh*e?|øø#ôsé§wïß}z÷ñí»»ÝÿéæÝ}<Ëø¼Rh<ȯ7ÿø—¸àغ‰.r{û‘È¢P·ûcubÖa¤¹ù|ó׈p4ë—.òOŠDéT-0P©s™Ø¢°·™-’T+í8<::ÓçŸßPãx'ó•ÛÒOÿHƒe[g‡ã3u‡zïznvü0ö·©ÿ)„r¼ökÙœ\Ÿ Ó€r¸‡ÄdiáɸÇEZd«m×4ÝSÝî°›®*·-OÍÐÓdy84ÏwRÊ•Gç“£óIm“Ëp#Ê}Ý®p8ÃÉ䎈Ä*#y‚¶éݦk«þ»…=lž¤Öš°EùíÕ-$« +[Àf…šmãÙ±ÖÖ&™ÑØ"“ÂZåáÿ)¬0ļ'ç¾ôЗKd™4É„1““Ã]#*-còœÁ-ä/,œ;^ùåNìdÎ<öxa§L$B¤ƒK%Št¶uð jvÐäB»d’I™ùy’¥`–µ€Öc(R¹`M"Ò窶_ŸªÃº¯sóÝø$Ïdñòöjaÿ1c¤²InµšðÙ¡¨+¡X‹ QV_Ýq¨{¯DÐ÷ãÇÏÔúÛ¿Pãá´Eܺ#öõÊSïgê–!žwô̼2wÍlÇóònKåæK¤Œ,ÀÆÕ_]Eº¼6&QŒõDvÿ~W +‘´ý“;²eRª +Ò3eˆÜkÂܶCô¶ +Y]Ñ …Åʵ›îwî¨Û×´Ïeç=ºúxIÒ«³Õç}é¹ +áÙëÌ(xf¯˜ÒZ²‹0@>[c†ýèÃ<¸÷a8Ì>›L5´ììÃptæÃRËç¢ÑÇ}lÒ6–½Ö‚E$҆ͱþ÷aØxÁ‡©âŸ<ˆ/¹0ÈW,0öìÃ{I?†á8ÒÒq¤K¼ÄÉ"a6óÞÊß)Äá‰ñIÓX±'>#Ÿ±SÂ\ú0"æÁÉasìÃpå(†ÒчMÖ˜Ñé)ðý(n2¯µpŸ×}pLO0ÛÊ@K€æ©5‹ Ý$¹ yƒq ÊQý‚Œ@¢• Pÿmœ¹tŒsbbp‹â†'ͦø3‹&“^ϲӒ~ Ç夜x°;ìð(»xô +d×–ÍÙÂÞcéÏŒ‚±¹’£—ÌÃ2ÂU§ +TÕ“¨¾BƘ'¶0ÅÔ·ÅV™¾v7Ö$E!²W®uȤ¼}ŒMWV®Z¬ÙDçöÕ¸Wf2†-Ï„¶Û×Ì¡¾Û;Û†C0W6nó…é`Á÷<íN
Äš|ý¼úàŽÈ‰ RQ@’ŠÄ²˜™ +`S”½š±| k0Ô‰0Ù¬xxÅc)“ˆ,JÆùJЦøþâY²ˆ'UÑó…üʧ8³ÈüRþ¬ˆòw%LÇ—¸á—£ôÐõ = +FQ5ó<Úü—¢"¾Æ€ ³ïO{v+ù®k>HÍ4U®lX#d¼9[²LAbY¤ó·vÍ;tm0VéêìçI`t|º„¡ 4>Ñ=¯>¡/$<k5߬ÝQ\¤éêu¼/Ü=츥—.˜œi:L2öï–jЏÄÉL©âٱ⠿[s=È +XX·9éÑx|Œƒ¶ñÀsM÷t~( ŸëÄÔwròoD8ˆ¯aˆ©{Ä +0v!éI”P!¦¼ê“/ƒ¨‘‰'i2ì@1ïhà7BÓy¯o™-8áÁÒèˆ åuMMI*Luçõ̰žé@6
ÂlpVæwð¢`«óY7RW±`K£dý/ì•n«Fÿ-¥0øÔˆÇFåÄc£èÓñØd*ˆžÊÇ<Æn@Ðv´þtðŒÂ¡‡î„üÁ&—žh}Ùh½?t¾D¢b)-ø#5{P:†p&z)€Ð6/‚»£ÊÔÇÉéËAêêz”¡øi·Þ>¯+הϗï‹*±hÇ‹»G¨…í'*3¶ —žìON9Ão5üÕ%ç4<KÇ1åXužœ‹S-§HYòGhQ='å³Ñ¿Hò:yS.é·/¦c‚B” +z&5B°àx0\8äŸr|^ +‡ÃÑï@!¯=‚9ú&àлSÕ‡î°ö•uÕ¡_X*Øh•¤6~©ñP·Õr}Xeñ1Ú“¤³k…p±õöo~þ¼€bô"Q¾O°ä
6Šs.ÄŽŒ~,JãéÊã@-Ï*ª*`wÄ1èQ§¯¼œÄâ0㓯<›ÄÏvÏЗZ<Ã8y0Q²ðò«ì¥%±`#t>"dÁŽ0Ì‹ûÏ1R(YæÃï(7›>TâSAž¾ru endobj -1778 0 obj << +1781 0 obj << /Type /Page -/Contents 1779 0 R -/Resources 1777 0 R +/Contents 1782 0 R +/Resources 1780 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1783 0 R -/Annots [ 1782 0 R ] +/Parent 1787 0 R +/Annots [ 1784 0 R 1786 0 R ] >> endobj -1782 0 obj << +1784 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.6967 330.4997 116.59 342.5593] +/Rect [324.9335 477.5927 381.8296 489.6523] +/Subtype /Link +/A << /S /GoTo /D (zonefile_format) >> +>> endobj +1786 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [55.6967 61.5153 116.59 73.5749] /Subtype /Link /A << /S /GoTo /D (view_statement_grammar) >> >> endobj -1780 0 obj << -/D [1778 0 R /XYZ 56.6929 794.5015 null] +1783 0 obj << +/D [1781 0 R /XYZ 56.6929 794.5015 null] >> endobj 526 0 obj << -/D [1778 0 R /XYZ 56.6929 408.6339 null] +/D [1781 0 R /XYZ 56.6929 131.3071 null] >> endobj -1781 0 obj << -/D [1778 0 R /XYZ 56.6929 379.8922 null] +1785 0 obj << +/D [1781 0 R /XYZ 56.6929 107.529 null] >> endobj -1777 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R /F11 1437 0 R >> +1780 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R /F11 1442 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1787 0 obj << -/Length 2582 +1792 0 obj << +/Length 2818 /Filter /FlateDecode >> stream -xÚ½ZmoÛ8þž_aì—•ZKŠzÝû”6IÏ‹ÛK}Àá¶ûAµéZ¨,¹–oö×߇”([–R8Fäpfž‡¯ŠOüñI¸L$þ$J|7`<˜¬v7lòêÞÞp33J3[ëõòæ—M7 ½p²ÜX¶b—Å1Ÿ,×8oþyûayÿ8ysBw:B漞/î¨$¡Ç›÷‹‡ùÛ?ÞN#ßYÎß/¨øñþáþñ~ñæ~:ãqÀ¡½§-\ið0ÿýž¤··ïÞÝ>Nÿ\þvs¿l°Øx9äÛͲÉ`ÿvÃ\‘ÄÁä/ÌåIâMv7~ ÜÀ”ä7oþÕ´jUÓ>þ»AìE=z¼À qCá E bæ¡Ë#à€1àî˜åõ,+æýn_?“øß²â«že•M Úõ˜—({‹t'×Ó™„³M+|§*w’Š>7ÖñM’uTù[YW¥ŸXÀ>¾¿¥ò´ÐÆéy˜òØ‘«R=×ÚAYäÏÐŒCï…s–[Yi‡)éÓËZ{«·i£Ü–Ç|çn4ÈŠò°Kó‰HB糤gZT'Iæ×T’—+£PäXzÚf«-‰ßŽò¡g|Ñþ”\”u×x%]R—d¯ÞêªyQËC!럵BiTòð$0áû12Ñä)@åÛ|bÌ[ei
…0
ñÅob†òU Å$ÖÄ+ŠtsµOWR7 êã¡ úÅîÞ¿»/èj«}YTÔ@,hhÙÔì@è‚ù -ž2y")—O2×TÊTFƒî÷$ú”ÑM+·¡ªUžVºh¾pI¸Ë*ô¿&
ÙqÐDÜ—ý¤DàdÅV²ZY¡åƒÊr©”ŠªTbH¨lbC·¼@]QRáº
JMxPaƒÒj/W&`oE£0éJ(Ð4 -M£ÊŠÎûOûÁ<Ò!Ê!b¢¥AÑ›±b5)˜W$?—G“ç):ºg):+ýÜI™4Q£¨aH»¡&f‚þJwû\þJW¾}qq70ìÛ¡ÞÎt03EïŒÜ†Œ9?¹?ý£ç–bÖgc¾¡œ9AMìîLçXQj
sð&÷ÞMYbò=-¾˜„~7±f¬¼Â¾‹Z7væ¿›J·ÛôIZ‰ý&ý›´ãÇøêÄ×3ÐÏÙxÉ¡b@áˆÉ»Yè •hÇ’ý3•+Ioõ6ÓM`žÊô _p¦âS%Qø¬ôõ¸ÅL’tÊê-I»´Ð÷<Í
µUHc-mÁ%&ØY±9¤U}˜ÆÎqU›‹¸uƒ/:›¯sæ$ª&<›‹h³Ÿr¯1p~EÂùXR9El7Ú -“Ô)Lê0‰×,/»úk)÷†è¬h 'á eŸ=šý$rCЉ=“~lrâ2$p ŸµŸ1üØÒ1ƒ³kÌ…:IJøÚ/UØë˜ë³~Gö¹¹÷³„ýC§ -Z /Ní>ž¯á mY½<´¥Kß™ë'n”ÀqÄvþφÜ0Eâœèût4JÆMM׫ñƒíÓ$«/,D¢weÚûyõu”Ð'M•ù¢‚ÊèK Ì' ªÓ~ƒNNê'„HÜÖµîà.ÚKC}î´N»¯š¨8Û’ÐþϺáëÞ[šÍN.k÷úï7¿–ééÖì?üQŽ•‰\ÇW’‚…nì%‘ -¹‰’óÈ›¯w.Cÿ5³endstream +xÚ½]oã¸ñ=¿"ou€3ËO‰jŸ²›äêC7»MÒâÐÛ{Ple#¬#û,ysé¯ï‡”)E–²¸¢’£á|q¾ÈDœrø§Ö0®2}šfš.Ìéò鄟~o?ž3HóëÝÝÉŸ¯Tzš±,‘ÉéÝCDË2n8½[ý2{ÿ·óOw—7gsiø,ags“ðÙ»ÅõA2Þ¼¾ZüøÏ›ó³TÏî¯ |syuysyýþòl.¬°_z +G6\-þ~I³oÎ?|8¿9ûõî§“Ë»V—X_Á*òÛÉ/¿òÓ¨ýÓ g*³æôœ‰,“§O'Ú(f´R²>¹=ùGK0úê¶ÙÏ(ËŒ•逥2 ÉX¢¤r¬‹Ý·bJev¶Ù6妪iQï—8Kgyj1\0+L¾^ožç¿í‹Ý‹GŽ9Ë·™Ç]mˆCµih’o·ëâÕ<ƒIí§ÿÙTE
¶˜-ö²ÙÓä¡(Öí¢QÅʃ<§UYç÷ëeòt.0ºJÁrB°Ìéäsü~8›«ÄÎö(„Òš¨ã¤5’Òfv_€Úg™œ9ôt¶Ùü±\õ÷ÝïËu3/«[J©YªD°%øôÇÛ+jÁ¸IÖ·²xö”_ˆéªøÌ¹¬ÊêÁóŠÆâ÷íº\–
Â>3Û<d¹Îë¡#žËİÔfI×<GÅ[ŠLyñšÇ¼¡PyÊ›%˜œà'4Y®Ë¢jàXûÄAIî”&u¢†3†GšÇXäðbÈá–³[±«á +`:MB]C°7y'‘ÉpΕ…h²FuÃéMÑ{ÍÑÀSœe’«ï< yG!b“y5Á±L»Ñ…žÁ.Ÿ
T”åcYE¸Tòb”°ûpž¥N<×2mu×2›}…GSWP¥Y +TOÌ,¼›×ÜÙ©L1®y¯LüO²Áª˜@ˆŽf»ëx¶k±¢&$œ—«×)ZèßÇÙ·Xü»I3©2Ó€Ó¦³ÅM +ÓÐM¦‘”©‘ãRJÎÔÖÎ!C4¿•Yë¶ë5mYæûúH› ´¢{ÖH}¨Ž*:ø°ó„LûKr¦‚¶:.à +Q§Á &ß=ù:û‚FÊ
ŽüŠ ëÍ2 ’¡¡Ê’¨ëÊ¢>æþUê@¼†4G3zN2á¥)™-ª¦ØUEó'O‡A à“&&hØÐq:6H°«ã²Ä»¦T*jÍ”neørCEU©öy¦2õ6_~Ù¡Ùï*ú~ýóÅÇç‹kZÑ×z»©jÚ H-¥cš‡l¥¸5 a›ïšr9:—ý:w7^,ßV¶¤RÓ +»Á„„@= Õ— yÂóÕÊLÒèŒüD«›«÷´Ê™õ{Üi¾™™RÐÑm +LŠh¡ÔŸ9ÔÀþ-‰Cë‘@eåÚb½fÛmÅ9ÌuÒeËÙâz~~qqÃÎo>á£þùQÍye;±šGX#š¬iÍǸFš÷Ùk³pÝx«îp+ƒ{屇ù {Œu\÷kR÷Q®Ý_±Ô½ÃVèÿ’ìíú.‡örBÿkDÿ€5ÿ×Hÿ>Ûaýc¶’áåÛõ7ò‹ÑúGX#ú¬iýǸFú÷Ùë³…VZ{0}» Oü1;B1€GšÖ„e¤~ç°öOWMÎ$Wo×vhdÆ•°F´XÓêqôï³6@ÌV|W;ü¾Õ"sLŸb¬ãvh±&í0Êõ`‡WlíÐaËÙûY|J¦m–&Lk•NØ,±YÀš¶Ù×Èf}¶Ã6‹ÙŠÿ‡ÍLÊ2Ù ›EX#6XÓ6ãÙ¬ÏvØf1[ËÞ±,9Îòm6PÓ\N´[1Öˆ
Ö´
ƸF6è³¶AÌö‚]¡¾oÓ]rfœh·b¬ÝÖ´îc\#Ýûl‡uÙZvù=ÚsÉT"&škDû€5ý×Hû>Ûaíc¶Ùwio³ZLtZÒqÝÒ¤êc,š÷y*ó<ÿ.½Ã”œ¨¬œãZ{œI¥Gøtî1T9bøî»4V†á?ù
H +"rX¼Z™¥A(Ô&Íú’·ÿtøZôÿÃóîendstream endobj -1786 0 obj << +1791 0 obj << /Type /Page -/Contents 1787 0 R -/Resources 1785 0 R +/Contents 1792 0 R +/Resources 1790 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1783 0 R +/Parent 1787 0 R >> endobj -1788 0 obj << -/D [1786 0 R /XYZ 85.0394 794.5015 null] +1793 0 obj << +/D [1791 0 R /XYZ 85.0394 794.5015 null] >> endobj 530 0 obj << -/D [1786 0 R /XYZ 85.0394 769.5949 null] +/D [1791 0 R /XYZ 85.0394 496.0455 null] >> endobj -1789 0 obj << -/D [1786 0 R /XYZ 85.0394 749.8902 null] +1794 0 obj << +/D [1791 0 R /XYZ 85.0394 467.7701 null] >> endobj -1785 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F14 952 0 R /F41 1203 0 R /F62 1347 0 R >> -/XObject << /Im2 1336 0 R >> +1790 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R /F14 956 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1792 0 obj << -/Length 3378 +1797 0 obj << +/Length 3233 /Filter /FlateDecode >> stream -xÚZKsã6¾ûWè¶tU„% -ᯔfÚ³ŠMÄTÈÕ*Û_…«'èûþŠ»1k?h=õíÃÕ?ßËxe˜ÑB¯¶£µ& _=l~4ìVƒw?¼¿ûþ×û›ë8 -î>~¸^ïï~º¥Ö÷÷7?ÿ|s½æ‰âÁ»n~y¸½§.íÖøöîÃwD1ô¸°èýíûÛûÛïn¯ÿ|øñêö¡?Ëø¼<”x¿®~ÿ3\màØ?^…LšD^à%dܱÚ_EJ2Ié)åÕ§«õŽzíÔ%ùE*aJD$)™E´,eÎbÎaPq܉÷R|IÊ~J9ßÚÓ:««6ÍÚù™¹¨#^>Û¾µ°¿íÏ…b‰–Óý?ò¬Øž@øI¼ìÒ[*ðYr•îs"¿eI´ôpÈÓ#µ‹ŠzÛ]N„ã5O‚¼íŽU¾¡®OoÆ]YmŸ®s[_óàHm+ú¥®òÌ'âQp·EÙ€B"&´ŒàМ¥„=CÉzІž
žê0ùæ¢ -¿vf°\¢“:ƒnj’mÃÑÎÀH9‘`3Ü#µÓx”'n˜[Enªh—¢jó£cËqBmM¤b°:¬ŸÝQZ?‚TÛêªq]‡ü¸¥Pº&Å ±0Ôbª¹}Ze¨¥ØõƒkŸbÐ:LüFúPv`½6€Ô‹gdN¶G6ÔtîŒ6™Äãèá“GèOÄÔ9ˆÅn·«í:ëlFDOƒ‚"véc]‘Œ˜…NÌdyÕÒËÖÆ4häÀ
N«æ%wÔû{Fu›ûMÒvÁ$À;8ˆzË$$yĽIX÷C†o£C'ƒX¡kŸg»´*š=éU†1ø—^”¼2Õ\¹€›V›iF¬ê–dDeÚz/¶â¤Mï>|¢ÆÀ¦Ôüøœ»Œ°í*+aÖ«¢š”ÄÔØ‘%hvð¼±éHÐò¦Î"[îl?ú)§6Ù=4fvëZ½âû¡ -óÏY~hgSïu›8Ì‘‰ç8½%ÝÍ
mbW²!6梕åD~ÌËú8à¶#»–:\X¹4ö¬åÜ¥‘B.í=&7èaO•¼°b[ž®9çé*¸s{Qd‡ˆÛ"ëÊôãΔoqÇ-žä9÷¨/w -Ùu½íŽºì ÉÈÜžÊÎÙ-èzftä;k{Ñ zµñÉmZ¸!În¥ÏžÛÓËD%HésO6Ä-‘ÜœIþ‰Ù(’AyG -eiÅݨ -Ïÿت[Öºqý.ËòÜÖÀ~Ú8í4nc¢=Ñ˦̛ÆmºðõáØ÷¾‰òŽG˜²®h‰ç6%PSö ï×Á4èâƒë‰ƒKSÃ11[s -`Ÿ®ÜõÑÍ¢AÆ"¥vóAЇwœÊWœä4‰M yìÍyjmø>¸Ž:œû³Ltyµ´&ìW¾e¯¤‹ª¡·”Í>%ŠƒªÛ?’¹C‡XлáX :¯Š‰YxRÝa×N›ÜDSþšA¡eîwqÕßxñ—]ÈaÁ’q¯bœ»–Ç0“ÂÝcºyËv‹pòÁ/¹K¨Jûõü5@êpm·ß§>ú¼X|áuáš`!ñA¸¹Œÿ^¸¾xß+ðÞQ þú}ïxÔåûÞ~Ô"ΙeÜË_ß¾µ°ÿü+D‡hÊÀÝ’×Æµò á -_€N -q -ÔñW:<ù‹
'0Æ·L‡² ¹à‚‡ô€Î ܧ>L¤*°=»o¦-˜_`çk#‚W“Ï<ÑôŠCêíoN¸þy)ìÄÌH1óï\EqÃ"ûù®ÿ`„¿q)Ê–`Ù›Ÿéòᡇ¿#.6Ö=xâÑ1€ÈÇ¢¤ªÎ…3|bñTÒ5Îë€·×‰Ø˜Ô DÝ9cßçþÓâx™…›áÀ,}9Y~´×ßK%×é`
!Öä`qì,&ÀO2…8¾£Åz|ú‰ }½(ÝÇû‰PRÙkå/ ÿM·±ý²ç]‰ Ž¿q<¹Ínàâoš1ý}‰›UlgÌB?
\¼™@oC…"¸ûå9¢–Ý‘(šZ#þ¬¨€0ÝZ|èýOªÃ†¤ÅB%<¤ÂÕ𤳠¹b<Ñz¥ºÁ×üòI0“`…¸ô»§u¿ÞzXÐfŠ o`ŒÇJù])UµTÓL؃NkÎÿoìùõ^gR®Ž ‘Ø+‹¦]*>3Bz<bMÙ)gõè°4›¼:aã7v§ ¼¹ôã4©°[ÊÐáÊ»ÖÿüõáW}àÓ$Ë©^ÄP&°ˆc -”„çðª©ÅëÿFP\Vendstream +xÚ¥]sÛ6òÝ¿BÓ—£f"” ’¸{J§u§uîßô¡íEQ6ç(R);]ì‚%Êé]&3¸X,‹ý†å"„r¡‘˜È,RJ½(vWáâæ~¸’Œ³rH+ë»û«oß«ta„I¢dq¿õhe"Ì2¹¸ßü$"K ߸}óÿïÞ.Ó8¸¿ùp»\E:Þßü|M£îÞþòËÛ»åJfZßÿøöŸ÷×w4•0ïnnßÄÐÏ¢w×ï¯ï®o¿¿^þqÿÓÕõýpÿ¼2TxOW¿ý.6p쟮B¡L¦Ïð +iL´Ø]ÅZ +å õÕÇ«
½Y»tV~2‘J¢FÑœ +xŸö©<ªÍ쉨æx +ø¨«®gð–~=^áË2ø†Æ/í‘EÞLpécØ€dÖö#åý "ÙÀñ6Ûö@ƒòs¾Û×åßñ4ß¾¥§¨©©ÅV¡HCðx@ffeÅ»¢m“0¾ßüƒHLt}5¥‘Y7(“ðQðq\Ê «šú¢c ÎfCXV-pÈ›‡’ÇÞ‰ÝÀ©Ë¼¾tÜ©{l5ãä5áäÔ£ƒÇü‰7£ Ù1À©ÛkÂߌxÜâ:¥câÇ®J"Ü4Ùò¢¯Š’¾úÇŠ—€©–ù?ÐXñ·Á;ÇÁÚâ³ê" È;=Wý#vyóB£OG`Û1³.í cSú;èó3‘¯ší!ïúÃ2ŽEî,…û*(,ú Õ‚A“ïJ†U
ýéÎÙÃEçEÙ¡‰¥*øØœ8ömA:nyΣ./Ö‹*¯g˜x.}þš²ÜXÕ@íÜ…ÙZ6å¾n_œaZ‰¶ø˜7õ©¾e¡D_Ø´Úœ—äÏ9Ã<·æ¯º$F˜âˆKá, ¡ô_Œg2Æèx>žÁé3ˆh)ØûEZ´.Z<¤§¤Æ¼AG‘HS€^Ød¼]$‘P©LÚ(!Iê·žËÐ 0hEµŠ€o‹ñ,E‚û{ ÎÂ<PÓ(]è8&Kpßŧ…alŒ"ol: +À¾½ÙE‹w-gáÈÑ]y„íß·AþH°{’ +#3:ѽ½æ4%é¥ öù¡lz‚Â
£G +ž–„(RÖ,Ø.DVcFÉ‚?—6r—Œ68/À²~x¡S§É¼®ià ¹õ4ql6冼ÖÀi¦ýµ¹Øì…¾¦§@D´á$ÞÉ\H…‹G°ÎH€ €†¦,eÿ‡Hî—ΖÛB&ŽUݯ¬oÈÆ0ïqÜC3ìž(ƒ +ÛǺ,ìëB¥w&ìDd²¶Wy°f˜˜ +[Š,…È3áâÝ X…Á¦zª6G›NÀ÷PãËQ¾aLò˜'_Û&h˜Œ×=C%n×*—"¨+x09(âé“ÊqX°¦Ôi•†"Jµ™fÓþ\ߨöCõ^íJJïOn +Û +9ë×Dzè‰Aì‘åÅ#uçE8dAPQ,†UŋԜŠcˆrL' gËçsË®%”tŽv~ +FhìQŒ¶…*ˆˆIé“\f0“§‹ü$ éü$¤j¬Œ€MЉÿt×¼Ïg•óCÃo3íú©jÝøÜ³ycÏÜôœ¤ +…‰#õ¢P¤ÂÈB*q–ˆ/QüKwõéX±["èîhc%ŽÚ1»ÄßüEö®’ñÉ‹mðe9ãg©Q+™(!Óñr\Ÿñˆ/F +’|#SIèÞÎbLM3Šva@pk½µû„C#Î:þ¥;îö¬” ÅM‹doi‡·À÷U1¾¹ôR6s[‰ÐFFá²-kLl‡péÒš[nÞ[|¹7zÙHÈì³ØL™ðêÍ^’DÄa¬^õ"RÄI¨_õ"Xó$ŽŠ ½á®1u-
çáÙ·]W‡žeËg^B :;µîã~ïR•ºÚU'F>è>¹÷ÉÛaîYïúÅuæ¥Ay§±„æKË?¯X²]õçœ\S%B¥ÓA"t¨“tbÔåtÊKB(Ṵ́•‹¬Š¢/|惘ì3öâ?¿H7“ŒDSÆD°iÂd³Œfò¢Ÿ¤HÚqÇÉɯK
.¿\Í>™ûYiª²ÿµÔ:'ù¹L\ü+^Šº*æèdBÃ9ÍÏBC> +~lŸñÿ¦Ä–ÉIlóIûŠ3˜i~¶Þ_;Å +¦µ36odr5—·œ?G%£RÇe‘QAGýJs¦Á&vE¨¡'füýpdµé‹¢,m
ì–ùa§ã ö@—MÍ÷1ù™‘ŸxpÇnö¨Òÿ +g¦ÏO_ýÇ>ã‹&$X*Ë¢ù†8Yg@„™Â+ÈÂó>ÿUÐ9ëÿ ù«_endstream endobj -1791 0 obj << +1796 0 obj << /Type /Page -/Contents 1792 0 R -/Resources 1790 0 R +/Contents 1797 0 R +/Resources 1795 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1783 0 R +/Parent 1787 0 R >> endobj -1793 0 obj << -/D [1791 0 R /XYZ 56.6929 794.5015 null] +1798 0 obj << +/D [1796 0 R /XYZ 56.6929 794.5015 null] >> endobj 534 0 obj << -/D [1791 0 R /XYZ 56.6929 637.344 null] +/D [1796 0 R /XYZ 56.6929 349.7668 null] >> endobj -1266 0 obj << -/D [1791 0 R /XYZ 56.6929 611.827 null] ->> endobj -538 0 obj << -/D [1791 0 R /XYZ 56.6929 133.1815 null] ->> endobj -1794 0 obj << -/D [1791 0 R /XYZ 56.6929 105.0145 null] +1271 0 obj << +/D [1796 0 R /XYZ 56.6929 323.7864 null] >> endobj -1790 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +1795 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R /F62 1352 0 R /F21 930 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1797 0 obj << -/Length 3435 +1801 0 obj << +/Length 3598 /Filter /FlateDecode >> stream -xÚÙrãÆñ]_Áò‹¡ª%˜Áàðæ(y-m䨲³«äÅöHED @ (%•O_$¸»‰]*ÕÌô\=}wƒá$€¿p’?ÐY4I²È7Ah&óõE0y€¹w¡¬™ºEÓþª¯ï/^ßèd’ùY¬âÉý²wVêiNî?yoÿrõãýõûË©2û—SÞ×·wß0$ãæíw7·ïþþþê2‰¼ûÛîüþúæúýõÝÛëËi˜šö+9á̆›Û﮹÷îýÕ÷ß_½¿üåþÛ‹ëûî-ý÷†Æ‡üzñÓ/ÁdÏþö"ðu–šÉf™š¬/"£}ií åŇ‹¿uöfiëýŒN}“ªd„€JÐd~¬•&Ö›¶¨+xvÞm¯KožWØ ½¼ljm/ÃÔ³ÿ´sYòöîêûkîÖ[n¿9€xõ¼¦vÑ0°XrÛ®,w~V*ÊË"o°Ã *_[¾úçÀ…oýW8L›zÓÞ>!-ž -zF‥:ô@A¶,yûLè§<Ó -¾ºe˜tQô•JŠ‚LQ´$<ÔqþzuñL¾EÄŸ»kQ4s‰xÜeêÕ»–3{&¾˜ç‚-^9É”sórsc¼Ü`"}uûC-‡-õYGtêá(%3.í‚μ,à]COEøÜ¯èIñ€$à ˆªÖVüÌXH í†o…¤•ýà6¿¹ûÀ{xrVpœEóyÛæóÇæ•äBxAÅí~U€w¡}yÕ_¦!ošu«¤¡C 6ÜEÂdR¥ƒŒä -Æ]B ‰’Ê‚€«Z£
ÌëªeV”
"¥tô
ïÎå¼ÛeŒÆ“nxÅ„/M½—z·å^½wxØv_oêðÆ^æbbãb|²ãŽG(P:AüdºH˜Û9¹ì¶3†Íøû†ÃŸH¤ÏxÍ|[lZ†Íë]¹`0Mn ˜‰;޳Œ·«:Q<Ç`ºòùå2CdºÌ˲ޓ©@tÒA<hDÒíƒmyFf”†ô& ˜C¶˜ü´ªr$ÅAG4€”õ¼[æ¸B'®r¹‡P}Ù2|&'ÙçVb†1®ÁÕhÃ,4Q±pTÃ붘wŒ?XËôjìlò
>™¶>åE™ÏJ™A„°]µíæ«×¯7õ¶ÍK?Ÿ¯}¶·¯çE›Síj¾\ÿ¹Xü1Ô¡Pȧ6KÙ´‡á0Œîãý‡cÿÑ{‚…Å(ƒ@ „›ªm<û8q½¿žVàÜÆi'y¡Áý'ç#¾ Aî<éÒÙÉuí¬8޶Š5bngd¨RÌ“óK :Òpè–nèhõó0LC—Éák[ÄfÆ]VªÙÎ,¸ÛO;@À$툜[àåÆžÔêž‘ÀÕ»†Šl:c×h{žä$1ÒhÚŸÇt."õüൊÄ'ñ+~ÅÃJˆD9ãòåˆbËú œä…RoéÿW#ÁÎQrÔ‹{q5åwÿæ¦Øý‡›~±¤¿ã‹)¿p[ÞŒiààvÉ_?ï¤ÓDSkßh9£RÆŠ[²Ä3VQg²pTÚ¶87dy±3°¼(ä8Ú̆ »$0¼–Þn3D…%‚ }DfG°¦òrÏëúGñ«1Ri¢[¿5£hà$vN£·¢ ¡ƒGHY<Z'|Åç˜Cg¤–p5°ð#{Ñ1'®ZÉ ©ß@°Éâ4õ>ÕÜæ1osR™–æ)ºrºJðšßÀ¼£›¼ã2»N’^Q¯í° €ó–@³Œã8GNƒÐ“Øþˆ%? “•û4òwؽX<¼T‹1í/F"°¥¼á9slsnJûP´D¶öŒ&ìãØÀ4B%{¿ß_fê ð[ŒG“-Vɹo%'Fð˜RC~4H?ù'˜ž÷“šà>.çêÓ…²=Ä´Â[¥™·Ðö -¾JANGbŽÂ%.Iª], -½OW÷>ÉY§EŒ¯’®Tö‰RyìGXä|@ÁRiçm§îË@è':ÐCnö0É•îê¶3CFYOI¸I ·ã8‡{8áÊlœ¸_WîÛ·™ -±f4h¥ìl;åZ »8^ç›
Û#s.„Æžç´Pò>XG¹Ìs£„“\Ð%fI÷ù K~ÈZY œsÂü¦.(Ń–Ü>–Å
t„_lGç²µy»†Å‹?@%3y*\3O]Ež2I,îØm75ÍH´×ì0½¥óÞ&û±z0Û=<ÈwØxWÈüÂ"_PS¢xáf‹æ#©”CP ’·£vº!ô‰:qÌé¶J2¶0$™‚yk -î ž!’kœ*ã²õ®‘ƒ7[¸v[”/<œÉ9•–Tc =½Ö9„„?sÊÛÜŒ[#Q5£Ž NTލ`¦äRÕƒehS´,šÆ[Õ{ûÔã{,|ÇÏ÷/Ü™ÉñpÍpFó~`jÎ
úÏ“ËÉÀŠNbFDµ÷Dô\t±/CZ¡¥H…ÀA‘Š4ÑæàS
ŒÏ<UZªÄ³.ÕÜ®l¹á^ƒ/ê´´’
`ƒsùTL -ÑA·Í1/Æ„øáŽž¸Õá2á|3Iõ ûõš6>þälä·fð/ÔúÍ¿l;üì/J|¦jüGk:ˆýTe‰C -Ÿ“†Ç˜w?;Eý¿ŸÛ}endstream +xÚZ[wÛ6~÷¯ÐÙ—ÊçD@€ Øìå¸Óu7I»Ž»ûÐö)›ŠTEʲ»gÿûÎ` +”(;mb?àB\ƒ¹|3˜pø3.S5IRÅb.âÉbuÆ'·ðíÛ3áÆÌü Y8ê«›³—¯e2IYª#=¹YkÆ“›ü§é׿øáæòú|Å|ªÙù,Ö|úÕÕ»o¨'¥âëïß½¾úöÇë‹óDMo®¾GÝ×—¯/¯/ß}}y>&0?r+œ˜ðúêÍ%Õ¾½¾xûöâúü—›ïÎ.oú³„ç\âA~=ûé>ÉáØßq&SOvÐàL¤i4Y©X²XIé{ª³÷gÿì¾Ú©cü‹¥a±‰’FbŒqÊ´Œ¤eàfÓݬÙäÅS¢`Š2L(c`‹Ìáéôæ®8ŸI¡§Åò\˜é²XtØN¦Í’ú»»²¥žö®ÙV9õÎݬUY7äëhK9½kvÅ}ö´e½(h¬¦I××@&UËš>užŒ,ÏË®lꬢvAÓz\Ïð`“™?ËL–ÆqdT.²ªz„¡È¯}mÑÔ]VÖ-µ2*Ú¥j½]Íbšµ¤(¤ÊÏ<æYSÃå*«ýÚY[¸‘e÷q—õmUø]`yñb¸øî®\ÜÙCòáép/’WË,¬ +°:f°ûÕr„o):ÖŽpÕÇ,Š¥Jz–½p×h•½G¯UØÀc]8:g¨x|/y±Ì¶•“¬û¬Úý´‘[Ö‚¡RGKÝŒ‘+ÔÔ³7ÇLƒ¾?}ÃûAOܰÜð¢*²80+kÐ8ÕÑe§1¨ŠÔO’Ñ:¦c ÒœÃG`JHñ7Jáb6÷VY¡¾+ÑDa”jÕÜûQ]†6$’ty®·¨»MY´xå`wç`.rú`/ÊÌ•o®¤ÉÁ˜¬ºm6ew·zA6å,‘&š 4í£ÍWñ@›Ç¹ztû3‘ð3Á›l»¢¡‹Rçš"ð{¡`:5§öpÎÕ’¾ZƒŸÁüØŽl‰ +¡m¯Áh6y¹ QžV:») +¥?;飻
´w‹ÅÖz¸ÓÒÊBégÄ5õ„¼úQ–AÙÃ̱·-;6J1 ©$~†€~ÔƒËÑ(Õ$`ài)WÛ5²U³;ª“… ±›Gª“w©|ìÈaJ{3Xn[·à²Ù¸/~¯
Àë/Ü,:=ܶÒéôßwE½ŸbïL©\
åÖSÅÊy-5ͳ.£ZYSéܪòîÈÖIõ°ÝúQ¥«Uåªì¬÷s{†ºEòEÕ9m¿Õí-5Û¶¼/ªG·Hã÷ʺ=mL@BiIÀÂîÈû}1-E‘;®¦W5ugTì錀ÎîŽzW fåÚÚhÝ—ÅΚã(Â-³õº*‰/¸à:Û€Û§3D¤xÐßOÜs5ÂKA8ÈfçY`çó4š>é~¼ÏQb`Q“‘ˆœEúí˜ÙIX*£¬8Ð>P +˜uR‘tX5õ‘'nsB +L‹6‘údõïWœ…K«¿R€¼ÀØ~ØS꟰(N½úU±?ßÚŒ¢±QFÀÐb1ˆbGµØ>CF¥pñF”¦*ñtP* +í˜c"Špõ1
Ú猆Wÿ;ΚrÛ‹í±®Íü—ñ$·¿Ûí˜;' +´Uõè>½eéOí•—íÂá¿?J +ÎýË +ƒ€¹÷¥Ko)Ã|±è€cþWskª6Ò™'ï™t¥bè˜^Û¥eÆe–.©$‡*¤mŠ;´û(U’É©! `.QÞ1ЊnÇ@je`$pô–ÙÒ½+ËÔç¿á›3ÒhÚÆ„Q +ä_y{ç˜dcÈåãÇ~¢²97ÓmU´_ŽÀ§`ì +Xù'?åÕØ¡»»xöãV:;%gZ˶X]¬©Ü¿í†z‹…ªèZ×O…5¼X^ì(Ýr$v2Ù%¬ö‚@ý«m×CRH lO莬ÕqTÛlsàtÙAxübô½i¨<Á1vZ0pT{Ÿ—úwì©Êý/®Ê§å‹Õ“3’X¸Ê—x>›`µŠÂŠ7“ƒw3mÌô½û]8š`¢}…“î]޾[xÕ¿ ùÔõaz¿_nÏ=Ê»Ë$ ²|á¶ÃÌ$tüSàŸØÇîä‡Âû±Ÿpʘáï.G~
Á'ž˜Oþyçþ·¯*aÒ˜hüg’kÑMâ‰B&qHyÿ;ÐcÒÿbTü,endstream endobj -1796 0 obj << +1800 0 obj << /Type /Page -/Contents 1797 0 R -/Resources 1795 0 R +/Contents 1801 0 R +/Resources 1799 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1783 0 R -/Annots [ 1799 0 R ] +/Parent 1787 0 R +/Annots [ 1804 0 R ] >> endobj -1799 0 obj << +1804 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] -/Rect [91.7919 494.9289 93.7844 504.5687] +/Rect [91.7919 217.2504 93.7844 226.8901] /Subtype/Link/A<</Type/Action/S/URI/URI()>> >> endobj -1798 0 obj << -/D [1796 0 R /XYZ 85.0394 794.5015 null] +1802 0 obj << +/D [1800 0 R /XYZ 85.0394 794.5015 null] >> endobj -1795 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R /F11 1437 0 R >> +538 0 obj << +/D [1800 0 R /XYZ 85.0394 548.0867 null] +>> endobj +1803 0 obj << +/D [1800 0 R /XYZ 85.0394 519.5161 null] +>> endobj +1799 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F11 1442 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1802 0 obj << -/Length 2848 +1807 0 obj << +/Length 3767 /Filter /FlateDecode >> stream -xÚµ]sÛ6òÝ¿BòMÅ -¬ê’Ǭ®Ç®Éaû˜{)¤‰0žà¾=p’ý–½È‘rñä]÷XèÁ¬@¹ÐDbâž[¢“}=6;H¡£G5ÕÝè󕥦ÿ褲ij”%¿^YO¿¯‘²¤ Ddåä½êlᆇ/öe¹åº'„ÎáþŽÙæù$û -—¼h I¶'i-FÅIöÇ·Tà'87²Ad„îK&ûxÉô*û5e‘7yY$)RüR'댒§k©«MÖñÓ# Ä\1<®·Ò’På¨(툷PÌSâ-«iºÜ$U²•åu“/Ø”ô½Éè›Ôu¹ÌLJó»¼Ùð -}ªsaçÙ®lü9/’oe&¡Š†R[:5¿\
vîi+òô™ön³s1/Öp‚¿-пÒnÞrdTõ}¶Ìqo–~ƒ=o6ª\I -œª0š¿-¶÷´Di°+ëftò’ÈtÖ€¤¶ x“ý~›g|Ñ_'þ›n}LÁÍÀØD]C§‚Í”„ß[^LÔâÐ.8;¾sÔ,Ëb5aÐè5àÐaÃhi± -v.FLX¡QóeRÐ \.
^#¹ÁbšrOmv›m5@Je×°>T » -kôS.OFâÁñ5z™vp¤w
8«Ù”5¦ÞBK± [’’°(ZÜ3R¹_Ð
sA£+ÜPK¥X*+aÙ¼‹æë¢ì62¡¿F·9<'½Ú:² ý±úíÇõ;+§ô£„!Ùðlã³D•[$ÿìYú€°“2¸&m‚+cüÃÐ’f«ä°mê ‹;½Ó{
Fz~_hæ5G?k6è§*нŠpûqÞFBcpÅï:¿õ
ŽËï¿IR> iT\ì ¬>u˜yCß„©ðË -R0|Ã`¼-l`ë0H¥„£°ðmr›!H†¼Ç?)Õ´ê-.2†ƒ’iøÌ©˜¤l »Í×PcOYF8è‡ON«‘r_{%`ª$µK#©y™·—”q@QÙm»c_Öu~³ÍºÈKÎÒ^0¤3)˜T&Ða=Ýä1ý -ÔsŽÞPpBAäÔ‰6¨!C.tÃÞ„Ö™0LZÆôÎ *¼‘>ÙX/ÿý(RÑ(ˆƒP¬•£f2ââ—S^&E#ÞaOO5¸ÚfKXrhÊô0`œÔwFó:Ý$^ž£s_‰€†Wî\W\û^Ø;ߌk!ê{F]øÚy‘yý +xÚ¥ÛrÛ6öÝ_áGz§bH€×vú Äv×í:îìN/”DKS¤*’Rœ¯ßs Êt“gð +Ý^Þ‹në67bË]A +=#djRÕ-õ¬,_x «žµm¶|æ~]4‚ùòöCvÄQR©ö=çFæ>eK:«ïòŠ„M¯–G6"úÄÕµà5ä0kØZH8šÎRÕàŸPqu’rà÷6ÛíP5ÆcóRw{î!>c‰,xœwsÏ£Ùj%6Ó0 Þó„U½ÍŠŠafëÐyâƒl…P@Ãñ]
[ ¢'nEÎ +æÎM;>»÷m±Þ È¢T½íD`QÊ +öe†9ÆšqÚ¶kñnÛîÔ$ü\ž$3¡‹äVbbßc•Å2kòqïz ×5Ìok6“Ž k–ŠG +#eF[¯s†6EËÚ:›ú˜,¹G"wxúÂ… _A„$xžZv QeËp–¨gO6§X3z™¡uDÑõḺ†PC†¡A…âî%¸±0Æ<ƒÐjÜ`;fæk»+¶í„I†v“—;î+Ù3âlðÁD¥ +"qÏO\jhYˆv>OKHŸPÑ“üêÀMu¢ûBчÿ<¨ÿ<H¿FÕÀ}
¸^¸ÿ[] ô/ôîƒÆ—º/?î!jÁé&svȈãÀKh?. IÆ¢A+ˆÔÕ²ìV¨YÄÃbËa´WœXÛ‚RzßæK¨ÂŠfËŸ”ÆÁœm
þþ…aœdAÇ.ržGf2Œ-»}S »@uyÓNf*
С Ük >9trÈþJɳf—mù“¦,JpJeXQ•BíÌKYqR…E˜ßaÝà{#¨‡’þ®NVoU$P9D^_‘ìe§™lòZd³~ÅÈ~Æò}@y+ÆYnk“Ð÷³Öe½0þ–ñ™Räéíò +/ô‘DPÍ +Ÿeñ<i…aèª0Qb…Då1Šú}/C×OeîÓ:pቯeB"øa
ù$–9ë¯!ùaÊ ^¨âO°Ÿ@’(¾õ|‰Vñßœ/û4¼2ÉŠ?uÆ@¹:ðÕ×NüÍ)•¤ž¹„a1óUË´~å*zëõRË”=,;©Õž¡àjHU=´`PÜá.s@§“cP’Èùåvþñj<2±×à6<®È̦.ÆYǵb:kŒ¤š´)ÎîcÈKÅrÉD€gÁZ듈 ×ÉNlêòÀCÌñ VJ†›2g)E‚ÁKéѲ1Ù+lOˆ¦úÎ#83l®ó +y…4›:¦0šƒ +1zqúØ!l¥($)£‰C%Pz(¾¼yC +RŸŒ8x›¤ÂÀ’0~Yµ„ò}±^‹²´x‘y§©½$ +fS3þ‹R)jÑ?Ty"úŸòSRk³ò?é•ÊF™cÏLìš §&墘æiY°gâ<ö»±Ï(^0dšò‚å®3øÅü6lfÒâÐA0åˆ}Û§”…iÀeaÊ[ìJ€/Ü:•£Ô:Ð#S[º€fnpíF=òÓéH/q2½æ +–†ÛQPH™
8…>Y³6ÅnR~ójM(ð(àã€]=[ãÖÞ@ÊÛ4‘£C1Bœ›í‹þ"U‹¥à„1ÊUÖfã ¬j endobj -1801 0 obj << +1806 0 obj << /Type /Page -/Contents 1802 0 R -/Resources 1800 0 R +/Contents 1807 0 R +/Resources 1805 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1783 0 R +/Parent 1787 0 R >> endobj -1803 0 obj << -/D [1801 0 R /XYZ 56.6929 794.5015 null] +1808 0 obj << +/D [1806 0 R /XYZ 56.6929 794.5015 null] >> endobj 542 0 obj << -/D [1801 0 R /XYZ 56.6929 769.5949 null] +/D [1806 0 R /XYZ 56.6929 511.0366 null] >> endobj -1804 0 obj << -/D [1801 0 R /XYZ 56.6929 752.2115 null] +1809 0 obj << +/D [1806 0 R /XYZ 56.6929 485.4552 null] +>> endobj +1805 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R /F21 930 0 R /F14 956 0 R /F48 1228 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1812 0 obj << +/Length 1952 +/Filter /FlateDecode +>> +stream +xÚ½Y[sÛ¶~ׯÐt΃Ü)àL^ŽšØ‰;‰Ê:3:ž-Q6§É’”m¹Íï» H™NìvNÇÂew±ûíš]øãcå3WFÞ8Œ<æ»Ü/Ö#w|{oGœhKät©~œ^Ép±(Áx¾êÈRÌUŠçËóÉëwÓóÃÙ#|w°ÇÜÉÇ'op%Ÿק'GÇoÿ7›„Þd~|z‚˳ãÃÙáÉëÇ+Ÿ¿ 0¿?ÄÑÛÙôÇéìàbþÓèpÞÚÒµ—»RòûèüÂ/ÁìŸF.“‘òÇ·0q"1^<_2ߓҮd£³ÑÏÀήaÂÏ—ŠùJ„ +1 ±@ +i +b ÉY¼©Ñ =yR°Ð“–î*½5Jƒ¬ð…UoÉJ*ËÇyÑôJ0‘ E–q +#J˧(C, +A·^bÐá‘Øq}ø5#JÝHP¬ÛèÈ ê!¡qì£Û`¡M4X4Nƒ5tV+eQ ”z@€5*h¹£À}h§˜ò·.Ñ!KbTýƒM!¥MºÃêUÕ1n°rBõÌ*èãsòË›ÓÓc}ûÉЦü&k•&ÝPµžXÆM<L’I?ìIâ‘cHrÀ!g”
Ó….æÈò(<bdÑ><À‚ðH›DRuáe¦[44¨‘,]Á5N׃ æ«Èï'[¨Ú蘲ú·u‰
æý¬Gæ1w°¹±¨Rm‹
ÖéÕ5Õ%0ÚÞ¶ámOõ«ï¯“¼Aü¼.â{‡VTèàëNþÀŸû"OpôÝeöÝ+~y5à”=¡Xâ{ꡬg*×W€tk¶%-®cðQEzÒÌÒ~/vJCh·Î²æ úÕ—gØ´ëu†Œúäº"K¾mÑæó÷x&7ÔØüúUîÁöÙééÞŸ¾ž¾wz6g8×!¶tÖWë46¸õÉ…‘¤_Ó¯O{Ò]â@\·gÉ"ÝÍê³ ê„ô°2É3 ¦-_Œ~Œ +¾Ö›ºC®`ÌY±tƒ eÔ‚ûÐ/K`ÓwŽg¸¾7;>ú0wÖe¨àŒëë®—¡—ñ²wŽÒ +¬žÐȸØÉ<™…×WuªÛGh.àà/ÅË—HîÓ¿õŽ‹Ü=<zûì+.Ðýã&·UŠ44
òú6©ˆÈ4¢Æí"|¡p˜Ü-’²i—;Fï9F1·ímÓ’ÐúŠ;chx-T{l=оÑ^×蓳7»È3Wû`¨×]X«òÞÉë%Vb®ž’pãÞßÃQ;™øµ%&L0›¬å6 ü‘T(K?4yÚùuRÝ$TÔÏÚ²‡¯Ì*^¯¡í¬Âga +»eKæ‡ð³uÎ £/öÃ.bбyƒ.í"Õzôù`ÉHrõ‹ÿÛ`=Ý_{`AÄ=%UG>Qôáð+²½»î ¥³ÏïèQï¶éŠúº-}¦?I|‹v[Cÿñ—ïÝ¿<(5J‰áÚÒ
˜Qh•2MªÜ×¼ýDþPõ¿ +endobj +1811 0 obj << +/Type /Page +/Contents 1812 0 R +/Resources 1810 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1787 0 R +>> endobj +1813 0 obj << +/D [1811 0 R /XYZ 85.0394 794.5015 null] >> endobj 546 0 obj << -/D [1801 0 R /XYZ 56.6929 454.8891 null] +/D [1811 0 R /XYZ 85.0394 338.7179 null] >> endobj -1685 0 obj << -/D [1801 0 R /XYZ 56.6929 424.1579 null] +1814 0 obj << +/D [1811 0 R /XYZ 85.0394 310.7466 null] >> endobj -1800 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F41 1203 0 R /F22 949 0 R >> +1810 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1807 0 obj << -/Length 3743 +1817 0 obj << +/Length 3928 /Filter /FlateDecode >> stream -xÚÅ]“Û¶ñý~…Þªë˜,¾ÆOŽ}v.Ó8®}i§“d2<‰wÇZ"‘òùÒæ¿wP$EÝGÜ™Ž.€°ß» -CËÊë(öÜDŸ©#$<“`þt¤äQ„ÉÂY¼È+`BÝió»3ˆE ÚŒnC©ù宥Á4I -¡Ô^XÐ-UuK^ÈSŤX¿¤PGê€ôõø#+÷¢- Eo}¸ž• ÙJ
üü”*HagGÿ¦ÍÛbMÑ,á}Ù¢ÂSãMqOÍ.ƒC -^ «r]¶Ô¤øÕn}‰‡ãP궨«Ån»FVV—õÎk|kð¨»mùŽÎ™
Ч1‡ôÝ:Œ ‘›%ñ(RUõ”ýÓ%œIÅòHÉ"y«|׌ÜûPñi¤Yt -( X‘ -Bm-¬Ï#’@‘fιé0é0&}””ß
ciÐj)ù~e¯,S©Û³iYà©+o:T0*;Âap-NêÆDfh›ÜØl ´2¤z™·øOjŒ-ò¸4 -N¾é‡Â@ôÄ”ÏïH0@A0Àþ
Œ<èÎß<s…s!¤13mt -:¤®íõŒï{u7:Ù?̧Ç8qЏigÁ£êƒ}ÀPÎeoé|rÿÚC<áìœÖ
™º3ó6_QœŽ`Owü§€Ö2S=°YV°ù?"ëw7ãWH€Zxç§Ví½« -c=@™íCÑÄH;1ÌÉx/DÇACZoËëÔYØž‹¹·Ž©¾áöÇ~ð¯»2Ä÷CÛ}Ù•"®«ØçÃN0ØBú`dTl æ¼XAÌ·»†ðM±°Il\oóõòAÿÞ6öN¹·,µF›ìµN7rd¯+ä§õmCmo8°±ÞÚr³ -C'&XÈY»0WÌ'Ø2ÑJ
ôTÔè‹í2T¸Q©u<²´J¬CÆŸ1ñŽVj8$óSQ ¦K‹©‚
äRdÑÒ¢¤Nâ•`«ŽãM>™ ÔEsŒéú”÷yÞ'B™ -DôÜ£ä£ò
ù -¦bÏt?‹xH.N+54xÐÑ·C-»˜œnЊ*VQþnë5-¨ç>lt^„ñªC¼>œÊotj´3ObyÒÍ -aîkA€ðß³j¾²$æ Ò[åÛ^ TòPfNómä@G˜á±pî‘c
¹¤úÉ'ÓÌFb<â<¯iëvŸœSÌ($rNåeY´y¹jžEãYŒÌë²hÛ2VÜ´·^SFb4¬ì?UIV*©¶ò(©à2¢.«q¼Æ+NZHn
ƘöȧŸô'ƇxÑÝÆ0 ©=Ø’FŠÁ–¢ nÔC9ÀÖ/: -覟&ošÛÁíG‡ý£>>3ÉÅ#³qiX´LïnïW§Œ1s¯:Bºœµðèé¬ì|k§M2Vk|!ÓÄàݲèÏ-?ôWü”ž6ù!}mòhjê¸zñ‹ó;×Sñ‹4þ$%Ý—Ú˜GØã“C'Œß{Âæ˜i§ÐÝ©‰”öÒ°èã‹ÁëºÎJ>ÌUm†»,b%‚iæFÁôÿQÚ_«/aøjøcõÇ/׉ -.Sm2R«¤ö(þºi¯ƒŠ8;¬‚YS‡{ÿñsP%8ŠÙ¨ê¦ú„0ž†2ÒRÐÐ_Öx9ò˪ĜÛwüÐ>ï£g“h÷çNÓôùp;ž\vH®ßŸO1p+ˆ0ŒR“{"“_Q®ÜÇXäö¡ñƒ¿!<ÑŽû=pÝõêÔn&OðVÙ‰›. –^„Kao× -è.zOŽ×²BÕÃêxß o..ÞQ«#4´Ëðß«Ž`6;?÷A£WÂèðþ -ô4ÿF‰ã8Ü:³£‘å ¾Û²ùHá#’—Œcæýé–<^lª£‡DÁøQ‘Qþæh¹È»—QÈÌ=£ž‡»Fˆó4_Oª¨Þå³J/¡ÀúQ¨{–]zïH½Þ{Àý‡T‡çO
‹ùè tƒo?ãÔüÂ?Ñ¡~2g4‹Vé!9¬žuÂ÷–yÖ=ÝèŒüÄUp–:kÛA¼-É8DëF§f~©¤vø’=ÂCAå¢r°MqÕûåT‹® +xÚ¥Ërä¶ñ®¯Ð‘ªÚað H |ÚØ»ŽRÉ:Ù•ó(Ûj†3b–CN†¤´JUþ=Ýè_¢V²Ss 4~ƒòRÀO^š4Nr—™Kb#¤¹Ü/Ä対¿<g&m¦³~sñ»÷:»t±KUzy³Ÿà²±°V^Þì~ŠÒXÅW€ADßþðáýõ÷?~|{•%ÑÍõ®6ʈèýõŸÞQëûoÿüç·¯6Ò}û‡·¹y÷‘†RÆñûëßÄÑß3H?¾{ÿîã»ß¾»úåæïn†³LÏ+…ƃüûâ§_ÄåŽýÇkgÍåtD,S—Ç‹ÄèØ$ZHuñéâ¯Âɨ_ºÊ?)b¥SµÂÀDNhEœ +@•§ZiÏÀŸ®6©Ñ¿ûâüxjÎÝæÔ4Õ¦?íò®(ë®8ßçM©ûãmqþ†:¿àÉ/7JÇNŠär#eìŒQå¿ÁÁß½Wòr +a¤àXWŒ2Œ°A†¡d<ƒ(:òRúzi½þÇ{¬·èdaÆA
ÈÚÀÈ$ŸL8>Âá§q^ÂjŽˆY” +A"rmÕPšdP¢—5.snf'ù\%ÿû›ö÷g ë£nJöèÃ<Š KÉæÑ¤9Mµáö 1XeryƒÌC« Cf5Ç[8ë¶ñU%€±Ñòm’hxëK3á$å‘7kxt<è”äe´oKñ%?bèh,™"2ÀV$ò5.Ue”ò‰A¹í‡ÇE}o{ÎÛ»b+µmÎç+õ§Ž0ã¡ZÌœ…ÁZ¥ê26‘Á»º}¦°ò8õ¾¾4ºNLbLj^ZŽ…"z€
‰´9NÇÜ·ƒüôÔñ²†þy“,z÷݇O¼‚âl‰åŒã±¯ÁèyÇK~ œÊè¹qÕS·àf^Јyµñùœn5ý’i%“_f‡Ì•©'÷U˜T/iÓïN›¶üÏZUHrÀ¢…ÇÔ™1}ÎÒ”là-€~üî/<Ñú§íèk[‚ä;`UWRÉ +ïR +Þúé~™ÍN’™Ÿ_}%ÊbíþOž}qïÛ¸„/ *ÏEÜ‹´qAÄ"|KŽOéHÀfje§:™
´Œ½6@ªòèËYˆ¿²ðÉ
Í£ê!&Àõ¶?ñ(ÂÊú¶é½6A'TBå¼*f•ÐÉ&3þã²yæG/Á”JòQf¹þø¦K
ß5¼À…]ÖŸ'{ñaÊ4>
<›Î.oƒI¼}x¦\,ùäXáhÞœXœW¥,Kb•Š•C7çß‹_,ÙÃÖÒ¨À¯ÏÅã3õ#Rµ¬7$öì@ˆG-AÖ>›°:NFZa“å×kJÀ½:Щe +ª^óýšŠµvýëµÍ€q3Eé?M[œL¸MÓqg¯,k•T±¯)|‚µ£c{Ó‘<WA×bµY0`Éd¶é‰Ù@Èb~f<% +¾|øô#Á@ô?žèùÙbzá–1=è7Ÿ®¿³¼Ò™Í¥Ä¢Tj‘4t>\RããäcÀ0{3™Nüžžr‰ øT¢mÕ,é:³45SBž|‹8LúúþOp1$íÎ)»M£.¯ø#|€køŸÂÚl^æ°éÜreJDgD™wáà +~aÒü*GKëîë»àkyÇ é‘¿SWšA˜?OÓ`²q‹=
&”‡:ïú¡Îb†¢ŸaÑ‚ÿCQgúN»}Kl0¡Ž +}}n]sr„ؤ/Xmùä±B–Ú<´ÔöæÇ¾êÊSÅS'¦Y¿M«à¾îÓF™˜L¥ú+eþb»äz‚L“8{òMØ$ ¨˜‹œwrø³ö³6ø³fÄðÝïÿýýóøqxñœµjÝž¨Ìâ›·Dá¡lò„òð¡ôSÒÿ5&)kendstream endobj -1806 0 obj << +1816 0 obj << /Type /Page -/Contents 1807 0 R -/Resources 1805 0 R +/Contents 1817 0 R +/Resources 1815 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1783 0 R -/Annots [ 1809 0 R 1810 0 R ] +/Parent 1820 0 R +/Annots [ 1819 0 R ] >> endobj -1809 0 obj << +1819 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.0003 562.0344 166.1092 574.094] +/Rect [87.6538 116.0624 137.7628 128.122] /Subtype /Link /A << /S /GoTo /D (tsig) >> >> endobj -1810 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [399.2874 453.1831 467.9594 465.2427] -/Subtype /Link -/A << /S /GoTo /D (zone_transfers) >> ->> endobj -1808 0 obj << -/D [1806 0 R /XYZ 85.0394 794.5015 null] +1818 0 obj << +/D [1816 0 R /XYZ 56.6929 794.5015 null] >> endobj 550 0 obj << -/D [1806 0 R /XYZ 85.0394 352.5818 null] ->> endobj -1811 0 obj << -/D [1806 0 R /XYZ 85.0394 327.3206 null] ->> endobj -554 0 obj << -/D [1806 0 R /XYZ 85.0394 232.5431 null] +/D [1816 0 R /XYZ 56.6929 718.7806 null] >> endobj -1812 0 obj << -/D [1806 0 R /XYZ 85.0394 201.5076 null] +1690 0 obj << +/D [1816 0 R /XYZ 56.6929 687.5668 null] >> endobj -1805 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +1815 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1815 0 obj << -/Length 3075 +1823 0 obj << +/Length 3109 /Filter /FlateDecode >> stream -xÚµ]sã¶ñÝ¿Bo¥;'†ø 6OÎÅw¹4¹¤¶Ó™Îå –8G‘ -IÙq:ýïÝÅüxµÛ¤£.ÀÅîb±Ÿ Ø*‚[ÅI˜d<[¥™ãˆÅ«|¶ðîís8k´žb}uwñÅ‘®²0Kx²º»ŸÐRa¤[Ý‚$äá%Pˆ‚×?¼óîíO7W—©îÞýðþrÍã(xóî»k‚ÞÞ\}ÿýÕÍåš©˜¯¿¹úñîú†^%ŽÆWïÞM3=>CôæúÍõÍõû××—ï¾½¸¾ö2Ý/‹nä—‹£UÛþö" -E¦âÕ#¢e_í/d,ÂX -ágª‹Û‹¿
'oíÒEý±(ä"á -ä|Iq&‚«Àw÷´¥º¡ç¡i{‚ÊŽžÝÁäåÏQÄMñêGEsÜcg -‚î›–€oîî~$(ßéº6UÊ, -îv†æu×›¶ì>ÑègÎ%ªõ‹7’M„L„2‰ÀJX˜J[áÿLˆó]†Yš&« –¥H€ -L×·eÞ[…ÃÜæ‰ž=±Dê}ÙÔºZ8°˜Pe"s[ÐUÕ<.l”§ašÂ¹V^i8^´·H¯*GN¤¾Ù[…¡Â$I(„…YsKd¶½L¹í]² ¢±¦Ñà`Ú}ÙÓ³4Øh².xÓÔ4å¸lGQ˜réÍLEkºîÔÖxÆC• -8sž…1¢ÿ^c(®§$Ïgq¨ÐP̽îóÝ©‚Cìã‰üã„(>#¤€ÓgŽm&d‡·ä2à:ƒK¬!ÔR4„C‚h¸`‚`’óç,P…’©lfdÖ€øÁù‚©ûWlR EÒ¨õ,èœÍ$Ì¥scÕyn½eÄ‚|°x;voïÍÞ½«Ÿ - -§2îUÆ½Êø¨2>§\ÖPv•.JsºaDB•CÆ]“ÈÂU‚ -ë™OK’4„…½0!'¡©ÏÞŽð´O³±XxRѦjÖŽ‹,u% Pöë{ã*{K—º°”fäE碯9´Ðòô2ñ9-‰XøË.ª"&)å“9œdŸO\É…'{ì¼²Ì!Ò}ŽwýæØ™È´Ð‹Œ1¹„æºóö£9È{ÏSé¿ßx±gÉêöx8@ýø -ö˜ªYK̯z‰ÏMSÂyMÛ-² -arÝá|¿³e¸N>`à<Ø5·Zu3DÅþ2 G30zQ¼Kªé¹d¥,aP;ŠäÅù"ŠäÒ%«e,u1JèØ.Èê|ÁœÌËÊWAA)Z¿T±“F‰s œëb½yrŸî§}]¨±ó×}Yà[1]<hÈáb‡.B–¥éóŸ?vpîó‡Ûîúf¼ÅšBxGa}Ì¥}˜÷“…ÐòmKú&æ’j¢$ŒSè*fª±Ñ—'r!‹¥o<pæ<SÉó›Lxœœl¨ÛÄOŠ5Y¥'pÔ¶_ôlú‚ùnÉ›>Å
X.ø#@ÞÈixø™µ§é O]uÍtoyéç7ãØºl¿ôW¨’ñÿ1wÞÑPÉýî¿áŒÿQ‚rP(Å—/Ï9~»U@Ä …zUòLrÿsÑÿ
!Š Ÿendstream +xÚÅ]“Û¶ñý~…Þªë˜(¾?â'Ç>;Î4Ž{VžO†'ñ|K¤,Rv®mþ{X€"Eê>êt:z +3sÄi®g‹ë.K¨µl¶X½Ÿ?ÿáÙÛÅÅåyÆkrž)Mçß¿~óWþ=ÿùÍËׯ~¹|vnä|ñúç7¸|yñòâòâÍó‹óŒYÅ`?Nlxùúï8zuùì§Ÿž]žXüxv±èxéó˨ðŒ|>{ÿÎVÀög”gÕì+L(aÎñÙæL*A”"¬ÏÞý£CØ{¶NÉO K”åfB€œO P9¢A€‹›Â3 ¬Êa6Ó +Æôi¼Ù=Ú‚4µI¨—ë|ß
\„Tóf[,Ëë[?Ñó˜ «¯ß~‘¸äéHK:n“ü‘Ë"‚¬Va^4g[ルˆ
NÌÌ2æ8q‚®2FœR<t]ïÎ3AåüŸuUø‘:°Ö¿–íM\¿)p OÜÔmÜл/ +¸Clȯ_â•c¼u¸Æ7#@;´²úQWžu»òXz²8„ÿpI¿RÊ‹ñdñù»rS®ó]dHã‚¡=<î7éÎ`¥ÏVÀØgËï=ÁWèâêÑ'ˆ3Iàç%’næ›IE}`šŽƒÝFù ÓZm^®›'èJš¢Àj/VE³Ü•Û¶¬+\¨¯§lI€ÇðNæ±Fj”¼×H•ÿ…‘r&ê²:ö’RÂ-¸tÃ1Z[ï¥ðáîã—=·ÖÁgý
c·6ÆëÏçí&ÉÏ;v¦‰‘¤5 |@ÒÈ¿vP÷2Âæ !Q,( +€‚WÜ + }k +hj|pzù‹
”«©üEèÀI(&_øÄ0ûùÁ€„:°(
Èo ‹Ð‰A8fiJXÔé„.ŠÉÎKÞ«Jº?ì*ÆiÉ%1Ôº¡!ý
ˆ{ÿkÔÃ5LÁ½jöPû Çu*à9ʽA"'±$åñ„¸ 5£p´y[6m¹l²åM^UźAäïàA±AwëK£]¾Ùä;<Fö¹¢3 +ê®Ï=nµô¢ëT‡š|\£ô[uºÕrI8÷¨—ãÄteÆ)ímL™¬Ä#ñ0R:v›7l÷BþTÇ™I”¶lÜqæ,6#ÛݲƒUö©¸ý¶VóÑ¡ÇìËÿýÈãïBŒó`Õ~sUìî÷áŸNe³ïÇpÇ‹iBȇØð¤ýá
_þPÿï:½òðIÏ€Š‰´ÎÁVM5²ü×ÀФƒé‹7ïÞ]<ÇqS,÷»²½Åšm݆²—²dÙ$dþÓ‹+¬×èÔWþµ““vfáF³û>bHàY~êÓ#¬ÃO€Iì8ù±H×§dümX„¹ûøcL)&‚~<K’ÌoÊ ÐCïÄ,X'fœaȺ[ +ɽ D¤ ƒíþj].qzÐÿ$9þUu•åûö¦†óò[`?¼òˆÓyŸªúk "õa±+`|· >ßÄM}Îʃ7!`ÚÙÙ7êwøŒUX˧ïJPM,$‰(/~«Fº‘¾ “þÙ‹zùendstream endobj -1814 0 obj << +1822 0 obj << /Type /Page -/Contents 1815 0 R -/Resources 1813 0 R +/Contents 1823 0 R +/Resources 1821 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1821 0 R -/Annots [ 1819 0 R ] +/Parent 1820 0 R +/Annots [ 1825 0 R 1830 0 R ] >> endobj -1819 0 obj << +1825 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [432.8521 513.6091 481.8988 525.6688] +/Rect [399.2874 719.9611 467.9594 732.0207] +/Subtype /Link +/A << /S /GoTo /D (zone_transfers) >> +>> endobj +1830 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.1985 73.4705 510.2452 85.5301] /Subtype /Link /A << /S /GoTo /D (DNSSEC) >> >> endobj -1816 0 obj << -/D [1814 0 R /XYZ 56.6929 794.5015 null] +1824 0 obj << +/D [1822 0 R /XYZ 85.0394 794.5015 null] +>> endobj +554 0 obj << +/D [1822 0 R /XYZ 85.0394 621.1286 null] +>> endobj +1826 0 obj << +/D [1822 0 R /XYZ 85.0394 596.4653 null] >> endobj 558 0 obj << -/D [1814 0 R /XYZ 56.6929 668.9492 null] +/D [1822 0 R /XYZ 85.0394 503.0496 null] >> endobj -1817 0 obj << -/D [1814 0 R /XYZ 56.6929 641.3212 null] +1827 0 obj << +/D [1822 0 R /XYZ 85.0394 472.6121 null] >> endobj 562 0 obj << -/D [1814 0 R /XYZ 56.6929 562.8254 null] +/D [1822 0 R /XYZ 85.0394 228.8106 null] >> endobj -1818 0 obj << -/D [1814 0 R /XYZ 56.6929 532.3879 null] +1828 0 obj << +/D [1822 0 R /XYZ 85.0394 201.1825 null] >> endobj 566 0 obj << -/D [1814 0 R /XYZ 56.6929 327.5426 null] ->> endobj -1820 0 obj << -/D [1814 0 R /XYZ 56.6929 297.2644 null] +/D [1822 0 R /XYZ 85.0394 122.6867 null] >> endobj -570 0 obj << -/D [1814 0 R /XYZ 56.6929 218.7687 null] ->> endobj -1463 0 obj << -/D [1814 0 R /XYZ 56.6929 188.3312 null] +1829 0 obj << +/D [1822 0 R /XYZ 85.0394 92.2492 null] >> endobj -1813 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R >> +1821 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1824 0 obj << -/Length 3358 +1833 0 obj << +/Length 3515 /Filter /FlateDecode >> stream -xÚ¥ZÝsܶ×_¡ÇÓŒ% -ÎÔh>Sæ`éüÈŒNy,ì2uvY¶4ÿ¾Èkæeó©²e4Óô•Í ¯M¶ l0ÿþô -eµ#ri‡‡^&A'tλ^)äà,”K°P¤ -H-¿ S@}Ø -<Å’+D* ^örÆMœ„ÆÖÄÀ¤.Ê‹ætó03È>BEk®íšÞÏó®gïþ1CÅ5P|0÷_;j=Ô,ˆûlPÓXÓù$¨á¼ùmÒ#lòš0 µ‚(•MI”pEI!¸2†<X¡TÏÃ8¶˜G”)MDš|±ñ;,nÙãW6¢ØÉ¦á’À:bE
^ê]8@æA+ë´î˪¢Ö
S¦Ð7óãe1ÖAcЂÌõÅ×k² Ù?EQ J‚£¤,FË̳«Ðc#'—U7¤mÖÝ›b€ú 3”ÉÈ͈…S™Å”ßñþÃÙÆì'0Ï…Xb€Td]q -ÕKjš,EI¡µk‹ ëÓ<[a²R•AƒTÂHo¿.Û]@“Âúlž¼“N¥‰™”Ùô(YIžVrPòèhê'âqõ ã“Jf×ø”!`WüþíÜ4 $ÞéסM
/H8::&w% À™‚],º'ÍÔ¯½ -¸ÎFs´ã -0\{Pn „ª^À—ÉðÆ`HÖFC‚Ö(ÁY˜:qÎèᘞǹڎ@‰®
iEYÍ«ªX*+ÌãêÈO‰›²^2™@ž'ûÚ/D_*üï€u<Zm$ÇáQ¸ !Tb•z—×\ÛÍbÈ´a \6·¼Ð3~+À!e{ T-GØ39M@oÊ
¥=¡K¬´D'?‰P…Fʱ캰=ø. ¡VNŸ›Ó±Îùú“¥ÚÉ„’f øI‹ŸëjIÚ -RzåÕ¨–cC-癈µ„kœYj¦V¼Çml¹ÄÕLJ]>êS FÕ Õ·XškB]ùžrhÚ¶¼éÇa,¾'v¶èèlÆõ4?ÔÓ6|“Â%êq©mpÊÇ+•IŒÑ©{´ÊÉg¦w@×ÃÛ)$ß`£DVmP7éZ¼ÓÉêM€Ÿ©ú½ìAiƒÙ›ÿ|ö -FÚ2fàÕ|¿Ú˜®Mád7ÜpÅ“W÷yħ‘††›
ed¼ -úZAˆH2ï¦À2sˆ"òl¨ð¢¯Òmëq]5ÍGH·KE3¡Of= 9ð,O -°¸bþÇñ¥‰J‹º·Ë=^ì>ŽRá”O?ÖaPT}ÆœÀW¯ñd÷>ƒä!ô‚¤æ¢t„yƒH)JiôT[BøXð¾0Öº ¶Õ(Ûh޾¤zŽ˜í:–9ò=Þt}4‚R.MbÏx‹ã%ÏâæeC?.N+±7 -ù…sK7/Œÿ
á|xšûâx{ -©Q¶º-Àé€nŸ³ +xÚZKsä¶¾ëWèªJC +¼<
ÔYjm›òO[Ү˫Šßà´î¯ßÍsMMïî™–eß™è•UpŸö°Îš +tŠù6<–?ã‹îe´(ÐŒá߈0¶{¹²³©Ýõs + |Ù4{ÞÔ®©³¢~¢fÔ“: +z-:1¤+3012a´›8‚éqÖnoxe'¥Þ#J ³‰¹3«(qÏò¼r3u
=ó_az"©ë
Éʼå=YÁó¸M¹çHóQ, )0k«éQÛ}€0òÚ”4Ï<0Þ}Qeº/_èë#Út|@°@ê¥ô²tbð¶29Y8I’îÜÔnݶAóžN=È^ÀüyVrðtúï80š÷×ë²\TÚ' + wwmÞ͵韜¾³ÛîD§ßuÃMkë[TRœaI§ü@ksºÔDäô¯í`Ó•õzRo“¢]©]zjjeWìʜެgCF틼½DQ'I7Û~lÍ&bXåK•8X¹@_2^j®Ó*¿$YDZŸÄROU|¦JŸp>j発fӔܔ–O
Xû¶²ï!{1é‚ߤm¾ŠBz¡3Ú±UÃnØá7\ód$ùs©Â +d7³…3$O_ÊÄLfäÁ¤—fYÑÏù×èƒ?'!,à×äß‹L:‘I'29ˆLN95 +ÖøZ•€Œ|•(ÃÚ:æïÙH…:=¢-8LôŠØ¨á +£.<ÚCh +6àkú\ÇsèúX”ï!Tâ‘$PÍ¢Ýë¤ÙåùÀ£CzMðjå–= W÷‡Ý $Ìš +‘
¾‚œV˜0Z3â"Ž)wÙ4£˜ª +!Ã_ÌÒ•/LÑô‚@I&qÔ‹MY·]3T2ú¼0ñÜ‚‡Åº +üÐ~$™BÖ÷TÔi9$Ñ‘¯cH,&öoݯŒÂ‘‹Ì.—B¸ð¥I¢/o2’:šm¸ÛÈOr6HY¡GpÔûdŽ_ÐÞV½·¶zÑ÷bï™CŽý3Ä,ï¶£æÑœiÙ6ã½mˆ?¿å<-‡ûó• ÁŽB9Õ˜>Ó%.c—òFìå¡…K˜}î̲§
Éö&O[fuh)úÁP—C&MU+l9_›.·`¤-s +"Pn¾Õƒ¯ðÁÚ/Ò8w5Æ‹"}©äÉÎBÈdéü$Ôn—§û–^Z*½Ýi²`TH¸/±ýÞ|w5d“쌩 …Ovʉ7ÔR7‚c &Ô‡ŒÎ
bÌh? B^Z'úÃZJsCT#Áˆl©àgb_¢/ûƒÖ©ÈáDKi4¶-/ñ¸åOi;Û{jhb¤I°$R~ ’Yüµ¸ËÈåãƒða”:9KRƒ_%F’%ÁÓZ’“KFlw‰ƒ‘Tޤõ¶k\:X5Ï4DÙ÷ëC@hŠ8ã„¢+,:Žu2R¹ +ôv—ÜRðººôsÎM,Y4)‹†½¸q;§—>‡øo +ïÌH6yÛÎ0XÒòVÂÈ4à‚†…ƒuÒQ¤¾„Ý!Ÿú«0{^†‘/&aíÑ>z V?K¼¾ÉV_—<R,ü$ÒÌdÚ#Eîy·Ùæ¼ÎÎI…o*-M—Œd2ô…P³KËŒÃÛ†°R”Œkh‘Kà´0¸“ÿzI°‹ÎÚpoéÕê\”8Ô?aDçD»Ë7…uñÌÄÚgôðQƒaœœl¢Z©W¥Z„"Ý:H±!Š„\„4A/ÉÙumÑŽþP²Ó?B.{½çŠd13Üc¤íÌFÀ”\¯GWŠIgu‘yÞP+w–¸˜²ÜôªdÐg_`fMQ3ÙÔèg!}ƌږN–€8 Ñ3Þ´$в¤Ç7lI̽àéÚœnDß**Åʇ45>#ZÊ…¢<N ö±ùì&kèY¥¶Šq`”´A„Xª¦Ú`]ÖÉua!´/hN\UA[ê’–²W‰´ s(§˜?QYy(Ê©iàºÇ=E.¿FNôµmøKÁP@ƒ»å{4×ö_L˜Q!¾1†ñp…Z ¦ó®Ü +õÆy‰(ðu ~GR’ô°¯¦¦¿i)¶;YCÏQU@(WxGû"Á‹^θ‰ÃŽÐØj(½ºË€Éœ9_ÞºIwÖ8\_·zëþC]úŸÒ>þënáïvA•ö?ÿ¹oøçc#&—ËÿÛg&¼(”W½Z¹ûàë¥ÿÒ1ñùendstream endobj -1823 0 obj << +1832 0 obj << /Type /Page -/Contents 1824 0 R -/Resources 1822 0 R +/Contents 1833 0 R +/Resources 1831 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1821 0 R +/Parent 1820 0 R >> endobj -1825 0 obj << -/D [1823 0 R /XYZ 85.0394 794.5015 null] +1834 0 obj << +/D [1832 0 R /XYZ 56.6929 794.5015 null] >> endobj -574 0 obj << -/D [1823 0 R /XYZ 85.0394 292.229 null] +570 0 obj << +/D [1832 0 R /XYZ 56.6929 589.5994 null] >> endobj -1784 0 obj << -/D [1823 0 R /XYZ 85.0394 266.7038 null] +1835 0 obj << +/D [1832 0 R /XYZ 56.6929 558.2024 null] >> endobj -578 0 obj << -/D [1823 0 R /XYZ 85.0394 135.8227 null] +574 0 obj << +/D [1832 0 R /XYZ 56.6929 477.1589 null] >> endobj -1826 0 obj << -/D [1823 0 R /XYZ 85.0394 104.6827 null] +1468 0 obj << +/D [1832 0 R /XYZ 56.6929 445.6025 null] >> endobj -1822 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R /F40 1146 0 R /F48 1223 0 R >> +1831 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1829 0 obj << -/Length 2710 +1838 0 obj << +/Length 3746 /Filter /FlateDecode >> stream -xÚZYsÛF~ׯ`ùe¡*ƸÖO²#;J¯¢d«6É-”I€!@ÉÚü÷ížîÁA
%:ër¹Ðs §¯(fü³8 “\æ³4×a‰xV®O¢Ù'X{"xÏÜmšw½¹>yõN¥³<̙̮—#^Ye™˜]/~
’P†§À! -ÞþxùîâýÏWg§©®/~¼<Ë8 -Þ]ü㜨÷Wg>œ]ÎE‹àí÷g¯Ï¯h)ao..¿£™œ˜^¿;¿:¿|{~úûõ'ç×½.c}E¤P‘?N~ý=š-@íN¢PåY<»‡AŠ<—³õ‰ŽUk¥ÜÌêä§“öG«öU¯ýDJ•H¥ô0ÎÃDIe
x^”·¨ì£½RÃy1›î*sÏ›ÆeJ-2ÞÔvEgÖ¦îNçJÈ`a~‹"Y›‡"(hÖr²T³¤…îÖÐÄw—?ÑL]¬M»)Jžïnfy_V´å†×Zcj¢n&ç´»›ÖtÓ“ÊUÒµàkÇÁ*4l‘ -\;Å,Õi˜¤@<æY–ùa7ï9ÎÇ,-¦&ò)À’ÔÉp0Jiõz$c–‡©É7”Ñq|NÆ\†©ŒôTÈUÕv>L'!ìˆÙÞÍrpŽ%¿k=vH“ÈÅ‚µÀœ&eÇyæƒXë‘@©0R‰“ \»Ö¢=ŠzA„…ÓvU]tUSÓbÍnc
'z¬áà -é8>'d.BOE<µ4ŒÒ\Œ æ|c‰ƒPK¢0ÉTrÔé#øðÈy¦'xÃzçÁʤTP7íÆ”æu³x 3±nšÎW?„ d&&BÆ|å2ÉS‡<À¹§$c²xÊñÕr|œ±–ÅnÅšt
=-ŸªþD„¸µTr«– öE•Á:¢T\ÔýZEqˆ#dOˆ¹ò3²·#[ öùøT…ò›fÐ?i=jÉ''òPë8þëeøŠìQá]µ¬\W|6ž£æ*dcxM¬øÙ<øNU“X;øÝßVÍàl¬‰š»j‘¨ -F -ŒÐÝZ%#4š'ÍD|¡Ä³"Š$Ñ/È–í‡1˜#Š:{dYBάnV†vØ4éV#íTŽTÕH€—Ô´m:}F\ -¼#Ð&À³„ûÛ:ƒ
4”H~±F‹NJ& ü‹TDå>q× Z¸õÐRÍ”°p™5”j³âY”²ÅòWˆÜ> -ž°
¬êa£Ø: E¬]ì9&žö= 3%¥ÛÀ›‹¨ê‹¨"hú®Q}Œá>Ÿ(ЧY*ŸOq߀õrX÷hç«mízŸÚ¹ÜÍÆaž»pêþÖ
¨!RÝ€)H™ÛÊ¦Ü º •¹¨„¹QaÐqü«gV7Æy_`Kž,V;CdÅÌó^Ž>#ìï«§8ò¬Ç¨pïÓ}Œ?áÞî»çæšÅÒΓ¹í èIn@Qo-ƒ3€ÀKª®¸e -™pSjy~P™‹^œpÁ"zº·â§¯z¼|q9Ý»µY0ß˦ãÓ]‘Køvb«çîõ»AèõÎv0(4#…?(8ÉBÞá‹äTÞVƒ(°3,qqér7é€\ -&Êf½©Vf1w.àˇµÞìmÍã§?Ó[úóÁü°¦õ\ø8:"3jûúEàK¢º„`5tí'!ÉEN’ÕäX+÷…“8<7|èר2‰¡ÛÄSÝâ®k`wU‚W™Y†7·½´\’)@tw‘“Ø"Î
8uqqV?x[5BpƲ9Èc,¸[æYæ1ržd<¾©iÁZÏ͆VVæÎ¬hKòh“èM¼Ûò§,\%KÝ{žw·Õ‚‘±p-u¦±œ¦3Ûf•XxnŠmG}×C[Ãgcd¦C…zIßi©Xf‡2H%d ü¨Úå¹ç{9òæ¶(WrñÀf8x$æ)€‹ÆãZE8È¢fæ´MeÕyï¦\ðó<õ\ÛŽ®è£Èì{ëºÈ¦(Ý æÂÕC=@_É’srÃÔTÂ]×ć÷«Tê8_sNt•2•ÆËÛ8c}oƨœY8íqkÌ‚.'}m÷°Áh¦Ée¾Èe1ÜFïZ¾wìßkàÞ½Õ_Óóïžoà µ -£Lï©MÉ.ä½pÍþÿ×KÅp»Œ÷.º¯^Ñ–k|Hµ·Ínµ šïlHâßQ,áxÓ¨6Ý}³ý<”ŽÇßVú‹‰b䯝²×4ñçë¾ö@3ép"ÝÇ-zÂÁvøbå5Û»ªäÆèDHTŽéD.,¦¡¯ói˜q߃i÷$U‡%-ø ¡Òñäà&Ÿú–—š!¼àÅA*©Y®vÛíÛó详òŸzz¹®õª:ð}1’ä)qj؇—Žzíc¾¬V{ÌçN®pqóâ5dz£úÅxq8£Xp7Ûçõpöý0 ÞösÀb?Á÷ña8Xð¯žÎOxo³5wU³k4xq8v žš)¯ÌÒþµêؘq†š(|LLÔÍW‡À´ÛVeçl÷-ƒ‚;ë>*¨O¶¦ßÝ@v£ñ÷«C!Ž
™‡Y–îýéú¯†óÄ(0öø‹§c5¾DÀvüƒççðŸ9üß?–~I¢ÓPe™ôÿB¦P3`ÂB¡äYòHr÷«ŠÇ¢ÿÐñý>endstream +xÚkoä¶ñ»…¿u
ܲâKÜ'çâK]4Nzç´@/‡ƒ¼«µ•ÓJ›•ÖŽSô¿w†3¤¤=úl a,E‘3ÃyÏPò4?yš[‘èœf…6‘ötµ=INoáÝw'’×,ý¢åtÕ7×'}«³ÓB©JO¯7X¹Hò\ž^¯?,ÞüíüÇë‹wgKe“E*Ζ6Mß\^}K3ý¼ùáêíåw?½;?ËÌâúò‡+š~wñöâÝÅÕ›‹³¥Ì„ýŠ!<±áíå?.hôÝ»óï¿?wöñúï'×á,ÓóÊDãA~=ùð19]ñÿ~’]äöô!‹BnOŒÕÂýLsòþäŸàäÛãŸÕ¹°¹Ê"T*Æ@[ˆT+íx}WÁ‰R»h«ß
õ¶ÂƒÁv9Ùžj¡Ò(qûÚr[yÕ‰Ö;åUû³|qh{‚[n†jÏCÆ @htWºEfqSU-ÕŬTRH›pe¾¨¶Ý}œ¤ +4lÜânˇ»‹Í$Â$6ãÛ²-o«õòsõØGÀ§92Ùƒï‡r¨¶U;¼B…CàN²êöDæaœ.50Pæ9è¹”¢°VÑö]×®ëöödùâ÷®hôP7
nxfzf˜(¦ƒ×„L==¸#¸ÑºÊ›²¯Ì$ÐòŠwoßÐ +_§pÚsê5<êäØöÕ¯0@–R.€ƒZ)Ðë¦þS&-•°²ð +2ìýð´6ÙT¼øUži‘©#Ý$2I.2)³¹(žÀ¤À•(9*ù#ñŸ86W_±h¼ˆH·pÐíXÊÕ}Õðþ
á2Sš¥‡º>q¹‰1 YfóÀ +ÿû¼ìR{Ñj~Îèqf<>áùðwuW‚]¯Q÷³ÔïJø +Ðn¥å¹!˜tRÊÖmЏlºîsÙ×ë*‚=‡Ð'³ì0¶Çpø¥ +¿P¯ÔD¿áòƒÝƬ˜ŒJ\J!ª]5éKøÌàáŽó—š» +e‰€K/ôâr˜¿Ü•{!‡¦Ü{°às‰90ÞøD„ +1@Ðõ»¦fXt"œ«†Ã®÷ÍÈ´CL_ïÊ{ãªUú¥.·‡f¨wM¨t‘½&YÁE¹º‹¥FèÂ>£1V(#‹/5FK¬uºì +Iu Ì’êãÈåÚRr®
Ž8ƒjÐïÊÏ“ÂàˆjÉEÌô•«€`tó8ÃÓn\ö1ÅÄ«•Â.ÎYC°I˜iÄl0#GäRXx@ýËóÅ=h;Ù0<ÔzW¼¨ïÈ\ð„çËy38@g!.ˆæùtÈʾ(Ф +qŸ}èq?Vç`»‰N!†bgê¹td•(œ¹Çú±Ë +s=Xz27_m0º÷,Ÿ?FàÄŽ +ñ7ËCåû,÷´0:Q_å(¦1¡ÿó"îå¸EOTúƒ6=n(£W&f£½¨a¡Æ†ÎÃÃ]½Âjj|Õyý¼WZ øb[as´î·ôèR,|O–ƒ—RÀqìä/ûª©V~Î/›ìËÔJH +ÜRÎRGIgÖîêŽá–ÀKb‚\úÓEJ®£ê&¢½P6äÓ+ƒ,õüQ™6”îÒ1“>«ÎÂ=Ìq‡ŠPL§ kîÞ8½]“£-8P¡$ÄWþ¦ŽMÐ:»aRgòž0W'–»Ú.è +aí’z|ÜÐo¼/Uä"WÚ>[»˜ÐŠ +‰hOpkþíëÛÖ „:ÐÔÏJe82Ôç±cæã ³hÂ7Ž,µÂ’¾kè¶‘µãaàU×tçLG¥› +oŽ0zp7«8] Å
˜Â®LíÜ®tW¢ªÈ½UÂÜ$0›ñ5-¾p_Wð‚e°+ž,›CEÚ;὚4Ž×µ±æÉò…ÂÏÿŠx3¡bŽ«0L–ñ’,Ý^ +ãP<·Q‹sPWù†–ŒÊYpúƒ»ò¾š wT^;ËG5¼7~Ü¥ÕPïw>^Q¦
Rþn¢¯Ææ‚ëv"™ÚåŒn´ã¥ZW|Ó@
|µóP½#ˆŸD+¬æŒz‘a&ò‹4AøÛi‰™†™ÂY‹½Yìx³®³NÃñÈÜe¼p=_[ó¯W^%ÍôõåÕ|¼8lÝ—÷ª»r)W'Y»ôÛïG¢·—Á ûV(fìdÁï°åOœ—Gù„ÏhB¶ryå}7¡”<XuÛ]ÝTë¥á¨¾Œ,Þ•tì³Øü«Æ®òäÃ|×vñÏ÷ò$yg4¦ˆå‹ +ãertKy|kŠ/ïÅÌë ú®¥Ž{n€Sáþ˜ +ç0$OÉÀâÞ{YøÖñã y^—ÒþK¤'¾NÕPÉkû–4 75øËÕñ³^“ ÈÇTü£T¤xQy¢•yvLyøÄõKÒÿ-Ž„nendstream endobj -1828 0 obj << +1837 0 obj << /Type /Page -/Contents 1829 0 R -/Resources 1827 0 R +/Contents 1838 0 R +/Resources 1836 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1821 0 R +/Parent 1820 0 R >> endobj -1830 0 obj << -/D [1828 0 R /XYZ 56.6929 794.5015 null] +1839 0 obj << +/D [1837 0 R /XYZ 85.0394 794.5015 null] >> endobj -1827 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +578 0 obj << +/D [1837 0 R /XYZ 85.0394 556.3829 null] +>> endobj +1789 0 obj << +/D [1837 0 R /XYZ 85.0394 531.854 null] +>> endobj +582 0 obj << +/D [1837 0 R /XYZ 85.0394 403.2414 null] +>> endobj +1840 0 obj << +/D [1837 0 R /XYZ 85.0394 373.0976 null] +>> endobj +1836 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F39 1151 0 R /F41 1208 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1833 0 obj << -/Length 1156 +1843 0 obj << +/Length 1338 /Filter /FlateDecode >> stream -xÚÍX[sâ6~çWø1錴–o³OÙ”¤Ùéf·,}JF±e¢Æ¶¼’²ÿ½²eƒ!Ø„ÎtÆò±ô霣s2LõC†ï@Óú†ô¡c"ÇÓžiLÕ·ëªæ€zhÎú4ê}¸²=#€k¹Æ(n`ùÐô}dŒ¢»³Ëß.¾Ãs`9æ™ÏãšgŸnnÕ”@?.¿Þ^Ý\ÿ9¼8÷úg£›¯·š<\
†ƒÛËÁ9@¾ƒÔz«B8°àêæ÷]/¾|¹žGŸ{ƒÑZ–¦¼È´A~ôîÆ¦)±?÷Lh¾cÌÕ‹ QXFÚë;6tú¶]S’Þ÷ÞkÀÆ×ré>ý9¶ßòö(ÐBB0pkKƒN -ªâsíû§ëau»ò(_ÉÝû.pl·.{®[ÌõÊ»/w67_}•œ}ßÚÜÛXÛt¡o^ÍT!¥ïír¾¾zÉú¿Šê'ïendstream +xÚX[SÛ8}ϯðð”ÌÔBòÝËmCKg¡Ý4ûÄ2c+ c¹’MH—þ÷•,ɱƒa¶“ÝÏw=Ÿä вü +“×·º¶‘wGD(ÅŠ$?RãW¹>ˆßïç×ñ±Ú2o¨'{üŽÖy¦ú«¤JïT—ÊpÊŽÁV£Wkʾéh@®JfsÜNs¢2D©Ò4¢Ž4¿ãèDMü<1 +Ðßâ]ÜÞ™ëò`ëó6'?ŒA¢·à%N÷qeë6Òy×=. ãÕ°Cÿ ˆÛC~ö|ïÃöæøßÿ.lÿz‘×O9Ã8¡øTŠˆVJÚEO47C<Uý_F³æendstream endobj -1832 0 obj << +1842 0 obj << /Type /Page -/Contents 1833 0 R -/Resources 1831 0 R +/Contents 1843 0 R +/Resources 1841 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1821 0 R +/Parent 1820 0 R >> endobj -1834 0 obj << -/D [1832 0 R /XYZ 85.0394 794.5015 null] +1844 0 obj << +/D [1842 0 R /XYZ 56.6929 794.5015 null] >> endobj -582 0 obj << -/D [1832 0 R /XYZ 85.0394 769.5949 null] +586 0 obj << +/D [1842 0 R /XYZ 56.6929 325.6109 null] >> endobj -1701 0 obj << -/D [1832 0 R /XYZ 85.0394 748.6299 null] +1713 0 obj << +/D [1842 0 R /XYZ 56.6929 298.3249 null] >> endobj -1831 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F41 1203 0 R /F22 949 0 R >> +1841 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1837 0 obj << -/Length 1180 +1847 0 obj << +/Length 1151 /Filter /FlateDecode >> stream -xÚµX[sâ6~çWø:#Å’|Óä)›’4;ÝlKéSša[NÔø¶’h.Kþ{å`ˆ!6ìÃH–OßùtÎѦþ!Ãv C15\jAÛD¶$Ó¸×ï.¨þ,?ͯ>M'Ä5(¤vŒiÔÀò éyȘ†7Cb8ÒæðüëõÅÕåß“³‘k
§W_¯G - vm]‹X%Ð/å+R×uŒFû:°>JºËðòlHt§V·x‚ÿœ&Uç=UêB¬wm5U{Uû0ªØ$zçèÒVIýX^²6Ð~ -W -±N]]¹~(-Æ"×tº{AÉÃu¡kzÎlj»Í5, --BVæ’š÷ µ:R;E‚ãBâbk—öq‘àH,J÷å“®q°ªŸà[ˆ"ˆ=ì¶Êùš¥Hå+½žó@º›}å÷Ù]m®9z?SÊ%çàðx’Iy,ëÞóè±Éb+ª…ðÐ ye¢8ËP*þ`)*sqè·ÓåÕë*V -§Y»Ï¬8·Õľ”«½c™ˆÚ`ÕK^÷xÐûÙÓ6;vm‘÷ø ‹Ù½_œñ@Ëù¾óz-‹““ª¼ÎêÀ¼Jò˜%,U,„:ãVɱ:ã-¥šßíÏãì |›3±y“P¤*&åLcƒ‡Æ®ÿÓíÄ -,Þ‡Áþ¨Ë‚¶Û,¢Ï„´Ý=é=úÑ7]ëk@K¯Iž‡W—X7.±°ëAËÓ 5©ÂjÏ{Ç|y%öžúÿhWÇendstream +xÚÕXÝsâ6ç¯ðcèŒTËßž<åR’榗»Rú”2ŒbˉÛòI" 9ú¿Wþ†Ø„‡v%ý´»ÚýiWHÓÕiž
uÓ·4×· #[’®=¨o×TýÔÍ}š~¾2]͇¾c8Ú$j`yP÷<¤M»³Ë_/¾MFã!0lýÌC`;úÙ§›Û_Ê¿|]~½½º¹þs|1t³ÉÍ×Ûrx<ºG·—£!@žÔ|£BØ3áêæ·QÙº_|ùr1N'Ÿ£ÉJ—¦¾H7sE¾î¦º*µ?thúž½¨Ž‘ïZ2°lÚ–iÖ#ñàÁï+ÀÆ×bj›ýlÓƒ¶g¸-´PÀH÷ où®æÚ>tLÃ,,x7Ž®ŸEŒ¿`.ÊþòU}¥Ù‡!¯Æ2Æåj<ïLËÞyù‚–jøŸóº«¬¥DAß¶æòô5âàRv…ä4}Ø@}wvÄYBE„“4 •"fŒÏRÖƒv`d’ˆÆÇ ’`šJõ€-}VRô@z-Abö + aL +IÑ#t7vEÐðŒcR¹ +b|£Å´y*AÓ²}ìSPDÕ¤Õ_"ÖæÐ]ÓüÙ3¡ã9F{>~ºrl³aˆroóàë¤BùQºŒ0—êhbœ¬s„.{Eq<ÏšíË$£©BŸÚaëÊÜ|z
Êã×*Iò*—¿ôRåo•o¥uâÑ»ŽyÕüFñ‘·f"#Amª€^ëÇÎ2¢\È^ZüßêRtšºÔøÕ¥-^*Þ±øõ¾oLkPørs‹Ôß¶¡…ÜmNiY¤MÓU¡¥ÓÕú›žv§| f¶×F')ÆÃÅ8Mµ]-™JNÓl»ROµè‡¯Öwr–*=ÏXÝ(FãFÉÔè¾[•+ëùÛ’¯î§vEÿ1 Lendstream endobj -1836 0 obj << +1846 0 obj << /Type /Page -/Contents 1837 0 R -/Resources 1835 0 R +/Contents 1847 0 R +/Resources 1845 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1821 0 R +/Parent 1820 0 R >> endobj -1838 0 obj << -/D [1836 0 R /XYZ 56.6929 794.5015 null] +1848 0 obj << +/D [1846 0 R /XYZ 85.0394 794.5015 null] >> endobj -1835 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R >> +1845 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1841 0 obj << -/Length 1117 +1851 0 obj << +/Length 1086 /Filter /FlateDecode >> stream -xÚÕXKsÛ6¾ëWð(u†ŒOŽ#§Î4N«(—:
mA6§©'î/@)Ó‘,O¸X`_ß.€P -
®—ÜØ¹÷T ëEa{ÕÛéàÍ)a -1…ÃŒBÃáÛ³ówž#üçäÓùéÙû/“㋆ӳOçž=ŸŽ'ãó“ñ(Dœ"++
Ïœžý6öÔûÉñÇÇ“ÑåôÃ`<mbiÇ‹ qü=¸¸„Á܆ýa -5Ë‹½Õ,ÒLzJ•æ7?DmÁe¢TN<\j™Ïþ -)4ò›yTɽ¥ÑþŽê>QóÕã"UÚ¢G*íÇ?ü§šMW³d>WoU(ÓðÝà²c -›ì-Æè™§Š=0çÜŸØBÈx aÕ*<Ô¸µœE€!Á
·lzëµ j©î\kqômbwæb˜øqÝv}]¬<U,ü"S«p
ßSvwz¢™«ŠÅé,kÁ²îÓ,óÔ•ìëÉUVeÝþ»R#ćÅ]:¯&’µ¹-Tꎪ»š•ëû²+¸÷éÛC‘…ÍNÛ×å+rë¯Ô†Áê{Âfw½ú½»ù3 b€pŽ›úè$œÀplŸ²Ä>ˆoú\<£~W«Z®ÿ#endstream +xÚíX]oâ8}çWäV²ë8ŽÕ§N—v;ÚavYæ‰A(ÓF&6Ó2Cÿû:@hM ÐÑH«BqìøøÜã{m_c™v˜=A„Ã…ÂÌMȹ3m×
\~VêWïz³+Ê…G<§7©`ùù>vzã~Óƒ¶j^~ì\Ý\ê^´¸ÛìÝ|ì´ +©+Ä~–ûã`T?!°Àø„[çå{K t C¥Ã‘².×5feèà6Pò¨åmÆ •“Tªû|Ë9j»É6®c@,Ltº8"çq(Ķ)óH‡ Øï2M@œog@ëh? +œ¯Å´§óÕ«æ¬6sšûã`ehJ•^ø£Xˆl°z1+{܇±>·i1 #«7½âƒ2’wÆ‘“¸rz8\¹Ñ½}™MjµA/'A-û8Iå&׈ùãì¬xv’20o¦³HNe¬åZuÆVÝSuÆÏtVz~ûšxA%àë\¦‹jQo–*©ÔpèÑý02«DQÿTCÉ +¦™‘S`ñ[LÐ+žÑ|V-“YæHõŽö½-Óv9}U'[,²î`’¤FÕ2Z>êe<¤ˆ1ŠŽ7(™UËI˜*½[pdª¶¦¿¿Þµ6[á¾ÝB¸jOµeQ{ø±1s«[Å/—Û„óM›1èbNöŸ•lò¬ÓS¬Çß¶oL¶vŒ½+«|³\°>ÐÿéѯHlgx|О0Ȉ uóÿrÎTWoŸBÏ÷Èqz»ºž=Žß,e:þŒÑßv»GÍ’G©í.ÎüËO¾ùÛ\‹º&wô}²¾Ô#¤r©G¸]߀”¤2CzÁ|uEø’ú¿¸ endobj -1840 0 obj << +1850 0 obj << /Type /Page -/Contents 1841 0 R -/Resources 1839 0 R +/Contents 1851 0 R +/Resources 1849 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1821 0 R +/Parent 1853 0 R >> endobj -1842 0 obj << -/D [1840 0 R /XYZ 85.0394 794.5015 null] +1852 0 obj << +/D [1850 0 R /XYZ 56.6929 794.5015 null] >> endobj -586 0 obj << -/D [1840 0 R /XYZ 85.0394 278.1954 null] +1849 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R >> +/ProcSet [ /PDF /Text ] >> endobj -1843 0 obj << -/D [1840 0 R /XYZ 85.0394 248.0815 null] +1856 0 obj << +/Length 1993 +/Filter /FlateDecode +>> +stream +xÚÍËrÛ8ò®¯Ð‘ª +<ø,ŸœŒñÔÄ™u”Ë:.%‚w)RCRV4»óïÛ(É¡3Éø²¥Fw£ß˜rø‰i2®Ò`§¹§Ëõ„O`ïÝDXßùÇToæ“×—*ž¦,d4G¼Æ“DLçù÷öçóßæ73_†Ü‹ØÌ#î½¹ºþ‰0)}Þ~¸¾¼z÷éæ|ÞüêÃ5¡o../n.®ß^Ì|‘„ÎKËá™—W¿^ôîæüýûó›ÙÝü—ÉÅ|¸Ëñ}Wx‘ß'·w|šÃµ™p¦Ò$œî`Á™HS9]O‚P±0PÊaªÉÇÉ?†G»æè˜ýB•°0‘ñˆqd@Á–i<ÔEJ*cÁÛ™qî³/~«‹Vw+¿/ך°õv½Ð-Ágô¹Ã;ƒ`_–†¡<aRÖÀ¤o÷/`aôøQâ„ŶêKu½;´×Ý}ÓÞ×Í_*–¢¯N´ùóÌ pÛˆý£©JÝ×™ÓðvYe]wG‹ÿ˜££lûýÆžèú¬/—~×ogß0GVUÍÎÿ}«Û½cNø<Wu÷ë¬_®î«²ë ÿçwاÓí£n}ËBw'Œ-M¹¹Çý{1ÆóoÉ’#²ÐR£rpã ý0FøÆˆØ±ûq?‹Q?/õ³xâç¢iwY›ËÇ–„ŸyÈ›ºÚÿ·(Û®‡•øîÔ±|tû×½Ý4m?àqq÷w\}V¹®ôø£©}¼Àÿmæ=Ñóì/uy})Åt@¨P.éöØ4d„[å¨A|„ÐÔk]÷´üIæ\Ö%Š%LVç|ê²=È9”k´@ +"ê‹<ëíÈN†=,ÈÓÄ veU´Ðc™ž-*ëõ¾¡ï¦‰ÄkËÜndÛ~Õ´%VÆG‡ª»© +¸ = +æda¸ËåŠ%èWYï +ÄpK¨¼cÁÝgËÞ10ÑyÛ
$=VÒfäÒmP$rR+Ž÷Öz†ÀÚ( øcUv¬²šÐYÕ5c½
ÒÐW`Z;À ˆBͤ¶&ƒ§eu xÈ{³'\®‹¦ÒWäý¾…Œ,†™3»2“f~Ay¾ucáQû–±ôBEÓVàK¦ +B«$"Ü +yx‹¬3¦ +‘™îšx`ãôèø¡Å<5’±»…šLp ˆ“ŠˆÙ•ýŠ §ª#nþñêAÿÖ{T+ä©wUX¶Ä3¼²Üðžø5þ1©Ÿ¿M<¸×;ªu +B˜;NMå‚°Ý•y¿Â Ü»n…«ánb +Ó/¥ä%)Ou[¶ÞTúÕaº„r=ŒGh—¸*ŸX¹f@8~BÁx:ØA12„åÈ4%,馎òaÕ“”M•-µëÚÎ’³ ”OÞ»6“¡.Cs奔⪬Ma +=2xDû@2ËpÐþõ·/ĪLdÉw+mûËל• +ÏDg@h¯øÔuÿÚš@‚êD +endobj +1855 0 obj << +/Type /Page +/Contents 1856 0 R +/Resources 1854 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1853 0 R +>> endobj +1857 0 obj << +/D [1855 0 R /XYZ 85.0394 794.5015 null] >> endobj 590 0 obj << -/D [1840 0 R /XYZ 85.0394 248.0815 null] +/D [1855 0 R /XYZ 85.0394 445.5677 null] >> endobj -1844 0 obj << -/D [1840 0 R /XYZ 85.0394 223.6701 null] +1858 0 obj << +/D [1855 0 R /XYZ 85.0394 415.4538 null] >> endobj -1845 0 obj << -/D [1840 0 R /XYZ 85.0394 223.6701 null] +594 0 obj << +/D [1855 0 R /XYZ 85.0394 415.4538 null] >> endobj -1846 0 obj << -/D [1840 0 R /XYZ 85.0394 211.7149 null] +1859 0 obj << +/D [1855 0 R /XYZ 85.0394 391.0424 null] >> endobj -1839 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F21 926 0 R /F22 949 0 R >> +1860 0 obj << +/D [1855 0 R /XYZ 85.0394 391.0424 null] +>> endobj +1861 0 obj << +/D [1855 0 R /XYZ 85.0394 379.0873 null] +>> endobj +1854 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F21 930 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1849 0 obj << -/Length 3647 +1864 0 obj << +/Length 3279 /Filter /FlateDecode >> stream -xÚ¥ÙrÛFò]_¡G¨Ê‚ç - -h^®V¾u)@8
~2¥!Bý…ÖHA-g¢ 1ZV˜u4ë‘WÙ¶Õ¢þ£–¸Â¨ÔeMÈ[n2Øepî#ûWüj:2 -{ÌMd Z[‚B/êíÈb¿q¾‘ '>ý„Å$ =¼`ÔS&wŸ°-¢_£–¬5t’I6|¹á3䈋 -†ßÝ}ú&¢Œ›Ì']ÕÕ¸Ÿâcpµ˜åc¼©\”cß EÃ\„âÉtn4q -©¬{]`p¦Ë KÀdÂ^Rk™?*ÖlÐDÚf|04Æ£¡Y´{bâùÆ€zÝÏ,vNÒj kŒ±ÉºiE-:ÆØULÕÌÞXÐ nêŠnEÎñ4§šÙ¨¡ßHh¼¨8³ÅЮóN†/ú}»dð±–ˆ¶BFJ’E¢;¯¨è˜ €.pÈ{>‚u`,Ë¡¦ãN)"øc…G„;x)„ÊôN -E‡£™×óIÁDÂÛ*S…rùXÑû<lÄžTrYfØÌ0óN%Bëj`€Å4#OÑOåŽçÊ&wž3)J9pT&Œ 1ƒÊ&EÀ³0§”'{T18…žçu21TäYÈÓ‰Ç;F Ñ÷
bUTDDò™2Ï”©ggú3見èU!Þ -m]ž<6ŸÑ‚8*ó ›C¸ .!ŽòNǾŒPšÅžÂ>ü&†pkD·‡Ôx×`Ðð¹4$ÌYݰŸ÷!|ÅÕ2‰ÀaT -:%аD(ê~Ð9
[e²Ý5Ÿ%´€!5¤8»ßøc?ÌšjžßûäãÍ[]ê‚?&nW08p'‰ÌûgzÀX1|>ÆÞGðlœž»ï3ñh•6Ý5n"vÛjƇ—6¯RèÇ’À¬/CBK²â$åw]Õ2•°ÔO -ä”
ÜÓê°Øi@s*kº-Ç2{(ÌœÔjXÇÒó®i>ó•9Ò1ñÒVgÊÿ“d.y)ñÒY‘B°e_zÜA6ÙΣSg²Œkäýî©Ú-çžwò4W…?æ^ΕÉ/Æ8")"Q°ƒ¿Ðc‹·Ó‰¡Àoº¾Ðžé'#'s’f#ïPœ¨ŒÕÝ9ÃÌæøT¬¦b@ »~þb”ƒÚ¸p¬c-è´žaÓüHIÑHYÇ´~ü°{‘¾AÈkeìËüµEêóXBâ'M®i”³ø¤š™âds”‹˜Ýð‚•PÕ,?÷Ò³Àè¹( -™âÝ×Áœ¬g³47®8=Ïü[fSÕŸ±í•Ä^ëf6ÈùP¨Ún)RFÛ3ê÷}½kj‰ñµÎ€M°Êé‰ÀšTx.Ÿ•@E‚àû….>LªüX6òô$@¨~î‘QÛ4õÿtZäQüă Ÿ¥ÎÚìTu7’Zyz°à,ØÆK‡áÒ/†'·õf;” mŽÜœ&``Šìomܤ%˜ºc
F¾ŠÙs ޤ]êµ-ÏÞÝÎ.³uùDâä§\|Áq#JÞµÄícÒûŠx¸HÐÃdBZXzÅžó¸"d¹I]Ž;c@)Ð1ùyÎÀMªÕÏ~K)âÜmöiù5ãbŸA\¼‹x1®!z4œ”±}4â-Yõáæ™\»S}‘WIô`hè‘¡_£ÁÓˆ’Ÿƒ¦1%>``©³ Ž0Ž!ç#^ûpÇ37öä²s…šãG™*£ÊÈ·h \êÀ™žU|øqЪފgvø¹sÏÝöJÕ˜={"·¢¨4ßÜ@LÞ°C&ç§|n¨r£0\¨fŸýö£¼:r’ª¹Êˆ-G9Ú‡Ê—Ø È QOŒµÌðØ"·aOünR¤ú4Y†Ã¬”7ågâ$Y†èg¢ÿ/‡<ÓHâ+£“cÈ#¿ùûSÊ€—ƒQöö/ÊÌÚR9qœÆø—eæ{~_ÀšC36Ä:|Ž¤Ê˜ÖâþåÕ²ï+u2'ᦖ'N§ÏÉŒØò(A¯«ˆA¤ýÑWˆ©f3”ÿ²~ë2¼…”ÇJÂø:0¼ß¢–›Œ+ÚˆàŠÝtìô$%ñ(PôÜâÆ©P¨ùµíÙ:ýœF†]aòB3 -NìÁæ½ÅÝq:§ãïl<–æ)l +xÚ¥ËrÛFò®¯àª2áÁ`0 +³ !’…@[¿2 +œ*´VYjÉÃ1VG
êÇ<|ˆ?¨äG`™f7ÃÌ?L8bT”\Ï +'qLˆ?Ø¢Û8>Eä‡#åÓåÓ ¾[ïÑ¿†Y§sèëòè¹yA‚à¢Ã0‡pA\BÜ#¡áXŠÌPšjOi¾Sà x4¢Û«n×`ÒðR{椵Ýqœ·yæLæ3DA·ŽýÀº§f¯S¶»æER˜R¯Ýî~Ù÷óét×·6z¸û”IÁ/£°+˜¼ñ ‰ž§zÀXq|6äÖ°ìœÎÃ÷É¡7í»ÝÖMÄð2!j'Ã)µ²,…8àø”J|À'$2õ®uk¦–¡g©¤`Rsø÷›'4Dz&k †/l¸™ò1 Ö±ø´23…‰›ÚÙ¸žùÆÉ¨l¹K–Ä*ãúì¯.ê§\*¼4”~¥.ìtáUXffJÈš bæÊ/(MóQùU˜£)€H½§ƒ!ÊÕ +N°éütžg¼T”“ˆW‚Zvëu÷Ê +)ZEÛµ#zHƧ9ÞÁûq¼ÓÊ·OS¨wï˜6‰°ã²,Kçy]è輸¨O·hª©c‰Ä„ë¨? +Ráa¨7[ìn¤:¸(Hr[žv)¥Jli5K©·6è¶žk`Ù +6ß±ùO]¡"LHK1Oâ—mÝÂûì%?ï~ÄO7¿<þ0YIÞ:vn' ÄI[šÞ5‰.½5Q¿]¹÷¡„z®ÛŒÝÓ‚3Ÿ*[©ˆ½kGøØµJ€nä–R°3§/4ýÅ +`œXc²~¨ +-$ŸÞxXèòЙË)Ÿ%M±Ñ§¥ º©d9Iã÷þ+<€,7â'xáØ,†”;;VÝ|’lž[‰2 9ó¤:‰Ÿ8Þ\7½-'…—Xp
!üúÁ5ú8ÿýņù.|€”0—fX‹Å6IË“êêĘS“$N‘Ê`k¢„‘Î8¢8©2ÒöÃ^ï¸_aø_‡Å„ÎBTåv5ô<r¡¯Ø¾É§‹ÃÉ8£¤O ‡ç,‹¿¯¥¤ ™²f—ÏAó1°¤Ð{¿Ù’7{ëö¼:þ(ÃþQK·ŒU,Oç‰9ù:ºò…(ùŸ¹6eˆÙ‡ÊËw”+H‘ŸzÊ@þT¯ÜKãC ŸZÎÏXèwOn=e p&“*Ô?J(%Tø”‰M^š“ÄÓ}é·´+LJˆÙ—1çaG1Šìú#N:"OEQi½©‰øñdqb _Ja¶Ý»)MzÚüm•冹ÄJ—3±þË•Þ=A¡‘‰N½÷HYáyÜ^K¾‚Räëóhv“Q>«cžx"N’¥ï~ŽôÿrËsœG|cn‚¿5jBR&RS¿HÿÂäoþýËáÇA&Ó¢Ð!:~y›IÉ)ÿJ}öëœDÅP–hO5:úÿ endobj -1848 0 obj << +1863 0 obj << /Type /Page -/Contents 1849 0 R -/Resources 1847 0 R +/Contents 1864 0 R +/Resources 1862 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1851 0 R +/Parent 1853 0 R >> endobj -1850 0 obj << -/D [1848 0 R /XYZ 56.6929 794.5015 null] +1865 0 obj << +/D [1863 0 R /XYZ 56.6929 794.5015 null] >> endobj -1847 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R >> +1862 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1854 0 obj << -/Length 3122 +1868 0 obj << +/Length 3218 /Filter /FlateDecode >> stream -xÚµZKsã6¾ûWèº*Bð$‰£3±'Neì¬Ç©ÚÝ$Z¢,&©ˆ”=ίßn4Hñ%jv3[.—@°~}èn -œ kål{¡bF+U÷l.>^ü£™°õÖ
³Ÿ–13¡…–’ -O³%Øú¦5,ÔBõ¸Î…àŒÎæa$™2öè-Z>"d*¶á,2–…J*ç”eºIŸ“*+òy‘oÞÐHßÜHÙÇ…fHÿ¸ÎJ4«êßC™.©Uô›æ«b)â`‘b‡ -ªuJoúÜ\gY%ÕÁOV¬üäùjŸ”Õþ2‹êàfKQ84fÖéäù«ÈSËEð+7<½{dH«¾¦Ww׈÷ăû‡÷@+½»Êߨ;ÉË×tOÕ:©¨7󳓋4{Ncè|ͪuq¨ÆKò˹ÒQ~Úm²EVáS€]\o¶m÷Íâßú_g7$HÀgŸUoÔ_¦‹š86ê~êYˆ–]E’' --¬’Up÷Ïïî?\ÝÞ1ê&ÏbkY¤ž$/*?f·Cwa½ŒïœpØ.¨©ÒOÎö‚f1K öÚ,iaºÙ±ñ”Ò/rÉRÿ–ÐăMš¬¨å|Í¢h÷xœÇ´UL%=¦×hå¢ßt…&[•ñYÎÔ¦Fˆ'>%Æž•ë*¶4ȯ¹³Â¼æØqÍkâH–0'3ÖÇÔf‘¼€Kz -OÐëß&ô³@\PáÁíjøŠšYÍ•Ê]ºÈ~å\¦Kõ¥§ÁŠ“"ôÁàön,*ëÈxL4¸º‡s‰ˆY.£zª¼J÷yZL¨#p
ŽŠ¯)NhÈK€tÓ
™_ú Áa›.ÁJð&óæý¢Øû°ä#+ŠIÑtíCɤUjm“ß}NÁ§bU‡š2mE#,WüzC7¨MnjÓ¬Ó2+–# -+˸Uuá=§¤v¢ã/âeIM'46\E,(¶u‚„Ž2Ý¿dX]8òcØ…§·_ù)¢¿S‡Ž+°Bž`ݨdp[u :[˜y”4«’Vá171³kߎgÚ¢!F“',\|IöYá*ä[Y¥Û’Þ,“*yBC6Ôåa±öÃ=H³§·<x&=»š|·ÏZ~æ$_Ò˜² ß"µ´0±çôí•ÒÑr*}’Ÿ¿ÿ8¶4ÓÚÄÞ
é§|Ë‹ümÛƒa 4¯ÇwuËuíJ®Ø ã°¡!¾¤›b·MóŠÞ8nðûn%¬'\ÐP€$ÔûãÕÛ‘™ªbQlèÕ¢]ú¸™r"¥Õ -áh/Ï"ÉDzu]Å´Bu`•x\…CûCm`xmZØ%Ý9@AR‹â°½€|)Ô ë°¯€È‡°P†IV`W>°{5A¢{“ËÁæöà--m¬Ç÷‚D3oÎ3
•+Ž1àÏÁûÙjP:
rË4ó†j„}·!ÓaÜãßVMX\¦åbŸíü:¦x8´®—ºŽb}-z¬1^(`è—Ì jSU`cv¨Úú3*ç%•Gå°Ô‘À§ÒÚ3¶o¨Î 2˜m´l#s¬‘£HN€
™·¨N£¡:úéÏCº”c±ÐÓ̪î]°¦BÈÿö_l}¬A=¡šÂck°\xÏÈ“Xóôg4ÎûùX‹ðl( -§MßPd0Û4ÖBÉBc쬵¨&°VSõÜ£Ü -3~Äc|BðQ}Mážv‚#={
„?¾A ÷}lm; -MÁª¦?£ÚpÞQXÁq˜4%ž>j5mã†êŒ ÃÙ¦a…·‰ø™2M5«šª¿üç°ÁMöË,¬s°l§i¨F$i+/¹ ¶ÕúÿijžB}˜‹ˆ‹“±M+ŽWÛQz„
ýõ‡ó~~åʆ"ÖÓ~h¨Î 2˜m„xÁªa?=
ÂÕk*òYYœ:QPjY}†yC5½{|
õ]dzìïéVÚ`›&9€euØÐs6†7P¼Wü'O= \²&²íƒB˜1'¿¤Ô¦ó4hTëú5^`TäÊŸYB_™VÔp'Ó(e²XgtÛë'þ=]€b«u%çÙŽœ¶ÉÐ0Åunÿîî£?yÛD\wÏBïîooþ5v30|}·MË2yÆóhîõÃé§xì¯H±zP™¥ï9ìèÕDÚÄ]çºážb“•îÛt‚-<§ËH„Wþ,•†º£óö$»}¶Mèì -®¼xž¢–»|ÂÆSÚ“…®ñÉ`(ºz—.tl‹ÖMy#âê©HšÏ’ÖHØÒ‡µ´-wåàœš/}9.®W¡†pÖcEâ<LJs<÷Hˆ‡HÀëæUrØÔ¤+zµÏØi²Yˆ7’EqFSÁ"mtï¦ ¹ëïÄšöuAYž:÷üþŽ«IŠ^êö}W“2Óí®¾ÈÂÕr2–ÒñèÌ.¼Mu:–7Tî@~.þ˜ãê,‡UªbalÏ0o¨F¸wÏÁ%§:ìé**<ÉJ$Ô}þjËT=}Õ>£ox½È-h’ì!\; -·CH&–шèÿqІendstream -endobj -1853 0 obj << +xÚµZYsã6~÷¯Ð[䪃“$‰gâTÆžxœÚ#É-Q‰THÊŽ÷×o7 x‰šìdËå"4ÐׇFãà3|ë€I£f‘Qf\Ï–»6{‚¶÷ÜÑ,<Ñ¢MõÍÃÅ×ïd43 E8{X·ÆŠÇ|ö°úyþö»«×÷—¡Ù<.:dóonn¿¥CŸ·w·ïnÞÿtu©ùÃÍÝ-Uß_¿»¾¿¾}{}¹à±æÐ_¸NtxwóÃ5•Þß_}øpuùëÃ÷×.m}9“¨È?ÿÊf+PûûHëÙü`7FÌvJË@+)}ÍöâÓÅÍ€VÛuÌ~JÄ
”À2Bòè4[bÁ€+F<ˆ$ï1]pÎÆe8[„Œš¸q‰â-—pe 5}µ B)¤õÉ&Ëk4Ì×ï„h‡q)Ü‘èa“‚%9ŸgyVgÉ–~TiM…b_1//y</ +W›'»Ô–ÏiY¹!Ü·Ú§ËìÆDº¢ŠC•åO4PB5¿¡¬|ö׊<Åš +ôpFئOIù¢È·¯#!„3„Ü4!ÄÂI‹¹ÿ&VT²“ +¾iŽÈß.BÚc ZúÜl%Lêúà³sÏ×eRÕåe<?,ëMž1'"̱/ƒ0Ã4K/ù<xà£`Aùð†šn¯pQ±¿Øüîþ=Ðò€Ú®òWªNòêÅYlÕT›¹ÑýüÍž…Õ*_²zSFÑn±©¢yúç~›-1FIh/©6Ûµkfqîkí†Éø”YýJõUºôÄ1ȰÝRõc:j’<©Qhn`êVø•óÛ~{÷áêæ6 jò,–VEêHrœœ¶Ï~îÂ"zÛ¬pXA‘†¨Ò?í96À^ÛM9;:Sú"—,u„&6ߦɚJÖ×A´íÁÄ>‡i³PK¿,nÐ"Ò +Dßt&[ƒ•ñ7œê !Žø”kÖÐvÔÉÍ…µÂÂsì¸æ%±$+ÝGŒõ)u†YB`K|¤¢hÖŽR"æ¥X<™‚Œ€Ë§î[ÉKC¿hw°!C´í:¥*!d/FlÜ–HF +Zmƒ$ª¡‘£í®áh(ÇÉ`Ý +ƒ_ZÑú˜ žM-¡6º›YþO¼ Aóý¦A¿H´m9´)ja¢ÙBGsûÖgÍZ‰@† š“qHlLg±Ï®¼#Ó` +ù›Q\ÓJnh‚~UQ™ò,í’W*{ÄK²ÝºßŽ`]l·Å…'¨u }lnbƒ +³¹O¿‰Š™çJ‹µ“õ…£ +µ<tÁ +I€wóˆÊPdÚ›f“VY±QXš€é³ç9)”¿ˆ—ÐX°k(Ò`B±ó$T`®˜avaÉa~}¸yøÊ
ù‘~£8W`…<Áí¦ó›º+ +›Ù _«:ÝUÔ²Jêä
Ø”GT‡åÆuw MIlþDzöž|_f-72m? OUзÈAE%¹ÛïAÍïéë-G«óËçwŸÆf€ +”Ò±ó_ƒGúT¯y‘¿îz#,”¾QW¹Kç!Z£ã° `9|N·Å~G[%h±Üàûv“Ì'œÐ€$TûÃÕ-õÛ“™êbYl©iÙN}ìH9‘Òl€Š]¶‚p1Œ0Îæÿ¦]´ ‹ˆ˜ŠÝF‡Mò±DËg1Ý}T`–xœ…CûCn ™7íÛï®îÆ !LGqØž@.ê„õ‡E"ŽCØ@P)ÙìÒv§&Htgcr58S=xK†°Þ‚&ãGHD³h^g*›cÀ_€÷³õ uà +"`ñiæ
Õû.nÃ@…q“X5aq•VË2Û»yLñph]L(ÅúZôXc¼ÀÙM™AÖ&aUUØQt"kkèϨ<—T^•C8ÀvP
DŸ +cÎØ¾¡:'È`´Ñ´pTR’‹)°!ËÕÚ<ÕÑOÒrlŽÅ\M3o¨F¸wÁ¦!—‚õ¿Ãþï[£DkOÈ&ñÃLÖ3ò$Öý‡ã~>Ö"<RŽÂiÓ7TçŒ65ØH(¡ä¬µ¨&°æ©zn‚Ñ +ËÁ´íªs‚F›Fìï¢È§ÑÖ¢š@›§BŽä¡Å¾ØfË‘ì-`©WÓìªþ]¸I¼?Žº|jvsÝ=/^a~Âc|B𑿦°¿²‚#ývpÎçîøÜ÷!¬è\BÎ×–t +VžþŒjÃqGa;Äá¢)ðôV·I7TgŽ6 +« ŽÄXµ©Nê¡êOÿlð_’r…×Öýƒuvƒíã´
Õˆ$måÓ +endobj +1867 0 obj << /Type /Page -/Contents 1854 0 R -/Resources 1852 0 R +/Contents 1868 0 R +/Resources 1866 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1851 0 R -/Annots [ 1856 0 R 1859 0 R 1860 0 R 1861 0 R 1862 0 R 1863 0 R 1864 0 R 1865 0 R 1866 0 R ] +/Parent 1853 0 R +/Annots [ 1870 0 R 1873 0 R 1874 0 R 1875 0 R 1876 0 R 1877 0 R 1878 0 R 1879 0 R ] >> endobj -1856 0 obj << +1870 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [280.2146 671.3632 375.7455 684.1005] +/Rect [280.2146 599.6322 375.7455 612.3694] /Subtype /Link /A << /S /GoTo /D (root_delegation_only) >> >> endobj -1859 0 obj << +1873 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [312.6233 419.8927 381.2953 431.9524] +/Rect [312.6233 360.3945 381.2953 372.4541] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1860 0 obj << +1874 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.4119 389.3715 379.0839 401.4311] +/Rect [310.4119 330.5066 379.0839 342.5662] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1861 0 obj << +1875 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [340.2996 358.8502 408.9716 370.9099] +/Rect [340.2996 300.6187 408.9716 312.6783] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1862 0 obj << +1876 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.1051 328.329 396.7771 340.3886] +/Rect [328.1051 270.7307 396.7771 282.7904] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1863 0 obj << +1877 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.3548 297.8077 389.0268 309.8674] +/Rect [320.3548 240.8428 389.0268 252.9024] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1864 0 obj << +1878 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.1386 267.2865 427.8106 279.3461] +/Rect [359.1386 210.9549 427.8106 223.0145] /Subtype /Link /A << /S /GoTo /D (dynamic_update_policies) >> >> endobj -1865 0 obj << +1879 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [429.9426 236.7652 498.6146 248.8249] +/Rect [429.9426 181.067 498.6146 193.1266] /Subtype /Link /A << /S /GoTo /D (access_control) >> >> endobj -1866 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [286.0435 61.5153 354.7155 73.5749] -/Subtype /Link -/A << /S /GoTo /D (boolean_options) >> ->> endobj -1855 0 obj << -/D [1853 0 R /XYZ 85.0394 794.5015 null] +1869 0 obj << +/D [1867 0 R /XYZ 85.0394 794.5015 null] >> endobj -594 0 obj << -/D [1853 0 R /XYZ 85.0394 626.1526 null] +598 0 obj << +/D [1867 0 R /XYZ 85.0394 560.3013 null] >> endobj -1857 0 obj << -/D [1853 0 R /XYZ 85.0394 600.1016 null] +1871 0 obj << +/D [1867 0 R /XYZ 85.0394 535.1807 null] >> endobj -598 0 obj << -/D [1853 0 R /XYZ 85.0394 477.282 null] +602 0 obj << +/D [1867 0 R /XYZ 85.0394 416.2201 null] >> endobj -1858 0 obj << -/D [1853 0 R /XYZ 85.0394 451.6493 null] +1872 0 obj << +/D [1867 0 R /XYZ 85.0394 391.5178 null] >> endobj -1852 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R >> +1866 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1870 0 obj << -/Length 3107 +1883 0 obj << +/Length 3164 /Filter /FlateDecode >> stream -xÚ[[sÛ6~÷¯Ðô¥òL‰% -…
™ùyÎ^L£QÄU3°µ‘²FÌ‹fÕ
¼ÒÉTPT/I0DØ}v.[ó -ïYiú»%YïN0'+í1ûl»7y^™¾²¨žôn‚^àImzmÀJÖM~‚÷Õ…»¾•ÇëOõa’cMv8–Ž!NéÅ÷Ü‘n[žwŽ‚ÏEû8$W¡bÕæ|IXÐ6J‡¸‘Hç@—Ó›—Ü5õfóNs8-Ý(tQóyÇ£t¤,`CµJ -<ªu µÝÝ -Û#H®fžZ£×&/ó‡LùMžÞˆ€º‹U{ÌHwÿ*ž"NhO¹ é’«I³Õfkm†î͎Dz0y“ÛŒÄ×…É‚ÌåIÕÈycZªjQ©;IÒõíÞŽæÆ©,B8‰3|É›©#V¨.™BEsØ•5͹aŠ&¥ë¹(KëDÙXËm.Õ×ø±ƒÁfŽÌçÓÌÆ;—õ¯
[…‹ƒFð%ã—Ò§SÓRÆM¦ -¿É·Î³¶ñ¡oÈ…$ABýY&°‚‚³…ÝèñQ÷…1+Çr•U§ºn£vªncÒ³h¼jÂŽ~TJoFœÑ…Ýx¶£)uP–?OüVRDcA¥3Vڋ󑘋žÒš.”²õ!Ï*(å÷çÒfð½é·ù›ùsAÉ¿1]™ù1–ëºÔ‰.½užOô^' -`JcîJµ™+B!J¦î’Y×3Fç6ƒÕåM,ëú Ò±»6ƒû¬(Íî#è0Ÿ¿û²}«Ê%’Æê0®3$Åvg§ñÈ95hâ>ämë_©jÓ™Uͳ)tTe™ruè(§§ -§iu3EE¾›å=êZć‰ßEÍ3ߣ:ÔWó;Œ<YÔêö¨ å½h¾&¶@OûÏæÔ„íÙVº†šó‡;Ûûhæ8©Zê8©€e½Ñ³
}}¢ ù¥IE0XØuˆ*÷u‡?#9tá ˆÌ<ÚÄâušóâ™(“(¿,I:Ñdt¡‚%ܧ4sx%Pñ$ƒSGe³LÇ3CöN.ÚùRZ_+ô*Æ/—2»Ú
ÆüÌ©BR•SE¾™&fn/æy ûC’˜-𲃠-ðÒ¡t]úç^[Í\üPõ)EP»Mh^ü@Ð"}õÿ½–Dê -sƒe¢¢zÌUµ„PôU»0RzÆÕh•rÓ¥˜Ô‚Æ bVfk`…-ë3òkÌâßëó ΄ÐÄ®3&¥•ªW]uî^@A±µÆê?äjaà%eé êjBÀ!ðöïîiÚ87_iAGñP™ë] r”¹cŒéô¢¶À!¨¥Äú¼m‡/çU—ÞF—!¼¶îœsM
裟Rp<æ•e><þJHbËÉ.B «J·ÿÛW¶·çýïU¹Xkj5Ó×&Ös›ÛrÆ“Ù=ƒ¹ú“_ø¦¬‹šß3ÕÛ3íáÙé}w‘HØ‚5aE?¨s$˜á÷Ž ?6ŠT»z«¯N\©]wγîÈùZP¨ë¯o=wsP9?Ó4…ÐJ²f˜i‡Ò,²Ä^
H$T±Ôë@z{%#Ôç©Lúzߨ¢C¸M$HçfNøõmc
,i«ù,t)¢m¶Ýå•:¿ÅÌîKÕG½îF×çtèû ~ 6N¥\ËÎìasâþ¼‡¦w)T¤R}:Ü¥&J¨,¥)coüº§6u¦Ýfwµå¥ƒQŠ8Oœ
‡¬QÕéäý‰¼${'dIÈ=þOåM©®ì&üaž©ShÑ3T––,äÙhžÈdœü3²”‰šâË8\PŠbÖî0cíý›b -SÒUÿ:7]SN? -ê+‘ÀG°À¬´ëhè/yöy$uöÂ+ÕKÊá•ÐÌ{ЂCYßg!JðÒ×Yú6KcÜé:gŸÛüTòhâ®Î¥L„,°ˆ‘=¦1†Ç´kÁëmÎaô†â3M„ã1Âw
ñÍ¡ƒŽeα-}¨ +xÚ[[oã6~ϯ0úR¨¸â|œv3ÝÛ™n&Å.ÐöA±åD,¹–Ü4ýõ{x“u35EƒA`‰<:òã¹¼Já^q„&z%5C<Å|µÙ_¥«Gèûö +{š$%}ª¯ï¯þñžÊ•FZ±ºßõx)”*…W÷ÛŸÖt
Òõ7?¼¿ýöÇ»w×’ïo?~¸NO×ïoÿ}ãž¾½{÷ý÷ï8^ó¯w?Üßܹ.áy|}û៮E»ŸLïnÞßÜÝ|øææú—ûï®nî;[úöâ”C~»úé—tµ³¿»JÕŠ¯^à%EXk²Ú_1Ng”†–òêÓÕ:†½^ûéìøá*ÈÌ +º$Ês7~v’ÍÃ6o6ÇâÐuåêÝÜDK”¦ü°õõ‰e ¦"Šjl"á +„²®óø¸rw=k;ús§|¹›³aÆ{bðX%J8¢’,{Gµ È”›CýŒ %–Ç1Ö§ºŒ±Žê<G/E¹ÝdÇíX<†ÕÏRˆfÄFaA)ð°ùiz€´¾#áÒx %/â‚‘šª¥¼uôFOù~>Þ¤BLRüŽjI‘ ·8Þ¸uû>OÁ[ :ÏxÜüñX´¯SÀÁ²Hy\~ š‘?¤ +I¦ÐtT3*@Çb<éð6uÎ’qÉ…¢ô2ê(”†lΓ/=áúÙciІ|%:øÕ‚SnqÈQÁ—.¹¹UrÊHÜVM“oøyÎ_ÍLÕU9Mç,TªÔè¨fôàNhdÊöoãë.Z3)—¡¬¦’]¤×)êÀâúý‚íS¾Ÿ?N‘ä1±I訙r‹ã/…J_Òø‰"èóDF\{|MÚÍ!9æ»cÞ<Mc,FP푨ôŽh*~a!{Jä¿
èf¬X‰¤â‘øJ€*œžÑðêÉãO¸þ…„jÆUtÜ;¢-Ƽ¢0c’Cü%<޳>Õe uTÖ1dmö5ùdN N)‹D3‚‡N#Ž™JþtÈ7Åîõ:¡,l¶Rm7¤] +µ$M[M
Ñc~Ïú
C³÷¯Òõ}Û´çOvuYÖ/S¤'ž1'aOFsìW(”XiXà…_@_¬ÖF{"ݰù…’ûx°=¹Ýå¥D3ß™¹Ÿ²hZ÷dÇ^žŠ6oÙ&O¶yYìÿ©\)±˜o1tüœ¦äøŒtÙæU[$n#:è=؇6›}r¢¥wðpž(ÛùÕµ)ë×YµumYõêšÓC“ÿv1î½ÓÒÓ9ûÝË!kìÛŽÁãÉl…5ê¸:¾ûÁÎ
ÌÂp_}<êÆÞdîç%{u®÷‘õØWž%ópÄ„*¥[ìv*ÃçóÀ‹öü$A§a³å‹ãCûÅÜŽ>Än%C¦ù•áGÃñpÖ_^ãuãž«¬-~÷â‹*Ùçûúøê^Ý(l“‡2ƒµu¯ASo2+Á‚Âò˜lÈê<È çöˆ¢Ì`ØÛìÙÒ`BgGë#¯]àlý{Vžì)
¥g¨˜ŽCݘ
„Üu;ךm·…ñíYéÚû…·Gˆ£çödΈlóCžW®,ªg»š pR»Vï°ØºÉð½9*´ç‰xý©ÞÏb¬ÉÌáGHz¶= Û”§m€àKÑ>ÁU_õp:G+xv•uq–Á€>¦^CX·Ð»w(SH¥|!îô©.ÇŽÊzÊ&ñ0« HÀyTl šÛ_
‚Ž9þˆ}£lºS~rꨈ$40Àg``l“*Ð/Ø:åûÙ9
Ñð&*>æÕ’"nÑ´†Â +ç‹è:EÀå‰ìôäeþ˜Ó“Ù¢(ȼH\zG4?܃§H:”ï»&LÒìÑ<óµÕĶf‡CY¸è)|\îÖúh) '9=¸'>›0&×·;ß›{zà0
‡È×¼™+ö$TüDã…ñé°0*¯Z0Ã¥NFÖKQ–Þˆ²ñšûˆj7ðSF™‚YU3ïõŒw¶¿ÞyÁ:Æç¸;žÍ.¨º'£ÜlÀè–úœzÖ6Ã1@*V+¢¢)[Z“}Òÿ`ŠÌ)_£Õ±®Ûd „š}Ç”4š.É@5£ÇÐ7Œ¹E—¤9AN9‹/ÉÑå%ˆìmŽúø2sþª)"æòELh ™ +x{˜ùT¨Ð.”òõ>Ï*Hèw§ÒÇñk÷QœwÕƒ qM™ûqšÛìÔ§ Ì&à6Ú3»Ög®žðÉT„„íÂf¡à+eØ^¶Y“¹É ¬ñ²:˺~† ãô®]g¸$c4†€ñpõe;s]'!æ:ËñÕ–4Db¿²e:1Ît:ÿyÛvŸTµk̪æÅ¥;&¿””åü`$Tw%(”3£`o9…Qx©O¥—Ÿ™2ÌëäZªú¸7Yœi +Ãam«][pED”*Á†Å¤Mùö2îSsÀDÉð{TäªôÍøŽ=OjîéøÇdwT3ÂÞleÊ,¾ô]í„}3]Cæy„Ï·>ùWTš'STÂDz~°£
mC ãùµEÐYø“ôÛ†®R +:Øô(2÷êK'ÓU3`¢\#I wÃÎÞd²«‚8%¢i®„%÷°QíQÕÝ
ª`™{/m»„Ún.òÆ?ÏÉvµõu#gÒI›ZÎ¥ún˜¸ÛøˆK,Ì:’9RŸê2.;*›þ±³Ú$¶(§:.=ÍHoÿ€Ó"Cñÿ½ÖÄ&ò +·‹ƒ5³1-®l5OÊuøš×&l™;⦷Êö¹k2HêuÁÃ|Væ3aC[Ö®çç”§¿Ö§#T†ðˆCcJJÏÕκiܾ‚€b㕵G8ZpI¹y](oÿ÷þ¹G_†wËŠÇÊmzØLP§,b\cÇj‚\JO›vü3Þ4ÙetîÂkož£¦™[ +±KKÎYryͤöÔxáP¨OY3j°fÚý!ñÃ9¹q‘b|A‰ŽjF‹¡SH1R£[;Îýx/RmëÍ©9´îUµ¡ð?ßvVf§ëÛˆÛK¤úòÝP‰Èâµ½Qäf¨'²ò¨ïhˆk)Ä„š©ÐA¶©¹Ôl ôO7TX>ŠôvæT·–¾lÜ«›~W µHV6 ±¿>ÎnóÊTn)÷e¡ÂC®6Ö˜ÏC¯Aù%v?È9ÈŠ¥ÖÃçÒêE0"áHͯOÈEµ¹¼>^ŸÎ?˜ødÁâwüúõš©f7ÙCØÚ +å訒H¶|œ }óÆùÍðÒuºãñ‹×º98fÊâœÃÞGæ¶ýœàÏ{¶¿}©ÿü?`,¨R²8bî1*³“ã”2Úk6]~þöÿTõÿaØ—Úendstream endobj -1869 0 obj << +1882 0 obj << /Type /Page -/Contents 1870 0 R -/Resources 1868 0 R +/Contents 1883 0 R +/Resources 1881 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1851 0 R -/Annots [ 1872 0 R 1873 0 R 1874 0 R 1875 0 R 1876 0 R 1877 0 R 1878 0 R 1879 0 R 1880 0 R 1881 0 R 1882 0 R ] +/Parent 1853 0 R +/Annots [ 1885 0 R 1886 0 R 1887 0 R 1888 0 R 1889 0 R 1890 0 R 1891 0 R 1892 0 R 1893 0 R 1894 0 R ] >> endobj -1872 0 obj << +1885 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [310.7975 737.8483 379.4695 749.9079] +/Rect [257.6971 713.6209 326.3691 725.6806] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1873 0 obj << +1886 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [308.6055 707.9148 377.2775 719.9744] +/Rect [310.7975 683.3704 379.4695 695.4301] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1874 0 obj << +1887 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.1999 677.9813 362.8719 690.0409] +/Rect [308.6055 653.1199 377.2775 665.1795] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1875 0 obj << +1888 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [303.0862 648.0478 371.7582 660.1074] +/Rect [294.1999 622.8694 362.8719 634.929] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1876 0 obj << +1889 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [332.9347 618.1143 401.6067 630.1739] +/Rect [303.0862 592.6189 371.7582 604.6785] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1877 0 obj << +1890 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.0748 588.1808 454.7468 600.2404] +/Rect [332.9347 562.3684 401.6067 574.428] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1878 0 obj << +1891 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [301.97 558.2473 370.642 570.3069] +/Rect [386.0748 532.1179 454.7468 544.1775] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1879 0 obj << +1892 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.137 402.6478 299.809 414.7074] +/Rect [301.97 501.8674 370.642 513.927] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1880 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.8055 342.9402 239.3365 354.7408] -/Subtype /Link -/A << /S /GoTo /D (root_delegation_only) >> ->> endobj -1881 0 obj << +1893 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [324.1075 91.4488 397.7608 103.5084] +/Rect [231.137 344.9998 299.809 357.0595] /Subtype /Link -/A << /S /GoTo /D (server_resource_limits) >> +/A << /S /GoTo /D (boolean_options) >> >> endobj -1882 0 obj << +1894 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.1555 61.5153 427.8275 73.5749] +/Rect [143.8055 284.6583 239.3365 296.4589] /Subtype /Link -/A << /S /GoTo /D (zone_transfers) >> +/A << /S /GoTo /D (root_delegation_only) >> >> endobj -1871 0 obj << -/D [1869 0 R /XYZ 56.6929 794.5015 null] +1884 0 obj << +/D [1882 0 R /XYZ 56.6929 794.5015 null] >> endobj -1868 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F48 1223 0 R /F41 1203 0 R >> +1881 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F48 1228 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1885 0 obj << -/Length 2722 +1897 0 obj << +/Length 2840 /Filter /FlateDecode >> stream -xÚµ[]sÛ¶}÷¯Ð£=¢øþxLS'×[÷Öñ}jû Ht‰,ùJ²S÷×ß…H@$.ì©2Ž!òpqvq¸X€›QøÍ¬"T893NE™š-îÏèì3ÜûpÆ:L@UõãíÙï…™9â4׳ۻž-K¨µlv»üýüÝ¿Þþçöòæ¢âŠžkrQ)Mϼºþ©½âÚ?ï~½~õá¿7o/Œ<¿½úõº½|sùþòæòúÝåEŬbð<ï,L<ðþêß—mëÃÍÛ_~y{sñçíÏg—·Ñ—¾¿Œ -ïÈÿÎ~ÿ“ΖàöÏg”gÕìü „9Çg÷gR ¢¤áÊêìãÙoÑ`ïîáÑ\ü¤²Dq©g•âÄJ!óQ¦„*ˆZe$#Ú·B”9ËE9 |”ïçUûí|½»«·ÌžWÍrUWÍzì>3š0¥Ý¬ßGÂ$¢2Tx -³Œ0aùËǺn‡`ÿ¥k,ëÝbÛ<ì›Íº½°¹óÄFŽ9C(—(”<Ñp‚h -,ÚS§!qÊñÓíÍíçYÛ¸é¹ñ÷S»û‹££^°L3¦$¥#ZXCDˆ¤Ö<’h¿˜aŒnMA…=¢Â€ÊŽÙ¾¹¯«Íã>‘¡•Dj¥q*•á2”¡#RzQ÷É|'ö]ó Œ8¦Ý´#Êh5pbÀÚ}¹5Ü)
D -5ÑÆŒÈü3Z4æUZ`hL‹PBÐŒxаÃüOí¾B„”fðq Ä.BÅH)1ˆ -cK¸’8$IKZê¡5ÔqTªe½š§ª’”8áÞ{Deº(K*â8ÕÃþO©££®¡@Žªé¤¯†âÂÅ’VÀ\NíNêL¥e%,!¬Ôxð#ªÄ$±†Ê
ÊNB¸Üú¨i¹ETo ö›j·™§zjñî#*ÓÿPo–œ
œ¦nKÜõ
³„¦œ!‚Ó0 -PËõ]@×á>§v_žØ,¬s¸–xð#ªD$±†ëM -ÖX¸ÜŽ DmÈw÷ðøék™+á) -ki¬ÓJ{hŒKb³ƒn¯|¤Ûвoà¯e ¹f×^Ù½AûÛ¼»Ø¬÷õzY/ý/u~·Ù¶—wõÔÖ¬?·¿çíðnÕ,Úöß›uÝ>å>\Š?ÕÛæJùb~ì$~@ïšÏëyå#äß+ŽÏiP_;¥Z_ö‡Š°ö¹gØþýéúãÇËwmÛÛ8pæ-úíKÝáM{n[óÖXûcµ™/Ãsw‡›ûöײÙ}%• ,Ä.ºîÞ&t -ÝëãÖ}W -{}|Á÷ÔîËE¿EáUø(DTIj
¸¥ÐDr[Øfé£T1ŸÌaÖ«Ö›eæ>ÏÏ -Sˆ¨‡a¶bDh¨ï$NS,f]õå’ÙÛÓ‚HƇÞbÂø‚ß©ÝWOÀÀ!ñˆ¨“Ô.< -(ç -º;‚Ùu ñP…R"#=1q°dÇHDPÊb <ÇÌ’}§KyyW’}eAÌtÊ“pгˆð"w;±ú -Ù(T©Phô#¨@clÕœ0š(í -³m5ºˆÕþù¡NsTã"*Ca0àê<ÇN/ºàȨwèTK†d:¨V)×C_±Lð¯S»¯‡õ¼5D˜¤ÖpÕI1ZX\ôQˆêêPæö·üw›Çí"#<N—•a1\`Àš€ªÓ(o™±ø(F!_/üÜã ôÁÄðÏS»/ÿz™’@ -DRk¸•†Á-måõQˆ -²\îkàT(C%sl@¹|Wæ`{n@”Î
ˆ×ås¢€Ôî+Ï
hƒDDˆ¤Öpr
5/,pû(D‡å{|ÜÕÕK³¡ö±ÃÈDT†Íx¥«¥ÕC:§Ùb)8•¬xaZÚèš×Xö=*,zøBR»/#”®Zõ3¿ìíP%"‰5TŒÌʉ´ÜGM‹1¢zßQ'ä'aîÒ\áÝGT¦ÿáâjÿ}k@à¤Ç&§¡`ñ{I&ùqë¨Çû.`É/à>§v_¬7a-L›ÎâÁ¨‘Ä®7¨°¨–…ïÁ}¢·€J*7õ*ÿ©Œ*œADe($-–Ù!‡ï ¹ü”ëwZ³øN‹Ôbàli§Åãn§v_žå˜"†+‹Ç?¢ -DRk¸ê„!°F³ÕõPˆêêp¾²YWÛún[ï¾ø¾iƒà]æ.ÐûísŠ
Ó—(nq"*ãødr¢5pâ [æ:ÙúÆ@¶þBf"….•ÿôÜï›H¾@1µ;˜'3¹™§ SV&h°"ªÀ$µ†kŒHJ4ÖC!¨ÃëýW{†¢ºÛnî«esç@%T¯¹”Hk"”NDeø×ŠHʇ|rZµrZåâïd³œ?å…I<:Ur+]fP&±e†…*À'øžKè2£ÃbÚÒ»;uðÊheÖè`DTHjÕc¥•<ÿƒ*z½ÙÇ‘™ïÛ¡Ét¨¬T8;$üÞéˆÉð¬ˆ!ÖðxÔ|·‡ò<sâ§t€ù#9©%æüé0¸»Õü)Wl 5O,î_6Í"œç9ž?‚íù!õiÞ¬æŸVÝõù~4=w‡«ü™¡ú©^ˆ"›>ñMü‘Éï€ÁN|0Þƒ¯õ3DyRÚlŸs5²ãTbGLÒó¸>v”Ù~×§)UÆÕ±€c©Ž¹?qÃ{>¢µq‡F½Ûœ¨PÒ‰Öﺃ…;bp#KùY#ìŸC‚Ùíø¿{5ÿñ?5<þ;Liˆ°SGÕÄrg)O܉d’…÷YYn2Ôÿßendstream +xÚÅZKsã6¾ûWè(W +œ–êŽÕ³$ø3ö×ý$ä,éü>DÐ5kÍ’Pƒwól¦)A(®¬ÅÃë€nB‚f:™Ú€†R;d)’ÒtÄ~®”ïo0\÷ˆœ"„>ã©¶mûfxÕÀç-¬:yÕ]‚+õ7 y-kͳJ+f„<sÙh£fxQ§½Ymòm6¤\ƒ\â’yé
jD|‡`JÃE„›®ü/ɰ“=ÑÚ²Äq=À D´„wÛ‚¹ñgL®;I5=,1ƒrÅÌ;¿AÓd°Ú<Ý$Àœ¹U´Q3t‹¨ÖFªU]eC¾%ànçÅ7¨ù]¾Y¸JHÑUàËÔp3z²áÄ0\ŠÂæ°¾l›0K¸€?cópÝÏÏmpÿ7ø`Öù
êœ"ƒÕfù¦œ”;sh£¦ùÖ Pâóñþc>rnÂ4nõ¼Ü5"¸C4©˜µ0Ú‘|ƒþNUü-ûžV +f9=ºW§ž2eÊšXLœvf…áµû¢®Sº™±ÉHÁ‚t+{,k\Ó0®ž¤ÞR#ÎÜxÛ¨iÒ5(o)Ãl³Ùçu©§Üä¼
jDî þºÓÑãÇr‹1mõr—g%$¿‡#ÂÆý‡¿k‘ã=øô™C ³¼#r +ÿ:s<!`(² +º~?B¾ ¹e…ŸlµÔ‘EôÃAýT·¸É*%êÁ³ÎK”ªm;ô¨õq_ŸòvW]míÐGÖªAЬôéÑ-¯h¨Œà|÷|x¥f0S™ö +ÞÐjŽh‡ „ž?øûÐöu,q®«éûxl’x›»ÙsþµÞ?/†Ÿ%_ŠÃSÀÔuµ.²C€Çí1̾ +¤ä¿‚ÿâ"^Ǹ¤Ì;„ +§—ùÙîy‹ÁŒeñ€½jùœa„«¾€Ïž1êÍÂhFä×¥X6Ã>:i±EvaKÀéϱ¸ +³Ë°œ„üòõæÞ~ýµ‰óiLÙH¶–íbÝ9–ýŸðR¦ ‡¶ùMo«ªí¶z¡r‚\7ÊZ÷yÌP
!ü{ßk,mµWêLiUÜ/:KZ›Ô5œh‚ÏÎHÇEbbæ=N^qìÈ,Ï)l
·¥çÄ×îžò’¤IŒYª65u6U
¾´]†ïÇÉ…-L%§5 È?…)e¶ËÃRG(ÿöþä‡Õ€…I¨÷ЮÔQ$d@–kņˆ_hU%š³ÛÁªòPM==0Õ½RÓ'l`,½¼¼\:¹dƒC +vNØ´›9O™§›]fëØðüN—ÙñðTíTØG!Åõü‹Ï@Ï´gŒÄäI“ 7ê +ÍHbë³iÒ>Ý?ù”€ËWôÄÄ«·Y1½[•HCw«á‰a“IóÛ%ê²ûôš0©Tü¦_æù&¬ê#Aš(Ò´¥5Œ>Áx`ï6_È妅€Ûeó8£kÔÇgÈ;¨…|u=½õ» e ² lÇ õq½ +ÊvÉ›²]Æ\ˆ£T¶Kúš²]6ÕšpÝ*Mò‘B@¤¯l +uèò…º…:¼‡B]ÆX€®îöÊilŒ¡±Š\ î+ò$MÇ+r„{ÂÃsX‘coF3Z¥ËøÔ†r[¡ìH#ïÅ~¡r3¦=Í‘#j]ÔG«t.™4Zÿ%F›D™ÿg‰Ç;sôñ£ÅÊé½çMöy÷i¶Ìû«ÑD3üSÏ‘Úþ’þö_”žþÜV¥,±“ŽÃ
ä—F¥ÐB7ø¥F'–i+ÓÕÿ™õendstream endobj -1884 0 obj << +1896 0 obj << /Type /Page -/Contents 1885 0 R -/Resources 1883 0 R +/Contents 1897 0 R +/Resources 1895 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1851 0 R -/Annots [ 1887 0 R 1888 0 R 1889 0 R 1890 0 R 1891 0 R 1892 0 R 1893 0 R 1894 0 R 1895 0 R 1896 0 R 1897 0 R 1898 0 R 1899 0 R 1900 0 R 1901 0 R 1902 0 R 1903 0 R 1904 0 R 1905 0 R 1906 0 R ] +/Parent 1853 0 R +/Annots [ 1899 0 R 1900 0 R 1901 0 R 1902 0 R 1903 0 R 1904 0 R 1905 0 R 1906 0 R ] >> endobj -1887 0 obj << +1899 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.4539 736.7854 426.1073 748.845] +/Subtype /Link +/A << /S /GoTo /D (server_resource_limits) >> +>> endobj +1900 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.9629 737.8524 450.6349 749.912] +/Rect [387.5019 705.7889 456.1739 717.8486] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1888 0 obj << +1901 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [398.5803 707.9231 467.2523 719.9827] +/Rect [381.9629 674.7925 450.6349 686.8522] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1889 0 obj << +1902 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.0412 677.9937 461.7132 690.0533] +/Rect [398.5803 643.7961 467.2523 655.8558] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1890 0 obj << +1903 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.0412 612.7997 461.7132 624.8594] +/Subtype /Link +/A << /S /GoTo /D (zone_transfers) >> +>> endobj +1904 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [255.0796 648.0643 323.7516 660.124] +/Rect [255.0796 581.8033 323.7516 593.8629] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1891 0 obj << +1905 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [311.5276 618.135 385.1809 630.1946] +/Rect [311.5276 550.8069 385.1809 562.8665] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1892 0 obj << +1906 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.9507 588.2056 384.6227 600.2653] +/Rect [315.9507 519.8105 384.6227 531.8701] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1893 0 obj << +1898 0 obj << +/D [1896 0 R /XYZ 85.0394 794.5015 null] +>> endobj +1895 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F48 1228 0 R /F41 1208 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1909 0 obj << +/Length 3204 +/Filter /FlateDecode +>> +stream +xÚµ[Ksã6¾ûWè¹j…àIÉi2ñd'•L²ïe“8msW"'"eóë·ñ4AP S™”Ë%üØèFhtSYaø#+Q BQµ*G±Ú.ðêî}wAfãA›1ê››‹/ß°r¥*h±º¹É’KIV7»_Ö¢è$àõëŸÞ½yûÝ¿¯_]–|}óö§w—*ðúÍÛ®lë»ëW?þøêúrC¤ ë×ÿ|õóÍÕµ½U8ß¼}÷íQöãŒÐë«7W×Wï^_]þvóýÅÕM°el/ÁLòûÅ/¿áÕÌþþ#¦¤X=ÂFD)º:\pÁàŒùžýÅû‹£»æÑÙù#QVЙ ¤t4’ ¡”X•B¡‚Qf&ðæ¾îk°ª$ëã%‘ëzÛ™Ï]o;+Ûk/šv¨mµß?ÙëS_ïlkèÆ2únÿài«CíDÚ]}tð{w»ª¡ÙnúáôÁvüѵ5xƒ•lý¦;úaÖnëèËrÝÜ>ù‡IØ‚”ÔXÔ×Ç3Ž*½Iuó`”Pr]Ù¿Ÿêã“mÞvü+¥üñññRÑ5ª?U‡ûm»ƒî¶Ï>6ý…Zý¡qýýüÐÓµ %Ãê2Ö§i›¡©†Úbv§cúÍ™fó44VpQÄSÌ83z·= :·õ`uÖ7«v÷¥6qê€t¨=¨?ßþìÜíÜH}Ý»¡A˜ß×mõ5ôEªÛ…©'¸1“ëŰ>Ń텙vø<tbº÷@Ä=æ¸ ÍH”,;‚JBЬ=$eyf•XÌf²k„Ì2„jî6Õ¾Ù5ÃÓÆ,¸šª@x‰8'eV‡ +‘Û!H*D¬Ãççž·d2| 3ÀI&ðQŒ +‰IdlŽv¿`v*÷å´c°32ŽUÞµ¤I"-K;Q(Ä +¨þ²´£ÎÓ. ôˆÃ±jûÛÚd™›¾;·)ó(”We¹ D@Íh1*Xo->ñÎØ2åÔ”¥È$yX"ÈXIdnŽ{¿`x*÷÷ÊÙ(L‘÷@@-)’HËS’).%_ Þ•¡žGq׿¡˜Ëø8zÔŒ"ÓŒ©2VäocŸ3gšõqD ãÙ¬ORF"‹²>ƒ_°=•ûbrL‘ÀTäPФÒòÄ%*ðR};FeèQzÄj?l^ÿD,BD^‘€šÑ$f G\Q«òyêÜŒAS +İ¢BE¸ŒlÎrÐá¬Oåþ rð!gy7Ô‚"©´,y©ë”…¬o:Ï@Êøk. + +ˆ[\‰¬"”j¿g‘ˆÁn©ò·p>*¥÷ÃS6Òs‚ž·>‘úr2HÙJ̲> ¼‰¬<û8Dnô¡2üó(=⩯7/‚š5TÏ[N™€šÑ&®}ªº"u>ÏF¼`TR +‘xþ&vɬ´²€"“e*À*N"˳¥…Ã/ÌA*7"¤¶Ö2-.JÈ
„Ì;# I¥Y>n +ÁÍq„wÝS
Ö3î`ÉÄÀ|Йè¯tÆg4^àXѾ%Cw¨úòòÔqªQxXeÏXL$˜Ò;·ßWs©–©¯BV¿½ïš?–Q^Àêzªf_}Øû“Ãd{þ#œàØ×õ™ógÖ7-‚:|á•éu~}”¶ãõÌõÕŸæ²dQòüè43zœ%S$$-ÑðŸ§>KŒ˜fÉP–Df²d¨Øìãc²Y²Ã/ØœÊ=“±Ìa¼dù™¨5RiÙ½æ|¸6Be¸æQfõ†n³kû¾Þ¦LÃò–< fF¸FL‹xøÿÀzƒË `m»öWŒéÝÉ.Üí5Øtc÷ÔV‡fk/¾}÷^7Ę'ÛSíûζNúX•n÷ÝùH÷vþ}÷h›Õñ©iï¬Äý%Yë¥ßÛKËtýêÁöHâð¨'¯Õgü,o@«÷W¯mèï³¹¶º«u;è“ëC‰ãÐÅ©[Hñmëc×÷MˆS}= aÿÕ̲ÓgÓ$R”‹Ä¡ 5³†~=÷vü ‹3»?ÖÇC3ôöÐÞ´ÜtAχÚ~ž>îªÁ8‡1wdŽq·ïCŸºu{2')õ]k¡ù¶Ø?ùx_·µ99¨¯Âã໣o¯\¼õý)»óÁiÛa‰<Z„áØîœŸ´".DôŽIJü|hKôùΙ‰ã°ËQì‹-4·¨B ÿÞ7EêJ £iøÿzö••NáÉs~³ÝŸvÆzêϘR χîÁ´\8
ö®]¦#4CݹVýÄî¿§~ˆåØ£©_¸ÎÀcŠ-ŒG‚>ÑQH3)]÷ÛûzwÚ{Uª?jk–F]4$5¢¿p}Í!àõPÇ*{¥Ó˜¾N« ¨Ê©®;IÉ‘Âdñë[ߌ˜ûæb*Wi]¶…ïêVk$çò{ʉòH§3g¦ +õÙ¹˜#@òsPª¤Ò´*z\d¹É!‘‘TNÂÅ=ˆM3!Ê_Nd‡xâ\ˆˆ +I—C„ÀHPåån+lýÌðŒÀžH|¤eíæ²\Ø{0õY®=N×û®ÚÙ–Öºe³õî`¯o¿ÝŒÂ vØ[“•™›&ˆm^év÷¢étâ +Ÿ$CˇÄ{€Ý+S¸šÃÜ|>gi=ÔsQ“"|â˜êÑÄ#à@ÅHñ2”á0RÖ#’‰x„‡÷sÖ#EðH1š„à›E€ +óIu‘9?Qžú‰ºÍVßô¡vòŒÙKÀz(ÍìØ_[ç¹¾lÝm·&À®¦µ]ntHµNƒË½LW~?aksþ»Îî?ÌTZO<GÒœ3¢Úª9À´êŸ +ÀžD™ÝBsi
ªëí±³yM‰'$Ý7IáÔ"åhßdÎNRø}Ó´ išã‡þöU†½?ÃÂe´bÊfvíO$@‡¶~´7] eœ2ÖÓº—ϔظ5 +¡«b²F=_¤4)–n)§ÞÕ;H?9ö½ÀO7W_YÔI’5Ê'ɺ×öIçf¸ùTîŽþq…ÎfëÝ×ú· Ò© +·ú'Èe> +endobj +1908 0 obj << +/Type /Page +/Contents 1909 0 R +/Resources 1907 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1927 0 R +/Annots [ 1911 0 R 1912 0 R 1913 0 R 1914 0 R 1915 0 R 1916 0 R 1917 0 R 1918 0 R 1919 0 R 1920 0 R 1921 0 R 1922 0 R 1923 0 R 1924 0 R 1925 0 R 1926 0 R ] +>> endobj +1911 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.2254 462.5521 454.8788 474.6117] +/Rect [352.879 689.0814 426.5323 701.141] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1894 0 obj << +1912 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [362.4163 432.6227 436.0696 444.6824] +/Rect [334.0699 658.2017 407.7232 670.2613] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1895 0 obj << +1913 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [402.2465 402.6934 475.8998 414.753] +/Rect [373.9 627.3219 447.5533 639.3816] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1896 0 obj << +1914 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [348.0303 372.764 421.6837 384.8236] +/Rect [319.6839 596.4422 393.3372 608.5018] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1897 0 obj << +1915 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [335.4973 342.8347 404.1693 354.8943] +/Rect [307.1508 565.5625 375.8228 577.6221] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1898 0 obj << +1916 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [363.1733 312.9053 431.8453 324.9649] +/Rect [334.8268 534.6827 403.4988 546.7424] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1899 0 obj << +1917 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [365.365 282.9759 434.037 295.0356] +/Rect [337.0185 503.803 405.6905 515.8626] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1900 0 obj << +1918 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.041 253.0466 461.713 265.1062] +/Rect [364.6945 472.9233 433.3665 484.9829] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1901 0 obj << +1919 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [402.9837 223.1172 471.6557 235.1769] +/Rect [374.6372 442.0436 443.3092 454.1032] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1902 0 obj << +1920 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.374 193.1879 389.046 205.2475] +/Rect [292.0276 411.1638 360.6996 423.2235] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1903 0 obj << +1921 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [348.05 163.2585 416.722 175.3182] +/Rect [319.7036 380.2841 388.3756 392.3437] /Subtype /Link /A << /S /GoTo /D (zone_transfers) >> >> endobj -1904 0 obj << +1922 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [488.512 133.3292 561.5676 145.3888] +/Rect [460.1655 349.4044 533.2211 361.464] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1905 0 obj << +1923 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.3443 103.3998 467.1586 115.4595] +/Rect [368.9978 318.5246 438.8121 330.5843] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1906 0 obj << +1924 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [321.49 61.5153 382.69 73.5749] +/Rect [293.1435 275.6898 354.3435 287.7494] /Subtype /Link /A << /S /GoTo /D (options) >> >> endobj -1886 0 obj << -/D [1884 0 R /XYZ 85.0394 794.5015 null] ->> endobj -1883 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F48 1223 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1909 0 obj << -/Length 3506 -/Filter /FlateDecode ->> -stream -xÚ]sÛ6òÝ¿Bo¥g,_ÀäÉM46éÙîÜ̵} EÚæE"U‘²«»¹ÿ~»X€"EJöÍu2Žð±Xì»òƒ|–èX§"™TÅ ãÉl±:c³˜ûxÆ=Ì< -úÝ®ó¬uÊAÔUî¡ýô¿@ŸÔºß.—;š%çMùP…•ÏERÞP¯[ºÛ¼qy—M³EsA‘¸5ØXÔ«2–L -Kµ’žÁM•{=!!ž$=p¥b+xrWLN --4sÚp+òn›vˆ‡;v¿ñƒF–à4ÒÑ3P +!DÔ,‹|»¤d‹EíÔž»ƒ…m=ØR8Ôßø±rÕÁŠ6˨÷KXS‡¾IJ‹4µ3uÌ•tN‡&73j\÷¼T?ï/{©1^d’T6‚Š -)²ð?¤I1!Ô€¦±GP/P¢˜S V6 Äú`[w&KôkEÑÁ¿DÀoOÎ!Š£²H˜'ùIYtP/2Ɔ¤à¾1Ù¦Ž¤=p·ÎÒŒ8á" -ÈédèýÍoŠâ ò†SµØ”ÁlHl¢61*Hì…Cñr88lv¹³‰µ¸ºGÿ‰X§?Íï+ñ»Øs†µ±Ç(5ÁßI¡˜Ó4b:i^*•@0?m^= ãæ€œnœV0 _s8œ8Œ¬LBdŒ:IA4&a`eŠa4e4üEV6ÍÉáEÁcf’ãÆ&E' -Ì¢ÇÆ©#€Ÿf{„õ¨±%ャë“'¥ß&c„ë´ÁiC¨ÿ’Åõ N˜\€ä—spÃeEí‘åñ–§Ié &hØž>1zHÌ_c|'YUÅ,_5A™DšC®O%wþþÇx_íò”áŒI{ZÔK„Œ°©@¢ÉR8iƒô®H‰ª:ŸsÆXô]¨"¿¸Zµ®—å¢ìB~1Œ4…Ž-Wät}¡XiW(†Ÿf»^×I«$jŸkΖàb°ú÷TÐÀªh뼡؉û}ØdU[žóÈ…#0°X–>,W!̃Ʀ|xlýXM‹
z.쪟ء\Ór¦¢p¹/B™ì°¼Š£w»½ÁO»ô¯Y0lÏi÷©»ŽS!9žÎ·!v“‰ 5-B5_£nvSÈÙd¶)@õìøhr]¸l²ŸG€61FOõ°.z;Ía -&•¼’?KÓ%ë‹eF•ff¢çzóµ¡&•2¡Ñ`J³®F
ÌÃ`/™ŽÖÄÄSYoýÌS±i€GßCÂ_´È˜šŸZúufåÁ@ -œÁ£PscéjÒ8'¤¥l}Iµ+PãâgWÊÀ±îì9ü}”n3—f‰TF—´°)ü:”þnÎm¹û^EàÑìa•Q$Q³Æ§ˆE‰´ùÙÌsïõ -_Á´ F+†ßã
ŇdÚ¯'Œÿ·¿IM:A—Á$ŒŒŠ?34õfPó–û‚À÷4–Q×ûƒwtÊ÷+jоjžå¹ç«!€ÒïU12)!ãöÒ EËâ)CqÎ_ŠtÖm™×?#ý³ Ìy^Ð%5ù²™ÆV)þzAÚ^Y½»(,^l¥»@lð"Ö{ømžËKÍÔ«ý¬/ùÛà‹ì©X!0Íö¡`O)‹•f¯ŠËz‘-§j»€í߬Ý]›F7ŽP*øá!q5ÔÔ¿ÿãÈžeèP‰Õ:qÃwD¨÷coÜ$±Ø—ûO}µ6ƒ¢¯ -0C_òí6õW´`GƒÅ¾Øk½„Æz™-Ýí$ýTä¸ð‘¯±²üð3‡-á>ÆãáÛ7D×´ü¢ƒÚG‚áÑ6á>’›K.Ýù펆}ùõÂcÐDµCV
Ä@BÀE07OÙæÍf[½q2~ã…#i¹s’Ä -~¿öbO)½ JL‡ÞÞñˆaP¬*¹#Ëü¶êÌnžC=§o¸7w\Ñ!É–õŽÃŠºÓ÷?]¾Ÿß|)A›ÐôÀàq¸œšOÙÒ}Ëàw€è{þ¿ÿ˜0ü<š¶É4fIð²^†øxíµ1á ¤ÞZu‚£TqjùÊ#m–Å œšW¤‚jŒÄ:]xßAŠš#¹`ïaÜSlµÒà -Yõà7 l²#°K9'2 ø‘LӪ˦ٮºg ¢û2«—¯úoŠÆ> ‹ÊH'€Þ2È5J8ÎdK.•~;áê‚ðá]8×,þ›~\ÂFÍ=1Ôw‘íöŽ: ªwÔúϻ鲖äp#‰tøRvâcˆc»ª¦_ ˜/§žÔ%¤é6éNp•7ãB/k†•ÇÜcÝ´¡ïs›ýW^«ð -8Våþòôzí8['ìà¬/>ws„… ÀeL.Ø*[Ÿ;ò꯾U~-övðö؇¡®#)§ª¡ðçOèÿýÑèþ‹Z…EP+޼hA²£, ñD!ï©W÷Y,¤¤ÿÒ*„endstream -endobj -1908 0 obj << -/Type /Page -/Contents 1909 0 R -/Resources 1907 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1851 0 R -/Annots [ 1911 0 R 1912 0 R 1913 0 R 1914 0 R 1915 0 R ] ->> endobj -1911 0 obj << +1925 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [329.3035 662.3378 407.7186 674.3974] +/Rect [329.3035 171.0954 407.7186 183.155] /Subtype /Link /A << /S /GoTo /D (man.dnssec-keygen) >> >> endobj -1912 0 obj << +1926 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [427.0093 662.3378 505.4243 674.3974] +/Rect [427.0093 171.0954 505.4243 183.155] /Subtype /Link /A << /S /GoTo /D (man.dnssec-settime) >> >> endobj -1913 0 obj << +1910 0 obj << +/D [1908 0 R /XYZ 56.6929 794.5015 null] +>> endobj +1907 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F48 1228 0 R /F55 1311 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1930 0 obj << +/Length 3378 +/Filter /FlateDecode +>> +stream +xÚ]sã¶ñÝ¿B“—Ê3 ì½Ô¹ø.N_j;Óé$y EZb"u"eÇiûß»‹]€¢ä뤓¹X,û]Èr&à?9ÓÊAÎâ$ô”j¶Üœ‰Ù +Ö>œIÆYX¤Eëëû³7ïƒx–xIäG³ûÇ-í åì>ûyþîÛËï¯nϾóÈ;_¨HÌ¿¾¾ù† }Þ}¼yýá§ÛËó8œß_¼!ðíÕû«Û«›wWç©•„ý>S8²áýõ_¯hôáöò‡.oϽÿîìêÞÉÒ—WŠ +¤†
1Ï+U¾ +>£ª[v)?ð|?d8ÚTæO)ªc®qÞÛ_ý…Uæ"Ëé’šª£ lÖ¡«µ¾@‘:ö7w…Æ‹0ˆ¶YDsoó\´ËµÉ0«y€¼‡;ëÍfºÞó}(ÚÃ@c*P{‹`¨Â²^¦åÛ Q€žˆÅôÌ]›Ì)±1HS™ +;«ÈC’¡—h9AÒèqâuMx +¢æzÁð&¨uŠÇÄëBj†æH3ˆå”í…£f‹óXq·Dc“"ªŠ’H¬(‰À—oE)‰†ÍÔS$ÚŠ l¥[ÊáõvWpU:(³ÍN¸†Ò{6òŸföÄ”yrу4í1¦¹±œMTŸÆ¡r xÒÈ4¾8Çɹ©“Mµ$smTó?5ãm ¥n3~.Ê’FLÔt;ý³m¢ X0:àp¹N«@ݤcеœGÂàH§i¢ê²iö2hƒóÜ _mè{˜\UnQœzÛ ×( œÉ—L+ýç‰T7*‡wá"‚fñ_ô1
;fhn*ÛýM@UoiôŸ·ÓïZðÈB®Óæ— c·5Ö±Ú¦Óªé¿,ʉT +“<qõ
}¸ËDÝýf{‡Ø
Õ(?J³åöMÛ³áÉG«S†¹Ÿòí¤ïšºçìË)!užl )M¡"É–N6(¸¸ÁŸ‚Kþ©à‚öñ½ŽlÃepÈãh‰»·Þùƒ¾cEXP½e4Â[Ù¢òÌ@觃Ä]Ÿ8î]Ÿ˜x ¹˜-³–rÑöýÕ?h”ÿfK)œ™4ŒG<`g6I1æ +endobj +1929 0 obj << +/Type /Page +/Contents 1930 0 R +/Resources 1928 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 1927 0 R +/Annots [ 1932 0 R 1933 0 R 1934 0 R ] +>> endobj +1932 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [288.6803 521.0283 357.3523 533.0879] +/Rect [317.0267 736.8562 385.6987 748.9158] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1914 0 obj << +1933 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.5503 489.8653 402.2036 501.925] +/Rect [356.8967 705.9305 430.5501 717.9902] /Subtype /Link /A << /S /GoTo /D (tuning) >> >> endobj -1915 0 obj << +1934 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [403.748 458.7024 472.42 470.762] +/Rect [432.0945 675.005 500.7665 687.0646] /Subtype /Link /A << /S /GoTo /D (boolean_options) >> >> endobj -1910 0 obj << -/D [1908 0 R /XYZ 56.6929 794.5015 null] +1931 0 obj << +/D [1929 0 R /XYZ 85.0394 794.5015 null] >> endobj -602 0 obj << -/D [1908 0 R /XYZ 56.6929 441.5234 null] +606 0 obj << +/D [1929 0 R /XYZ 85.0394 658.3825 null] >> endobj -1313 0 obj << -/D [1908 0 R /XYZ 56.6929 414.8685 null] +1318 0 obj << +/D [1929 0 R /XYZ 85.0394 632.0762 null] >> endobj -1907 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F55 1306 0 R /F41 1203 0 R >> +1928 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F53 1303 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1918 0 obj << -/Length 3315 +1937 0 obj << +/Length 2611 /Filter /FlateDecode >> stream -xÚµZÝsÛ6÷_¡é“|c!ø&xOç&NÎíÕÉ9ºéÜ´} %ÚâU‘Š“›ûãoP¤L}¤vÇ3&° -7òéì—ßø` -ÛþáŒ3•:3x„ -g"Må`q¦bF+)ó³gÿl¶ZýÐ>ùå˜q2é }Ô ³IBü•~>²œÖÙ²¦âÿè3Í—_©½• - ÖEèËl‘×_W9Õ~Ù©ô[‡Ž«Ø -}×çÂ
sªä_²E±Ì§ -íð’¨[9B¥¨ˆËv—@|œåK*ÑÖ PK˜±g?4Ùè$ô×®…$ÿʹÌçÓjk:B°C‹IÓž4í.2 r±$b6™”~»ÓŒ”mE=ëáBàlq -KAÑvöD§ÆÂ*•¶+4¼ÛhÕ*Ÿžû”~™»©Áš¹–*éüÜ7%VD‰CYz-!”ûiSPaJ÷åšÎ‘Qs$„aN`ïw4Yª|~ßsàŒ`JŠ$tìç%™KLìbëRïe–0‰æ‹zÎÊÇü3mBp½U
b' NÛû‚žUè²ÈV«bù@¯è³¢^(»/^p#©¦”°]åMÊ%r¢cˆšÛTuK‡;JiõˆbÆ}ØNÛÐt-,gÔi‹dÀ’Qõ±˜O',â¡@›%8@a½ÈÐ !†4®žuÑ=.IîwšÆ¯ßuçÚ|îMzϱþ=‡ý)ž7•ǔ꒖…ȯRì´š‚E£ri^ÕhxÀ¸üìí ¶eôÿxõo*å_&³lù†z3ŒSÜåçbèAegðÐÍ”m5˶š‡ŽõÅÞS®tXCáá·iî°Õm¶axÀš›1^XʪvGf#ÁëfÛØVVèc'´ñö(/Ñ5FùzDÙ xLŠ4j˜Í«’(áHÈá2(ë"^dxózVN©L«ÂÒÝWú¾ûøq„øº ê㬠C&‡€€ìn^TÁnJ0·aòÖ¡S$·¬¦Jÿ¥é×&R3ü1_ßå^úeE¸é—“b•Í©ŠòÄo3b2/`2\÷×ûŒÈYEÖK»¶sà¥Üóõlvý·Y @ž–‹¬X~×cñO˜Im4´ h™Ê -ØØnòA€W¬M¢Á±kbíIé¥Kx²“~øc£âB0’¶cï -h^¡GtYšM4ÜrÖØþ܆Р-‚°hF ¿Ä2l g©T|W_²I= -!‚JÒE†Îf¬Ë{ÞØÒÜfXiC¬Pä¬<3 ÅÉwï®»Ü8òžcØXµ“ ú5>`)w¼—rÊr#cóÓkEÂÄÒjwÄÐ[¦›»§ µÑ¥ŽlKÏS-‚Hqçþ´€’(‹v–¿¡Þ`]Ì$¤`£ƒ•V®@ÄdJ€±5(5 mˆad›ÑǯhÔŸ}‰GyŒ‹ðú -¸IÍ1YÉTL§î7Þ} -¦»§Lð&?¸Op±Á ’b'5²ý1ŒÚ0EYÕDé~3ïpãçóò1ìÓØ -ò€²þr¸êÿ•5اÉö¹è’uãŠSÅ~}ŸY([èM¿¬´›‚&œjñnwê±R!nQÖ§ìK*ÞÒf4Rð·n÷e8…dÜ5)öÃÙY´Ó!H˜òâOCTìþæªZYý¶¾Sð¹EEB¸æùý¥Wå&…;\£óÂéXƧYÌÿVu¾.ªßé!D÷WÞè*L²*ßo˜Û&ï¥ü„?!n–`{MšzPb`?ä‘ôhoÔl;>]xŠÐzhïQ¨a)„Gr»àÓm–‰A’l‚$äÞ„.aêò¾g6!ÊÿÙ‹Iƒœð;§³Íú€JK/›bÑ/ -p±ƒÀ÷TÀÁÒ¥Çà}XQ¼í˜ñàLÁ·Á -Vú±Ñœ1ú(VRØìV<O,•Ëù×0i5¾¥5GjÊS]< ->8ÇNøÂÆSB®‹{îÈîã©Ôö-Vîé·ëÕÈ©®Xþ÷Øíú}³é”îõª"B±ô‰àíXè{Ó›¼|óæ–]Þ~8O¥ù~vð…ë¶ÝÞŽT«l_3õ=•‰iKNÚÓŒöa¸J¡Ybà"Vâ³HqÊRúµÅޟˬæß–Ä;(m–‡/Qµ•iƒR -žðêz!oJØÓ ½ÈyÔfí÷e;&ÈX–¤BÃV¡ ,êë_Âúgðõža¹Î}ZÍ!6ʪ*îÎ%¢uF -B¿Õª$ÛØóòƧ²G‡
`¢Þê\˜§¿ii¢Ö Ü–jž©mÀw´½}Rû<,ÊÄSà¨ñ®{é9g‰´`µå;Û÷ð—7à|ö3ãíl•s²}¶Pïâñ4ÁœòB•¦fWgÍ{äЫµôÿ¬xSendstream +xÚÍZKsÛ8¾ûWè(m¼ ìÍ;YOmœ¬Ç[{˜%Ñ17’¨i;ž_¿Ýh"%ê‘Ø©šr•`èþúC7(1àð'Æ2ë¥$^3Ã…Lg|ðúÞŸ‰8f\·Gý|{öæJžy+íàö®%Ë1îœÜÎ~Z&Ù$ðáÛ×ï®Þÿûæ|”èáíÕÇëÑX>|wõÏKª½¿9ÿðáüf4ΈáÛœº½¼¡.eü|u}A-žŠ=Bo.ß]Þ\^¿½ý~ûËÙåm³—ö~W¸‘?Î~ûf°í_Î8SÞ™Á<p&¼—ƒÅ™6ŠTÝ2?ûõì_ÀVoxµW‚3©¬ìQ ”} +4žY%UPàí}†›xóΨÖPá˜I8΀c–é"«žWq`G¦ö,ÊÆÿå\fó¨Øóá}ZRE(*ÓùCVþ¤hÑ’â4“R™Öt=SIÅ<ê”ýÔ#7¯êE—“Y±Hóe(P* èdQOù|6M׳¾ý'ÌIžœ¼¨l~·wkú[¤Àöú–#˜Ó͸“áæ^¾±/ë‰ïÙÝqmu"™–‰Œ…`Þ†.Ê}"OÙ§wBuVw +¼}‘.«|ZÂigêÏKêYÜðažÑCx#‹=O÷ÙkzXÝÇþzrÔFÛ['Y¾üLpxXÍÒ*›ÑNÊY†³ +S…ÀP?ÓSƒMHÊ”Š·„G„¾ÒÈD]t§'…2f×É
ôd[ÃV0ádM]´”ñª˜çÓç[Ëœ·õ±\V0x §¹ÒÕ*K×Èç w5ŸC{1yÌɽÆBÐ/ºº)8TF'Vt•…H²L(1äï +›MQµØù”O30žR>Ä¡1[¦“9ÍÑèaÛ`%:®6äªP¦TÀ&—3€‰pÃYþ +ت>V6¢/¯¶#«±QrãÎ5äGO¨]¿ƒõæqýùçeÀ†DKï5°Hî xò|#`zr^jIJN…°“ÜjiIåÚÖœÙÍIŠÑ¨ùmÅX£7Šé¦í€>8à_0Á¹Q‡[,ÍÅø…Öœ±(ÊŠZà<º{˜wù‚øù¼xŠü€cª à +ɸãîÉØÚ3žSaB˜'ÎY®²i%BÖ¤¨víí! ä
ÉL÷·^“ϸѻprK‚”ái$ã´¬²u^~6ãƒ8eš–Ù~^n3Þk… ? iÖ@¹‰çGRà}•”GîX{SfÛ‰èü°nlRl°÷Ø3$òÈ1DtÞšæ&R$Ù¤H(½I\âÔÅ]ÏlB8Tÿ·Òy̴μŒ·7“¬sãs +ÖŠåü9NÚMèé
$‘šùĨ.‹Àj“}49(-¼P (`’û
2ã+r žkm@ÔaxÒ‘«þ.TÎñˆÅ°ÌG……ÍEbó}ú˜Qm’QäIEHl±í1O©rûöUBfŽƒîð>
[âEV÷„~D¼
3ˆÕŠnøàá.ôz¢ˆâ·|™W9$Ãõ°«OT¦³êeI
ù2ÜoÞ…±×½·‚ç7ìüæÓÈËáùæ‹C¨\}²í.íÃÁ^®Òi°xÞI;ê+K=m;88Wá endobj -1917 0 obj << +1936 0 obj << /Type /Page -/Contents 1918 0 R -/Resources 1916 0 R +/Contents 1937 0 R +/Resources 1935 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1851 0 R +/Parent 1927 0 R >> endobj -1919 0 obj << -/D [1917 0 R /XYZ 85.0394 794.5015 null] +1938 0 obj << +/D [1936 0 R /XYZ 56.6929 794.5015 null] >> endobj -1920 0 obj << -/D [1917 0 R /XYZ 85.0394 530.92 null] +1939 0 obj << +/D [1936 0 R /XYZ 56.6929 746.113 null] >> endobj -1921 0 obj << -/D [1917 0 R /XYZ 85.0394 518.9648 null] +1940 0 obj << +/D [1936 0 R /XYZ 56.6929 734.1579 null] >> endobj -1916 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F53 1298 0 R /F48 1223 0 R /F21 926 0 R /F62 1347 0 R >> -/XObject << /Im2 1336 0 R >> +1935 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F53 1303 0 R /F41 1208 0 R /F21 930 0 R /F62 1352 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1924 0 obj << -/Length 2778 +1943 0 obj << +/Length 2894 /Filter /FlateDecode >> stream -xÚÍZKsã6¾ûWðHU0x ±7gÆž8•õÌÊJmmJ„G¬P¤"Rö8¿~»Ñ -n˜€ÑTËœe&Uƒò1R¾)Kò,ÊRô’Д߷ɴ³õ-êçí¥”£gF*”9Ï뺽ŸLU*â~e±ÁÝh"m¶‘ÇögÎåÏÔÏÂÒûnS½o/¨¯hˆ0÷‰Ë¶i첯ڂ¥§B0“¦ÒÉpëVi×À›ä^ŒÄ1€ÔØþ¾ÝþJävKÄ'F-Û- ÝmÚ¦¬šÏÔõé.!†¢œž¢ô£:æe_U€M'1=U\5½mJ[Ï‚ˆ×7DB ñùþúüŸÔ5›u¶ïG‚ -ä ¿)JZôèñ‰{Éxg·'ôD±ì±ˆ\³Dpe‚CCçĤL -Ó0‹CJ–“+b£ˆƒv‘ÆG°I-&Í#o–ìõ¦FPñ<ÕÑtA_D™y¸!)åì_l!B08û!qLƳGyãÏ©
Sñ)€‚y>Î7GyÌ j‚Ü4Õœ3œtäDÇétÅZÈ®¡ø¢Æ² -Ô~/°S û gSîIêÍ©ôv¿ª–+`R9
«@JLiDs;•%%0s_·½ïëWEOÜ÷+ë§ ©ò¸è{»v‚шë¢C[¢”¶¶a:Ú #P?à³ì|o×µË -eñKVýÊ÷œ²”Wø£¬í0Ôy¼PD§[Ùå¯ë·®n€†-œŠ°õ¥êz²Ùþƒ€~° ó~ñ#a*Ñ.sr¬KÔy(Ç¡òæ -ølZOèªÏ3&$$Or vLÖ–ØIÏ&œ;»½s<‚Ò®ãõHÁHµÅãš3[2h¸ÑÚ ?¸ÅöÔ>Q®¾ à#¹ñïA@ú"fÑ,‰]“Å]»õ©c4r½«ûjSûáNWÒë »]W=y,¼RFBá6}µ®~÷(pœ»-š°ó‹
œöK~2÷‡¸Pÿùl¾¯ÇðqeŸ-¶ÏLê¤öb8W! ·]ÏÈ7Ö>>ß@ -0_qtö#ž¼¦”iÆ´TOX$\SJ-˜¤pÐÞ7Á—)`Â"ÛÛáñÑZ÷%÷ÂPKÌüMrÕ…bz×”Ç÷ c"ˆ1öu -Ø_HÅ̳wÎGS†Oë¯a„/è41L¦‰¡ ÕùdªÆç¨=£cÛ,[ºT4i,ôtQõÔqWÔ;KM†a˜ìBWàqS#ó‰qÙ„.VsEŠ:Èbæð,óŒ¡FxV÷†J2–Kþ5w[aÄ“†Ÿs#_¿Lá|–Ð%æ|þ=Ø)5ÜC>uVk;…,)âi]Ýy¢Óut¥ -¼î:ëžrPüÉsN -+‹ƒ4ò Š¶Ô¤‚P%ÒëïwQ…ØÝðuE7ò<®[W -C‡ÅTÎ8ÞÛ<o±T1-…¡Ù{ú¶ŠÿÎñZA'þŒ˜ËSGB –E_€+f<ÝsÒ!‘Úî(–‡Š~ -ç*Ïåi;öRà¯JQ03úè·`L©ôžm$üõ°
¶endstream +xÚÅZKsÜ6¾ëWÌ‘ªò xñ•=9Š”(IÉÞѤvó:P$¤a… É‘¬üúíFR¢,;>lé@ Ñ +ýCKæÖt´ü°3ž–—}Ù6Ôkoiøag€£#"L‡@!<-j -ÁÒ–ÇÅ ä}îÊ{ÓPó°/²ÁP¥°\nlÔí™©Û†Ùø|‡-ʪÃ4¨A¨¶€6x!JŠ´¼ëCSæÙP6wDz(‡1
~&NmT7ö{“¯çûQà”¿s.AëXª lè‹KY=ƒ—õ®“ríQ¦ÊáqÁ !„…”Â1Ú
ªâÍé:Ñ‚¤Ä=nÛ®Îjãùðû°+ó6% +Nv 8P<WÒïRjÚwæœè¸B¹m«6Ϫ¯Ž¡B–DaèØöèïù$œ#šûüa*ÐYºS‘K +Ò!KãqÒK+§Lˆ(òZû„NãÐVìÁºhèƒÔŒº?_]þwíô¢R–@èÏôR´u†6Ô: ú6ÿÓÆR®À!?;t$y3T§Bˆ +-Í;Ö·-& +kÛt–XRTeš;<û²8$ñG¶~n{RÀuy×LOÙªj
ö®Ë&C‡²ýÐ~b^AÖ_’ñ“Øž½wí¡Ë×ÊŠ¢3}ÿ™’mÐ_–Î9<îÍg®õ£yü²Cþxþµ†öOã¼Ê™ñ…uÿ‰Q÷ZÐ +¿*0x~µ>bß×À4ΉyüLÿ³Y^ð0‚ðšÀM¦ üW<b‰LŸè8ª“7ÏÛW +:„E•$\º»P%5ò¬·±è +$ÖYá§¶D)Leürt<•¸äž»tÛ»ÑÐZI—ŸÝ’€Ž,YÊ)|Üœ¹$wtEº©+ز|çK·²FÈ7Ðí6acõ*4Sr#"Çj²‚¢àˆ˜:…Âá×¶q»_”•9Nõ§°SgQ,Æ©L¸ÉSOébµ¯Æ×ÞÆIúŸ/V}úsï&À][/äCBŽ\=-ࡲ„y"ȱTAçN¢ "ÞŒiä¸i©àhP»*L‚[ê×4¾¹8#2ZÚ-R˜>ïÊÓÓUî¶òmÈÙ‘j÷o»tp\9wÜ›‰ãj³!c'>½¥{ÆØWépo!c+¡œ/ tc‡ÞŒª§kjCT’&ì7Uéë8±Ã—Ž
d FV<HoÌ-±Ù¸vÙ½[þÆx¨övÉf Ïz{—õ¾250{ÿöy|Œo¯®Ùè +³? êYA#Àx©g2=y÷\¯H¢aHÓb.‰»tfÛª®x~ª*Fþ×x¶î‹ªÐOe +y +”UÅÈõŠ$ÏWCI\¡¥d2„3+!¶þj²ª,ÿèdS¼ãÓäx±Lp™»Æ¾~zÄñÇ¡¡Ž¹þÕš“ØüôÚç¥Áp'"|Á"ã/8v)%ò‡ÆÇ4%N(%â£)ž–€ît|ŸcŠÍÆ¿xP}hŠ—¦ò~™Žoô~ÿY¿Œ¹ÿ—ÕÊSúýãµÊiÅÓ—@…Á[T_¦É‹Ø-D´¾±ï,0࣠éò10«ÊÞy»4òظ˜‘Qè <Qä_³ëìiàÌ‹šXj¢‚/SëÑR:†œÊ£ÏX’f|ä'ÌH2žèWýŸªÈÕ5ÛŸð 1åÎçcPgY›5\—"XWå½#Z]Ç^×q¾ÎˆB•’Ž/.@öÄŒºJ:ƒ©X~g£ùš—ÍuhJ›Tüö`¦°7¿öõKǶïÊ:ëJûºÝCoãÌP‘l½³€}à¨8)‚jà´¡&!C¸r¾€dUˆI
‡ÝýÅ4âAÕZ$YJ‹øujܘ%Èb·-<à¸m§9Ç?Rö»öPsPR”}ž9€ú§žxË—9 æœÅ2Âì±(„Koáæä«W3þ§þ³Àñ&@ •$ò\äŸ(àZ¨Ò4}ví«„…‰¹&¢ÿikwendstream endobj -1923 0 obj << +1942 0 obj << /Type /Page -/Contents 1924 0 R -/Resources 1922 0 R +/Contents 1943 0 R +/Resources 1941 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1934 0 R -/Annots [ 1928 0 R 1929 0 R ] +/Parent 1927 0 R +/Annots [ 1947 0 R 1948 0 R ] >> endobj -1928 0 obj << +1947 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [312.8189 298.8688 386.4723 310.9284] +/Rect [341.1654 175.0606 414.8187 187.1202] /Subtype /Link /A << /S /GoTo /D (the_sortlist_statement) >> >> endobj -1929 0 obj << +1948 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [406.3277 298.8688 479.981 310.9284] +/Rect [434.6742 175.0606 508.3275 187.1202] /Subtype /Link /A << /S /GoTo /D (rrset_ordering) >> >> endobj -1925 0 obj << -/D [1923 0 R /XYZ 56.6929 794.5015 null] ->> endobj -606 0 obj << -/D [1923 0 R /XYZ 56.6929 509.1791 null] ->> endobj -1926 0 obj << -/D [1923 0 R /XYZ 56.6929 477.0735 null] +1944 0 obj << +/D [1942 0 R /XYZ 85.0394 794.5015 null] >> endobj 610 0 obj << -/D [1923 0 R /XYZ 56.6929 477.0735 null] +/D [1942 0 R /XYZ 85.0394 385.3709 null] >> endobj -1235 0 obj << -/D [1923 0 R /XYZ 56.6929 447.2177 null] +1945 0 obj << +/D [1942 0 R /XYZ 85.0394 353.2653 null] >> endobj 614 0 obj << -/D [1923 0 R /XYZ 56.6929 390.5598 null] +/D [1942 0 R /XYZ 85.0394 353.2653 null] >> endobj -1927 0 obj << -/D [1923 0 R /XYZ 56.6929 368.2486 null] +1240 0 obj << +/D [1942 0 R /XYZ 85.0394 323.4096 null] >> endobj -1930 0 obj << -/D [1923 0 R /XYZ 56.6929 281.9323 null] +618 0 obj << +/D [1942 0 R /XYZ 85.0394 266.7517 null] >> endobj -1931 0 obj << -/D [1923 0 R /XYZ 56.6929 269.9771 null] +1946 0 obj << +/D [1942 0 R /XYZ 85.0394 244.4404 null] >> endobj -1932 0 obj << -/D [1923 0 R /XYZ 56.6929 89.8526 null] +1949 0 obj << +/D [1942 0 R /XYZ 85.0394 158.1241 null] >> endobj -1933 0 obj << -/D [1923 0 R /XYZ 56.6929 77.8974 null] +1950 0 obj << +/D [1942 0 R /XYZ 85.0394 146.1689 null] >> endobj -1922 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F62 1347 0 R /F53 1298 0 R /F21 926 0 R /F40 1146 0 R >> -/XObject << /Im2 1336 0 R >> +1941 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1937 0 obj << -/Length 2893 +1953 0 obj << +/Length 2922 /Filter /FlateDecode >> stream -xÚí[ÏSÛJ¾óWø(ªâÙùQí‰Hü^bX U»ûÞ;ȶ -@=;ñ‚!ë÷Ùn;øQ˜¯ë²Œ™2J“íàßa_k!Ñ{Kh¬ÛM ÞŸsv~‰½îeWøIœ5æCÖ=¶âg]Ì.T~ÂàcdV‚óoGODWÞ¡ñÙ8
È2¼ -ôl¼§‹*O§¿@þ䆇†åòýɹü jzÌ&a¸Ùö5Ï&9;®ò"DͪW¿ A˜¥wAz¸Í¨9ÞŠU‹0·ŠîŠëÖf -œ=>ʼnñ•ãã”æÔ²ý6 -Ì6N˜Q2æÓËOauKÇ£¯Å8%³CòV“FcRLÒ*¥eFê2[Ügï¾Rü9¨Vïp·Í!œÚa†Öû½ãkú`ºb,x³R*2ÃùWÈ~F‰èh}eóµ@ši^V!èn⾊Ç"ÚŠ•»`nÍ_¡¸n°O˜5žÈmÌ X“ÕTqtŸ -«È€×_dói:ö+(‰£ -bŒ_D OŠ»ÔcrXA •ólL‹nB -o/Á¢«¬mô -)ÿ[ÌV§¿Ý×;‚W;vmö›Iöj-`<Ì -×Å—ŒLX‚Ñ%n]¥Y³”HÂ*‰‰nÓò–$\xM©EmDTy#úgk‰C#6½LcD”шOŒ‚ša_c½6,ûÝTì•íj§Æ*Ýa=í$FÐçó3°ô³Ñe“ÊØu3-F5ÝeŽÛ¿ -[ròÁùåɱO(2V::÷Aª¸j[®E£»¬º-B\ ‚
µ@~
ŒTf«pÕ¨ï X-|Ù
ïÐ!4½¢’¬¹Üeï9@žH”ìHÒ1kfpùixØ7ÜÄHmCBÁÚUŒ¤Z¡ÁÚ=5•kÅ·ƒB -okÞïø Oqà -Ã×™EsÎbi~[Ȭ}òÃuÞë¤îÏýL~õ_ )ç¶0KÜÙÉ$Æ}Ž…¨'ñ&ø–q²iÕšúÿ +xÚÍZÝsÛ¸÷_¡Gz&Âá`ûäØrâkNq%g¦íÝ=Ðms"‹®HÛqÿúîbA‰’-1©•©“c øÛïDÃÑ3–ÙT¦=—jf¸0½Éíï]û"Žé7ƒúíQï/~9U®—²ÔJÛ»¸jå÷^ô.¦¿'–)v+ðä_Ÿ‡ƒÃ¾4<9=û”PÚÈäøãÑùÅ`D/lúþlxB=)5ÇŸ‡§g¾ŒŽN.Î>©{48ŒÃãÁ៿.–[n–à +÷ûïƒßÿä½)|ݯœ©Ô›Þ#<p&ÒTön´QÌh¥šžÙÁøàïË[oÃÔ—`Ò\0!À8ÓBlÿUú¿I©XŠû\ÿѾà)ðךñ”¯—²…¼†iïzΤÌ*©ò“YVU‡}«´NŽæ +Ù‚âuð*í™Iíõ›û䘄‘žËŽ)Üi +ö VU[ä£1`Öiæ×þÀaDúªœÍÊÇb~Õ‡dA“œ¶–ñ¸e;ó‘ÓZû1@ØHaã¨F)Á$ÓhgGÕ_6Yº”t‹F‡;ýÿb +N¶½ÀÚî±woqc|]')èÉÛ_PH@ ½*ïçSÄ’§ÉàÛ]¾ +ÃÇ|öD#ƒ¶a +Osšƒ2¶¡¿º¿¬é9§!,L),\üHz–ßÊU³sÇ]ªcйÈâ§q41YšÅq°ŸY3"Ú2´SzŸUôŽ~¡±QÐ1Áç…8´Iûë¦ÈmåÿŒˆ.á–ÖÉÂݛ׉âϵK’C©;„[YÆáË¢pÿ6ø'p[¥<×er0ôNà ¹»¿œ¢¿æOÑ5·ì
¾ˆ‚½šU×ómøêüO9_Y›þvûÔaˆ¸Ú‘´@د٫+W©…8Su¤Ø3¡L4DcÌV¥Yã“H£†ˆÔ$7YuCê¶hXˆ]…áÝšËБ…ËYfÉB¤‘…[
Ó[_û6*ûM%öäBðìò€òž»H¢?œöiíxéª
Ãu=+/›8÷®¬ +Lú"®ãû»ÜÍb†ÛË¨ŠŸ>ï@´µÕ7Ù*Ë™“^t ê,“6¥3‡gÃÓÏ +Äñù"¨ÌjƒŒÀŠ¿ +H +:$‚G,€2:j‹3¼ â_â¶¿ô
‡¸ +¼„®#[V”*“ÚðÝgçãÁqð&Ò)œÓ™ØÄ´Õš1ºÍë›2š•ù‚›£^+UùÊZ-»oÁV-B¡
ŸÑ2½¢p¬¹ÜŬ +o™Yà&Rîºì‘ôLC˜NÌŸû†‡Amt'X° B“‘T4X©§¡r:˜c(žÅŽÐ·Å¹Ëïpî»KMí/ÝC~B-Z:1VÇ ªâšåÉš½„Ö£0¥‚Ö`Ó¸p¤ƒïZ.ŸÉ…·f…ȉ˜çk’/U3¼˜oç¨ãu1ÞˆÖåþ+=ÐöB&4¥ž`@i +<øõ’eº‘ +Øm8Ú_÷†²6í’q
ã¥p‘ƒãPòM@®b¡]ÆÌôîy@Y1]¢¤˜0-ð 4Ž`‘âÔ˜ +öçÈb-ï¡Áýáf°'£^3ê“ËQ" ¦íó\f\¥¬‰È¿U½¹Þá?–ñÅR¬ŽDëÛà鑾
¨ÑˆZº¤[Þ#ýl–:‚ÔÒÒÔ†Mõ_òË›‰?r.¶³¤Ù׉#æ ¬Ç;ÕL*ºp±yO“÷:Mø÷Þ_Ýž‡
)ï·¤³Ò“-ºl\‹J`üÙÅvÁqÓ²ÖÚû€ÊÜendstream endobj -1936 0 obj << +1952 0 obj << /Type /Page -/Contents 1937 0 R -/Resources 1935 0 R +/Contents 1953 0 R +/Resources 1951 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1934 0 R +/Parent 1927 0 R >> endobj -1938 0 obj << -/D [1936 0 R /XYZ 85.0394 794.5015 null] +1954 0 obj << +/D [1952 0 R /XYZ 56.6929 794.5015 null] >> endobj -1935 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R >> +1955 0 obj << +/D [1952 0 R /XYZ 56.6929 671.961 null] +>> endobj +1956 0 obj << +/D [1952 0 R /XYZ 56.6929 660.0058 null] +>> endobj +1951 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1941 0 obj << -/Length 3250 +1959 0 obj << +/Length 2986 /Filter /FlateDecode >> stream -xÚÍks£Fò»…¾UY„y -?”B8Lyr{òÏÕ‚^3u™dÀ|ÆCѨÈçqîß–¶`[†‰Ç¡ÚÚuÀ‚Ägð¤”Ïùšòœw(ÏXèK÷bX&\Ê_5%ÞoÎú©¯¨ð©¼w×··ç„kkz6z²\ô™òtùèFgÅ$mµ—§-AÃaCÀCÑæ¥² K? CgàAê‡J/`g^•Îp5Îé$€Ié1Ñ‹6%_b0ªÕ‹û´$|VÛUê– -˜;ä<]´ÕwvX® Èꙑi„I¦jæÀ>4tÀëwz°KoH\s^ý -lr¯)¦UÚ.DT–¶)P—AØ%/vQ€Á
y÷2HB yçe^Šæ`*Uþ‡åfì¥yG~Ì?Bó@úœYƒ>ì‹Ø¡Ž(ÀzÙêA›“[N!â"ôƘ˜8AØØ¼nÚ†@ -ÃÂpŸ&2£Ò{íéÂN…èk?'²‚ø:Á(J`@—i‚lЃᙼ -li½øl»6ä@9½\+žŠÕÊ·Ë«ÔÆ.Í¿¯+2€‚QÇ0‚#È$2T1ʪ$é(c̃U Žð–&"Êi"ÂI"„T!^E’û™‹.·¢KˆLt‰=ÖX ÊÄ3€ZY‰Shæ—-
hÚ¢,iÌO´CH¬Û°êŸAðÇŽšëf™DQ‰`„¦Ã—šW…BAÄB¡àð”DÇÛg˜áÕ¸Ê@óŠ?ƒ€›X(fk÷Ù´&@5^øŽž)
¡¬h£cÙæ 4ícŸ1æ—»aáqLa]ùA88í¾êöª2Û1ð!¤BaÞÊ0äæµXtµXÊkûÌC~ |««Ì¤Ã -£!h* \PχÀÚ«ýœëä-3.ˆ³#öÔÈ"AáÐí°†Þ¿0ù‹äfü*"HƵ±o‘ò´1o -ëy!WÞæ›x±y$w‰s
˜&_ßL›ðnÒ -ý.i…¾ûtQÔK»RóØì¬Ì¶zf½–Çi³°§áœfáz§¶„=w“ý@ÿV™®©é 2¸_¼:Œ{)ùz+!…@ï¯ä3C -Î éÅòðÁ‚%ÌWBDëB€
²_\ hï±*ÜØÎ»VW5›—ŤhM
Wy‹Ô^ks¿ÛA(UæF‰ž.ÐbËÞ›ÅÝt»ëpèpYÛ•õ—¶ÕvÏYZ=îú`Î*HfÐæ÷F°ª´¤,^šÃÔ’.hgl-`ó”R|Èía€ò–W@oVØù¹ÚÙoêOé«{],½INiŒ -é;ÄÁ[Ã’wÔ¨êÌ„á’IÑ/G'À|ˆ®z$3ßpÉ
)Bc2éê¹0 -rû5©œf¦Sb–¼ÇîK@ -)‘\Ð)ÖÝ
ôŽÝÆD]ÇÃ;ËÊܲys,îì(‘»¼–Y%‘æh˜ý‚\ŽŽø–XV¡7x‹fg¿žÂçj4Sj -®¥Ätå÷¼(wÚ„ˆJ žº!ȈcMON*f+›ÌÃÏŠ¯ÚM˜ ýLô’8£EŠ -¯tÜzµ
6Ê΋1ŸOÖ±¶‘YNA.ØÚŽ4 O—Íìz·¹^˜Ø¤šØX¥YN§º±Á i?Aº±#P„;8¯—¥}ƶ›bîü÷l:Kî‹[?„Ÿ*<ÚUˆÝ)`))ˆÇÞ°ûTÿº²sSz€Á¯¦;m),Oì©Þ-ì“toR¹Í+‰ -Ÿè¬‰
õ:ËØÃt:“Ž`«¨V¦¯–•-Ö+wpˆÖ=ÝŠØ0uù‡K¼W,§“Ïv˜
ì -g¹‘Ù.s¹OËå“JǦ
§Íý}ñ -¬2 ¶ë›Û w4¹î¾ë¯œeì¥öÜIØ +xÚíZÝsã¶÷_¡·P3'_$ÀöÉñÙwNî|®¬´7Mò@I°ÅF"U‘²Ïý뻋%Jч/öMýÐñŒ¹X|ØÅþ°»€èpø3®RÝ1©f1qg4;á;¨{w"B›^Ó¨×nõÃàäûe:)K™t·±,ãÖŠÎ`üKtöþôzpÞïödÌ£„u{q£.¯Þ'¥ÏÙ§«‹Ëw?÷O»FGƒËOWÄîŸ_œ÷ϯÎλ=¡t,a +·€ÙHÙÌ!%ýd“ÑgäuF<¹j% Uí÷Ù”øã2ŒRÖD¸/yUo‡óà›3øOYà"âæ9&¢µ6(=ÐÚ€ê÷é[?ή26QFR!þœ +•+B‡ÛrÑM_?©Þæ4È&òâ'Éýa?[ U9Îoqì[·¨ˆq뫜Qéª+"hLZ.Jñœð
¼‡ VdöæŠåÌ- ?ȹ,ˆ7\ÖDøÝaT4+W«î¨œÍ—uVCûlê· 4q_殨ò{·ëçüÀ —aé·ŠŸ²#VªÅ4éˆPË£Ñ4'{f†Aq1jðÖU£E>t¡c^ìyÿâŒÐ"q̶áB^˜¬¯mdÏ3\0¦ +\ƒ?5ž¨ë–Ÿ§˜µ®|‰¿÷›ûuÍ9K¤é:–päÁ@^ºŸpJj¡‚†µM )l£aâ¡Hñ» ùÔºEߎÐ(ùHä#õÈ*äËT7¯µºA¦ß¹©ŠÀžîò׌\ÒÔ_©@¿=Ÿf£¦Óð‘¾W^a˜X™ô<˜CVÓÚŽÏÛâÛ©^!c“0#¬<b5q*™ŒÓÔêzÐGßR¥Ñ):3:š—~RÜ#
º†¬aγEMTyšy|b\Î2ò´tØÕHUsP º° í·®·ßrëÖ~@GíÅ¿²}ƒS–Ê,7ö˜Ž˜ƒNÒÑg8¹`‡F×äÝçc´UiM4Ëæs0³PºúÁ¹‚ +$7 ¬”Dx0@â3œ<ðÆã`á•«Ø~Õ5 ‘¨Êiúe•ó²$-³©9vìÄZ3RLÿÚ+GF—@ãÌ»‡ #£æ;Ÿ¶ô‡=‚°çÀÈ锦ÇT Þ¤7$ä!!xƒéûí4€µ3@èlúD¸ÂÒVK¯Y[aÍQ¸“œÁŠîúý›ËwpâEgeQ“¦h;ÚʨÊ^6G!²ÆY|çq[ÀXE~†ôÞkBš+}@èÕ¼”Ð/m›{…®“â}q,"èb‰°„_ý®2Ñ +»±#*8?è¦iˆUPËÅï¡j*{¶1͵íYcW'Ü–3ôƒlýyŠü¶{C)p,’c©!1±"±xsŒmš¶ÌÑ`€<v¤·lY-"M.¥ ‰Nñʥܜ5n¦ñ–› ¡°w3±&À²¼[¬N¼²!i +Ñàˆƒç
ÜóopIÊÌ™Cf€0$W†-{s SµÄá¼3ܳ›ƒë®iô&dî)^Áí£ˆèj9Ÿ—‹ºQîû¼ªÁûa±W…-Ù¼bL“p®€pDƒà¸2e¹ñ²ü,côbõ]+ÝÜ@VQž¾Ÿ6Ej}ä@a;03<Ý +ÌþtZëp\ÖZìK©d}Õ~ìîûn¶îîÿ\¯f"Me¤B=2n6ïüÿp÷¯x¬LMEÅÔ¾À¯y— •dZ†´Ù`n¸nËé´|ÀФüýHsÝ3Ñ0I«á×°Ëhš¡‚©ÝÆ/ ¬*˜µó>ý +H«’δ‘Û ¯;®àà¤bQûÓX÷Ù4ßÚ"u³ +@_ð¸“<fJs1%iDTÊåU·—àuÑJñ—xÍ +ù©ÚC:ç5U|¼ÃoÐæÒ‰Y>î‰ÔðCéý~Ör…¢PMnX¹ÏÄ1YVTž/ó²r¸É)‚lpÇ@øê»jW~d¸Ì§uouH†›u²ºvrÂWá¨u쎽!XТ-{z@!X€±*èÎ0Ó¸C¯J„¶û÷d[Û¯8'”bGS*Â$nBøÜ¨DÀþyï@LcÕþ’b-ù›U˜G…±»wÓrN‰K—´ÆoI4 +õMØ +u÷Ù"/—a¤ê±Ú™¡Ý,˜]fÕjƒýÑÛƒÙ,šÚ»Êž7þø‡LÙº*¼å€=¸{ôöR›ëÕ8 ãÂè':‚&-{Ï}¡Ö> +Ï/TxjFí"¨¼]X³ù4åµÏãÚh‘…nzXá–ò×Xh˜¨Ý»Â–Âu¸|㑸‘ýð\ë¢#»/ü¬¿9ËŠÇ];‘æöG¢{¿«ÂÛ3¬ÄÉU“!8j縓Œ|ˆì¡–£&‰^ý'¡kë—ñÒþ
=ÑÇšž-QKÿ(y%=Ü£BQ޽®…öÙñ4ƒf€±Ý÷há¡H-½(+b=2ݤtÀÜÃ3Ðzâ2ŸM¤Š˜ãœ°Vä*z0ø€‰%jâ@잇_áUlUû.X&¡@ƒÌ'?üôš±HÚ?ãÁ&ˆ+þ±Öž§¸ +S†Jìz9Ë;GóO}§»~«¬
„Uû€(®ñ8aV!]-¶ç+$MÓ¬5÷ÿY¨—lendstream endobj -1940 0 obj << +1958 0 obj << /Type /Page -/Contents 1941 0 R -/Resources 1939 0 R +/Contents 1959 0 R +/Resources 1957 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1934 0 R +/Parent 1927 0 R >> endobj -1942 0 obj << -/D [1940 0 R /XYZ 56.6929 794.5015 null] +1960 0 obj << +/D [1958 0 R /XYZ 85.0394 794.5015 null] >> endobj -1943 0 obj << -/D [1940 0 R /XYZ 56.6929 337.2163 null] +1961 0 obj << +/D [1958 0 R /XYZ 85.0394 229.6198 null] >> endobj -1944 0 obj << -/D [1940 0 R /XYZ 56.6929 325.2611 null] +1962 0 obj << +/D [1958 0 R /XYZ 85.0394 217.6646 null] >> endobj -1939 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F40 1146 0 R /F41 1203 0 R >> +1957 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F39 1151 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1947 0 obj << -/Length 2933 +1965 0 obj << +/Length 3016 /Filter /FlateDecode >> stream -xÚÍ]sã¸í=¿ÂÎL¬Šú`ß²Ùäš›»ì6›ëìôödKŽÕ•%Ÿ%Çë_€ -åýýì×ßÂQ«ûñ,”I£Ña Œ‘£å™ŽTi¥¦:ûpö÷ž¡×k‡©)Ri¥2Г”CzŠL+©¬ž,–g]FPYãWŒ;×uÿ–ôƒÿ. Õ³®ljj4s¦»oidÙb–×e‘S#c$Ï2k–Ó²ÎÑsAìzÇÓtë²~tkæ”7ËÌ YgË¢
Ð Œ‰‰"é,òȶäfës‘Ž™fNß7EÝU;ÂmZ+zÄ¢Ã÷“”zÕ”uW¬[„ Û5ôm@akž’”±2‘ÈIóö#<ã€ðJB°û¢Ã‰@‚ÿ…ašBŒ‹/Ý&«ˆKñeµ.Ú–”± "21—‡Ì¥ŒÚ2';é© -iÅðEù¸°Cc3.êY““3'Ž·‹¢&\Û5Ä—iJÆgôAס!m±~²–lÃ_–¨©°ö „'ãÛš†ð^)¾dËUe}Z¬„§2?žôþæŠFBчk#ÉPi¤ÞUƒå²¬@w¶^i¿‹¬CH°?#'Áï2k»‚é?…¡´rac›1P€°Íîxé)/¦ãvÑlݤ,Ò¬ÕsCoÀ/8 èGDZÕ
(Û!¢²üCÊh¼lZXŠ„©Éƒ…ñ<>8M Ý‚l‡=Eª‚PUY–¡gU·h6ê@YËzãBCÒ–@o"0[[oZñ´äÎLVƒZ?.%Q2õ#®ËeëŽ@Š}ʹ‰²3#$Çåy‹×Ë$ÿypË=ñqÕxZ<–5³Ü–ÝÂ#ƒÎ*«?£zÀ8oá™Kf‘µíf 2à¢.2N‹£ ØÒ^òB+¹©ÊzbÞíOe³i]”xƒÒèluÙ›yWÔ.ϪMî‚ú¼á`MÔYžM˪ìv6ÖZªfk{›œ -lzŒc&o_•诤?]0j·*˜ÞÆ=ÄÍ*P&óœ´kFàjOÔDfÁ&?¸¬‹eS—³vÈByû¾îÏèiód7Gì¢1± 3'ýAÌÇ<ìíGr´ñ¼éõîg$B8UQå¸-(4⹿&–¼!töÔ”N*È7hšƒü6î<×N3AhJ;å"¸W‰mîýyÙþxd«R\ü/½µTÉ~Z5´jo2lE¤CäVm³Ã X‡J 5 »½ó¥>¹.p_2 -ä¶´ÙvØŠ´GìñdZv„ª7Ë©- -øþÀk\ â4L~q*‚qÜÍË9J1/\eµ¯9p¸µ)ýy1µDQ‚'Rï=ަ¼-ÛÙfàíK]‹Y³ÎO½£$A¢x—_Ú2œçE;[—S{ÆaጋhÊìã.âéÙ€Çô
ÔWÖtѱýÓeýز`•Õ@1{ ;ãªZkå¬^4ë%A>ülmJX+([këÊÙÆ¾.ØvYØêâw;%—`‡N›
ZK…Ž‹+È -È—–ô -ü_:»7~0N…?ˆ{’ÚÊ%Bí -m4+m›g°ÆT\ -.9)é³Z—-¦²Î]ïPñÞ9ŒN8{¶‡'I8—Žýu¶Ôß9Bÿ=šÄ3îS@ÙÕè©i[¢Í:0÷ª+rôéD87õgÁk -ðw9?È G_ͱ¿õç?ûŸ@aI(MOú”…BCs,yÿ;¡ç¢ÿÄ*.ùendstream +xÚÍ]sÛ6òÝ¿BôŒÍ +÷ïï®Ï/ex7·o*Œ¤wõÝ«Ÿî¯çÔóÐ×·wo£éçêÇ»›Ûož¿:OBïþöÇ;Bϯo®ç×wW×ç¿Ýv}?°<Þ–òûûÙ/¿³v÷ýYà+F³4_h-gë³0R~*å0ÕÙ»³G½vꤘDàKË 9I9%§Hû±’ÊÊi“m;ÚÔ¯AÌßÐNñß+@êêVÙ0(]ë°%uYŒkŽú¶ç"õʶé-3vQšzI`Q¶ùÖ,ÊÂGaÂŽ.Eâk%SËÞ=ÒQÀͺÌj;G%‘]‘õFÞýý[ eUPôԛñh³æá•Y›ŽMM¿«fÇ}
zYM˜ùœÚyÆcLæC¹a*¦>X)ÏòU 6§ +vàØ UÝ&…¯£HÚMMi‡¯n,ÁÀË6›ê‰p]è¾[5[Óey,©«ÈºŒ b ðþhê²ýûùe¨ +B6}wÃá-z^{á&é:>°*W¬ámšÊäÆñþÐl7GŽHTthY™$¡`Žô¦YUZyYÛšem™¬åD‡{Y±6µi»mÖÁjõ@€:\ˆ ݪ$¦È('7@@—¦Îº²µ¬Iï_+S•SJjAøè©@®[‚¬I €&¿}‹¼#„jÃ_dxmþ(Ý„åw-
ƃ3úùƒØm†eØve¦k§è·šv›U¦³jA”õHø½»r[—“¸)· ÆuV£*)½¶_.˶£y?AeË#ЄZ¼jzër +b·O¼L‡‚uk¦T4ëÌ1Ygktý ‰ß»ÝÃ1ÓeÖê\d±’£Æï}Yw·×šÈxʯR†›Æ #¶j§éVN',̈…9ÖÅ›»w–]Èíb”Ûy¥|!FÕð%;A€ä…^ù±ëÑ›Jùq³-!Ô6õaÚFqyH\†¾Eh‰“ž´‰ +jÆgôƒ¦CSÚrûh5
؆]™Taø „:'´i +ûpñ1[o*kƒ±vBx4Åñ¢ó›+š Uhx11z¼»§ªd¢T•m©aƒW0ÿÀ¥6ÄÙb~×D1…—廌˜mžŽçsÁ°”À<²s‹2K*!NvLÍ&
øù„qlåCL;¥@›Õ°À‘2òÖ
f4 K“=²øÁõk_Òö@©JBU¦¶qXB5RAEÖ/WÔ¼šºw! ¦áЖÀÑB ¶\oQñ²}K;xXmm{º"–±ÍQé Å>åÌDÙ•’ÞŠÅö¨¶Iö71s>÷ ¸åžŒè8Š +ò"TLLrgºÕhtVYýÅÊáìtbeÃ$ âë±*wZ8 +‚-ùÒ(´îO(ÏN ìí¦é[å|^#·:]Göæ¡åت/\P·õÊþ„“ÙÂ@Ýõdcí¤ænöé}›Œ +8=Æ1{;ÆWÆV`ã¡P¥\0êiSòx÷—W L¦ùp4Óî«ý a"#¨oË£‰ëº\7µÉÛ)
%ú}=äèEóh#vÑ8ve,C"æ4¾½$s@?4ƒÜÇÕñ†Ÿíp¡ ЈyLìð†ÐÙccWP),{TÍA}ÎÖr &ŠËLDÚ† +pÜ‹Ä6÷ö´ÿÁdUêŽ +Ç£xë•ì¡]#@»-†ˆdˆÔªœÆ°4VAÈÁÆÝÞ¹>¹/0_R+?á
œ`»Á(û¬]I1d¦©ºÅV=”亣»àq{ÂqŠÌpê2°®ô9›†Ï+Îp\q†õœ¸qœ~÷û††Nžàb4€êfW•Ų<Aj8µìÕ”¦3Õ‘Äp[“â¸qCYä|*Øñ¼5-)£P¥Ô‹ë‘º¸ê„"·Í–CˆýÛñ5¾PJÍ”Ö~˜Fñç\t©8ðãXF‡]n–cdŽNr@ó Å û!©ËaS—*MüHûk´p\j‹@ûQ Cؼ€Š;¡HxûîÖ¿~ó3^ú¨4ð~x~™¨DBý¨Áÿy}w=åÃŽ$Æ +N@¢£µÿÚ~Pr`ƒ{3û’J"?J"5-!)?Õ1l&Ѿˆ…¶z.’WÇh¥¯XÀn,ñ)‹‰_1¹ñ¡E`µvÑ*Ñ(#™úÚ–äiÉКò+—L$À£OJù2±Ì XD½ ‚=ñ¯XJûI ÓOÙF¨|©c:b¸ycË +?Hß‚ž½ A0Älå ±$ÉËoB2•@=Ô£G©lÈV2¤¢«ì‘»è–ôY©…]C©…ÝÊä+Ê÷žLŠn€Ý↞ˆ/öÁPu¿^ÐE±â;Iºzå7I
WsØ…÷+/_äeEÁ…X{TÙSϨþ£u]P-ÈÒíO'hÐ
ÃáMÞdG%•’´¿¡Æ«øc’/T¿Ÿ®*¿}•ÇÜ´æã°5WÒÙÛ5GûvŒ—Y¾:>=O§î@'¸ïèÉ]€N¤eù¬˜Ô©+Î¤Ð¾Š…ü<ÓÊÁôçÔ’_ ̹=]Ê ñà >û#?t[| Féïý{ÿíÕ;ÿ‡Û{.(¥Nè@‡EøX ›ð/ŸGÀ"gòÜ/ýW þÂY`БFAz* „¾°2Ðò•Pn¼ún, áí…XÊà¤HÆË}!™ü/IáËÛ¬€;uIA)`èó’‚ +wà”pÏ* +fŸŒÿŸûUÓþË®ÂVšÊé8$¡äµi‘™BuˆàÙq¿R¼ÿVÁfendstream endobj -1946 0 obj << +1964 0 obj << /Type /Page -/Contents 1947 0 R -/Resources 1945 0 R +/Contents 1965 0 R +/Resources 1963 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1934 0 R +/Parent 1973 0 R >> endobj -1948 0 obj << -/D [1946 0 R /XYZ 85.0394 794.5015 null] +1966 0 obj << +/D [1964 0 R /XYZ 56.6929 794.5015 null] >> endobj -618 0 obj << -/D [1946 0 R /XYZ 85.0394 729.6823 null] +622 0 obj << +/D [1964 0 R /XYZ 56.6929 622.0858 null] >> endobj -1949 0 obj << -/D [1946 0 R /XYZ 85.0394 704.98 null] +1967 0 obj << +/D [1964 0 R /XYZ 56.6929 597.3835 null] >> endobj -1950 0 obj << -/D [1946 0 R /XYZ 85.0394 519.4358 null] +1968 0 obj << +/D [1964 0 R /XYZ 56.6929 411.8393 null] >> endobj -1951 0 obj << -/D [1946 0 R /XYZ 85.0394 507.4807 null] +1969 0 obj << +/D [1964 0 R /XYZ 56.6929 399.8842 null] >> endobj -1952 0 obj << -/D [1946 0 R /XYZ 85.0394 339.3113 null] +1970 0 obj << +/D [1964 0 R /XYZ 56.6929 231.7148 null] >> endobj -1953 0 obj << -/D [1946 0 R /XYZ 85.0394 327.3562 null] +1971 0 obj << +/D [1964 0 R /XYZ 56.6929 219.7596 null] >> endobj -622 0 obj << -/D [1946 0 R /XYZ 85.0394 227.5589 null] +626 0 obj << +/D [1964 0 R /XYZ 56.6929 131.5008 null] >> endobj -1954 0 obj << -/D [1946 0 R /XYZ 85.0394 200.4217 null] +1972 0 obj << +/D [1964 0 R /XYZ 56.6929 107.0349 null] >> endobj -1945 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +1963 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1957 0 obj << -/Length 2724 +1976 0 obj << +/Length 3209 /Filter /FlateDecode >> stream -xÚÍZÝsÛ6÷_¡‡>Ð3Š‚ûæ¦vNÆÎ)º™Î¥y %ÚâœDêD*Nú×ß.vAQ2å$gšx& -åmÝ.±–†q úh‹8[ÕU¨|õÇ3OîÏû4W)iTòˆÅÖ·›Èøiƒü)‘u“òèLzåÁ²¼¯ê½êÄ:‹&UÓ9®ÈHÉ+rk vy<È •»Q 4ÅY¨¾)æ%Wàö[Éz³ùýgZ´M]Vmožƒ}’6Þ~$Í ñ‚úvgA׊ùz³*~>öF‰IêÒQ’I¨Èì³Ü‘΄MUzèŽþ¿^a½M\õ“0WCáÆaOcø_¤Ê¦¯‹UÏøS¶;F²¯c9‰y½F÷bâ8š€G7ZÒAAÅEJžSÉ®Jt9oœ¥ÂY•x)îëw‡rT©ÑßD`I"ÒD&Ã9†ÍÀè\QbÇâÉ‚xŒþLùôfþŽåccáàà?%ë`ŽSâÑ}ñˆÛ|þŸÝFÔÛû'„Ó›öy…£žS8±†å¢yÂÚâDÄ&É(,?²Ÿ±é™œ‹ bçUJàŸ:-¢Þäß±þ)\FRBD&±ODtdCõž‘>-£ÞìÏ%£=æü;¢Zœ“±H„LÁï#¬ÁÇWH# -•çÑãÛ²å&@‹÷$ñ„å†s“‚¤ç¢vUÙ6ý™€®óºZ4þH¢ï¦L¢Í¶\çÛrõ‘hŠAìí1ibxM½‚smˆô°¤TÄà&™m©aAÕé´Á ;@ªTYÍ|[Þ<Ò²~ ʪö -Ì$Œ’áPetW¯VõC§í’æàÖöã¦hí¶‡ºØ>æ;ÊtàÔVl^Ø”VÜƒŠ¿êªI¦Ô`ìÇÀCS€íãdÅŸã®MfD*Sóeîz¸WäÇàÆ´L¿ …G!(ì bQ"¬‹‡]9Ø7t)MBÊùæ"fn$ZòÆéša9ÇÁ
uÕ|»„6ŒP÷yËvLzÆ*àõWÓlú‘µ”É®jCmF]K,)Ú=±†[ÕÁ¡ZÎ2Ù0ƒk³1AµªÇàb—ãpYƒ4ôñ×üzóêbr.l0ÔM]5E3¤ów´Ú5éÙÇz'†¸:+XçÊõ޹ÑÏãØ†È°—ì‹kåa¨ -q„TÕÒÈ¡ÌÒNçÒhœÈ˜çQrsr0©PuY=_å›Í>ȱO^¿?1LÇd2¼¶¸l®wmYWÔŠn»]zï%Éìu›WÍ*g>hÙÇsì5yMÔƒ—ÃWÛØ€“²ÇÏ(D{vÛ°´Qô#u]À\D¢'}üFste5öó§q$òí&‹5` -6¤«Ý”K)S1.‰^ϦT9¼NǬ"Õ2º‡TúpåèUY)®yÂÑ|óÁ<]<„†u¾(GZ€$1§[×ôà4‡5D漯(ŽåF8§÷yvxÚ -zŸ«@û®Ùå+Ÿ¥`ïmÙŽ‡°a[TþÕ3»]ÃO.yxpá·AzsñÏN¨_üTB9ROÍú…
-\¤Ð˜”û8ƒŽyY7èÃë.Èý£ÌñÁkÖún¢4×Àœx#Ž»û{LÝá}F‚”¹K/Ê«©¼#åÅï`Ú;_™Ôüø]1…¸Ë×)@ÉÛœˆ½,Æu×(û‹¡Ôû<>²Þ±èý››‘¨QèJü©+¥ˆj¢58ÿr³â´¨Y"ýQÔ*~2!a¾eΜë}šîùI+`
“ß§c“ð{W?ø…•Õ Fäð¶wKöŽ/£¼Íÿ|*“V˜I[ÿ™ô³ÝNw -™Ku€z8–‡ŽR>úmOø™
³õÖþ?Zƒ³¬endstream +xÚÍËrãÆñ®¯àÁ¨ÊDæ |“mC—W»‘•*Wl Q† +Á[ ƹŒ<Ë{Òâl[ì?Ð.±Œ-7Më9Ú{ v³Î¥”ÑhÕ
#ö8ÂÞésd© ¬§üÄe'vš9¢Ý5õª¬ïð¼™âk8Ñ®ƒÃÔ¾£n~WxÙv(¶Ã¬sj™è6_þ›×5ü
(ëâ#ã¨è wø&~ª?4ßßH½ïY—Ð;µ¾j¦x²n›rÑ&ÿ€[ª˜ø†òÛ¶©]A½m‘×pg‚ùM©”†á¤¼' +ðí©‰âˆj !p´YØß?+À±xMñ+›R,lÖ…Ú8O-æ lzI±†åÁâë.7^!úц¾AæÆ€^ölxll݆mII‘ó™^ÈÀ¤fSf"&EƒWØZ†@"KˆÞ·É‰À`m’ž°tÛ6Ë2ï¼)e
fƒßd¤½ŠÇ~V\PÓÓ¾ðÃ’ˆ'Ц_]¼½Ûâ3h´‡5"Eµ±,‹GÆ!õ|ãwHHT“£¨B“Þ
%/UQ¹¦AÏ4Ì|Ðõ›Â÷¶ñ&2Ižp°Ä=¾"îV÷
úz|Ì›“Œ> 5< +éhì{Òé{tw<"í·àZÖ™ð̃ßò®nެc€ç5ØìÜ+q°$¬5² ˆ`Éc$#¤!Ò:¯‡^õf'fÒŸ¢æU ±ÃO‚l‚q`l×”u7ØjBÝ>sÐÅìåv+>æÛ]U|sêòei,-¤!UŸäó©,¶©LÇ>ßÿ·*œcð~Ož€Ö ÀÅͰbŒjî4·. V½?iä@üÁÁzf3¥K<5™Nñ²Ù¢†Ñàµ-ÀÖJ +ð +²,y‰-„‰“àPRy÷\áTG—9&X•²4©,ÛBh„œµõÔ„Qû-}I¡)ËÎ +EÝ㟩„<mÿ,êX„Ó9Š~8ÿ'ð£:Ú‚ò/w/ Ë@ãqI:ãbdÿs +´@¢à¯•¼`cÝ4Ï×Äe{¾eþ\GݤLbо¥IÒ©ŸŠÙ‹¯÷©?@<þB{í¯7ò$0ŽÒàUÎÀwC\Þúѳ„Ÿ*2ØàìÿR¥'ùendstream endobj -1956 0 obj << +1975 0 obj << /Type /Page -/Contents 1957 0 R -/Resources 1955 0 R +/Contents 1976 0 R +/Resources 1974 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1934 0 R +/Parent 1973 0 R >> endobj -1958 0 obj << -/D [1956 0 R /XYZ 56.6929 794.5015 null] +1977 0 obj << +/D [1975 0 R /XYZ 85.0394 794.5015 null] >> endobj -1959 0 obj << -/D [1956 0 R /XYZ 56.6929 703.0246 null] +1978 0 obj << +/D [1975 0 R /XYZ 85.0394 613.3608 null] >> endobj -1960 0 obj << -/D [1956 0 R /XYZ 56.6929 691.0694 null] +1979 0 obj << +/D [1975 0 R /XYZ 85.0394 601.4057 null] >> endobj -626 0 obj << -/D [1956 0 R /XYZ 56.6929 555.5354 null] +630 0 obj << +/D [1975 0 R /XYZ 85.0394 465.8716 null] >> endobj -1961 0 obj << -/D [1956 0 R /XYZ 56.6929 528.2309 null] +1980 0 obj << +/D [1975 0 R /XYZ 85.0394 438.5672 null] >> endobj -1962 0 obj << -/D [1956 0 R /XYZ 56.6929 486.7584 null] +1981 0 obj << +/D [1975 0 R /XYZ 85.0394 397.0946 null] >> endobj -1963 0 obj << -/D [1956 0 R /XYZ 56.6929 474.8032 null] +1982 0 obj << +/D [1975 0 R /XYZ 85.0394 385.1395 null] >> endobj -630 0 obj << -/D [1956 0 R /XYZ 56.6929 306.0886 null] +634 0 obj << +/D [1975 0 R /XYZ 85.0394 216.4249 null] >> endobj -1964 0 obj << -/D [1956 0 R /XYZ 56.6929 276.0992 null] +1983 0 obj << +/D [1975 0 R /XYZ 85.0394 186.4354 null] >> endobj -1965 0 obj << -/D [1956 0 R /XYZ 56.6929 186.806 null] +1984 0 obj << +/D [1975 0 R /XYZ 85.0394 97.1422 null] >> endobj -1966 0 obj << -/D [1956 0 R /XYZ 56.6929 174.8508 null] +1985 0 obj << +/D [1975 0 R /XYZ 85.0394 85.1871 null] >> endobj -1955 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F40 1146 0 R /F41 1203 0 R /F21 926 0 R >> +1974 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F39 1151 0 R /F41 1208 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1969 0 obj << -/Length 2431 +1988 0 obj << +/Length 2116 /Filter /FlateDecode >> stream -xÚµY_oÛ8ϧðÃ=È@Íå_‘<,›M^m²—z·‡mû ØJ"@–RKNšûô7ä²äÊM{é¡@5!‡Ãræ7Ã1›PøÇ&F*¬œh+‰¢LM–ë#:¹¹WG,ðÌ"Ó¬Ïõëâè§S¡'–Ø”§“ÅuO–!Ô6Y¬Þ''ÿ<þ}1¿œÎ¸¢IJ¦3•Òä׳ó—8bñsrq~zöêËã©–Éâìâ‡/ç§óËùùÉ|:cB*Dñ×Åù™NÏ^ϧ¿ÍÊ}³NßOGï?ÒÉ -¬ûíˆaš<À”0kùd}$• J -GÊ£·GÿêöfýÒ±cêx@-"¨bß´-ãÄZ%Ç·¥pø‚˜Ô|E®£ +qÅPÔîS 7¢»EÎ'Œ«w×h)Ñ–k¥àjS¼ÆswžӕJæ%JpÐÜs\Lg)Kð?O¾¸)¨¦a#¸Ûyòi奅 -äéÑÞÔÝøŸÎÖ|ò²ƒ&=›¢ÜYO°7)å=Çd\ª%l/(I©5^áÅmŽF¥¢ÇËAÅ¢Q»¸<{uŒÈ”’EÓÀWUÞLgÂÒ¤¨ðÛ‚xOäSA“ÏÙú®Œ,Ù&L]»©zƒÜmê)SÉ}±*ªZÖU‹ËÛ ´þšpÐnn‰àâíÕUùüŒ&8×H9œ&a|Uã·ªÛ@ä˼i2Ð
t*âòìî.wc‚14”E]Üä²Ýf%ÒÛ&»É9®RRØ»Ýð -ðœ~0=/>(›ÚÉl‡1ÏC~ÈKb98~ò¬ò‘/•–hÉ„?y‡µ -N€Rš\Àmnÿª«< -©¬ -<·(Ê&ÍöªÉ?móªÒ®ò¼B*ÿÜæÕ*_9Ÿywë´ñIô°»3ap @m“—×nð»,³&àËùÛ³ -ü`$›)…–µÿ®:öÀõµí×Û&» -#uP Ó»ÉÖyOÒ©‰\{#Ç…ÃM£bxÛA«e¹]0Çê¯ -ä{1" -<È0Ÿ¼þãå|D’‚ Ò|' Ï«Zˆ¯Âè(s±x1ã)d6K!€„“–Ê]<"bÏòü| Šfí¬)n* ÙÓqðîÖ»à}@ ¼_Á‹¢Ì®òçÜ‘Üp÷çw 3”çåÊÙ*T\+’¬¹Ë7 -Á.££6¹@Åb °`š£â4¦–<˜OXÈÜWp.ÇοYõˆÄ¶ú5\á!e…+ö2qõšˆðå$âʳ,„'ó±»iZÄÔhÊ .EÑ™ßH…ìæ'ÂpƒßÌO§I…]±,Ú±|Çj¤c2ˆ§M*ø³ Â@Px -o9¡5”\ÔK.iâÍxÝUF/vï3]æ -Eß&“Ú†6™4ý"¨Á)Œe¤räq±àãÀöZ£8ÐÜÖÛr…œî©áÆ6yÓÖ›<Œf×¾ä&²j¤ñ.àE™ª]ÈCö'à×óüÍBºÊvý)¡Du½çÓ]¦>#¸AîÛX¹8º®çá6ÇŽ§Ä#ªwRuPàØ -¼°x@geS‡ýCÔEå† pL®*ü6&´r¿ -ã|ƒƒW -‹Ê@ùzÚÿg90endstream +xÚµXÝsÛ6×_Á‡{ fJßnn:u9§N,÷µ¾i’Z¢mÎP¤"RqÜ¿þ_)ÓqziÇ3æ +X,v±»¿]€DþH$$’šê(Õ LD´ÞNpts¯'Äó$)ésý´š|ÁÒH#-©ŒV·=Y +a¥H´Ú¼‹%bh +püûÕb6M¨ÀñÅü
P„qAãóŸý²š-Ý„ô¬?ͯ܈vŸó«ÅÅüõ¯Ë³iÊãÕüjᆗ³‹Ùr¶8ŸM?¬~žÌVÊ}³fFß“wp´ë~ž`Ä´ÑüÀˆhM£í„†g,Œ”“·“ÿt{³véØ1QFP*X”0ŽlßgzÊLYcÃÍÕZ~•Ž„"×G‰b°3œü³²Ü:²<VE].9E\rÙ¹œÒˆ¤… Æç’"–¥„ÁASn}¾0î°œ ɉa$ óØr\MIâü§ñçLœÒ4’RAl)n¶Ž>Fa®5sL=ÚÚz<;ðý|K£W5XõŒ +‚“¾dk”¤½8†ð.Ø_¥(å0e4^ÝçÎ*Éz¬àD,H°êWËùë¹·~ ’CD,=_YTy3M˜ÆqQ¹oâ-‘OŽ?gÛ]X²½Ÿº5SõÞýØíë)ñ§bSTwnh]W[Þz¡õ—„ƒ–piL£¤s)¨WWå#ð¿§4u”AqìÇ7µûVuë‰|7MºNEXžív¹c„8CIÐÅL®ÛCV:úÐdw¹1òŸslû¸›; +„–¡GDú6øæ<–’sžôs>ð
é +8”¦“œti—P¥âËŽzïh/Jéø¢ÞoGaô!kQTE[d¥‰ós“¿Ç˜VÖOvÖ-]^œ»¨ÂQYåyî(7‡›&ÿxÈ«6H»ÉóÊQùç6¯6ùÆÄ,ÄÈõ½Ñj$&]´€Ý ƒÓèL +Hòr\ßÛ°cÔAPÌùFœ£€(³›¼tsfƒHf¸ÿÙ]ü¦y¹1¶2Ö²8kvùÞ% +ñ¦ÚB˜vå‡Ä…«'Ä×j;8Sã<gí¾YõèˆCõz¸ÂBÊÆ8©DÈôk,À—‘èV†œ%>=‰ÍÝ}Ó:L
¦@Á‰ÎìFÂW7‹`nÂ7î›ÙiÐØë¢«7$p6 ƒÜ1ÚHF¿ "\DEÊ"©Êû0"HLú"G@B¤ +Ñ#kó˜8àÉÿSÜÜóææù¥_ΖÐY¸}±4v=dm^ÜŒo!•ïïFÂ…@¬ +ÎÕWQTg~›_°µÍ/øýp¬)fÖ]Y¼zEe!bD/;µa²ðÂw5,1Іe<¿»Z†°ê@óy7A—Ç™ölA|“\ñÄæµI§Ï\C;e{8Ò;ò€lE{?Z4Á‹ŒÒ? iМÂk¸ôBÏ^›jþP4ù ¿TÀû)ÿ³:ãÍÊßåXšBË…Õ0F(p<ci®<D×'˜é*оßÊñ|Ê÷žËžÈQŽrÒ8™0øèFï3¿ßn_ØëÙÉÒ¼‘¥©øŠ[0à
ç!®êjÄšÇ&i endobj -1968 0 obj << +1987 0 obj << /Type /Page -/Contents 1969 0 R -/Resources 1967 0 R +/Contents 1988 0 R +/Resources 1986 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1934 0 R ->> endobj -1970 0 obj << -/D [1968 0 R /XYZ 85.0394 794.5015 null] ->> endobj -634 0 obj << -/D [1968 0 R /XYZ 85.0394 665.3048 null] +/Parent 1973 0 R >> endobj -1971 0 obj << -/D [1968 0 R /XYZ 85.0394 642.5175 null] +1989 0 obj << +/D [1987 0 R /XYZ 56.6929 794.5015 null] >> endobj 638 0 obj << -/D [1968 0 R /XYZ 85.0394 578.7341 null] +/D [1987 0 R /XYZ 56.6929 617.17 null] >> endobj -1972 0 obj << -/D [1968 0 R /XYZ 85.0394 552.6769 null] +1990 0 obj << +/D [1987 0 R /XYZ 56.6929 591.42 null] >> endobj 642 0 obj << -/D [1968 0 R /XYZ 85.0394 507.9859 null] +/D [1987 0 R /XYZ 56.6929 518.3317 null] >> endobj -1973 0 obj << -/D [1968 0 R /XYZ 85.0394 484.7183 null] +1991 0 obj << +/D [1987 0 R /XYZ 56.6929 489.3118 null] >> endobj 646 0 obj << -/D [1968 0 R /XYZ 85.0394 297.8603 null] +/D [1987 0 R /XYZ 56.6929 437.3327 null] >> endobj -1974 0 obj << -/D [1968 0 R /XYZ 85.0394 271.7833 null] +1992 0 obj << +/D [1987 0 R /XYZ 56.6929 411.1024 null] >> endobj -1967 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F62 1347 0 R /F63 1350 0 R /F21 926 0 R /F11 1437 0 R /F41 1203 0 R /F53 1298 0 R >> -/XObject << /Im2 1336 0 R >> +650 0 obj << +/D [1987 0 R /XYZ 56.6929 208.889 null] +>> endobj +1993 0 obj << +/D [1987 0 R /XYZ 56.6929 179.8493 null] +>> endobj +1986 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F62 1352 0 R /F63 1355 0 R /F21 930 0 R /F11 1442 0 R /F41 1208 0 R /F53 1303 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1977 0 obj << -/Length 1596 +1996 0 obj << +/Length 1853 /Filter /FlateDecode >> stream -xÚµXÝoÚH篰ªHçHçí~x×vŸŽ&$¥JHøªêÚ>8° –ÀÛ4í³ž]0ÁA\«Š‡¯g~ó=Þ…y~Ì“Š¨„'^”„DR&½É¢G½xwÙc–'pLA›ëmÚ{}!"/!‰âÊKï[X1¡q̼túÙWDS@ þ¿7£ÁiÀ%õ/†W@1JëHc|¡,ëÛáèw\ÎnFÃËÆýÓ(ôÓáͷǃ‹Áx0:œ~Mß÷éÆä¶[Œ -cïcïóWêMÁ»÷=JDKï (aI½E/”‚ÈP·3ïÝöþÞ -ÎÃÂpã~Y"Qï*ý¸6F6Ïå)‹}=Y6ë´Âͧ¼ž!µ.¦ú¥¼ÐS«/½ª ŠCAýFu6Ï[oÅüAq{y¿uÆ8
¹dŒ$Rbÿ”Yñ`kœ…QF¸SaÅôígšîÆl›ê¨ï¦:¯¶í<æ…í¶‹3$¸ ñV'ZË
\àð(4ƨڔ¶²…½íì묪uiB>·>¾×º¨òeñæ4Ì¥Ø4Âå`4€þ‡¦ƒß×;Zö‹Y B©-w+7óYÕa…ä$¦üØæèî0—E׺.¬„0.#×hó¬ê²ˆ'$Ž£¤ÝfÏ`$˜;›ë+ë`Ùé`ù†þÿ-íÿ,Q `ºë襄íÎ'N"©D»À¹ô×USÛ@Õf4påO°%³Zã~†K¥Ë\[¡¦QaEÎj¹nˆ‰F€ý9aÐgYm…‹ù¤¦ù½a¹ojžï‰åat6™Y (}ËrgE³×'«A|»z?p^›Þ<&Tð©TÌ¥`b” ¥ü;mÖÈÆÌ옘™UgUn¼2ôƒ.ŒM–·éZ³]éºBÊDϼڋ“y‰›ë‰=ŒäÕjYÖq}‡Äk¶…¿é²Â8Gv¼Ÿê¹~Èj˜,›!WMÊüîÀc‘Bg¦™æº²’ÃQÐ??“þøƒ fßá96%aç8¶e{3^á£`&RbŽœ´pûd÷[°“A3ÿŒ8á2ºÅõv0þ8ŸÁ§þõ‡«ÁqPŒGHžàr6ê_Û—'„vOضGîÛa²ø-›ã÷ž!‰¢'€®txÅ^ðŠý_ ~0<ìP+4Èwdúø‘ ü8Pt™nxt¬–ó}ßUû 1j.7mÏ#š‘š&÷ö¼ÙèÛ×ʼnëO¸>›`›ˆ•?Z:<üø7T ¬~þ0³ -fÈ*ŸZÞ¦·Æ<®nŠìU]æÅC£FÚ#¶ã°ðOù|ÞÎ;û4«•›O3m§Ææ˜RZ〴Æ)4ÎLÛ%+ú˜)zú¼hÇyg^ü\_¿»¹MÛÜ}W½Žf']euŽI¤Y_Q\É«Cƒ"þ…AC¦ÑÝ‹ÑÆ7î°®°t:óõ/JòÃ*yW»V)«ÇVypŠ`Ø`@l!Õ~À¡2Ž—í²¦}sárÌhâ±D*„:æê.A"=»ºÿœ”³ƒ6w˜XIù²(GË’Nb*p>L£ŠY÷ÿ0~“8òX7’í
c¿§¢gµtÖ4•ŠñÔfˆf`Áº,"ÂYõÓ ¸ñ.*sÀ Í`ÌÊ:¨êåÊJ•¸n÷_Ãeme&§þÐAͬs[,«º«°Œs¿M°ïa5çÈ?Í¹Š +xÚµX[oã¶~÷¯Š +õ}î}üÄ£X÷k3•g&úœ‰<—Ѳ§bF+ÕÌ,zw½í +ÉòÜèn±<JrŤLó·±h¬@6;¡öQL˜åû(J Árc$†1çÌ +ˆž5È–RGèaÏ™3“jŒ‚3£$hî9nûI*â ü—ñ«x +O• MBYƒMBA_ëMÞ¯ëG¢ÖsA½eØ;y,Û”Ôð;\3µªjŠÛÖÍ»ì
3×W<þ\äz~èòºD÷H›ÅóÍzI”O&$0™~ ²LˆåŠz»q}1spD;ØËzѹe©‚´h×ê·•?6PQ²oaßÖœ;бbßPDDZ +ÔiÓ¡<¸g2íz“)ËtÞ”ÛÌÍ‹í¢NêzÑ!9͘Ժ)ªh +ÛšÀ0]/—X'¯À™V
Ð'ª +ØÈ¬…ã +(–+™‘y +MæœÊ‰ #}LúJx隯\Æk¢oÐ{žú“ÆÃ hbj{_¹ç/füÞôE»éÚ³Š&¿”XjHmW3‡íq…uãåMn*¨9
þ;Š.ek)JÓX¬1¥z@±z¹À)´Õ™Jµ¥™ +[Í*Öi~è³}¨¼N¡n¼Ž-aÛ&Á'ö2ùð
„Tp¶ìd¶NʤÁK Ñ„àé.µÓØû‹Îû¢òmßßX Ñ5ü«v« +ÚÉÐwDb,„«áh×!pédø·WD“Ÿ‡R^'sªçª©ŸVlU‡F²ŒËS‹£»Âš(6…áÅuaåLHc›B[U—F2gYfóv™½€1 rÖè\} +n:
Ôo¨ÿ¤ü_*Q<g +Tymß +Øa’ÌšTµ\Â)WùܪÆÖ ÓxJ%YÔŽæ*·)]ØäFâ¬Ö[OL¼îˆî/K~ójñ•¨Y9G–¹Ï}øžûþÔWLúf y¶+K(œN~|tÕ~ÒX}pHÿWWÁË Ýݦ(L¥)]R|†3è3]¤¯D?¸êx}ÕâtåêŠ('¥W~ÂEš|Þ–DȱВŸžÖ›: nï‰x'u{óg·©Â]ª1äÀú™[¸‡/*»&WM7åý‘&'lhBçXLW…pÿ\\ŒÙ`ü9hð!$º³‡´½__]ã.…žÈÞ&$káX×5+Dûî‰$â'Fw4Þ
Ç¿ÇgløÇàý‡›áiPð òŒ†óÑà}X<c¼»Ã¶-jÎŒâç‚îÍø
A<â
:œÐ].è°J¼a•ø_äQ÷ˆc@-×߉á“'‚ÊÓ@Édƺ
À÷Ýi&Î7äuœ«áA1W»²—ôVÀ¡ò÷3K5ƒ°¼šñþ_ôÐMei<Z7xtøû
ßW ¬ð¶|wU9¼>÷Ê<onFìðÈ)W^Œ Wì†#À)‹.wÞ‡SžžšžoÁÐ5v×”MPÈ î"å°Ë„*y¢¦?…ž‚ϻΠ+iûù _üuýËíÝ$ Å=h²WÂÕì¬+NÃÁ@âø§‘}w¬QdßÐ(¨ÉxÙˆŒ¬rgŽèrK÷ÆFýFû7wÊã"e—»7ž,R©Nßx\äÑ.Bnƒ±‡L_;2ãô½]Ú´úBÀµÝXYxð[•ò*Wð·ܾñK%R.2xðKx«ò¬ë§J¾{Å|ó£û´e*ËdûWÅÖ½˜k¦<•à‚X¾isóÒFeÌdþ¥û endobj -1976 0 obj << +1995 0 obj << /Type /Page -/Contents 1977 0 R -/Resources 1975 0 R +/Contents 1996 0 R +/Resources 1994 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1983 0 R +/Parent 1973 0 R >> endobj -1978 0 obj << -/D [1976 0 R /XYZ 56.6929 794.5015 null] +1997 0 obj << +/D [1995 0 R /XYZ 85.0394 794.5015 null] >> endobj -650 0 obj << -/D [1976 0 R /XYZ 56.6929 769.5949 null] +654 0 obj << +/D [1995 0 R /XYZ 85.0394 655.4043 null] >> endobj -1979 0 obj << -/D [1976 0 R /XYZ 56.6929 751.488 null] +1998 0 obj << +/D [1995 0 R /XYZ 85.0394 633.1281 null] >> endobj -654 0 obj << -/D [1976 0 R /XYZ 56.6929 670.5492 null] +658 0 obj << +/D [1995 0 R /XYZ 85.0394 552.1893 null] >> endobj -1980 0 obj << -/D [1976 0 R /XYZ 56.6929 643.3882 null] +1999 0 obj << +/D [1995 0 R /XYZ 85.0394 525.0283 null] >> endobj -1981 0 obj << -/D [1976 0 R /XYZ 56.6929 208.3873 null] +2000 0 obj << +/D [1995 0 R /XYZ 85.0394 90.0274 null] >> endobj -1982 0 obj << -/D [1976 0 R /XYZ 56.6929 196.4321 null] +2001 0 obj << +/D [1995 0 R /XYZ 85.0394 78.0723 null] >> endobj -1975 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F53 1298 0 R /F41 1203 0 R >> +1994 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F62 1352 0 R /F63 1355 0 R /F21 930 0 R /F53 1303 0 R /F41 1208 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1986 0 obj << -/Length 3645 +2004 0 obj << +/Length 3601 /Filter /FlateDecode >> stream -xÚåZKoÛH¾ûWø`eÀâö‹lò˜É:Yf=»‰X “%RŠÔˆ”å×oUW5_¦íd3sZûÝÕÕõøªZò\ÀŸ<Ã@èÄœÛÄ¡áùzw&Îï ïÝ™ä1K?h9õÓíÙ_ßj{žI¤¢óÛÍ`8q,Ïo³‹7ýÏÛ«÷KŠE\,ÃH,~º¾ùµ$ôyóëÍÛëwÿ~ÿúšÅíõ¯7ÔüþêíÕû«›7WË$‰Ì7ƒxî‡[œÄ3?Ü^¿ùpñéö糫Ûî -´
¯=ÏsáqBÓ´8 -šÒá©Bå}™®óÌqDI‰4jÌ‘0DÙ˜¸¯¬]m~H[`³k¾OËcz£½¸½HÔ¢¦ö»¼¥BJ³^Q
Ï7Z>¶ûc{ •8\œê#uW9åú[^&ÝçýäÇÌénR>s3*†9slˆ1*Añ³Jן›2m¶4UšáTÄQä9_Í,¢KÍà@Ú$‹<¸fSQ`¥Š'‹Éébæ!í†vËXЯ9¾($B˜gvÀ–]z"nÔû¶¨«´,¹îT¾æúïǵžHxdÛ#dz«³â7!T~hˆ!Ûb½Å"èí6îrj&Õ†è:ˆå¦AéÁúƉi½£)ݰNÁ.#«^¸mÊŒ·)²vKÅ´Êæ}•6(¶lü?€È¹èéLì@U’„¶%2²ãÚ Z`_:s½ÒŠ@DÒËf–剖ÑÀF”ù¦¥WPI6°Q±ÛåY«äÿKæ¹…e£‘àÃå8ÁVF=¡)& B>'6Ðèci@ÚÌ™"À õxFºyJÆý€þâ?^ºÛûx‰WôéÓÌÊ ì…Þß}ƒvhaoɦä_ÒݾÌ/gHŠÂ@êÎv>y*ó§Z*q©/³9Z?s‚Ñ
4Ç_¹ŠÁºiÇÂ܂ȴ(¹q¼P‚¾Í‰½æ@a}<hW-58:d”ZìÁWøuºìm%OHy@JŸ,_»´¤Šs_®oF徿DÒrŸf™³ï€µ:µU‘tžY}±¨ñöŒ¾å>-ÊtUæ<Ú¹¶©»†Šê☎:Ú+sÒ!7ãµ1›¹0§U½ºÊKº-SɉÖëÖ1DÛ'·´ Á‰£zfÇ0u2Þq©Ãd±éíY®ã§v°¨Ÿ‘—°/³&H›NA7ft\´ìôì?sXèðÝ5O}Üïé®× ÂlÊ€T4Å®¿*VîŸá¢Ì¤ß|Îá&1Š|ÃnæÜz ’8ùV¯¾¡]@
€M™¨á£c;Ë“8¿–'iܤN°ÒûF¬ƒ¡Ÿ5³aD±N~ØÎzY—bÞIc¤ü.›š,®7t–y?£ýZU±òW„ñ®WÕ-1%]5uylsÖ7¥a¦œ€Â’àȇ¶m¸†Ž‘¿¾¿~w}3wL°¼R©!A°t -W[‘Ñ -)ªp_¿3+O,1>
¥[„ëj*ø1Þ?« -ëz·OÛbU”Eë@®ñç„Î<=”…F¡™`¸™ÃÒÚ N:cþjOI
nb(ä¸CÓÒ+ÓÅ®wUñ•uH,„oQe…|€|D™1¯ÖpøPN™ 3G^yÖM˜Fþ3˜&4Bñ -!¯³¬nò¶ð{ë6§g°œ#›ˆxýY¼ÕÜÓ”>ú›2ÔuÁý)ÑãùèÒ@þ -±9áÉÄŸf²fÚ7ƒ9äM(iL?îöãqtŸX¢ûœÅ¡.åaJMž‹D):ÿP‡½„›‘„Ó=¨Ò‡9w,QZúä¬Ê1ÇFƒˆŸž) lê“„Ã(*e2ÓÁuö´2©×“åSú¬Š*=œ†ã9ú*ò[ðçM²†^¦ÿâá"N¶²´M;›‹ |Ý»l&öwª=¶ÖŽõر:yµ]zøœà¶bG4Õ÷ゲN³¾µðÉ1ÖSÊ ƒJé³?@ìŒQ †ø‡û¼{Ý 6 -PꌔàIcá°ð“´Ï‡bÝa5/nñ†¾ù -Õ>eŽbú;œ=‡å&P±³jÓ‡S˜ùÜæÿM÷Ò€ù£l‰ù°.OÓ”·ò0væ" ^ÓÍ(ãˆÆÔ@p´%'_uwãÊ57“)Ù ˆ(ÖTAP¶4mÖ 7üØÖÀébí ëÀfîjtþsud\ž×eª ìÂd§dPéôʾmcƒ{n‹ôSïâI‚?±ÝfZE7´ìvêŽU Dìç'á\5lø°ÍçÞe#º§wm3Kk¸*iýû.V>Ùe(t‘ÎRÇ€Oâé#\xæÖûíM룂ÞǶ‡´j6ƒhÁ}Ý>eYž:¥]õCŽ{°3ÝOUÜå# …0~7azå…²SÞ~7XîÔÊøˆßPD•tËœ÷Æ´U]¡”IMRÆÛ®p°ˆ[¸1cW݃ìäÒYhAQª©Èäô -Ëôð§9ïõ„<áÏ,¢ïTÎAv| œ A¯)Qc!ë¼iˆWP3‚Úšm}¤\§]ܹ,sÄÙfëµu'¤ÝŠó±[,CÚ ç…€u"`m''>(EÞzÆÎ帻kfLǧ~Øœbê 1B}''¥Çœd‰¾K‹*ð¡q‡ÚŽÅ÷uÙÂÉï0…«åÎ%R€Ì´| x€íÓSäk÷£%펅*oêÃgª¬N-7÷ñ»«òãîë"ã5í·E›w®~™åî¡â ¸ÑeqWq*e©ô$¼s“ð»©ý -¯’ 0#é~ðaj`5ü7ÔZÖÎFœ½Œðe«[ݵ]™áˆ•{:ÈLoN8_ÒèŠàû&]ûNU‘“ô·9NFЇ‹¯Ñ
Pc[?å•ðs@¨z?%ã[úà·£Tçw2ëÐ̨u}¬À¶D«N¼¹€ÒCÞws +xÚÝËrÛÈñ®¯àÁUªDì¼€rÓ:’£-GNl¥*¯ ’(ƒ +·ûí‚ù2Ž‚Ù˜ÏãX̶*~ ¤t3ÅŇ‹´ +,ŠcÏ í¡ÎÒ+ + +»!±jÒl™o“‚Æ}™o*÷5#”æ»$M}‡„¡U[rc2§¾ØÅD*î]£oyLò"Y™]m\-3Á(u[ÕÅ5-vtVÀ¦¤I5Z—žNp#„´H‹N]ù±C2Œ¨øH«ec"õÉ#5HpìĨš81ðO„„"ö6 ½Éetêú: û2i‚¤jtcBÇ…¯e«gÿšŠ5ÀÐnNPÃðևݎx½¶¦LÚ¿—ùÂpñ…¸ +ås,¡àû’qWŽ?Bþ[ S+-¦¹§¼°&da?6]êBŒ!†ùŠÆyCã'ú …††ö=BlC;#4"ó©ì§gYL.ìRfršÍÀÁÜÐÁ§4_à[b3»Ä‚Êv l6ž˜ƒI·1ëØW8ô=òrYÒ¬Ñß@¤®=ŠbÃÉÏRÞ²Úî’&_äEÞ˜ W¹{ÂÇ,Ù¹IFa‰Áp=3pý(nù«©xŠKÓÿN¦ð„º!Õæ®ë2ÿJ‘u@$„6/ÓÜ|ù°8TÃû,á&àC9µô0²¥È+GºÑÈž.Vô‹ +ÐHŸcîgFS|³Vña’mDϘ$[}0|›Í›j^ävÆ„-ŠuKÖY‰ù‰1êYeÂÆ£d;¹³u $í‘©;’|Âså(,k™ãí&Ûç³O6µš(ˆœD<<¼ìKÊ¥]µ¿Œ¼C‘Õþ·ì%dÊS](0€±‹¡mú5Öˆ~íTfšÀ1¥¤ã&{W#OÎ6K‡ò +ŸŠ"N$Ï:c0)é}úYe¹ÿ «È×±>_”Sj¬¢³,:'êp2#í~3gd¼ÿ/ã0?!ã\»Â2,·µSX¹Mšå†&H»¼¯Xiž°Ö-Ì8:Ó6¶µó=Å9+·üÿNn{ñ³äÖÑþå ÝŽ“r+C?Rã•[Å|a5ö¸ûö£…)Õ"± jÊ]`Ï«‡ÈÝmL.þ3É‚E:<O.ašTd‘õ<d3½‰L¤Vñ®2i$¬«îqÐì쇪u"þ¡fÏŸEÍîî¿{}û±7;¯ Í—(²|F¼ÿXøìÑPh`AŠ>—J$Ä01ñ¶ +v`ZÃ<]©ëÂCݦ(onîoÞ›ºÇÃÍTMBBî--Jsk +KzæÑÆ„ÝÓlö¥ÉJŒgí÷2u!‚5¬AÛ^µ…5)•X쮯ôDh#õÂö± “46'Š øÒ;Î…ÀªÙៈš´rq}‹H
)uåpéW+»£`¦½Çë·×>’‡^<Óúã0)ÔP»o}9çŒ1ï:Móþ!·¹»Ø¹Ø”šá“/ಗóZ̃”d.çÔ|þ¨¼ãèhŠ?Ž…8ÛÍDŸz3iSšÞ‰6}´‡P©ˆ~Øî†ëˆŸØ#~N† ¦ÐÉIE>»„)zþ@„«„3æ3Õ>£ì“§)GÌQZº’@µ™Íˆzy>=N@²Ô•û¹SbÑLzììpµ¨ÞÀ'Ô,ò2Ùûëmø ®G¾}N³ÅRÀ¬À{‰ø“d0he+Mš¤5¹/›C[ÃÄïjµ!=~X]ðŽ£m²ÿ”°sù–pªŸ§E•¤ÝlîJl¨§T7+”P³ÛCÆ„1&öûǬ}†aí"k ×è›P'î=K…CKˆœ¸>/ÌdŽ¤Ã +åx!‹«ƒ“—±É¸òVÄr`x3]ê¿jß°j”α +ÖÅÅ¿ã"'f&ÂYyX»sá‰3B¤± +ú&Ú7JƒV¯¡ïæ 0N˜G¶Pžz
cüO“n.kÐ*âмSØq,$|Á"·‡<‰PÃOø‡’‰g!L
Úö ÐXŵ{ÕEÃjïEv:mŽcB‰h”šT`ÌŒñg«ÆåmöIY¯zy‚iŸè0T¨,ŽRƒ®º%‡Ø›Øw*nË“èå Sî4¦:å…¾QÞn‘3ØoÕúøt_SD•tû¶ÚŪªD)㒤̳¯íÀfŠx„9ëtå#ÈN¶'…¥ŠºNa->ÄqÊ{'üsEøÊÙ«‰÷”4ˆþfh È2«k¢‡„ ¹zS¨Â©½µ©-‡¶Æ¬µÖæ†Ô#®/¹õÒN¸/„œ£—©¦•—Ž"ma§*Û-›mLggݲ)Å„ðY1ñ”ä2RÒJô:ÉKß=F~H=ôP×E7_cáVòÎ%~KþÀlŸG +1—àŸgB‡R³ðêœQÅîÿ13TÆendstream endobj -1985 0 obj << +2003 0 obj << /Type /Page -/Contents 1986 0 R -/Resources 1984 0 R +/Contents 2004 0 R +/Resources 2002 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1983 0 R +/Parent 1973 0 R >> endobj -1987 0 obj << -/D [1985 0 R /XYZ 85.0394 794.5015 null] ->> endobj -658 0 obj << -/D [1985 0 R /XYZ 85.0394 380.2277 null] ->> endobj -1776 0 obj << -/D [1985 0 R /XYZ 85.0394 354.9387 null] +2005 0 obj << +/D [2003 0 R /XYZ 56.6929 794.5015 null] >> endobj 662 0 obj << -/D [1985 0 R /XYZ 85.0394 140.6073 null] +/D [2003 0 R /XYZ 56.6929 306.3415 null] >> endobj -1988 0 obj << -/D [1985 0 R /XYZ 85.0394 107.5522 null] +1788 0 obj << +/D [2003 0 R /XYZ 56.6929 275.1221 null] >> endobj -1984 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F14 952 0 R /F41 1203 0 R >> +2002 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F14 956 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1991 0 obj << -/Length 2611 +2008 0 obj << +/Length 2796 /Filter /FlateDecode >> stream -xÚÝZ_sÛ6÷§Ð½É“ˆ@ îžÇî93g·¶;ssM( -¶8¡HU¤ì8Ÿþv± -bG#7‚þv¡[–“.Ï]©Cý#ÀWOl‚Òãr½˜š–“quO´|3'xûpuKÕ«SžŒým
gŠ‹Áy ãXXæ&Íæ¤ë_ή?œïBˆ%0'ͨ¨$M6V÷ƒ RjˆøL‚þ•æÉ -¾†qÈø¯ÌÈ÷ØB@:‘‡Q(D „+Týõºy¨^Â
ÿo“¸ÃC"·8ìÉlq1ÞâˈCûl'1±Á!VYbác!-©T›²Á’ß[ÇZ-\‹¹!2„h³*Ó‚Èä|ëªx± ± ú£P:õŸ:ÁÏGù¥õìPxÌÍÓ©ã&p,ýgŽ8<¦#†)K¥ÄF -œ¨ÝQ¹T½öÉmê(_[e6«´¬ïA‚ˆ>šî~àd#V1lU¢—ÍD §=ñ¯qwŒce‡åÞ€¸+xÄ‘Œ: Ždì,V”6” ±ÍÖv§?€_À,ž`*¾Ÿ‚r"øÜßvs‹‰„º†É÷þ›)Æñ4þÝ@? ™È¿ž|}Ð4×ê0ôc)ƒö=v9Î çtèÃ{wqS›§ÝA¾Mî
öÞb¿'9¥Û:Þ¤ÛZRº
47K[Relóh$4§|lSi|IËÙ ¿üLË&ÚŠ1kAÀPj=®›ŠP?£*´¤[ABf•: -<Ë`ˆ[©Ý;+·' ÝR¬ê©˜×Tõ¹¬žJ×¾"ÒÔлÕó £ðÊM¾™[v‚&ñ™5r¼@P`µ]„ˆ®þ{ss{~‡EÔ\04•oØöÏ~à3›UœéÃ> 6ш/ÞVÙg„®ÂåOׯŽÊÝ¡Ž•Z¿õL}ù»QYwSËH«6*CEiš§Ê8ÐÉ¥)Úïйè#XÃÜðx“ÿ>À(Å,†‚È/zW!;W"B%A”„!H/t ˜N_‰D°À:Œ•Uí;@œOç²=ÍfÜoÁÒnÁ±Ü½:÷Ü=³ª(LF:ch!Îsëž°¸ô<\â%òÓPxšçv{À¸»XÁ®aç©§M×ͼZåÍóbžæÆæw ÞQ -ª´Fï¹ADq „‰86CÆšÄRBvú˜…ÍÍp;;«· ¡ -ºí÷‡‚¶•
Ýtqí¿™¶¥áÜj0ꉳÚV/H±ËÍúC›èï®Þ$Æà†¡9Š¡£¤ýbèé„3Ø|´ü·[.ô"D8z$‚ô¿ CuÎj‘6Ã_
©RijrÎåý0³˜…G ö[_ülþ90·-/÷æÍ›ái|hGl› n´ -•Nt¤;ªûÙÓ¥!S›KC¦Èo±w>Ήb@ª]¥{¦ô -\£Ä"ôß9 +xÚÝZÝsÛ6÷_¡{“§ƒ ïžòa÷œ™ÚíÎÜ\ÛJ‚-N(R);Î_»X€%ZNÍ\&“q-‹Åâ·‹Å1øÇGi1™Å#ÅQÂx2š-OØèê~<áŽgâ™&!×ÛÛ“×çR²(SBnïYiÄÒ”nç¿ßýûÍÏ·g×§‘°±ŠN'‰b㷗ÑçÝÕåùÅ¿^¿9Õñøöâê’È×gçg×g—ïÎN'Y– +h\Û›[läZÞÜ^¼»9ýãöÃÉÙm7€pœIÔþÏ“ßþ`£9Œõà ‹d–&£GøÁ"žeb´<‰%±”žRžÜœüÒ jmÓ!£%2’Tè« >âq$c%zfK2š$Öl0ÒÓ g¬?Ò6o‹¦-f
ŽäˆÀúl4i¤t& +`Lo©&çyQæÓr‘~Õ¬ÜÌ=oYsÍêMu +’®@hyK¥GcG>Ü[QÑ×YR"ݰàZniòª¨îï6%Mµ–ô<å}Ij0ÈÚs‡S§2V5ôÕUóE8 0ÐaÔ飣L`Q2)ðô¬3ÔU×AÞšûz]|öÒµ×Æ »«Ë²~„q:Ùf†ršhÀa³$)-£T}™»òH3Õ÷Ö¿ÕÈ«€î$£ì`¸ vD¹¢oÑ5qÙ¨Ü5Îô6„œ‰Hʘ”J¢8㱇‹jV/;ƒ]›?7¦i›]{I =pžÂ¾NçNäZËXD"MûZzt6®6Ë©©N)Îhë…~Hðëýå
U2ÝølÆW1ùlAæ¸úùÝÕû³=ô$RGB%êˆÖ@¨H¦Õh²øÿGLÆGĤH"³ôLÆ<â)Òö0ùËÆ¬s +37$Snê²9̧£¡^~r‰¤_çW>y(Ìãi&ÆÏ{Áñ&àÈGLXHÙKN¤,R,£\í2_ºüêÆ¬ülô7Ãþ°íêX‘ù öÞzÚz‚eÓoʽñW>‡ b¤¥ +Ó…>HiÛé¶(¸§€&y,|Ç€ŒY{Sñ"ãg™µþëÊ!ÒSåÕÌ|9,ƒ†Ëƒƒè€¢LÕ¦òø»§-Ýœ`©ôø³92Øý¶™EÐÀ5DO»™r»¨fã“ÛÜQ>w¶l×yÕÜà|4Ó}Çi‹a§’¼„g – Š&×~Müb}-Ó8¨wáPﱊÇ*ñ±+*»„ ±K6v‹?€^@,àò/5·'RJ)ˆàS +üµŸRL|0.L†÷ßÍ,Žfðoø©ŒTªþʈ|‹g€Åœ%‡VŒ´ð§·iºèóþ;ƒ¸n̈°“¯S{‹üÊ{ä÷§;K¶9v¦(Çš‚¥¨2±É3~)yÆ*<iŠÞ?WÙÔZ3f¤©Ïëî„
«Ð9n 3kÐÜÏó6Ÿæ
l!a¾ØøU•îèæÓ¬Ìý¹–ùú#•~g ûüÇ©iÑzíý+õ'²PÈéc÷°ðűã1cšŽ‹–Hx0Ù¸Z:T„Ò*_CP\Û6en7ÌÚRº“¤X»S±h¨êcU?VŽ¿&ÒÔÐokçÁá/
¾]Xq‚#ñ›—
J¼ë@Њj›_þçúúæì‹h¹cotŽçßo^)3qÆ_8
aFT,é\ñ¦ž}4î`ûâõÕ/ÇaWÇÊ(«ß¥žúárœ…eœén9†ŠÊ´µuo S@)sôÞ¡ãÐð…)áñÆþm@Q€k¥Æ3:✫ðömïN2¥¶š“§Q’ûþ|ùK8™ÀÖ4ÖtPó +l?f›5ý¬Úò IÐÃcMux-K¥ðæVº[Zdµ·´2¸¥ÝV:HÊÞ2&ù±_U®¦h¼|×µo²*s¢á}ë'× ]0źùf¹²–R©»Av©~gL”®Ü¬Ì¬@qgãé“kEÙ×ô9ìû5WûÛLœÐ}œ&Y¤dæ[Ìê +9ï7ëî¾Òž–°¯¢+1ÐÄ_Ûƒu対–ukÊ'b";SêBW‘„`Þóã‡"²8Ñw
ÏyU™’*Ó»4nÐ1,lxô±g'fÈY!jj-TÐÆ,mf†ýØÑ¡Z½¹H XA3‡ŠîYj»éLòcž{×!´ˆ2hƒ¡êÖ÷#*\=c ùŸ_ +:.»tÓUµÆ"`eÚÕ†Çq$b•õÔÙ[:®´Ø—fã¡Mó÷gopL'˜ D|û†$‚%Ô½#énôov"èy1pLùb +{hˆÅyµÉ×OÄÌ_
EJžiæ^Çœ.b¼fAã»§+î¥KN,´ˆÃo›íì>‘‰Ý#SPÝú+N`¼ÍRyý7!±;Ô„Š¹ifëbjüØiý`"ÜÙÞåE»&ôÀ£ƒŠØ_¼IqøzGgôHë@o®è=p€*k^ø¢Â
j,¤Ý +ÎË]ÓsÏ6%¬?`v +ùû®y˜È)íQ +ì‹üÁ-'‚¡rs]Z´ªn‰êÓ@¥håQÚ/»N³Äh z.×BïM{m¤Ð.ða!×!i”øí|IAÖrtH¤îXæn±§˜Ù³UA)’[¯L¯
øgÕ“™’ÛXD
ŒUú×Nj>Aœ*É…†V^HèñäÀBNöW¿¶Ü.ܘ‡§Ï˜’Å‘”÷JÙ0ÈôþÆØ½ËÜ×ý U\endstream endobj -1990 0 obj << +2007 0 obj << /Type /Page -/Contents 1991 0 R -/Resources 1989 0 R +/Contents 2008 0 R +/Resources 2006 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1983 0 R -/Annots [ 1995 0 R ] +/Parent 1973 0 R +/Annots [ 2013 0 R ] >> endobj -1995 0 obj << +2013 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [55.6967 323.7477 116.8967 335.1398] +/Rect [84.0431 269.7901 145.2431 281.1822] /Subtype /Link /A << /S /GoTo /D (statschannels) >> >> endobj -1992 0 obj << -/D [1990 0 R /XYZ 56.6929 794.5015 null] +2009 0 obj << +/D [2007 0 R /XYZ 85.0394 794.5015 null] >> endobj -1993 0 obj << -/D [1990 0 R /XYZ 56.6929 756.8229 null] +666 0 obj << +/D [2007 0 R /XYZ 85.0394 769.5949 null] >> endobj -1994 0 obj << -/D [1990 0 R /XYZ 56.6929 744.8677 null] +2010 0 obj << +/D [2007 0 R /XYZ 85.0394 748.5408 null] >> endobj -666 0 obj << -/D [1990 0 R /XYZ 56.6929 301.7233 null] +2011 0 obj << +/D [2007 0 R /XYZ 85.0394 686.2137 null] >> endobj -1654 0 obj << -/D [1990 0 R /XYZ 56.6929 273.8361 null] +2012 0 obj << +/D [2007 0 R /XYZ 85.0394 674.2585 null] >> endobj -1989 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F48 1223 0 R >> +670 0 obj << +/D [2007 0 R /XYZ 85.0394 255.5751 null] +>> endobj +1658 0 obj << +/D [2007 0 R /XYZ 85.0394 232.5802 null] +>> endobj +2006 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1998 0 obj << -/Length 2863 +2016 0 obj << +/Length 2917 /Filter /FlateDecode >> stream -xÚÍ[ÝsÛ6÷_¡Gj&Âá›Ä½9±ÝºÓ:‰¬ô2×ö阉TIʮﯿ¤(Y2-[éh<c‚`¹øíbwñ!6 ðÇ‘"T9$Š25˜ÎOèàÔýpÂ|›QÓhÔmõ~rò¯1šëÁä¶Ã+"4ŠØ`’ü|øñôÓä|<qEM†#¥iðþòê)>^]\þðe|:e0¹üx…äñùÅùøüêÃùpdLÄ¡¿ìpð}¯'¶“ïy=¹üp=ücòÓÉù¤@wŒ -+ý_'¿ýA Œõ§J„‰Ôà^(aÆðÁüD*A”¢¡ÌN®O>·;µ®ë6ДˆˆŠx¸5ÎŒ£_ƒM¢6;R61Ja€u\gUM+V±Ìë´¬ì0切F\#™t\&wép$n‹Ù³â!Ë¿!¥ŽofieË,¨–óy\fÿó«Î÷lõ´ùv¼‹k¤£-Í aQY÷Y’VVOJE‰MÒxz‡°Ñ’‹[$Ö¤(×;;6;š'
¶a4˜¥·õ¼¨¬ÌŠ7[Îs¬É*|ú¦,ˆonÜ÷Òû,®SÀ Azõ8¿L\ã<ž{ÆNÆš1ÅÝŒHf1|sdRù/áw|Í]ñЈ”7<ÓõAáü¨Ö”k ùmQÎV@?–O§iU¥ VÃ0°ûê'“OHYã5Ó»8ÏÓ±¸Fh -¶Y™}»óè¹VÎ2€öõ[vŸzI†–Úœ–Ùb´U'(gÈv<ä¾[Ⱥн³”0x¸Ë¬ØJ«(Û:žUR<d®2ß`µ64xÿR>K±ÑïTÑ›eí>¡;]3ß6)¦Ëyš×^†EQUÙÍì+²ú;T3‹Ë¶!΋$³œz¥%`>•X¸Ik;FWFˆ“ø&›eõ#Æ -¥±1%-ïŒêy÷Û2†BÔh1¬åEAF -"5_1¯êÔÈÐÁjç÷±V¾ØôXg5ÂñŒDs!WÁKÒœ -=è|úmC±˜Q
Áh‰y6x²é±P)dØíOáQÐB<ãô¯eZÕ÷âI(d0þ¼%3è¡(dÔõ¹ü„Í¥w2ŽCåxÊ4…)˜€#0®À¿ü{8 -Uä]…m‡ÆòpS°ÂrŽøoÎ2ø@ùˆjë~‘ìÖUˆ·!û•¥(Q\Êei
ß×lMYz?eé#WVˆC)ëà~ÇæÏÚðeIN˜RQ£¬ó$¯h¿ŠÆR,h>€ÒùÙÕµM(¨
Þ]DíD´#í¡|ÕÁåšhÖgý‚N©n`z'”_‡rX‰¯†v™WËÅ¢(kLek,A¨0|9Þ«±nv8¸™$<Þ,"\ª64L®/x=È®÷>0vd<Z³¥œ„Tô…Xª 7T4ð -¼OWö›o¬%İûte·6)ËÒ5ØÿL§õ³°w†t´°+I¢Hô ®"X£š&‰˜6 KÅ8€þ’$zÜ úz4W’C€ìÕð°'ERÔ˜"|½-”ZA>6þòõbÜå‹ÜÃX—q^Ý6;»ÜC/²±ÖN!5!ïÉ`ÅJ”2˜5|Y$q¢¡j. -££aO -ÖXªg©À
#Ô„+§°L-ãÙ>¾\Ê
¨-Åùò¶Æ3u”57‹ÀÆ JùÄ nsè…_Row‰!‘‘V^Är÷`„&ྵoøý=aW‡:úŠÀX÷aÙôØa1¾$Šë°H›v¢þ]–UZï33y¸93’ùK1«À»jÖ¦_@ò‘×Þañ7c`á“m÷nЬ˜yjVŽh
É=· -Ù¸`DpÖ†„ëó±õ¿^ØýøÓËŸˆˆBd¸ˆ³ÙÁƒý°‡Ø»—??sgǺ.ⵄ¡éÙŒãÌ¡u.>ŽIhÑ!à{^–Ã×ó~ÖŽÈÇYÄLp=›ñÄÉk=å׳¿œ^^p¸Âû>A–‰Í Ë|…š†7ÁWP™Ø²ª`ÎóíX)mñƒšéÖ
&Å<Îò-‚Ë2шÿcµ«„c
¨ hX5ˆGÇ"*‡%O›‚¹#wçÕîØŽ/’Ï{šŠ_â:ˆ—Ú‹hîg‹ ò-±Àç"-íè®5‚l‰®Îô„±§ÈÐ2qÌ$Ef@¶7wóÄÓð’¹'bH7ÒÀ°YÍÛvO9¿ÒjËî86ÍÖîRùÏ™mÇ$Ÿ•—©öaÙôØn¶`˜œ÷-¬ÓµPmÐ8[ºë¿öý*a£åÚ´û2º½oZCµå¸®ÓùcŠmSàseª¾ÏͲÆB’U[oÏOŸ€áÆ“v·úíÓ]ÉvW¦í›Ý2²àß0ó´%'œ-Tîâ²-]~òŒ’Ä[îößRØ‹Xî·l7¤¸ .Ï
á«ëÇEе±G¶v:‹«ÊÓfÍ÷G¬»Iñ¦·hìµm›µø›{oÝ´›Oá¶ "¾î¹}ŠÃ×Z‡^‘I«ÿ-sLÛM psŽYÞ0w06ŠP)äZ‡œy+«~Û$‘0pÈ&ø`¤) ÍÖ_!ÑAoÎüÒß<~3NDÝ‹kËjï
f½…åeácT=EÃÿ:Ê7ëÈþÀ&É_endstream -endobj -1997 0 obj << +xÚÍ[ÝsÛ6÷_¡Gj&Âá“ îÍíÔÖId¥×¹¦´HÇìH¤JRv}ý-° EÉ’iÙjFã\‹Å‹ý +£„‹oA³m¨)CBÁ…Cí+çÚCUÇuVÕÙ´Â÷³å|¥U¯TQ£àn¤fpÝ0FŒRÜöC#¡cT·ó†#FéÓ>Þ˼NËʳái—ÄH&—É]: ÁƒÛb6dÁ¬xÈòoH©ã›YZa¹ZÂÇù<.³ÿùúU§K!X0mºÄ¶wqtœ{K3HX”CÅ}–¤•Õ¥‚‹¢Ä*i<½ÃZXéÉÅ-ëFXíž‚„êŠu
fém=/*+³âÍ–ó¿d>}UÄ77®¿ô>‹ëFš ½zœß +'ñM6ËêG»Øü™à4I2Û8žaͼ¨Ýòƒâ<~Ä"<ñÙYN R2ß=ŽÎ–Pùm7œÿ¹K}…xÛ\ͳ$q¨qÝ.[Nÿl+,ÃxÒÔ}-þ•¯_?݆•EVkV#µQlÔÔ,‘jQ䉳=HFµp/¸ôlÉ©í¨iî¬Ë–QDhW*ñ Ù->ãÅb–M!©]³‘B€¥íx@ÖÚÚ+”ÆZö´¼w2ªç-pד…Œh!ÂÒ`Ê#¾È•IA$ø¡5OöªF´vöí(°òŦÅ:«Q3"ðôü¥”«ØÂt0
#ðÜFƒ·IÄØko_Ci¸›J?m
]pɃ34,nYm†Tm´V]¿m46 +^Ról¬ñ„eÓb'@ÂÛF´ +mzU†p.UǼI;³ü>žeÉjŸd¥®EùöôUö-ë%ÎÀ3ØwFuÄØï0â=±ˆ”šðЈÖ.¼ÿd7àtŒ‡Jöµw\›ÍØ`/eîˆzÄæA@‰ëžhA +E“-œ.ë»Ïåã8ý2“Hª`üåámU”™MïÓ•çÞk í>]i¯
Ò²t
ø?Óiý,ð!±&3C´æ}!B51Å´]*Æö—„ÕãÓ×ãÙ‘ôˆñ„€6bº/b +Œ~»-š¡‚müå·‹q?œÿ-rd]ÆyuÛì{ì²½àvÄ>^pD¶Q؃0†H ¡¼ÅéË"‰ë•5äàJ?¼gy<Ϧ>ðu<Þ†¯—üÈC +¬¡aOH!"M¤MHaw +íŽ#Ø\ŸæÕKŒ6òVi^?]G¨#†NÛ +¬'"ZjQ˜¸´¬\æÓØæUýáÀÐX•‹‚¦EG÷Á´#íc +±«1¡êÁ4DE‚µ˜Ú¼”î„Ïn"ô ‰r¹§‡•P{Îø<šŠ‘G+}a¶°ËUvÐaG¸#†P„„ö; aH¨;¾4‹ÝáÓ4¶ËŽ”‡Â2™ˆÓ}ìEÓb–<Š 9R}‹›k¢™FgaçõÒ¬ö£ù¹ 0!hìãræ,¦¤þ€¾Äø¨ííræÉyõÐ Û½Ý îíBËy£‹{rªŠ‡µbµ¡+ÚÃSŽ +N¨E»\ÿ.Ë*÷YŸ\o®O dþ2Íʯªµ±¼¶w_üš$®c²M[Pµ˜yªZŽh•É=·*€ë¥ÏwS"µb›Êd9[%±Ïue²{9Hx%lÄ@!#³½N¼ZÛ:óø6Õø'3’Ù㘥Êhë®ÏÇÖvüza7íO/0" +>â"Îfs¶`Ø‹¼—?;ˆãõÃ,¢$ìÛIb‘£¨Z_pñqü¬D‹H¨àó²<Àž÷3¸®$>^ËTH éÙfbšA©jíåog9½¼Úö +Y„è3v +|®´Õ·¹YÖXH²jëüiác1ÜŽ +ÝìÓÝêv·®í›ÝH²àß0µ%'œ-Tîî³-]~òŒ’Ä+ïöŸcØû[î¸l·©¸ .Ï
Uá?׋¿Æv)Ù¯ÓY\Už6k.Î?â·›/‹‹Fe‹í#w?‹°WßM»%¥·9øºçöU†+Cí'2içË2ƒ©Ã'©—å
Ë£a{gÎþ +endobj +2015 0 obj << /Type /Page -/Contents 1998 0 R -/Resources 1996 0 R +/Contents 2016 0 R +/Resources 2014 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1983 0 R +/Parent 2022 0 R >> endobj -1999 0 obj << -/D [1997 0 R /XYZ 85.0394 794.5015 null] +2017 0 obj << +/D [2015 0 R /XYZ 56.6929 794.5015 null] >> endobj -670 0 obj << -/D [1997 0 R /XYZ 85.0394 769.5949 null] +674 0 obj << +/D [2015 0 R /XYZ 56.6929 741.8766 null] >> endobj -2000 0 obj << -/D [1997 0 R /XYZ 85.0394 752.4085 null] +2018 0 obj << +/D [2015 0 R /XYZ 56.6929 717.2979 null] >> endobj -674 0 obj << -/D [1997 0 R /XYZ 85.0394 644.9651 null] +678 0 obj << +/D [2015 0 R /XYZ 56.6929 609.8545 null] >> endobj -2001 0 obj << -/D [1997 0 R /XYZ 85.0394 622.6539 null] +2019 0 obj << +/D [2015 0 R /XYZ 56.6929 587.5432 null] >> endobj -2002 0 obj << -/D [1997 0 R /XYZ 85.0394 622.6539 null] +2020 0 obj << +/D [2015 0 R /XYZ 56.6929 587.5432 null] >> endobj -2003 0 obj << -/D [1997 0 R /XYZ 85.0394 610.6987 null] +2021 0 obj << +/D [2015 0 R /XYZ 56.6929 575.5881 null] >> endobj -1996 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F40 1146 0 R >> +2014 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2006 0 obj << -/Length 2516 +2025 0 obj << +/Length 2524 /Filter /FlateDecode >> stream -xÚÍ›YsÛ8€ßý+ôHW
±¸}s|Ìxjc'²g*5Ç-Ñ1g%R);Þ_¿
‚dQ¢d;U¬TE ˆ£ñ¡Ñ
4h2ÂðŒ„DÒP3R†#‰MæGxôÞý|Dª2a](ôK}¸=ú×S#ƒŒ¤rt{ïµ¥ÖšŒn§qt-ààÃåÕ™9©ÀÁÍí±âÁ‰ýïöòæöòôæ84FÓàô—“O·çcWJz]NUýôúêâòç߯U×W.{|~q>>¿:=?þûö×£óÛf -Ð%eù&ömV‰°dbÖÞϪK4Ýí$,Cc°©ÁE”ÌV˸ß\ÃäYS*Eà4’2¸/«» «&…¬tÁ–ÛÐ[Ãê‚}Ù”`¤$¯ËýVé¦äšÒ4Ê -ÛŠµªŠv{[ªD»AÙÚZH¥äsþvÑ‹à)[ÍJ¿<fyæ2ï’ËKÒ¢Ê+œÂ77P©†gßø“þ“Í’õ -#ÅÚîDéI9`–#
‡‚–œ#Î]c™/^ Ó:Ù<>¦'çûÒ$ïI“j¤ê9â -Fלxx€¤ÝßôÓ<{†Ó_2qìVZc•íí$êÉ:`ý$NûL'ÅÆc<¢û™ÎœKO¶´MHA¬‘PLù:ùZ…Ì÷T@'6>n mÖsV¯$ÑÒ£÷!š~ZÆËøÛ[:{ùO<iœ{-ÁU´¤9?Ön*É“Æ"´'ží“à
ï½æ
/öÆ+¡—t=\ùªJµ–¤â0#pŠGÊîϽhÂFT*
†˜ÁqD†ò-[Š:Ë¡Q¥jbÄp¼? Æ8ø£Ùt}„ÓG§Q:©2n -8'å°&õ´>’¼˜Ð$D࿇#•»´¸¥Á¸†q*vÃîZµ ø×Q3¨j"ÖZ!Ž×^&Ö&à“¤[G7Ïó»Î7pt¦Á™~•ñܸPˆ˜ó¶‡·Élé0¬õÁ a[*¶iZ
‚…0œ¸Í+œí“ûçëUñÈ;Œ‰•,x}½ü…J5ƒYbOɵ-Éã´@ÛÙyb
™žâPÛÈzJg‘ô=¹=ù*zN,5tz`å8碇ž”àñè]¦oR½êê#N;ö-DOº!C0ÖQp„•0ëߢ{Bô¤2DÛMÆIDN¡Xy»Ãg/¦°y/ïݶst{ª=ß—#yWŽT¶Ýô`dМ•W½>9Ô“@—hî+÷°ˆ`CVC‘¤¬Ï(ÁÜçwÈJ~?O²!ÄI©ûü1–ˆÖñÜ“/ãqüí
´u6Âq;—¯'×€—/5)Âz2,c²†ï<Ÿ/×€µÏžß”Ð=®˜jj/m+¾|…ö]ŒÏ“kÈø`£§1ëqÂTAÚ¨5|‡hßáø<¹†¼xa‹§ûrThÄo.unVûÝP/¾?6.q¶]Gä¶Åxºh+éÕv{ÚÐ> \"®¯n‰R¾–æ– e‹Òò½Xî0ûÑ"
bвƒBfÔ~Ö@‘ÒBî™eÀ+á…ÌX2Çy6{¬§bß(Y˜%F³ë>èG†ñˆ4˜&Ð"«CÍD@y¡øfˆÌ~¢+˜U>uÝ:kÂÀ~ßÃÅûH"z.+ ³QZêv›Ÿí@Ö‘!epsñ4ýÜo]ÿ޽Eè 7ÜJB9¢÷ÜPªÀa(â!”#”‡#ô„°‚ácXô\IZ¥
1ÕîÎÛªÇRãñ!ZØqm¾3ÔõD0P•$˜!ê˗¨<¨|+POÔáÕÚ~ùbvó4Ј&Î1_}9»þxrye?@ç"Ãs?ζÒþüJɾ¾•´ßºô|]¤1ÂTV^ø|lÿ¦ã÷‹c!‚“ËÿØ/5Æû] ÛÚPjÛ¿.±µ÷Çé‰:\ž’Û¯]zœ6übEœÏ¾¸<‡òR/ΗË~ŒM¥ýéy‚½•ž§å"»¾aÇ£^´ûþ%Oû·M\ÁÙÜÿ’Ú'D•@PYŽ˜ûž`¹ÁÃ^73ØêVÅ<ÙÿEoendstream +xÚÍ›[Sã8€ßùy4Ucî—}£˜ejº³Õ5—‡˜Æ³‰Žhö×ï9–+äâÒU)"˺}::G:2¬Gáõ¬"T8Ù3NE™ê
''´÷Þý|Âê2qS(K}¸;ùÇ¥0=Gœæºw÷´e µ–õîFDÿuöéî¢sE#MNc¥iôáêúÜç8ÿóñæúòêçßúg§FFwW7×>»qyÑ¿¸þxq;g9Ô—AuÝÛ;¬T×¼½»úx{ú×Ý/'w‹„ƒdT ôßNþø‹öF0Ö_N(ΪÞ3<Pœã½É‰T‚()D“3>¹=ù¼h0x[U]MJ¬¸éÅŒsÂ$ßÜï‚B·uÒ)¢%¯z®½XN„rí,pÌ‚HJ³žQŽhÁE5Ÿg/ç³|:MFÈjð ³$>´*ÛO†óY‘>%§±04ú6OfiRø‡‡|† =?¦ÃGŸW>Ö%‹dö”Ì|z”ߘ ӪΠÃΡ—˜1â”âUwÉ÷aRÔÝ eóÉ}Õˆ`Qþàó’ïiQ¦ÙWÿäÛle„‚ŒðÞË lM‡Å`Õ×Q©Ÿ éTT¾LëÌA6ò‰áxP¯òžëù§b~_$ÐwVŽ_–{òº?ª +WØAmw)¶ „šß +&š‘cGŽ¿A˜ÑŽt͸Fó„ˆÊýø«/ó È3ÿ"ù>ÒÛÄ×ÏiùØÖðújÓ‚-jõŽSpO=Š%zY£UqSmIH$¹ÚgÄr¦ë&ƒïñ®½0*‰ãÕêÁªù´LóÈJg¢?©¢E’àƒõ00w”ÃY:+„0)š…«*œ8lˆ@µÁ}>/_Û!$‘––¶†8Ê*‹â_ξö|¢˜‚Eù8¬°ºtWÛÝ +<I2° ÔÙ%‘VmRSj !ÕÕÖP@@T²Vc4Ìg^½ŠižêÌJk諳]AR¾RÑF%áB5s<ÌçY‰?.üz!žÒ|^ø0>…×…°\àyÈk†J°ÓBõBû>‹
ƒ$TC“qSàPN@P\fùv' a
:G]ã.éx>KºÀ
LšQ"¯oÔÑCUÝO7X4t XnE°j¾\¯ œQb´tu§¥‹%—Tf¡ +à‹«)–`ö—Uß´ª€ï}9Q«æ€*ÀÇF×y™ü†ePÞ´XgÒ=¢C«Fnšó§tÔ¸º ˜×ñ‹»ð™÷ƒáŸUÙ‘5Ì'ÓA™Þ§ãxEOKl‚ÉÚBcÊ;[H,R°v”¸C¢3›Æãº…ÿ™äÿ§?)åY²¶ë¯³ÆAÓºðOÅ=?¦Å:o¶T¯Q¤³yùŠ×Oþ^3°EáÔšºèzßÀ`Ãj7'[‹™c°œŒ~eÌ%.y=çóqåó€Ç¸È}æ@òyiVÖy¥7oJ…Æ*5ððM8é?a–n°²áÀ5@›V1Õj]H…É,/}â>ñ¿Õ~'sAu”ž²¨ª[´²ÎÌ|±él0\;e:L6ۻЖÊÞ5½ïÞdScƒ½Ó€Ønî”¶àXœ®ÆüåaÖO¾çY²Ëž¬\Qúþ‡•ªT9dŃ×}xÄ;NJÜÏm„Ù +ú¾ÿ@–ŠK퀩ÀK;)+@¿MGƒ2L—Ï;!|iÌkj…·†±1ƒ[AR-II‰…£@I û:áøÉbúF”è^‹dO–œ‡eÉÇ’[bé8Ö*Á‰´’p€#îkºYž¿À‰/zró +æpÚ4Lt¹e\¥l‰ß>*¸7¿P°#Ö?nà@£l—Cæ–ã}wÈWoп«½ù‚3?ØïY*º\17Љuf‰ß>ú·?¿@°c^¿°Ó³g:®,‘B.nunçCüd¨“ßï+·8›n$ +l1m%ÚŠzÌ + ›>ëx'Q©‰4N6D7D,ߊsC +Àzo€z€pG«Õw…ªãJ’1î¹úËß*%©6Q¿¿®¹2ßjq¢-N +Uí¸¡dT'êë—N½Ný^œ¨ÇŠÓZüÞÅm§é ˼+¾þr~óëÙÕ5~n.UÔ‡çn˜m¥ÝéU’õÊ6¿péø¢ÈBY®kÏ{ÑÇÿØøÏå©RÑÙÕ¿ñ»b+£þn—çXêAmü׬½;Ì@Ôc¥©%~ãÒᨵ%Ô0ï§/oú¿^ÀRŽe¥ˆ—³Y7ÄE¥ÝÙ‚½—ì—¨äÕ†™*¦×}¯N{`wýö˜¤³xøÝtHHPI„p¬'Á¶£n•‡%ÊrÓdÿ?ýÿendstream endobj -2005 0 obj << +2024 0 obj << /Type /Page -/Contents 2006 0 R -/Resources 2004 0 R +/Contents 2025 0 R +/Resources 2023 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1983 0 R -/Annots [ 2008 0 R ] +/Parent 2022 0 R +/Annots [ 2027 0 R ] >> endobj -2008 0 obj << +2027 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [305.1296 684.0956 384.9596 696.1552] +/Rect [333.4761 684.0956 413.3061 696.1552] /Subtype /Link /A << /S /GoTo /D (clients-per-query) >> >> endobj -2007 0 obj << -/D [2005 0 R /XYZ 56.6929 794.5015 null] +2026 0 obj << +/D [2024 0 R /XYZ 85.0394 794.5015 null] >> endobj -678 0 obj << -/D [2005 0 R /XYZ 56.6929 447.7394 null] +682 0 obj << +/D [2024 0 R /XYZ 85.0394 447.7394 null] >> endobj -2009 0 obj << -/D [2005 0 R /XYZ 56.6929 422.6188 null] +2028 0 obj << +/D [2024 0 R /XYZ 85.0394 422.6188 null] >> endobj -2010 0 obj << -/D [2005 0 R /XYZ 56.6929 422.6188 null] +2029 0 obj << +/D [2024 0 R /XYZ 85.0394 422.6188 null] >> endobj -2011 0 obj << -/D [2005 0 R /XYZ 56.6929 410.6637 null] +2030 0 obj << +/D [2024 0 R /XYZ 85.0394 410.6637 null] >> endobj -682 0 obj << -/D [2005 0 R /XYZ 56.6929 197.6003 null] +686 0 obj << +/D [2024 0 R /XYZ 85.0394 197.6003 null] >> endobj -2012 0 obj << -/D [2005 0 R /XYZ 56.6929 172.4796 null] +2031 0 obj << +/D [2024 0 R /XYZ 85.0394 172.4796 null] >> endobj -2013 0 obj << -/D [2005 0 R /XYZ 56.6929 172.4796 null] +2032 0 obj << +/D [2024 0 R /XYZ 85.0394 172.4796 null] >> endobj -2014 0 obj << -/D [2005 0 R /XYZ 56.6929 160.5245 null] +2033 0 obj << +/D [2024 0 R /XYZ 85.0394 160.5245 null] >> endobj -2004 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F40 1146 0 R >> +2023 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2018 0 obj << -/Length 3516 +2037 0 obj << +/Length 3512 /Filter /FlateDecode >> stream -xÚÍ\moÛ8þž_áo§àÖ,ß)âtó²—Å^Ò&Þ»ûA±•F¨-¹–´ÿþfDJ¢ÙJj7¨%ŠržÎ9Y6 ðÄŠPaåÀXIej0žÑÁ'øöËó}†u§aØëçÑÑ»sa–XÍõ`tЊ c6MþˆNþýþÃèìúxÈ49*M£Ÿ/.O]‹u?'W—ç¿ü~ýþØÈhtqu隯ÏÎÏ®Ï.OÎŽ‡ÖÆÆË€‚{3ÂA~äÍèâäæø¯Ñ¯Gg£†IF®þËÑÑÁxýõˆac5x„J˜µ|0;’J%…¨[¦G7G‚Á×jhhRÆ€7ƒ¡ˆ‰T*Þ>›‚´þ‘1b•Úœuh)à -RPšP©L#Î)X -šÿdå,YŽïA%2Ñõéj~Ýh;ŠæÕ°œy™¢fšMÍ -ãÑ}ê¾0ܸ‹ÓŸžø[‰ÓÃ<^Çœ°ËÂIhŒ4‹’ÉÄ*‘†PQ’OÞ³7vXÞûž´«¶Mjób±tO“"ݘŸWóçvÐ:ªÙ†ÇÇûÄ7>&¥{H¿ÎÓñÒ±¬âuα
ßü$HcUú§Ûꛉ”pïÅ¢kòŠº¥Ñ$ý“Rž§|eÑí7׌¬:‰…Ò6–0´ÿN`ÕäOÅÊ1Ì“ëTÌ—Y‘·I$ 1ºÏJ7×,ñ“U+†ß$w²|’“aµì!£”XJåºì¨ÛiÅûMÜÏ8WàÀã¼ÈÊ"ÏòO¾Ãr™ÎæËí»1Ôôý¶Î³iÚp"”í±iÚ(b¥vPŽø…Å*' Eýûptlq¯ÅQ="pí~|¶§WüV=…Ö”H*EªZk©³q¿%3P3CÑåVϽ¸ºÜ$¦ŸTá—!¬ò°H²Ã! Á‘”–÷ ©8n°o—ët‰^³‚ò\ÅÇ~(?¶ŽÖA·\dµVÎÓÅ]±˜í2Xä›UIXûq”Ø™ê”÷·ÝF¹À±ÇÔû|²òJº,ê ¦XÖ¶µÈ—.Xœî -?ÔÑKÀ§u9ô;ŒR˜Q¹Â`‚Y¾„ºoYé¾$î5èàÚÑ™â‡f•Aç<}tïn©®Õ¥#´ª•Ç+Î4›eË$ðÙþCicËñ"›/!Ù¡\äöS…·sUCB!zœ‰²œpem«]£c¥¢l–«å‹,àÒÙZ¸¢·ê8”Ñ6Æ=ŽCÅ0•Îqü2]¥ç)„γ!£››oå3ÜÇÅØUYêiúûü
éÖ2ËŠÏ»J¸ø·êP”–Äè>Ô1Òê
|õ‹ñՇŷ]û›…Bš˜š¸_¥a)7õ÷y^å¹zÛAì5Xñ›EœX»Q•’Haù¦Ö>U}@Tƒ¿Y[‘MlMOü£'2–Ρÿ·J"“é{—D÷£zzyssvâ0{H¦Ù$pÿ>ß c°Ä7«œLC–ÍûL*§¸±k0^}ÞAˆñÆi:Ù‰`°ºC!È!ÞyÎþ„d=¢Ai²èóù4&ʳàeúé%i×04>Åö¼ÊÅRךå˜=Ý -ѧ´¼ø3ÖØç\3rbã8î¾dÖ‡!ŧÚ#”!`÷‚‰q}¬b ³±Z?u°¨ ‹¥ÜÎ!ì5m”> ‹5Å>+ãK[ã‘÷ó;4.n(‚„ݹ]É1÷ŽÈnC±‡]ÉáÒl°;ë`Â¥Í:»n«H¶tµK£5%jøV -ÀÙÚ÷&„Gùjv‹÷Ú¬5lûRuâËã}Q¦î{h -ÝǤ> ×Ûtù˜¦y—Ƀ&c³\I8— ]Bƒrs -z -*£sw]L[Çd-ÑTš
Ç”|FUÓîÈCšgÞ[Aãÿïh»Lj£·Û:¼" 0§d -`°n!ÔÕ€c¥*€±°yŒe$4ºñ7W˜^¼»òe†x3U.³±?ì;<j™.Êá‚Ó +xÚÍ\[oÛ8~ϯðÛ*Ø5Ë;EìbN.³ì&mâY`13Š4Bmɵì¤ý÷{ŽHI´#[ÎØ-‚j‰"Éï|<’6 ð(M´åv`¬$Š25ÏNèà|ûù„ù:úÒ0¬õÓèäÝ¥0K¬æz0zdÅ„Æ1Œ&¿EšHr +hôÓÕõ¹=rE£»Ñ©‘Ñ{ügtu7º:»;Zóèì_ï?Œ.n]-4t%¾ùÙÍõåÕÏ¿Þz7×®øöâòâöâúìâôÑ/'£fá$8ú/'¿ýA˜ë/'”«Á3¼P¬åƒÙ‰T‚()D]2=¹;ùؾVM»@“2¬ +Eg¶ç?Y9K–ãG ¥U&º=_Íoû!m[qÃ<Ëy‘—)²Ól²s(F©ûêpí®ÎÿöRÀ_Jìúñ<sê.§£1Ê,J&ߨDBEI>ywÊ"\`XaùèknÈ®Ê6¥Í‹ÅÒ=MŠt£^õŸXA먞6<>?&¾ð9)ÝCúužŽ—nÊ*ŽunÚðÍw‚2V¥º¯¾™H ÷^,º:¯¤[MÒß)åy:ÁWÝsÅ8U§±PÛÆ†^À)¬êü¥Z90‡‰r•Šù2+râ–‰4FYéúš%¾³jÄð›äîC–O²q2¬†=d”K©\× +ukxp¿‰û'ã +xœYYäYþÉWX.ÓÙ|¹}=†L?lñ|O»¦
'BÙ»¦"VjÖè”wX¬òq<ê_‰£S‹«-ŽêshWäÞþ"ñÛõZS"©=¸jA¬¥ÎÎý;™ÕE×[=÷"ëZ t“tš~JƯÃ2åq±dÇÄ%)-ïÁRqBÁ¤UÈܦKôž˜wà0>öƒù±u¸¼å"«™9OÅb¶Ê`o˜–Âm˜òn$%…ðœê–÷÷ÝÆ¹Â³ÛÔ«}²òD]uxS,k[äK8NwÀÛüXèBŒkõ;R·ØŠ.8Íã>cÊá+ÙÂ{WŒ?ï(^¡ GÑ»¹ßbžzçDÛà‘b 1þœ.!n_(£›<uÅãb6+|S'/ïÖåÚ0^aVDå +à +fùZ@ê¾e¥û’¸× ‚+G·ŠšQ•óôÙ½»¡ºB$LGUÓÇSgšÍ²exoÿ‹AÈ´1åx‘Í—–ì W ¹ÃÈð=W¯ŠcH/DSQ–®¬mù5:U*Êfi±Z¾Ê.]›¸…#z»D
AdÜã@T]PéÈÏÓUz™B ý$172º»ûVîáF®>`D¯Ê!«m"àó9”[›É,*>ïr,áàß®cQ†«û˜ BZ½°~5Âú¸·cà +ê1Ì>ýúbö³l:ÍÊt÷s•Ñ¥;L¦c²–h*͆cJ>#Ó´;ßÄ_ò”æ™÷VPðìëÜ.K'A¡Úèíd„>µÔ$ø—‡“±–8Ev‘Aä(ahM5!í4uªn'ã¤ïýä)À +Tr°`š”Kp¬FglØ4¯Î™D,¢ò±XM'ø,<(sk|îC
¨œú +IÙ‰¯$¼u;]øÂ,
W‰§Øh™Ç×K†"»ð…5¦ahMµÊ•üµk!Ó›ˆ| 4K˜áîB2K“ÜÛWf$šq¾±ÅïÜãÆ¾‚÷Çòqk_±ÐÛW,_·¯ø±±¯øâ²dêÊÝ BìnaàïSºèÐÅæåŠºàÁf`]Œ˜_îÕ‰ÃPäK]pHÀô4•¶9u?øìšMëÆc[*¦¦-m.ÔÞë½Tm Ä_èO5jÔÄÀµKH‹ éÀ´È„Wñ^\Éã&†é@6‚u« ¾/(Àkq¥š{ŒŒÈS¼bB£;–…ùçÕ»«ÏªÊe6ö›~gE-ÓEÙ¡<à¸ë³~×yqøPâð}\‹«Þ’öümí^¾ÎÓ…È]~›§ÕU%ÊëÊéˆM,þèÚñþzþAv]ౘñ°ÀµAÅw¸ÕŒž+¢V VXÕŠÕ¯«·‰KÙ¡0ñúÒuÛ@ÖmL *î¶.Ô.*ë×HÕ{Iý5ϾvI¦è8„ë
98šób–d¹^åßÝ!”eÄĵW¼<®®u¤Eâd#ƒžüñ²ëOw«|^-Ël’º—6mæ1o^«‹ŠfÅd5‚q¸®Ro®tíTôPL§Å³¿ˆ¥ýE5V¶æMÑœª&,üG×40
qÛè.:Äpˆ¿µ¬è?»#W +ë;™ßN[>nœ¬gá±{:}¹Óƨ%þ`FÅ÷sbjÄë|Aw«zôˆÍœ†œsÜ|h½µ°k^Ø%pˆd!ˆtæüÛ쾘b¬iytÀ¸ðÁê—Ìbë¶ÃÆ ŠµÛ–‡o·P0ð0ÞöÐg}EÖP +¡Þ¡ü@Rm9žX'Öúµ-Aß0¢í…(,lïj[òäÂJ
¹°Ræ%Tä¯o•\ÖŽE®£LäÒ0w%{¸¥5aÒ߈üAä:›bv»¿É›”Ød²C%í\åD¾ƒ?e +·cÛ£éVìs¯¤’Ÿ²|ò'Ö{øw÷™?nj#²r‡Â(Ž«±ã®!›¦Gc’.èuûgEž¨±1ˆHÇËW(-@ã-+k¢ã¸'Vc°qócÝ**Wag^-MÚ’–˜ fåc¯tm[U`q,•ízy«2ˆpâà"P·Â€ùÛ¿?HaïǘAþ‰u¦„¬Ö™"J*!Õ2Ãâ,³æmÜhÛ½7çôå²û +Ì™¬‚§S¹àÞërœ3áâ§:T‚U¨åÝ¡SšX«e»;Õ½!õ¨wº·\@OÖÊþ˜/ô®äF~_eðÛÝRå0ò}W>ƒ·ÊôX ˜©üÖÊç^._5ÕÂ-± nì¯2AU¡cyõç—LVršuþ5iòKãB~ü(‹!eñ)[ýn¡,Ão»›²xW ¹9ÓMYÎÌ!þN”
ØpàŸ`@ï†kt›–(.;ÿüžz}ê¾ìßþï¤!€Op†¶¾÷«`ÅÃ3eU§áŒ¾8‹ÁýD<óÕ‚±ÿóÿ endobj -2017 0 obj << +2036 0 obj << /Type /Page -/Contents 2018 0 R -/Resources 2016 0 R +/Contents 2037 0 R +/Resources 2035 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 1983 0 R +/Parent 2022 0 R >> endobj -2019 0 obj << -/D [2017 0 R /XYZ 85.0394 794.5015 null] +2038 0 obj << +/D [2036 0 R /XYZ 56.6929 794.5015 null] >> endobj -686 0 obj << -/D [2017 0 R /XYZ 85.0394 328.1878 null] +690 0 obj << +/D [2036 0 R /XYZ 56.6929 328.1878 null] >> endobj -2020 0 obj << -/D [2017 0 R /XYZ 85.0394 303.0671 null] +2039 0 obj << +/D [2036 0 R /XYZ 56.6929 303.0671 null] >> endobj -2021 0 obj << -/D [2017 0 R /XYZ 85.0394 246.6387 null] +2040 0 obj << +/D [2036 0 R /XYZ 56.6929 246.6387 null] >> endobj -2022 0 obj << -/D [2017 0 R /XYZ 85.0394 234.6836 null] +2041 0 obj << +/D [2036 0 R /XYZ 56.6929 234.6836 null] >> endobj -2016 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F11 1437 0 R /F40 1146 0 R >> +2035 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F11 1442 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2025 0 obj << -/Length 1351 +2044 0 obj << +/Length 1362 /Filter /FlateDecode >> stream -xÚ½XmoÛ6þî_¡60±|§ÚÔi] iê¸À†®™I„9’kÉ1úïw)™rd{Y‡!€MJïŽwϽ8$ÂðG"!‘ÔTGJs$0Qö8ÂÑ=¼{7"· 8D½YŒ^]2i¤%•Ñâ.• œ$$Z,¿Ž%âhðøÍìêžÄTàñÍb¢øøµýXÌn³‹›I¬uBÇï__/¦s‡’ÁA÷Ä¿øtu9{÷eî|ºrçÓËé|zu1|[|MÝÂK̬õßG_¿áh wý0ˆéDD;Ø`D´¦Ñ㈆g¬}²ÝŒ>wƒ·ÍÑ!§qL¡‚û0â„×ê4`Ðê—”!míì+ ÖˆÀÄs„5ÞÇÄïã@ˆ@<Q‘IFY‡_S^]Ò¨²8Ü -Ñí};õVhy7$T!&Iâñ
—„B¤pçÄ2˜Z5Ä4ˆüϱ‰ñ1HSX ”Hñ‘í‰ãÅ ¢ô?AŒ¢DÿŸüœ›ìé¥ü¤Øñ“bÚñÓ>sTËLþdÜËM©æž¦î|¶Ú.ß™½ôž€NÊóŸ -voÊÂ}§î++‹Âdµñè/o¯½€ÖXXeÿ‰1PO¥«Ò·?ƒÓÂ}Ï.>^»UgªÛ>šªJïÍ ‚î#ÿsdÚós_dÏUm{FauPµÿÝ©Ö"5b -ªhLª_íŸU}ªà6£‘-S–x] -ô8Ùv$ ÕAR»VI˜@ahråãb~›¯òÚGg—׎¹2컳|Vazy’ À¶ÂøFêªW51±„SŽ4'¼9ø±¬lu¦ 5XWÕyf1%m%¬ÜÛú!õ¸qyâPéSš¯ÒÛ•q/!LŶdJyºd2%¥ûûXqiOÕª*½©ÛõºÜ4ùqT)Áà~Îè”j¯Ô; z(wE§Á{Á4Ùf›‚¡!é'zz[6¥Ãö#ë[6Áã÷Ëšœ7ÆÆ·08½}ãE>A÷ahÄ6a°«eÙ ðÇ×k“úCyÑÂMu`Ðá(E"DFØpÁ‡çEŠCÔñ$èPM¾Ü-ç¿ÜØÏCÝ„J¤Nkv½a #H&@èžâ…»;ã2¤2ìö¤â¹Ï>
9Û[“¥ÛÊKS$ìú± -e±mßMå¬Wiö|€mcÓ¨ýa?à_µUò§ÿ°ÿŠýu˜$t8RTÙêko”õÁÉsJbD™¤¶ÿ
³‡+½endstream +xÚ½XmoÛ6þî_¡60±|§ÒÔn] y±]`C׊Ì$Âɵäý÷;Š”,Ù²³,à "¥ç^x÷Ü`ø!A$fšJs$0Aò4ÀÁ|û8 Ö °z¿¼›0h¤%•Áâ¾¥+B8ŠH°X~^~º¸YŒg£ +<”h +‰‡ï§WÜí—×W“éǯ³‹‘âÃÅôúʽž'ãÙøêr< +µŽ(Èó–/;_X!/9_L/ç£ï‹Ïƒñ¢9@û3ëýÁ·ï8XÂY?0b:Á6ið4à‚!Á«ß¬óÁm£°õµíÇ*X +Œ8!§:¬ú%eH[?»FCÂâBÙ<pްÆû<€ú}g(bLJh$eU"~µQy7¡m¤BŠG +´[Àâ›±Ãt´Q¸ä̃~;¥%ò€¹É–ãÍÆÃh1Sšj³
óM1 +™bÃ4³O>,òä/Sºwèr«|m6q™æYù—.S/˜äÛ¬4'äN `*$i!he³XçÙ²p¬)óž“p8+rQ¥ÿ”B:EµÆ¼Ušß÷)UˆIRǧ¢~RÈnR¡C +sà°’’íÔ¿NŒGˆAÂJ HŠ×¨¬%N3GˆÒ +z%úÿ$èÌ$ϯ%(ÅŽ Ó† öãZbÒgã>vxJ5÷<uòÉj»4~göÚ{ˆ +<>)_ +jgaåeú'Æ@“®OßýtŽ3÷œ^~¹q«ÆU·}2E?˜3ݧþmlÚtßf_êÛVFauзÿTí‘1m4¤ +aÕí÷G}Ÿa‰"ªU`û”%^SNÖ3IB{T»°ó 1 + Æ0ó§5äü.]¥¥ÏÎ.-se{òpÌ&ò¨Åtê$B‚ÀÒ·?x]û*zÊ!$B",™„ss¤9á•à—¼°í™B%”à]Q¦‰íĔ԰p_ËÇØãvÆÕ‰CÅÏqºŠïVÆ}„²êqÛž)ÅùžÉ •”îÏcÕÅS«"÷®n×ë|SÕÇI£Ç9£¯0ª½Q€â1ßeSU›NÐYÔ-ôø.¯Z‡H6&¶m0‚‡ŸšU5ÙÞ@?Ã@z[úɆ|îÓP©Ò`W˼QàÅ×k{¡4«á¦8pèð2…p¹°ˆ¸àý7F +Û¨ÓEÐ ª=Ù-g¿ÌíïCÛD€ +¡´d\w¹¹‹7Ë4{èsRœÕc9.úNKÔ’¼êÒãiš.OsŽiŒ½À¹êçjTŹ‹ß'Çl#Ð÷%æçÍ6¨»¶Aeœ¨®a?Ø—/Ǻ“ÆmZu˃2õc:Kò'›¥jw»5›´î\€§ƒ‰5"„¿TÀ-Ô™`Ö¨*˜ÓÛ£Pbè~XÊóFTÕN(á+‹”îšýoC93?¶¦(ÿa,¹Òpç‘â|,Û¨Ó±lPU,¯×eqLL ’€{ÊY³
ªÇn'š–Àö®á¢Ù‘Vÿ³Û3ýnQõš– ëÉeÍ&™Ø„Sk…þXß–{rmïÁ›Â‹¬Wqr|ŸÓ—Sû—~O„qP·Ë7ÿCaÿ/û×bÑþT1(Æ4©²1"„º×5U=¾ÿ
16.Éendstream endobj -2024 0 obj << +2043 0 obj << /Type /Page -/Contents 2025 0 R -/Resources 2023 0 R +/Contents 2044 0 R +/Resources 2042 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2031 0 R +/Parent 2022 0 R >> endobj -2026 0 obj << -/D [2024 0 R /XYZ 56.6929 794.5015 null] +2045 0 obj << +/D [2043 0 R /XYZ 85.0394 794.5015 null] >> endobj -690 0 obj << -/D [2024 0 R /XYZ 56.6929 665.5626 null] +694 0 obj << +/D [2043 0 R /XYZ 85.0394 665.5626 null] >> endobj -2030 0 obj << -/D [2024 0 R /XYZ 56.6929 637.9713 null] +2049 0 obj << +/D [2043 0 R /XYZ 85.0394 637.9713 null] >> endobj -2023 0 obj << -/Font << /F37 1014 0 R /F11 1437 0 R /F21 926 0 R /F22 949 0 R /F67 2029 0 R /F40 1146 0 R >> +2042 0 obj << +/Font << /F37 1018 0 R /F11 1442 0 R /F21 930 0 R /F22 953 0 R /F67 2048 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2034 0 obj << -/Length 1237 +2052 0 obj << +/Length 69 /Filter /FlateDecode >> stream -xÚ•WKÛ6¾ï¯0öä"š¤ÞÝS²iÚ-‚¢h¶§¦®L[ÂÊ¢*QÙ8Eþ{9R¶lÁaR3ß¼‡[Póc‹,&4Ì£EšG$¦,^»ºØšg?Ý0ÇÅ!‰£04›™§Af$ÎxºŽAÞ=ݬ>p¶à”$ O›QW’¦Äe‹§õŸË‡R´Zvwé2½ûëé‹Hš¥Ä¨Q‘šç¹x÷øë{äÎqù$‹¡«ôwªé«µì„®5ⱈ„QÂ^b,I^JØ]À(¥Ë·E!û~„Ѫqó±êµ‡â‹œä ORhÜ£<²H^>”¿cÙ0à -Ñ ÑK÷hh‘Y4k<hªâ¥;§j£:Gz8¶aè%ø2Fò8fÖêzˆ‚a !ã†XD]«× QºÚìgB'$ŠÒÔ1¿™‹H'°¿ÙÍbÅ&§üz¨@53h)%<‹óÿ€¯ƒÚë«y@FÂŒ%WÙ7âÍÛ˜%$äqô?!ŸkQ¼”ª–3H‘aäìº<ØŠ"hÍÔ4¹«n9t'š~cúø\U“ˆ%U¶¥¤.âùÇË N…?úªÙÎÄt¥é¤¬Ž¶5„V¸–â‹Dê3¥¼±%aËÂÄ‘-gê>¥Ë×ÒIÛα:ü@Ž;¨^v FÖ‘$\¾VºTƒv0õ Í0Û'݃1‚fß®¡Œu`íw@ÖÒ
ÀEª¶)×ý@ª
®¿áz44dOFíG!}„‘‡ËªÇU`ª"z”*nøÇLm•Z;‘µs5ÄH–§Ì±C"€F‡% q&Haš»ñG#S1`Ÿ†F¦ÈÅ NQ'wAÂr3Mw•¶%ŒçÂá¹°¥Ÿ÷Xt¦7Y±i~LáêÀ€¶¢Ó•O–äBÖ.‰-†û‹l4ôR¶ô\6Ï@¬eS‰zš6°©*¤Ï{Lß«OxXQMç:Ýb+ª¦×§¥s’™lÿ,ý8æÊc97äW±kk9µ©T¯HØ–]Tìjw¹Š¶õ$d÷WBìäN4ÁÍSkÆjeòEáŽÖH@À -–Àj`€[#yû¬¶CßHÝßâ^u@½VuÔsŠ—¹.ó*ÿðÀr–á¦oD5;5½Ú¹£NÚh®xß8}eW/U?w#zm…ÚíTÁ±^ö¬j<¨R[°ÖL0™³_ÞCÜþc™£ÔÌmšNE(±¿Uv¬ìdÏOŸçpbþ+ÝÏyÅÍŒG‘ЋœéH¹i!{Äøýœ# …%²$÷îö˜³ÿû(ÏC’3^Y;…¹|ÀMƒ4âª@¶õ˜z]V½¯#]ú3y©Š:)\:`ÒÚBvϲ;Í›æÎ[áSg—¯ÄþlЧÌ|Ÿ
¤jñ]ö¨üã !³Fó³w«c+½éM:}û¹à¢Q‡W–cı.Úä!ƒ“à°ÙÃWöoªqªnÝL$¦“o/„Ñô¾ur;Ñ›Ö Måý¸ÝŽáï¯É‡höS·/ùwóãÓøaæ?·àË|¼Í}ºy–àÀƒßm“÷7j¾Âœy ÛÛ4?U7~žëû•V¨›endstream +xÚ3T0 endobj -2033 0 obj << +2051 0 obj << /Type /Page -/Contents 2034 0 R -/Resources 2032 0 R +/Contents 2052 0 R +/Resources 2050 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2031 0 R +/Parent 2022 0 R >> endobj -2035 0 obj << -/D [2033 0 R /XYZ 85.0394 794.5015 null] +2053 0 obj << +/D [2051 0 R /XYZ 56.6929 794.5015 null] >> endobj -694 0 obj << -/D [2033 0 R /XYZ 85.0394 769.5949 null] +2050 0 obj << +/ProcSet [ /PDF ] >> endobj -2036 0 obj << -/D [2033 0 R /XYZ 85.0394 574.0823 null] +2056 0 obj << +/Length 1238 +/Filter /FlateDecode +>> +stream +xÚ•WKÛ6¾ï¯0öä"š¤ÞÝS²iÚ-‚¢h¶§¦®L[ÂÊ¢*QÙ8Eþ{9R¶lÁaR3ß¼‡[Póc‹,&4Ì£EšG$¦,^»ºØšg?Ý0ÇÅ!‰£04›™§Af$ÎxºŽAÞ=ݬ>p¶à”$ O›QW’¦Äe‹§õŸË‡R´Zvwé2½ûëé‹Hš¥Ä¨Q‘šç¹x÷øë{äÎqù$‹¡«ôwªé«µì„®5ⱈ„QÂ^b,I^JØ]À(¥Ë·E!û~„Ѫqó±êµ‡â‹œä ORhÜ£<²H^>”¿cÙ0à +Ñ ÑK÷hh‘Y4k<hªâ¥;§j£:Gz8¶aè%ø2Fò8fÖêzˆ‚a !ã†XD]«× QºÚìgB'$ŠÒÔ1¿™‹H'°¿ÙÍbÅ&§üz¨@53h)%<‹óÿ€¯ƒÚë«y@FÂŒ%WÙ7âÍÛ˜%$äqô?!ŸkQ¼”ª–3H‘aäìº<ØŠ"hÍÔ4¹«n9t'š~cúø\U“ˆ%U¶¥¤.âùÇË N…?úªÙÎÄt¥é¤¬Ž¶5„V¸–â‹Dê3¥¼±%aËÂÄ‘-gê>¥Ë×ÒIÛα:ü@Ž;¨^v FÖ‘$\¾VºTƒv0õ Í0Û'݃1‚fß®¡Œu`íw@ÖÒ
ÀEª¶)×ý@ª
®¿áz44dOFíG!}„‘‡ËªÇU`ªÂü(UÜð™Ú*µv"k)æjˆ‘,O™c‡D +—˜´¶P‡Ý³ìNsǦ¹óVøÔÙå+±?ôésßg©Z|—=*ÿxÂGȬQgÇüìÝêØJoúE“Nß~® +endobj +2055 0 obj << +/Type /Page +/Contents 2056 0 R +/Resources 2054 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2022 0 R +>> endobj +2057 0 obj << +/D [2055 0 R /XYZ 85.0394 794.5015 null] >> endobj 698 0 obj << -/D [2033 0 R /XYZ 85.0394 574.0823 null] +/D [2055 0 R /XYZ 85.0394 769.5949 null] >> endobj -2037 0 obj << -/D [2033 0 R /XYZ 85.0394 543.8373 null] +2058 0 obj << +/D [2055 0 R /XYZ 85.0394 574.0823 null] >> endobj -2032 0 obj << -/Font << /F21 926 0 R /F22 949 0 R /F40 1146 0 R /F41 1203 0 R >> +702 0 obj << +/D [2055 0 R /XYZ 85.0394 574.0823 null] +>> endobj +2059 0 obj << +/D [2055 0 R /XYZ 85.0394 543.8373 null] +>> endobj +2054 0 obj << +/Font << /F21 930 0 R /F22 953 0 R /F39 1151 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2040 0 obj << -/Length 3284 +2062 0 obj << +/Length 3283 /Filter /FlateDecode >> stream xÚ¥ZëoÛFÿî¿Bߎ,Šû ¹,¸‰su¯Hz‰»¢íZ¤-^(RáÃŽú×ßÌÎ,EJt b.g‡³¯yüfVbÀ?±#?Jd²ˆí‡›ÝE°x„¾^æY9¦Õ˜ëûÛ‹õ;/?‰d´¸}É2~`ŒXÜf¿z±/ýåï·?®ßÅbÄ+?” Ä#Ï›>~øpK\‰ÚøZÉlWïßÎIŠ|©„fžO×·w7ogD “Ò*†¼úùöúãr%à -°+!ü$¥]Wz_æ™?ô?ÒØžwuCǹ«I$½ÕCÝìÒÎΠ©ÑÕôì[þäêÍOí´‹&Ywù¦#¡îy4Þ!МKG`1¸CV_u0:-%…›ÄéëÕݧ7 ®aè±LŽVǾIÁ¼iöT´us ñi÷}!ÆV³RhAœÄnsûéßO5:Ò¾Ö"^Ä d:3³H½Ÿ®õ¯£6ºVã/¬2êñøgrqô‡nÿÝz
ý´o7yÓùuóíõ¾¿_3iíV·¾úifx`6‰ÚϪötúZYÅœÌÿ5“”~bŒ™7ÈÕ ñ•‚Ñú"L¦Ìêó†Â’³>±ñë|ÔɱžKÃaÿÁ*#BûJƒ«° -b¯vyÕÑ¿aзEõÈs¶*Ç».‚È7zg»qø%üsã_FAÂì}µA·c™í ÷ë¸à„_R;×FµÝç›âá`ç¤tÌVï7)5oÉxv±ð…œÃª›™óœÄbåXÑõžü!J÷8³t*¿¬ÒÝüF~’±¢mHz@ô&h¼m^î©UìØ—>ñâÚCÛå;êl1ZÝÞîı/ÓͰ)¤-VÏ?¥=Ûõa*ñ4\à’[Pòûú+6ÙE?o‹Í–›EYR«,vEwôܶ‘¥»ôѵëÊ…”6žI .›ÚsW´/¬«ª†ðCmƒÏC3ÑÂ{ÈÓ®b˜È0 ƒæ¶> áÈ6)ºÁ;Fpä`«Š’v‹Bz_”v“-µ¦ç`‘ãa²4ß9Á)‹Iù½¯öMñT”ù#iÆi †ñž Ą́¯¤âЩoO,¡«/“ÐÙ“•x®ƒ€õ`hk>"ˆÀûÏ2‘´ýãcÞòéÒR+²}<ÆÖùBÆã•9dÐ8ÍÉW;˜w2!Þ3qs6$|K‡sGgï³³ -ûyLèèy¶Ibpõ²Uì+FC¦&8öß:϶€kç -NL:¥‘=Ô° -§zAè«u°ãs>jOË”‘ÛÐ^ÖÜ™lQA¸ŒœÇE·8i_7m_d+Úˆ9sýÈD'N.Ýlê¾bÇñàRnP¤Öw8|´8‰Vw/€ÃsÑm JäiS€,iyW4« -PQ“.©iÃB–þ -¸W˜;eKcöKJè\€ºKÄÍûh,ºœ†ÖƒÙˆ¹Ô§zlO`šì@.⮳üiýGÞÔsAùq2”ç\ŒFX¦Ç¢°rh§.&£ôkÂÔXXY?¾PÉ‘A|D..ûžÆšðËÌ»
Áƒ®ØÍ™©Qh¦rÈÁf -QX±£qÞÚ×3OàŸ±'`é-=AWE8x¤Øû‡@f†wÌõ-Ó1á·dÔ}оK*%<k‡ µ…¶qŸ3ì î(¥No+–BZTLpŸåeS -ääÀ÷L/MÞv<©M—3çÞ¦'`-½ÛJزpk -`èR†aC ØŠÄ,ŸëP“*u” -ç
G]2‡-DâYÀPm¾Ô,ãG°|¼µS,Ooçªò0‡Áž-XKç4ÚËj~ßR&Únc@ºO[Ê€ùöD»4Jy7?!Í2§-D —rœÚÛÖ”2¹‹Á/-1¤³ÑÎ]²uñ$Ëb`ÕT§{a處RÄBë¨j CÈJ—§Ùþ’â÷W¢ÛJkh^¼ˆ}'kÙ›Õõl~jÌàÅþàò±áôÁ¸ -¹XŽä]Þm댧Á4HP9‡ëL0sHãóã-w[‹ë˜žŽøp¬‘«²–I¶ÎrÌ ´Ø¾{‹»bùdó™°¦•§ma“˜®`¬G«°à -¹X3§ø*h“›‘!-–µ9ýrÚux¶uÞ3µ2ÁЙy¨Fª¡š9“‚]õ%µ|§†«=^#uÑEËŒ(^
o!^*žX6).^¯X§‚SC€|>ígòœã GÜ™îG÷TávîÂÌ´çòahÌ/ +°+!ü$¥]Wz_æ™?ô?ÒØžwuCǹ«I$½ÕCÝìÒÎΠ©ÑÕôì[þäêÍOí´‹&Ywù¦#¡îy4Þ!МKG`1¸C¤¯Éè´”~l§¯WwŸÞ€º†¡Çv29Zû& ó¦ÙSÑÖÍħÝwô…[ÍJE q»ÍIì§?ÕèHûZ‹xƒ’éÌÌj õ~^¸Ö¿ŽÚè>X¿°Ê¨ÇãŸÉÅѺýwë5üõÓ¾ÝäMç×Í#´×ûþ~ͤµ[Ýú꧘màÙ$~h?«ÚÓékfr2ÿ×LRú‰1fÞ WƒÄWFë‹0™.0«Ïg +?HÎvøÄÆ®óQ'Çz.
‡ý«ŒXí+
®Âj +¶ëÃTâi¸À%· ä÷õWl²‹~Þ›-7‹²¤VYìŠîè¹m#Kwé£kו)l<“@]86µ[ç®h_XWU
á‡ÚŸ‡g¢…÷§]?Ä0a@Íl}@‘!lRtƒwŒàÈÁV;%í„ô¾(í&[jMÏÁ"ÇÃdi¾s‚S“ò{_í›â©(óGÒŒÓ@
â=Aƒ™Q_ IÅ¡SßžXB5V_&¡³'+ñ\'êÁ +ÐÖ|D÷Ÿe"hûÇǼåÓ¥¥VdûxŒó…ŒÆ+sÈ qš“;®v0ï<dB¼fâ<ælHø2–çŽÎÞggr”2ÑTy~È‚(‘x„õ»|æ_ÓݾäNÐÅõóøR“ñä-¥N¹mÄ,'[—‚phõ
ëJÂÄ/áåŒ@ü@NÞú)mÖ/ù8\ibÇ +Ö¬Tä
ks+b]žuj¡1êÔ©a „H©“çѾÁíÅŽYÎ?²–È@26Óf‚Íø»ÉI®û¶Y—õ&-×í}QñÚÁ“hö ò˜ÐÑól“Äàê)d«ØW&Œ†LMpì¿užm3× 98Î +ñªÆ€"¨!Úž…m”Ž{Ã=×Íg¢°›Ýç
¦ØWTn&Ä6]±éË”gšœ˜tJ#z¨al;—3.Kš˜„ØCpú£ü(õT^ÒbÀSÆÄÉÈe¡&dz +Ši•°U卨²Ú3ï¨ÑsHM9žm˜ýj›r«¨6eŸåšs‡nËqÕŒâ*ŽØN‡$ƒ²á]{ï\hWîÖ2A2(ìoèU“ +´ÝÆ€tŸ¶”)òí‰vi”òn~&Bše„O[þˆ.å8µ·)erƒ_ [bH9f£»dëâI–ÅÀª©N÷ÂÐ3+¥ˆ…6ÖQÕ@†•.N²ý%Åï¯D·•Öмxû:NÖ²7«+>êÙüÔ˜Á‹ýÁåcÃé‚qr±É»¼ÛÖOƒi r×™`æÆçÇ9Zî¶&×1=ñáX#Wd-“lå˜Ai±}÷w7ÄòÉæ3a3L+OÛÂ&1!]ÀXVaÁzWe[óŽ×Ý0ÕÔ‰x˜L>¦SœN:çaìþR
Ö*¼x2*Q¾”,|ådVûL^ÃØ"’–ÐMÓ‚Õrì G[¦OÌ:Ü +`µŠAV£@ßò¯¤["@ó™R;NÀFR—‚/´{ϦÄqJ»r±fNñ7TÐ&7#C0Z,ksú ä´ëðl3ê¼gj;d‚¡3óPTC34s&»êKjøN
W+z¼Fꢋ–Q¼þÞ +B¼T<±lR\¼^'°N§† endobj -2039 0 obj << +2061 0 obj << /Type /Page -/Contents 2040 0 R -/Resources 2038 0 R +/Contents 2062 0 R +/Resources 2060 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2031 0 R -/Annots [ 2045 0 R ] +/Parent 2071 0 R +/Annots [ 2067 0 R ] >> endobj -2045 0 obj << +2067 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [63.4454 707.8911 452.088 718.0529] /Subtype/Link/A<</Type/Action/S/URI/URI(ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos)>> >> endobj -2041 0 obj << -/D [2039 0 R /XYZ 56.6929 794.5015 null] ->> endobj -702 0 obj << -/D [2039 0 R /XYZ 56.6929 690.9391 null] ->> endobj -2046 0 obj << -/D [2039 0 R /XYZ 56.6929 656.5891 null] +2063 0 obj << +/D [2061 0 R /XYZ 56.6929 794.5015 null] >> endobj 706 0 obj << -/D [2039 0 R /XYZ 56.6929 517.028 null] +/D [2061 0 R /XYZ 56.6929 690.9391 null] >> endobj -2047 0 obj << -/D [2039 0 R /XYZ 56.6929 489.6469 null] +2068 0 obj << +/D [2061 0 R /XYZ 56.6929 656.5891 null] >> endobj 710 0 obj << -/D [2039 0 R /XYZ 56.6929 373.2709 null] +/D [2061 0 R /XYZ 56.6929 517.028 null] >> endobj -2048 0 obj << -/D [2039 0 R /XYZ 56.6929 344.9674 null] +2069 0 obj << +/D [2061 0 R /XYZ 56.6929 489.6469 null] >> endobj 714 0 obj << -/D [2039 0 R /XYZ 56.6929 184.6919 null] +/D [2061 0 R /XYZ 56.6929 373.2709 null] >> endobj -1716 0 obj << -/D [2039 0 R /XYZ 56.6929 151.8489 null] +2070 0 obj << +/D [2061 0 R /XYZ 56.6929 344.9674 null] >> endobj -2038 0 obj << -/Font << /F37 1014 0 R /F71 2044 0 R /F22 949 0 R /F40 1146 0 R /F11 1437 0 R /F41 1203 0 R /F21 926 0 R /F53 1298 0 R /F48 1223 0 R /F62 1347 0 R /F63 1350 0 R >> -/XObject << /Im2 1336 0 R >> +718 0 obj << +/D [2061 0 R /XYZ 56.6929 184.6919 null] +>> endobj +1721 0 obj << +/D [2061 0 R /XYZ 56.6929 151.8489 null] +>> endobj +2060 0 obj << +/Font << /F37 1018 0 R /F71 2066 0 R /F22 953 0 R /F39 1151 0 R /F11 1442 0 R /F41 1208 0 R /F21 930 0 R /F53 1303 0 R /F48 1228 0 R /F62 1352 0 R /F63 1355 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2051 0 obj << +2074 0 obj << /Length 846 /Filter /FlateDecode >> @@ -9834,43 +9949,43 @@ xÚ¥UMÛ6½ëWè(KŠ¢,7k'u€n·kå$9Ðc‘DU¤ã¸¿¾C
½ënÝSaœ>ÎÇ›!Åb ?—‚P.óx)s"(qÝG4ÞÃÞûˆLz¥×¨·UôË;¾Œ%‘EVÄÕ·+_%¡eÉâªùœÜÿz÷XŸi&h²$‹T4y»yX¡Eâ²]ß|ÚTŸP»ÿýa»YŸîË<©6 -Ò¼¤%œçÁÃêÓÃÝo›{Ä|\!týÊÛ×êC´®ž¹.–Qî«ø3úü•Æ
Ôü!¢„ËRÄ'P(aRfqå‚‘s~±tÑ6úãÙáÕî|ôy‚—D”Ùò{Yv‹=!IÁ3>³÷ÎL‹”Ó"qmµ—É´`e¢•5ƒ}–Œ&' ëæ=3ì»ó5¶6}¯‡æâI9”Žc£œ¶¨ì‚÷z:Îì'5ÚZuè¨HÔ2˜œŽv!F¯Õ`=ÕPoÊ‘Bdsòæ´£È7@Õ®5ƒ7°Ä¶ûA¹#&gô… Zm7ïaeaÕœ©ßl}¥Y‘{|$ Ž]QÇdAòd:Ç…¬Í)Åêúšè"#’É2€ÍxÉ+KìÁ»ƒw
ÁÍàI˜‚üÐö]ŸQ,Q‹”%=ÓÉ`ÜLL£$¼Èò³yÄ9UM8°3
`òýöë ÝÉLßQõ…Òì§¶Àg4¹ëœž€Æö‡†ücÉD{Ž‚Ó
²²\ZpêGšÒÑtm}¾Å– bÉ‹×lûZaânÖÍYC\Àг%‘¦ßŸÞš~†Â¤¶+.’ú`Œ
fgü*€^=¢z‰BsTZÛàÆÊ¿3B9…R; › Úã®1½B+¸ÂÉFwzïgcã´]ðé‰Nx‰™r9‡ ´¿Ì ^’êÐZDžÔK—òK—Àî̘všør¥ÚâµÃ>èSëï_‡ÇBµ>ö±> ¤B¨à»ÄAó¯
0p9o8w0ØÎ“Þ…1E¨/¿CÉê釞ìeÎt -¢F/%b^°ä¿^j.ˆ^o¼«ðyÿïWüåû–æ,³Û4§9á\²KRž/hèëÔŸßûçþ7ŽÂà[endstream +¢F/%b^°ä¿^j.ˆ^o¼«ðyÿïWüåû–æ,³Û4§9á\²KRž/ÆÄëÔŸßûçþ7rà_endstream endobj -2050 0 obj << +2073 0 obj << /Type /Page -/Contents 2051 0 R -/Resources 2049 0 R +/Contents 2074 0 R +/Resources 2072 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2031 0 R +/Parent 2071 0 R >> endobj -2052 0 obj << -/D [2050 0 R /XYZ 85.0394 794.5015 null] +2075 0 obj << +/D [2073 0 R /XYZ 85.0394 794.5015 null] >> endobj -2049 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R >> +2072 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2055 0 obj << +2078 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -2054 0 obj << +2077 0 obj << /Type /Page -/Contents 2055 0 R -/Resources 2053 0 R +/Contents 2078 0 R +/Resources 2076 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2031 0 R +/Parent 2071 0 R >> endobj -2056 0 obj << -/D [2054 0 R /XYZ 56.6929 794.5015 null] +2079 0 obj << +/D [2077 0 R /XYZ 56.6929 794.5015 null] >> endobj -2053 0 obj << +2076 0 obj << /ProcSet [ /PDF ] >> endobj -2059 0 obj << +2082 0 obj << /Length 1965 /Filter /FlateDecode >> @@ -9882,86 +9997,86 @@ i ·¥Ý3éÀ–yíˆùðŠ&Â8K<æcø¡›‚hïCû™<»úÐŒêhüýÔï Æ×¡\@•‰ó÷w= vV ýf3GÕ51b‘æi‘diNŒ‘Œâ±ˆ±0·"ð0àâÄßZÕ7’\sÂw"ó‡&0ÍåþF—?$cRÍZº”í(õåŠ:éH^04g¢°û(½ÀÙWáÓ7˜¿S,[>°úŒ¹…;î3`ô¦'bÕÀ¤Ö^ïöEy˜]¹œÞv‹íçÞa¯Úák@n@þzh|ÇütÓOÓ0J¿mºã—¿ÞeÚâš(°ÁiÇEðá
êÍâÀz҃ѣm§žæˆ§çOŒ$ èרÚ:‰óÎÐÃBYn?z·XdÌqâd¾©Üä¤ÚNí:ørðï»QÕaáƒL·CÕMucVìâªV.Wª4 Û8Hü»Uoy)”@»Zìo+B)ˆ×©ôD9ƒ©;B.ÊõTyåvÂ)Î6™îZds§¡ÁÓÏMíµ°r=¶öä&vÓž®é^/yr€¡¶¯ÓP;«y Â1{9B€FãŸà{ËוÂM>p\×-ž‘7>å èWˆÌ¨W ¥Ìrcø-мûãËü -“¤%œ¡i±Iæ² —â~ÚøÑŸ/¯6³Âv¡ámÒ¥ß;»è½‡CÀê/aïoãã<,EQ^Çsór4ÝÅpµö;[ÃïVÎy7G)JΑOü©5¿|hW°hpk·IQ„"é5¶ÏÍŽûª‡]Ù)C™‹_Ú‘Âõ%KÄQXDñ¯oʬ±]ªÜïʽe×SX{üâññ|>‡¼+¾,}w¸ÉÀdñ:Æ›š¥îãºÊǽµÿ¶Uø]5èTíŠË°ç§ð6hÿ˜ÈŸ%×"ö"Û‹½H.ƒH"h<H#a(B$·îæÎ{ÿù¸Œÿendstream +“¤%œ¡i±Iæ² —â~ÚøÑŸ/¯6³Âv¡ámÒ¥ß;»è½‡CÀê/aïoãã<,EQ^Çsór4ÝÅpµö;[ÃïVÎy7G)JΑOü©5¿|hW°hpk·IQ„"é5¶ÏÍŽûª‡]Ù)C™‹_Ú‘Âõ%KÄQXDñ¯oʬ±]ªÜïʽe×SX{üâññ|>‡¼+¾,}w¸ÉÀdñ:Æ›š¥îãºÊǽµÿ¶Uø]5èTíŠË°ç§ð6hÿ˜ÈŸ%×"ö"Û‹½H.ƒH"h<H#a(Bä·îæÎ{ÿúhendstream endobj -2058 0 obj << +2081 0 obj << /Type /Page -/Contents 2059 0 R -/Resources 2057 0 R +/Contents 2082 0 R +/Resources 2080 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2031 0 R -/Annots [ 2066 0 R 2067 0 R ] +/Parent 2071 0 R +/Annots [ 2089 0 R 2090 0 R ] >> endobj -2066 0 obj << +2089 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [348.3486 128.9523 463.9152 141.0119] /Subtype/Link/A<</Type/Action/S/URI/URI(mailto:info@isc.org)>> >> endobj -2067 0 obj << +2090 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [147.3629 116.9971 364.5484 129.0567] /Subtype/Link/A<</Type/Action/S/URI/URI(http://www.isc.org/services/support/)>> >> endobj -2060 0 obj << -/D [2058 0 R /XYZ 85.0394 794.5015 null] ->> endobj -718 0 obj << -/D [2058 0 R /XYZ 85.0394 769.5949 null] ->> endobj -2061 0 obj << -/D [2058 0 R /XYZ 85.0394 576.7004 null] +2083 0 obj << +/D [2081 0 R /XYZ 85.0394 794.5015 null] >> endobj 722 0 obj << -/D [2058 0 R /XYZ 85.0394 576.7004 null] +/D [2081 0 R /XYZ 85.0394 769.5949 null] >> endobj -2062 0 obj << -/D [2058 0 R /XYZ 85.0394 548.3785 null] +2084 0 obj << +/D [2081 0 R /XYZ 85.0394 576.7004 null] >> endobj 726 0 obj << -/D [2058 0 R /XYZ 85.0394 548.3785 null] +/D [2081 0 R /XYZ 85.0394 576.7004 null] >> endobj -2063 0 obj << -/D [2058 0 R /XYZ 85.0394 518.5228 null] +2085 0 obj << +/D [2081 0 R /XYZ 85.0394 548.3785 null] >> endobj 730 0 obj << -/D [2058 0 R /XYZ 85.0394 460.6968 null] +/D [2081 0 R /XYZ 85.0394 548.3785 null] >> endobj -2064 0 obj << -/D [2058 0 R /XYZ 85.0394 425.0333 null] +2086 0 obj << +/D [2081 0 R /XYZ 85.0394 518.5228 null] >> endobj 734 0 obj << -/D [2058 0 R /XYZ 85.0394 260.2468 null] +/D [2081 0 R /XYZ 85.0394 460.6968 null] >> endobj -2065 0 obj << -/D [2058 0 R /XYZ 85.0394 224.698 null] +2087 0 obj << +/D [2081 0 R /XYZ 85.0394 425.0333 null] >> endobj -2057 0 obj << -/Font << /F21 926 0 R /F22 949 0 R /F11 1437 0 R /F41 1203 0 R >> +738 0 obj << +/D [2081 0 R /XYZ 85.0394 260.2468 null] +>> endobj +2088 0 obj << +/D [2081 0 R /XYZ 85.0394 224.698 null] +>> endobj +2080 0 obj << +/Font << /F21 930 0 R /F22 953 0 R /F11 1442 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2070 0 obj << +2093 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -2069 0 obj << +2092 0 obj << /Type /Page -/Contents 2070 0 R -/Resources 2068 0 R +/Contents 2093 0 R +/Resources 2091 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R +/Parent 2071 0 R >> endobj -2071 0 obj << -/D [2069 0 R /XYZ 56.6929 794.5015 null] +2094 0 obj << +/D [2092 0 R /XYZ 56.6929 794.5015 null] >> endobj -2068 0 obj << +2091 0 obj << /ProcSet [ /PDF ] >> endobj -2075 0 obj << +2097 0 obj << /Length 2544 /Filter /FlateDecode >> @@ -9973,802 +10088,820 @@ FXЂdƒ\#åS¯ÐyOpBŒšÈª†¨n4\Tòi¹^¿È=õvÂÀ3v·Ù”¹<ƒZˆLPO–`š8I9³€øQ&ŽÀ6
CÆg”ñ ¼ –a“p¯GkଯëÃá5³îǪÿêÄ- ÜȽ¬Í|µ/^ÄwxÒH‚ D¤<ÐÎÿ—yÇ‘sU@E…ÎqÌ*Š‘×8P”Ì Ë¿/@f4áRÊ}^º¦ÖÒRº#›Úv°/×ˈÖFtÅŒ‚þ[åSr Òéú@Øèªé)ŽL½"Ÿûæ¢@ù<ñpJµÙ>~æÜpËLtGYFgá±[A
—(-̃ÅÙ¶Ä ˜Þ°)Ëx™AaíF¼¨‚ÕáPâ¥V)§8·º>@ÌÔ4ûôÜÄP‰BÍÞ(dvP&máªëæßFD3zœ`·“¢ÂEàÛ=ÃBj{
†rh®ÔÐq½ ‘®³«zß&Å(uùJ¸8…B×ò5ø?в9Òp#ªf'Ë’•ú&_æùM_—¢±J6iðU£ª#E}ïãÏ^5X*‰eÃÏÖJ©>KF\¢P¯SSŒo&Œ>Ï! ·LÝ–è@±¸ˆ¤ægH@Ä9³ZI( Ž:ž()6Sq -UŸiQc¢õFêÆ†EiX*×5ÔÏ]OÕ-ãÖXXE p³Í‚¥¢o¹‡šMÔºõÁùˆ4òs®øbðØ¬–× +UŸiQc¢õFêÆ†EiX*×5ÔÏ]OÕ-ãÖXXE p³Í‚¥¢o¹‡šMÔºõÁùˆ4òs®øbðØ¬–× endobj -2074 0 obj << +2096 0 obj << /Type /Page -/Contents 2075 0 R -/Resources 2073 0 R +/Contents 2097 0 R +/Resources 2095 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R ->> endobj -2076 0 obj << -/D [2074 0 R /XYZ 85.0394 794.5015 null] +/Parent 2071 0 R >> endobj -738 0 obj << -/D [2074 0 R /XYZ 85.0394 769.5949 null] ->> endobj -2077 0 obj << -/D [2074 0 R /XYZ 85.0394 573.5449 null] +2098 0 obj << +/D [2096 0 R /XYZ 85.0394 794.5015 null] >> endobj 742 0 obj << -/D [2074 0 R /XYZ 85.0394 573.5449 null] +/D [2096 0 R /XYZ 85.0394 769.5949 null] >> endobj -2078 0 obj << -/D [2074 0 R /XYZ 85.0394 539.0037 null] +2099 0 obj << +/D [2096 0 R /XYZ 85.0394 573.5449 null] >> endobj 746 0 obj << -/D [2074 0 R /XYZ 85.0394 539.0037 null] +/D [2096 0 R /XYZ 85.0394 573.5449 null] >> endobj -2079 0 obj << -/D [2074 0 R /XYZ 85.0394 510.2426 null] +2100 0 obj << +/D [2096 0 R /XYZ 85.0394 539.0037 null] >> endobj -2073 0 obj << -/Font << /F21 926 0 R /F22 949 0 R >> +750 0 obj << +/D [2096 0 R /XYZ 85.0394 539.0037 null] +>> endobj +2101 0 obj << +/D [2096 0 R /XYZ 85.0394 510.2426 null] +>> endobj +2095 0 obj << +/Font << /F21 930 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2082 0 obj << +2104 0 obj << /Length 2811 /Filter /FlateDecode >> stream -xÚkoã¸ñ{~…¿ÕbEõ̲»É6w½\š¸hÛ*K´®,ùD9Ùܯïg¨‡ì-Ð&L‡Ãyq”˜¹ð/fA脉—Ì¢ÄwW³lwæÎ6°öéL0ÎÂ"-†Xï—g—·2š%Nzál¹ÐŠ7ŽÅl™ÿ2¿v<ç(¸óO7÷7×;_x;ÿxÿDƒÇ›Û›Ç›û74½»¿ýùñ§ëóÈŸ/ï~¾?_ÄQ̯nî?Þý‹p®‘ ëZ臛§ó_—?œÝ,;އR W"»¿ýò«;ËA¸Î\G&q0{‰ëˆ$ñf»3?NàKi!åÙÓÙß;‚ƒU³uRKÂu<zjò¼)5‰JO5½¿»ÿÒyñüY5º¨+œ$ó„`/©¦As.â¹*UªUNEE+OjߪÝJ54õ\×%„´Ê T0”à»ô?u3¤úÒ¢µzM•J›ò•·•%Ô{•µLÌb¶[Þz¨reè-Ð( ™…Nž³|-ª
Y‘%†Qjð³-ŸµbƱ»=×q£h¨#ØÁ:Ò4óáÇ·‚Â<’U4>aòÙu½¬ -cC˜ÉÀ›Sg[µS|ÆáÐvõð°¢6(®ðA>ññöáÈ Ž.¦.ÓgÏó?1;g:vLÁ4d·æ 7Md—>x†TŽC€2ü…]·Q:2<ÔOPëølÎÍ€ÓÁM& -pFBáäÚD&¬4°¬)&ˆïÄAh¢†“kkKWaKWo|kФÕ/„Œ¾´X#Áø(œ#DQJ¶ -
J¥ôT9NJ¢±Y`ž¥ût…5
^³ äu–µt®€£ºï[B¬à¤úÊE{uŒ™QK£Uÿ -ÌèÉ Fx×JY@Ó& - C;Ù™˜¢ÅŸS]‰ƒº»ö™j?fåÃsÙ"’Ö‘ôbº˜&~?”©Ö\øÃÔvë]j©=vÑ&L>Ü}|Ä(rÁtL éóm)éÏ–S’F90jðä´í,< -Èì9®r -ÚB§?ùZ´í:Ó®w5Ò¬ù)6ïД:) -,¯ä50ÎêÒ\tâEÿ÷ÕÕŸèJCûc¾üèŽ
P Ê”µ0x!žo´2n’;¥X2)oͨV<Ñ—•™M8+zâ3©ÐÜ3êjʪ«F}óûB$¿T¼ÙŠzÓ¤ûík;¶žT…eåQ¥9È?x½øö‹ˆì^DÄ)Û*¬í£×‡z‡bð8Žþ¾Ç‘§±c èó:;XŠÐjÑA -ט‡}ÚðiÆaBÿ‘NEÒ¸¡…A¯"œTd ZaB¦±iÇá.ß¶¢†ÓªnMƒÈ€“
îkSLæÈÎÛñ2iU>[rt8ÉMGQ™Ä -ü¾C^{yÌŸüÇqtÄßÑ·˜ë”§‘2N©!O™Ê»2€‰s`Lt¥—îáñÔn
=ˆ?0[èø®Å)´í@T÷è½²m‰}béÁ[¬ÓLO|ûHKm?i<§…}RºlGïŸè”j5òß#•-ð³•ÅH'núŽïЫŽ+‚?ö"»a1ÜqêD'tMÐöN¤ÚµS7›ËføŽçFNâÊc®Ž|§Ã:ee¤ˆSjoùNäD~
xŽÓ3¸iÁ& lš–œø{„~ë§ü,9!‡Û%æÿùëgÿ˜“qìMØô¢ +xÚkoã¸ñ{~…¿ÕbEõ̲»É6w½\š¸hÛ*K´®,ùD9Ùܯïg¨‡ì-Ð&L‡Ãyq”˜¹ð/fA脉—Ì¢ÄwW³lwæÎ6°öéL0ÎÂ"-†Xï—g—·2š%Nzál¹ÐŠ7ŽÅl™ÿ2¿v<ç(¸óO7÷7×;_x;ÿxÿDƒÇ›Û›Ç›û74½»¿ýùñ§ëóÈŸ/ï~¾?_ÄQ̯nî?Þý‹p®‘ ëZ臛§ó_—?œÝ,;އR W"»¿ýò«;ËA¸Î\G&q0{‰ëˆ$ñf»3?NàKi!åÙÓÙß;‚ƒU³uRKÂu<zjò¼)5‰JO5½¿»ÿÒyñüY5º¨+œ$ó„`/©¦As.â¹*UªUNEE+OjߪÝJ54õ\×%„´Ê T0”à»ô?u3¤úÒ¢µzM•J›ò•·•%Ô{•µLÌb¶[Þz¨reè-Ð( ™…Nž³|-ª
Y‘%†Qjð³-ŸµbƱ»=×q£h¨#ØÁ:Ò4óáÇ·‚Â<’U4>aòÙu½¬ +dþU‘¥º0¡N$;<¼q*¦cÈ2d¬‚ÊYÈ(†b|M VK_Ì5ˆ‰z¾Û›äÝ—±çÈXz|øuõú“ðü“2”†I<mÌ$BŒëàá–4P}#¦ô; +h»zxXÑGWø ŸøxûpdGS—é³çùŸ˜Œ3;¦`²ƒ€[sƒ›&²K¼C*Ç!@þ®Û(Nê'¨u|6çfÀéà&€S2Z÷ë„c€‹»ÞÐ1Þ<Ós l³ˆú°¢àYcè>§'„)ŽN°ÕEZME‡È ¡äå-W}×q‘t¼@Ú½”î¾ç;~7eh˜%¥ç¤×ŸŒô‹#ýU1¯Ô0Mˆ†ÊÒ‰Müñü°×ÈUº’3›‚˜<¸wOçJ¾sêOLŽc®6ÛòÕ¤:³êö (/rÍG×=…8£?¡prmRXÖ”aÄwâ ´QCɵµÇ¥«°¥«7¾µhÒjƒ—VBF_Z¬Î‘`|΢‰(%[ +KÌÄtg¹Ñä äh&ÆZéI¥”» +À¡ìLLÑâÏ©®ÄA
Ý] +ûLµ³òa¹lIëÈ +»õ.µÔ»h&î>>b¹`:&Ðô‡ù¶”ôçËÇ)IH£5xrÚv
€‰°*V e“
œ’1/ã +ItdöW9€°;˜ +#";"2ôoÆG‰Fõ +EЙOÆÜ¨ŒÚ›-—e]s÷Z_ÔU×.Ê‘zE)míë¹®¸ÊWñ•¿ÉUêº0¢Æ÷jbqå¤7‘Љ’-9ŽÂÐákq¢ŒuB«×‰§ fe°¹{ º©-žC +â”mÖöÑëC½Ã +cåàföí÷¹àRõvùÀw²½šÈöëvuyùòò‚*p +]8*?\ÕÂXé[}ãú&?kÚþù+üM\O:‰p-’Ó~å‡1ÎCN("ÛÿùøÓ‰øN”±iÙE˜øôƒ–¿ÌìèÇþ»G·c1Üb¾{øÃƒO)Ô1T~ß!¯½<æÏGþã8:âïè[L‡uÊÓH§Ô§¿Lå]ÀĈ90&ºÒK÷ðxj7ˆ†žÄ˜-t|×âÚv ª{ô^Ù¶Ä>±t‹à-Ö‹i¦'¾}¤¥¶Ÿ4žÓÂ>©]¶£÷OtJµùï‘ÊøÙJ„b¤‡7 +}Ç÷èUHÇÁ{‘ݰî8u¢º¦Nh{'RíÚ©›Íe³ÎN|Çs#'qå1WG¾Óa²2RÄ)µ·|'r"?ކ<ÇéÜ4†`“6MKÎü=B¿õ…S~–œÃíóÿüõ³ÿ endobj -2081 0 obj << +2103 0 obj << /Type /Page -/Contents 2082 0 R -/Resources 2080 0 R +/Contents 2104 0 R +/Resources 2102 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R -/Annots [ 2086 0 R 2087 0 R ] +/Parent 2112 0 R +/Annots [ 2108 0 R 2109 0 R ] >> endobj -2086 0 obj << +2108 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [253.7995 149.3637 417.685 161.4234] /Subtype/Link/A<</Type/Action/S/URI/URI(ftp://www.isi.edu/in-notes/)>> >> endobj -2087 0 obj << +2109 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 1] /Rect [63.4454 110.455 208.8999 120.6168] /Subtype/Link/A<</Type/Action/S/URI/URI(http://www.ietf.org/rfc/)>> >> endobj -2083 0 obj << -/D [2081 0 R /XYZ 56.6929 794.5015 null] ->> endobj -750 0 obj << -/D [2081 0 R /XYZ 56.6929 662.0717 null] ->> endobj -2084 0 obj << -/D [2081 0 R /XYZ 56.6929 624.1661 null] +2105 0 obj << +/D [2103 0 R /XYZ 56.6929 794.5015 null] >> endobj 754 0 obj << -/D [2081 0 R /XYZ 56.6929 624.1661 null] +/D [2103 0 R /XYZ 56.6929 662.0717 null] >> endobj -1510 0 obj << -/D [2081 0 R /XYZ 56.6929 593.0972 null] +2106 0 obj << +/D [2103 0 R /XYZ 56.6929 624.1661 null] >> endobj 758 0 obj << -/D [2081 0 R /XYZ 56.6929 294.2701 null] +/D [2103 0 R /XYZ 56.6929 624.1661 null] >> endobj -2085 0 obj << -/D [2081 0 R /XYZ 56.6929 255.4568 null] +1515 0 obj << +/D [2103 0 R /XYZ 56.6929 593.0972 null] >> endobj 762 0 obj << -/D [2081 0 R /XYZ 56.6929 255.4568 null] +/D [2103 0 R /XYZ 56.6929 294.2701 null] >> endobj -1236 0 obj << -/D [2081 0 R /XYZ 56.6929 226.1045 null] +2107 0 obj << +/D [2103 0 R /XYZ 56.6929 255.4568 null] >> endobj -2088 0 obj << -/D [2081 0 R /XYZ 56.6929 53.5688 null] +766 0 obj << +/D [2103 0 R /XYZ 56.6929 255.4568 null] >> endobj -2089 0 obj << -/D [2081 0 R /XYZ 56.6929 53.5688 null] +1241 0 obj << +/D [2103 0 R /XYZ 56.6929 226.1045 null] >> endobj -2080 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F40 1146 0 R /F53 1298 0 R /F11 1437 0 R /F41 1203 0 R >> +2110 0 obj << +/D [2103 0 R /XYZ 56.6929 53.5688 null] +>> endobj +2111 0 obj << +/D [2103 0 R /XYZ 56.6929 53.5688 null] +>> endobj +2102 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F39 1151 0 R /F53 1303 0 R /F11 1442 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2092 0 obj << -/Length 2825 +2115 0 obj << +/Length 2826 /Filter /FlateDecode >> stream xÚµZ]{£6¾Ï¯È¥ý<-’ KÇö¤É4™4v·Ûα›glH
ÎLúë÷} 0’;Ûî“‹€tЋÏ{>%ðe -’_.×G“ÇÇùÃìößã+‚ѯXèÑé|1¾Š#.&¨˜Š‚Ñõíõ·nž&?ü*ú-`Áäa&o?ßÜÌ˹º}šOf·7 ‚ÇŸ–wó¥ymû§á€Šwþýâã§àr
¿ðî"@”'ìò+ÜsN.÷!£ˆ…”ê‘ÝÅââ'³ 5Û<:¤*FÄèŠàKŒgŒt”Å8Š(¡²uZ¬Óúrþ"ÊØ9š,) M†hÒRùãÓ»)()üÔGÆ,@ ‡w÷B©Sì0°°1c(‰)ë‚ÏÊ}š’ЇtŸUŠwBby5-‹UöR«qБ¼x—®ò]^çY£¯ÞÏÄq€X'ð‚ãò‘Ç1&|„þ%ÿɱûrõ%}ÉêC^)©‡ò5Û?gy‡y#'#8[ Ï1bIyÑR#ÌÈÚb¤í`Ä?ËÈíþe—í³¢Në¼,z¼,^²Uþ[•œ=%‡`ôñ 9òæï£(ñˆÒ3ÙRnŠŒ”¦ˆÇŸñ"·@3ÔÁ¾Oó -å±Î‹Mƒz›É›ÊÅ[Ugû!ga#Cλ|L•öÓh~½ÉÔø]ZÓÛQ}„Ô’wEHˆxª¥â„¤YúñP¾”U¦-å\À‹h„’„œãÎ’òp§¥Œ{qîq//´E^ÛAž
~[¬cœŒ¤)ÿSвåc<:¤EõY¸fpö°¢/ÄG ê}÷оÛ:UC“ãæXÕš8¹}'(&çê[Ê£w-eé=òèÝmé½íл
>QŠÉVÛ´È«½¼ý\*%?6¤”û—ZǘÚcÍXù¹ÏÖÖÚ¦ BŠbâ
rŒòoyöÝü"»çø±¤<üh)ÍÁÔÇÚâ§íàÇŸ½é>_¯h~~Y§µÈ<4JûƒMX:¬‰k‘¡¤˜;ÀAìŒ1ŽZ.([.Ä*6br¡Æ—Ûr_•…ýµñM5õ”}ÙÖà¢q¨Wl⯘ºk¨…hà+ÿº<kÍùËA‡r ÜÆ4aR?å¶”›r#ÕRž`7å^è–òìaÊ;àÓ]z°œLuÙÏb÷þdmY„‚*êŽÛ=!s!ÿ_«¼šïþЉí¸{û3L0‚HBÉ&,)ZÊ0AƒÄÄÚb¢í`ÂÈ6 ÒWÕÒÕÖT:è~:fGÙM9Â$"éhR¬eâûªë¸û´XmÞ·Þ¡iÀTÏèÝ’òè]K½G±Ï|ЖÞûؽÛàóouVT&Á˜äTõ²“Q¾è‡çpè®÷¤óÁ(0ÿsÞñ˜>f€ƒÏQ`Iy(ÐRÄCÚ¢ í À(‹+Yte‡}^èŠÌh\&˜&zdë\ZðÊ~"1£Ã0=¤_£°ÂzX÷Ü©ûxI òùuoK¹uo¤Œî“ÐS{¡[ÝŸ`ë¾¾ÈT-,T@Ùè}ö&/Ú*8]©ú‹F -È E›š$¥‹À…$.„‹,·7!„¢ aØâj=nÀCÂQ>Æ#å$”>¨©›ãzé»’E¡Éh¦fæiU_ɼo :y—~Ñ.G;F`ú¶ke(¿Œ9e»ÄàZâ4ÁR¥'@Ùä´“(FQBù;±¤<v¢¥ŒpxìÄmÙIÛa'6xÇN@ÒNDú®êôy—W[ÑLùbæòý\í(>=¹BgÂQÈ£Þ¦ÑLq"èu2¸È^jkGÂÏPÈ#äC–”‡!-e1äId^h‹¡>¶ƒ!Ü(û)ûý˜éf,{ÀŸ…ÚòM‘ÖGImÕ’%7hr\årã -²Ãi{ŒˆôW•
ïýÌM„Qà3û¥¶”‡~-eÑï9÷óB[ô÷±ôÛà"fʺMàá0²*E*inš´M¡%•ÞLUþ½ˆ;³ë4xpÅ'¡ÕSÆ¥“Òž-´‰ebô^‰[ƒ3µ-n:Ôw,¤w¦üJ_&Úq¿1XRcÐR–1xªÚ2†>¶Ãlpu`U—«RlYA +’_.×G“ÇÇùÃìößã+‚ѯXèÑé|1¾Š#.&¨˜Š‚Ñõíõ·nž&?ü*ú-`Áäa&o?ßÜÌ˹º}šOf·7 ‚ÇŸ–wó¥ymû§á€Šwþýâã§àr
¿ðî"@”'ìò+ÜsN.÷!£ˆ…”ê‘ÝÅââ'³ 5Û<:¤*FÄèŠàKŒgŒt”Å8Š(¡²uZ¬Óúrþ"ÊØ9š,) M†hÒRùãÓ»)()üÔGÆ,@ ‡w÷B©SlÊ-lÌJbʺà³rŸæ…$ô!Ýg•âX^MËb•½Ôjt$/Þ¥«|—×yÖè«÷3q Å ¼ Àø‡|äqŒ ¡Érì¾\}I_²úWJê¡|ÍöÏÙAÞažÄÈÉŽÀVÂsŒXRF´”Åó0⃶éc;±ÁÏ2r»Ùeû¬¨Ó:/‹/‹—l•ÿd%gOÉ!˜ +´”EñPàƒ¶(èc;(°ÁÊâJ]ÙaŸº"3— ¦‰Ù:—¼r††HÌè°LéWÁ(¬°Ö=wê>^ˆ|~ÝÛRnÝ)£û$ôÔÂ^èV÷'ØÃºï€/2UP6zŸ½É‹¶ +NWªþ¢hrBQç¦&Ié"p! ƒá"ËÅíÃC¡(H¶8‚‡Zðp”ñH9 å£jêæ¸ÞCú®dQ@h2š©™yZÕW2ïˆNÞߥ_´ËÑŽ˜¾íZÊ/cNFÙn1¸–8M°Té‰P69í$ŠQ”€êývbIyìDK;á4ð؉ڲ“>¶ÃNlðŽ€ +¤ˆô]Õéó.¯¶¢™òÅÌåû¹ÚQ|zr…΄£G½M£™âDÐëdp‘½ÔÖŽ„Ÿ¡#FÈ9†,)CZÊbȓȼÐC}lC6¸QöSöû1Ó!ÍXö€?µå›"’Úª%K:oÐä¸ÊåÆÔ”ðÿ7[#áslYR¶´”f‹AìaËm±ÕÇv°eƒƒ?)ŸîµùN5T†à¸!C>¢Û5q#ÛµÁ`‹ãQ—$o˜ëîíù¹Á@r†KÊÖ2ÜDޜ胶¸éc;¸±Áo²êk¡Ø8–D嵈vqw‡×|•É©ÉnSÂÔv/çdØ“´±îe¬‰Ëôsª½–ôj¸ôß,2¿:¯ÉS_®e(da¯Z(úßM‹¡úôFvÝ—éá|'·hÞšß¡fÔ_åÏå«=s×±² +~ez’pu?øCºÛ©¹«º´Íïoòš§þþfÛ¨¶´5[KßµíIà +¼þ’ +Zî–ÁÅ“ž„N(ËEHq¤;#UO«E;õ4:É$£ÇgöHm)7™FJ“>2½Ð-™'ØÃdvÀ› +’†ñüD>]OÂ0&FïÕèéAuGìŽÄËܧU•éÈ-7Gd‡Óöé®*Þ-ú™›þ£8ÀgöKm)ýZÊ¢ßsîç…¶èïc;è·ÁEÌ”u›(ÀÃadUŠTÒÜ4i›BK*½™ªü-.Z{wf×iðà‹OB«?¦ŒK'¥=[h'ËÄè½7¶ gj[Ü t¨ïXHïLù/”¾L´ã~c°¤<Æ ¥,cð$T/´e}l‡1ØàêÀª.W¥Ø²‚ +ÜI£ã‘Ë.HŒ’ÛÅDz‚‚E»1ÂLØQ]ŒÞ+qm*¼«•;ö Óùßc'\º§Âíî(é`>r€‚$Õ» +À´jP'Ïå±îí0ô¾ˆpØ!f +ã3¤%ä¶B-dU™Ï}¸
ö‡MÐFžŒ¯ -3wÊ,Ÿw¢^
[ÖŒ*…ÅÈ´<Øû©ÍØ/cŒ ±ïÖÙN>Ë^vå›~¾Ñó +åçú«d>C¶K¡`Œidå7ÆÁâU<2³û»I_åCæœ:& ôÚäLcjKy¨ÖRמZ/´EvÛÁ¶
>-÷{¹ëŠõfëÀ·@09—¬–‡JÊH…‰Åq³N¬é„`ü]þmøèœÆ(æØ>F¢aóù XäýqŸêSW±ïÚôy°Úc +ïÔàT
>d mâŒ^·Ãs§÷œ¥ÅùÆgîóÝΜø~ŸIð‘0Šüa ¹
BµT$žƒnk}àak°‘Ù!×G%ǶÚ4[Y¯†ªLÆ,<=5G±Žö\×~ïGI ¶àÏÔÿ–[áZ¨Íø¾Ï¾|¸ÂûÀà +·‘÷AŸWÏÙ6}ÍE5#P}m kkôÓÒ9áBŸÔ6"²€ÑÛÇ×H^MÖêD2ì #FEÐ|X|Ö~ѼJyÈ«m^§DRãKá%Jæ./öY®P¯ÙÙC²7Ü…¤jñ î€j“Ûÿò—¾ÖÎaŒh’8Ó(4Ÿ”r¬_Jü +LN>D6ߟ¾û#ïbendstream endobj -2091 0 obj << +2114 0 obj << /Type /Page -/Contents 2092 0 R -/Resources 2090 0 R +/Contents 2115 0 R +/Resources 2113 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R ->> endobj -2093 0 obj << -/D [2091 0 R /XYZ 85.0394 794.5015 null] ->> endobj -2094 0 obj << -/D [2091 0 R /XYZ 85.0394 752.3015 null] ->> endobj -2095 0 obj << -/D [2091 0 R /XYZ 85.0394 752.3015 null] ->> endobj -2096 0 obj << -/D [2091 0 R /XYZ 85.0394 752.3015 null] ->> endobj -2097 0 obj << -/D [2091 0 R /XYZ 85.0394 746.3107 null] ->> endobj -2098 0 obj << -/D [2091 0 R /XYZ 85.0394 731.5461 null] ->> endobj -2099 0 obj << -/D [2091 0 R /XYZ 85.0394 728.1497 null] ->> endobj -2100 0 obj << -/D [2091 0 R /XYZ 85.0394 713.3851 null] ->> endobj -2101 0 obj << -/D [2091 0 R /XYZ 85.0394 709.9887 null] ->> endobj -2102 0 obj << -/D [2091 0 R /XYZ 85.0394 651.9592 null] ->> endobj -1367 0 obj << -/D [2091 0 R /XYZ 85.0394 651.9592 null] ->> endobj -2103 0 obj << -/D [2091 0 R /XYZ 85.0394 651.9592 null] ->> endobj -2104 0 obj << -/D [2091 0 R /XYZ 85.0394 648.8377 null] ->> endobj -2105 0 obj << -/D [2091 0 R /XYZ 85.0394 634.0731 null] ->> endobj -2106 0 obj << -/D [2091 0 R /XYZ 85.0394 630.6767 null] ->> endobj -2107 0 obj << -/D [2091 0 R /XYZ 85.0394 615.9121 null] ->> endobj -2108 0 obj << -/D [2091 0 R /XYZ 85.0394 612.5156 null] ->> endobj -2109 0 obj << -/D [2091 0 R /XYZ 85.0394 585.7959 null] ->> endobj -2110 0 obj << -/D [2091 0 R /XYZ 85.0394 582.3994 null] ->> endobj -2111 0 obj << -/D [2091 0 R /XYZ 85.0394 567.6349 null] ->> endobj -2112 0 obj << -/D [2091 0 R /XYZ 85.0394 564.2384 null] ->> endobj -2113 0 obj << -/D [2091 0 R /XYZ 85.0394 549.5337 null] ->> endobj -2114 0 obj << -/D [2091 0 R /XYZ 85.0394 546.0774 null] ->> endobj -2115 0 obj << -/D [2091 0 R /XYZ 85.0394 531.3128 null] +/Parent 2112 0 R >> endobj 2116 0 obj << -/D [2091 0 R /XYZ 85.0394 527.9163 null] +/D [2114 0 R /XYZ 85.0394 794.5015 null] >> endobj 2117 0 obj << -/D [2091 0 R /XYZ 85.0394 513.1518 null] +/D [2114 0 R /XYZ 85.0394 752.3015 null] >> endobj 2118 0 obj << -/D [2091 0 R /XYZ 85.0394 509.7553 null] +/D [2114 0 R /XYZ 85.0394 752.3015 null] >> endobj 2119 0 obj << -/D [2091 0 R /XYZ 85.0394 483.0356 null] +/D [2114 0 R /XYZ 85.0394 752.3015 null] >> endobj 2120 0 obj << -/D [2091 0 R /XYZ 85.0394 479.6391 null] +/D [2114 0 R /XYZ 85.0394 746.3107 null] >> endobj 2121 0 obj << -/D [2091 0 R /XYZ 85.0394 464.8745 null] +/D [2114 0 R /XYZ 85.0394 731.5461 null] >> endobj 2122 0 obj << -/D [2091 0 R /XYZ 85.0394 461.4781 null] +/D [2114 0 R /XYZ 85.0394 728.1497 null] >> endobj 2123 0 obj << -/D [2091 0 R /XYZ 85.0394 446.7135 null] +/D [2114 0 R /XYZ 85.0394 713.3851 null] >> endobj 2124 0 obj << -/D [2091 0 R /XYZ 85.0394 443.3171 null] +/D [2114 0 R /XYZ 85.0394 709.9887 null] >> endobj 2125 0 obj << -/D [2091 0 R /XYZ 85.0394 428.5525 null] +/D [2114 0 R /XYZ 85.0394 651.9592 null] +>> endobj +1372 0 obj << +/D [2114 0 R /XYZ 85.0394 651.9592 null] >> endobj 2126 0 obj << -/D [2091 0 R /XYZ 85.0394 425.156 null] +/D [2114 0 R /XYZ 85.0394 651.9592 null] >> endobj 2127 0 obj << -/D [2091 0 R /XYZ 85.0394 355.0758 null] +/D [2114 0 R /XYZ 85.0394 648.8377 null] >> endobj 2128 0 obj << -/D [2091 0 R /XYZ 85.0394 355.0758 null] +/D [2114 0 R /XYZ 85.0394 634.0731 null] >> endobj 2129 0 obj << -/D [2091 0 R /XYZ 85.0394 355.0758 null] +/D [2114 0 R /XYZ 85.0394 630.6767 null] >> endobj 2130 0 obj << -/D [2091 0 R /XYZ 85.0394 352.0499 null] +/D [2114 0 R /XYZ 85.0394 615.9121 null] >> endobj 2131 0 obj << -/D [2091 0 R /XYZ 85.0394 337.3452 null] +/D [2114 0 R /XYZ 85.0394 612.5156 null] >> endobj 2132 0 obj << -/D [2091 0 R /XYZ 85.0394 333.8889 null] +/D [2114 0 R /XYZ 85.0394 585.7959 null] >> endobj 2133 0 obj << -/D [2091 0 R /XYZ 85.0394 309.8192 null] +/D [2114 0 R /XYZ 85.0394 582.3994 null] >> endobj 2134 0 obj << -/D [2091 0 R /XYZ 85.0394 303.7727 null] +/D [2114 0 R /XYZ 85.0394 567.6349 null] >> endobj 2135 0 obj << -/D [2091 0 R /XYZ 85.0394 278.3282 null] +/D [2114 0 R /XYZ 85.0394 564.2384 null] >> endobj 2136 0 obj << -/D [2091 0 R /XYZ 85.0394 273.6565 null] +/D [2114 0 R /XYZ 85.0394 549.5337 null] >> endobj 2137 0 obj << -/D [2091 0 R /XYZ 85.0394 246.9367 null] +/D [2114 0 R /XYZ 85.0394 546.0774 null] >> endobj 2138 0 obj << -/D [2091 0 R /XYZ 85.0394 243.5403 null] +/D [2114 0 R /XYZ 85.0394 531.3128 null] >> endobj 2139 0 obj << -/D [2091 0 R /XYZ 85.0394 173.5556 null] +/D [2114 0 R /XYZ 85.0394 527.9163 null] >> endobj 2140 0 obj << -/D [2091 0 R /XYZ 85.0394 173.5556 null] +/D [2114 0 R /XYZ 85.0394 513.1518 null] >> endobj 2141 0 obj << -/D [2091 0 R /XYZ 85.0394 173.5556 null] +/D [2114 0 R /XYZ 85.0394 509.7553 null] >> endobj 2142 0 obj << -/D [2091 0 R /XYZ 85.0394 170.4341 null] +/D [2114 0 R /XYZ 85.0394 483.0356 null] >> endobj 2143 0 obj << -/D [2091 0 R /XYZ 85.0394 144.9896 null] +/D [2114 0 R /XYZ 85.0394 479.6391 null] >> endobj 2144 0 obj << -/D [2091 0 R /XYZ 85.0394 140.3179 null] +/D [2114 0 R /XYZ 85.0394 464.8745 null] >> endobj 2145 0 obj << -/D [2091 0 R /XYZ 85.0394 113.5982 null] +/D [2114 0 R /XYZ 85.0394 461.4781 null] >> endobj 2146 0 obj << -/D [2091 0 R /XYZ 85.0394 110.2017 null] +/D [2114 0 R /XYZ 85.0394 446.7135 null] >> endobj 2147 0 obj << -/D [2091 0 R /XYZ 85.0394 95.4372 null] +/D [2114 0 R /XYZ 85.0394 443.3171 null] >> endobj 2148 0 obj << -/D [2091 0 R /XYZ 85.0394 92.0407 null] +/D [2114 0 R /XYZ 85.0394 428.5525 null] >> endobj -2090 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F40 1146 0 R >> -/ProcSet [ /PDF /Text ] +2149 0 obj << +/D [2114 0 R /XYZ 85.0394 425.156 null] >> endobj -2151 0 obj << -/Length 2889 -/Filter /FlateDecode ->> -stream -xÚµšMsÛ8†ïþ:JU1† -< -=Hdhû`¥ŽNqÕÚ#»g'Jëúc+e¥)À^o¡`“6(tµû)˜ÚóM,~úÇÅ_eçX±Y^ɦ4ïλò#~ú~Äo~¤óc SçÀ=Û%uQømBsIh‘”U–¼0ÙLkGß½Sçbá÷ÏšX4LÃÌ`:
+1ee,ÄlÒ±®v?1S{½‰ÿ¸{°³Š
°<QŠ¿â€ø±M‚¢ÆµúI_Pó#¸NhìrÀÆG7°¹Ž‰j°‰ÃŒ©•OZaº¡ƒ|˜t;LÓj¦¶2`Zv;«tóD»fK{S‡z—Â^²ƒØÂàðÉJÞæÖy_Í7(†¼Q0äWŠ!·aH(Âv6ùýœ!¿×t=ÇS…M½ÂøÅ'i|uÜíp¨•‡=r‹iiÿ‰çºpŽh@F`VØÊÊ€Y`Û¤
Ø]í~ئ6‡ˆ}.ç/‚³éS}j9¿fueFôÂæXŠþT¶ÈС7Ò¡74Bo4¶ -µ0QhJBžQº‘†‹2U±V
ØÊ.‹3Œ±Z$ïÙãaN›l’8Îp‰–úrHˆGV€aeYÊJ¯€{–`“6V@W»˜Ú÷¨ëºÜkÊ®K§ñ±z†m·z]wEÊË¢C]Åw÷k៼¿fÌûÚY'ï’ÉIõ=·á
Ñ‚§†õ]* \#1®È#ß5Q•ßÙŠªö -ñC§)v޶á‘#occa(lAб%¼ZD
~mÕ~z*?èn®ãs,`Èl„È£.!„[ˆ™¼À•(ÔbU½%Fõëê-n2\l—!ðp(6Æ`IëÌË‹¸FüåéäM2Uc´ E<Lúˆ7Ž#GiÔ€$–ºM× ÙîGiÇMº.’ñµ~4Hø£ÁN~“–•L=EìuÚÅ8Þp'>òÃÓ/Veïn”ÆàØ -no©Fè…¼ªØ>ŸÔh¬À â Š#;0Ãh˜2ÒÀ¼ÈR°é6ÀºÂ½ÀLaQC
áDø«byY?©„-Ø5Uø___‹C%Œ–w¢ñ;”¢l~_e&ÀÈñ#c#t‰7Ý qÇýs±ùo½”×Ç|5‘ŸuÁº>–ižä•ì)04«œVkÓ☖eÚWÿÂt˜0/ÞRg±aea¬¬È–j‚UÚ ÜÕîÇlj_äeú9£r¶‡ü%/~æ]§x¸Ùøžt¹–k—½åŒÜ êx`,ïêXVÉSÙdާÛUÏ`Zï%@\"°‚)áy:·ŸÓêÊ–®céÌ!Ÿ…ljæÕ0smÕ¼™ààaæVé†ù‰v/ó–¶žE¾-v'ðW¬úY^š¦[üÓwø
ÈNˆˆã‡–0ûÙüÐzë@,ˆ×Cš©ä%N^°¡UL+%eÕP²í—ViƒRW»Ÿ’©½fß©Øãö,WÛ¡Þ"›G^üÓu¡7Ìs5w¯Yº5 -éMYWFî>· yr;…ó‹C²cår -?&tGêu¦•вÒP¼Èæ:6iJW»Š©=žÞoªÃq[‰0É:3o<ÛèÙ#ùuÛ“ÿA:Ç -鎒¡÷yIÓ'§0bRÃífJ
ÍFJÍ;¥ÑE]ØÊsñäù¿ko˲4Ù«7µHë쯵óšÝàAÓRgñŸ¶gò}&ýŸ_Û5ªâ¢a8px!d´\Ë/UWâqxòÕÕ¾§ßý?×!Nqendstream -endobj 2150 0 obj << -/Type /Page -/Contents 2151 0 R -/Resources 2149 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R +/D [2114 0 R /XYZ 85.0394 355.0758 null] +>> endobj +2151 0 obj << +/D [2114 0 R /XYZ 85.0394 355.0758 null] >> endobj 2152 0 obj << -/D [2150 0 R /XYZ 56.6929 794.5015 null] +/D [2114 0 R /XYZ 85.0394 355.0758 null] >> endobj 2153 0 obj << -/D [2150 0 R /XYZ 56.6929 748.5056 null] +/D [2114 0 R /XYZ 85.0394 352.0499 null] >> endobj 2154 0 obj << -/D [2150 0 R /XYZ 56.6929 748.5056 null] +/D [2114 0 R /XYZ 85.0394 337.3452 null] >> endobj 2155 0 obj << -/D [2150 0 R /XYZ 56.6929 748.5056 null] +/D [2114 0 R /XYZ 85.0394 333.8889 null] >> endobj 2156 0 obj << -/D [2150 0 R /XYZ 56.6929 743.7078 null] +/D [2114 0 R /XYZ 85.0394 309.8192 null] >> endobj 2157 0 obj << -/D [2150 0 R /XYZ 56.6929 719.6381 null] +/D [2114 0 R /XYZ 85.0394 303.7727 null] >> endobj 2158 0 obj << -/D [2150 0 R /XYZ 56.6929 711.8197 null] +/D [2114 0 R /XYZ 85.0394 278.3282 null] >> endobj 2159 0 obj << -/D [2150 0 R /XYZ 56.6929 697.0552 null] +/D [2114 0 R /XYZ 85.0394 273.6565 null] >> endobj 2160 0 obj << -/D [2150 0 R /XYZ 56.6929 691.8868 null] +/D [2114 0 R /XYZ 85.0394 246.9367 null] >> endobj 2161 0 obj << -/D [2150 0 R /XYZ 56.6929 665.1671 null] +/D [2114 0 R /XYZ 85.0394 243.5403 null] >> endobj 2162 0 obj << -/D [2150 0 R /XYZ 56.6929 659.9987 null] +/D [2114 0 R /XYZ 85.0394 173.5556 null] >> endobj 2163 0 obj << -/D [2150 0 R /XYZ 56.6929 635.929 null] +/D [2114 0 R /XYZ 85.0394 173.5556 null] >> endobj 2164 0 obj << -/D [2150 0 R /XYZ 56.6929 628.1106 null] +/D [2114 0 R /XYZ 85.0394 173.5556 null] >> endobj 2165 0 obj << -/D [2150 0 R /XYZ 56.6929 601.3909 null] +/D [2114 0 R /XYZ 85.0394 170.4341 null] >> endobj 2166 0 obj << -/D [2150 0 R /XYZ 56.6929 596.2225 null] +/D [2114 0 R /XYZ 85.0394 144.9896 null] >> endobj 2167 0 obj << -/D [2150 0 R /XYZ 56.6929 569.5028 null] +/D [2114 0 R /XYZ 85.0394 140.3179 null] >> endobj 2168 0 obj << -/D [2150 0 R /XYZ 56.6929 564.3344 null] +/D [2114 0 R /XYZ 85.0394 113.5982 null] >> endobj 2169 0 obj << -/D [2150 0 R /XYZ 56.6929 549.6297 null] +/D [2114 0 R /XYZ 85.0394 110.2017 null] >> endobj 2170 0 obj << -/D [2150 0 R /XYZ 56.6929 544.4015 null] +/D [2114 0 R /XYZ 85.0394 95.4372 null] >> endobj 2171 0 obj << -/D [2150 0 R /XYZ 56.6929 529.6968 null] +/D [2114 0 R /XYZ 85.0394 92.0407 null] >> endobj -2172 0 obj << -/D [2150 0 R /XYZ 56.6929 524.4686 null] ->> endobj -2173 0 obj << -/D [2150 0 R /XYZ 56.6929 500.3989 null] +2113 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F39 1151 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 2174 0 obj << -/D [2150 0 R /XYZ 56.6929 492.5805 null] +/Length 2889 +/Filter /FlateDecode +>> +stream +xÚµšMsÛ8†ïþ:JU1† +< +}w„°i5LX[iÂã¶J7„O´{ ·´Xøé«M|§–=w¦í½˜A;ˆ‚ÈÀöHü¿HiþM|˜øh²÷²ÈX–%òž.w˜C +†•…‚²Ò`¯·P°IºÚýLíù&?ýã⯲s¬Ø,¯dSšwç]ù?ý +?â7?Òù1Щsàží’º( +ü6¡¹$´HÊ*K^˜l¦µ£ïÞ©s±ðûgM,&†af0†•…˜²2ˆb6iƒXW»Ÿ˜©½ÞÄÜÎ=ØYEXž(E_q@ü¿Ø&ÁFQã‚Z}ƒ¤Æ¯G¨ù +\'4v¹@`ã£Ø\ÇÄÆ?5ØÄaFÔÊ'0ÝÐA>Lº¦i5S[0-»Uºy¢Ý³¥½©ŠC½KáˆN/ÙAlapød%osk†¼¯fÈCÞ(ò+Å[Œ0$aH;†ü~Îßkºžã)†Â¦^aüâ“4¾:îöG8ÔÊùŴ‰´ÿÄs]8Ç4 #°
+leeÀŽ,°mÒì®v?lS›ÃNÄ>ŠsÁÙô©>µœ_³º2#zas,E*[dè
ÐéС7[ +id„ý4¦Õ0m¥Ñ¡¥ +°I+ «Ý¿Lí{Ôu]î‹5e×¥ÓøX=ö[½‰®»"ååÑÇ¡®â»ûµðOÞ_3æ}í¬“wÉä¤?ÈúžÛð†hÁSÃú.•®‘Wä‘ÊïlEÕ
{…ø¡Ó;G +ÛðÈ‘·±±06Š ÅØ^-¢¿¶j?½F•t7×ñ90d6BäQ—Â-D‹L^àJj±ªÞ£z‹uõ7®G¶Ëx8›c°ˆ¿¤uæåE\#þò‚tò&™ª1ZP"¦}ÄÇ‘…£4j@KÝΦkì÷£4„ã&]ÉøZ?$üÑ`'¿¿IËJ¦ž"ö:íbo¸ùáé+‡²w7Jcðì··T#ôB^UlŸOj4V`qÅ‘˜a4Li`^d)
Øt`]á^`¦°¨¡†p"üU±¼¬ŸTÂ숚*ü/¯¯Å¡FË;ÑøƒJQ6‡F¿¯2`äø‘±ºÄ›n¸ãþ¹Ø‹|·^ÊÖëc +¾šÈÖϺ`]Ë4OòJv‰šU
N«µƒiqLË2í«ÿ +ŒÛÏiueK×±ôƒƒæÏBŽãŒÄaÓj˜¹¶jÞLpð0s«tÃüD»—yK[ÏÇ"ß»ø+Vý,/MÓ~‚é;üd'DÄñCK˜ýl~h½u Äë!ÍTò'/Ø‹PˆÇª¦•…’²j(ÙöK«´A©«ÝOÉÔ^³ïÇTìq{–«íPo‘Í#/þéºÐ湚»×,Ý…ô¦¬+#wŸ[<¹ÂùÅ!Ù±r¹
+…º#õ:ÓÊEYi(^ds›´¥«ÝÅÔOï7Õá¸D˜d™7žmôl‘‡ü€ºíÉÿ ã +.Wçñ|¾FñZD—øw¦~TЙìkUUIw9SAèJ6î$Í«z꾅щlÍ£ü~dÃÏu1dwGÛ›VdÊJ#‰å4i•6uµû‘™ÚËøBm¼DÁ¶Ï9„§L½Î´ç1NîC݇MyúýȺ‡ лéz~ÐÛ–±DÇÊŽ§^I§‚ö;•“~f8ö–…a4LK5eb©TÛtV]á^T¦°Žqn¨bœñ7ƒ´ºsnÔ©b‚å2^Åâêr…tÇÉÐû¼¤é“ÖÓ?±N©áv3¥†f#¥æÒè¢.lå¹x òüßµ·eYšìÕ‹Z¤uö×ÎÚyÍnð i©³xˆ¿OÛ3ùŽ>“þϯíUñ +endobj +2173 0 obj << +/Type /Page +/Contents 2174 0 R +/Resources 2172 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2112 0 R >> endobj 2175 0 obj << -/D [2150 0 R /XYZ 56.6929 467.136 null] +/D [2173 0 R /XYZ 56.6929 794.5015 null] >> endobj 2176 0 obj << -/D [2150 0 R /XYZ 56.6929 460.6924 null] +/D [2173 0 R /XYZ 56.6929 748.5056 null] >> endobj 2177 0 obj << -/D [2150 0 R /XYZ 56.6929 436.6227 null] +/D [2173 0 R /XYZ 56.6929 748.5056 null] >> endobj 2178 0 obj << -/D [2150 0 R /XYZ 56.6929 428.8043 null] +/D [2173 0 R /XYZ 56.6929 748.5056 null] >> endobj 2179 0 obj << -/D [2150 0 R /XYZ 56.6929 414.0996 null] +/D [2173 0 R /XYZ 56.6929 743.7078 null] >> endobj 2180 0 obj << -/D [2150 0 R /XYZ 56.6929 408.8714 null] +/D [2173 0 R /XYZ 56.6929 719.6381 null] >> endobj 2181 0 obj << -/D [2150 0 R /XYZ 56.6929 382.1516 null] +/D [2173 0 R /XYZ 56.6929 711.8197 null] >> endobj 2182 0 obj << -/D [2150 0 R /XYZ 56.6929 376.9833 null] +/D [2173 0 R /XYZ 56.6929 697.0552 null] >> endobj 2183 0 obj << -/D [2150 0 R /XYZ 56.6929 350.2636 null] +/D [2173 0 R /XYZ 56.6929 691.8868 null] >> endobj 2184 0 obj << -/D [2150 0 R /XYZ 56.6929 345.0952 null] +/D [2173 0 R /XYZ 56.6929 665.1671 null] >> endobj 2185 0 obj << -/D [2150 0 R /XYZ 56.6929 321.0255 null] +/D [2173 0 R /XYZ 56.6929 659.9987 null] >> endobj 2186 0 obj << -/D [2150 0 R /XYZ 56.6929 313.2071 null] +/D [2173 0 R /XYZ 56.6929 635.929 null] >> endobj 2187 0 obj << -/D [2150 0 R /XYZ 56.6929 298.5024 null] +/D [2173 0 R /XYZ 56.6929 628.1106 null] >> endobj 2188 0 obj << -/D [2150 0 R /XYZ 56.6929 293.2742 null] +/D [2173 0 R /XYZ 56.6929 601.3909 null] >> endobj 2189 0 obj << -/D [2150 0 R /XYZ 56.6929 267.8297 null] +/D [2173 0 R /XYZ 56.6929 596.2225 null] >> endobj 2190 0 obj << -/D [2150 0 R /XYZ 56.6929 261.3861 null] +/D [2173 0 R /XYZ 56.6929 569.5028 null] >> endobj 2191 0 obj << -/D [2150 0 R /XYZ 56.6929 199.468 null] +/D [2173 0 R /XYZ 56.6929 564.3344 null] >> endobj 2192 0 obj << -/D [2150 0 R /XYZ 56.6929 199.468 null] +/D [2173 0 R /XYZ 56.6929 549.6297 null] >> endobj 2193 0 obj << -/D [2150 0 R /XYZ 56.6929 199.468 null] +/D [2173 0 R /XYZ 56.6929 544.4015 null] >> endobj 2194 0 obj << -/D [2150 0 R /XYZ 56.6929 191.7053 null] +/D [2173 0 R /XYZ 56.6929 529.6968 null] >> endobj 2195 0 obj << -/D [2150 0 R /XYZ 56.6929 176.9408 null] +/D [2173 0 R /XYZ 56.6929 524.4686 null] >> endobj 2196 0 obj << -/D [2150 0 R /XYZ 56.6929 171.7724 null] +/D [2173 0 R /XYZ 56.6929 500.3989 null] >> endobj 2197 0 obj << -/D [2150 0 R /XYZ 56.6929 157.0677 null] +/D [2173 0 R /XYZ 56.6929 492.5805 null] >> endobj 2198 0 obj << -/D [2150 0 R /XYZ 56.6929 151.8395 null] +/D [2173 0 R /XYZ 56.6929 467.136 null] >> endobj 2199 0 obj << -/D [2150 0 R /XYZ 56.6929 137.1348 null] +/D [2173 0 R /XYZ 56.6929 460.6924 null] >> endobj 2200 0 obj << -/D [2150 0 R /XYZ 56.6929 131.9066 null] +/D [2173 0 R /XYZ 56.6929 436.6227 null] >> endobj 2201 0 obj << -/D [2150 0 R /XYZ 56.6929 117.2018 null] +/D [2173 0 R /XYZ 56.6929 428.8043 null] >> endobj 2202 0 obj << -/D [2150 0 R /XYZ 56.6929 111.9736 null] +/D [2173 0 R /XYZ 56.6929 414.0996 null] >> endobj 2203 0 obj << -/D [2150 0 R /XYZ 56.6929 97.2091 null] +/D [2173 0 R /XYZ 56.6929 408.8714 null] >> endobj 2204 0 obj << -/D [2150 0 R /XYZ 56.6929 92.0407 null] +/D [2173 0 R /XYZ 56.6929 382.1516 null] >> endobj -2149 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F40 1146 0 R >> -/ProcSet [ /PDF /Text ] +2205 0 obj << +/D [2173 0 R /XYZ 56.6929 376.9833 null] >> endobj -2207 0 obj << -/Length 2542 -/Filter /FlateDecode ->> -stream -xÚ¥Z[w£º~ϯð£½Ö˜Jqé›'Og’ÔÎô´kÎy ¶â°ŠÁœ9s~}·Ð‘<=]yH>Øß¾c<Að‡'1õI‚I”E˜N¶‡+4ÙÃÞý–2s%47¥®Ÿ¯þrG¢Iâ%¡Nž_{ÅŠc<yÞ}›.žžn–«Îæ>EÓ…7›S„ÔêÍíf6„o¾¢éõêúóêñ~½xúø/qѯˆ¢ÅÃRœl¾Þßßnžoåéúv±\=܃žýöüéêöY?¶ùjþÌÿ¹úöšìà
?]!$1|‡äá$ñ'‡«€„¨•üjsõw}Cc·½tLU”ÄýhDW>ž`ì%”ú=eÑĉOZe-6⵬J›¬,jë[Oq.-#À#KÈpôoë»Pùmˆ‰)òâžßªe†¨2P1¥^jÂ.ËCšâ½ÓÝ!+²º—/«Z¬•.Úóý)Û1?ãà•pH½ cx ~ßBü‹'þ.¸ç, -ÔÆCùÎ/¬g8‰#Ϫl Η6äP·!åP¸’Ò*§$r¨Üm(}ˆmQ» ~S¥T¼¶¼eÚ¤âè.Ë™8º)‹_ò÷'ÁƒX¼ªŽ§œ¦*@™A>O3ì'SÉÇ5cUéÜ{Ü6¥AFB¬d„ †t!T™Rv2´”&#Á¾'tGÆö8=ðQ2tHséÅîÏRâcê…qì÷)Y*6ÒÊô;öRÍâé)~hFB;#¼9EñF)#JJ1â#ŒŒ¸
F†ØFLð3åßTYêLºÇk)u]–Œ(éAz̆UשׁG£TƒÆaŸ‡kÉ×´(²b?`»ç8ÿ˜Q:Í~ϘÅs<>Â_ ©r°$…4I>N$9p
ŽÀŠä¯µTwù:pœEž¥5«L=°æ{Yý»£(Û²qŽÂØ‹ü Ï$ÓC–7Êé4Ik¹ý÷£*Û¿5‚"Ù+æ>I<J¡®˜¾"¬pU€ÍÒ³?˜3“&7;k@£Ä‹¾P)˜RvÖµ”¦=ö©v'tÇûö8ñ=ð¼yNŸgc``Ÿ·z #P¾¦ì寳9 ü骮OÀNk#pÍ -ÇÄ¡V"l·Jäë‘¢š7&vᨒ׷„°FœEÄmÊm™E]â'B‰™`µ¸÷ÕHëÖ&&s-?¦!}™fðŠÊS“}„Õ×iya] ½r°.…é$HÙ…kp> -‘gDDvXýZdüR±(’>¬Ž%PØ×q#êâ,«%7æ-y¨^ôB0WD¡õˈ…§JøŸrö³:û ¸ÊY'ˆŒ¨2”¨‚æËÓF@¨µ> ‡ÐÈ¿P˜R3RRº›‚ÐaF.hÃŒ†Ø32Á¿Öuˆ]Vçê(•:_Ýü -”vйQ`ÅcCÊ¡d%Õi9q¸ŠÚPóÛ¢g\ëss:˪¨ûs™îÔˆ€'+‹¾Ià…1Ì{žy'¤UVo•ÒÇ*˵Ʃ]ã~ì¡(¾0ê1¥WR]Ï8êX'´¡ñ!¶Eã&øBj–íÕdá:³3;txª±ÍKQÎŽŽÓ> zløÓô´Eé˜éÛ EðÂñ…v”r¡¤4$pt‘Nhƒˆ!¶…\g„P× -9±ôIŒ»©Òï¯bF²SÁà´?Õæ!±ò -endobj 2206 0 obj << -/Type /Page -/Contents 2207 0 R -/Resources 2205 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R +/D [2173 0 R /XYZ 56.6929 350.2636 null] +>> endobj +2207 0 obj << +/D [2173 0 R /XYZ 56.6929 345.0952 null] >> endobj 2208 0 obj << -/D [2206 0 R /XYZ 85.0394 794.5015 null] +/D [2173 0 R /XYZ 56.6929 321.0255 null] >> endobj 2209 0 obj << -/D [2206 0 R /XYZ 85.0394 748.4854 null] +/D [2173 0 R /XYZ 56.6929 313.2071 null] >> endobj 2210 0 obj << -/D [2206 0 R /XYZ 85.0394 748.4854 null] +/D [2173 0 R /XYZ 56.6929 298.5024 null] >> endobj 2211 0 obj << -/D [2206 0 R /XYZ 85.0394 748.4854 null] +/D [2173 0 R /XYZ 56.6929 293.2742 null] >> endobj 2212 0 obj << -/D [2206 0 R /XYZ 85.0394 743.3452 null] +/D [2173 0 R /XYZ 56.6929 267.8297 null] >> endobj 2213 0 obj << -/D [2206 0 R /XYZ 85.0394 728.6405 null] +/D [2173 0 R /XYZ 56.6929 261.3861 null] >> endobj 2214 0 obj << -/D [2206 0 R /XYZ 85.0394 723.1655 null] +/D [2173 0 R /XYZ 56.6929 199.468 null] >> endobj 2215 0 obj << -/D [2206 0 R /XYZ 85.0394 708.4607 null] +/D [2173 0 R /XYZ 56.6929 199.468 null] >> endobj 2216 0 obj << -/D [2206 0 R /XYZ 85.0394 702.9857 null] +/D [2173 0 R /XYZ 56.6929 199.468 null] >> endobj 2217 0 obj << -/D [2206 0 R /XYZ 85.0394 688.2211 null] +/D [2173 0 R /XYZ 56.6929 191.7053 null] >> endobj 2218 0 obj << -/D [2206 0 R /XYZ 85.0394 682.8059 null] +/D [2173 0 R /XYZ 56.6929 176.9408 null] >> endobj 2219 0 obj << -/D [2206 0 R /XYZ 85.0394 668.0414 null] +/D [2173 0 R /XYZ 56.6929 171.7724 null] >> endobj 2220 0 obj << -/D [2206 0 R /XYZ 85.0394 662.6262 null] +/D [2173 0 R /XYZ 56.6929 157.0677 null] >> endobj 2221 0 obj << -/D [2206 0 R /XYZ 85.0394 599.7666 null] +/D [2173 0 R /XYZ 56.6929 151.8395 null] >> endobj 2222 0 obj << -/D [2206 0 R /XYZ 85.0394 599.7666 null] +/D [2173 0 R /XYZ 56.6929 137.1348 null] >> endobj 2223 0 obj << -/D [2206 0 R /XYZ 85.0394 599.7666 null] +/D [2173 0 R /XYZ 56.6929 131.9066 null] >> endobj 2224 0 obj << -/D [2206 0 R /XYZ 85.0394 591.7571 null] +/D [2173 0 R /XYZ 56.6929 117.2018 null] >> endobj 2225 0 obj << -/D [2206 0 R /XYZ 85.0394 565.0374 null] +/D [2173 0 R /XYZ 56.6929 111.9736 null] >> endobj 2226 0 obj << -/D [2206 0 R /XYZ 85.0394 559.6222 null] +/D [2173 0 R /XYZ 56.6929 97.2091 null] >> endobj 2227 0 obj << -/D [2206 0 R /XYZ 85.0394 534.1777 null] +/D [2173 0 R /XYZ 56.6929 92.0407 null] >> endobj -2228 0 obj << -/D [2206 0 R /XYZ 85.0394 527.4872 null] ->> endobj -2229 0 obj << -/D [2206 0 R /XYZ 85.0394 502.0427 null] +2172 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F39 1151 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 2230 0 obj << -/D [2206 0 R /XYZ 85.0394 495.3523 null] +/Length 2542 +/Filter /FlateDecode +>> +stream +xÚ¥Z[w£º~ϯð£½Ö˜Jqé›'Og’ÔÎô´kÎy ¶â°ŠÁœ9s~}·Ð‘<=]yH>Øß¾c<Að‡'1õI‚I”E˜N¶‡+4ÙÃÞý–2s%47¥®Ÿ¯þrG¢Iâ%¡Nž_{ÅŠc<yÞ}›.žžn–«Îæ>EÓ…7›S„ÔêÍíf6„o¾¢éõêúóêñ~½xúø/qѯˆ¢ÅÃRœl¾Þßßnžoåéúv±\=܃žýöüéêöY?¶ùjþÌÿ¹úöšìà
?]!$1|‡äá$ñ'‡«€„¨•üjsõw}Cc·½tLU”ÄýhDW>ž`ì%”ú=eÑĉOZe-6⵬J›¬,jë[Oq.-#À#KÈpôoë»Pùmˆ‰)òâžßªe†¨pØ¡bJ½8"Ô„]–‡4+Ä{§»CVdu/_VµX+;]´çûS¶cÆÁ+ázAÆð@ü¾„øOüÿ\6pÏY¨‡ò^X%ÎpGžUÙ@œ/mÈ¡nCÊ¡p%¥UNIäP¹ÚPúÛ¢vü¦<J©xmyË´IÅÑ]–3qtS¿"äïO‚±x[U3O9M#T€2ƒ0 }*žfØO¦’kƪ†R¹÷¸mJƒŒ„XÉèB¨2¥ìdh)MF‚};N莌3ìq2zà£dè0æÒ?ŠÝŸ¥ÄÇÔãØïS²Tl¤•éw쥚ÅÓSZýÐŒ„vF"xsŠâŒRF””bÄG9qAŒ±-Œ˜àgÊ¿©²†U™t×Rëº,QÒƒô˜
«ÞYUF©(ŒÃ>×’‡/iQdÅ~ÀvÏqþ1£tšýž1‹ç8x}„¾@S'ä`I +i’|œ8Hrà
€-È_k©îòuà8‹<KkV˜z`Í÷²úwGQ¶eã…±ùA0žI>¦‡,o”Ói’ÖrûîGU¶k,E +²WÌ}’x”B]1|DX᪠+)ÒI8²×à| +D}`k°ùzH‹v;–<óç‘<k˜¹mP7,ÏKÍt²}Ó|Û«" +éÿBp7¥Œ+)ƒrì Ümp>Ķn‚sF…‹±#ø4¥ w}vÓT`j¯K‚^ñÒ•‹µ±ŸïÄQ¾¯Ì‡‹è8:4‰8Œmúp€ÂŽq~ƒqq¯–p¾óE®nÒ#ü:O‹íkþáAL ƒº”ÍM);áZÊ ÜQ;¡;Â졂 ï?ŠÛrÇx +ÈLíª¯ÝƒïüÂÙ)óWy~„{¹ÿý_ýò£
Šòr,4æ0[ÄV>ýˆzQx)]˜Rv>µTÇ'uNèŽÏ3ìq>{à=}gE7½S.%«‚ó©êÏrjÇtå¬Q„Gõ1þYoÓm»›x1xé„´H!]Ò£ÈÑùp
RÀNä5ƒnŒ°Q3+ZÄpEdôºP•:¢ þ0yCA»/ÁóêÁЯ%k”"J¼8õ÷'IQ猣o(À±&B½ +endobj +2229 0 obj << +/Type /Page +/Contents 2230 0 R +/Resources 2228 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2112 0 R >> endobj 2231 0 obj << -/D [2206 0 R /XYZ 85.0394 420.5376 null] +/D [2229 0 R /XYZ 85.0394 794.5015 null] >> endobj 2232 0 obj << -/D [2206 0 R /XYZ 85.0394 420.5376 null] +/D [2229 0 R /XYZ 85.0394 748.4854 null] >> endobj 2233 0 obj << -/D [2206 0 R /XYZ 85.0394 420.5376 null] +/D [2229 0 R /XYZ 85.0394 748.4854 null] >> endobj 2234 0 obj << -/D [2206 0 R /XYZ 85.0394 412.5281 null] +/D [2229 0 R /XYZ 85.0394 748.4854 null] >> endobj 2235 0 obj << -/D [2206 0 R /XYZ 85.0394 388.4584 null] +/D [2229 0 R /XYZ 85.0394 743.3452 null] >> endobj 2236 0 obj << -/D [2206 0 R /XYZ 85.0394 380.3932 null] +/D [2229 0 R /XYZ 85.0394 728.6405 null] >> endobj 2237 0 obj << -/D [2206 0 R /XYZ 85.0394 365.6884 null] +/D [2229 0 R /XYZ 85.0394 723.1655 null] >> endobj 2238 0 obj << -/D [2206 0 R /XYZ 85.0394 360.2134 null] +/D [2229 0 R /XYZ 85.0394 708.4607 null] >> endobj 2239 0 obj << -/D [2206 0 R /XYZ 85.0394 345.4488 null] +/D [2229 0 R /XYZ 85.0394 702.9857 null] >> endobj 2240 0 obj << -/D [2206 0 R /XYZ 85.0394 340.0336 null] +/D [2229 0 R /XYZ 85.0394 688.2211 null] >> endobj 2241 0 obj << -/D [2206 0 R /XYZ 85.0394 325.269 null] +/D [2229 0 R /XYZ 85.0394 682.8059 null] >> endobj 2242 0 obj << -/D [2206 0 R /XYZ 85.0394 319.8539 null] +/D [2229 0 R /XYZ 85.0394 668.0414 null] >> endobj 2243 0 obj << -/D [2206 0 R /XYZ 85.0394 295.7842 null] +/D [2229 0 R /XYZ 85.0394 662.6262 null] >> endobj 2244 0 obj << -/D [2206 0 R /XYZ 85.0394 287.7189 null] +/D [2229 0 R /XYZ 85.0394 599.7666 null] >> endobj 2245 0 obj << -/D [2206 0 R /XYZ 85.0394 272.9543 null] +/D [2229 0 R /XYZ 85.0394 599.7666 null] >> endobj 2246 0 obj << -/D [2206 0 R /XYZ 85.0394 267.5392 null] +/D [2229 0 R /XYZ 85.0394 599.7666 null] >> endobj 2247 0 obj << -/D [2206 0 R /XYZ 85.0394 252.7746 null] +/D [2229 0 R /XYZ 85.0394 591.7571 null] >> endobj 2248 0 obj << -/D [2206 0 R /XYZ 85.0394 247.3594 null] +/D [2229 0 R /XYZ 85.0394 565.0374 null] >> endobj 2249 0 obj << -/D [2206 0 R /XYZ 85.0394 223.2897 null] +/D [2229 0 R /XYZ 85.0394 559.6222 null] >> endobj 2250 0 obj << -/D [2206 0 R /XYZ 85.0394 215.2245 null] +/D [2229 0 R /XYZ 85.0394 534.1777 null] >> endobj 2251 0 obj << -/D [2206 0 R /XYZ 85.0394 149.4956 null] +/D [2229 0 R /XYZ 85.0394 527.4872 null] >> endobj 2252 0 obj << -/D [2206 0 R /XYZ 85.0394 149.4956 null] +/D [2229 0 R /XYZ 85.0394 502.0427 null] >> endobj 2253 0 obj << -/D [2206 0 R /XYZ 85.0394 149.4956 null] +/D [2229 0 R /XYZ 85.0394 495.3523 null] >> endobj 2254 0 obj << -/D [2206 0 R /XYZ 85.0394 144.3554 null] +/D [2229 0 R /XYZ 85.0394 420.5376 null] >> endobj 2255 0 obj << -/D [2206 0 R /XYZ 85.0394 120.2857 null] +/D [2229 0 R /XYZ 85.0394 420.5376 null] >> endobj 2256 0 obj << -/D [2206 0 R /XYZ 85.0394 112.2205 null] +/D [2229 0 R /XYZ 85.0394 420.5376 null] >> endobj 2257 0 obj << -/D [2206 0 R /XYZ 85.0394 97.4559 null] +/D [2229 0 R /XYZ 85.0394 412.5281 null] >> endobj 2258 0 obj << -/D [2206 0 R /XYZ 85.0394 92.0407 null] +/D [2229 0 R /XYZ 85.0394 388.4584 null] >> endobj -2205 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F40 1146 0 R >> -/ProcSet [ /PDF /Text ] +2259 0 obj << +/D [2229 0 R /XYZ 85.0394 380.3932 null] >> endobj -2261 0 obj << -/Length 2928 -/Filter /FlateDecode ->> -stream -xÚ¥ZKs㸾ûWèºjÅ -á -/ágP´¸hmÞŠ†—ö´z,¾jæž§Dãª;®cÝ>³ts/r/êë¾®Ö2//§¾Çœ;¹Î°Åù®i³5Q÷„#7?Ú¬lòªTÇt°;37Š£Ö…²‚)¡p®]=U6m!_³KN#¾#êK;Ò#KݸÒüŸåöe-K-å“,·²Þ¡VزQ4%Øi/`W‘{=§Ä}ïz×z†«C‹h½1Õz‡º‡Ñ³u+lð3mÕMlšÊÄ5šŠcWÊužRç·ÍB¶Ù w}/±€Ts]ú 5Y£¨{³MÔÅ#Œ…ÂÆÇñ°¹NãÑquxbÄ›FUïñ8Ò=ˆGO÷ùóqoŠ„›$Áÿ€Á¯RuÓU‡Cr‡Ðw!žFgp°¸Fp0\ÁX<‚Øj‡CÝÃ8غ
"Ž5Ø28¨v‡ƒˆ#çd„ùÍ´¸æÈ—e^.©3Û¶«Jñãä…’Vb=Ïs>¸4ñŸ—^³¢ -þU6M¶#šªÔ’\£j0 -p¹ë,µ]ÌÈœve"ù˜wÒ ö]Á‚3õ‚ÍuÒŽ«ƒ4F U½‡ôH÷ ¤=ÝÙ"Cç)srq¾ÊÿDÄT¬ËÊ6ÃjYÉVR¡›]ë( ýç¼ÂÅnÁ"÷1‘qЉ0§‰FXBã^3ý²]¬·å¢i0jˆFhÄ.–/§!…K†ŸÐueR‹kRÃeA:’êFU[ê†ÔÖ}ÙÒŠ…˜¶Ìi¨´6'°Ôí¦ç•D!¯4Ü'½’Ç¡ëû1ïÇÍ{7{`Qbüï/À"|¸¦±3• Í5‹áê`‰F=mLµË¡îaXlÝ_ -*Ñ"§¬ZºêoƒP¡™Ki^Ü<0À‚R}…cn<ù›,Жb"UÿYUÛBS•Vl<gôýc[Ñ+0ª¬´4×$_ÒXja/hõm|¡»-8fÍŸ¦Õz:„ÏF–¹’Ιó¼£/Y4y“2_«ªdÛ±hæ½Bç›çùhs
uÕráK(VKbmùhˆ+ù¦…HúùKÖÀò¨§¬¾MþƒëªlWz.Ø»Yâû*‡+çÀFõŠ{ÅÐYdÖ«vwdØV{zàYO!¹®'¤zÒhƒ; -B…{aª/;ÏÕVÇ -õkD'. ~ØÉõ\°«H_G^²ýèä›»y.‹#<›Ø\ÇÙ„sæ›ØS鄟N$£Z÷‰äHí`"éi¥DÂíW,´Ê^tÙ'Vȇ9r[ФY÷®?$]Y8yúª ô¿ä[œÈ}(97»:_®Tv™ð(†
ø1þÖÂô-"¥% -اÅ÷ñ`èv -`+•Z1†^ž@¼lÐÛeg˜sŠ÷Ó¬[M”›M‘ÓëY3gÖU^ -â§.|Rƒ¶Im3ìê\ñ–/²ƒI/UQTïT`7“.›ŸO@6á™Ë±Í¥"QÏ‘#÷ÒÐ’¥=9:T<{ãJ
Ó±ÒžÓÄÜ
ð׋žÒ'uIâ”Ù»:_h¦t4 ñ‹âh‘£e=A]-¶…ªÙ‚H{"’ÍWÒgÁNe)hXXQ̺€–…–Qj‘è˜/2Õ+.«Jº> -®,¸è«ªíEšN¡hKÂsÚZ–LµYÃÈ{Þ®¨%éƒÞš§ÛBÖÔo²úm_áóAÖ¢û9Ø(ããûÃ÷VSì¡Á
ø9-]@
v´tŸa€¢Á†ÂbC=¹x“¯Á§D°ØLÀ'sŬ(žCW$¢Ae™/¤y}æÝσ€ug¹ÄÚ7JÙÁà„ð“ÿìW¦*œªÕ/õÍ®LWkYm›ƒ»¹ÙÉ+mœ¸p¼gž
-¦Óh˜Î9à˜ÆÎÿ5ºŸQyŸz5Яnçä^Š€W´Rå# >f-„·7ÌQØ¥‡ýýBgQιƒÿ9ÁÕ¥¥¡¾w!Ej™–wa#»š ëÆÌjÁ_+ÊjUq²7â7ZHZ•/4‚Þh3"Ñf€Ä}–Þ6ë…ú}ÎW¹¤Ùd)ýÐD, {ËmmNæ@´zÄC"-|¿¤–zꢗ0Ê{¡d#ÓW¸î_šì0À)¦u¾Ù¿v‡{–²Ñ['1´>å p½|§{ÂÎEàâ¿àë.ÿ÷úXo@‘+âøÄO'^¸094‹Ru¥ÇŽ–nþ'èxíÿMŽæendstream -endobj 2260 0 obj << -/Type /Page -/Contents 2261 0 R -/Resources 2259 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2294 0 R +/D [2229 0 R /XYZ 85.0394 365.6884 null] +>> endobj +2261 0 obj << +/D [2229 0 R /XYZ 85.0394 360.2134 null] >> endobj 2262 0 obj << -/D [2260 0 R /XYZ 56.6929 794.5015 null] +/D [2229 0 R /XYZ 85.0394 345.4488 null] >> endobj 2263 0 obj << -/D [2260 0 R /XYZ 56.6929 749.0089 null] +/D [2229 0 R /XYZ 85.0394 340.0336 null] >> endobj 2264 0 obj << -/D [2260 0 R /XYZ 56.6929 749.0089 null] +/D [2229 0 R /XYZ 85.0394 325.269 null] >> endobj 2265 0 obj << -/D [2260 0 R /XYZ 56.6929 749.0089 null] +/D [2229 0 R /XYZ 85.0394 319.8539 null] >> endobj 2266 0 obj << -/D [2260 0 R /XYZ 56.6929 745.2843 null] +/D [2229 0 R /XYZ 85.0394 295.7842 null] >> endobj 2267 0 obj << -/D [2260 0 R /XYZ 56.6929 721.2146 null] +/D [2229 0 R /XYZ 85.0394 287.7189 null] >> endobj 2268 0 obj << -/D [2260 0 R /XYZ 56.6929 714.4694 null] +/D [2229 0 R /XYZ 85.0394 272.9543 null] >> endobj 2269 0 obj << -/D [2260 0 R /XYZ 56.6929 699.7048 null] +/D [2229 0 R /XYZ 85.0394 267.5392 null] >> endobj 2270 0 obj << -/D [2260 0 R /XYZ 56.6929 695.6096 null] +/D [2229 0 R /XYZ 85.0394 252.7746 null] >> endobj 2271 0 obj << -/D [2260 0 R /XYZ 56.6929 680.9049 null] +/D [2229 0 R /XYZ 85.0394 247.3594 null] >> endobj 2272 0 obj << -/D [2260 0 R /XYZ 56.6929 676.7499 null] +/D [2229 0 R /XYZ 85.0394 223.2897 null] >> endobj 2273 0 obj << -/D [2260 0 R /XYZ 56.6929 652.6802 null] +/D [2229 0 R /XYZ 85.0394 215.2245 null] >> endobj 2274 0 obj << -/D [2260 0 R /XYZ 56.6929 645.935 null] +/D [2229 0 R /XYZ 85.0394 149.4956 null] >> endobj 2275 0 obj << -/D [2260 0 R /XYZ 56.6929 631.2303 null] +/D [2229 0 R /XYZ 85.0394 149.4956 null] >> endobj 2276 0 obj << -/D [2260 0 R /XYZ 56.6929 627.0752 null] +/D [2229 0 R /XYZ 85.0394 149.4956 null] >> endobj 2277 0 obj << -/D [2260 0 R /XYZ 56.6929 603.0055 null] +/D [2229 0 R /XYZ 85.0394 144.3554 null] >> endobj 2278 0 obj << -/D [2260 0 R /XYZ 56.6929 596.2603 null] +/D [2229 0 R /XYZ 85.0394 120.2857 null] >> endobj 2279 0 obj << -/D [2260 0 R /XYZ 56.6929 572.1906 null] +/D [2229 0 R /XYZ 85.0394 112.2205 null] >> endobj 2280 0 obj << -/D [2260 0 R /XYZ 56.6929 565.4454 null] +/D [2229 0 R /XYZ 85.0394 97.4559 null] >> endobj 2281 0 obj << -/D [2260 0 R /XYZ 56.6929 550.7407 null] +/D [2229 0 R /XYZ 85.0394 92.0407 null] >> endobj -2282 0 obj << -/D [2260 0 R /XYZ 56.6929 546.5857 null] ->> endobj -2283 0 obj << -/D [2260 0 R /XYZ 56.6929 531.8211 null] +2228 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F39 1151 0 R >> +/ProcSet [ /PDF /Text ] >> endobj 2284 0 obj << -/D [2260 0 R /XYZ 56.6929 527.7259 null] +/Length 2928 +/Filter /FlateDecode +>> +stream +xÚ¥ZKs㸾ûWèºjÅ +<ÃL[µFÛ„¦2q¦âØ—r“§Ôùm»”m6dÂ]ßK, Õ\—¾HMÖ(êÞl[ç5Gñcᆰñq<l®Óxt\ñ¦QÕ<ÞéÄ£§ûüù÷Ã͸7EÂM’àÀàW©ºéºÃ!9Cè»O£38X\#8.ƒƒ`,ÁaLµ…ñîalÝÇlT»ÃAÄ‘ó2Ââæ +Z\sä«2/WÔ™íÚu¥øßãä…’Vb=Ïs>¸4ñŸ—^³¢ +>4°îëEáz—S×ç¶¹e¦%]×ò¹*©^a ÆT6Z³âÀÌ‚6•}·×>”Ý!AGµ«Ýj=]â"¾Uõ‹*Aqþ²Jw¨LÿªúÄñ¾æ›r•—YVëéú°eóBÌpÜäÂøÚÄatÑãë{‘^£*abG]*£ÈÉ +-S¢&ôjô°§Š[š^@-]âó•"6\e
µ©ü +eöšÕ÷+ +îÜn¶E†ýªÖÒ»ó‰©Üa¢ -rʪժ«þ6š¹’æÅÍs,¨!ÕW8æÆ“¿Êm)61!Rõÿž¸šuµ+4UiÅÆSFß?v½±£Êj@KsMòÕù(¥öŒV_ÑÆº»²€cÖüiZm¦Cøle™+éœ9O{ú’E@c™7i!óÊ¡j@¶‹f>!t¾yž6×PW-¾„bµ"Ö¦q‘†è¡±–¯Zˆ¤O‘?g
,zÊZáÛä?¨±©Êv炽›%¾s¸rlT¯8°Wef½jwG†mõ¸§žôT’ëzBª'f08°÷AAè p"Lµbá…aç©ÚéX¡~èäÂÄ;¹žvéëÈsV£|s÷"Ïeqäg›ë}6᜹À&ÂT:á§É¨ÖC"y§v0‘ô´R"aö+ÚGe/:„ì+äܹ+hÒ¬€{ןG’®À,œ<}Qú_òNä>”œÛ}¯Ö*»LxÃükaú‘Ò +¥ë,ž'šž^¦°ƒŽ_R‡„>+²(»¡°Ä¼Õ2r•´0b¯P+Ê3=ØTô¥¸E-ŒØJ¥VŒ¡—'/ôvEÙæœâýt+ëVåv[äôzÖÅ™MÕ…À)“M^à 1ÊßošžÊ¢ *¬hC´ÃFuxZ‘ƒQv{BŠŠ©ÓvÞ÷±0Àª& •kã^.õS…RUiªÑ½‘ÿQIh +®,¸è«ªíEšN¡hKÂsÚZ–LµYÃÈ[Þ®©%éƒÞš§»BÖÔo²úõPáóAÖ²û9Ø(ããûÃ÷VSì¡Á
ø9-]@
öné>à +\˜šE©º¬ôxéæ‚Þ¯ý¿Ô!
Jendstream +endobj +2283 0 obj << +/Type /Page +/Contents 2284 0 R +/Resources 2282 0 R +/MediaBox [0 0 595.2756 841.8898] +/Parent 2112 0 R >> endobj 2285 0 obj << -/D [2260 0 R /XYZ 56.6929 501.0062 null] +/D [2283 0 R /XYZ 56.6929 794.5015 null] >> endobj 2286 0 obj << -/D [2260 0 R /XYZ 56.6929 496.911 null] ->> endobj -766 0 obj << -/D [2260 0 R /XYZ 56.6929 464.7873 null] +/D [2283 0 R /XYZ 56.6929 749.0089 null] >> endobj 2287 0 obj << -/D [2260 0 R /XYZ 56.6929 439.0859 null] ->> endobj -770 0 obj << -/D [2260 0 R /XYZ 56.6929 352.4521 null] +/D [2283 0 R /XYZ 56.6929 749.0089 null] >> endobj 2288 0 obj << -/D [2260 0 R /XYZ 56.6929 326.7507 null] +/D [2283 0 R /XYZ 56.6929 749.0089 null] >> endobj 2289 0 obj << -/D [2260 0 R /XYZ 56.6929 290.6891 null] +/D [2283 0 R /XYZ 56.6929 745.2843 null] >> endobj 2290 0 obj << -/D [2260 0 R /XYZ 56.6929 290.6891 null] +/D [2283 0 R /XYZ 56.6929 721.2146 null] >> endobj 2291 0 obj << -/D [2260 0 R /XYZ 56.6929 290.6891 null] +/D [2283 0 R /XYZ 56.6929 714.4694 null] >> endobj 2292 0 obj << -/D [2260 0 R /XYZ 56.6929 290.6891 null] +/D [2283 0 R /XYZ 56.6929 699.7048 null] +>> endobj +2293 0 obj << +/D [2283 0 R /XYZ 56.6929 695.6096 null] +>> endobj +2294 0 obj << +/D [2283 0 R /XYZ 56.6929 680.9049 null] +>> endobj +2295 0 obj << +/D [2283 0 R /XYZ 56.6929 676.7499 null] +>> endobj +2296 0 obj << +/D [2283 0 R /XYZ 56.6929 652.6802 null] +>> endobj +2297 0 obj << +/D [2283 0 R /XYZ 56.6929 645.935 null] +>> endobj +2298 0 obj << +/D [2283 0 R /XYZ 56.6929 631.2303 null] +>> endobj +2299 0 obj << +/D [2283 0 R /XYZ 56.6929 627.0752 null] +>> endobj +2300 0 obj << +/D [2283 0 R /XYZ 56.6929 603.0055 null] +>> endobj +2301 0 obj << +/D [2283 0 R /XYZ 56.6929 596.2603 null] +>> endobj +2302 0 obj << +/D [2283 0 R /XYZ 56.6929 572.1906 null] +>> endobj +2303 0 obj << +/D [2283 0 R /XYZ 56.6929 565.4454 null] +>> endobj +2304 0 obj << +/D [2283 0 R /XYZ 56.6929 550.7407 null] +>> endobj +2305 0 obj << +/D [2283 0 R /XYZ 56.6929 546.5857 null] +>> endobj +2306 0 obj << +/D [2283 0 R /XYZ 56.6929 531.8211 null] +>> endobj +2307 0 obj << +/D [2283 0 R /XYZ 56.6929 527.7259 null] +>> endobj +2308 0 obj << +/D [2283 0 R /XYZ 56.6929 501.0062 null] +>> endobj +2309 0 obj << +/D [2283 0 R /XYZ 56.6929 496.911 null] +>> endobj +770 0 obj << +/D [2283 0 R /XYZ 56.6929 464.7873 null] +>> endobj +2310 0 obj << +/D [2283 0 R /XYZ 56.6929 439.0859 null] >> endobj 774 0 obj << -/D [2260 0 R /XYZ 56.6929 241.4457 null] +/D [2283 0 R /XYZ 56.6929 352.4521 null] >> endobj -2293 0 obj << -/D [2260 0 R /XYZ 56.6929 201.7704 null] +2311 0 obj << +/D [2283 0 R /XYZ 56.6929 326.7507 null] >> endobj -2259 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F40 1146 0 R /F14 952 0 R >> +2312 0 obj << +/D [2283 0 R /XYZ 56.6929 290.6891 null] +>> endobj +2313 0 obj << +/D [2283 0 R /XYZ 56.6929 290.6891 null] +>> endobj +2314 0 obj << +/D [2283 0 R /XYZ 56.6929 290.6891 null] +>> endobj +2315 0 obj << +/D [2283 0 R /XYZ 56.6929 290.6891 null] +>> endobj +778 0 obj << +/D [2283 0 R /XYZ 56.6929 241.4457 null] +>> endobj +2316 0 obj << +/D [2283 0 R /XYZ 56.6929 201.7704 null] +>> endobj +2282 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F39 1151 0 R /F14 956 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2297 0 obj << +2319 0 obj << /Length 2294 /Filter /FlateDecode >> @@ -10785,47 +10918,47 @@ bsب– ²y<ChR µJH%âWÇ«jØb€;WP§ªbu8›ZÎURC—iÑÁ„&L^š P#¢
&6æ0wV}-±b]íO«–í%9µ2¶žTû¾Ò“žAäíEÑѣ̀~ãÊ»Ì^¹¾'åe ±)ìúŸ`ÖnqaSx¿áÄ«¶´¥$ÓÕå„á#áQàY1Ó½|Os‘ï¤Íw¿”Æ æƒ’ÊáNšë¥jÚZÓ‡„—8@Ääܘêån zs€{Uêq€»;9Àˆýp2ßh0á–ÂCP˜XÃg‰±ˆ€âLî€×ÛÈwƒã´‚ðYÝ26iàÞ.‘ØO|)Úˆ8ñKD˜‰••@Åt"'%M_ñX¨Ù«9÷}WúL¾qŸ#ªWî³§zû>_“:ºÏs±Ó÷9K^"áÐtÀ¼¿TF¹ ‘Ë¥é:$ã˜b¯¦m‹ì›ýpG'ßNìWšèäúÍÖ’žm/zèᢋÛYìÜå´dF+ö‰™Ú¡¾™ 8¢oX/dîpг:áØ8Ò WÐBi:–Ž™ .Ó>÷7ŠCßfœÈ²‰œ#„‰¸§Ú¯ua‡H;B£x“kéƒÞqàõÁûxÁÏD‚…¶êÚ³IÙªJ¹’Ì
Exêìc…±dÐż³@©ß•%±3Hqøñ….oÔ~½9»åη¨ks“ÓÛ;‚W%0þ5=ÿ}Ï ÷Âòÿ?]¾}¾‘Ž_§œòÕVx*åW1ùQž
%ìoÿ{☻dèŠ(ò¦sˆ€\Sï… -qŸÝP¨#/œ8ûI<»àendstream +qÏ??º/ PG^8qöÿIì»äendstream endobj -2296 0 obj << +2318 0 obj << /Type /Page -/Contents 2297 0 R -/Resources 2295 0 R +/Contents 2319 0 R +/Resources 2317 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2294 0 R ->> endobj -2298 0 obj << -/D [2296 0 R /XYZ 85.0394 794.5015 null] +/Parent 2112 0 R >> endobj -778 0 obj << -/D [2296 0 R /XYZ 85.0394 662.3711 null] ->> endobj -2299 0 obj << -/D [2296 0 R /XYZ 85.0394 634.4781 null] +2320 0 obj << +/D [2318 0 R /XYZ 85.0394 794.5015 null] >> endobj 782 0 obj << -/D [2296 0 R /XYZ 85.0394 566.8617 null] +/D [2318 0 R /XYZ 85.0394 662.3711 null] >> endobj -2300 0 obj << -/D [2296 0 R /XYZ 85.0394 536.3186 null] +2321 0 obj << +/D [2318 0 R /XYZ 85.0394 634.4781 null] >> endobj 786 0 obj << -/D [2296 0 R /XYZ 85.0394 411.7882 null] +/D [2318 0 R /XYZ 85.0394 566.8617 null] >> endobj -2301 0 obj << -/D [2296 0 R /XYZ 85.0394 386.7645 null] +2322 0 obj << +/D [2318 0 R /XYZ 85.0394 536.3186 null] >> endobj 790 0 obj << -/D [2296 0 R /XYZ 85.0394 230.2565 null] +/D [2318 0 R /XYZ 85.0394 411.7882 null] >> endobj -2302 0 obj << -/D [2296 0 R /XYZ 85.0394 203.9874 null] +2323 0 obj << +/D [2318 0 R /XYZ 85.0394 386.7645 null] >> endobj -2295 0 obj << -/Font << /F37 1014 0 R /F14 952 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R >> +794 0 obj << +/D [2318 0 R /XYZ 85.0394 230.2565 null] +>> endobj +2324 0 obj << +/D [2318 0 R /XYZ 85.0394 203.9874 null] +>> endobj +2317 0 obj << +/Font << /F37 1018 0 R /F14 956 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2305 0 obj << +2327 0 obj << /Length 2527 /Filter /FlateDecode >> @@ -10842,50 +10975,50 @@ A!zBΪª zÊaÄwIl3H’ ²R7IK#«pˆ1‚¾‡JʤM.“]²È‹¼=Ð<QÊF,\zÔya`,öºu1ƒâA ävXíÐð0Išõ› ±ÕFM-‡ÇJ
ðk¿ãètw«é¬÷˜Øšwg=§ H¨ã -e0ì>Ùr${ÑÁãÍðÍtÜŠzéÙüDñùîÏ¡9rP#nßÔ“±ÏOè(µ”GµMo£g~ÿÑèþ¾–Ž¥4úøôyyyI´î KyÅK¶˜¦C7c§±¯ë)ÆãØ£‘8hyøíÎ,|¦ïO ðOcŸõ;²2ˆm–h CnÚwš‡i3ÁEHèówUfÿ4ûðU‚ð`¡É×%Ý(í6O!•î‰%[VÏ¥!Ø£Ò``Û.X»+ÛÚÐÝUù‡ž×]DÎïa38îÈË-Õ6oé+ª&i6‰ ‰yÊÄ_ìE\áê⃣òþR5âѼ«ÃÿïÄŽ/—T•Ñ¥^A†Ð±Ä06B¡„”ç‘Ôütv.û<c-œendstream +e0ì>Ùr${ÑÁãÍðÍtÜŠzéÙüDñùîÏ¡9rP#nßÔ“±ÏOè(µ”GµMo£g~ÿÑèþ¾–Ž¥4úøôyyyI´î KyÅK¶˜¦C7c§±¯ë)ÆãØ£‘8hyøíÎ,|¦ïO ðOcŸõ;²2ˆm–h CnÚwš‡i3ÁEHèówUfÿ4ûðU‚ð`¡É×%Ý(í6O!•î‰%[VÏ¥!Ø£Ò``Û.X»+ÛÚÐÝUù‡ž×]DÎïa38îÈË-Õ6oé+ª&i6‰ ‰yÊÄ_ìE\áê⃣òþR5âѼ«ÃÿïÄŽ/—T•Ñ¥^A†Ð±Ä06B¡„Î#©ùéì\öÿ=- endstream endobj -2304 0 obj << +2326 0 obj << /Type /Page -/Contents 2305 0 R -/Resources 2303 0 R +/Contents 2327 0 R +/Resources 2325 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2294 0 R -/Annots [ 2308 0 R ] +/Parent 2333 0 R +/Annots [ 2330 0 R ] >> endobj -2308 0 obj << +2330 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [344.9397 501.3201 406.1397 512.7122] /Subtype /Link /A << /S /GoTo /D (trusted-keys) >> >> endobj -2306 0 obj << -/D [2304 0 R /XYZ 56.6929 794.5015 null] ->> endobj -794 0 obj << -/D [2304 0 R /XYZ 56.6929 609.3932 null] ->> endobj -2307 0 obj << -/D [2304 0 R /XYZ 56.6929 583.208 null] +2328 0 obj << +/D [2326 0 R /XYZ 56.6929 794.5015 null] >> endobj 798 0 obj << -/D [2304 0 R /XYZ 56.6929 484.1849 null] +/D [2326 0 R /XYZ 56.6929 609.3932 null] >> endobj -2309 0 obj << -/D [2304 0 R /XYZ 56.6929 454.463 null] +2329 0 obj << +/D [2326 0 R /XYZ 56.6929 583.208 null] >> endobj 802 0 obj << -/D [2304 0 R /XYZ 56.6929 405.4622 null] +/D [2326 0 R /XYZ 56.6929 484.1849 null] >> endobj -2310 0 obj << -/D [2304 0 R /XYZ 56.6929 378.8348 null] +2331 0 obj << +/D [2326 0 R /XYZ 56.6929 454.463 null] >> endobj -2303 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F14 952 0 R /F22 949 0 R /F21 926 0 R >> +806 0 obj << +/D [2326 0 R /XYZ 56.6929 405.4622 null] +>> endobj +2332 0 obj << +/D [2326 0 R /XYZ 56.6929 378.8348 null] +>> endobj +2325 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F14 956 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2313 0 obj << -/Length 2457 +2336 0 obj << +/Length 2458 /Filter /FlateDecode >> stream @@ -10893,42 +11026,42 @@ xÚÍZ[oÛ:~ϯðÛq€c–w‰yKÛì"»9Ù&vÑöA±åD¨,¹’œË¿ß!‡TD[¶Hv±(ZÓähøif8ó
k6¡ð‡MRE¨0r’ ‡P¡‹¾¶Ù}ÈœC¡‰¿…d:žÁ8gD =QüL¾=}³Â‘RU˜Œé·
é˧‰{‡ƒ/_vpJ©Ìû 7‚$B¦òîe{ÈEµÞì&!ç“wÛ+<VHM4$ì¬QWйo%š‡€2NâÏuWÔUÈ.Œ-¹vι߬ ¿¶gû¬Œ¤F¡¦C©ý ¶—RÓ=…˜[ú,U´ÿÛ*qÐx,ãˆ{„v_){Ãåa3õR#[Gõ@H IŠ·¶9Kj(ÅGqý• f=XðNïÔ_©0ÁLs¡þÂðµþÚ
úúë´õ(ŸqY`è¹tÁÄBò$‰aUûÐnÖëºéòE8g¡ª>0\²Á™Ùèuy|OŒÊÔ@3æpŒ¥öÇh/åbtoºbÔÀù‚`j}[|G€2Æ ‰Ž‘ÚŒµƒQpB5OÛ§—Ù7&+ ¡R²xß×ndÈHÀ^8aQ3DoËÜmÏyòe¶)½ÙC$ôõ{ù ¤<Hçé±PH… e_t´0Fm®ÐѶoì¼Æ#m_¡ êÆ _KAœKbh*§—Ù9ŽNÒÔ¤ñΞ5z"6pø6‰mãà.j§Zø˜È³Ð”EåÅæPÆ`‹¶£§¬Õ}¹‡;{Ͼ-uÌTFl,ŽËp
ÅÜûôôDMë³[=; ¨ò.@UKžŸŸƒš1ž.4I5³'P‘$õi‰ºˆ‰z“ùi»ýT½¿üꚬj³¹MÞte¹ô8%¿td6í/œ9îÃ|Ÿá†è¾~¥¿/ÀlÎC±I$v ,°>]7E…þcá\³àý5x7G±§¢{ÀµUQ«¬Ä/kdÐs(9àlçTÕ#^Ôy[ýæ¿À«{ˆã|ÜòuŽv7ðm„]3s£§E‡ËmW¯[zÂÏ· ¤px—í¾¾ã bzéQ×Nñˆk¡!µíïÛŒbÓeÑùbq¥‘Gåþ`…¸Þ=·,M‰N( -É)´ ½
n»v—?dEÈ€Ò‰£~v›.û™±)8±sY©F)á ¨ +É)´ ½
n»v—?dEÈ€Ò‰£~v›.û™±)8±sY©F)á ¨ endobj -2312 0 obj << +2335 0 obj << /Type /Page -/Contents 2313 0 R -/Resources 2311 0 R +/Contents 2336 0 R +/Resources 2334 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2294 0 R ->> endobj -2314 0 obj << -/D [2312 0 R /XYZ 85.0394 794.5015 null] ->> endobj -806 0 obj << -/D [2312 0 R /XYZ 85.0394 650.8348 null] +/Parent 2333 0 R >> endobj -2315 0 obj << -/D [2312 0 R /XYZ 85.0394 625.7398 null] +2337 0 obj << +/D [2335 0 R /XYZ 85.0394 794.5015 null] >> endobj 810 0 obj << -/D [2312 0 R /XYZ 85.0394 378.0874 null] +/D [2335 0 R /XYZ 85.0394 650.8348 null] >> endobj -2316 0 obj << -/D [2312 0 R /XYZ 85.0394 350.2627 null] +2338 0 obj << +/D [2335 0 R /XYZ 85.0394 625.7398 null] >> endobj 814 0 obj << -/D [2312 0 R /XYZ 85.0394 153.7325 null] +/D [2335 0 R /XYZ 85.0394 378.0874 null] >> endobj -2317 0 obj << -/D [2312 0 R /XYZ 85.0394 128.6375 null] +2339 0 obj << +/D [2335 0 R /XYZ 85.0394 350.2627 null] >> endobj -2311 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R >> +818 0 obj << +/D [2335 0 R /XYZ 85.0394 153.7325 null] +>> endobj +2340 0 obj << +/D [2335 0 R /XYZ 85.0394 128.6375 null] +>> endobj +2334 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2320 0 obj << -/Length 2392 +2343 0 obj << +/Length 2393 /Filter /FlateDecode >> stream @@ -10938,88 +11071,91 @@ xÚÅY_sÛ8ϧðtîAž]sùWsOé5·“Ý6—xgî¦ÛÅV]m˵”¦î§?€ eÊ–Îv(Aø€ÅˆÃ12)K´ =GƒjÁ‘žÓ`§y½„´ÏŸV‡;äf‘9}¢Øƒ"Ÿ26ǨrÅR®ÒÓŒ¹Ž°ãBåW`’CØ+¹W€‰o(À΀3+2qz×À.úg`XŽÖÛÆ-Þ(AÐn×{‡»r½.7…OQ0£¸¬¨Äå#˜ÅUŒÄMøvs˧!V£îhL(£˜0ùÙdÌuâH—;Ò¥o?ÕàPÀʜԤãP¥Ÿj(ØSÓ×¥;%C“¨‘'Õô¼ó3¤÷KÈ.<Óv]ÍŠ½”_ j[áëÉϾh’Y²¨¡ò«?ú—ê£çE›Ì€ÈWL+¸½zØ;þF6¼¹ÙùÒÍ›¬¦øç…°cGÈ\™Jõ7ÝÁZÀ-l¾…¡pqÇeÑwdùaøbïBïš¹Òõì²^ u»¿Ám¤2ðAiS&”²Î"o£FŒIáÎuU3J xõ«À¶m*“Ë}Ë€LžÉlW ìÖ:_} @S,ìS4v{ÝÙÀ~ºZÊÑ›v4Š6ObÉnSi쥬Ÿq@ß÷q-6ž»¼³Á¶š•c¸½±½&²¤ô¸€,ØÁg½¡ºdâéKüÒÁ ÔGÏ^¬×›zí¿éú¨
™"ù<–&qp‰¬¡që?ÖÉW4`Vö·!ŒîÇÊé@5Nßfy -—„oÍ98ŒÍ již–î•.¡UÔèj”ëй^ÖQ›ENj¾×¡ËÚB-3s½h˜£üG®ù…ßQ‹GC.ý9òÃtRr.Îçwùù9”ªúG
½ÿ«dZgNÂ_ +—„oÍ98ŒÍ již–î•.¡UÔèj”ëй^ÖQ›ENj¾×¡ËÚB-3s½h˜£üG®ù…ßQ‹GC.ý9òÃtRr.Îçwùù9”ªúG
½ÿ«dZgNÂ_ endobj -2319 0 obj << +2342 0 obj << /Type /Page -/Contents 2320 0 R -/Resources 2318 0 R +/Contents 2343 0 R +/Resources 2341 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2294 0 R +/Parent 2333 0 R >> endobj -2321 0 obj << -/D [2319 0 R /XYZ 56.6929 794.5015 null] +2344 0 obj << +/D [2342 0 R /XYZ 56.6929 794.5015 null] >> endobj -818 0 obj << -/D [2319 0 R /XYZ 56.6929 740.3318 null] +822 0 obj << +/D [2342 0 R /XYZ 56.6929 740.3318 null] >> endobj -2322 0 obj << -/D [2319 0 R /XYZ 56.6929 714.7319 null] +2345 0 obj << +/D [2342 0 R /XYZ 56.6929 714.7319 null] >> endobj -2318 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F14 952 0 R /F62 1347 0 R /F41 1203 0 R >> -/XObject << /Im2 1336 0 R >> +2341 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F14 956 0 R /F62 1352 0 R /F41 1208 0 R >> +/XObject << /Im2 1341 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2325 0 obj << +2348 0 obj << /Length 1890 /Filter /FlateDecode >> stream -xÚÉnÛ8ôî¯ðQj–›¶™SÚ¦ƒE›IR`i²DÇBµ¸’'óõóÈGÊ’$t’ƒžÉÇ·o$›SøgóÈ'TÄrÆ’ø”ùó´œÑù=ìý1cgé–C¬w7³·E8Ið`~³ÐŠ"6¿Én½³ËËó/.þZ,¹O½3²Xú”ºÕ÷ç׋%“aÌaGê½€zï.¾|@ì?¾\#ðùâÝÕÙÕB„Þ߸pýíòò«Y¸YÜÝ|šßôBcTh‰Înïè<ý>Í(qäÏ÷ðƒÇ|^Τ/ˆ/…p+ÅìzögOp°kŽNÊñ#NXŠó)Kù1 ÆRÍ‚Ež*ëÕ¢vIQ pueWÖu〚dOURæ)QI¹-Ië7wm^Ý#Øm÷ùƒªü¡žŒ1h“`l /… Œ9çS€(8j·M½R¿-–‚Q/«Ë$¯Þ‚–E«šeåK7*ýá~ä–q§šÒ*R¯fß# i(<|,—$–Ly.:àøH¾E8Ñ Üíž&¿(ŸEêj‡¥ìÂÆ(¿†Pþ•oDn¥6ɃÝHë=—vÅÖ -›Ã¨ðP*0¨©cŒÄ¾ÏbZ}Kïf“ë3Œ{øe@.-v™ÊÜ/ÜEÉ`5‡ÃC/˜x@xkd«ï›¤´T)4Ö¦Þ#dIõ¸KµÈWMÒ<áFšT¬îîÚc¹’)ý …—h¥"éô ßÛm‘§I—×é…$@úз6¹wѦcÏh²²Ñv»Ìîôp -Ÿ8k…“,C#µÓ-¯¶»îXnÁ Êþ?¹{НÈ-xL"Åc¹¿SÊug|ù*IƾóedP¾nµ›Û“*M õ¡Ø:Xh<Ý},Îr€„’±‰’ê4Óev̪²”òe~ç”ßÐqL$÷ÇüšEäíª£¢ç*ðwÎe¦V»{
àRYgŠ` îónãä®H›!|ÿûÜu‡lWnRP¿žŽZFÞá×Ö(} %Ϲz¡œ±—ý0ÄzÞ=–ñÄÉ'‰âà–i‚åȉÂðˆ%TMÔ9iÉÀ:«ºÍ»§qªÁE¶SUuS&Ö¬Em{h é…¨µžºéýcŠ¡œOÚJs®Â•»¢ËM-6žÍÔ³¦÷9aBðWL?ÀzÁô˘þ¥ -È8%aàÙÿR%é)¾"+ã‚„þ‘¬º -`4‰i_õÞÛ‡XxŸª|.ò9ºõ
€2°ÅÖZUe¦„¦óÁ–Űós§šÜ¤,›á&èZ…û‡«.¬c±Ö¤ëÒîŽæBËMdghR½‹é7M»*s“T?öj‡þ~4¥IQàÄ{̲þɺç0%ýÜκÛv´f'Ìì$28z¯ñ=PW…O ȆýCGhŸ9>»¯™£ÕZ5ªJQá—_'δ·1ýµY# 5y -jm¥ -·Çª¿k7„ÂAk™T»¤°ZÈ[xC[úê1UÛ 8tIMw%DEÚ¨%\±nÝŸšH˜p°™µ}k²Iò +xÚÉrÛ6ô®¯Ð‘š‰l\Оœ&í¸ÓI\Çi'ñ"!‹.*Iyé×÷ H‰¶;“Ú>oß +‰ÖRíŠ%®š{Ý¡viY"p}íV¶Më†äOuZÑiµ/5Éš +7]Qß!Øï4wŽ®ü¦ŸVŒ±€“`l$]®… ŒyçS"(8îöm³Ñ?¬Ö‚Ñ oª´¨ß‚ŽE§Û{íäËv:ûæŽq¯ÛÊ)Òlf?ÿ„€¤±tòð©<\%™´ò\öÀ; +‘|‡pj>¸»=CÚ|Q>‡Ô7K»…P~¡ü"z*Þ„ÜFïÒ{·‘5-z.ëË'<l¶‡Qá±TFaPÓ(ÆQaÈbF}©dp³+ÌÆü2 —•‡\çþî¢d°€šÃŠåal< ¼·²5wmZ9ªÖk×< ä€Iý¸oZGµ,6mÚ>áF–Öl4îºS¹Ò9ý …×h¥2íÍ ßû}Ydi_45ÅD H sè.½óÑfbÏj²qÑöeßzèþØÀ&äö}Yg. Sˆ™ÓÁÈP‰eysÿ—*Á‰J’d¾F¬Šë1ÉóÀa—Š9…Ó<G#uר÷‡þTnÁ#’Êþ?¹Š¯È-¸" KÔTòRßZB¾JÇ*ô¾L,ʧ½qswV¥)¡!›ÈUóÝÇá¬GH(›)©É0]ç§ü *K)_æçqÎù-¡‘<œòkWIp¨OŠž¯À_9—¹Þî€KU“k‚úPô; ðEÒÚá³ø(|wÈÕ!
õëé¤e=~]ÒÐ:òœ wÊ{Ùc¬ç1`YOÜŸyBDE¯°ôH3,'¾HHÇ',¡j¢ÎiçLÖÙ4]Ñ?M{P.rªnÚ*uf-×C+HG(DóÔÍà[
à}ÒíuV˜dð®:”}ak±õl¤ž5}È ‚¿búÖ¦÷XÖô/U@Æ)‰£pÊþ»*É@ñY$Od5¬}&e˜ˆ‰—mä‘føŽc…E0Æ))¦Œç¶¶É©Àö8NƒË+÷ûX–qÃ6Zø¦¸ïRëÐv… +`ç+
©18b +‰ù<Û¡#ÓD¾lœk†ó$“'I¢’)g“Ty,ì}5¨©{ˆ/{=1;¹,º!‘ð=Æ!æÒ?M]"9‚‚6äá»q¼†4ÊM€%Ið°3÷K»*z;{Ús;'R×§õÚM.à)’“HL-E[Ð#ç|ú¹ò™œ…ô2Œaê >ؤ2ëeQ;l9‘ +&ô¼ÅxŽI‡›)~ÌÅ®tG½‰ì/a€qð\SwԌ抸žæ6Iwo48Vl\Z’jH[ì…r˜I䈫¸Jès]kíOh\H÷ú—Žèht_qW|Gã’qû¡.‹oî·ëÍ3ÅÂH¿k¬Šap¸KQoذ¯Ù{xxX)ŒïÎfÙ„˜‰ÁO.sÜÑ"¨C¹®û£‡`Àj¢èPÍÞÛÇXxŸ«|>ò9ºõ
€2rÅÖ:]ç¶Ä¶óÑ–«Å°ó÷A·…MX¶)ÂmÐu÷W]XÇbmH7•Û·&í…–ÛÈÎѤfÓo&šuî'©aì5ýñd<ÊÒ²Ä7ˆ7î&˜çÓ…sÏqJ¶úùm¿?îÍΘ¹Id<>pÞâ{ ®Š@‘‡‡ŽØ=süæ/¼vŽÖ[Ýê:C…_~¸0ÞXÄÌ×e€"Ô=(h´•6pd@´Â«üný +®UZÒÒi=!ïà
üíèëÇLï{$àe0%5;Tµi§St–ðźó?Bj#aÆÁ~dÖîÉ%É=ËxA÷~ÊÎ5TüÒÄúq_¦µ½òw&ÙÞœ¸Ø?]œ<LxÙ·òÜ{xÕ<ÒÍ46:„Áw¿_DeLD’<3k +*¡1*æ…2&d\Š>¼žËþ/+bHÐendstream endobj -2324 0 obj << +2347 0 obj << /Type /Page -/Contents 2325 0 R -/Resources 2323 0 R +/Contents 2348 0 R +/Resources 2346 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2294 0 R +/Parent 2333 0 R >> endobj -2326 0 obj << -/D [2324 0 R /XYZ 85.0394 794.5015 null] +2349 0 obj << +/D [2347 0 R /XYZ 85.0394 794.5015 null] >> endobj -822 0 obj << -/D [2324 0 R /XYZ 85.0394 741.6375 null] +826 0 obj << +/D [2347 0 R /XYZ 85.0394 741.6375 null] >> endobj -2327 0 obj << -/D [2324 0 R /XYZ 85.0394 716.9352 null] +2350 0 obj << +/D [2347 0 R /XYZ 85.0394 716.9352 null] >> endobj -826 0 obj << -/D [2324 0 R /XYZ 85.0394 420.5643 null] +830 0 obj << +/D [2347 0 R /XYZ 85.0394 420.5643 null] >> endobj -2328 0 obj << -/D [2324 0 R /XYZ 85.0394 393.2598 null] +2351 0 obj << +/D [2347 0 R /XYZ 85.0394 393.2598 null] >> endobj -2323 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R >> +2346 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2331 0 obj << +2354 0 obj << /Length 69 /Filter /FlateDecode >> stream xÚ3T0 endobj -2330 0 obj << +2353 0 obj << /Type /Page -/Contents 2331 0 R -/Resources 2329 0 R +/Contents 2354 0 R +/Resources 2352 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 2333 0 R >> endobj -2332 0 obj << -/D [2330 0 R /XYZ 56.6929 794.5015 null] +2355 0 obj << +/D [2353 0 R /XYZ 56.6929 794.5015 null] >> endobj -2329 0 obj << +2352 0 obj << /ProcSet [ /PDF ] >> endobj -2336 0 obj << +2358 0 obj << /Length 1945 /Filter /FlateDecode >> @@ -11035,44 +11171,44 @@ FU—¨UÙ‘[¢–õ„/ c˜"v¨¯]¿x
/¨¦zŠ©,ƒ‡“jì^MÈ=n´B$ŽÌÿ/Š™AÃozrm@ £óÀ’O#°ã—_ØäƒcÒú:ƒÄl²«Ö2[PCçB‡A|ßöÀ7zWQ@x©k†ÿˆŽ=]LÈw›{Šh(Ï`žÙ±¥|ßd³ø)¼Áº.4h@õ Ôζ–ú‘*ÁŽ––nU@€u´ŽÂMô©…2&ô5»XžG»<•Å”? iô¦?ÿûãçOþóšÞn1˜)f3+NAÍï7QUÊñ§êgCí r õ(G§ÀM¡É\3-äY=òaoø‰ëà¤m!.cÖAs/ç˜S¤à¬“içÞ7˜P²nïèK]-Þ}¤/ýÞà[fÌ)Qˆéªhij;Œú«p}ÓXåž\E4z%d˜^§ÙüCIMÒ©sgLü¬ -§g=42¾ûùÁC#j*u[øa;xs»icŸì½‡ÁKØù;üø<fø³ìäC;°$GúEöÔfГ/U2=?nø÷åyÿUIžyendstream +§g=42¾ûùÁC#j*u[øa;xs»icŸì½‡ÁKØù;üø<fø³ìäC;°$GúEöÔfГ/U€Îâü¸áÞ—çýTnžtendstream endobj -2335 0 obj << +2357 0 obj << /Type /Page -/Contents 2336 0 R -/Resources 2334 0 R +/Contents 2358 0 R +/Resources 2356 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 2333 0 R >> endobj -2337 0 obj << -/D [2335 0 R /XYZ 85.0394 794.5015 null] +2359 0 obj << +/D [2357 0 R /XYZ 85.0394 794.5015 null] >> endobj -830 0 obj << -/D [2335 0 R /XYZ 85.0394 769.5949 null] +834 0 obj << +/D [2357 0 R /XYZ 85.0394 769.5949 null] >> endobj -2338 0 obj << -/D [2335 0 R /XYZ 85.0394 573.0107 null] +2360 0 obj << +/D [2357 0 R /XYZ 85.0394 573.0107 null] >> endobj -834 0 obj << -/D [2335 0 R /XYZ 85.0394 573.0107 null] +838 0 obj << +/D [2357 0 R /XYZ 85.0394 573.0107 null] >> endobj -2339 0 obj << -/D [2335 0 R /XYZ 85.0394 538.4209 null] +2361 0 obj << +/D [2357 0 R /XYZ 85.0394 538.4209 null] >> endobj -2340 0 obj << -/D [2335 0 R /XYZ 85.0394 504.6118 null] +2362 0 obj << +/D [2357 0 R /XYZ 85.0394 504.6118 null] >> endobj -2341 0 obj << -/D [2335 0 R /XYZ 85.0394 432.7569 null] +2363 0 obj << +/D [2357 0 R /XYZ 85.0394 432.7569 null] >> endobj -2342 0 obj << -/D [2335 0 R /XYZ 85.0394 303.3232 null] +2364 0 obj << +/D [2357 0 R /XYZ 85.0394 303.3232 null] >> endobj -2334 0 obj << -/Font << /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R >> +2356 0 obj << +/Font << /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2345 0 obj << +2367 0 obj << /Length 3825 /Filter /FlateDecode >> @@ -11092,65 +11228,66 @@ bÎDü…îR ”®DXð9I;܉ ô½¿ù@„0È•œåñú¹X¶åçbã?^¡€™ À°õW¶ÖƒMw›gÂW%fèÂphðRØ.]¡Ã‰h¾,¤ª\,6<ÏËe³8´Z9ÿký¾ÅEÓèâ}ÂÆLÁ©—îÀS7ØQóëEÚP8d½¡é“löá»—)Rú±-Ú5˜³Àe’ù¸Ÿ9.¯nèNmÆÇácÕyW µãrâÖK…zº÷¿ "BV˜ñI§ë†¾xÀfHÏqàÛw/çï^%cÁ8`–Y(bOud)ú O¨&y¢álD
×Tˆc÷Âà)†Ì‰HÉ´õ0QÉÓÁù âþ“I‘r5Æ|Äï4K‹0ANEÞóTS_Q-ëÁ'ïÑþ´ôŸõnx’»¢ÂK2œvE”'0« -‚ÕrœÀ4d‹VM}°¢Æ¾ÌáK‰ÿù{éã×àÚDÊÚ‰o|b‰amfÊ¡ŽØž~ËÄ_VŸòþ_eÕÈsendstream +‚ÕrœÀ4d‹VM}°¢Æ¾ÌáK‰ÿù{éã×àÚDÊÚ‰o|b‰amfÊ¡Ÿ~ËÄ_VŸòþ_dúÈnendstream endobj -2344 0 obj << +2366 0 obj << /Type /Page -/Contents 2345 0 R -/Resources 2343 0 R +/Contents 2367 0 R +/Resources 2365 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2333 0 R +/Parent 2371 0 R >> endobj -2346 0 obj << -/D [2344 0 R /XYZ 56.6929 794.5015 null] +2368 0 obj << +/D [2366 0 R /XYZ 56.6929 794.5015 null] >> endobj -2347 0 obj << -/D [2344 0 R /XYZ 56.6929 752.1413 null] +2369 0 obj << +/D [2366 0 R /XYZ 56.6929 752.1413 null] >> endobj -2348 0 obj << -/D [2344 0 R /XYZ 56.6929 501.191 null] +2370 0 obj << +/D [2366 0 R /XYZ 56.6929 501.191 null] >> endobj -2343 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F48 1223 0 R /F53 1298 0 R /F11 1437 0 R >> +2365 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F48 1228 0 R /F53 1303 0 R /F11 1442 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2351 0 obj << +2374 0 obj << /Length 3111 /Filter /FlateDecode >> stream -xÚZmoã6þž_‘oç µ–/zãýÝl‹-ÚÝ´ñâzØæƒb+±[r-99ÿû›á©KÎáî°Àš"‡œáðá3C2òRÀ?y™FÐ&¼LLDBF—Ëí…¸|‚¶Ÿ.$ËÌм+õ~qñîG\šÀÄ*¾\<vÆJ‘¦òr±ú6»¾½ýøùæÓWs‰Ùûàj 1ûõúó×ë_¨îöʨÙõOïà3Ž„!‰b±˜Ý|úéê~ñóÅÇ…7¦k°-ùëâÛ½¸\Ý?_ˆ@›4º|…HcÔåö"Œt…Z»šÍÅÝÅo~ÀN«í:æ€H§A”ªdÄJy 2A¬•¶øš¢*¯æZ$³z]6+*?äôÛdÏ97¿®]éPå·¯sô»CÙÑ%Ó0HS…¨e~$™ž=ì‘Z²Hµkíp¿Ûæ)æ‡:ß³}Ǻɷ5}duk€-<çG,ijeVöçðRÔÅÆ?Šm¹œƒ·ƒÔèJ20Q¤¬v4•èYuhv‡Ëáìq%ÓYµ¥–]ý§ -¤«£@)ØD(ûÛ׿_EÑìŸdÈ—Ûŧ/ŸïFæ NW -\eY…»¼®‹+9[®y€Gò1_6ôMˆ„ª×Œ;ÛýŒëÂuÚTÕóaçL°Fq¯m¶Ê¹ÚY¦nD3#¹Ø¬fîáÉõ¶Öª¨w›ìH€»«¶Ø_§41m©®æª:o¸mOm¬ÃUÁèì‰Ê…ņNhFÚY¦[WAÛ:‡ì¯€pp÷„bV{ý«¼É÷Û¢äOçèTƒûØÁÞÎÔÅ„vs)}ýJÜ!fOÖP(À®*›|õ=o6"1«`Œ=#º«>™: PlóêÐz’#;-ø¬›=ì§"¯oS(‹#kÓÇŒ–6iQ“úX„Õ–9 Œ¼mù
ZX:£OØö¯•UÎËO˜Í—ùj¢ÇnsàÁëâ‰ÕahÙ¿€‡ SGÚßíÛÀ$‰#N -X&dÜ‘Lr£SGe5ÆÈD9v³ÁÆ.ó'äk;<ëÛò¬$j‡Z‹Wk…
1PÓqÏë‘Äzþ³~Q"ã¤ì‘¬¦õ¯Í^²Í)KKm
Ã:OJX¹)žsª¦Dר޻c£€9¡IÐÍGjXg/ÃŽÕ~;Ij\VðÍcõƒµmÄ©â4V>8Ť—ö g"“h¼w™#ÿ~’)‹@D…GQ‰"FS{šw¥lb¦#‰—²³üVV÷Ír7T,5@9ohöR§ªÈK`cÈ4ÌþÛ -—<„\¨j¨–{*->ÜR§ÕPe]K™5öÁLÌÖS& -FÔ -)Õ0êH‘“ò0zYž H§*:¯ØKj HÚ %ï©&…E‚Qz…E¡(”= ‡¢°‹¢‹5a`SZª´bDzÉþEå†Ù6Ò]: S8øü³»Ñ†!IJwÂ+˜4C%ƒHêh*óÎ9?:¼=dËç׬
\$Û‡ŠMѯ¤”HSZ -Ú(ñ§RáËÿwy -uNîA>Ö1¦!µ©èx¸Ép±ûý`ñ6\¦y0„’ŒšÐ!»XBR"iï"´t³ãd[½Ë—>ó¶
lU6r¶œkm‚Rž>½tmí¦Ó ŒMìoL8Um -›]Årü<…@ÚÔßåÍòÝ>¯«ÍËÔ©ÚÀª`žÐN4å“"NÜC÷S ¯¿2²³2L‘KÑDïÐÚ÷•l¯ãz"MÀYÀÙûêX®G̳ W<¹ó"âyw_=ŸÊÉ=¥“8UôÆžêJMï)/åi²Å(MžUÞÒä‰öqšì©·¡)Ɇfˆqš±†B3–øÌaz+Š
´¢Ø²ÊÖ%ŸG{rÉYü2¢iœ>l±y¶Ó¡¹kY†,ŸñFW~ÎØ„B¶‡Mø£¬ñÈgÏ^4î¹ ò.è¤wä@Îó8îÝùßFi”é0ˆÂ4~e©3(sR-ÊÖÕëÒ’0H„~à -q0yÿÂêŽFÅà˜ˆð¬j/t¢»ïÚXI$“žò›Ü]KdíI¥¡*¬a—Ö}×˪<nÛ4r„kcHú•2Ýôx?ÎqÊ"$Òç½Û•šv¯—òº³¬*7ÇI–<«¼eÉíã,ÙSYG=¸²Ã¤:ËÚ¬Ü_SvN‰^˜N—”ÜO¹.}©~cëw¥Î¸ÎIu\÷¸Éž¦]wNyÇuCí®ëª¿þᘤ¿Ù¬ø@Wª"u¯öG -§Ð4–æ
§v¤Î8ÕIµÖÎ;õœòŽS‡Ú'œÚUo³`i"âQ,XÅB7÷T²èÃÂõ
ýbtóOpTµÊšŒžÿðë¡àAŠr0DÀseº±©sMRz¹'6[Yuśþ<sày]ç|Y©8Õã‘Vñ¥¼âwRÛâ®ámyER8C|u;R}ç^¾èªÑŠÑ¨ø´jß,¡ô’mЦ¢gY”„>QÄúå’ïN)¡E‰ž<H~ÿ‚Ø¢t¶«6WŒ/ÝY¥í¬ØkIho„†õûARSQ®ðñ4¯]{ÛÛõ‚ÎåxoÖ“M»“ã:óM[Ͼõb$å@ðKa -gC±*¿Ü.ðumþåë‚*öYù„oÈ¡¶³<Ï–¾x²Æ?ç@Ý.Û³ëE#Ù‹PèZõšÕnÄÎbŽLÅݦø¬Ä{i’bðÞT°ÏSLWjšb¼”§˜åyŠ9«¼¥˜íãÓSo)6&§j©[ÓT2Å`‰¼
…7ô‹³\çËgÚP³*j<®ø Ʋl˜ìŽÒc™O,ƒM}–Q©j{ù‡|ª:Ã*Ã\“>n>ßÝ}üÐ[nB¬{‰%]MBNÆ*|+µìMÁ µ8ØLÞÛžÓÚ^ÛÕŽßÚvõÞÐ#îT¾Îo¼÷ƒLçÃ/×wwîŽ</;/£>o÷²}®št+ÄzÞxVie¦Ê2íMo‹}âVÈ]R €9£ÕËÕþ8ÅÀö‹£®ÞÿΧ‹Å/ÿ'º“Kà_bÌMø?ŽøŸÿà«ýs¶ÿú&x1ÀƒŒÖF:£ÐMR™¡éþOÃNmÿ7ÓÆ¯Cendstream +xÚZßoã6~Ï_‘·sÐZKŠúÅúÝl‹-ÚÝ´ñâzØæA±•Xˆ-¹–œœÿû›á)J–œÃÝa5E9ÃáÇo†d䥀ò2‹¡tt™ê(ˆ…Œ/—Ûqùm?]H–™[¡¹/õ~qñîG•^ê@'ar¹xôÆÊ‘eòr±ú6»¾½ýøùæÓWó0³÷ÁÕ<böëõç¯×¿PÝí•g×?}¼ƒÏ$!IKÄìæÓOW÷‹Ÿ/>.œ1¾ÁR(´ä¯‹o÷ârvÿ|!¥³øò>D µ/·Q¬‚8RÊÖl.î.~sz¦ë˜b•q¦#Ã1Ä:HT¨Œ>䇶¬««¹é¬Yׇ͊Êý¶ùsÁͯk[:4eõÄíë½ðîÇHzºdY&b°µÌ$Ó³G‚=RI©wöw{Ø´åüÐ{¶ïشŶ¡¼é0…ç∅d¶Ì«þ^ʦ|ØðGY¡-—sðvi•@I:ŽCc†-LÕ¬>´»C‹åhö¸¿’Ù¬ÞRË®ùS€—á?É¢{ƒ‘Í·£Y›ÍßúX—M[ï$ú§á¦ +ò46VèE•Ì>UÔúþÓç›ï’²é¸ª«‚1'ðôˆv´Ò/åŠUˆY¾ãÊݾÌÛbÄëRˆ@gZ³GqF#^×ЙbœìÈ@:PqjeØÕ§C) Š$I¬XVm
ÙKøìÇ,Ô"â.¸Æ«`YW#£;¤@,83 +/ç¡>J3 ]a›eûúñ÷«8žý“ùr»øôåóÝÈ<Áé!€PËs(MÊ”ÍèÖ¥ÀiJ@ þd³ê°}0x„ªú‘ê…G®2¬Â]^×啜-×<À#ùX,[ú&DBÕkÎÍ~ÆŠui;mêúù°³&£¸×6_\m€,3;¢ž‘\lÖ0÷ðäz[kU6»M~$@ÝÕ[ì¯2š˜2T×pUS´Ü¶§6Öa«`TþDå‡Ò`C¥4#e-S« m]ÀöW@8¸{"1kœþUÑûmYñ§õtjÀ}ì`ggfcB·¹B}óJÜ!fOÆP(À®ªÚbõ=o6"1«aŒ=#ÚWŸLP(·E}h=É™|6íöÇSY4³)”%±±écNK›v¨É\,ÂjÃPÈFÞ6ü-,Ó'lû×Ú(çå'ÌËb5Ñc·9ðàMùÄê0´Œì_ÀC%™%íïÆöm ÓÔ’'€Q¨µ…‘Ì|ÒFp‘Œ"ÙGʱRÉ0È¢$ê¯'¹É¨‰gƦˆ`+à<Elâ/V<-Gj¡µ„ +X&dÜ‘Lr2KU=Æ +È$´ìf‚
Œ]OÈ×fxÖ¶yEÔµ¯Æ +b ÆsÏë‘Äzþ3~ EÆIÙ"yCë ^›½ä›R–’ʆuŽ”°rS>TM‰,®±wÇFs"¢›Ô°Î_†ëýv<2 ÒLÛ¬à;šÇêcÛˆ;3$Yº`“^Ú'œ!ˆ JãQXðÞeŽüûI¦,CÇ1$ŠPMíYhîK™Ä6ÊF['efùªïÛån¨X*€r"ÞÐì¤NU—ÂÆÝ_q'(˜ý·.y¹PÝR
$,÷TZ|¸¥6N«¡Ê¸–2k샙˜©§L +6$¼{&ÜaB§›*@¡)È=ÈÇ*Á4¤±"5ý·9.v¿,Þ†Ë4¯†%$£:²gHâk#ˆB¡H»»¥ÝìÀøå#ÙÖ슥˼M[•œ-çJé †”§O/¾ýÃtD‰NÜ §ªmi²«DŽŸ§ã(PÙ“ú»¢]¾ÛM½y™:UkX̺‰f|Rĉ€{è~ +ôõWFz+ù„Mô}_Éî:®· Rgœ¬½ß¡ŽåzÄL0rÅ“[1w  ^øûê üTMî)•&AÆoì)_jzO9)G“Ý,Fiò¬òŽ&O´ÓdO½ ÍHI&4CŒ£ÐŒ5š±ÄgÝ[Ql Å–U°®è|(ø|8Ú“ûHÎÂà—Mãôa‹Í£°…˜åØ^Ë2dùŒ7ºòp†Ä&²;l +ÄeG>{ö¢qϱs—Þ‘9Ï㸴ç¦Q¦¢ ޲ä
”yRgPf¥:”ë× ¤¥Q +õ†NêÔ‚Á…—‚â¾ ··È„6ßYÖî{©ôÐÙ8wiΓK:»ŒÝÜNM»XDA¦ox¸:ã`rþ…ÕŠ1À1ÑYÕNèDwßµ‰ÒX¦=å7…½–È»“JKUXÃ.mú®=VuuÜviä×&ô‡¡öÓãqüXÇ…!±:ï]_jÚ½NÊéÎóºÚ'Yò¬òŽ%O´³dO=dÍàÊ“ê<ï²rwMé0.)¹Ÿr]ú2õÆÖ÷¥Î¸ÎJy®{ÜäOÓ®;§ÜsÝPû„ë|õ×ÿ1Ü
“t7ûƒèJ@U¬bÿjÔ©p +Í©ßpª'uÆ©Vª³nuÞ©ç”{NjŸpª¯ÞdÁRÇÄ£X0<Š…¦hï©dЇ…ëúÅèæžà¨j•·9=ÿá×CɃ”Õ`ÀóP‡|èÆ&ô²Ol¦²öÅÛþ:sày]|Y¦pªÇ#mÈ—ò!¿“š{
oÊ+’Ââ«Û‘ê½{}ø¢«F#F£âÓªy³„ÒK¾)WL˜!=Ë¢$Œpp‰"Ö/—|wJ¡-ªIôä¹@òûŒÀe³]½¹‚d|yôg•u³b¯¥‘¹ +ÖïIMeµÂÇÓ¢±]Ìm¯ï#ÞåxoÖ“ÍüÉ‚qÞ|³Î³o=†hI9üRX‡‚÷à¬)ö@å—Û¾®Í¿|]PÅ>¯žð
9Rf¶‚ãÙÒOV»ç¨Ûå{Öc¼¨%{ +¾U¯ycGôsd*ö6Åe%ÎK“ƒ÷¦€}žb|©iŠqRŽb–ç)æ¬òŽbN´SLO½¡Ø˜œªevM3Ƀ%ò6>ÜÐ/RÌr],Ÿik@ͪlðD¸â?2€Ã2X0aÒ¥Ç2 ŸX›ú,fa×Ë=äãPõVæšôqóùîîã‡Þr»býØK,ébh +p2£·RKOhV¨ÃÁfòÞöœÖîÚv¨vüÖÖ×{C¸Sù:¿ñÞ2¿\ßÝÙ;ò¢ò^F]Þîdû\5éVˆõ*|ãY¥“™v*Ët7½-,ö‰[!wÉ$ endobj -2350 0 obj << +2373 0 obj << /Type /Page -/Contents 2351 0 R -/Resources 2349 0 R +/Contents 2374 0 R +/Resources 2372 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2333 0 R +/Parent 2371 0 R >> endobj -2352 0 obj << -/D [2350 0 R /XYZ 85.0394 794.5015 null] +2375 0 obj << +/D [2373 0 R /XYZ 85.0394 794.5015 null] >> endobj -2353 0 obj << -/D [2350 0 R /XYZ 85.0394 679.319 null] +2376 0 obj << +/D [2373 0 R /XYZ 85.0394 679.319 null] >> endobj -2349 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R /F48 1223 0 R /F53 1298 0 R >> +2372 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R /F21 930 0 R /F48 1228 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2356 0 obj << +2379 0 obj << /Length 2837 /Filter /FlateDecode >> @@ -11168,23 +11305,23 @@ arFáàJ6ò±´Ð‚c9<™‘m›î} Œåºn0ÝzE½ÂA¨=Ÿ‘Ð Hãœ/çˆÇVt°RÈ=UA‚©Z€Æ-Ä»`>cÝ{ÿ ^f¢óá^žÜ¥›õl(š˜9{™a–f9]Ü&QÎÖ¶I<åLø‡ùtgÚ(0v{$W©Ã´:ÇÃÓæx@ 8ùø`zÍ|º© cZFhûß
©Ó†Óª\€
¯Å&åtsÈÖ¨]-¯3ZÈYZÐŒÇé±×v‹ÞwgÍmïšÆ¸‚
@Æ4ªåL£cßÃtÂÅôzÝ·Zö5í¶kžz/rz!‘†Tžä¨ÆDjbo¿îI[ìOšò_ñ¤P€°†Ž´2nk%GY¢©[ÙÇ!Êm²çÿBÖí•(¿`€jÃŽjÌ1°åìWsÌ&ï1Ç̘/瘈»MÇ4÷ÉšÎÉU{ðuzÑj…FP÷(úóT«¨û¡Þ÷V§9L… ¨~ÚÉÇ'S‚BãPVòµÚŒâ‘®¯JÏ`}Oã`œøØ¼L¼¸·æîÚMtÜK¨^j·Íý#)3¨‡Æ¥¯"ˆŠ,eŒ\È!Õ:‚<•GÐ÷Ó”o‘§œ^`kiæ\'U1…ê¶ÀÛ›Q#_*«%“½ºîÖõå¶õÄ5{pBk¥wqõ÷z}2÷qÌ}ãtÒ,ÅPåo[b$Ú0„%í 2˜òžµÈºÅ{¬SæËq5äîÌ¡*mW™ø}Š2‡ ãN‹ªßz¹_ÌN†êÐPj]CÓ¾Â<¥¥õ…#´µ%„ÛþçSk Vh§[/Vþër5^Ãf?¾8l•Qh_2¯@èB¦
©Öáà©<Æ2-¾ë àH‚n3÷Tsî“ÐnI`Û±¦Ó¹‡Úl{·±
ˆ´êr9
¶öã§Ý(Ï׆,(»rCª
Ã8ªÑ0ö¬w¾›`(¥Y·ù{ª¹ gÚGXûkŸÌÛGSQ¤Í'цÑpAR$.ĺ€hÝdŽh´XÓ¬Îm±Ïæ¦|—æBÆŸ¤1®lÛ7²´M%Ï<Þ|Eˆ–ëUê -éVìÍ)OHjŽ}>«CŸ¦þ¶tꞀҜ4>¦5qféø™«ÿß8Oð˜th«:9Ýü×í¾9WÓÃE}ç þýjåwÀWý[nhçœëÿþSÞø—C–AÆÌÉ2žHÆSøX8¡”&0EsÇA)¡vç²ÿ&Óþƒendstream +éVìÍ)OHjŽ}>«CŸ¦þ¶tꞀҜ4>¦5qféø™«ÿß8Oð˜th«:9Ýü×í¾9WÓÃE}ç þýjåwÀWý[nhçœëÿþSÞø—C–AÆÌÉ2žHÆSøX8¡”& Ï¥„BÚËþ'ƒþ‡endstream endobj -2355 0 obj << +2378 0 obj << /Type /Page -/Contents 2356 0 R -/Resources 2354 0 R +/Contents 2379 0 R +/Resources 2377 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2333 0 R +/Parent 2371 0 R >> endobj -2357 0 obj << -/D [2355 0 R /XYZ 56.6929 794.5015 null] +2380 0 obj << +/D [2378 0 R /XYZ 56.6929 794.5015 null] >> endobj -2354 0 obj << -/Font << /F37 1014 0 R /F48 1223 0 R /F22 949 0 R /F21 926 0 R /F53 1298 0 R >> +2377 0 obj << +/Font << /F37 1018 0 R /F48 1228 0 R /F22 953 0 R /F21 930 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2360 0 obj << +2383 0 obj << /Length 3255 /Filter /FlateDecode >> @@ -11201,81 +11338,79 @@ xÚZ[sÛ6~÷¯Ð̾ÐÓ bXœç¨Æì%‰¤Éÿljnw2W5 éÁ™Á‹cgF½3³m—»ÚNf?‡Í]y˜šb±ÊZS “à >pú ¹9%:–G˜ý{£XëÓfœ0moµÿÆüŒóþ”–‚Éç¿„1šr+¥Ïc¬Ouc*`¯uO&ÍgY’æïɤyÀû¶Z–Ýʇ•Õq‰ÔÜ{»ó…Þ^÷SHjûô4¯B…÷PŸÈ&ãP㠌ր-
оzÎñÛâÿû/ï1½¿ýôþÆÎòכϷ7wÆŒ"xyÁir¸ñf^¿¹ý€‹4Jí@±Ý•ææ7sQ³0—@c§…[+£/Ößhê½VÓívÁ6–Scëþv'€‹)…îJ'nHaT¨ì õ0€ÕM[î:²ÕSla~Q8¡1pÞ¡TS~”-šõñ˜Û2D,¼|F"3>}ßSÀsì]ê|êê” -’&©ß›EÖbT‚,0¸¤®»õ¥À„oÒêâdn~·$íÆ‹q(ì Ž/3'ý"?H_æ 0j-Ž›ÀÅÌøT9JóƒËÃnU$F‡?0] +Ïš¯]ØcDmŽJm½‹G0á¡pîïò µ„ gæÊ–šÇw ‰$2öA‘å3qJ¬ýFÛ‚ÂCç~¹ +’&©ß›EÖbT‚,0¸¤®»õ¥À„oÒêâdn~·$íÆ‹q(ì Ž/3'ý"?H_æ 0j-Ž›ÀÅÌøT9JóƒËÃnU$F‡?0] +Ïš¯]ØcDmŽJm½‹G0á¡pîïò µ„ gæÊ–šÇw ‰$2öA‘å3qJ¬ýFÛ‚ÂCç~¹ endobj -2359 0 obj << +2382 0 obj << /Type /Page -/Contents 2360 0 R -/Resources 2358 0 R +/Contents 2383 0 R +/Resources 2381 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2333 0 R +/Parent 2371 0 R >> endobj -2361 0 obj << -/D [2359 0 R /XYZ 85.0394 794.5015 null] +2384 0 obj << +/D [2382 0 R /XYZ 85.0394 794.5015 null] >> endobj -2362 0 obj << -/D [2359 0 R /XYZ 85.0394 147.4749 null] +2385 0 obj << +/D [2382 0 R /XYZ 85.0394 147.4749 null] >> endobj -2358 0 obj << -/Font << /F37 1014 0 R /F48 1223 0 R /F22 949 0 R /F53 1298 0 R /F41 1203 0 R /F21 926 0 R >> +2381 0 obj << +/Font << /F37 1018 0 R /F48 1228 0 R /F22 953 0 R /F53 1303 0 R /F41 1208 0 R /F21 930 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2365 0 obj << -/Length 2052 +2388 0 obj << +/Length 2054 /Filter /FlateDecode >> stream -xÚ¥XKsÛ8¾ûWè°UK×D0^|ÍMŽíŒ§2Ž7rjwËñ&!‹ŠTDÊŠvkþût£Z²¨r¶¶x Ð -xðÛ§éÝéX†‘äÁäööòæâú_8ç°vpü1¹ù2ùH´ÛÓT“—ÓÓ‡»ßO.ïziv%\¡(ßOîø¨ -‚!‰èhz --ÕÔ~ÎxCZ@–h%ÌÍ(Æ RZ$0„#âHhkB í¸§”Ö°îxøì†!*b—a€r3Ý=(oì»hû².U,N£ÔÉû³zaíJ9‚<çA -&Ãʆ#r>XR'‹Rc[$ê}–Ö˜" -@ºÜÃy†)«ltà«jrª¶/¯tor;2¹°ªzD=J2)^2Ä×hHJ“ÕNŽc憈`x; =#Ͼ¬œ"uÓÑ`¹*ëÎchÐ{à•Ê›¹± -+ë2MóÍ )gm*uÌÂXEû6%Þ -Œgmníéln'¶ -Ã*Ä ~T8ꌨΠà˜4„nêâú“ØÊöU³m±| ¦@_&䛸¥•ö[&ÁºnÀ-XëØÃ-Ivuý‘.ã‡û.¼ž™.?[™¶©ždø¬Cü‚\ñ·ÿþöéË?Ϻʇ$à{'O//IûÉÇé§·~Þ´B@}G_"XHLvˆEݶ&3Û'Sï,’Ž|×v4bº7Þç«÷‚«p¨/HXöû†+Aušî©xþåÃômÍ î<ÎÙûÙîÄAì#»…uMCƒ…½+»£õ"j¦tÔ›"À£Æ9“§pBÓz‡*¸ß¨TÛ7ˆÅÇ®UQ$’Þ1tøW)c]øÎÂ÷ÿ8^weUvÛŸˆŒmÝ,[È’Wà§Æ D[œ@o{~é`<ÊKÔðÿ¹¹Ãáiú¿=nÓ‹’xÙ¼g^µw›çOʇZN…—íKªýá1x?aí¦žáÍ -}ÖEÓ姯~~›ázñh/Ž“R‹×»79â! Üɹ~ÍïŸoòÛdew”ŸêùÑÕ,;D¯Û¢ûñbà”}fUö4tŠf:N¬ ûQäFÔÁXµÇþu‚vøƒr RyŸÿ÷З߼[ÝDÿâ”qÈàãÈ…J -%D÷Leÿccšendstream +xÚ¥XKsÛ8¾ûWè°UK×D0^|ÍMŽíŒ§2Ž7rjwËñ&!‹ŠTDÊŠvkþût£Z²¨r¶¶x Ðh6ýøºA1âðˆQ±(•é(N5¹Gù℞`íÉp<cÏ4Þå:¿;9»Rñ(ei$£ÑÝlGVÂx’ˆÑ]qœ3ÉNA~û4½;Ë0’<˜ÜÞ^Þ\\ÿçx€ƒóàÉÍ—ÉG¢Ýž¦2˜|¸œž>Üý~ry×k³«±à +Uù~rÿÀG(þû g*MÂÑ&œ‰4•£Å‰µRžRLOþÑÜYµŸZ@p&U$L å ”EJ*k‚ œHEÁSÕ<fŽã 5›½¿¯ÍjëHË®lêöÎÒ`3/ó¹ûhÞ¬«‚˜
½³å²*MA]ãˆUõ"µ4^TžÕ~½mè/¦]“p„âap77!§58,1‚¥a(í±œÊŠ¯2Nd°X·‘—«S‘&7…¡¥nnhå+çrEl@]/+GGs ©Î´VBy•µwÛ%‘Ã+áÈSÙ“ŸeuAbŽ©ÇÉÛRë A[éTFBÞ,V0R«²6ÖVI0©·ÄÐûÖ½;Qßé_yÈÍÜ,;ZDé ÇÙ•;Q$“”q!CPµúå¾nòEAœûñaFÊ1ÒV°‡p*gîîͳYÊ¢0µ=ýX©”É(I¼(e·”‚½ìYÆíÒä%º-'*E0l{6G¢#£®š‘ÍlžþuàÄàˆ„2¦(ŸNÇ Â/ßW4Øl6¬lsÖ¬ÜJ†fÇÁø½…Œ‡GÐtÍoÅÕ
<4c¿=…$Úë + +ÕîN ïa`0t¥€P½Î$ÌU4¹´kˆÚͳn ˜É¤?Α`N<Ë’ihPÖeWړäÇ] wô^d…ã$_ÁÀdXÙpDÎKêDcñAjl‹D½/ÒSD!H—ûq8Ï0e•|UMNÕö%â•îMnÇC&ö¨Q†’LŠ—ñ5’ÒdµÓ㘹!¢ÞÂHÏÈ‹/+wºéh°\•uç·14è=ðêÈ›¹±VÖdšæ›SRÎÚTꘅ±ŠömJ²º1›ð}MHF+¹üŸ³É[¬×c:IÍd‚ÈÜ)©å½¾¸!¦_no?}>
¡qwÀ‘: új6à”” ù6ž«$õ.§hÓЈ + +úî¤(Ûe•m‰Z7õØù8bÐdžû.žLß__cŠ©^ ߀µlÀR‚\@ä¼e«4â>ƨÀAÔf©¶´]ÞÔ€ÿkÉòy¶Êr0-š:oв~¢µ…‡õÑÌ( ݼ5µý”ÀBrDÞxÿÔˆQêÂr[Q$ØÚ%Á…
x ´fõŒ:á¸qog^PDODÚ“·Äât§®£l›L ÜÉ„ú˨&^ÏhaÛ¬ÿ^sUÚâÞ«ïõª&6°ˆíIM]˜¡Ê1ûý-‚^) $XãAq •³¶©±ZÀ-¡0wMKœÃª€N€Ç}‡Š{¿º¦I)›†)´¨ÓØØýÄEM²4ntðš6î%ŽwEÚ;Ø~瀞‰Ž_vF/®§“ó—C +q‚Ž:#ª3(8&
¡›z…¸~'¶²}Õl[,¨)З ù&~i¥½ÇV§I°®Û#pä:öpKš]]¤Ëøa뾯g¦ËÏV¦mªg>ëÿ Wüí¿¿}úãòÏ3Š®ò!
øÞÎÓËK:ýäãôÓÛ +$&;Ä¢n[“¿™í“©wí lÇv4bº7Þç«÷‚«p¨/HXö|ÃÖ•€ :M÷ŽxþåÃôí“AÜyœ³÷³Ý‰ƒØGw뚆{W:vGëUÔLé¨7?D€Gs&O!&àþ„¦õUp¿Q©¶7ˆÅÇ®UQ$’Þ1´ùW)c]øÎÂ÷ÿ8^weUvÛŸˆŒmÝ,[È’Wà»Æ D[œ@o¼¿t0eˆ%jø‹…€ÜÜ‘pˆ4ýßÇôrH¼lÞ³÷EU¯Ú»Íóƒ'åC-§ÂËö%Õþð¼Ÿ0Ž–©x3 P…,‰B…uÑtGåÅékŸß¸^<šÁ‹cĤÔâµÄîM‰ø_gHCwr®_Ëûç›ò6YÙ•§zyt5KÁÑë¶è~¼Øe_¡Y•=
í¢™Ž“+è~¹u0–F-Áñp:üA9©¼OŽÿû?èËo^n"‡qÊ8dðqä•ÂC +¨îÿ˜êþŽâšendstream endobj -2364 0 obj << +2387 0 obj << /Type /Page -/Contents 2365 0 R -/Resources 2363 0 R +/Contents 2388 0 R +/Resources 2386 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2374 0 R +/Parent 2371 0 R >> endobj -2366 0 obj << -/D [2364 0 R /XYZ 56.6929 794.5015 null] +2389 0 obj << +/D [2387 0 R /XYZ 56.6929 794.5015 null] >> endobj -2367 0 obj << -/D [2364 0 R /XYZ 56.6929 562.0317 null] +2390 0 obj << +/D [2387 0 R /XYZ 56.6929 562.0317 null] >> endobj -2368 0 obj << -/D [2364 0 R /XYZ 56.6929 444.3852 null] +2391 0 obj << +/D [2387 0 R /XYZ 56.6929 444.3852 null] >> endobj -2369 0 obj << -/D [2364 0 R /XYZ 56.6929 354.5963 null] +2392 0 obj << +/D [2387 0 R /XYZ 56.6929 354.5963 null] >> endobj -2370 0 obj << -/D [2364 0 R /XYZ 56.6929 284.7704 null] +2393 0 obj << +/D [2387 0 R /XYZ 56.6929 284.7704 null] >> endobj -838 0 obj << -/D [2364 0 R /XYZ 56.6929 241.0985 null] +842 0 obj << +/D [2387 0 R /XYZ 56.6929 241.0985 null] >> endobj -2371 0 obj << -/D [2364 0 R /XYZ 56.6929 206.0104 null] +2394 0 obj << +/D [2387 0 R /XYZ 56.6929 206.0104 null] >> endobj -2372 0 obj << -/D [2364 0 R /XYZ 56.6929 168.371 null] +2395 0 obj << +/D [2387 0 R /XYZ 56.6929 168.371 null] >> endobj -2373 0 obj << -/D [2364 0 R /XYZ 56.6929 95.6233 null] +2396 0 obj << +/D [2387 0 R /XYZ 56.6929 95.6233 null] >> endobj -2363 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R /F53 1298 0 R /F40 1146 0 R >> +2386 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R /F21 930 0 R /F53 1303 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2377 0 obj << +2399 0 obj << /Length 4190 /Filter /FlateDecode >> @@ -11300,172 +11435,171 @@ pËºëæ‚[À‘r8ô >ð >EðI‡<ãt ì`WAŠõÉóõ82ÒþÀ˜Ï9Ì7ÏÜÌÞ¶óMŒŒ® N“:å“ÄÔgÚ_ó€Íu2±@0°_¹šT‡ÉÙ’›ê’o:æ¤ËHÐŒoi!Ž,«ë4¸«Tz²ézVÿ–N{ÖJf†Nb‡÷ûW³¦nòD&3çMg,Âù²×/‹op…}ŽRcpõ7+z›@ ‰PÍ}n@© rüƒva¢±}qM›ï9îîþ@™3}]}9O!£…ìX"B¾gøzPТZ†C1ÿ8ú|ãOù7›úyü]Wï DrÐYúûé8ÆEôȵî9'ÝȇH¥ã$5öäq2U*tìJ,ÕÔ>çÎh¾P@N
WNœq‚Gbˆ¦š³CÔUK–iC'vbÂ×<Ítþ”¨È¤q8`ûùÄ9‹íÎY&ñUfÂ0ϧ†!»³{i'k’fŸAÛ‘ÖñÉ¿T‚“L?óVÜHi‹ðæäÊŸ¤‹t˜™„Ã{ì=mtÀNr§”¯rŠ—$Ùtõ)Ñ’u×*?gT2ez¶aóäjkA3;ê•Pݺ\©ú‰ÌÃ4¿¦knÿÉgêù.—Ö'ë¡I¤cm?%%˜EE‰µ£"]x•r(`Nß겑LSs>ÛSbxW/V¨6+*gS8`¼jÚÔG¸UáúäôÜé*ß,ˆeÆZXë¡E„ã¡Óv;ÐþÆSi8¤KÝÆ8ىⵑ¸ú”ú“EE@zp~ü„q\ó5 -¾NQüñ—ÿ(·‡-_às¤þ*o‡Q¶ýô`“«¶»€qâ§ÏÍôÔDømÂ_þ™D÷+Ø -Åendstream +¾NQüñ—ÿ(·‡-_às¤þ*o‡Q¶ýô`“«¶»€qâ§ÏÍôÔDømÂ_þ™D÷+Ø +Éendstream endobj -2376 0 obj << +2398 0 obj << /Type /Page -/Contents 2377 0 R -/Resources 2375 0 R +/Contents 2399 0 R +/Resources 2397 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2374 0 R +/Parent 2371 0 R >> endobj -2378 0 obj << -/D [2376 0 R /XYZ 85.0394 794.5015 null] +2400 0 obj << +/D [2398 0 R /XYZ 85.0394 794.5015 null] >> endobj -2379 0 obj << -/D [2376 0 R /XYZ 85.0394 751.6872 null] +2401 0 obj << +/D [2398 0 R /XYZ 85.0394 751.6872 null] >> endobj -2375 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F53 1298 0 R /F41 1203 0 R >> +2397 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F53 1303 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2382 0 obj << -/Length 2017 +2404 0 obj << +/Length 2028 /Filter /FlateDecode >> stream -xÚµ]“â6ò_ÁÛAU¬Õ‡eKì“#ÙÌL6uW›}ð€ -9C<dÌA²ÑrôkK°sÚ|êÕÁˆ²ˆzÔA©O\¢ˆQÖ¨cµWúïnCÒA¥@1%Ð×8AePzÔGœRaQŠcù4`\Lj•eî‹.Q¸Š"²_싪¶œq—3E’…Žl^Ô>Öa[œº0l+•o¬ -È£'‚1’!{KSá¨MQÉñØ„bq,ÓÒã‹á±.r̺²»}îQ7‘ -[•¯‹qzØ5qîѬžÔ¶0±nö:êOm:b( -öÚÆÀŒ¤Í'«Ú -•Y~K7@u‰þ^ h)]’M¡TïQ¨gÎZÄ›ÅröþãÜã¬!G8©½ŠÊŸSc¶ü òÚ(á9Ï}Ê”n† W{«¼Fç>ΛMZ™SðýÑÆB·j -†‘‘¨ï˜ŽS¿¶Åâër'{AKCèÛéKð¶Š•S19å•?ÝB¦EaŒã~º½]|4=ß@áƒüúNÕëweSwÄøÖÇ÷)/çss¿ÙÇåýÛ|“ît2%:MÚ¶Agƒ -
ìÜ*D,ŒÏ".w0´¼zÛM^UjlªmYþP/.r PF1ì;mü‚î¥0r ™À×ÄLÕ¦46+ÓvÛõÒü?>šÿÊU™˜VÒô -Eö-Ú{É‹c•VÃdAfðq@üÃIÊu…ö÷ÖúCpÑ.‰Ëˆsu‹5P†UDºþ<ûúªÛié…z¼Ì×—ëF¡õà/Ž"iW´]%.:Þ¶¯I²/± !p4d‘yÈõû([š.)öÑ,EÐÇ6ÍÔ«ÃF60öß°X‡Ä‹9¬×-ãÏwê™bYk§ïRôÏo+:…ζÖò%QB+ÏÉÿÛzŸƒª]=´õ„…0ga?·¯³¤ª¾Ý·oJí\hH&M=~è;\Áˆ£˜3þ¿D øM~NýJBõtNÈ ’ÜÌ—«Åý§š
³½'=Ò°àÈ„D3ŒŸêã©i+)·í&7*S;—[á`™îò¦±ƒµ®7KÛt®OÍb–®M«¹9ùøèê|šX¾®‹²xMÓ -Ç·€E\˜•œÆ½D¯a3øP -BŽ¥-uM×›wé³²%ô£eªUðÕÚqßáò%ǦÂà -y=×t±ÌË/×´XÍM†,#˜:%×Y:$Ë®?D°ŒaRë±üä^
–ÿœÄ,“á´fЇٮ(aŽ;¸É›ã3žÚ&§¬<Tí´oÇÿ¢Þ_òÌ7gåQk*¯ ™…®¿a€Ö8¬Æ -¦»Ù/›=o±·a)Öt®Õ\ÑzTÒ> -Àf8”4¯T^¥5$MôÚ6ÔYýìì±n“éß~Ý>?ä‡1bBP¿€† æ`m…Ò:!,¼û~)û» ßendstream +xÚµËrÛ8ò®¯Ðm¥ª!‚A‚G%–³šÉØ^SÙÚL´I¬¡H
I9ãýúm<H‘,';µ¥ƒ€F³»Ñï™bø‘)PÑhF>â˜ðéæ0ÁÓœ}œ‹ãµH^ëýzòî–…ÓE
¦ëm–@X2]§_fïCs €g7wq¼üàÝÄ·÷¿þ²ü÷Ü#¡ÀÑlñð°¼»YýkîQް1žýº¸û¼ød`óˆÎ—ñüëúçÉrÝIÖ—ž`¦Äúcòå+ž¦p‰Ÿ'±Hðé7Ø`D¢ˆNŸ3Ä}ÆZH>‰'ÿèöNõ§NmŒ(¨C”ºÔÁ#0Ê´:Ö{©.ñîÖ'=T +}?ú +Ç«
Ê€áˆS*,Jyl²²˜{Œ‹Y#ó¼ý¢O® Ø/öeÝ$õ9S1¿%[”‹u€„†§)
ÛZ© +š¥WüDˆaç—Q|äû¼5Ü&)Z†æÿTËÔ^¦´bÊft»ƒ<”Ê^?ÙYp*ŸN»]VìÌö7ŒY²³ÆYßwX>´ŽQÉMY¥QG"àÜ¢ýä 䃧fŒ(2±°óç¤H„@qŒ‡-¥¦J6.Jà0B´ªC]ètî³z,b( Â.é3l¢wusg”~x¸×¶vÐS;lRàjëˆN1…ÅEpå$àØŒ´H‰rO‚¥²6øÚÓ)Ë4a¡€FH +È¡'‚1Š|ö–¦(ÂA—¢’ãQ‡by¬²Òã‹á±)̦¶»}îÑèH…,6ejœv:Î"šÕ“Ü–&ÖÍ^¥Bõ©MGaEÁ^Ûø@˜Ad3äɺ1 +òÌY‰x³Šï?-Îês„}ŸÚ«Èâ93f+²hŒžðܧ\ªfÂp½·ÊÓ:×ú´:×›¬6§à'ê£ÔB·j +†‰84"ÁÐ1[Nà +Ø‹o{È5Žì-
¡o§/Á»*VÍÅìTÔît™ù!‡éövõÉô|#…òë;ÙlÞUºî"ˆñ‹RŽ—Ks¿Å§øþížf;•L‰J“¶mPÙ U@¡€½[ùˆùAËÓ§ˆÆÛNZ^½mZÔµÜxi½ÊÃïò¥(”AÈ}§²[0Ð}$Œ\gB&ð1Sµ)
ÍÊ´Ýv›ÿÇGó¿“…¬ÓJš^¡Ì¿G{/Ey¬³z‚Œ (Ðþ!ˆ{˜€£ˆrU¡Ý½µú\´Oâ2âÚÖºÃ)Ã*" +9ôx¹«/WBçÁ_[Ф[Ñn•8¸¨xó»¾&Éw®Ä&`„ÀÁ˜Eî 7ì£liº¤8D³AÛ,—¯ZÙÀØÁb=W,Öb½n1~PÏ3˜È:;ý¢y[Ñt¶ê”/‰rZyNþßÖûâÕÝjã &,„9ó‡¹}“'uýýn½}SêÖ…Æô`ÒTã÷ˆÞâëµ8 +9ãÿK‚ßçô8¬$TM焌*ÉÍ2þð¸zX¯îïÕlœíéy”†G&$ô0~jŽ'ÝVRnÛ#Ìnd.wmn…ƒ8Ûº±ƒµª7±mº·Oz±‘Ë@7¦ÕLÏ_>>¶u>M,ß¶‹²xºi…ãÇÛÀ.ÌÊNNSÏ^bа|(>Ç‘-uº‰LŽ»ìYÚ’úQ2Õ£*øjí¸×F¸|ɱi„0¸"ºžkúXæáÅ•k:,=D“1Ë + ='ùIœrë¬É! +ê¼áø55D$¤m¥=œZÞO–UYœé endobj -2381 0 obj << +2403 0 obj << /Type /Page -/Contents 2382 0 R -/Resources 2380 0 R +/Contents 2404 0 R +/Resources 2402 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2374 0 R +/Parent 2414 0 R >> endobj -2383 0 obj << -/D [2381 0 R /XYZ 56.6929 794.5015 null] +2405 0 obj << +/D [2403 0 R /XYZ 56.6929 794.5015 null] >> endobj -2384 0 obj << -/D [2381 0 R /XYZ 56.6929 684.0716 null] +2406 0 obj << +/D [2403 0 R /XYZ 56.6929 684.0716 null] >> endobj -2385 0 obj << -/D [2381 0 R /XYZ 56.6929 572.8605 null] +2407 0 obj << +/D [2403 0 R /XYZ 56.6929 572.8605 null] >> endobj -2386 0 obj << -/D [2381 0 R /XYZ 56.6929 509.4701 null] +2408 0 obj << +/D [2403 0 R /XYZ 56.6929 509.4701 null] >> endobj -842 0 obj << -/D [2381 0 R /XYZ 56.6929 470.2699 null] +846 0 obj << +/D [2403 0 R /XYZ 56.6929 470.2699 null] >> endobj -2387 0 obj << -/D [2381 0 R /XYZ 56.6929 433.5878 null] +2409 0 obj << +/D [2403 0 R /XYZ 56.6929 433.5878 null] >> endobj -2388 0 obj << -/D [2381 0 R /XYZ 56.6929 401.47 null] +2410 0 obj << +/D [2403 0 R /XYZ 56.6929 401.47 null] >> endobj -2389 0 obj << -/D [2381 0 R /XYZ 56.6929 335.1577 null] +2411 0 obj << +/D [2403 0 R /XYZ 56.6929 335.1577 null] >> endobj -2390 0 obj << -/D [2381 0 R /XYZ 56.6929 244.1508 null] +2412 0 obj << +/D [2403 0 R /XYZ 56.6929 244.1508 null] >> endobj -2391 0 obj << -/D [2381 0 R /XYZ 56.6929 168.8052 null] +2413 0 obj << +/D [2403 0 R /XYZ 56.6929 168.8052 null] >> endobj -2380 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R /F40 1146 0 R /F53 1298 0 R /F55 1306 0 R >> +2402 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R /F21 930 0 R /F39 1151 0 R /F53 1303 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2394 0 obj << -/Length 2161 +2417 0 obj << +/Length 2162 /Filter /FlateDecode >> stream xÚ¥Y]{›8¾Ï¯ðÝâ§c„$$z‡§“Išvã´;;ÄÈ O1dN&ûë÷è&Nf·½@Wç¼çC™`øO&’#Lc61C>YmNðäÞ}<!Nfæ…f]©ùÍÉgTLbGa4¹Ywö’KI&7ÙoAòåËâêôü—é,ä8˜£éŒc|J®¾&—víË4ƒäãb9!qBT‹E88½Z.f§Ë³ëÏŸ.ÿžþqóóÉâ¦EÖEO0Õ°þ<ùí<Éà?Ÿ`DcÉ'O0ÁˆÄq8Ùœ0Ng”ú•âdyòÏvÃÎ[óé˜5—ˆ‡,šÌ@8b8·F˜ƒ
f‚a$#µ6ɘͼ”¶ÙìBôÇ3Î;’ñ6×Y¾U«¦Ú>-BxÈ£hÒU{ ycumÒçÖ,ÆÀReÄHè-lKBµÉ›Fe/SÄ9bq$SWêå`j¥L0%C•quCˆã*½ÐˆÊ^˜`e/î«</WÅ.ÓD¤qðëòâµ>ãéÑ*Õ6mòòÎÎO—öi)µªÌ3«‘¶¬þ5å ipsïö¬Ô*×N -—W×p
ÅD_!©€æ0²wÃÅ/ɧ/—‹‘$'Ð|#"¨¼ÑùÑ4$¸Ýå…Ƀ¡ÇA‚åO <#»j;â’h§¿6«ú[{d¯Ñ†æ3_U.Ô_鿢uUmÐ;èpÞ…ŠðPtŽeï/ž{‘}’i±œª(ª'g3¸T›™/HPÙbƇßó<U»"ë÷Py]ïTö~ä@`@¸¯ A¬³²®Õj–Õëmµ1÷ïã`ÚçÛ;ض-zðá(PÓ§¹RYm´Ÿ-Wòïê
À»È¦À_¬£Ý¢Ö~ÖO‹Õ¹[±šEršˆD°¹<ÅóDF"ŒæøCŠ$‘<™Ëùü4œÃ¦Zx-ÎÎ̹
ŽŽ>ðE‚ç1#7î³úìür±<Æiѱ%=ÎPw[©½-ê(þù]ij?ÌnŸí³é|nÐf”ɦ+Û_ŒµXztæóþE ÿл4Mßåúßh¨Â1kãÂdÌ®rÈ´…EkŽ0%²SSH¤¢§ß²Ÿ©FÈþåo
ésâ“Ú¢‘ÿ='u ÊÝ’|¿t늀‹Ø t5‘¶n -[¶‚`HB¦pö*zhÄå8•0ìoo§oF¯n‡F¶ƒ¨$½íl–¢ ÂÂ~q`Çc6€aÈóßËôh‘|½ùéóõë´?/µ-}ZZ>Ã¥|ã²Ð‡ª¬«m“ï6/ýbXÿéb¤MÄ-Âÿû/$û?1¨”áx¿I±Î>1ñ ôáåCèîþ\†bûÒiWôendstream +—W×p
ÅD_!©€æ0²wÃÅ/ɧ/—‹‘$'Ð|#"¨¼ÑùÑ4$¸Ýå…Ƀ¡ÇA‚åO <#»j;â’h§¿6«ú[{d¯Ñ†æ3_U.Ô_鿢uUmÐ;èpÞ…ŠðPtŽeï/ž{‘}’i±œª(ª'g3¸T›™/HPÙbƇßó<U»"ë÷Py]ïTö~ä@`@¸¯ A¬³²®Õj–Õëmµ1÷ïã`ÚçÛ;ض-zðá(PÓ§¹RYm´Ÿ-Wòïê
À»È¦À_¬£Ý¢Ö~ÖO‹Õ¹[±šEršˆD°¹<ÅóDF"ŒæøCŠ$‘<™Ëùü4œÃ¦Zx-ÎÎ̹
ŽŽ>ðE‚ç1#7î³úìür±<Æiѱ%=ÎPw[©½-ê(þù]ij?ÌnŸí³é|nÐf”ɦ+Û_ŒµXztæóþE ÿл4Mßåúßh¨Â1kãÂdÌ®rÈ´…EkŽ0%²SSH¤¢§ß²Ÿ©FÈþåo
ésâ“Ú¢‘ÿ='u ÊÝ’|¿t늀‹Ø t5‘¶n endobj -2393 0 obj << +2416 0 obj << /Type /Page -/Contents 2394 0 R -/Resources 2392 0 R +/Contents 2417 0 R +/Resources 2415 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2374 0 R +/Parent 2414 0 R >> endobj -2395 0 obj << -/D [2393 0 R /XYZ 85.0394 794.5015 null] +2418 0 obj << +/D [2416 0 R /XYZ 85.0394 794.5015 null] >> endobj -2396 0 obj << -/D [2393 0 R /XYZ 85.0394 463.2352 null] +2419 0 obj << +/D [2416 0 R /XYZ 85.0394 463.2352 null] >> endobj -2397 0 obj << -/D [2393 0 R /XYZ 85.0394 318.8302 null] +2420 0 obj << +/D [2416 0 R /XYZ 85.0394 318.8302 null] >> endobj -2398 0 obj << -/D [2393 0 R /XYZ 85.0394 224.0131 null] +2421 0 obj << +/D [2416 0 R /XYZ 85.0394 224.0131 null] >> endobj -2399 0 obj << -/D [2393 0 R /XYZ 85.0394 159.9229 null] +2422 0 obj << +/D [2416 0 R /XYZ 85.0394 159.9229 null] >> endobj -2400 0 obj << -/D [2393 0 R /XYZ 85.0394 83.8775 null] +2423 0 obj << +/D [2416 0 R /XYZ 85.0394 83.8775 null] >> endobj -2392 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F55 1306 0 R /F22 949 0 R /F41 1203 0 R /F48 1223 0 R /F40 1146 0 R >> +2415 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F55 1311 0 R /F22 953 0 R /F41 1208 0 R /F48 1228 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2403 0 obj << -/Length 2531 +2426 0 obj << +/Length 2546 /Filter /FlateDecode >> stream -xÚµKsÛ¼ñî_¡™*Ï„IäæÄJâ/‰íZÊ´i’-B6Ç©ŠT\÷×wø%¥ÓùF.ÅîbßKÑ ˆÐ%““H¾ TL–ë32y€½gÔâxÉëb½]œ½~Ï£‰ôeÈÂÉbÕ¡û$Žéd‘~Ÿ¾õÿ(éåõ|>{ç}š}{wóåóÅÛÙçsŠ8§··³ëË«œ{L8™~¹¸þzñ×nÏ%›^|˜ÍÏ.þ8›-Ạ„kÉþuöý'™¤p?ΈÏe,&ÏðB|*%›¬ÏÁ}pîVò³ùÙß‚]stT!”øŒ‡lD#ŒNhàó -®“µÒë@uô
XLúA(PÓ]bç4ž:‚F?‹B3 ¸<¨Bm“:+|¯Ë2·á>Ô—B0Ë’‡~,elXÎ_ŠrSeÕÐ(œúQòI¨ÒŽ(‘ÂE˜ -‡ì—*4Èl:7«®*â[‚åöeS—?&#}Ƨ%–)÷»,O[öü „åªBf«r‹Që¤îm·ðþ ‚ÌÕrçÙÂËô¾%>S¥Y*Å×Ìè»÷–”PaOé`/ š/ÛPÐZ…+äâq̹ "SÄ -]*¤ÃÃB5(C©º>BÁI4ÀTs•C ÒšdÌê - †LÊûM'eÛZT?&µ1×€Wkf“ñ¹|TË'W¬0ëêÕr½éò>˳úÅÕe[CF‹¾.}}çŒpö-k…–£o@úP:i`逥Õxé;¢3{‚]iÓ -ÔÚz|¶ÞäjŠz +xÚµßs›ÌñÝ…fúPy&û \Þ[Iü%±]K™6Mò€²#P²ëþõÝ»½C€”Nç=°ÜííîíïEtDàGG2ðÅÔ(T—„ÊÑbuFF°÷ñŒZÏ!ym¬÷ó³·x8R¾ +X0š/[´"ŸDÍ“ã÷¾ðÏ_^ÏfÓïóôû‡»›¯_&ï§_Î=*£(Ono§×—Wÿ8÷˜$p2þ:¹þ6ù‚k·çŠ'§³ó_ó?ΦóF¸ö(áZ²ýøEF Üã3âsÉѼŸ*ÅF«3!¹/çn%?›ý!ØÚ5GB‰ÏxÀ4Âèˆ +ŸØl«D*ŸE!s*‹¸aRTUºðžÒ×å¦\åñ}šëûK_W8p¯R½ÔYK߀Ŕ/‰šn;§ÑØ4úûÉXˆšaÀEà!-ÒM\geïuYæ–#܇úJJfYòÀ”ŠËÙkQ®«¬ê…S?Œ> +4 AÚ%R¸“ æöCJƒ‘×&a,è€Ë5X}E4J@Ýž½pÝ‘ <ôE$ðÕ‡#ô8=¢@J‹õÃã¿æ/ +>QÀ-vœ?”›¬~\
ÐL%ÂÀb6D'D»"$q¾-—Ë*ÈôÁEŸìb€,¸ZèGâÕk,
gy\U”Áå¢(ê¾üsäž$›Y‘ž4XCqy’â2†î-|F¬Oïc]
Pî^ëSNWRçRѵÍï©aûù¤û%Ù&]ÔåæuÈý„0Iû·*Nj©€œT¿®‡4/À û4oÿYŸ$»Þ”u¹(óßõn0LBHT„Îô·eÞsÂú¤ÌTË [è*×£÷|’^ž>¦µáh~µP±+<2à1ø4R•eÎ_NgwW·ó«›ëæT·\:XHféýDgô‡´®Î!_Q]¹,ô‰¡ú1Eà!{N
2›Îͪ«Šøãc±y]×%±ÁH^ði‰ÅE‚Àý6Ë“{~Âò´BfËrƒQë¤îm»ðþ$’ÌÒÅÖ1²…–é|‹+|&©fQ¤ ¾f¶@ß}°” „J{¢Hz{‚ph¾lCA#hB¬óÇ!炊L¹ˆZ>`ø<p8å‰5ÏD` +XÉ*|Vët‘é˜ +žÓëùÕü;îîdPXõÛtãª*™uox·=©¢ˆÉÆ¥¹éN„ïvïÛlz§/ËÚ7G®³\ƒ× áP‡ …zÓ㇎âÍüS›ÓN->.â°hÀf<ÔŒ›ñ^ìxû×ÖÌ8²aè³0 Ç#¶…t8`’‰×‹½Îv Gù9œ}~m?™O#uø]tg]fWe’¾Ãßµ¶ˆm.óÄ«ê×ÜÖv×;j—$hÑr[»#ŽjZÇ0|Ķڿ·Ëͼÿ•´È]€þÞgTýÒgj÷?^ÓN¦¦¿b‘o“_lù2ŸóþZáÚýÄþG¨WÓ8ãáÞ9w+\®`¶2‡|·_lw$Ô®ìÙ’ÚŠãÜ}€¤óŠFIŒöü¬ÿ:僟¯Hóîÿþ›x÷§¸}ElعX=„Ø +¥µNÙû‡ò¾ìÿ‚Ê¿Áendstream endobj -2402 0 obj << +2425 0 obj << /Type /Page -/Contents 2403 0 R -/Resources 2401 0 R +/Contents 2426 0 R +/Resources 2424 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2374 0 R +/Parent 2414 0 R >> endobj -2404 0 obj << -/D [2402 0 R /XYZ 56.6929 794.5015 null] +2427 0 obj << +/D [2425 0 R /XYZ 56.6929 794.5015 null] >> endobj -846 0 obj << -/D [2402 0 R /XYZ 56.6929 769.5949 null] +850 0 obj << +/D [2425 0 R /XYZ 56.6929 769.5949 null] >> endobj -2405 0 obj << -/D [2402 0 R /XYZ 56.6929 744.4739 null] +2428 0 obj << +/D [2425 0 R /XYZ 56.6929 744.4739 null] >> endobj -2406 0 obj << -/D [2402 0 R /XYZ 56.6929 712.5891 null] +2429 0 obj << +/D [2425 0 R /XYZ 56.6929 712.5891 null] >> endobj -2407 0 obj << -/D [2402 0 R /XYZ 56.6929 647.0402 null] +2430 0 obj << +/D [2425 0 R /XYZ 56.6929 647.0402 null] >> endobj -2408 0 obj << -/D [2402 0 R /XYZ 56.6929 551.5126 null] +2431 0 obj << +/D [2425 0 R /XYZ 56.6929 551.5126 null] >> endobj -2409 0 obj << -/D [2402 0 R /XYZ 56.6929 446.5077 null] +2432 0 obj << +/D [2425 0 R /XYZ 56.6929 446.5077 null] >> endobj -2401 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R /F55 1306 0 R >> +2424 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F53 1303 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2412 0 obj << +2435 0 obj << /Length 2973 /Filter /FlateDecode >> @@ -11483,1185 +11617,1185 @@ bì| wó¹æt/S5å‰eßÁ'Võ+6‡
Ap?Nâw2}›jÄ•2„³wßÇì ô…dÉ8{Õ IÌ\ØÁ]‚;¶´î8D Â`ZQÕÔ¦‘\aZJÂ4N)LãaZÈn#Êï#Lck0}…ig'B±áDm*Ìï>âÿgLÇ1TPùŒºÞ|¹ÖD Ð߆Œÿ7ˆ~lí8Œg¢ÙçÍEsâÇ1D›9
æD»ìh0'äÔ±5`¶©rI _òÈo#(gøÕ’ºnƒƒ6ˆNŒ7‚FCÆ÷¶gÑI°C4ž<.¢éæ“ çYc'»*+ð®ZS“(ÿm½â[1ÀJ:O©c€ýgíú·“ÝÇ:4“ƒ#¤83 Û «zþï¿ÏÙý5RƒOH<D‹ -¥ËDÜg½ûKž}Þÿ£¥òˆendstream +¥ËBÖg½ûKž}Þÿ¢Êòƒendstream endobj -2411 0 obj << +2434 0 obj << /Type /Page -/Contents 2412 0 R -/Resources 2410 0 R +/Contents 2435 0 R +/Resources 2433 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2374 0 R +/Parent 2414 0 R >> endobj -2413 0 obj << -/D [2411 0 R /XYZ 85.0394 794.5015 null] +2436 0 obj << +/D [2434 0 R /XYZ 85.0394 794.5015 null] >> endobj -2414 0 obj << -/D [2411 0 R /XYZ 85.0394 287.1527 null] +2437 0 obj << +/D [2434 0 R /XYZ 85.0394 287.1527 null] >> endobj -2410 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R /F55 1306 0 R >> +2433 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F41 1208 0 R /F21 930 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2417 0 obj << +2440 0 obj << /Length 2098 /Filter /FlateDecode >> stream xÚµYKsÛ8¾ûWè°©f…àI ¢ܬœ|Ïo†‘â õN|,àú)MÓŸ2û/âõ˜ ðÓÀWCFh±ªÓbž6gè©Rnëõ¶öÜx\6Ô¶ðÏ4bnŠ:û†1¥uVÁœßȰ•cœ±ÓrSí§´eêžLa6i7GJ¯PI*Ït
]&ÞH”°¤cËâó
Ù_T‚=¢èéEƒÒá¢{ç¨ ÿh-öµ‡9Aš Ž‰?ñ -JŠ5«x¯K}˜ø¸üôðëùŽt—ÎÀKeÏˇ¨i/j–=×îÜp7$$FTëïoï|¬½;óUVd Ò:dà{³0n§ÅÌ£ðKZlÓXB%‰B4IBÒy -m¿n´6Y+]F¬CYT3¸œîåÞ·‘ÞJ‰@rw7mí_µÒ,²’›ÔöyZU±ò ‘RR÷M_Ÿæ-ó¾ÙÉY³¦xÊŠÚûjEÓJ‹ÚŒW9—û÷ãEž>ŰàˆKEûK|h¥§³0ûÐ.71ZCÇ(’¨—t{ÖüzvtÛñnžCxÉ?FÁnqDô¨m ²¢$T„åôùÿÉú,$ëMY—³ò/@òg+Ýÿvý!&ˆÑ¶_Ç›ÈZò'Áaþ.åjnžàñxK¦µñ -׉»:kÚ|èߌv}Öæ‘¬íÀa}{ÏgíåæÙäÇ2¨êÛûá¥Â÷±ï -`ßþ=(R’qÛü×vÚ}¡ +JŠ5«x¯K}˜ø¸üôðëùŽt—ÎÀKeÏˇ¨i/j–=×]¦»!!1¢Z‡˜x{ç{díÝ™¯²"ƒ•Ö!ß›…q;-f…_Òb›Æ*I¢I’~ÌHŠ„|tså,rÌxÄ\¹¨3žfÑK +ã»È‡× +¢Á§£+`O¹©³íj·,GÌ6Òþ8%J8¡á‹ÑhL0ÆûGŠI¤4«zE#îƒ]MOÜ—EJ¥“ÜW©^õoÛ’Ôe™¿ˆ¯E¹® 8z=øÅ›ÁD@k ¿j*l8yíïš8l)B«ÓjEvŸ +¶Ðp‹#¢Gílýh…$¡â ,ÿh¥ÏÿHÖg!Yoʺœ•’?[éþì´ë1AŒö°ý:ÞDÖ¢? ó7p1(Wsó||ˆÿÃ[2m¬Wà¸>HÜÕYsÐÆ@àCoüf´ë³6dmëÛ{>k/7Ï&?–AUßÞ/¾‡ˆ}W endobj -2416 0 obj << +2439 0 obj << /Type /Page -/Contents 2417 0 R -/Resources 2415 0 R +/Contents 2440 0 R +/Resources 2438 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2424 0 R +/Parent 2414 0 R >> endobj -2418 0 obj << -/D [2416 0 R /XYZ 56.6929 794.5015 null] +2441 0 obj << +/D [2439 0 R /XYZ 56.6929 794.5015 null] >> endobj -2419 0 obj << -/D [2416 0 R /XYZ 56.6929 632.7441 null] +2442 0 obj << +/D [2439 0 R /XYZ 56.6929 632.7441 null] >> endobj -2420 0 obj << -/D [2416 0 R /XYZ 56.6929 393.4246 null] +2443 0 obj << +/D [2439 0 R /XYZ 56.6929 393.4246 null] >> endobj -2421 0 obj << -/D [2416 0 R /XYZ 56.6929 322.7553 null] +2444 0 obj << +/D [2439 0 R /XYZ 56.6929 322.7553 null] >> endobj -850 0 obj << -/D [2416 0 R /XYZ 56.6929 278.4974 null] +854 0 obj << +/D [2439 0 R /XYZ 56.6929 278.4974 null] >> endobj -1441 0 obj << -/D [2416 0 R /XYZ 56.6929 239.5941 null] +1446 0 obj << +/D [2439 0 R /XYZ 56.6929 239.5941 null] >> endobj -2422 0 obj << -/D [2416 0 R /XYZ 56.6929 205.2551 null] +2445 0 obj << +/D [2439 0 R /XYZ 56.6929 205.2551 null] >> endobj -2423 0 obj << -/D [2416 0 R /XYZ 56.6929 131.664 null] +2446 0 obj << +/D [2439 0 R /XYZ 56.6929 131.664 null] >> endobj -2415 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F55 1306 0 R /F22 949 0 R /F41 1203 0 R /F14 952 0 R /F40 1146 0 R /F53 1298 0 R >> +2438 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F55 1311 0 R /F22 953 0 R /F41 1208 0 R /F14 956 0 R /F39 1151 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2427 0 obj << -/Length 3202 +2449 0 obj << +/Length 3022 /Filter /FlateDecode >> stream -xÚ¥Ërã6òî¯pÕBW€ øHNÎØ;“xfGšÚÍc”Û¬H¢V¤Æq¾~ûФ(ÍaK4€ÐÝè'(}©à§/3*“Ç—i‡Vi{¹X_¨Ë'˜{w¡gâ‘&]¬fßþhÒË<Ì“(¹œ=vöÊB•eúr¶ü=¸þøñöáæþßW“Ȫà‡ðjb• -~¹~ø|ý3}¼Ê£àúÝíôj¢óÌæ€d-QÁÍÃtzûvòþö×w·Wÿ™ýtq;kÉê’®•Ašþ{ñûÔå8øéB…v»|Ž -užG—ë‹ØšÐÆÆø‘ÕÅôâŸí†YZ:& -k²ÐfQ:"‹H_jæÖF=aØ<LLdH7·Ó·Ÿî?Îî?7´æ ?u òcmsB^nêÚ-&º×'·ô¨ƒžªÐ¦V!2 ¸]ѸújbÀ"«,K†ÿPVMÝb¿»ÒYàÚyÖo¸WÈò¥ûC©hã–Ü-7Ü~úQvЬ±²b³ÌÅÊÄp‘Iœ÷
2 -Û¼£34L®†É-‚G$á,‘Æ,AoM.—q_ÊÕŠ‡QÊØB([òÜü•G–î±Ø¯Ùh¿Y¹ºæ™fÔ×°ÌTéLôubFTZÇae©wõ[‰F.øzà¶â06=çk*[þ0úùÈ(ÎA,B]¥öqùFhîÚ¾ä¨×иb‰©BÆÑû~Ì€ü0µú,—6LrJY÷O²’£àSŽöF)Ü×" -¡ãK²¸i¦Ø*áûDñ©D&õ -4 -‘'â‹ -%†kŠeÑx¡*~ÃÚ³ãj ·¡Ê}”þÚ75ˆ Ñi6/òz¥ñƒÐbµ_:îHQ˜ íßÔ<¶`U(Ä `dɦ©åkRwg‡‡ë¦âÅKîË·ÃlwåÙ.éJÌíSmTSeIb«„ -Jë$êBËiÒ~r˜ñ÷)h_Y›á¨¼ÝÏÁž…Iăðæb0†EƒDŽM¹f!Qƨ¿ƒÉæòr§·òåá²n÷(ê>bÀ°^tqå†ïi pNB¤î5(æK ~¾¸ùþ\)‹9ŸÏcØÔF3ØløÒ -{ÖûíV><Ö®nÏYŸöF‡&O¿’Ïv±ÎøE„/Æ¿Ažï«¥Å -ÒŒ£d6²¡¶Yvž²k„´ž¤Œ -u¬tŸ¶ûÍ5‹DŸ*H5üG ´!µŒÔ.yrQmš¢ä"²·ŠÓ' -y虣íò¥º8Š^éÃÖm¦ÓŸy “./JÒKvà(«5#µ‹Š‚=zR
5UÊ8†&[íçgP‰ø®Ó03vøt“UXžÿâ’;Né¡¿\±J¥Þ'ÅYðñýÛé?´æa9;¥´ËCÚ=J›aÝöÏEõ÷ÜÝM·ÞRüP>“$.Çñn<â8}>¾‘–ÅžúÓ
”òøO™‘‹WíÇñÿû9‡?Åih²ìÄg£bȺsí‰Bv´É‡¤·Ý9¦ýý¢/÷endstream +xÚ¥Évã6òî¯Ð-ô{ƒ[æäØN·ÓwOKyo²( +¶ù"KŠIµã|ýÔŠ”hõaì +@U(Ô +JOüëIžÄÊn’.N”N&ÕÓ™š<ÀÜ»3-8Ó€4íc}??ûö›MЏHM:™ß÷öÊc•çz2_þ]~útsw}ûßó©ITô}|>M”Š~º¼ûùòß<öé¼0Ñå»›ÙùTyR +`‡ÆgEÁË},|½~`0hã2gèp΀ÃÈø:>’uÏŽœ•ŠU.1)l¬ŒÊÆý¬ MûXÁ·ûÙéNKf.IúZ bP‚à#ÊÕÃæìåé9íÀG™ì+ÜuX#ìõµJ'.NøÏ3¿òU‹Â͈=wQõüºm7Ïåî„ç:.AoœV¢7€ÛéMn;½È!{ÙèK¹Úɶ¬&aÈ-Kõ˜4ޤpR¬‡ô‘5M¥±MÕ[ /Ò@uM€%KÂϳ˟®Ñ]XS`göþ’ü«…È6»¼`ä;8”NÒЃ'M’Ê4÷ÁrǼ»û"º¹ºz÷q6?¯‰˜‰ q +=å·äµÀ‡D<HbD4#ޱ!"´Éë÷ÜGßv]ߣe@£ïýj¶ÂH#?]^MYÂ>u‡\³åð¦ÈÏkÜáIÀi7bó€ÃJ’ãø&š¡ +‹.²!ÍÈøt
ã–þFø©ÊÆGÜøuS·õ?ê~oÑkfy´Þ`[ôÔŠ†ÉÀ0¹NàŒ¤µD¦óe¾f4¹Æ}©W+F±cánÉs‹WYúûr·je£Ýz囆gÚÑx`Áx3¥sQé©ÑzíâdÂÁV"ÖÁ)øþà¾]ììÞXuw>Œ!zŠÃE‹P_ïC,Çs#´ð]˜_rä‡kh}¹Ät"ç;fãÀ~œ%úä)“8-””ºRJ$! ¤%ÝRJЈ +1e+¡¾§†øš)Öp[=úêÏtá +ê¶lëE½ªÛ×°´• +&&!Å‚¢ý#©0dPr[Ø‘Bž41Q¿Î>|*p˜d_ +„©Í‹ÿn ,ႇ.ÌjÖ[;̬D2hýßÛU]Õ-Æì/ÖK`Õ9ŸIllUÑå|åÛr0F%/åÃR¬Q²kUOul(¡‹T"”f±.²l¨4弑®B’–&¡ +aŸ8hý#W˦{ÀQÓ]mB)LÐ +ÕÄIMîc½ÉiòÕ‘&'qâŠâ4É€4Br””Š«ÍæÕÁGuÈfé¿~’§cJš ݬ–Ó¦}]ùîA8¼f¢SEG·Ùµa í +e‡oËeÙ–x½ªˆ¾bÝ[Úñ'9ÐâX!rí‹ÄDÐï,7C%‘w-Ÿ“ªÕné¹#…bмÓðXŪPŠyÁÈ’
UË·¨þºpnÚ
/^r_¾Œí$Ñö¹þ"Û¥}‰Y«CúD޳ˆ²$±UG%¥z‰¡eû´Ù0aÌùë´/žlÏr¤Þî`ÝrHDBxsŒ¡j‘ɱ)ßVy¬Jñ+šl.oZ@½“/×M·GÉPŸñ‘úÖ‹.®üáK(œ—°é|ŠùR’„ß¶oï®ÿu*©5*Á<0ä6lj£Ym~ø{6»íV>[6¾éè<½é#ò"†lÜžv=¤·=D@"®«ñïL€Ê§jyÇQvk’X'y~’阯,ÖNéc·ë%ê‰ÆÙ .|lrô…Ó=<R»äÉj³nËšKÊÁ*N¦ +©ÝQâÔýÀâ˜÷ÿº˜endstream endobj -2426 0 obj << +2448 0 obj << /Type /Page -/Contents 2427 0 R -/Resources 2425 0 R +/Contents 2449 0 R +/Resources 2447 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2424 0 R +/Parent 2414 0 R >> endobj -2428 0 obj << -/D [2426 0 R /XYZ 85.0394 794.5015 null] +2450 0 obj << +/D [2448 0 R /XYZ 85.0394 794.5015 null] >> endobj -2429 0 obj << -/D [2426 0 R /XYZ 85.0394 752.2571 null] +2451 0 obj << +/D [2448 0 R /XYZ 85.0394 751.3869 null] >> endobj -2430 0 obj << -/D [2426 0 R /XYZ 85.0394 636.529 null] +2452 0 obj << +/D [2448 0 R /XYZ 85.0394 624.8718 null] >> endobj -2425 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F55 1306 0 R >> +2447 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2433 0 obj << -/Length 3185 +2455 0 obj << +/Length 3191 /Filter /FlateDecode >> stream -xÚ¥ÛvÛ6òÝ_¡·È»‚/Ø>¹±s©7N¹{9m(‰²yB‘ŠHÙu¿~˜J”ÔsöèÀ`æ>C‰‡ŸE1‹4£Ähqæ«>z€µ÷‚p&ibýxñæJF†™XÆ£ûe°WÊxšŠÑýâ×ñ,b—°_ßM§7o'·7ÿ}sw9&ÌøêË—›»ëÿ¹œÈˆ2 r>þtu÷ËÕ?öåÒÈñÕû›éåï÷?]ÜÜwd…¤®,Mß/~ýpƒŸ.8SpÂè&œ cähu¡#Å"”‡”Ó‹Ÿ»
ƒU÷ê+t”²H꘢R5Ì0Á! -–*ðî'©ë°È¥*dÌRˆd}ú¬?UR÷ü©gø¸.–ÖNœÅ#äC^–+ëmí$¿Ò=«…·NhÁ¾p¹DmÈT!˲~v¦ -OY¹Í ¹3J;‘«1¢·?.Ѭ58, ±”ÌCxЧŽuS¤Æ„îË’ŒŠl¾Uõs…Ãõ¦Xå8\:zê¾üõÝ[ËH=e‰£½,X z±¤ýꦱêùLÐbpx›ç¢!|ëþìuxß=-òe¶-Û¾²Ë£ê¥œqÎÏĤë¸úvXN}M̸IÎ鑎ì9Áx’îùeSTmÓs3Íc½!^4ÛÕ*Û‡®)p1dç"š=»§ø¾]åÝÆmfÙã€Ôú¤LÈ.UÓäó è8h¡÷ò“äv‡ØÇe£S–FqrF6Ö Ùx,'›Û!×yadü
ŠM>#x9ô,6#äò4qÖ -+b¦yjN×a
P×WXÀ»G*¬†rRic -—.º„èu\ -œ"(•ޝþŠ½Â”û<f-î™!`fé3–áœ3™Óç„wuR‹ñcæk}^^!hYo]§w@×YãÒl;FaÚÈW´EV"°)ò§‡@\2úøêﯼʳŠNË2HIï$¿wõPî%í¨êÈ]G0dCØá€'†|ÉÒäk6sÝ€Úz#+‹ö…°^[*è£AEK6§ˆjÜÕòº·6`ìnà¶§Øqæªï^±§5C޶Kž‹½TÔ¡YfA·‹rGü°ÒàÌ9?b÷ÖóÛs-3Ô¿Eþt˜ -"º¬ŠXÊy:¤{×b]S_%¼~Ó—j׿Tã*[ùÞ$µ63|Ì3™œer€07]£T–›×U› Yy†»µEÖÒ¦6²ÙçŒN§¾ƒë‚Rd‹>)m¶ºVUQî’ΗÂ3ÞC^ -A~lA^’¬Œ8SB¨~tÊ»â0k;GÈ«™µï(6|”‹~±gï|ÔëÈ*áôLC/@:îs<’s9Ó³%Œõ‡{4Ù*¶>E¡RÔëÑCFÈÁTCŠÞb0wÉâ48”ù3Î]0·ŠŸæ,@®óüuYÌ‹¡]j‹¨i!2dð¤½G§‘ïϧÎ^S¯|¨¡,\¹9dGÅŸùkJŽTaéPä1 /ëG.CI}†b|gÀøœÍh©±y²C®°ÊZ—7¾{w¿›¿ƒ4d -%úL÷"Ä:aùË™~3dúÓÚΗOÏ7yõÐ>v/4DRàÕIâ:¬êzÙ†€ª_ƺOÞ^ºÁ}`â–*ÇG™ƒø&ç ìÐbî
zh—‚ÊðÑeŸ<lZÀ„šË‹a "ë„ -Ú)2Þ«æÛ
Ø–”jbZî¾+y=±7®|÷k½Ý¬kÿu׷°·qT_D¬ @ÓgZç!Öq}é°œ¾Üé‹d:R>fn6ÎÇík?KZ‡5@[O[8Œˆëk‹ìzX†>§ör°ê?ÆZXJþÙ½\㓾ÿj…Ûöª„½Lê[àŠŽ¸r˜a -íy·Ú6-n=£#ò›VvÜ}H:ñÃh˜‹IÍžšíÚ¡à¶•wþ*h™ÁÄAðôÛJ£±±á Û†B 6 -2³{x‹@žöÝçñŸ®ÞNþÖÿ€{ýa÷m|Y“âtQ`èûwég›Ñ©±öŒ7ާGr¶ÙVŽPÇùúeÈ0SëwSs’&sHS/‘OoÿÒô1È‹¥žRT%eA»~Ò¦„”L¥]KèˆEɘéY”””KÁÑNô¾úåþÃÛÏwïìÿœ^#èîóP0¼ý‰X°˜ó½‚êî³×µžcß´ŽÃ¦uLMë¸GÛì("/µÌ7„ì´LÆžcñ8›Øi W³-¬Wc>e–%^ ÊFæ°¾.ËÙíèw^Í7/kÿ¯Ø–ûkT¦öÿ\:ÅGž_ÿ÷߯vÓ ¨GzäŸW2‰l̈=QöžBóCµÙO,hÿ/¥¢endstream +xڥ˒Û6ò>_¡ª=X³kÁxð…ÍiÖžØÎÄŽcM6»•äÀ‘ Ë©ˆ¤'“¯ßºA%¥jKÐhô?1‰–h©'©ŽXÌE<Yl®øäÆÞ^ ™y¤Yˆõ¯û«Wߪt¢™Nd2¹_keŒg™˜Ü/™þ‹ÅìVàÓ7çóÛ׳»Ûÿ¾½ýx=:‹õôæÓ§ÛoÞÿçz&cÈ€ÊùôÃÍÇŸn¾Gاk-§7ooç׿Ýwu{ß“’.¸²4ý~õËo|²„|wÅ™‚&OÐáLh-'›«(V,Ž”òòj~õc¿`0ꦎ±"Š3Ë(™ÌTÄ2Øœa‚¥B +¿Ÿç7Þįà3w#fE@1}‰Ý®14?%Jå#AÍÛº2U{’‘I*YÄùN†X§YÙc9^®Ft,S é÷ªÌÉÒœÉ,ÉΓå‘FÈ +9®c&°Ï²æ¦µº¡ÐÚF³5‹âWÎ¥ÕÅcPe®€27XTØûA‡(¯ÅÔ”4±^ ƒxþ +›Û]aý°m®=6ò°“?ûÁ2V[OEYbë¦ +©šbOi-¿3÷H’rÎ 1
ÑÉÇ8{peîO¯ŠÞ}2Zi¥¹}2.•…Nh`ÇœÇSš¥š§C'ã˜aæëv”RÎ:ÎyÀWÙÆ¶Xo±,ñ¬O¦÷VØóÎYzX :wÛ +
k¡ÙåµÝ¥ÕRRá×ùQÛ +—sÅétS/Í?A¢¤šÎ»-™€‹-0ÜU•±œq.QÅÉ´îÚm×Úà&³©Ø¢ì–ÓÁIâ£_—(ªe±ð%B’Ÿ¯ãX¿®;¢¢9h¡}éîJpK~P¹:̈gM‰ø«ŽU3•öá±¶HA†—Áq±
¨Þ¢-¾+dÏÅJ‹ê{9Íù<¿±
‰i +íMŒÄt»‹µ6KnLLçb¶h +ÓVµ’SñýLÀÜîSr»Ð3øÒ
-k¿+±ØaR÷¯Å’¦ç#FA´ ´ôØ+`Ö+\d,²ì@È{•>4A6îO}ª„±X™ß»bØ–/Æz#ÕK®ÞÇ'vÊ€=ö +tì>¦l$qtFšèŒˆÎÈ.²¡Õ`chãˆ6‘ƒ“Øaûæh´}j´ÕöE¿˜ó±¬þD$Y“þ1`STÝaÁ‡2•!%NÉÁ4‚‘yyTü ^MƒòŽâ4š?ŸÎýDbÿ}]¨î„X§µ¿ÇrÚߌi?D¶¶äåƒô©Ûõq
# +p–¸k„ºAÌ! ÷—I4$ï èàÞ=qK•ã¿£ÌA|)ƒsrv¨ ÷ +=¶J±ä·Ÿð1~_º€ïè±!b÷¯‚bFÆ„LôP¦ÝŽvlK +818ž¹—Æž¸ò5°m·ÛÖþE×İÂqZ^ ÒË´¼ð댼x,'/÷cò"íÿ*¼çÜíœ;ú‹FÌøEÒz¬Úÿ¢¡ˆJ‹ì+YÚÿß ŒÄz¨zµ°Œì³›\ã—Þ|4ÈÂe¹ÂA<Y.p%JޏrgŠÈónÓ5-.ý@[˜KW¶Ý?ø˜RƦ3} fû¢(˜må¿ + +gÐq©|ý²RGô7ír%X@<9…îÏÆm_”¾‹œÖy ë¯êË¥_=™{ó(+_ïíÿ̰÷œ¿k«||~2Øgô_ào¤f÷0‹@žöýcø»7¯g>Ú¾y· _Õ$8½{³õ&ýtIÚ—ßbfÿl5¢|â¯ñÿþO×þ¿kQÊT–P%™ÆV•O”埈¢cËbB"Ghÿîÿ“Îendstream endobj -2432 0 obj << +2454 0 obj << /Type /Page -/Contents 2433 0 R -/Resources 2431 0 R +/Contents 2455 0 R +/Resources 2453 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2424 0 R +/Parent 2457 0 R >> endobj -2434 0 obj << -/D [2432 0 R /XYZ 56.6929 794.5015 null] +2456 0 obj << +/D [2454 0 R /XYZ 56.6929 794.5015 null] >> endobj -2431 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F55 1306 0 R /F41 1203 0 R >> +2453 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F55 1311 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2437 0 obj << -/Length 2979 +2460 0 obj << +/Length 2936 /Filter /FlateDecode >> stream -xÚZÝs7÷_¡‡›±<‰6˯ý˜>¹µ“ºmÜ\íN/Óôa%¬H»>í*®û×@€WZɹÞ9¤H -
6ù‚}óÖ˜€RˆHé4³$«òK¹Ú7‡I$SÐ,”y ™§PM†•ˆ¤IúªÝ•]KgÖ-KêÌËéöᡪè§Õ,¢
ÀVAí܉'‹+‰0„ïoÞßܾ£µ?¸¿ùùöއÊÄ£‰ÔðІ‹®Š®D=R3ž5vôxZÒ@ùçãæBdã²mË9MU5M‘ÎÐY4›uÑÑäGø{ÿþêŠfšMôûïß¿¿»‹hòfA“žOa%=l×eÝÑÈ´S´¸ÔÙït~ªº%¯¢æüÕ9v– “ó×ÐËĸêh¦âMVuWnx[í -ØðdÁ»k8¿hK^¼°ôÍzoïÎ:^å®Z—°A•%ã·N•YS)몬g¥UIŽ«Í´ÛÙò´ÜjoûäÍjÕ<YÝE2ž>c›Ž›º¤fA¤&´[ËöSË?íYÃäùó…[I=>_7ÔUãó'ß›ûÞÒõìžpõºrC ¥&1,/íïB°é¡5ëÇ-Ù¨*^ö\VêSlây‰zÖ@5pðtNÙX%†:RO–ÍvC?æÅskM§üP7ºH0±*‹GêYa F0ݺ©»%3íK·C^^|D\Àê©,?;ñ&Hïú`¾M«¬biàâ2¤ËYWÁõ‡cbŒ˜ñø·[ë€eGÄ5á¿Þó)½Ã€ß;à0p´fN%ÀuÞFá}p«(SFvÔ!ÕqGí©¬£þ0쨳Ü8G=Oõ¦YØì»ëD‚c}I?O5 `Ï]'i”$¹ékÈþ:w¶Ír«
55µOËÊÞi˜,häsùL¿+·º¡vÊL·ÓUÕ.íIÓ^È_p±áüµÌÇ—ð]nÚ:]V]Ån
E¤ML¥R™}÷¹Z!„%;zðHõlµê%ûxéüœ´*ð‹¼T<ê¦ë3Û¶Ž‘Ý´-\GfÝ!”Á³‘ÿV龿KW;={zLÞQÛ<vU×tG•å4à,§eÉØF½^DÜE±]í]Oàëæ ›£ÁèH‘¾!Õñ‹à©ìE¸ºK™ükN'ÕóTúõïA)¥D_AºÊpÄÝìá©(£Ý=èQÙ›€Êo¨2A.XÍ# „%†;1A¸;Yw퇜 •Ì“. -rÖJ5êpÖŠÏ9´œ”>k
©(o…NåÖ7ÔÚ£€EórUR¬V±ð©©eaSS–dŸ‰Ù -÷6)=`ؽbWH\Y–ˆ X•øÓOÌmñËN¥˜âî%Šëm‹àÑ”£J€àÇbSл‡Ÿ©-˜lU´7no®©Î£wõ¡8§h§µÞÓM»¤99>X¨ð‘ï¥o»“þÖ‡RCâ™à®Ï “Ô›ÐUã`zÏ„:XÉ÷Ç|¢™°{°,¬º0ÂÛÆ1Ø6MK<`į"zïdÈu|ƒ',°€6Ú\¿ÖH0pICÙµp Œã> ó[Á1‚³6h{†ÅkXì„jáo·Vx¢X2à=ÇMÁe•1 +xÚ¥Z_w۶ϧð[”ÓZERΞ²%í²Þ¤½Kvv{Ö=ȶœèÔ–<KNš}ú MÙ²“³µ¤I +ØðdÁ»—‡ùy[ò⹡o–;{·Öq*wÕ²„
Ê, Þ[U¦MýXÖ8CiTŠƒjN3ífúp\nµ³}º÷æÍbÑ<ÝELÐëDÊñ +L¼‚RÚaû5Šâïæ¬aò¢g`l«àtÙPW§O®7s½Û3{ÂÕËÊaø 1,/íïB°é¡6ËÕ†lT/{.‹5+õ5ÒѬD=k 8x:§,‰¦N¬ÆÍfM?fÅskL§|_7kr$˜X”ÅŠzFˆL·lêî™ö¥›!'/: ÎcõT–߬xO¤·}¾v6µ¬j°Š¡ÇeHÊiWûÛKn,Eü~¦ak°ä ZPãðÛ˜Ò;ø]qÐñGkæT\gíÁ@
™S¨âô…Ôħ:¨• ÔŸ‡u–k¨á)ß5s³•ÝpÄa’½¤Ÿ£P°®“4L’\÷5äx[Ûf¹Ñˆ†ššÚ§‡Êø4L4‚yŠù]ÙÕ
µf²ÚLUû`N›vBþdžóWqœÏ!vÙitY 8tÙ5,Ô¤:
ÓXêÝð¹X „cô‘êéb3#ÔÇãcçb£/0ÈK¥Ç£nº>³Mk™½@Û‚;2ë¡‘â¿·Nõ-;]mõ˜ïè1þ@m³êª†9>JÃi XNÊ’±z½Ý»qmšå¹ÆWˆ‰uó„ÍaGˆ4<W’ìGð¨Ž8‚¥2Žp>äðzÐùkü@…R‹ì¸zŽj@¿¾ä¡”Rô$?šïAì`OEjeý Ge<;•]ßP;a‚C°šF¸–îÄáne!ÜájßçL¨džä +aÚâ:³aÜ +„sU"Þc/,®³h‹kÈûã\öq
€,îïí¥^´~Ja5ÀDâŠÑÁQ\ómdwxi‹—| ózvˆ_ +Ê®o¨¥úX×Ì¢¤»ZFÂ¥¦†…IMY’y&f|ù”cÌܨ]4õ}¹v÷vPÜÍå^¤8Ðá›Î»eñìÇÃeaî1 åªi«®YÓSŒAû +£â‰¢Àoð•YhdÊ"èù…“’ +d04¥3a\ÜI3.LÂïòû +¤™:3…ËiÙ¶ÆUaÒ½!n@Úz+ÎÆËÜ• }…¶ðɣà +ê ;ù'UÑa íìï@]tïc<©óhû1† úáòæò×süRwwyAL>^~yÅ™ßñ4¬ïk%ÜíB'6«¬[PiNvï¨}ž¦ÊN±Ô‹¹š)”åÖ{ç›Å6xÆYJNOÌլô
µ-¦çôyÁ>‚q + Ý#Õpw¬«iï ²ýÒèÕ¸¢¿²XÜ7k…˃¦Mt‰úqËni–i^´ëy[³î´ª'ðPü1>K^ÄÞÖóm2…ÏDëìó¦éLÄgÝA;JâŸóì+rwÿþ«¡í‘¨4”Yv ¨$ÁRB¤e¥p÷Bé]Õ5\O:‹ÓÝÿ×LDòendstream endobj -2436 0 obj << +2459 0 obj << /Type /Page -/Contents 2437 0 R -/Resources 2435 0 R +/Contents 2460 0 R +/Resources 2458 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2424 0 R +/Parent 2457 0 R >> endobj -2438 0 obj << -/D [2436 0 R /XYZ 85.0394 794.5015 null] +2461 0 obj << +/D [2459 0 R /XYZ 85.0394 794.5015 null] >> endobj -2439 0 obj << -/D [2436 0 R /XYZ 85.0394 699.292 null] +2462 0 obj << +/D [2459 0 R /XYZ 85.0394 658.0977 null] >> endobj -2440 0 obj << -/D [2436 0 R /XYZ 85.0394 208.6591 null] +2463 0 obj << +/D [2459 0 R /XYZ 85.0394 153.2806 null] >> endobj -2435 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F55 1306 0 R /F22 949 0 R /F41 1203 0 R /F14 952 0 R >> +2458 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F55 1311 0 R /F22 953 0 R /F41 1208 0 R /F14 956 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2443 0 obj << -/Length 1708 +2466 0 obj << +/Length 1723 /Filter /FlateDecode >> stream -xÚ¥X[s›8~÷¯ð£=-ª.HÀ¾¹‰Ó¦m.»;mû@Œl35œ4ûë÷IlÙéîNfb!ŽÎ9úÎEŸ CdȆAä#Ž .²®àÝ»12žòºRoçƒ7,F(TçËŽ®á0$Ãyòuô 4
xt~=›Mϼ»é7§cD‘ï&··ÓëóË/cr ŠñèjrýyòIÏÝŽ#:š¼›ÎÆßçÓyëV×u‚™òé¯Á×ïx˜À>0bQȇOð€£Ãlàs†¸Ï˜Ùfƒß[…·ÍR'#Êu`A©!Á(k°˜¯¥ÚÄ›ŸtD)F8 `µ‘Aeú×F°¯“ JüÐ~ØnäØc>-мŽÓ¼ROxoVE™ÖëÌ«ä"U‚-§†r“T -æŽ.ŠRÏ÷i±5Ë+¹ØÂògýª“p$ãªÈ«×0#ب^§ÕNu!)¤YŸµrC ‚"Îiãö:~”:°+™Ë2Þèc&ÑO²ÌÒªJ‹5ª0è‘ϸɩ¢^»€ô#äùì -8³² -]æ[¬n6ÅSš¯´IP‘i8áÝS±Ý$zþÞˆC’oeò›Ã' -B -s½ÔOò -êÓƒ]®T<4K/Ö¿
ÍĽþ€Ì„‘üóæzªG§·¸Wns›$»ÝÀƒÝΓ¼6É¡*Hê˽\ƒÈd®-·fuî~ì8‰^aÌ^QA~ÙßKU>˜ÛF…}»Ý×mŠîÖ>ò1£&œ}xÁ‡aDmÁ/Lת›¢o,Jmж‚ÃÞM“È6©#{<Ò»ˆ -’ÐUѰ×^±ìµ•êâc°QÇÈWo]~·ÃG½3°Ý)Ÿ!>N !ߊPÚúmõ}t胨†‚Û¥\@Q?;tr Ú&r«tú¢R™¯ÒÜÅÓûbÆ¥Ah—éFº+Öò@áÞ
óùtvvwy;¿¼¹vL{esäû'S€k©¨¥Óª°„ÎDAv™(,ƒ>ªn_ÉÚ,Ñ9.º9tŽ“ã]1£4ÔTM$RiÎçU©Y ÈÁ݉4V©=ȆžÝ„9Èá)Û©«\>ú§eŸj´\µ¥äš¾4·¤–˜´eœO²Ov:!£_áµ7Mo¨¦Ú€–Ã
'K²+¥/”®’l¥”]o½oH#Ž‚LZ!‡IºGU‚pÏä4³mn[Å+`&«ÝCËåÏTß -\˜À¿ì4$¡ãˆX¡Û4xµ¨[š«gtS÷'`ô¤gСk=Î +xÚ¥XM{ÚF¾ó+8ô +F š{lÁ™Ï*&ZpQÛ"ÍËÒ̃ofwkr«lâM!ðŽb
'YêùfÈ¢I*S!ä z(ì@
¾PÊW¦|3¥YµD‚<Y#Ü$¥IqµÈq©²ÁÒàøn“åUCPV0»%(ìjÁµ !åÌIt–üI’äMf4ñ¨L‰cöÆH¬G}мJ²¼D·VV;¸ÛÞ¬²9Ž-?ÆØà-N“<õŸ$ñ³"f÷`2XL*†‡yŸÇí?§¶M?àà H‡€S"y¨kF³¥ñI“‡ÍaÏXŠkÒØ¡[Á'Tw¤³³Ä>B›A8?ÿ‘yQ?S\«–Iå˜$9n2 +ŽÏ?žŒÑºe†^›¼‚š˜þˆi‚†L4¦}ÞãÀ•3=6¯d]óJˆ³Õm±=ÖAygæ™%œ#šUZZ\Šøà]5¬7÷Y±uÛ!§·°}‡¯\Ö–E^'¨à¬Ü³kDHãöçE…AÞH³Cƒ-“{ +n²ÊN (OG¸ŠÂÂJmk»‚šÂJZ¬!WœÛ£·3›‰Ò¹Óü•¬ïV†Ì‹µG`H¨DCkmlKÚÒɶ(V«âÊ ,ÖhTx÷PlW)®ß8rˆõIñÈpIÄaÍe@è)½†&#HðY› ^¸Á'È-8Ê?/'c½¬¢½j—ïµI£
FK^¹i qƒ6€q±xqà™µOåGÇžu„$o(o¸fš¾$/Úè´®ªÁ+*uß¶ÚéU$‘T4eøµÎFÃ0ޗރΦ>Ñà
"<…ÀFÊ⫞Ññc„…ÎêEƒ‚Ó¶· VˆÊ¹TìqGspø‡ +è¢
K‘Å»ü +ñº¸¯¤¯ÖÊé./îʬ||O„´ +#°"“1"’¾{M~ˆ;û/}$dÌ6²õOúî|-U×<Î4¶ˆ|–›¯Íðƒ³»7ÐJ7-× +‘•¯éŠI5ÙÛò;óðwZ5Ø ½<ôñÅfçá©$Ѽ
ã–éøU¦&¿Ír_³~HÖr\¸xv‘Œ?_`¯ +Ý;^>O¯O¯f§—OUò£á>Ä—¥Õ¶£MKmÓJcj¶CÝtt0À:e›èïKS¹-áºáÀ#\»ï’9~¬nOíBj,çÜö½vš¹
ˆ>@§(cõ©¼©bý Qâ°4uKl'«róàz$Ûöm»Ú¶åØ»Ô7¥¶+i“8/:IŸz.̾5àRû…Å“e´õýÿþ³ÿ`%Á6QÄ÷ßho6Êv%ºÊÚIýDôæ“ÏSÙÿ2®Çìendstream endobj -2442 0 obj << +2465 0 obj << /Type /Page -/Contents 2443 0 R -/Resources 2441 0 R +/Contents 2466 0 R +/Resources 2464 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2424 0 R ->> endobj -2444 0 obj << -/D [2442 0 R /XYZ 56.6929 794.5015 null] +/Parent 2457 0 R >> endobj -2445 0 obj << -/D [2442 0 R /XYZ 56.6929 673.126 null] +2467 0 obj << +/D [2465 0 R /XYZ 56.6929 794.5015 null] >> endobj -2446 0 obj << -/D [2442 0 R /XYZ 56.6929 524.8702 null] +2468 0 obj << +/D [2465 0 R /XYZ 56.6929 598.7685 null] >> endobj -2447 0 obj << -/D [2442 0 R /XYZ 56.6929 462.3998 null] +2469 0 obj << +/D [2465 0 R /XYZ 56.6929 432.9509 null] >> endobj -854 0 obj << -/D [2442 0 R /XYZ 56.6929 423.8388 null] +2470 0 obj << +/D [2465 0 R /XYZ 56.6929 360.8886 null] >> endobj -2448 0 obj << -/D [2442 0 R /XYZ 56.6929 390.9952 null] +858 0 obj << +/D [2465 0 R /XYZ 56.6929 315.6627 null] >> endobj -2449 0 obj << -/D [2442 0 R /XYZ 56.6929 355.6003 null] +2471 0 obj << +/D [2465 0 R /XYZ 56.6929 279.8921 null] >> endobj -2450 0 obj << -/D [2442 0 R /XYZ 56.6929 290.208 null] +2472 0 obj << +/D [2465 0 R /XYZ 56.6929 241.5703 null] >> endobj -2451 0 obj << -/D [2442 0 R /XYZ 56.6929 230.7024 null] +2473 0 obj << +/D [2465 0 R /XYZ 56.6929 166.5861 null] >> endobj -2452 0 obj << -/D [2442 0 R /XYZ 56.6929 156.2768 null] +2474 0 obj << +/D [2465 0 R /XYZ 56.6929 97.4887 null] >> endobj -2441 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R /F48 1223 0 R /F40 1146 0 R /F53 1298 0 R /F55 1306 0 R >> +2464 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F48 1228 0 R /F39 1151 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2455 0 obj << -/Length 2177 +2477 0 obj << +/Length 2079 /Filter /FlateDecode >> stream -xÚµÛrÛ¸õÝ_¡™>”ž\‚hŸ[Ùj“Ø®¥Ìv&É-A'©Š”]÷ë{€P¤L;;ÝIvfžÎ0QøRI¨ÐñHé˜HÊäh±=££5|ûõŒyœq@w±ÞÍÏÞ¾j¤‰Nx2š¯:¼RBÓ”æË/ÑÅííäújú¯ó1—4zGÎÇ’ÒèÓÅõç‹»=×<ºøu2;32HÊ¢%4ººžÍ&—ãÙd>Ÿ~šœ›ÿv6™·zuugTX¥þ}öå-á¿Q"t*G°¡„iÍGÛ³X -"c!¤8›ý³eØùêH‡lË”H'£1 ÇTŒ*Á -Öõ -¼Z9»,\‹‡*g‹5dª¼ðe¼úV|›ÝHa:V°|oñÞ=‘2& oc°ez;Àœœ&Е<Ó¬1o«Õ -ô`›H(Š">e{ñsØÞ
°Ï&$f©èwÑÿ‹ÿôç¨}õsØnÚÕÀ -Æ©Áé§gý\½šÌ.醴óéÍõ@n ¢uRœd8CaM*¥€U†?¡žÓÚ>Èl·\m²‹Ðª‘í¨va]Ç"ÏÊÕ³M¨gv}¬gVFæiêYä–µñ̞›wÎÒóFHè~?ó“A¿õªI4K=BÈÞ?ÅãîEüG<Tà1ý<Æ‚3ç„Ø¶ C -çƒ{ zôîsÐNâè +xÚµYÛrÛ8}×W¨j_äÊÁ… ‰Ý'ÅV²ÊÅöXJíVeò@KÄ +/‘²ÇóõÓ +»RïY4H„4.Ö]1ÂqL†‹Õ·Ñäþ~z{3ûïÕ˜r<z‡®ÆãÑ—Éí×Ég=w%èhòa:¿ +B‘ñèæv>Ÿ^çÓÅböezõ}ñq0]´~u}'˜)§~|ûއ+x…Œ˜ˆùð0"BÐa>8C<`ÌÎdƒùà×VaçÛf©ÎbÄcyÀ dHœS
.PÈ(kи»_Ìînç'o‚æ +(æi|¨’ÔÃ\VLJ¤Xéü#Ñ9LBA‚ð2&]©ó˜´R
&Ÿ”É·ï9ïHÈ +!LF@4{ÅUòŸð‡£ëäP59êøO0(‰CjKXQUr9Þ˧ò‡4â]Ûaˆ"N#Ýà
ÖKz¨‡©áD˜Ñu»$Ýë‘l²OÒµ–Nô£æ<=N2ædeÖCÙ¯šˆÃ8OêåVmú&…HH µ‚Ô19DÜJ²
Ðl½Í{}D[ñf7†Œ×=rÑ(,:K!#ÔBÙiáÆ4@«Û‘Nåùtª×N>Ïï<bXÇÕˆº +ÀÉ×Å¿ï^GnV@™.lùœ¿TµÌ
A\—EÜ”ò£Ý +ZHž +:(7ÑáˆQUxUÕÁãËÔÙUÑðXà£ÎVÊUaø6^·#Û„³nªG +ëvá=“<@!m“°UzïQ +QŽC(KFiRË·åzº³Sµ!VdA_íäç¨}ð¨…Ȇ( 1sËèÿ¥ösܾù9j·íèÉc@/âý¶µ§öjG¢¯zê:Ôù<tkͱ¹ë©vßШ†
º†~Ê˰ý"8»x3_?ÌšË +ˆð6GË]B¹TWj4-š‚öN¸ài™j@UX +=õh¡Ñ\éï_|
§ˆéìy“¬é¦ø³,¼ÙAS…í¾WeOY)Áð^›QkÛVAWGaì&DU®ëgïUÆJBÓ«½k.FdáÔÕ¶§•»ðѬس´ÚÊÕ/íZ÷`RmËC¶rjœœZnߤë€BŨ–õÙ&„ĈDßýÌ m…îŽ=ê5˜jÿÍxRÙ)V=ŸšÏ没ù¶hè 8òåzWÃl–6>0Ât¼O£ +'u8¥³°Õ³Â›Ušï²mȦ¨+í„ñÆD¡™Ñ¢CnbN\&vÛ$÷¡ ®õAÉbooĜޫíðûHë#1¥ÂäíÒ˜šn˜+S\ªžŽËmRltš06z,Õ!Z)8ÞPsQ+{VÌÙ©±À±o›Cý0±øTÀz“$É›Tý¡cOèì|u˰]åghöHÀ]Í:‰PE½ÍÖ±j+‡Ç2œ;¹m¨3DXt0Sz! §¹NŠx4úr¤"Ñ…œ‰Ø]Þ
¶zVÁVŸ:¯`p¬lFQ&‰žÛ`ŒÍ)Óºìä›Í¯ä1ko¤ªå>m¶Û™c¥›£–Y’¬2ܲ˒e?AÕ†”E{ãQ\¾½Eç~ü€~DýbáiÛq[Uþö#Ç_€‚±8¦þ‹†áƱN)8¡åé»Þþ„rêû_·Ïj¤endstream endobj -2454 0 obj << +2476 0 obj << /Type /Page -/Contents 2455 0 R -/Resources 2453 0 R +/Contents 2477 0 R +/Resources 2475 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2424 0 R +/Parent 2457 0 R >> endobj -2456 0 obj << -/D [2454 0 R /XYZ 85.0394 794.5015 null] +2478 0 obj << +/D [2476 0 R /XYZ 85.0394 794.5015 null] >> endobj -2457 0 obj << -/D [2454 0 R /XYZ 85.0394 611.5427 null] +2479 0 obj << +/D [2476 0 R /XYZ 85.0394 752.123 null] >> endobj -2458 0 obj << -/D [2454 0 R /XYZ 85.0394 548.5685 null] +2480 0 obj << +/D [2476 0 R /XYZ 85.0394 500.7908 null] >> endobj -858 0 obj << -/D [2454 0 R /XYZ 85.0394 509.6576 null] +2481 0 obj << +/D [2476 0 R /XYZ 85.0394 437.8079 null] >> endobj -1442 0 obj << -/D [2454 0 R /XYZ 85.0394 476.6602 null] +862 0 obj << +/D [2476 0 R /XYZ 85.0394 398.8908 null] >> endobj -2459 0 obj << -/D [2454 0 R /XYZ 85.0394 441.1116 null] +1447 0 obj << +/D [2476 0 R /XYZ 85.0394 365.8909 null] >> endobj -2460 0 obj << -/D [2454 0 R /XYZ 85.0394 375.2156 null] +2482 0 obj << +/D [2476 0 R /XYZ 85.0394 330.3396 null] >> endobj -2461 0 obj << -/D [2454 0 R /XYZ 85.0394 291.2959 null] +2483 0 obj << +/D [2476 0 R /XYZ 85.0394 264.4348 null] >> endobj -2462 0 obj << -/D [2454 0 R /XYZ 85.0394 131.4663 null] +2484 0 obj << +/D [2476 0 R /XYZ 85.0394 180.5065 null] >> endobj -2453 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F55 1306 0 R /F22 949 0 R /F40 1146 0 R /F41 1203 0 R /F53 1298 0 R >> +2475 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F55 1311 0 R /F39 1151 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2465 0 obj << -/Length 2846 +2487 0 obj << +/Length 2923 /Filter /FlateDecode >> stream -xÚµZÝsÛ8Ï_á™{°3«üõ1}ÊnÒnv7m›Ý}m9ÖÔ¶|–œÔýë @Z²e§íÍ%¢@Ÿ -1¸¿þðÛõ¯D{¸Líýíèò¯ÇŸ/n½^MݥШÔ.þøKô¦°„Ÿ/D ÓÄô^àE2MUoy˜PkGY\Œ.þá6zíÐ.[„& Œ -#°J„*ÕÝ“A,%0Å¡D¬”·˜’]s\h±á/¸Ð7ïŒipJÐ̤ 9¦Å&ŸÔåfwh©Â@¡zÍi”ó\Ú©æœ*
„o·ÔåuEŽ©ç95@ŸK™X'K*Vô|™“ùû§œ™þB-r––‘æ-éI´ª˜æÁ‘÷Ùı -ÄpgÆ«+gØ?Ñà™å/—kwÖñ*×Åá§“hðΩ2)W€Ö"_Mr«’3ê©¶“ùùy‹ƒåºfåbQ¾XÝe4#¾d<(W9ÊHM‰Ð¶b1“}¶¾†Îþ®)¨ -ýeiÍ¥ô ÿâ[Sßš»–]Ž^ŽTÛϧáùâö*$›^Òw¸%›WÁÃvy¶a¥þ„Œ?ÍQÏpu8žü”td¨¡Âá¼Ünèeší*kbðòÓªÜPT…ŽEž©e'ƒi$ó-ËU=g¡íÙ-ÉÏ'NL×õ’çŸÜô
MßµÁ|‹Z+°ŠåÙ‡5lT Ê-v—RÊbJŠÁï—–VƒHŽ=š¾:H0-g`°á ÓpFc+Tå -’ø•
vƒé®˜ÉÂêúÕcÎ9TÁ.[ -Ò|š@¾ojG˜‚ÍÙ„)l!¦´ ¦Z\UØ(Üø’žcfÈ0ø€¨)@'‚ÁÐ!!7B’ì±dò0Ë$0ÁW‘IJʾ:þLñøÐ)l-EH“ë4B<—…È?»!"„T_ƒ„alÎëç¹:<DI¨’¤!Ã$a»bƒa’PèÁ§ƒI“‹œ™Pΰ=%¹{Ì”«žËO(1Ä”ÄÅ7 -1ߦ<ÖŽe|/úŒ R¨WÐ×à:ƒ>ÇeÑw×¾4ˆ}
øT UšžWÏsuè×N{q -º\gÐå¸,ºnºb2ã¯Kà‘ð¼zž«C¿vh“°ÅmyWEÇjð® -+h9¥ü®ªÉEû*hn|IOë -4Í9å?-¤ß:YvëÄ3ÙCPÒ!—½K^”«§|ãsaŠuަ¾!Nq¬Ã‹‹wËl׉ËÌ
<àK›Ä¹.«ÂÖDñ Á Ãñò”…z€GœSÈSQ¤iüJAªÉuyžË"oôê~~½É§ù$¯*<”FÂo[[„\¢À¼gõtLz¶é@iÛŠŽ -F‚ÍG{ ->´o˜Í6ìªïx[²7%y\-é¼7á9ÀñÎ(Éh‘>±+N'Ò¡O¶LƒNŠ´Õˆê€›•=˜[Q-í9[\uéö·*û2j3·Ù¢Š#쪓¹M&°›‰ä+ƒ&×éã¹l„):wNR—ÛÜꎂ -ìî#
Ô³ºy®åZaE&A¤DÔÖŽ[äªj‘év0x5-Å gôŽHv$SÙÈ€üÆcáêw‘+kÂУ)8˜6l cj‹Ç6ÌÀîO(yÒøóéd©Â&^g›ŒêNHÞÑ3c¶EžÑ\¸ÍÍ@\R4Ü×WEJ+ Öán¡; -£$'‹jûøŠ³oë–öÒ;0Í2#Ü7¬ú5GLgB¶ô¡ ÃÆHþL‘FŸ‘íWaEXuÂËFZ±äÁãÌw‘ÞÇɶg(ô¼EK,@w†Hð•+0âÖX[™Æ…)Éá·[ -Ò8ªI>³eX$XÃb£¥?xJé
ˆÓ’»ø9þJÞöã\6þJ{èð›7D[©[¸›—Œ÷qÐlx(ð‚ÒÀD‚¬ƒøÒŠ¿?bÎ Šà„NÜH"¥]Q½c¾ÆwÎ×—x*±„fÂiŒËàL0Ï™è¾]´’ý ¬•ö:E{áØŽ +xÚµZÝsÛ6÷_¡™{°<±@ðcú”Önê¶N|'wînÚ>Ð$qB‘ªHÙqþúÛÅ. R¢ä¤7—<\,‹Ý÷´…ð_ŒtÄ™ÌFI:z4[_„£%̽»Ì3qL“.×wßü ’Qd±ŒG‹Ž¬4ÓTŒæ¿¿’à +$„ãë÷ÓéÍ÷“éÍÃÃíÝÍÕDd©ã·÷÷7ï¯oÿ}5‘:nà
ÃñÝÛ÷¿¾ý…h÷W°½»™^ýñðÓÅ̓׫«»*õçÅo„£9á§‹0PYªGÏð"Ëäh}ièH)G)/¦ÿð;³vé -DHËcH1"È´–=kè,ˆ•TÖîn?¼?>‰!âQ"E #-NìLL“.—ÛxÀŽ÷,·ŒU¦:=¿¥cØRv¶ŒÓ Ñßò‡z{%ÒñÌ€³tœWø›Œw›yÞ2^æà¹œOõv·ôüѼÃsÑ®ˆTÕDY›6A9QCiÊyèŽÿu¥õ–Ô;Ô®Š†ÖÕ›¶¨«7h»©$ +"&prT^5™MÓ¶ÅÚ0÷аtªFïuX÷\”åÕD©h¼È;Òãç•©ˆ–·Yƒ +Õ’fÚšèÎ*HˉTše>{!B1¶o’=_4.®ÄbÅØóá*w¾‰Ò1Í~½vÚéñ£!Šu’™Ñè0§é¢Â#ƒ-øpäS+P&ñ¸2Ï8Ðcrì'S9~´ö†iöW¢÷+êm±,ª¼$2yÈìC ‘m^TfçTi2~p‹ý²!6¯)Ó‹04G§CÚ#SÀ}D@CÛߕ錼¶!©©Z +:èôàÔkk€J’œK;L§_RÇdßÑŸ eZwD$9L[3këíË¡bBFA¨CyV3Ït¬Z×BfA¨ ¬uu›š¶aÃXŸÀ +ö(æþçï§‚ÈÍn³©·-=-qÌÍ"ß•è4»MÔÍÇY#Ä·60C”RvëÅgï^ÌžHª|mzÃÁ½O. TüëŽã’§Z›@pÌÂ8´žBUQ؃Bõöý;ZÜ)ݬ¹DÆ`gRõÒ‘ËU¶°I"ŸŽÌ'—h´NÙ˜¹O”.£ÒäàßÝÝõ5Í@AÕ£þøãÝÝtÐäí‚&½ +ËÝšrZ‚)Žß¥¿}¾æd|ù÷K—¶™0¹´I^qa¦àCUk¶|¬–Nbx2çÓA¥óŸŽ–¿^œ½Ÿ†qƦaðIlëI²j]ZSÍ×Å‚³ýn¶:¿o1xüE]–õ³Õ]@í€øP*V†¶L©)ÚV,f²OÖ×0yùr *$£ñ庶æ’j|ùìGs?Z¹‘=®^ŽÔÚ×·áý’þ)›^Ð{¸#›WÁË^L¾e¥~‡|?7¨'UCù)«XÓ@F(›·ô0Ï_kbðò²‚ +ÎFU˜(M¾¡‘ݶ̷®«vÅBû»[’ß/<±]GÔ³1ÝöMßÁ|î\XÅòìƒÃ +ˆr¥/¤•Ì´ôÓuð›ƒÓs:gtJ!è!êÊ6&¸ß¶²Œv•Á»b!ûÆU¼Ûe0¼<™À¢0„VÙùÖå:À<—M`÷¯&0T÷›za-q˜ÅTÕHÎëç¹ìe1•Ø@÷äÔŸ9Ϥ™k€d[ƒl_ˆÂdN*Cá¹p«kú}d!›ÝcY4+ëÇδßäsmb$³ñÛD>7mC6+íWèÖð¦6·é$H¤Š†:Ftö£qà™•»ù!”<?Sd·{UÝö…í'È¥Ã^f—(O"KAï/³ø•Ò¨ËuYžË"ëí«mÎ9`A¡Ïªç¹ôë+ +ƒ,…¤ßS%÷ÏZ3²p„ÈRÐ}3²z\ÔecDqëkú}d†CöØ +rmEÍ
¸¶Â–-'¥¯º\T]Á pëkúµ®€EsSÊ*¾€²"lÅ;ÙV(Ë^†QŒ˺ZšÏ…Þvô0õqŠcö-.Þó—nH\çná‘ endobj -2464 0 obj << +2486 0 obj << /Type /Page -/Contents 2465 0 R -/Resources 2463 0 R +/Contents 2487 0 R +/Resources 2485 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2468 0 R +/Parent 2457 0 R >> endobj -2466 0 obj << -/D [2464 0 R /XYZ 56.6929 794.5015 null] +2488 0 obj << +/D [2486 0 R /XYZ 56.6929 794.5015 null] >> endobj -2467 0 obj << -/D [2464 0 R /XYZ 56.6929 585.0303 null] +2489 0 obj << +/D [2486 0 R /XYZ 56.6929 751.9327 null] >> endobj -2463 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F55 1306 0 R /F22 949 0 R >> +2490 0 obj << +/D [2486 0 R /XYZ 56.6929 503.6095 null] +>> endobj +2485 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2471 0 obj << -/Length 2259 +2493 0 obj << +/Length 2264 /Filter /FlateDecode >> stream -xÚ¥Ymsâ8þž_ÁGR5(zµ¥ý–I²YövI.0W[;“6‰wÍa“\æ×_ËzÁ™»šªA‘šîÖ£Vëé†0ü#)fŠbÅ‘ÀDæË3<x†µÛ3beFNhÔ•ú<;»ø™Å…TD£ÁlÑÑ%–’fé×áåýýÍäzüÇùˆ -<üŒÎGãáï—“/—¿™¹ûsE‡—·7Óó‘1‰AHj±¯'ÓéÍÕh:¾üy7¹9œýzv3óŽu'˜i¯þ}öõRØÃ¯g1%Åà
þÀˆ(EË3.œ17SœMÏþévVÛ¯†ÀL"!i@ƒ’!H A{p…"FYÇýÃx2OnÍÖïîgã»ÉTï«ýöK< -à!cêÂ' -.CÄ<fSq4œ›-'S˜ãË><ˆÂ†Fÿ}ÐXßÚ>ojµy*48Ö’8h‰`…(‹]†½üqSɼÉ_?d‰B¸e=ü¸%ßkõ±} $q)`°6â<ŠìðzçÕÈËÞaÆXm‡æìwƒfagý:¸WIÚÛk×fšAÌ÷ìé«Mðp¦iÅþ§óšñg±£É¥‰Oþ¡¥Ákù65Œ"l´î»Î’ä[#‹ü3ß! €m¹† -¼ ¯›uÒ¸“xÈ™ ¸rn‘ü=)7IID£ÈÝ×)é£ñáç+£h èãQ.ÈQ€™ä(VTö¾ü2ûåîá²Fn\B>-3<Ó÷ºÉ–ö•¿ªÊºZ7ùf¹µËÁBDŽW‘! -ÀiÞb¼wmBa^ -eÁIäxÚ5¸ù’Ä=NèµN}ƒÈŒw6ãíº–öÌ®©ª"„Þ Æ÷²ZÕy½Ë"àЈ0Öá8 -Ñî›Tu”ÏtU´T‡øŒ— -n_ßï£äÑæ–ï°Þ«
,Ž)€óèlè–Ãû/c—½Æ4 ±ÇÓ|Íáj¼” - 9Ô«WzsRiV>çe(õżÆìÓѶè¿éލ§>ö½ÆPQ÷€¯£EÀeHŸÑ«M³Ú4£E^„Œ1ŠÛÛÀ³½øÑ?¦ð*î“Åÿ€ýß'‘ÒÕLàÙ’ú²F»êŠÓñQ-¨>|”y@#ðÉQ±>{Êu¦zui7p¦{îŽOº›—íáµKˆ}³=Pÿ:©ö¯\³Ô -°1êé¢×89©±®(Ž×yRö–`‚""÷nuÆ"Ev8{µÎŸäøîN:îîÇAˆcc¹wt+?º÷£õÁâØÊ:)! -5ÙkŠ2ÄTÔGM:¡€É^SÐ#JôMþ«íÿÂk¼xß©¹Ý%M·Å„¹=ìƒ-Q‚cDàx›ŽÔlœT‹Í<Ô… -˜±[!ô¡Íˆò¸g^*àZ¯(fPGqLú¾M]ÛÓ5•ýå€ÂÎFcë[¸™áÃ3Ø;qDN4à·BGúïV¨Eój/Ò\©£öœÌ¾½FP€FhÏàUµ\A:|Ê‹¼Hc‘î–¦ÙOç#ÞÚX3¡¡‹A—¿—"F÷–$¹'ºÚ2\¡‚8ñe†K&Ú¾þI õ#MsÓ®bQû̾[’"¹mÁ¤õ§úäè¤S.ÃA¾/]QŒC¨Ñk$Û`ú´“u{¬—¼«"Íìš}·±¹O t÷ŸÀûãvyš +xÚ¥ÛrÛ¸õÝ_¡7Ó3!€ ¶OŽíõj»+»–2í4ñ-A7©);Ê×÷à*R‚"§Ï˜àÁá¹á\!2ÀðGœ!eñ ÍbÄ0aƒéò^`ïÐ"…]¬“³Ë_¢t¡,¡É`2ïÐâsN“Ùçàêáávt3ü÷EH>¢‹aüq5útõ»†=\d4¸º»_„„§$$.ÑÜŒÆãÛëp<¼ýç~t{ñ4ùíìvâë +Op$¥úëìóÌ@‡ßÎ0Š2Îoð‚É2:XžÅ,B,Ž")ÏÆgÿt;»êSŸ1XÄã4õXƒÒŽ5†uœR–¡$¢‘²Æp~F4 Ú…‹4ø*¶R4ð,ŠêEƒÑìÚîé÷¼ÒïâÛª,.H0-Z
h6Ó©hšzÝÿ.¯j`h€’#!$ø +ÏÐÓºš5Š?Ä 8kÎ!Q†“dÆq–eJª‡Çáh2Ýéïï&ÃûÑØ}¾aP†¦(N}2³ª^!øX[,…Áï†|’¡˜f2SHôinÌ˦֫g£â¦±J´fgµ.ªvÏÀEå~›ƒ·óåãÓœßPÑѱ¯
rt21ÂRs‚!erz$ߤ°‹¥3ñä{‡%µ7û,!KÆq|‚¥Eò°ìZ8“f{,:¶ƒƒiúîñid‹XÕSc¦y½^æíQë°”"–2þcët±Ž[Ça)무Û0ÖñŒEÆm®/.¯./‡—7—yYî‹Hx‚˜¬M?”Ñay„쩌ÀnÆûRZƒÊÒ!<±^ÈhjpÇa‚u#ô†J²‰VïÉäyäÙ0Â4˜,L0Å]ûQˆ&ãÔ˜ÅZ®/~Œ(ÅÜ Ô+Už4»|«9=+Úƒ0JJ¤•{ùi—ù!nUæ—O•ùi†µ6 +z¸…1‰XFúÇ¥ùöËgOGÕ~I®ºýZû¸e’`ËýÆ«kœpÚÓµËs&Àç{üdhLdoXâd^ÓòÌ÷(Ù4ñÁJ_jˆ¨8Þ¥(šê¡èC<|«qý]BežÇ„Ø6A§Áñí–âê÷ñ½‡²¿=€Òû"ª/˜aÿˆQÄöÅKõÒKg[Ѳîy¤Ñ,³iíãpt£‰dFœôEÓ®ó֞ģ˜ëÎYTScÉ?òj“ûBŽh’ØxõI +QÝ}t'1sñßì& +K/îçöâÑw…#ºË3àÑòZÈ3¢q±Äæ=yÍT +wOgîîr{ugÍbZjtìG!H\ò—OË‹],ýß?í~ƒúqNý×l†™$‚ÙÝ%Õ„6x_t÷ÓÒ¡ìÿ§ìÕÅendstream endobj -2470 0 obj << +2492 0 obj << /Type /Page -/Contents 2471 0 R -/Resources 2469 0 R +/Contents 2493 0 R +/Resources 2491 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2468 0 R ->> endobj -2472 0 obj << -/D [2470 0 R /XYZ 85.0394 794.5015 null] +/Parent 2457 0 R >> endobj -2473 0 obj << -/D [2470 0 R /XYZ 85.0394 752.3759 null] +2494 0 obj << +/D [2492 0 R /XYZ 85.0394 794.5015 null] >> endobj -2474 0 obj << -/D [2470 0 R /XYZ 85.0394 596.2077 null] +2495 0 obj << +/D [2492 0 R /XYZ 85.0394 655.2256 null] >> endobj -2475 0 obj << -/D [2470 0 R /XYZ 85.0394 535.8202 null] +2496 0 obj << +/D [2492 0 R /XYZ 85.0394 487.8207 null] >> endobj -862 0 obj << -/D [2470 0 R /XYZ 85.0394 498.7066 null] +2497 0 obj << +/D [2492 0 R /XYZ 85.0394 419.4946 null] >> endobj -2476 0 obj << -/D [2470 0 R /XYZ 85.0394 462.9408 null] +866 0 obj << +/D [2492 0 R /XYZ 85.0394 376.8649 null] >> endobj -2477 0 obj << -/D [2470 0 R /XYZ 85.0394 431.7394 null] +2498 0 obj << +/D [2492 0 R /XYZ 85.0394 338.6766 null] >> endobj -2478 0 obj << -/D [2470 0 R /XYZ 85.0394 368.4301 null] +2499 0 obj << +/D [2492 0 R /XYZ 85.0394 305.0527 null] >> endobj -2479 0 obj << -/D [2470 0 R /XYZ 85.0394 251.2316 null] +2500 0 obj << +/D [2492 0 R /XYZ 85.0394 233.8048 null] >> endobj -2480 0 obj << -/D [2470 0 R /XYZ 85.0394 166.9338 null] +2501 0 obj << +/D [2492 0 R /XYZ 85.0394 108.6677 null] >> endobj -2469 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F55 1306 0 R /F41 1203 0 R /F40 1146 0 R /F53 1298 0 R >> +2491 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F55 1311 0 R /F41 1208 0 R /F39 1151 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2483 0 obj << -/Length 3473 +2504 0 obj << +/Length 3157 /Filter /FlateDecode >> stream -xÚ¥ZÝsÛ6÷_¡™{‘§'”ø ´Oiã¦i7W»×ëµ} EÚf#‘ªHÅqÿúÛÅ.ø!QRfΙ ÁÅX -ëb̳äå¶X¶õöyK¤RBÛ$ž
ç=®ãšO
'U©ÐIjÇò½ët2÷õ–D5ÃEØÛÔI›¦hÄ5[[¡ãD1Ûä@¸æ$6Ìò¡x>2”1BkPEâû=ŠÔªhH²šWÃb")§örodÐÐæ ¤8P@>eøO$Vš3ª0à:¡ -Ë«ÂÕYU(ª‡²*ô 2´Ùžãšm¤‘FÇr,ÜÏßeiç>Ü|¹}Þ´5‘³í%<ò'zÄñ{G?nŠêææ-±‘ô@–ôŽå9ÛÇ‚(ý n^oŠmÖ–uÅó–-=›ÝfSoÛæŸðªâ~²jÚ¬ZúÝ™-@™†\À"\+¿ˆ¦|¨Êêár¡#9*ÛGjm¶åǬ-è5Z÷~1õšÞ2z4ÅrÉìÜZåé -“7‚‡ýù’`Úž/ðÎ7Ôì4±ŽÆó½**T3<Mkç/oèI[´¤ÍQlJš†½ËÇr•Sóïº*jvê2mN‹$VéY˜t"UΞ„I-”vò<LÆ"Òx“ ™©2ó«OeÓ’ÀªN,Ù‚²®VÔºve¥PI´gXôñºþXäÇõEÆÂEîœÂ¸NhLàò*óf -7Á¹Çî¼5PJ®ãšnìAˆ4DL#ñÞ B¨Èñ&mê¦DQ¾¢uó›M±,ï™#£ˆK‡áEö$o›€_A»|$:¡4(à¢6jœµrÉüõ=‘ªº¥Fƒó¡:9(ÄdyÁxâÏפ -ë‹”ëÃô¥Ü¬XÚr]4Ç[+9}&\r8îÀå{5qÜNHw8[¯3Š Çц5 -Â÷Qp=‚¢Ú1?5t.=/µ¼| -$//!’æ5åî™ç§Gµ[ßÑJÿWø{÷îå^M•Š—ßÿîÝ
†>àÁ9úDãk´9WüA (‰£Y`+`ò‘ðK󕉿 -]?ß‚dßRÛÃ*p¼ó° -µàgµ6~XÄb©æ/ˆk¼KÈN›0ò‡-±¼%ÖoI·–÷Ãο¸öy‘µ)}0øäšÂÔUδ>ÉÁ7Ò0hŒ<ö„óÓS -ëog*C®ãšÓqyÍy<(j&,¦g¦LSŽÊšRDàþÇS¾ß–U(ðfÆ<Ö[ÞŒf·^gÛç#iÂÇ>#Á†‡¤‡Ýº¨Åg:’á(ã -;€ôþ¸ý[C¬özþ×âÜA|A\ÃÞ¶´$uàåâ]¡§ßíSAV6àFuÏÚî²Ie/*¤1]H‹Í¾ºÌ7¾˜âÞSõâBÊ¡ýıpxãú9—1Æž¹PwÎ~n&æìopAàý\|M"5òó>ZéàðC’×ð\ÃínBõ3k¹à±Q%cMë…Õ)U¶°™p4¬‘€5*‰BVÄŒx‚}e -6ÎõwÁqÄðJE-?SÑÇ‘¥Õf0É6{:6f$ã_Ï`4Ÿ@Œ¿W¹ã²³‹{oïây m¶%„¦åê™É`’þ†Â¿QúŸŽÂ;¥¼Ø"“‡Fþ1~¹¤—a›¯ê=¹æá_¸Å#æ»õ†¾HæÆöí0äMʤdr†ÀÄ`)¹ZàAÐ[Ðl,ü`·Éü°Ó[)4îxØNpàìïVWáj0ÈñÍ0Ã.PÃ#–Ál¯ä»†v^‡éð6xÂq¯³¡pºóeÌŠª)öJ£¸È~›cŠ;ßö -JRâpV>%étÔYŠŽmÈ-á[^¿å:zŠ¿ÛZòÏG ö†E=‡1Áµ¢ø`V!üýƒ£_IÀwGò ü6îÔïGu,ðGŸ§Í‚‘ÿß¿-íEk æ±öÈ¡J!ÞsÐf¡p§.
o05!ûÿ +xÚZ[wÛ6~÷¯Ð9û"ŸV(n$öÉMÜ4Mâd+·ÝnÛZ¤mžH¤*RqÝ_¿3€"$JÊž]û 0ƒ™o.˜pø“$e©•v’YÍ.’ÉbuÁ'0öêBxšY š
©¾½½øê;•M,³©L'·÷ƒ¹ãƈÉmñÛô[fØ%ÌÀ§/oæóë³ùëW7ÿ~s}9&ÙôêÇ뛗¯ÿu9“ r æ|úîêæ§«·Ô÷áÒÊéÕ«ëùå·?\\ßöŒ
™\!W^üöŸ°‡.8SÖ$“'xáLX+'«(–h¥BÏòb~ñÏ~ÂÁ¨ûtT‚3©R9"
)&B0›$2GbYª¤râxÿáöõû›Ã– ‘N2)X*„9²2͆Taá‘cT¸î,ß_2ÕÌZ=¹d YR–L¡™)/ùó¥bZnªûg:Ç|¹¤ÆCY—›¼+zm«‡:ï¶›Ka¦eËŽÉ&µdk²Ó²R—MOåd³À%¿ú.I”î”ál¹#Y,ó¶Ýg̦̩O3ˆF“Ñr°æq6_—‹êwÎeÙ’¨ºÇ’`LÔ Î\³¹ß#ú»©ËãâLAÉyrNœªâTNœ/T-c’+}zÉ@4²äPP™dÂh/ù¢Y󮺫–UʦR1]5Eù5`‰ÓW^Ýh §ÃÖÃ}
m•„ÓþX>·e7óZ¡„Z0£•ðt(ß:_•D± Ô" „x„K¿~U{>Š¢êªÆ½Á™5#lÉŒµÖOR´G˜R 3iÏüg3õôXÖH4™i®@ç,Ⱦ‡/G³¬êo»;ú’š÷͆ÛÖ«Û·ófY”~ìS¹ia;%¦"Ù[Á„«¢†m.f¸8.6²‹LƒÒ³D\¿EtYrF¿T'ô;P9ý.ÆàéøMT›rÑ5›ç}æ„”LÁaæ®§a/
™1•f&æïmÓ|ÜÑ¡Vip}Ù˜REs+ÃT^ŽÈF'Â=§‰3šh*™R +CªãªÐS9U¸>« +eýP‘GzÀ5ƒ`Üf§á-v–i†1÷Së¤NWØébó¼œq]¹s·Å=K¢ø'üýº¬çó·DFÜC· w2z $=»Ií´Y#Îz{‡±ª£g»]¯›M×"rÈd7IU·]^/JB!PfƒìAHÄ ¤¸˜>UÝ#µÖ›ê!:¼ æQëÞm¦YÑ[N€“mؤ'÷ U®bNªé/ˆndþ¤Zb|/ûáÍ‹ù?„ÀvE#•¥³ +"I+ÎÃdÂ2ž%L‚ffRO¯ÿªÚŽÌ +„“ÒX +Êï=EN`—ñ캜mr +Ø—¯!>+ÂQË„ñ4±ñYØþ.8(ìù£:¡R ‘%„Ú'ubHu\'z*§íÙ≛n†:{èRð™\f¯§á/RL<Ìp³}
†à>.4 +R®üIâXµòƒ.³Ò«¨äý?þ8ýŠš^;ï cå?ý”/«Â9‡ÄCR,ò:’*$œqƒ7T…BW—‹KT9ÿ¼k›åÖ±ÁxãG‰%„ïŸJêÁý0Šj¯j"~ªé\v´ÔrüI4’¢º„HÚïz\y@’mÁ£Þ®îk•ŸÿWø{÷îå^Míå÷ß¿{7ÇÐ< 8G—h|ƒ#¦’ÊBë„s$Q–@ä"= úk|†~ºÎ^PÛÁ*P¼s° +Šwàg•ÒnZÄb!§WDK ÉI#!‰ñ"1N$½<Œ—‡™~qãò"jS¹ aðÉ
= …iêÂ÷í’|#
ƒFìàq$œŸ¢˜ºêf4݆PœÛQcÛ¯ó:»H=i`2 +Pœ.ª,ƒX.K÷$r4ñ²‚Öªª·>Éôxl¶¾˜„8°-_.›§½BÔbÙ,|å£ýX>y°Åt©í+Uǃ]i þÌô™zÑê8ÂõTáÊq„Ë Êé‹Å8¾ÁÑÀù‰ÓÌõT#ÜÅÁ.ÀªÑ:f¯Ç7a½_Àá¶¾¹1wHØ"|‹èø†¯ß„凸†å_ëªÏ½%t\ù—k訂t´ÏPÒR²¬O$¼FjH !ÎP±F:HüàZ"{m^qDd¹@PùÏ<\õÈ„}™ÐòD‚¸½»)÷p—k<Í£' ¸XCǘÕcVùJ¨`—롺nèu*Ð7 +«™6É^EÞç}lÌ@RHš„üŒ
r¦„ÙÕjÛz¾ó +Ú7`‹X„ø0Û-ç5‰>tÚˆ+6ôN)ƨ’Át_¢bZ¥„4ÊŠÃÛ£²8z±Êa¹JU»Í’¿ÇÍ¢dŽjŽ€ˆD[y¦21¤:®9=•Ӝǃ¢fʸÍÎ,ˆF–ŒÊš‚qpÿñ’6U +¼þº}l6^ívµÊ7ÏGÒ8*„k±N…§‡íª¬ÅçÃ+8©- Þ®Øùÿº‚ÄÊ({&¤R8@åN§:WH +aã®F]´’±ÐøGl¯¾¥Ö#rÛÛìL™”Y½»¡!Cµ©8h÷³“çÅ2¤Ca ÷–{ÊÜOª÷LTlÙËvðÚ à¬¤öhÂC-̪:Ê0`tq²¡œæ ¹¸Ü¯¨^»Àù6à¸ïÉ_šÀA#lÖˆ~³xxÆßˆXš
"Œ»cÒ«½ÇŒý©jË#ŸÀnÚ +/Øñ˯ÜÐóί긤»{xk›¦þ’j×y]ŒFZdèò`ø +ø2_øÔÉ}jð¶Ùî<˜€°®w)ÂÊ ìß·{k‰À«½šþ¹…ø%ˆ/ˆk8Úõ“V¤~»xWèúïÊî©$+PG?$¢®’²Ò˜>¤Å殺/¹+æ»÷T}«}!åÐ~’„Y#ôg^ZksæBÝZó¹™xXswƒïçâ{hš™þ/~k‘1%Upø!ÉkýZÑï¶Bõ3ïŽýLO%[7¸¼ÿÝÜÿü¾Ý5ðnŽÕúd熞×3…Û ?ôdþÇ~‡¼ÿŸD endobj -2482 0 obj << +2503 0 obj << /Type /Page -/Contents 2483 0 R -/Resources 2481 0 R +/Contents 2504 0 R +/Resources 2502 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2468 0 R +/Parent 2507 0 R >> endobj -2484 0 obj << -/D [2482 0 R /XYZ 56.6929 794.5015 null] +2505 0 obj << +/D [2503 0 R /XYZ 56.6929 794.5015 null] >> endobj -2481 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F55 1306 0 R /F22 949 0 R /F41 1203 0 R >> +2506 0 obj << +/D [2503 0 R /XYZ 56.6929 752.0497 null] +>> endobj +2502 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F55 1311 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2487 0 obj << -/Length 3024 +2510 0 obj << +/Length 3243 /Filter /FlateDecode >> stream -xÚ¥]sÛ8î=¿ÂoëÌÔ*I}rßú‘vº{›öštîæ¶û [r¬«,y-9iúë @Z´eûönò A -b!ãÉb}%&0÷þJ2ÎÌ"͆X¯ï¯^¾Ó‰t¢’Éýr@+D–ÉÉ}ñûôÕ§O7·o?üóz¦b1}\Ïb!¦¿½ºýòêoûtÕôÕû›»ë™ÌR™R†h‰˜¾½½»»y3»ûðþö_oo®ÿ¸ÿåêæÞ16d^йúóê÷?Ĥ€3ür%‚Pgñä ~ˆ@j&ë«(ƒ8 -C©¯î®þîfÍÒ1aÄaÄ™JG¤¡Ô@RÀ8J&i¬ƒ$T¡‘FÕ]ÏB%¦›¼ëÊÇrš3¬j6»ž†}KSýª$@W=4åö:¦/ -»Ÿð…¿›mÛ,j‡¶J_¬xmOßuÛõõ³Ý™°GØ”çtE bpîI2ÑxÄ`¤Ù‹|¤‰…1kÈ-ÄñЛJ¼s!»…f±+uÀ˜TI)@?Ë™ÃaÍsß!ì(X»ó\P³›ˆ"66¢Ñ¤µóŽŒ¯ ð>àt4}ýL3E¹ÌwuÎ=ÛÐ0Õ=ZXñ¶]ŸoÉ[Ò²å}Ëõ‹£¢ìË"¥à$qæ[Ü›O_NkV‰@ƒ¯¿ ÙÖÍZ,£ÙÛ1ÍbìNY±]›ÏÀgTy=ƒcÁNxTBi†p–I‡5ÂåPÉJÄA%‰Ï&ƯY$ÒéÝÇW8H¦Ä¦qÌ<Ô:Âz»ÚÄì‚&€JAåiéNÛuÕ¼.‡:ú‘ï£Ì8gbމï¿*}+Ë
~ÇB)¤'ZØ;óUĂ͆òÅÈ.‘‚ÙØ‹T1:™Ètb‹Mæ´‡nÿ˜ªÔA§á€ê®©¾£o9Et!2ÍŽÌTŠP£t§YdçFï¹Åš
ÑŽ
Õ¦ikL°Þö %ÅÉ…í-ÖÈöž›‰Ò@¨Dûû¿eÇÝ´ÎQÕòÐQó4›ÍÓ,!ó„LñŒà"P›kº ¸ÚÁY¬“6ãñ€!‡Éi„Ov©2™F>† Õ_˜ï:—˜}~÷†RgŠÃæ¶êWkÈÝáBò%t]î - TçYsX#¼ùIH¨0Œ}æî ˜DÁˆÑ0còa1ý°<ðûÊ©xq¨—ìYMôÇÔqiÍãŠuìn}˜hÚ<ÖѰ|Ò_œ±”2!ÖýY,£¿—2
¨8 Ü>‘eÈ’DX{–?‹4Ÿ§ÃLâ= -}ÃT¸"L%%Ž©-¶a@LÒØ*á®ô9Ÿœw… ·Æ¦8æ´#ù}ڱߵ£¥gÒŽÓnH!ŽÒŽÊÁá[iЛÏ:ØvFó„X©Þ/âÛüéÔi e¦N¥Î¾d¨Deìk€uƾ,–±¯Íá–: -¢(º°¥EÙrx:ƒHÅ[~éPwP3lºrW´3jX òý¼ÏiòiU6C; ëÐ[@m"…`‚¦œÐ\V -Ïr×vì+y_¦N]ºDžÞfÑš¯ÉËid…“ýa‹Ž®À>aȇKwVLk§
Î]øþcê°ÙÛN÷ÚtneWZÔØ…SYá6½àû‡X§/œÃ2n;’[h,ÞbŽGäÛ -ÐÒQít”Tç™sX#Üy™¾Vûìù=*a3á;2œ0醰oð6ðÁ0>,½•€¹1]gãÝ‘Ð3ĉ5MÝǤ›8MíÝö±*xy>òÆq µ²ÙôKÖKjWÁÕ -Ò(ËFãÅH—Ò
ˆ.+§žpùç®zÌkS†RO|µ(Íã‰íÚ¨ÉLh‰'<À’öâávsGp¸ló–,½à|Á ÆšöM6fÇ(A¾˜ÅþÝò?„è"äA¤Ïȼ‹Àg±Ê·ù‚žF -#Ñ\¨/ö™n&ZHŠÁ•¾NŸ0è~òŽó’jÌûP[TîórªrL¦èÍ4ñáfP1µÍn^WÝÊØGÊ)à3¶Æ¡˜`°˜k“É›Ì? t˜Äÿ:0¼§«R —/gþK(œS€Es -Hè'k\(›aÚ8h“u¶_ê¼…9r(,^o毪ã”o9-Bð³ mù¿Kp@àŒ +xÚ¥ÙrÛHîÝ_¡·¥«FLŸ<ö-wef×ÉÆNíÖÎÌ-R6'©©8š¯_ æ!‘r¥¶üàÝ@h\M¹ð'‰
…NÍ"NMh…´‹ÕöJ,`îý•dœ¥GZ±^Ý]½x§ãE¦‘ŠwëÁ^I(’D.îò_ƒ—Ÿ>½½yóá?×KeEð*¼^Z!‚¾¼ùòòûtªàåû··×K™Ä2¤Ñ"¼¹¹½}ûzyûáýÍ?Þ¼½þýîç«·wcCæ¥ÐÈÕŸW¿þ.9œáç+ê4±‹'ø!B™¦j±½2V‡Öhí!›«Û«ufÝÒ)aX„6Qñ„4”HC +›hÛ4Œ´ÒNÙþZ&A×qð-Û”9£`]ï ¦òìØüC#‚§²}$`F8«ãjS¤¬ÚbûÐD½&hZà. J-¢àî±`ÚÒQÃ!(yYViYñ½lÚ²z ðçÏ š e+Zž7ôg倄–R†©µÊ7?¤ã¶¦ÿÅ÷]Ù‰ +ãH(–ÅoJ™¶øÞâÆ@àR+=²°"/ÖÙaÓÂP2©*Ÿ Ip=ڨ쳧9"q(eâ9r³X…ÒDrlÈw%Úgjƒz×–uEcÛíËm¶/7GÃ¥¬ò"§_ÎôÓˆ¬~?C—ù±Ê¶åŠ~4åCå1PL£©y»GÔxÇü°ÝÑŠˆT6º‰’Eˆ +ÄûÓ¥3äNàgUWKTýò¶ãU]µYY‘'€‡]žµŽ!œt÷÷¼mÇ8`æ|ËW-EJ8/”’ "2HÎgÁŠ–$Œ/açµ'WÕ픇Ùf_ùöo«G5EÕ0D<d/f +²ZÑfÛîÉÆ] +Ðú[±ïé…bÀ
%”)ÜžleÒîÓ//>eЪ\lhËÿ›ÚãAXi|l &Ú†~»ô7kë}ÃûT9/‡”¶Ø3Öý‘'R +¸–:ÍW=û*VŽ}ôZqì;ò±îûÅ€°ÍŽ4p®&¡jZÀð7ô“Nƒ¾ 5 +XÌÐc9;ü4k‡—Hö†xFrÒ‡$ß”MvïCÁ®nÚ¾SÅmHÐSí©¶hZJ˜Ñ÷¦È¦ ï‡UÚa§û!÷£QQ5ƒ',änLQ=Œ8T§Ø×z¨]G¸%owh˜þ Mƒ?KÞÓï¸)2O—Js˜«êjÊ$¸%\¥f·„»³Áð©þQ ¿ÜþBÀ¯øˆKÝjÐQ÷*HÜ\W~SÀôû*¿ƒ„Ž
úé]9hbG–;s‘œ'3jÜKzaЍ!:ѹêS…lØìΊ©ÁiÝÒiƒ³¾ÿ˜4ìzÛi¾–»î!¹ð¯@½EM]8iL¨°×qñÂ
±æ/\‡å.Üþ¹aòm9hé¬^Ä[$Õeæ:¬ îF9~Ö ”³7îK Ÿˆ±#à —hßî߈0ŒëÑJÀܹN³óî¸ÑâÄ–¦è)G.ÑÄijéÖßÊœ—gO +È{òÞ5ÖªèBsîŽ Ò§qo!ðoõ˜í³=‡ endobj -2486 0 obj << +2509 0 obj << /Type /Page -/Contents 2487 0 R -/Resources 2485 0 R +/Contents 2510 0 R +/Resources 2508 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2468 0 R +/Parent 2507 0 R >> endobj -2488 0 obj << -/D [2486 0 R /XYZ 85.0394 794.5015 null] +2511 0 obj << +/D [2509 0 R /XYZ 85.0394 794.5015 null] >> endobj -2485 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F21 926 0 R /F55 1306 0 R >> +2508 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F55 1311 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2491 0 obj << -/Length 3164 +2514 0 obj << +/Length 2925 /Filter /FlateDecode >> stream -xÚZÝsã6Ï_á·:Ó˜å‡HIsOémº··mv¯I§½kû ØŠ£‹-ù"9Ùô¯?€ %êÃÊÜÇìÌš"AAà0bÁáŸXhÃL*ÓEœFLs¡ëý_laìý™p4+O´ -©¾½=ûæ;/R–i·÷ÁZ ãI"·›_—ß²„à -|ùîúææêÏ«›ï¯ÿñéúê|%’XÄËËÏŸ¯®ß}øå|%5r æ|ùÃåõO—ßSßçóT./ß_Ýœÿ~û׳«ÛV°PxÁJõ¯³_ç‹
ìá¯gœ©4Ñ‹øàL¤©\ìÏ"˜Ž”ò=»³›³¿µ£vê”2`˜‘€V$K”N¦ˆ"–&V™\ L§©mF‚£ãV›RÚLÓ ‡Íy*Ôæ‡{P[š.›‡tzzÌ_¿ª©ïé\$Ëü¹ZgMQ•4¼ÉšœFGUç
eåÆ8Z»&v²º¹€>…ûŽw»¢~È7n -P–ss°Ã‹úˆ³àP°TЉ,ÕZÚÍZæh -—·$‚ZVrãJÉ¥ïƒÛA“RaàÅ:[›S”[×
n¤:6d‚Qh«’G,6©r6¸º!šžíxÉ…_¿\ç´z{ðÐ=>x: pg Cs€îVoö|%¸XFQÿ€É$ÞÍ'bxävÐÆ¯Ï,kˆjÕàßWË#ªi(ÛK¬+úè©ÓRÝÓ€u´ìÎz¥“å@½«üKQ7Võ8앃í‘r¬MÿÜÃ:wç¼Ù!ÿâ_áœâËC±~ &î‘ZöBvî±e÷õZ£Å†5Zç1_ŠÝŽZwnÂ+ÞgçÂíOúOfL˜4žw !ÕiÚRYÛl†,bJÆé<KO4Á24r“0ÅáôX~~/åôÑ@`…s];e®]í6´–§5¢9“Qò†B:¢}8"«ŽãH†ñ4žççiÆüBeÄcJŸßOJ›å5 -p -vZe~€ùo¨, šQ™§²*û2òf`^`ó,=ÑËžs‡f¬DŸå§Òº¡]–¡„‡¢ÐÕbhÿø#%E0îî–°P4pmؾ"/ÚQöÝÕ¾h:.Ys$ã¬i½ -¿ƒEaEÂ…`>°™Aõלb˜óÖžØeOýð;_âTCZ eÿÃîî±~¬¬Špúk^ÿi -JHZÔn¬x´êÐʘ³Ñp$Â{Òfb}Åá|•÷ö+Nš&dS÷2ošÕŒiz*kšœ4Í9–iŽXNšfÈòCD ¼ùˆœ«lë‡ô)õ†ÁüoлcªR:Ú‹…±e£™¹B\—c¬3Hðê–çŠØm £GÖÃU”¿90–ívSv*‚̬E¢ˆbSM™€LÌòŸÇÚµÂ7l6tÿ¿‹4´xñ¿ÅãU·ÖØî$àAcDêLêhQÍ -büú-ž¦–Õ¤±sÎâ8’}cOLgì(Ò”±cNË"eDÿúþ¬^é„%Š¿aõ!Õi«o©¬Õ«© -HRÛël7‚ä)D9Oóry¢ ¹z5ÃTÙjO®÷y™?“¥…PðëáOÜaQèuÞZäס±-žs7ú¡y¹®6ÖÆ¡7…Ð3–—4¼Éj· -ŸÓŠ -’UpÖCµv# îã¿=S»èÚïÁÂ@àçj,(uå‘7Íù .Ê
Vûrïß}FRúÚÊÑ>ø¯«·uØiKúmñ@‹œŠ[Ðu# :RÔ&P͘¤§²&ù—)“ÄRì´Z4Vöª¬‡Â ¸S:Öɼt-Õ„x=O 4Ó:}ù~>©Ä¬œÖáE{^Ùþ¨ömí2P¿)† -r˜” ‚CÓq?F¶1^:ï}•¼(¤Û”µƒ]¾õ&âÓFHÄa›º×N9…¥BÃÞ—bmµ!¬Ã´—åìb¢^(d¢ÛV——Sx+™ô\es|*k/GN¾öy }u|L_i€ö
w#5!BPÍH÷tp½înŽutTBŽ4³A
ùX÷<ßX‘bÒÄPf¸}ˆõ‘öÛ‘p[K« 5÷
£ -ß°h‚}™sà=5Rùî´šIHRÞpÕŒðTaQ}—`‚Û8gí‰&X÷`AÌL”Ê>ëÖ':þ®6WbYa˺<e©jsRu"ÑêE4¯ºê´êZ*”ß½lô Sœ¿ÁÓMðì¹Ð„ÉDxÚ÷k†Æ´†M‚ùتªãnCm«!øu Á8 mŒ¤3¾CÃð -ìd« -o{ñì£ÅàMè‘ÊáC@kÙºbŸ
…Ûbû&vÑNé&{ -mÓ?ú0ìϤo}1¾ëj¯Õvê `ƽs8ñw^àb¢éLŽ·>éþ°î¯Ý¢\Er¢X!c
nL/ -/¢d$8€0³±ìÿ>3¢ÿendstream +xÚZÝsã¶÷_¡·Ð3?Ú''q®—Kík¬›k›ä–h‹=‰tEÊ>ç¯ï.vA")·¹ŽgLp±Ø]ì.?€’3rfâ0ÎT6K²(4BšÙr{&fÐ÷öL2ÏÜ1Í}®ogo~ÐÉ,³XųŽ'+
EšÊÙbõKðm˜†ç Aß_ßÞ^}7¿}÷öúŸ7×Wçs™&2 .?|¸ºþþÝßÏçÊ`f!‚¿^^¼ü‰hÎ3\¾½º=ÿmñãÙÕ¢3Ì7^ +Výûì—ßÄlsøñL„:KÍì^D(³LͶg‘Ñ¡‰´v”ÍÙíÙß:^¯:ê)B¥c5â
¥<o¤24Yff‰ÉÂX+m½ñi]T0)9>tð¹x¡÷²¡ç}½¯VØÎ‚²mˆ«-·eõ@Û¢ÍWyËãݰâK,ÅŠÞÚšzWE[ìNäuýÌÊZêoÖõ~Ãcî˜ißN¾\Ö»s™«9ºæ?—2ÌŒQv2dȪÃçº Æ}½ÙÔÏ]ÿî<
ö›¢Øj)‚«|¹¦Žf¿\MS>=F––.j>îÊzW¶/ôV?»#…–{«¢ùÓq¦$)2U³DÆáD`#èùÑ »`Î=#!C“ЬӂNzwf%2¨jzv¡„¶Jx[ç
5î +›$Ðj +T‚Ýñp;ch`âH)U÷é¶Q²´ÇýݦlÖ65\ ú½®¸•W̃)À\luS>T6pf:6ýD耲Â)ßÇIj$Üù¾„)ï§=ûýLÿ|ã² +=³ÌÛ²®ˆ +’ªâ™( +q]²Çr¦/ëí£Ý`«iˆ8Œ²W¶é„?˜Éºc?pGŠ,9ÏñõùÎH$î*}} Ej×·Wß½Áß“`¹Î-V€.®@Ðâåp(DÀ˜S/•§²Þ7›¢!Ÿ-ÀF°l«,øtn`¯h×ÄÔR9„•C,F©&±4Œ ‡q¿zt +Ra"µpÔZæ5ìf+³yF<YO£èìÆhÄA’a.cêâ-,'ÔéQ}õÙ%ƪFªð˪EVÓÓÉ…&+ƒÖ +êøùž‹¦2’ó]¾Å#¼§1‘ì|Œ[I%7£v3í +~NjØ9²à+m«ªiŠ¥¶ÃqR%0H=â§Šƒ*ȸ3ÈÖ~ª0“i4Q½òŠË2ŠaQù…ÏeÞäºÔŒ‹dtzaú\Ó+³ã²KóiïÉPGIÄÓßOÅ +8„ô,»-ÚæU¯Š»ýÃCçPkØ´ËDª(Ó¯¸Ìã:á2Çe]öePÍ ½
N«tL#*{Åš‰–}•7•-=ÒðYCKEÔahÿü3 Ÿ×–´PÔ+mH€ZQ¼4íèäz[¶-y»§älHž‡%áß#¡ ‘p!¤Læè4…×#„{wYå¶Üä»á•ípgÎJõ×0<pvŸ›Ïµu)š?AC•|T†ÀŠC«ŒV†šc!‘®zTPV#ò5^zhW3B{ƒ3‘š +¶68⼂;|®éÔì¸ljþ>•š'Uv©9T9–š=•ï: Jàøýí{lDp¡ó>0Ò§8tÀ¿ûÀ +zó¹NDÆqÙÈ\¶ÈpÔ§U:¦•½ƒƒ +¡êÆ}•ììL÷m¯¯‰îœ
$wJ endobj -2490 0 obj << +2513 0 obj << /Type /Page -/Contents 2491 0 R -/Resources 2489 0 R +/Contents 2514 0 R +/Resources 2512 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2468 0 R +/Parent 2507 0 R >> endobj -2492 0 obj << -/D [2490 0 R /XYZ 56.6929 794.5015 null] ->> endobj -2493 0 obj << -/D [2490 0 R /XYZ 56.6929 119.0275 null] +2515 0 obj << +/D [2513 0 R /XYZ 56.6929 794.5015 null] >> endobj -2489 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F21 926 0 R /F55 1306 0 R /F41 1203 0 R /F53 1298 0 R /F48 1223 0 R >> +2512 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F55 1311 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2496 0 obj << -/Length 1867 +2518 0 obj << +/Length 1899 /Filter /FlateDecode >> stream -xÚ¥X[SÛF~÷¯ðKgì)^ö.mß!)M4¸3Ió ä5V#KÔ’î¯ïÙ›ÌBét˜Á»«£s?ß9+2ÅðG¦©@˜)>MG1Í·<½…gï'ÄÓ,ÑbHõf99~Ç’©BJR9]®¼R„Ó”L—«/³“««³‹·ç¿ÏTàÙ4_ŒgŸN.~;ùèήæŠÎNÞŸ]Ï$‘Œ‘2dÏ.N>½]œþ|vúáôòâÝüëò—ÉÙ²Wl¨<ÁÌhõ×äËW<]
¿L0b*Óï°Áˆ(E§Û ÎX8)'ד_{†ƒ§öÕ˜3K‘Hiñ'1o…$£Ìzã‡ùB‚ù«ªit¾hŠÛêïºÒîpqëk÷«²í]©Q^oý[7èÉÙ„qãÐmARBP+èÀýˆ1û‘$”'1Ò1[d”Ò«1!ñÊÃáñ;JV’QL¤%9¯\LÛ62Ënêû9™ù—sä
Ý¥"$åÀÐêtà §‚“QpôùnNÒ™ÎZÝŒ -Ó“ „‘qœökí~«\¯‡Â»3s?.W,ëLÝêª=¤{j'ˆJ¦^ã*ÛêØX#ÖIЍ”“:[Sœ’1 ¥1Šw0¼ÙPo
Ÿœ¹wîÉ}QwM¹w¼¯í:XHgß‹vãÎVzueëd;0 ջƺžƒ>·îvÅ=8Å‘}Óû ØItÇYÓtÛÃäv!hkçÂ=viŸHy·óáñN_nŸ·õn?'(âþƒñ -nöþ´;¸’³óµ{¹ª‡ïz"Ï¢¹ÓyaèÕQ$9eHŠ>]u›;?ôOFmé?.aóC¡‡—›½ïÛnžðsMxsÔ¥/êVÿ–²tèÉ”µ‘tI œ9ù÷d!ƒjž±™6Ìo£Í€Ój·³¡÷±Ã[ýÐÚPšlîò#ÊšØÐ—&(á½N»j•#hªµ†œKB¦›‹pƒ¥b榨VÈXnÁíõ}ÓêÚ`F]S˜.ÊD"išâ(Û³®·P@9¤¥I:š¢hv7ûH -7.^-f‰ûéÔ0]gEŠ$A\a™b>Kg]ud6 -Æm]¹ãbQHê(J^ï; -Kçè¿gã
™ë¦Yw%Š•Ž‡Ù”Ê3o€Îæísgµÿõ1ûˆ˜sýpWyÑ–nH?ò`‹Ámæþ7™Mý¼µ›Ãkè_ç‰KÛæ®Ÿ|•ðÍ@á2/OC*;1ÐØÄÐS¹‹Í¡HÅ7Õþ¢È@IÇqn&‘È«]®=ý…¨k²Û0˜uÛm¶óøj›”Yè‡Â¡lÌ;p§‰$/;g@ô¼o‘uMŒÄÐ" +xÚ¥X[—Ó6~ϯȧÎ]më1ìX.Ë–¤ç´xð:ήKb§±³~}g,ɱAK{òYÍM3ßŒÄÆ~lœ(B…–ãXK¢(Sãl3¢ã;X{1b–&tDaŸêÙbôô¹ˆÇšèˆGãŪÇ+!4IØx±üLonf×—W¿OB®hðŒLBEiðvzýÛô™»™hL_Ìæ“Å‘@¤‘,¢Áõôíì2¼x9»x}ñîúùäÓâÕh¶èë+Ϩ@þ}øDÇK°áÕˆ¡5þ”0ùx3’J%…p3ëÑ|ôkǰ·Únõ9Cª„(.£qÄ’j¿Ç(¡ +<Æ’ªùÑcœù<æ¨ÐcŸó題2ÉxÜçv&ÓydòžLF#ñD…ηyV¬p"Q|¹/²{3ej3ªï«ýziÆ·¹ùß×¹i*KUÜ•væÞ}«ÊÎS¨$¸Z™©²:åžî&, 쎕ùH)Ï—O`&¦È¬eÙZu‹õºÓ<7D°ÁÑJñÖÀükº)ÊV]AƒUµƒ×Áåõüõì3iTȪöY‚´1‹F.¬\\Úæ_Ñ0*a0Tµ¥;Zó«j_ZÑ© +²j³1N„5”_›!ÚÝ2•I?Ü!K9M$pwa°]ç˜x4ˆ"’HYZa\ÑÜáSêr>5L×vp——ùŽii(oOzÚDà’Dk+aYÖuž…À6{ô A¢©‡±ü‘*úºg yL©xÌb.cXbž< +žåYºÇÜ3TGN1«L8÷hÀ8‰-IµmŠªDŽ<(jó_VÜæí¡4-!m4â2zó»Çä=Ž6ûºÛnù–!&(èÀéI>oÒºÉ15
*Ö¹+jà o©â$Vw~¿%?„D(éÈS¥`”h7 +*ʇ*K?ð{]UŸífǹ +ŒC½H˜ó厾ñˆ )´N4š†).¨MqíR\³“×ßIqÜZWnkÚX¿jD…ÊåÜ$ö9"¢¤åŠÍ¶Ú5*´ÄàP%vt<“aôʼn¹Š\üÝù‚$*ŠçpîÙA!U GS 8CénÉMÂ,·I†Ha2'A˜ù¯Ì?Ì®aˆ´s™C6±ø\ôáõ-A¥À{žü +ë>‹ö¢+}—ëŽÊë!LÓáý'7zèFv#Û¦)ÑãΩ&œ©®†;‹MžÞSBÿÚ¤åº*Ö9*ãdl;iß>ùC6$‘T
½|9›_¼¿ºY\½»öÔù“Àõ„Ùyß«så«¥ÄF]0ÛÇØUb¥Ý7fÖÜt9ÜÒš"«-iµ2©GOèî Ã7•^ÙôµÆ’ð¤ëBN#™·Œ-Þ -Œ6¬mÔÌÄ$øï§òØ +&Ð «MüÌMͪvÉ<ÒuÕÞˆ˜«°H•â§lko>Š2[ï—NÜÍlƒ×µï¸NŽ{-‘e1x59B ×Huû4o²§ÆÝÊ àýDïâú1ÛZˆ¹=ØÒmZ +ò½×;@9|ród:íà¿ìß0%´VIÂýc‚ZÍœRhSâTu%¼oÄÝÿ$_Éendstream endobj -2495 0 obj << +2517 0 obj << /Type /Page -/Contents 2496 0 R -/Resources 2494 0 R +/Contents 2518 0 R +/Resources 2516 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2468 0 R +/Parent 2507 0 R >> endobj -2497 0 obj << -/D [2495 0 R /XYZ 85.0394 794.5015 null] +2519 0 obj << +/D [2517 0 R /XYZ 85.0394 794.5015 null] >> endobj -2498 0 obj << -/D [2495 0 R /XYZ 85.0394 566.0263 null] +2520 0 obj << +/D [2517 0 R /XYZ 85.0394 672.6222 null] >> endobj -2499 0 obj << -/D [2495 0 R /XYZ 85.0394 504.6801 null] +2521 0 obj << +/D [2517 0 R /XYZ 85.0394 403.8925 null] >> endobj -866 0 obj << -/D [2495 0 R /XYZ 85.0394 466.9002 null] +2522 0 obj << +/D [2517 0 R /XYZ 85.0394 340.9183 null] >> endobj -2500 0 obj << -/D [2495 0 R /XYZ 85.0394 434.3997 null] +870 0 obj << +/D [2517 0 R /XYZ 85.0394 302.0073 null] >> endobj -2501 0 obj << -/D [2495 0 R /XYZ 85.0394 399.3478 null] +2523 0 obj << +/D [2517 0 R /XYZ 85.0394 269.01 null] >> endobj -2502 0 obj << -/D [2495 0 R /XYZ 85.0394 335.0797 null] +2524 0 obj << +/D [2517 0 R /XYZ 85.0394 233.4614 null] >> endobj -2503 0 obj << -/D [2495 0 R /XYZ 85.0394 276.6983 null] +2525 0 obj << +/D [2517 0 R /XYZ 85.0394 167.5653 null] >> endobj -2504 0 obj << -/D [2495 0 R /XYZ 85.0394 137.3746 null] +2526 0 obj << +/D [2517 0 R /XYZ 85.0394 107.556 null] >> endobj -2494 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R /F40 1146 0 R /F53 1298 0 R /F55 1306 0 R >> +2516 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F48 1228 0 R /F41 1208 0 R /F39 1151 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2507 0 obj << -/Length 1795 +2529 0 obj << +/Length 2010 /Filter /FlateDecode >> stream -xÚÕYÝsÚ8ç¯àfŠªOKz¤ mÓkH.!×›Kûà‚I܂ڦiú×ßÚ’m$)ws7Iey½»úíj¿ ]ÿHWxÈÓTw¥æH`"ºÓewoàÝ›±4ƒ’hP§z5é¼|ÍdW#íQ¯;™×x)„•"ÝÉìº÷ -ŒúÀ÷ÆÃÓÑñàèíèè·¿ÎÆ£þ€HBIox~>ŸüÙPˆ1îÇWÃ÷fOioøftÙÿ4y×M*ÍêÚÌrµ¾u®?áîñ®ƒÓJtïá#¢5í.;\0$8cå΢sÙù½bX{[|êBƒ…åàÄ“nÌ’„ -ƒUŸÎ¡<PH Œ%ò˜`åÅhru16^óGŸPݾ¿2åLËà¸; E ÈzV"5nœÓ¦e"]çQ³J3?[¥ÍPDšþ¸ ÞÊÔØ²7HîÃ4p£SªÛ€çr42ß_ž9Îèå#<*øC^Ø„´FÊÜíêµñ \wmð ÆHiÇW'ãcÃD[5fË0‚»
þÛ¸|Ì-ÑÔâpêG+
›êˆGw½nÂàAhÕbx5y{v±“FX‹^>@þXZ[ÅQ'Y¸Z®ÅrĸG-PPÚ–Å9”áoàW\ fIOxõØF‡n:çÙöØœOÓ:ñò.\S{P*×ñ¸^Ø -Ô_„³0{°EIδ -ä¥eà^@¡šUûY/\ˆã–Ï=Dñ]¦íÊ 0+Hª´ðøÔB žŠ<ñîíuE|å®Ð^Q9Ðë<0Íõ`ö©\ÝV«/Õê[µú^¦P²½À/¡º)†éÂOSW]¡! BÒ5Tǹƒ#x‡òDY`æÕŸ¹bpƒ¬âøúp‹PΉDœåY=”_BH¾Œg®JÛ±¶Þ_÷êý4~Ë_ãÇÛüN¬_t`ýâýv×õM‹'‡î‡VfÅ3qð„ûŽ‘G0-‚<CÙt¯²iö°.ll/¿Y˜@ÂŽ“W3É‘Gi3½ÿ'˜W«ödÁžˆ¹÷#¬Ú÷>Ÿ¦HÍeÖ=Êî‰R° ¿îë,¶‡ûŠªîëi±ðŸæEÞ*ñ˜0¯Ú6::°wþ;YcÀ”D‚C³Òp§²èþë‰":°~Éõ;\ì5q:Z®i¦wmžðÿAù3 v¦ä&†;R²`Hêj"YÅ]Ó^C»Ád+47yµ#Ê‘ÆÐ<5ªõãÑåÑÅÉùäälü¤¦¹leÚM3GœÊªÎ)‹ö‰•“ÞK¢Ìÿa6mË{!ô]7‰mH˜mŸ™™)ñª‡a¶‡Éç”ôN2³ygæƒ‚Ì ¶ÖzðžŸ:ÎɘB„R^Ÿø9N ‘æ¿´¢á,.&‹Š÷îÍhVëј2ÇPæ :'´7¹
Sóné
\*)òô§6ÿÛ¡—T—^µJƒùjaäÎ‹Žµ>$[Ta=©†‡ÏANo§ùGvè40~G=¸ëœÈæ]_%ë6ñ6(GÚQ7fƒv´•ÏJ‚z˾䎑©Íçp§óß‹•®Üú—–Zÿå/˧ÿΑcÀÇ^©T~d"ðæ€#Ê<êÐýo}ã·"endstream +xÚµYÛrÛ6}×WèQš‰\yé›ã¨ÛÄvc¥í4ÍMBŠtI*Žûõ] +)£‹ÍØžç!úÇíY™}{t&?Ú».Ó¼ÖëÁ®Šḭ̂Úm·Qù¨'Š?šüšÖè .´S_œ +›´B“ƒpªƒ`C“¿mdÞAŸæwƒÀ(œíV£w Ûù(ðS±+s[6÷Ӻ妪®ƒ sŸÈí¾Ô0”Z™ö[Å{l:Ψü¸i+ä0MGÐóü¡íUƒó›tS£@ç3<Ñ Áƒ½}]½mÁæè +6¦ÿendstream endobj -2506 0 obj << +2528 0 obj << /Type /Page -/Contents 2507 0 R -/Resources 2505 0 R +/Contents 2529 0 R +/Resources 2527 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2516 0 R +/Parent 2507 0 R >> endobj -2508 0 obj << -/D [2506 0 R /XYZ 56.6929 794.5015 null] +2530 0 obj << +/D [2528 0 R /XYZ 56.6929 794.5015 null] >> endobj -2509 0 obj << -/D [2506 0 R /XYZ 56.6929 561.2059 null] +2531 0 obj << +/D [2528 0 R /XYZ 56.6929 681.0754 null] >> endobj -2510 0 obj << -/D [2506 0 R /XYZ 56.6929 497.5205 null] +2532 0 obj << +/D [2528 0 R /XYZ 56.6929 404.8182 null] >> endobj -2511 0 obj << -/D [2506 0 R /XYZ 56.6929 433.8351 null] +2533 0 obj << +/D [2528 0 R /XYZ 56.6929 344.3155 null] >> endobj -870 0 obj << -/D [2506 0 R /XYZ 56.6929 394.43 null] +2534 0 obj << +/D [2528 0 R /XYZ 56.6929 283.8129 null] >> endobj -2512 0 obj << -/D [2506 0 R /XYZ 56.6929 361.2156 null] +874 0 obj << +/D [2528 0 R /XYZ 56.6929 246.6193 null] >> endobj -2513 0 obj << -/D [2506 0 R /XYZ 56.6929 325.45 null] +2535 0 obj << +/D [2528 0 R /XYZ 56.6929 214.3762 null] >> endobj -2514 0 obj << -/D [2506 0 R /XYZ 56.6929 258.8428 null] +2536 0 obj << +/D [2528 0 R /XYZ 56.6929 179.5818 null] >> endobj -2515 0 obj << -/D [2506 0 R /XYZ 56.6929 107.7037 null] +2537 0 obj << +/D [2528 0 R /XYZ 56.6929 116.1573 null] >> endobj -2505 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F40 1146 0 R /F53 1298 0 R >> +2527 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R /F55 1311 0 R /F39 1151 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2519 0 obj << -/Length 2756 +2540 0 obj << +/Length 2741 /Filter /FlateDecode >> stream -xÚÍZ[wÛ¸~÷¯Ð#}NˆÅà£7ël³moã¶9Ýî-Q6w)Ñ©xÝ_ß\(R¼H>éÃÆçD 03ßfd -la¡"•‹$•DQ¦ËÍ]<ÀØÌÓÄ(îR}wñÝ;‘,R’j®wëÎ\†PcØânõKtu{{}óÃûÏ—1W4úž\ÆŠÒèÃÕÍ?®þæún/S]ýxýé2f ãˆE:M£›«×?Äoÿrýö¯ÿþxs}ùëÝO×w-g]îÈÖ—‹_~¥‹lâ§JDjÔâ(aiÊ›©QRˆÐS^|ºø¹°3j_“††(Óqp6&•-¸°âØf›|/«ÍSQæÿ¶9n ^äSE8Ó¸¾QÔ &C£ºØe¶Ã5•¯» ’Äp™ú÷üJùò÷‰u#)åÊÓ¿Á™Mt¿oÜzEã–ÊÊçìÅó°Úož|³yÌݸÜv-«m“o›@Pù÷=ûOù2F&1°°j3h(ÅÝ>ÿC)ÏW—± *Âv™c[GÅÖõeî'êÑ®«Ý&k -$§¥ ‚%rÜ/{¢¸K5íˆZ*\7^/ ÎLJybÉ@4²dÏ…¥DîúK^o³ûÒkh•ßïŠí™Ü9ÈNƒï<±óÕÌΕÝùãäÎç–<ì|°äèλKÞîŠms@ mìëì!Àu¿Ùd»çÇlþGÑLJGaCH1/.Õ´tZ*+/SÒ™]²•ÎpÉ1éô–üy_ä^:›jåe„àZËv¨Úzß>-iàü†#z^:ªé*+¯ébR}bÉ@4²dO:†˜$9Zr;_ó]Ýúœj=çÛ ,ÍP}~T am¢§Ý%3Qõ°Ë6¯‚'Ó$QŒP@‡jFÊ*à·ÐΤœ_2,ÙS€&Z©¤¿¤;íÇ-¸¬#eø -U‚DMÕ¼P»TÓBm©¬P—Jõ€C P‘òÌêú˜1ÆaeÌ<g-Õk]á3ˆB˜¤¬ÏÛ'<Ê×/Gbtìàßêƒ`dB£÷~l[5ƒÀà×çòý
þïuQ‡¨¼r¾šVd -R''ާ.ÕŒ2•UF1¢Œ”€¯ë$UÁ çJ”œç«¥a¬§ -.`¡ô8»Íwkƒh¥ˆžªº‰Ñ Ü£O¥„P«ÉvEó⬫©1¤4it[Õuac -$‡J—•ïqÚcQ®Nà[‘D&ìUøf³øvÿ?CÛ›ö1©êj“Ô§$IRÞW[ä˾p
Ÿ8=bþ7ÇÓ-»ùöH¦–|÷5ðHC+눾}e“TÒä•A‘$ÜHy*Ê`F²×‡/\·Ñ直}IˆÈ¿ˆ<Uˆ ×´Å!Æ´½mÍÒ9áâ„ \G‘ÕcqƒÐRôt×Í»-ðæ•ØùnÞ:ä6Mñ5ïG á˜þ˳}1;7„
K»=¥ÔówÁÿDÅXÈe6…êMgPÈ&PëÑJkwc0H¡ ÿ„4UβÕ
ùê粊(&=ÆÆSYÏÌt.Û¯,[WzÈ£3„¼u:“‚\GÒžY7ùÍ,fÓñLêP -¹…‚
§ªÚï²ç©E±ë&£8¡à´>QïRÍ %PY¨¼+|0"d"N`…®`/³¬µT#¼õÑ’p>ªÏ\a¤? há‚ìóƒòpÓí=‘é]Ù -ÀpÁ:îÂ뤡08„¥Nõ¼¡t©¦
¥¥²†òû¸¡˜T‰¹ª§ÄH5ÏW á«_“RHé#ÆBMj¤RÛe¼{šYÇ.´Q‡%‹ž›õl]ƒBÇ:+Ê}ˆ1°%‚æFeÏÜX[ø‚éæ -_’˜Äô -_°Â籤b+.úyÇêÚ³bÌgƒ]C<Ñ·ˆùo@Rü•NT× žHM7·{ÎvÛ逕J¿™ï³¿x8u’aÝZ«®Š‡mµ›Œˆ ‚£\œ:Ì,Ü~¢pÜ¥š±Ñ@emt3f£’ÀybfmTͤžg¬¥á¬o¥†¨T¥}ÖGe˜Ò`ðÜÕíèXv -õcµ/W®m?—€¬zsßi«8H˜ûQ¼Q±¹_úíÃ!)ÆbE,uÏ4agš.Ÿ3DËô(ÒŸ¶W¦°Nžg® +xÚÍZmsÛ6þî_¡ôLˆâ• >º‰Ósï⸵ïÚ¹\>Ð"e3¥HG¤â¸¿þo)‚’fæ®™©@`¹X<û`±š,0ü#‹T Ì_HÅ‘ÀD,–뼸ƒ±ŸNˆ“‰½P<”úñæä‡·L.R M7«®á4%‹›üCtvuu~ùæâ÷Ó˜ +ýˆNcqôîìòŸgÿ°}W§ŠFg?_ŸÆDJ@ˆ`-—àèòìÝù›øõßÎ_ÿýßï/ÏO?Þü|r~Ó[6´ž`¦Íú|òá#^ä°ˆŸO0b*‹GxÀˆ(Eë.œ1ßS\ŸüÒ+ŒšWChp™".1ã(M@C@† +Щ½`˜7…Vžòèñ¾¨m«j²¼¬ïôƒ]Fj—¦sB£›û²µcëì"d‘@:BÒ¡IÇ —TyVmÛbµì¼ +a"“c(1ÄSÞ.–l7™&œÕïczèÌb˜êJJùC‹5ïÍyu=)s\Á 0ƒÂŠŠÃUÅPÊT4TUôRzÞ8ߟ +*Ñðð”^(0å(„)8;ÅÞ”çuv[9åÅíöî-š[9—‘DòÃ+Jͯ¼—2+¿Ÿ[ùÁ)û•O§|4å)ÝŽ¦±m³;O×ízmžkÇÙâkÙͣà ll[G@g u +˜6Ÿ@B8&cÛ®õQ¾zڃњ3¡ï]U]¸±ºé&‰Á+ç3(•..õÿ/ZŸU@T.òyg‰„:aB\ᄌ'Ê€'Ôs@ÊqÅ>òTX +~Ш^hjÕÈPûc‘È‘YW¶*P9”¨MÛÅz+ØG—™òQá«l¥ª“ÉTEWMÛ–æô×’z•Ê\}ÈÊdY©òÔ.‚2°2®š†- +M¹Æ»„šäU@=ç™(¶§=ÖVŸ™%|.‘¤/™¦j¡®N€ÆÉ^Ò«õUÍ2›3J"Á‰8 ˜#•>0ר;f/Ä1æ+Bº„BLÈ¡â<:g&… +PIʦI0*¡ ø„•¶¬— +˜6.e‰’cÛÂ¥¬³g¾–ß,›€º«¦v|Ý:_OAÅÃñhswÅ×î sU¸žÚ]¾BA,Tb˜ào²Ç¹I$‚ŒË‰[¤DP¹÷ÍsŪ¼
ÝzÄxÿÑwŽ+T_^ÒƒvõBSÃÆLQäZÖ…¥ÜÐ)뉢;5QtŸä»oL)Û}!JGk€;¢Ã ï•¶Vxž; ƈzw`—°”ÌrÇLäN ÂxW7‘g“ˆî>^éò¶Ù„¶ endobj -2518 0 obj << +2539 0 obj << /Type /Page -/Contents 2519 0 R -/Resources 2517 0 R +/Contents 2540 0 R +/Resources 2538 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2516 0 R +/Parent 2507 0 R >> endobj -2520 0 obj << -/D [2518 0 R /XYZ 85.0394 794.5015 null] +2541 0 obj << +/D [2539 0 R /XYZ 85.0394 794.5015 null] >> endobj -2521 0 obj << -/D [2518 0 R /XYZ 85.0394 674.744 null] +2542 0 obj << +/D [2539 0 R /XYZ 85.0394 677.5149 null] >> endobj -2517 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F55 1306 0 R >> +2543 0 obj << +/D [2539 0 R /XYZ 85.0394 533.7824 null] +>> endobj +2538 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F53 1303 0 R /F21 930 0 R /F22 953 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2524 0 obj << -/Length 2560 +2546 0 obj << +/Length 2753 /Filter /FlateDecode >> stream -xÚÍZKsã6¾ûWè°ª*Bð$£ÇÖ$ÎÎxf-O²•L´HX¡H‡8Þ_¿)R)g3‡-€M ÑøºûkÈdá,DˆBEÕ"R LÄb»¿À‹/ðî»âdVÐj(õæþâÛ·,Z(¤B.îsI„¥$‹ûä—à
"-a -Ü^¾__¯®¾__ýóç·ëåŠD„’àòãÇõíõÍ¿—+*0ȃ0ÆÁûËÛO—ïìØÇ¥¢ÁåwëÍò×û.Ö÷½fCí fZß/~ù/ØÄ1%Åâ:¥èbÁC‚3Ö䛋õÞšO}ÖàB"AyváH%ý6#("„"¦$êmF‰Ïf”¶ÙªÐýöIBT43"û2I¡(âJ†‹áŠ'zuB½è`5!©#½6Oé6{|Ca,xޥ͒»´²ýÛ}VK"ƒt[šgRëAÔ»²Í+ðÚ±í.Ýþ–ºÁ¦t‚ij²G;ÐìR·`lg¶Ãq’Øn]§5@†a|,ë:{È„¶P=þÒudþHJÌ¡A‚š}~¦”?ÆY®Ÿî£¡mh„î >c“ô1nóÆ‚õv~º ˆaFÝGE¼O“Õ¶Ü?eyúŸ²H=«èƒ¢T–!ßx效*©:!Ð÷9®Š ½™ -DB!úg_вJ§v @Úù -ðãTYø–-»ùj+9
Aˆ½à®"B°Í'!¨çŒL¢F/åEMˆ‘ -Ùö?nn¯Þ}º^ÛÞ2ˆB]aeÕç²úMGb‚]m?LŒ7.9–Giõ°H_çosÇô$…ÇdÃéÒÑe÷xô
* ƒ+N‚“AE¬ä¹šf(5
Î^Ê€óúxÉPB(Vl~ÉNȳäpwCP=„ã%¯@Yã9ÚîI™ã¢,LQ=à4“§çÏñ‹k¤ ×&s·2ÀäcŒ}ýkBà–€‡ù£HÍU'eŽê'_€,çTˆXSÌêÕ yô:®@™|¬X_‚jÆ«0?èŽaDðÜ:’¥"WÀî -œ|Ÿú„ͧYžlÝ•œ&ЗÁí¼”:dX ÎMuf£x— -.ß}Zoü—TPþúK ¦ú{.ë¤M[Û:¤f®@‡pÒ´õxdLƒÓÊ’Ûʉ=§}pÒàJà+]´± ØM©ãósVO˜§SwdžÍzm?¾|·ùàÙ£Ï(:vHûƒå~[Ki24xmÑcH4¤ÿEÓFFmÌ„ï‚ ÊûØã›pt›ýææöÚΧܮH0YÝTú×;t—ö¿lYßÇ…¾Ò?]ž -y¢0QcÃ^~ºÿþÃÝy‹Þ‹Ô!dóüxïÎþª,ê²j²v?õÒõ?3x|÷*þíÿ™8ü{¤&%õ{7 -(h;¥ôæˆ §±L߬?Õý¿…^÷endstream +xÚÝZKw£FÞûWh1tNT©'Uµtlw¦3ÝNOÛäL’¸Åi 8ž_?·^$@î´É-(.—ª[·¾ûDdáG"F±¦z!5G±XoÏðâ#<ûöŒxžU`Zõ¹¾¹=ûú“tLãÅí}o.…°Rdq›þ}ƒFK˜G×ço¯.Wÿ¼ºø×¾¿¾Z®ˆ$”DçïÞ]]_¾þi¹¢?0c½=¿þpþÆÑÞ-5ο½ºYþzûÝÙÕm'Y_z‚™ë·³ŸÅ‹6ñÝFL+±x„ŒˆÖt±=ã‚!Á”âìæìßÝ„½§öÕ1mp¡ <½Ä¤œÐA’`’L#By§2JÆT晌ÆVŸÌ6¿~%D‘¤´ +õ.«ï«zë$lc„ ^²_(åëM¶þ´*“mÖ˜[ÿN râ_±ìÍrʼnóvcF4j7™#5Ù:ÿcš¥ŽpŸäÅ®^y£
@Ä<zW5M~Wô4nºÄ¿p,?•)©ú0+LH¾â˜!¢([¬àH´Ô½…N³ûdW´² ¬‘µE3ê—2JWëjûÙ«2YÏœ¥*‡ùjd^…¨Vª·ƒÇ¤.'vÀ@.ÞOø§å6Ç6!µÕà=&@j7{R¦c' ‰Eÿ ++Rô¦‡æ4m$~ž¦88rÏ<f3iEØ—ÙÌ)d¤äóÍO"[Àé«Xž@vkÙË"ûí²’«9dÇ9™—+0È5D6AL +½áû|pMÜåæýRˆèwsÔp
à± æþý®á"
ÑU¦–w¦á›/
/Øp¡‚ñg7\$éæqÃÅ>Ýpa„‹ãzú%ê:(³ ¸<U×õ¹fи,:ÛÑÄ—P”æ5ø“ñÕu “XÏ×qH7¬ë8ZÑ¡xOŒ CR<^Âq„Šã1y.Sì‰Pf4•ŸÔ&Ïf”—ëb—fî&rØ7Á£ñàçËð–çÏgrˆ;ˆ`y基¬Â{MsÝYêcØ +ݬ endobj -2523 0 obj << +2545 0 obj << /Type /Page -/Contents 2524 0 R -/Resources 2522 0 R +/Contents 2546 0 R +/Resources 2544 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2516 0 R ->> endobj -2525 0 obj << -/D [2523 0 R /XYZ 56.6929 794.5015 null] ->> endobj -2526 0 obj << -/D [2523 0 R /XYZ 56.6929 225.6507 null] +/Parent 2549 0 R >> endobj -2527 0 obj << -/D [2523 0 R /XYZ 56.6929 155.4035 null] +2547 0 obj << +/D [2545 0 R /XYZ 56.6929 794.5015 null] >> endobj -2528 0 obj << -/D [2523 0 R /XYZ 56.6929 85.1564 null] +2548 0 obj << +/D [2545 0 R /XYZ 56.6929 85.6141 null] >> endobj -2522 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F55 1306 0 R /F22 949 0 R /F41 1203 0 R /F40 1146 0 R >> +2544 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F55 1311 0 R /F22 953 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2531 0 obj << -/Length 2689 +2552 0 obj << +/Length 2176 /Filter /FlateDecode >> stream -xÚÝÛnÛÊñÝ_!à<TÌÍ^É%PHl'ðé‰ãFN{€$´DI„%R‡'î×wöj’ZIzúÒ‡ËáÌììÜ)2ÁðG&R ÌR>IRŽ&b2ßžáÉ -ž}8#'rHQëÝýÙ›÷,™¤(i<¹_öhI„¥$“ûÅ×éÛ»»ëÛ«›ßÏ#*ðô:ÆÓoo¿¼ýͬݧtúöÃõnYÊb@"DáÅxzûöãõÕù÷û_Ï®ï½<}™ fJ˜?ξ~Ç“ˆþëF,•bòn0"iJ'Û3.œ1·²9›ýÃì=Õ¯†t ˜DBÒ$ J&„#Æc:ЂH• ÕZP[:†—Ù6_¨-݈ŰÉ5Î-<Pë@ö´ª°@j†¥Æ2¯kÅ}£41ÐMÙæu™·ænQm³¢4°B7P“×Oym€Ä¥BPÇA"ND¢9ÌžËj×ÍXí±’S‰¨Úa@M䦂´#Œ° -9 Ø‘Çêí;
~øwÅš› Ö£D@!HìyU.‹U´,6VѶ±@‰`Üâzº‹ -cP±´u-«ºª\oÀTæf©Ë
Äé_3sÙUMS<+ -ÍzŠq.ù*‡"ˆ$¾9¨vÖ<” öj¬€ªµhÔx0߈J‰p“ý£?bÇÐmsî"WåÜÆV"¹+Mìõ¡©6]kWwY»Vfw0ºÐ”@qE—ÒáØâthY„BA2,ܘC¯=!œGÚ—nX(! õÅ›éiLjÏP‹,ßVå_{§d3 0bÐw¦\@ÇCM†‡8hcÁ¹H¦Wê••6x-QÍ•¿)†¾ é„"7§‹ô4ñ•ðC¹ÖUtõ#tã(ßáè;ðæ‡Ê¥ï¬%h§+U]™znKëÆÄAããAG+OX_ëˆù9,m×'ío4Á Ûß1ùz¸'`ØûêzˆQ¦£…P[?ït ƒ¥µ©?|Ý VUßûi——³ÙofÁìÀöÁ@B÷!ê‰L -JDÊŽ³tH–ƒ^!A”°xÈòs7ž–¸šÂ„–ÑÃ¥5‘•±¬ÎõèÊa -¤,‡5xwút“xò‹k:¬Wðò”ÉSzíaÑ«ÃÒz]z0™Æ'X:¤ -\è%8Eûñâu«b¿T$àjBÕæõÖŒM¹íPvÛø¹ÙÂUò›•+JËÖ,˜”ÏUGáB¿S½Pî}JQ$u ŠîÍÒ¬–ha¹u¥árn«…qáÞßE?¼ù]ô†¿jîk-r ï¹±;wCføõÇ}Ãz™©¼ìvýÐrŠúuJÀà±ÿþó_ÿæåW>\}œ“†sÄÔ4 -¥tG‹î.³/û +xÚÝY[oÛ¸~ϯ0Їã +“«+»ÙóO“[½øŠvL‡G¡Rö"]g³oX` ÿÈ™ýÔFÓe6}š–ż3mä1Õ‘G8AŒ€4läݼ°2À\"°<pS.ˆã äHIÂÇë›K+O¹]ÍÖy‘Wõ6ËºÏæÙö”ÈqVL3;ô9-štXžÄÑ8ŽxäXzf˜H¢€J€à±…×—‡_oï[ôº¨³m‘ÕV“ÉkUgëʾ\”EUnë¼Y¿Ëã1ur8©‰´[lžFcwúÍÃ@9ιṉ=)$ãX¾±Õॉ¥újÎÊušo§o©*Û>ƒi6Â}ÛL^‹rSåÕÐbpHæ*FŠ%<„wzSÁŒ° +é:I„ʯ%ßfSu¯!¡ÅT¼YÕœ"üJ +ß»S$î›ÀRv×þìšÊûúðìh¼céç–ú£¥~–Pż
çÓ’Ê>g²6RÝíì„fJ!7bFúáçòjrq}÷p}{Ó~u8ã‚&ŒrìýbYyœÚÇ¥‹š6A×P6¸[Z'ÉË›‰N“vÀÏ„C–mñx“ôÌT9·ÏzéÙ4§)e3âòǦÎK·êܤ¸Òv=¹@–ú¨Ó &Ö¥M‚ΙÝnz¾œór»NPàýÓ(¢ ØÁ™ýn2zÕ¦tvÖ’Ü‘i1{ËøÈg)"Q‰ߟË̬£@çòÉæ"9~ÉëeÙÔv&5Ê/šuVÔÕYà‰H“‰ÏÜ{Oê«{½ä«••om“º¥Ý~ÄáyÚ¬œë¿aLͶ5‘ë‘ \I‚gmÌxŸÕÓ÷F+¤sF@5 UZÌd·ôwTW[máWK@åSçéÊ¥ì´N‡G°ØdîLç¾>ú»É¶yV¡ŸÈã·Æ‡&;e°KÂTa$ã‡3u—ËW»™ºåÒëF|¸¤bˆ1I/é™Kv
M#Jô—üR9|_ß=sï
+ghÈËΊù|à!˲r5Ó‚d[Çç|dšnÒÇ•,çí1 +…V(4•L|·VV¬Ú‘ÛÌ¡O: +-ù†‚%ƒ(è.ÙEAü¿Gÿ?B”`„C¤=Œ‚×x.£¸¯ÊEWqŒ(#"\”wÕ#1ÄSÊÙaýZ®€‚ýv1F‹¤¯¡M ˜ÂZ·½}COn©@Bvç k
%\9 øn"Ò³.:/ Îëô ¹M5ÑýÜ%µ³ÖHŒ¸PÉnÒò= +cP±Ô•%´t£«~ªÜlÀVæv¨É,¡Õé>SûØ”U•?+ Ê0RÇá’¿gr(‚HÒ6åÆÁC+êž,PÍèAkƳ +÷´Jíu%ˆ-ŒéÞxö»‘ã1N4ßé(‡”Z̳ì,ÖëD ‹»‹Ý7Ã_GØp2˜œ;X,,šß—k'É‘F#ú²ÝÛÐß¾›0ŸÿÇx
Ú÷#HÿrØn[úüÕÛ/p\ß·H6Ú.H0N)m+"’¡êíOY»ºÿ%Ǧendstream endobj -2530 0 obj << +2551 0 obj << /Type /Page -/Contents 2531 0 R -/Resources 2529 0 R +/Contents 2552 0 R +/Resources 2550 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2516 0 R +/Parent 2549 0 R >> endobj -2532 0 obj << -/D [2530 0 R /XYZ 85.0394 794.5015 null] +2553 0 obj << +/D [2551 0 R /XYZ 85.0394 794.5015 null] >> endobj -874 0 obj << -/D [2530 0 R /XYZ 85.0394 769.5949 null] +2554 0 obj << +/D [2551 0 R /XYZ 85.0394 752.0294 null] >> endobj -2533 0 obj << -/D [2530 0 R /XYZ 85.0394 747.8192 null] +2555 0 obj << +/D [2551 0 R /XYZ 85.0394 688.0859 null] >> endobj -2534 0 obj << -/D [2530 0 R /XYZ 85.0394 711.7108 null] +878 0 obj << +/D [2551 0 R /XYZ 85.0394 648.5014 null] >> endobj -2535 0 obj << -/D [2530 0 R /XYZ 85.0394 643.9803 null] +2556 0 obj << +/D [2551 0 R /XYZ 85.0394 615.2083 null] >> endobj -2536 0 obj << -/D [2530 0 R /XYZ 85.0394 558.2262 null] +2557 0 obj << +/D [2551 0 R /XYZ 85.0394 579.3639 null] >> endobj -2537 0 obj << -/D [2530 0 R /XYZ 85.0394 450.5864 null] +2558 0 obj << +/D [2551 0 R /XYZ 85.0394 512.4986 null] >> endobj -2529 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R /F55 1306 0 R >> +2559 0 obj << +/D [2551 0 R /XYZ 85.0394 427.6096 null] +>> endobj +2560 0 obj << +/D [2551 0 R /XYZ 85.0394 321.0146 null] +>> endobj +2550 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F39 1151 0 R /F41 1208 0 R /F53 1303 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2540 0 obj << -/Length 2655 +2563 0 obj << +/Length 2873 /Filter /FlateDecode >> stream -xÚÅZÝoÛ8Ï_aàVj–ßqOéµ[dÑÍõ®YÜ»û ØL¢V–\KÚ´ÿýÍp([²eçŠf±(óc8g~3CUÌ8ü3c™uÒÍR§™áÂÌ–ë>»‡¹·"Ò,z¢ÅêÕÍÅËU:sÌYig7w^ãY&f7«_“WL6<¹¾üùÍëùB*§lrùþý›ë×Wÿ…¾á@$œ'?_^ÿrùŽÆÞÏL.ß¾ù0ÿýæ§‹77;y†2®P˜Ï¿þÎg+ý§Î”ËÌì:œ çäl}¡bF+Õ”.þµc8˜
K§t MƌԴ¡W'%X*ФZ0mí^QRL)ª§BE-6xΗ?3 Ýe΀`dSoÛCe8É´Ëìl¸ã‘\=Ñ„\r°›K™NÝ\õ]É]½¥ÆçÎoßP§Ž³½xp5:ƒfRpypˆƒ½¥bNp‰À”àÉÕq®ê–ÍÆ/‹ß8—~õ‚FÚO•¿Ë»2ÒÍ@¤Ð‚[;²£x[ð‡)mìW: :s¥=U¸ÒæpK«ØYv~ËžhbˡƬcZ1Þò?óT'Û¢JYûu½ýJí®ÉïãpÓæ-\k±Œjjkº=<’ІYÝ_[Ó®ênêâTÆ”±=YoþKÑ)<Ì8gf6u,“`hÿ‡çª,€I6í¹””2k>Í‹Öqà›´B°ZôÒ-,—LX5rб3Fâ³”É4“3àAðÜ×ÍzDrf”ìMúŸó…É
ü•É›#ÍXæ -ñ ,–u…ú¸ï¶sHv{ùqÕ×P›4ñ -I#ü®ë&® «ù;¦t¼×ÂQ¢„a!¦~JâŒó´]¢³þÆ
—ðGL(€ÅhÞG¿p›©À†[у -LCí¾‹ÜÕê\@7ûNÕrxŠÆŸ±l+aTFgô&Žðä@«êX‰ÁÆØqD¥ ¦•Åê¯î¶³µJ镤¯£~’_ª]ù†ûuUÞz(zç ‹† FÏB¸xíó*r¥¶²§p-óó‰
x'—b”ØÏ݃ -FW@IžŽï3”Øñùë^§tôØrlµX´púi«È)²ìÓ#ìe”ÛÀèÓ$$LdD€‚áX™#¤› H0–Ýø pr‹ÍÖ+:¹ƒ8Çf޾m`â7bÍÓ -¥•qŒôLWÔ]CÄûÅÑF0\>¬†l²O‰¨{ì4<>õðøðýoó"$UCbÇÖpî5!~žMáK]¦v_‚O–A +xÚÅZëÛ6ÿ¾…ûpZ VøÒƒ¸Ã›d/Ø¢ÙË5[\¶´2½V#K®Ùäþú›á²dËv‹äЈ)r4Îã73Ôòƒÿù"ŠÃX½H´ +#Æ£E¾½b‹'X{sÅÍÒ-ÇT/®^üS&êXÄ‹‡õˆW²4勇ÕOÁËóðX°àþæííëë¥ZÆÁÍ»w·÷¯ï~„çˆ0¼½¹ÿáæ;š{wEpóæöýõ/ß^Ý>òŒeæL¢0¿]ýô[¬@ôo¯X(u-žá…\k±Ø^©H†‘’ÒÏ”Wï¯þ=0ÚWçt ¢4Œ„ŠA ƒ4ç5ÅÄs J$è…ƒ^S‚ÏiÊS¡¦–O‡#KÇ‹1³£-=ÑÌ–b´eÂÂH²ƒ-¿ï+Òu·14hMóÑ44.×usÍÓÀ<ÙŸº¯V4Ÿù#È}V–4(ë§§¢zrìj<狪±FhŽÅQgBÁÚneš†è&ÇQ˜îÉÂ#×púOX +™ªFQ1’§²FÚ’P ž’«0Ž•vBËìÈ’: +EqV.O4#×Xœ±P(¦‚=\kô
˜L*ÔöW[³›Ï4×·Ù“¡áÊ<öÎ"Hõ3c2{j1É»ºm‹ÇÒ‘º5zÈÈþNrl¿X‡—±Óíul>¡Ã4M¼¦¾™a‡\
lº&ËO²I/—Æäu³ºèLù´Åg…‘PL¹ +2lâ"+¶YQ•ŸÝúÚU€Û¦íè‰ +Ô$xywÿšÞÑ4±2×’¯E˜²†Ìá¶qf¼‘à3½Dàœ@¿¯yäÞ[Íå
‹N t¨›¬z²u<Ø>~3úY÷]ß7¦4ÔØÀõÈW„—Huº{×9˜Ï‰5”ùËýMÄ—¹ÿÒw\ !`}¡DT +’CzÁ*‹`ï/—ˆÛìÓ²óG`Ç@ÆÂxã#ñªù&. +T‘š +xS–õóL…ŠIöè©XªTù“øŽª÷mW¿›Âã$A'$åÐ^NµpˆÔZÿx¸ý +:r Y"êxïðÊ)|q «ø(µÈЏËK3øáù‹ŒßÛï-VÞ
c¼9…˜‹ó$qˆÉ +†²q„¡’u4猋y×ã‘pà\li[šË€Ïdk˜¯7g%7–ý”Eו³AdÍjPÎgäjÛM«€¬ò#Cƒ‰*¨ÂÇ +³ýp7ÚŠÝÖÉQoDÞ…p<v! +½¥€T”b*šºõ/[L
p……V×úŠ«£ž;°>…Sý¥*kœS¾0OýÙe–PP¥ìÂǡʖYÝL™¥Cu¯³äªhLÞa/wXdq
åi<b8[dyªé¦YMA’‡ä=ïݜԶñ|=„7ŸRè9y60•zÊlMÞ|éªÆ´Hß“„ÃOäõvK<”t9„ÑcßyêªìEäÁcï}4þ£=û änœ+¼LfjŠ=â3ß13'Ë7®ã0âè«”oÚ¨úD…ãTñ†®2á—š[žâ½¬Hÿ¿Å—”òšýâmÌùLñÆcª8M'ÅÛ¨áÕñ¨xK\ñ– œ¹™ÂQ§üÚW¹- ž‹nC#ô¦™O¢iBÿ¥`ÙÏ`9W î/H¨oÎ9TƒÄ<ß4–ƒ?ÀD±wg÷aŠ.§w,z ‡"”>ÂLæWjºÄÁª6mõ׎¦Mù,wâÉûQ jïÈ+wG^·î
*°Ú¿aIǼÓü3¦WúÍ(‰…Œ%þn‰Îú3‹˜€øŒÂ +hMfdÿþ½¿Ïendstream endobj -2539 0 obj << +2562 0 obj << /Type /Page -/Contents 2540 0 R -/Resources 2538 0 R +/Contents 2563 0 R +/Resources 2561 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2516 0 R +/Parent 2549 0 R >> endobj -2541 0 obj << -/D [2539 0 R /XYZ 56.6929 794.5015 null] +2564 0 obj << +/D [2562 0 R /XYZ 56.6929 794.5015 null] >> endobj -2538 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F55 1306 0 R /F22 949 0 R /F53 1298 0 R /F41 1203 0 R /F62 1347 0 R /F63 1350 0 R >> -/XObject << /Im2 1336 0 R /Im3 1495 0 R >> +2561 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F55 1311 0 R /F53 1303 0 R /F62 1352 0 R /F63 1355 0 R >> +/XObject << /Im2 1341 0 R /Im3 1500 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2544 0 obj << -/Length 1953 +2567 0 obj << +/Length 2383 /Filter /FlateDecode >> stream -xÚ½XßsÛ6~×_ÁGj¦¤ñàÜ“’Ø®:Ž’³•öfÚ>Ð"dñ*‘®H9ñýõ· @)©w¹¹ñŒ ËÝÅ·‹ýÄ‚?(#š°@&,æó`µ› à Ön'ØÉDPäK½[N®n¨’8D˵§KÅH),³_ÃÙçÏ׋óL#ÂQø.žF¡ðãlñevgç>OÎn¯à'M¨ -†ècÊb¡¨hàúÅ”†dÌ%`kM#AÂûæÿþãpÞIx;€ -ÌPÂUÀÈnKxð' `Æh#å›í¿¡ÒL\Íw4øPÂ.£æÈWÝìTôÒæR@Pú¥;îËM^M#Ê¥;¶v¼›bªÚþ*J7xÔöy¨tfØJÁ¦ÝR§¥Ø¾ºÑÚµÞk«K„&Íì»ùâƒ%ö‘é)…T›êmùÇ@h¢¸k«‰Tá.5â¯ö‡ñË<÷zWN1wZœd¹·ÏÕ&-žÚɼ°ÏÔ>Ö‡ú°ï”luZi£gð,‘± ‚~R}WšRˆYôFÄßw„¼ÌI¬X¢ürée~[/9%Vøa~»˜Ý=ŒÔˆá@¨ mçA"B[«u^h;ab—šT2@qXåOEºìbµ)
O—VfòѽiÒÊŽšZÏUYÔÖÀÖ¾c¬éNWzÄô7ç«O”ÈXEÝYÝÙjdG„€hô›kCLWµN³“Æ$qžÀ|©ÓÖI¹€üøåó œ@(•â¼ÝNjÄp¯4P3@ÏòMÙ@¿r”àÈ©™ƒÚÒÖ€:lT¦’…§Áb¸I’`yRgÀj¥XóÅÒp•ë>`by}ÿq -2€bÎ×vÅšŽìÚ`’ðñuŒ›àÖ%i".e:tƒ m;ýlò0èá'²M{¥«
T,L'Їÿ,{8÷vÒùh*bBÃB7Þ)›þFx“¾h;³‚–¯ÆÀ⻼ªÚ›¼90÷Œ‰ärÄ$Aò˜kÁPõàF¥k;¡¿=oóU^›FÒünŽØðÀ„=g’˜ö](ÇÛ^Í«êÔ¿ÕÃ")4AŒ_Š -™bmB÷òb¤VB+&à¾Z¯fÞÌï®Nq#1%ŽSzž}©†˜áÆNÊX½ÒõêªÙWus=F‰ÑtRC”(ÀÙsa9z½Tq3i“ödĂ\øàâ ÁÈ 5½¤û«ý¡°09°žóìØB”ù&ÈκÑ
üè7¡MJÁªïÈ8P^ºEy6Ài˜}p-gæ_/û®¯[Ü=|á˜#¶¾¿y?p‚BŒ(9Å‚ åש#…æû)ÅNÀWÇþ·êø_P± öpG«^ýaN‚¡e8a¸ü¯²ÐÇËæ2q<·ýê:´lTYÜšáve¸©È´àpi;ªcÿ7†ï¥M+ÔK›Ù—åŸî/wwssÝ/´KÙ‡W¸6í\kù¸¤Ü×ùawêó65÷•Ñʃ:¿ûÓ÷Û·}&c¸KŸèê¡uƒî?ÁSfs˜óc×9…cnÎïÐ÷8/º`endstream +xÚµY[sÛ¸~÷¯à[©™ˆÁý2}r'õN⤉Òvfwh²Ù•HHÚοï9 +e'¿'4#ÂZ¨Fcoí³üÄëë
KÞÖ`R2¶ªç<³öf)6Ê=*ÁBCL¢Ñ
ŒË t5›s¡Òe5£$íž^;-*3\™hg•o\©Æ¸Ì¤Ô:RukëöÞ…Áo3FR·ÃœN+·þÓR;Ò,óm~[®Ëö{x߸å}^•Í_uÚÖaºØÕÛ0Ê×ë0ØÕu‹ÊÀdB¢Gb(A-ˆ£2-ʵ»ó)“º'éÓÒmÛð4T6}Ögë`$ÄzäE®3Æ‹VÞ–Uñ‘„Á?:á>¡´ÏopÎÃc_·"¨°aV4ª–WE4®íWÕó`0‹µjßâ¥kÀLUb皺Û-¾ét]nʶ™@¨†Úô[µB?ôòº*oÝú;dI_Á”–à—² ‹7.¯"×ö>oû‘›ðS°+ˆQÑæy7áÜ „ÑHRoÛ²®Ïº¼uLCÖQ¢{ëB±|Ä,ƒã~Ãp2›>Þ»j"k¥Êµâå¬å†õ¹]F–A@‡›ƒ™´®ÂìA‡,c5 +“”
ó,0à™µóíÎñ`¹¥™!PhöÂêYºÏšè´)+Œ0¸2Ã'öCYwM >g‹²ªº
3°›jÌŒÇðz¼i`Ò'/,ºuá}çÚ¼¬|Ú"‡ªuœ
dß +Èâ®<»c Ñ@wä1ÙaVc“áɸ†ÿ`_àxZh“óçîöc}kŽÊÁÇ94@
ŸÆš–m"°0‹çnD' Ã@å7Õá_,o(šŒ™Iì‰&DŽC +»S +'oãJL«0òµ +žËºjƒ€uX +|Aܸ4¦?G]Ç€3i6 ¯]U,',bp쀉žU;Ö³¸i]^œl`œßxf=ÝÀÆT§Ø@ò×oŸÊ „Î3ê¼ÜjBð^iàŽ€ö$¿«½ë—±%Äæäç`‡ömë¨u„¨Ì´HO;2TùB·SqVOu}³À^ÑL,®¾|<r Æž×d šPeÏ}Ú‚Mµ¯Ë}ûgQ?Vç
ê‰Æ"NM&ѱ8»±Ó›¡#÷No\U”Õ]´¾Ç¯ &â³ç͇Òëi-ü¸ŒD]U¸_a•É~X5 pAŸ +ù/ŸnÞ]¿ÿö徸þts®rÈÁªã-K-ÔA;q7³Ç +Ê.¡ª¿µ€ò€ªÞu¡àà Ž§8³ög;ºÌµuËz³]»§ðµ“…k–»ò¶_Sõ³p.\‡1ú#á}ÁÞ”YëÆ\¶ÏŠáO¡XÁâežéÁUÇCY¸¸ÊQ¦xó!ýF‡JØÏŠöe-ôP¤¶áqYlʪlZpGÃúÅ¢îU¿‘?æU—¯'œK•AȨÆgÖƒ(A-ý™¶û‰z2\<“Dòƒ‚ñîÔ`'n]$ƒJ$zºMÞü6Å¯È +2€S•^¯Â— ¶9‚ÉÒÛïS½ N]zîK™hÐòé¿ +É# +àŠ8ïŸÑiÿôDÞ?ùîõ®«‚¢§¶eq¨cgÕˆŽô؇Ÿ>™`3™vÔ(ÑæeqÞO=.Bè7yaG†ýáŸÓž/:ƒcɉ” +endstream endobj -2543 0 obj << +2566 0 obj << /Type /Page -/Contents 2544 0 R -/Resources 2542 0 R +/Contents 2567 0 R +/Resources 2565 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2516 0 R +/Parent 2549 0 R >> endobj -2545 0 obj << -/D [2543 0 R /XYZ 85.0394 794.5015 null] ->> endobj -2546 0 obj << -/D [2543 0 R /XYZ 85.0394 524.676 null] ->> endobj -2547 0 obj << -/D [2543 0 R /XYZ 85.0394 381.9267 null] +2568 0 obj << +/D [2566 0 R /XYZ 85.0394 794.5015 null] >> endobj -2548 0 obj << -/D [2543 0 R /XYZ 85.0394 264.3646 null] +2569 0 obj << +/D [2566 0 R /XYZ 85.0394 388.8031 null] >> endobj -2549 0 obj << -/D [2543 0 R /XYZ 85.0394 158.7576 null] +2570 0 obj << +/D [2566 0 R /XYZ 85.0394 246.2919 null] >> endobj -2550 0 obj << -/D [2543 0 R /XYZ 85.0394 83.677 null] +2571 0 obj << +/D [2566 0 R /XYZ 85.0394 128.907 null] >> endobj -2542 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F55 1306 0 R /F53 1298 0 R /F62 1347 0 R /F40 1146 0 R /F41 1203 0 R /F48 1223 0 R >> -/XObject << /Im3 1495 0 R >> +2565 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F62 1352 0 R /F63 1355 0 R /F41 1208 0 R /F21 930 0 R /F55 1311 0 R /F53 1303 0 R /F39 1151 0 R /F48 1228 0 R >> +/XObject << /Im2 1341 0 R /Im3 1500 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2553 0 obj << -/Length 1505 +2574 0 obj << +/Length 1411 /Filter /FlateDecode >> stream -xÚX[sÚF~çWð3Ñv/ZI›7ÓÔž»ÏtÆñÃ- DH®$ìÒéïÙ›¶ˆ3i‡‡½=—ï\ö2Äð#C¡HP1ŒEˆ8&|¸Üðp
gÄÑž(èR-¿üÊâ¡@"¢Ñp±êðJN2\¤w£3D(<šM>Oσ˫ۛÙäÓõÍÅl1#>š\_OgçŒÊ1\zŒGŸ'³ÛÉ'»w=t4ù8ï—ƒé¢U®k -Ñ;XƬ_Ë€RHK.b".\´ºõî1{4)œz»@Šh´Ø(
¡#«î²4cj÷”\nìL¦iÖdeaW@dÆT媳»r´]†5xLO–ªOŒ¶’Æ&:ôáCVÈÊé£CA6† -±MÈâuödjì´¾Ñï=Ùeçí‘F$xÄÎlŠøzé´<Ê…©I`„yV(Ÿ -ë¬0…<=g;‡G<„$׃Ý(«Ãä¹Þéð$mNeà”¥®7f©`¸K.•’WUÅPÊÚ%FšªôXš©(*u’dáŽ5ºYô%ÄN¹GÉÛÒyµ^— ÃnW§Ãû´•µÎ[8ºÏWé·:“éÔ^™|š_õ÷T¯Þg]ó]”ßÙ«¾wömîáîS…C³(tayv1;··…“Ÿn³"«›J6\<ºQ+k›*<Ÿe±“}IK¢Ñ(òQßkz@c†0ôÄëÉíâ·«›·M¿€„© -åúÅù€ß:W~(‹º¬šl×é=¯F\ ’æ»]æ»ÝÎø“=®çð¢³=÷ϵYÌævÒ¥Ý5Yž5ûÿ¡yða@¡•ÿùÞµÃátëꉎ͎ -µòÏ¿iÙV•»æ9$w=,‡ÌàÜ‘îÒÇÓ\áS/Žyò’kõ#\â*SõI®â%×›7¹VP¥Ëmªžú˜†ðÖrú’é“Ü…±uí1æÚm:&îO}‹ƒúº'p›wÿù;ýð¯hÉ’äNÇÝM퀹SJ[@xôJuÿEÿZ÷²ÅNendstream +xÚÅW[oÛ6~÷¯Ð£
T/º>º‰Û%H,v€m‰¶ÕÉT&Éͼ_¿Ã›,ÅJ[l +yÎáá¹~$‰‡áG¼0BQJS/NbzÙ~‚½-ðÞOˆ•ñß—z»žüòŽÅ^ŠÒˆFÞzÓÓ• œ$Ä[ç§o¡h*ðt9ÿ°¸ô¯oî—ó›»û«åzæ“0ŽÂéüîn±¼¼ú}æÓÃÇxúa¾|˜ßÚÝ,¥ÓùûÅjöy}=Y¬;ãúÌ”eN>~Æ^~\O0bizÏ0Áˆ¤)õö“ d(s”r²šüÖ)ìqõÒÑ€Œ(‹èHD(ñAiÒAHÂEŒ2’Õbaœšß¬n•?Ç´Gìù4BZ§Äïß]@œR<÷˜§´'`QË”ô›…ÊDF¬@_]ðÿª@O1J¾¹ŸíDöGVÉÍ'âþÈ9ûïJŠ—ìZæÙKZù\ÏH2M>ª¹mBÃ9wÊ'£4ˆ"¹ü©ò½Z^šd¥6gù¾EÓÖ¼jCºav—™0¤\x9%ˆF°‹‰²"ƒ¢ñ;!Ÿ%=iÙùÃú×Ûû/êåJ¶¢–¢5–¬ŽM+ö™\T²©ê¶8ìOûˆµz†â4Š»Î…ÔbèD“/Õ¡–¼|ªÙªõj‹ÅI ,AjÜ<¦ÚóFtiÛ>Q›Q¨ÒoFv™Ò|w‡=—¾‰=Ïùci…7U½‹,v
M#eõÔÍKLaÅIļ âC6†¤À¯ +±ièâmñUcPºÜ¨‰ËÃÞUoÅH½%dÄŒL‹8¼´VB²Ð
¬Š°,¤p°-¤òdú\´–‡x +)íendstream endobj -2552 0 obj << +2573 0 obj << /Type /Page -/Contents 2553 0 R -/Resources 2551 0 R +/Contents 2574 0 R +/Resources 2572 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2564 0 R +/Parent 2549 0 R >> endobj -2554 0 obj << -/D [2552 0 R /XYZ 56.6929 794.5015 null] +2575 0 obj << +/D [2573 0 R /XYZ 56.6929 794.5015 null] >> endobj -878 0 obj << -/D [2552 0 R /XYZ 56.6929 769.5949 null] +2576 0 obj << +/D [2573 0 R /XYZ 56.6929 751.9132 null] >> endobj -2555 0 obj << -/D [2552 0 R /XYZ 56.6929 743.4733 null] +2577 0 obj << +/D [2573 0 R /XYZ 56.6929 674.8216 null] >> endobj -2556 0 obj << -/D [2552 0 R /XYZ 56.6929 708.4545 null] +882 0 obj << +/D [2573 0 R /XYZ 56.6929 634.4081 null] >> endobj -2557 0 obj << -/D [2552 0 R /XYZ 56.6929 632.6354 null] +2578 0 obj << +/D [2573 0 R /XYZ 56.6929 597.1931 null] >> endobj -2558 0 obj << -/D [2552 0 R /XYZ 56.6929 562.703 null] +2579 0 obj << +/D [2573 0 R /XYZ 56.6929 564.5425 null] >> endobj -2559 0 obj << -/D [2552 0 R /XYZ 56.6929 376.8726 null] +2580 0 obj << +/D [2573 0 R /XYZ 56.6929 496.4842 null] >> endobj -2560 0 obj << -/D [2552 0 R /XYZ 56.6929 303.9754 null] +2581 0 obj << +/D [2573 0 R /XYZ 56.6929 434.3126 null] >> endobj -882 0 obj << -/D [2552 0 R /XYZ 56.6929 258.1694 null] +2582 0 obj << +/D [2573 0 R /XYZ 56.6929 259.4673 null] >> endobj -2561 0 obj << -/D [2552 0 R /XYZ 56.6929 218.7009 null] +2583 0 obj << +/D [2573 0 R /XYZ 56.6929 194.3308 null] >> endobj -2562 0 obj << -/D [2552 0 R /XYZ 56.6929 183.5674 null] +886 0 obj << +/D [2573 0 R /XYZ 56.6929 153.9173 null] >> endobj -2563 0 obj << -/D [2552 0 R /XYZ 56.6929 107.7483 null] +2584 0 obj << +/D [2573 0 R /XYZ 56.6929 116.8171 null] >> endobj -2551 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R /F40 1146 0 R >> +2585 0 obj << +/D [2573 0 R /XYZ 56.6929 84.0518 null] +>> endobj +2572 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F39 1151 0 R /F22 953 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2567 0 obj << -/Length 4018 +2588 0 obj << +/Length 3959 /Filter /FlateDecode >> stream -xÚ¥Ùrã6òÝ_á·Ð•‡8x oÎx’Ì&3ñÆžÊî&y DÚbD*"eGIåß·Ý -ç%QðáæãõÕåEªƒÛ·¿ÝþãìíGkˆºˆâôûÙ/¿EçÜàgQ¨LŸ?B' -…1ò|{¦cÆZ)ٜݜýÓo8µKçH«,Œ3™ÎÐBŠs!BÇrDŒØ„‰’ÊãêíÍ›ŸÞ]ß¾ûñÞÆ®éé/d -= *N®ÛîȻ’gÊÁL‡JèVàνX(™‡¶,°•]Cö°ÜVÁ®Žu¾V4põᆠéÜ_ˆ,(?”m×ÒhÎ;å¯Q$kÚ>
ªš†úæ
¤PÉøäœºp$oÞ–û‡rœñBçw‡…'\åvm/#’ ßlšGnbms°U9„®û[ðT{>ü.í¤8È‹Âb
˜8X·mÜÀ…4[>˜~þlj>ç±êÖÍ¡£Î6¯€Ú‘zeQuU}ÏG¯ËÁR¼cä.Gª€4Ü”!NŠ‚Kþ–oJj3»m{À¬òšMÝåUýdZK$ -ž«Ða\Y=’È+ŒYÒûýœòÀ^õ)‹UÖ5Kô‹XœHcxâ:`l¬%€ß%÷ѲÈ3 EÛdÙ¦â(”"Qc¶¡£²FiðS¯bZö—–Z€èÔ-ÉñwÍC¸Á¼f›·J¶‡¦ÐnOV‡èWUÛVh0N8‚Ò†#¼»Þ¸|ÿ–švž•%˜ÐÜБA¢Þüxù¥îåÄ_4›Ê)⢘á@7É*¸ëª9¡ÀåŸÊv†÷‰ -“f/b½RY¿u¹'_{W|FQ.÷|\S ?cmœ›àŽÌÍœ!Ý>_‘M·ÛÜ5ûmÎ8Kø%¹œ¸fñZãõ˜¸'¬yëí-ëz>4ÃÛ¼('êM|ô›ì6•³ --Yî[2F -ªXz‹ªÍ—›r>„¸½0 ßyÝæ+Ö=¦¶º¯óîÀŽŠ`6,†5óðËA0´¬€ßü -¹Ùö{O6¸½y÷íœeq¦Q61³ëŽ;´ÚWË’¬‹\
^Bf:&u¦¸vÍK‹_#È«àŸ8}ÔódŒ`ÏxÌ(1ÓZTt|{s³°Ä€ž¦¼ ÃuL'Â0í - -.TðÝûË7NÂõq¼z[,²àq]Ðî€Ë¤ÅÙ0Ä®MD4 -6¤€È
/g‚k›4 -÷™ -Ölà¸-%‘0¶©j>dRãÁÝj^°)ó=ºò$š† -°¶_þµû×lÿvUva«ìfLœyÉüo2¬ÅÍVâ3é«ý'ŽÞí«‡yX逖XÉs¼7)ö†’vyà9^bhŒ'0¬À.y‚ ÄþéM¾}Öšu‹ *Ï=X*Àwgrª°¶.€µ.[¦ü” -¿\cüÈ -¿í®\UwÇþy`ÓÚ€q¥†¹
&Ez1vmÇÖæEìb{ìbzïjÞߌ[[Aòjâe¨þ€Þ/áß\ãÈ?UPªnåè×ÏýT/™¯"¿0“Bߣ]òJ2$Øè -¬dÁaÿæô³iÀP,@;;êsÉZœ|C‹ëFØ<< 0“ÒùŒÅfÞ=Fiú$¿–&sцPî=I8G%|)…pVÊì¬fp{ ²ˆIFRM>¥@¢‡#NŠ×™¾!g Ð>jµÌDQ÷OÍ(ç´¥}œuå;ù+˜é -ãî‡yîKåàóp8æä÷"äR©ñV©dÀÛ=üÅVÞ»(3F5ÍÒ¹R)[=ŽËµTA,ïÀ|-]JË{}ò»Ì»Õz\2~þà þ¸¢üß¿ÑÙ}¶Ìnzõ•B¼ÿĦ>l—å~üY¡ÿâðÎ%ý«‘k~ˆúÜ7HöSØÛY!bžúò26|œùN;òßëüß_…÷_¿ëR–Lö|ËÉ‹ -,©C -iÈuÿýøSÜÿÚíTendstream +xÚ¥ÙrÛFò]_¡·@Æ8&oŠå$ÞÄŽ×R*»ëø$ e`P +“Í¿o÷t.
eUm©J˜³§§ïî¡8àOœgq)£ÏS£Ã8ñùj{ßÁÜ÷g‚×,Ü¢ÅxÕ·7g/¿Sé¹ M"“ó›Û¬,Œ²LœßƒË÷ï_¿»z󯋅Œ£àÛðbGQðöòÝ/—?ÑØû#ƒËï__CWj•À"¡p]ï®yuy‘êàæõŧ›œ½¾éÑ£."…8ý~öñSt^À
þq…Êdñùt¢P#Ï·g:Va¬•r#›³ë³ö +"5‡ºT ð¾*Û“P³9Ô_„ºÏë¢Ù彨“(–s ÷Ls¥Sâ,ÓœÌÅGäŠÄ'‚8Uª…Ô¡‰’v' Á´åêõõ«oÞß¼ùù]¿gÀ"‚MÀ\·›È:”c†Å¡:a|AI ’Á¡-leA×ÐH{Xn«ŽÆ®P|«M\½»¦Ñ_Xpp!² üýP¶]K³9C.ÊߢHÖ>
ªš¦?|÷ФPÉô䜺HF¥Üß—{4!2ßa"Ç7k{‘ùfÓ<p›k›ƒm¬Êñ誱߂—Úóá»´‹â / +‹5ÁÂѾmsï&níH³åƒéógSó9U·F ·m^ +j×
c¿dÄ‘á%O.ôÊ1|U'é”ïoÌù@ëiÏaž‚p¨jÅÌF‘£VOžA@x;œê$ŸWç]>ƒ%Ïlš¶ó2ëÆJml|JÖŽ•™«Ð¸ +Æ•Õ#‰zåƒ9KúžS>°W}ÌbAÈ’%úY,N¤qnfß36ÖÀwÉ}k´,ò<Тm"ûGb¨)ÛPQY£4ø0¨˜–Ã¥¥ :uGÖäø]óøŠ÷ló¶C ÃöØZðdõpо"¨ + +¹Ù°g +í¸LÚœSAìÚDD³ `C +ˆÜðr&ø¹¶I6™höh2¼Q0õ8ß!³wxAxä;ð€«Pk¼zKƒÕfC+ë²,|rjƒ³Ì +žk“{»‹°Ö `#oÛfE\®΅fÊCœì[bY(H,Û¸Œ]rÂÀoÞóÊ¢`“ßÒ +^&šPƒ•w¨ýå¡Ód¨Øy2)ÆIê4Ê=°<ÅdÄj1NüŒíÌ$À´ÅÁQ€ ób¸9‚we튰‚ë‹l aàQ4³·ìÏB¦a¬Ò™{3¤+¶ƒé +6úBƒ1“BƒÄT·ùaÓÑ<eزA Dz]Ä™Ërp†¨ÕRgÏ ³=tTüö8òÕœÓ}éÍç~¥ ‡ËR!ÖÐ4âIÁСJú¼OŽû¢™´Ú÷bdôå4cœ.vãòÚ¨r½¾Ç40IŸœÛ7A–“—½O¾G©P‰4žþFoŠ\
äA Tš4Ó£wŸIA{>ÖiæB.-Ud´RW„ÆÈYËÔØÀç1Æà‚’Ø©Òøõs‚›}lŽ&¨Á‰„Ïk>}™·e¢é`H^«D81V8œ)’fÁ/-ãKP'„HF@ü4ý‚%éðà„(•=ÆEÕ® mÏï8X¨8
ÓLÅS¢.KWvÏ\M6“Ó›dbb:pނ㌠+щ˜£Þÿúú1îÿ´qãendstream endobj -2566 0 obj << +2587 0 obj << /Type /Page -/Contents 2567 0 R -/Resources 2565 0 R +/Contents 2588 0 R +/Resources 2586 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2564 0 R +/Parent 2549 0 R >> endobj -2568 0 obj << -/D [2566 0 R /XYZ 85.0394 794.5015 null] +2589 0 obj << +/D [2587 0 R /XYZ 85.0394 794.5015 null] >> endobj -2569 0 obj << -/D [2566 0 R /XYZ 85.0394 751.4437 null] +2590 0 obj << +/D [2587 0 R /XYZ 85.0394 749.2922 null] >> endobj -2565 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R >> +2591 0 obj << +/D [2587 0 R /XYZ 85.0394 666.7399 null] +>> endobj +2586 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F41 1208 0 R /F53 1303 0 R /F22 953 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2572 0 obj << -/Length 3318 +2594 0 obj << +/Length 3279 /Filter /FlateDecode >> stream -xÚ¥ZÝsÛ¸÷_¡·Ê3'† -/ñæ§D¤ÂD±Ì%ì4‹ŽH»‰$Rq*˜¤Ùwu³é€üÚªkiÔÁæv°-þ¨·Ç-ÏÖ[ž.ø‹ã~Ut<w¸ù¼úϱj;š(UW|ašeµnˆŽÞk&í¹z^,›CW@sÀ¢½¢]^Uëâ¸Ð¦sÇx»ÙB©H©DÍBDFkiïÕVe³[µ¸“ˆçÿªì©
Y1ƒeEÏc[hÔ1ɪn‹å†—I8 -)²È(™1ÉÔÙlWÕó„¨u ‘𱍵œ·ûª¬‹cYµ4Qð|s´÷,+z'³|Ê®jÉù3’!,°Áå¾:]½{ä^Ú®ÚÒxÕ¸SvMGƒ=Iþ¹^±è -Õ9‘9XÊs]VhÊÙuöŸ„ïV(@Ô…æk~~©^–Ma?Ye½»ó=ƒÜèBJ&QâÙ¼¤Î…2&ʰ«!*t©2h²ù® Ø’Ë0SУ|*EÙYÏRN´dåOÜpÃs -]´"¶`ãkp¯ú–ôUB0W.¾Õmm7¯|ªÊ/-Q¡°ðiÝÖ.( -ÏoÕ5gu
/è¹õå~<Å5ïdñi¾U§û¤ƒ}2æ=;Í
‡»ÉfÓ|¼wJëê&{Q°¸#ÈTŽkEýÝåøî¤i\àŒµMõšØÇ29ˆEÁf¡á'>„¤=(ù³*r
ü¤9LÝo[·-åyz¼‘ÍÀÀÁ€á
Í,7Åî
]¼Éí½Ùšosí¤”‘JR—E›S9¦e‰qᇶ.öíˆÛ¢,ªI5–ÊÅH s2Av€X®<v…3# -Vj-g;^zû8X—ürwÏ•¶óx_¶9Šo_rRh:€a»çl}B¥½¥ðn½-ºvTJÂî5W’ÛªàL <2×Y7ÖäÿzÒ/QõÊLåIdD’œéïÑ"¤¢öŽ˜hïx*Ò´½ppù^¿î›C÷û˜%‘f”%Ùež<ÕSƒÒ7ÃKó!S÷å ˆ¸8X9=ã‹woß¡°êµß$äß°B)m/Â^÷4“ÅéD$Þ¼(&jH(923)ºb¦çÿ -;3jè׺×t3éüÃÝ͇[*,ÐÚæmÖb´«=`¿þKK³÷¿ÜÐäziÑÅét"„À°~q[ñ™î^8é= -¡¹Œa¾@E–
ñŽaü*ÀO‘8á°ØÑ: -‚2¿Ö-¬h@ÆŒ4åÔ·;š]¾Ð w
§ÈöE´I¿ˆúÄÍ2[æl‰ÆñB3ËŠžÔ¨ÂS¨½ì+8:
¸%å˰֧¬vzx?/éYÄ(#8µkú%žaÇqí’E{‰AD¹€!}¿Õ7¦mÆÕÖ;ŸDž©À¡°§|!Bªóá©\¤ãqä0|€›vùeÑ\ +xÚ¥Z_sÛ6÷§ÐÛÉ35C +ÏÓ©êŠýd‘Lœó¼€c¿ ÑfNŸBé+rÉèE2CÖ +Uk—<åS½®Ð”ó;KuþŸL”ïV)À4*…è5??VÏ«Žê’8¡:˃ÜÑ”„LêżdÎeL”% +ã–ìp¾Ñ&nW[ÝÄË»ÂÖǬ]ÓP¦CεÛÖSQð +ªq-µl ¦úaó·;ìw]oó.hÝéD˾§‚Õ䲪q†Æ.[‘X°ð5!ѓؒ^£Jwópùîk»Txë§jý±'.T>mØÚI +Š„S$èqOU_Ñt¸"¤{¿RYsOk³B…+øíNûñóÄ *A±kN ;M˜º¦zÙº-°þëøí[X‚HNvü¥¦û|ß1æO‹UO™æ‚Jf¸„QNJÇNH
ÏŒïÍ¡çeVÌÑTﵡ‰ê…c3Âþµ/ÿk£ŽjÃrÃÓb5<ûÃz]YÌJ”Y¾³Ÿ2—70ZMVû/ÜËl͸Ã ž0¤»\89ïh8hcæ„›¢ÞÎÖ wpóƒ°UÙxiRY6=5NÂò=Ù§«ÂókuÍU]Ç{z6þ:…ÏIÍ+Y|Až¯Õé:éd×òÁÈNsÃéÁ.²ÝvŸû9W.J©C=À½É<î +×áSXv4C‰œ)m/Â÷´“PÅéD$> +·ãNÑ$H*ÉðÜ˹.¼Hò(ÁÞþ·[µ:R2v’Rú"!,LÃèàò¾,#)MÑ^Ø@pªôÌÈÐÇÈs½s)Õ4®t%®éfÒåëûÛ×wtA°@k/@·U‹Ñîîüúo=Q~½%âziÒåét *„İyvKñžî\Hô +êp +˜&å‰#„*Xþ7úmFÖ«ü>–d±òÆ5ÁÅõñs¤"! ê›@šË(æ»`TdÙEaFQ¡‰S‹–æQTÿõn¢¤¹4ò¬Ÿà–ÛuõL4¾:&Ü;œÃ!ÛÑ&†Ûy8Ë7+\l…³
pŽg¢¬*zR» +G”R•ýñF§iwMU3Ì…«]Ÿ>Ú×ôŽ"b.H$µÝ8ÅŽs×®d´‡8Óï;A’±ëêÛÓ¶îêë/%Ï„Èt”ƒo^†‰ë<Lx.— i{9$Ÿ@ƒÄÖ]~YÇ4# `$Vî&]ÒÔg=¸XP¤zôl|KWdîÂ˹¶MýpÆå`±‡A% <ñ?„Š8À,Êeœp¡9¥6ͬm"øÀKχƒNüïµ¾#ŒÉ5Nši\ÙÜwÕo!Ø\HºÜ<4Ê—ì °A1€0»^Ê +ª•†¯sÆÝ̤ê²ö*äéè鱯«‚ÚϹ¡>_¸Ã¯cS*OSR$”üø?!\ÿ~6tdi°ÀåÈ™.3YÔÚ.£ÚáÙÈ‘™¹(‚g:•á$rb#'BØÀÙ<_ªY¬pü«ð+.PfU(¼ endobj -2571 0 obj << +2593 0 obj << /Type /Page -/Contents 2572 0 R -/Resources 2570 0 R +/Contents 2594 0 R +/Resources 2592 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2564 0 R +/Parent 2597 0 R >> endobj -2573 0 obj << -/D [2571 0 R /XYZ 56.6929 794.5015 null] +2595 0 obj << +/D [2593 0 R /XYZ 56.6929 794.5015 null] >> endobj -2574 0 obj << -/D [2571 0 R /XYZ 56.6929 569.8662 null] +2596 0 obj << +/D [2593 0 R /XYZ 56.6929 507.1706 null] >> endobj -2570 0 obj << -/Font << /F37 1014 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R /F21 926 0 R >> +2592 0 obj << +/Font << /F37 1018 0 R /F22 953 0 R /F21 930 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2577 0 obj << -/Length 2771 +2600 0 obj << +/Length 2967 /Filter /FlateDecode >> stream -xÚ½Z[oÛ8~ϯ0°ë -äéËÙ§Ït±üzF‰0Z-á…f_lϤDI!BOyvyöß8agÔ~:& -©4Q\&‹3¡ÒqQB`•JFD¢tgcT(°ºÜÜ6MÛ·Ã
3AáÓ$Ytg=Z;R,Î;‹óÄHÝ_üc“ƒ¤\¶w¶¡–¿Ÿ+µ,ªMýظN)uCù®)êÊu×7®óõååêêòÍk?Míza7Õ`âýý&kó
(ZP½¼º+üüî©–ù—}ñ•yÕ¦ºÏ×Å -e³Xñ„PÊaÏŒ¥¸ÝÂÍSQYÑýô‹ì -›+¢4Ø+µT«Ú‘ôE"‰”Êx»3°OÇ14Öõv›U›²¨rrdŒ^ã‰1„imæÍ¢K5m‘ -¹ÙåY¹u||rí¡uHAdbÒ§‚£µw‡Uœñ¿L&üBõ®²mþùˆÉT’Ds5/§H5²pO_©!I"táßïrМr¹oÐ Ù5K7;õ+ÑŽs¢1ºÑŽÄD¦¨ùû¤g<Þl;þ*ºú
R±dž.™;ÉÀ†wnëí]V9‘X»Æ®M~“íËÖ½ìΙ^:[C¢¢q%&Á—Xô¥¿v׊8‡„½“TÂ^{.¹®«›1&1¸Ý,]¾¹qF^ÕîÙá_mt€§‚óç›—6ÙCè›øv]æ™ÚLû±J e`æó~Ü¡šñã@…Û¼ßå»ü‹ßã×M½Í -g\{4ÚåŠs
º±Î²©FøêËÏ!nöû€×‰äÄŠ4k]•O?\ïmcw{×µ}n\¦|fÕ“ŸìéÞ“ç_Ho®ýX´w~‰hÈ=«çIJSÁ'2l,Q$UBEƒšÒ-¤ÔPyB·ªÝª¡nŸ¾E·ÂP=ÏV¤ák¨[‘BW±¡n…Óí±¸•!©ÖÏ”vJ’T{ÒƒRÅòOªè]æ_âÓš’\‚ï5몫Ü5ÆÌJÌê…ÏøŠmxÚ0µÖÚl4 -»Ðy°ãÞyVtΦhÑ5»$ua칩w[`cÉ…Is—í\‰˜(ôg‘H[å×ÕÈ®tŠ¥úQwqÓh°SfÍ
Ñ:5q(¬Ä„/‚sš¦ÏóEð[8|ävÛ¾.*¬œPxØ‚½V€¶'sNа†þpâDI9°¥Ÿ7ýxãÌÚà _º† ÐÊ¿fë¶|Â#!ºÜf-Zö;éIl8±ºÄ7‹»»þÏ‚Mlaø! -cÇmñéÀ°J‘@lûf…36¡pHÏÓþF\"©˜r^ELjØ çÑÐ#;âš-wz+÷Rø§“54šö”EȈCùWT©)Óûw“WmÖºÓEíÁdw¢Lª‡˜ôßÞÓ2êìƒ?WÆ“Q_rN8KÕ|ÔïRMGýH…Ë»ãOÀó2í£ ß¶åç‘øÿé -¼'¿ßûlc‹^èr‡X¶åæu/>ý4î-óóì2 +xÚÅZ[oÛ8~ϯÈÛ:@ÍáU¢3h§è St›3@'Š$Bm)•ä¤Ù_¿çðfI¦ä´ì"@DQÇäá¹~‡$;¥ðÇNµ"Tdò4Í$Q”©ÓÕö„žÞ··'ÌÑ,=ѲOõëåÉ/¿‰ô4#Y“ÓË›ÞXšPÙéåúËâüãÇ7^¿ûëlÉ]üJΖŠÒÅç>Ÿ¿·}Ï2¾8ûæ^¹ 1t ]|¸øüñõùY*—oή.?ysØê³Î¨@ž¾|¹¢§kXÁï'”ˆL«ÓGx¡„e?ÝžH%ˆ’BøžÍÉÅɿÀ½¯æ§1QH¥‰â29] +ItcDF U €eª2’.‚À8‹ ÌS¡À¾OV.U¾-l«-VMÑ×ÏTJ( ?Ç'ž( ïqÂNÓ#V.î‹Uù7¥¼hMÝ]ÞÙV¾ÙØÆî~wþ{Þœ1½(qmŸ×îýòâÝÛe[ÞVÅÚý´-«[?pËûå7%z\q¥×©†¥8É8™À/àe/–ñj(#œSæ~wŸ—
šARP!ÍÀ<Á`–Œ‘L)nˆ.=
±Œ°$ÍöÄfƒá2-ͪÞnójmW?MS®xà5¯œjƒŽÛ aÿ‹Ê>Q ¦1oSV®û¡Ì-+²Ï.×,˜y^–Qv%‘`ÅŽ¤n"À\t¢¤åkl':KB|Ó9@ÊR"5ï%=ª/ñT8ãmÛv`K>ÁB9×óªÈ̃ErF(•l8õçÖéàíÅÅÚi¬v*éÐúÈbš`àw¥³ÿ,¾íʇ|STÝh(´Ž›'ô’ˆ®3ZJ¯¥Û㺞°-´ªI
&:%\=¯Á>Õ´•áf³žR¢ ðSXÙìÜ*2ù@B‘LêáäV‡R:YHµøóL©EYëÇÖ~á”Rû œ¸-ð »¾±=åã0µíuÊïÜS>Õ^ù@`Ÿj¨üþP¨ü¥
Yì•òaÀš´E”†ˆïÌ¢ž4‹ìEf!A§*ÉŽ˜EjÆ,<rÓùfkùøbÛcë‚È$K,KüœdZëxÚ_†ðËdQ +°mtbÆs?è‡ìˆ£‹J´ÔWN^³)ãUdœ¥PÈp#bPÔ‘ñ ÷ŠTûZëÉ,ȈP©ø$RZdT ‰Rú:ÏŸ÷GŸÀêmÙt~eßÞ}°Ot»²êЦ*:´ýaÒƒñwÛ™„I› +Í:DŸjÚ!ÕaP|±C0 +*e6PE¸;…z~È®-D$õiï’z÷ÀïyŸ¬ïûÞ½wàOÑ#ð›ñlñ RÏÔ³<B>Ã#ØÿÉ%4@Qé÷œ¶»Ö©ßÄŠ9Á\”©g9Hò¿p¨rOTv}ªñT/uK—w9!ŒóÊ2¡Žp¨"¬M‘,ñ~ߟ„J‡e>¶!{ñE(î‰nŒ£ÔXuÈ0ûê[Pí£0°;îgçlK³ËÚ'éŒcÏMÝln€%&í]ÞØ1QèÏ"‘¦Ê¯«ÈªtŠ¥z©;‚¸i0Ø)³æ +v,BE}œ;£iú<_¿Õaƒ#ìJãêaÙ×¥Ù‚F!àföšžÜvX}@Ãú?}jÁ‰%mä´Â–|>ÉÚ˜u–Y` +Ú}éE + ç-?fáöHËä*ɇ®EB1;åê áLˆcȈ%GSŸHöAÔGÖòë‡rm‘‹€ [a0Ä&Úðö̊̌ʥ9‘„Ïײmýà6ߥ æ“GGö-Ä*cé +Ê•¡“ƒSP.£RÿT±SÕµ»ûûMÙ;.ŠE¯ŒNiHÒÝ&&~¨ùPüÈømU»]ÁW~7a=„ˆNÊóÖ~É$ÃÁ=ërSvOg"øt\a7p¯j>®ô¨f⊧Ǖ|½ž*(˜Ÿ„”I&Õ<û*ÂÿR&©ÒܯÑtEj!<ªâ*bõøy\iaŸÝVÄ–Ý䆯‘Z‹,ÓbÞnXJ2ës6Ø?]iMē蜴9ž2’¦É‘¿O5msÊÂèúñइ"ÖD3;k ŠL;<V—Dà’Á¼¯Ëö~“?¡w¦‰ÃÐXíkæè:¶EÛæ·ºµxÑ7Ø` +_í•ÔÖƒ&j
ó# ±¿ç/ÃS ì(«U±Õ&%Œ>£CËMîËb +–†] +¡ÞÞÞoì-5ËPc?˜ˆn:]h?8òç}.¬Z;§–x0 ëU½Û¬íöúdzx×c/Æq@¡mÑt¶Ï +¡F‚Xñ'"ðH÷ûJfƒ™N¡$䣒Љƒ¬= Ü5À°£“Ňº+m(Wþˆ$U>Uà9ùýÎeSôB—ÝÄ2-;®}qé§µo¹§É4úŒäc|p7Û ÕÖãÉsK}k—¸»7K£CìáOÆÜÝ•6bemœyÀ¹âÅÂrÕ¿Õ?Yÿ¶+ÚQÌ
aehol6¾7ÀæžØÉÔeVæ½ÊIƒG¼ø¢ëþB¯L–LEW(™ˆóL¡œY"Ƭ+¡‰Òàœ‡¼ÿ•³¥endstream endobj -2576 0 obj << +2599 0 obj << /Type /Page -/Contents 2577 0 R -/Resources 2575 0 R +/Contents 2600 0 R +/Resources 2598 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2564 0 R +/Parent 2597 0 R >> endobj -2578 0 obj << -/D [2576 0 R /XYZ 85.0394 794.5015 null] +2601 0 obj << +/D [2599 0 R /XYZ 85.0394 794.5015 null] >> endobj -2579 0 obj << -/D [2576 0 R /XYZ 85.0394 161.4147 null] +2602 0 obj << +/D [2599 0 R /XYZ 85.0394 107.2827 null] >> endobj -2575 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R >> +2598 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F53 1303 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2582 0 obj << -/Length 1990 +2605 0 obj << +/Length 1792 /Filter /FlateDecode >> stream -xÚíYÝsÛ¸×_¡™¾Hs&Œ~€/Ql'õ]⦑®ÓN.4 IœP¤BRvôßßÒ$EÉi›ÇŽgŒ¸øa±»Ø]@lJáM=Ÿø!§Aè2oï&tºoï&Ìò8
“Óåz³š\¿Á4$¡ÏýéjÝÁ’„Jɦ«äóì
a.™}z¸½™;Ü•¡;[|üx÷p{ÿ/è{˜€ƒÒÙ‡ÅÃï‹÷8öqòÙâÝÝrþeõëänÕŠÓ™Q¡eù6ùü…Nü× %"”Þô:”°0äÓÝÄõñ\!š‘l²œü£ì|5SGUÀ(áÂç#:pÙ˜¼ø‚£ƒ¿ÎvW©<Ñ›¹~Ëyg -:VÒð.òãúb¶À¦œ39SqaÚ¤Òƒ|¶†®ùZdɶ¨j¢¾G»}¦H\ìðC„󰓨LÕ*%»¾„Ë“wV⃕ðS»P®žÇzNëÞ”Þc$ô<nöqÿÍ% W°€æFöÓªe4" -Fg«ÂAX6;:æ…ÔcÛ¨°+`“DG$V+ëRPJߥ»àäI£Œ ]z¦ìÛå/hü:쓨Vý-³®™÷¥*Õ7Ëþ=)vQšÛ^Í£êiqDwÈ®dhPÁóÅîL“7‹wÖéŠ:±Üù5_ñÑ 4ÌhŸÀ‡½{àÿo‡´JkóÅ›iÕ¦uZäȸQu…TÝÌÕ»@ÞJ•O€Ÿl㊿63¢anã×úCÔíäv¢õ¶â`ˆØ.qrŒ4k±¶8úÌ™•Ž{5¦s¸'Gµ¯}V¸³{
æ…=a†•ñ -zqó0ÜØVÓöTUãÀ:J³ÊÀzVÂL<(²ÑPI¡š±ÂNUßÓª¶‹E(:ÃÙ]I8‚µm+l›£èR¦nFø¾U.X» -<)-š!l¨§Z×VÅ9¶YG™Sä™å܉:«SNÀ_Ój‡ë‚^.½£ßð`À6;Œ$°MP·•LÉ%¡dÂ2·8á‚„Œº–ió -ùE;è/#@.wìGÅ)!<`E2À‘¾ç½&P#ñ¨sQI_¸hŽ–ëÔpßðݾA£J9¾‹.¡ò¸0™ÉôLyíß>,nœ·ÞÀÓbŒ{¡õÀcsŠó -JS7*75k[¢ŽùšASÂ}Å׺\ç}åú¿¯]òµ}™>ÙK@Ïß'Txîe“´\§6éû›€€Æ|Ù7Jëo,ìú›îiÓí‹¿éžñ7MôüM<Úüm˜‚&áÀEؤbjyw‡®»x¿ü»Õí_¸G|Ê=ÃŽõX(gp¤ü‘Û˜5€jÏjûjÐ#žôËРJƒŸÇÁG&œt½ŸgjÙŸ(.üþk8ÿ.ìàà¶ÏL”HZ¿»Â'€¼ÒÑEV×'ÍúàzÚ™
úeäàÆ´ï¾o~·¿ôv½‹ðÏVs6ÃÂ:ÎC†·œ°yFIyåuf?VuaÇ‘ÉÔÐÖ -3z¨01éU·£7ˆÛåÊV:éc•Â(mj©¸<îëbSFûmÛT·W :ÔxÕ•}ŠÉmRÛ5¯0ñ6Ê7ƒ’j}¨/—åæu'S㪎á\"\¿1œv!ÈUíã"Ä0JajžÄͦ œ†óC›NL*EÓšÉøDÄyp¦|Æ]ym¤,2[&Öi–ÖÇð²å1/öo5lHúbHHf”å’ÃúbŽï \x™´L/ûÖï>ŸGܬҙ#HÊ&}ê7•Xé׸R¿æ¾˜IA| †Bö/
r<‚Üϸúœ§gfjÖ÷Hà wûõUX8›ç0Ý€HNƒ!fõ*æË]j€¦æÜeCÄý"¸tˆ+½ó·/Êz«%1þgKG–èël¤6f2Û -9õáz‰Þ¯½¢s¨¤CwZ<çÐ8aO,rpv -“.MF6
W>á ¿¿é¸Øí"|ŸûA +xÚíX_oÛ6÷§0°Rõçe€›8YÖ&ËjØÐöA‘èX¨,¹¦œ4ß~G¥H²ìtkæ‘<w?ÞɆ~l(<â…N8ôC—ÊÄ0^èðæ.ÌòL*¦I“ëíbpzÁýaHBÏñ†‹eCV@h°á"ù4zK˜KÆ ‚Ž>ÜœŸ'Ž„îhz{;»9¿úú‚pP:ºžÞ|œ¾Ç±Ûq茦—³ùøËâ÷ÁlQ«ÓT™Q®uù6øô…Ðü÷%<Äð:”°0t†ë+8.çÕH6˜þ¬6fͧ½&`”8Üszlà²>¸>ñ|mðËxâÁîrµÛ$Q)õ†@ê„1 +á–_‘Å2:‘™¬è"KV…*‰ü7™$q±Æ‰i[;$,J«„|ì—x.¥•PÓ0ß!Ì#Œ°#+™'zúôÂqv +Íš6[¹•ß,û÷¤XGin{iü5Ö²eÆÃø3,ûdtqyv3½žYØk¹çºŸE):È÷`¯Æ!øÿm—ª´43b¤m›–i‘#ã½,ReõÞò*¹} +5ÂXÕ²+ÛÌ +¸½ž›0‰wt'µ34… ӱܫb9ŒžßÌç³3¤SËi,¤ Gp”>ˆº²¬xDF-Õž^EÒÊø0¿º<©×x7ûÛ +È7zÙvÎ&ÑÙÆ 6¬·h‚u‰.eôgWï{jF|Ƽ¡Ë)€¨QiÒäÂ%è)Qj.½ê©,ãÓ-Ä—ì¾ì*À„C ðãÔ\û*´â.>áLxmvªÊ‡&Zê,šÈ¼L—6ã%rí²ÒæP.hfXŒ‡!qXý¨Åš\‡-Vs‹=DÛÓí.?Õš$§ +JHä«|êªâ0G»—×¥æÚW¦e;‡ù„†Ìmk£0‰:w̵ +…FØ#)}“ÌͽÆM‰úÝÂŒîf$½êª÷-ã|¾°%Nz·¶ÝJ(Ѝxû´)‹ûm´Y¥±Íq ªC‰§Nì»Ln³Ùºz’‰WQ~ß©¥–»r÷|q®žz2 !N5çîzµãq<.ê÷Sa”§yW›‚hûlqS§Ÿ½Ç
¨®}7Ĭ ¿Æ#ÇñѸ"/šEfÄ2ÍÒòéÐC,¤ýzÚ“hÈŸ~¤}~„vácRw´UJïœyî~EaŸs÷uÿ¡©Ÿendstream endobj -2581 0 obj << +2604 0 obj << /Type /Page -/Contents 2582 0 R -/Resources 2580 0 R +/Contents 2605 0 R +/Resources 2603 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2564 0 R +/Parent 2597 0 R >> endobj -2583 0 obj << -/D [2581 0 R /XYZ 56.6929 794.5015 null] ->> endobj -2584 0 obj << -/D [2581 0 R /XYZ 56.6929 516.9709 null] +2606 0 obj << +/D [2604 0 R /XYZ 56.6929 794.5015 null] >> endobj -2585 0 obj << -/D [2581 0 R /XYZ 56.6929 351.7832 null] +2607 0 obj << +/D [2604 0 R /XYZ 56.6929 462.0323 null] >> endobj -2586 0 obj << -/D [2581 0 R /XYZ 56.6929 277.6094 null] +2608 0 obj << +/D [2604 0 R /XYZ 56.6929 288.682 null] >> endobj -886 0 obj << -/D [2581 0 R /XYZ 56.6929 227.2683 null] +2609 0 obj << +/D [2604 0 R /XYZ 56.6929 209.4795 null] >> endobj -2587 0 obj << -/D [2581 0 R /XYZ 56.6929 194.5015 null] +890 0 obj << +/D [2604 0 R /XYZ 56.6929 155.6441 null] >> endobj -2588 0 obj << -/D [2581 0 R /XYZ 56.6929 159.1835 null] +2610 0 obj << +/D [2604 0 R /XYZ 56.6929 121.3428 null] >> endobj -2589 0 obj << -/D [2581 0 R /XYZ 56.6929 94.0431 null] +2611 0 obj << +/D [2604 0 R /XYZ 56.6929 84.4903 null] >> endobj -2580 0 obj << -/Font << /F37 1014 0 R /F41 1203 0 R /F22 949 0 R /F21 926 0 R /F48 1223 0 R /F14 952 0 R /F40 1146 0 R /F53 1298 0 R >> +2603 0 obj << +/Font << /F37 1018 0 R /F41 1208 0 R /F22 953 0 R /F21 930 0 R /F48 1228 0 R /F14 956 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2592 0 obj << -/Length 3155 +2614 0 obj << +/Length 3314 /Filter /FlateDecode >> stream -xÚZÝsã6Ï_á·:3k–ß"·»Û^:Ýí^“ÞÜL¯Š-Çš•¥Ô’“Ë -”å«ß~§‹
Hþã%µx†J˜µ|±¿’J%…ˆ”êêöêŸý„ɨ{uNJ¢ÏftÀÙ‚1b•â#%(K´àÂ)áý‡Ûw¿Ü|¾»ùù~{gÐ]¬¸!2Ü1êÍ:pñ„‹s¢˜4ÀLë¦î×Ì,›ª½Qµìv…¿i‹CÞ•M·þšûKï_[žŠÃu¦– lnÕò¦G˜¡-6E2ó©Ô\ZP—òÌËÌè -„ïn>½Çu@c–¥(_¬zå£îp†¢*ò¶h᫤0Ë›íŒðŠ#yþœÆ&*¼D! -Å;‰Y•¹™™FPbˆîâLUGñ%è±zñw©‘Ù‘ò0¿ÕD=Q_^=4Pá¦ÖÂ9^ÿññí»ÕÇ÷ -W´lù¼+×;?rl‹À“ûK»ó&ˆk»çbíŸ;ÿŒá¯E§(jÇ*]„D‚·)¸‰6ÒÔ°cZÚåÝ.J”ĨÖ}ûÛÝíÍ«¶{©ÜTfªGÛb -Ï‘ú?”ò‡c”ÃR|DæA@±Ü]qØûƒÈ»æÙÓý¸›¨Ë×] î[@Jô„ÔØqÒ5¸¿ö5÷Nê=9|ÆØ‘ãÙ€ÛînÊ`*p|«0xDËŒZLÀX¤„)nÜd?;Ät{ -ूèÆYfæ1k`Z¥\¯bÖž×]Ý{á`;“0Ɉ±*†Ò¶9ÖÅ*ßlEÛN%d°ºæÔ^±çš‘qŒ¢ÑH#!m*™Û¢DJÎJ9™ÜF•ÅóÁz,®Ü½æ¹.ü -©!GØ–«mY'ª¡\ŠËòõ\3ŽTkB)˜ÑHÂyÅ”@ƒÍÏŠ8™WgÀ›ÉÄ:™
–ÄìLŒDbŒ‘xV‘Õ?à¾3+†×7Å6#{ã–#pEag2¥ü¶èÖßb0'(ïœ ¢æý¼1HMtfÄ+Æp]0†ÈåŒáË«âñ¼%HI2¥äeáz®éF– -к5,Êü\"܃ƒÂÃ3¸Ây»ñw.:Â5Ík¢ÓŒe&oxå±râ}¹g£L•±¯õuËd]›¦‚ÔM•ˆÔÙ$q(þ[¶ÝY‡ -ËGnR,ðàB}•h.)D¤½Ué2Oxò"Ee’šR±&„ek@Û5.Õ3<$àŽˆi’‚k('LNì?D²Õ -~2)^Q!$ZdƒËO³šd14†ª$“ÄPuÞŸ…$T^9@S®þ¹œ??¾z€baãÄ›9ÖÕe¹"ÓŒ\££“CÉõD°Û¢žØE”ëêZñ¦‚["²¾t3pwMIcœŽÎÄ$\áÕÝÙo‚Áô¢t}=z¦`€Ë¾ ¯Ã©wv{)ÃsŒ½²½ ×…í\n{ÿ5]ÒBà¤8/-™f–íŒRcÇK~¨‡ê)xæ}=²j 9«®-€I˜î¢R®óJ蹜^æm\1o¦VØ„ƒ9ã#¹þR¦Ÿñô#&¢$ züåæÔ-1šñËŠë¹f47ÚKp>#¹¯ú«Û<›,pÓã°‘·) Ú¤ê¼69¼È„úû´ÙÏ8£Ít’Q.æÔy≲:âíwëýD§¡ˆ>´“Ù8ĉ`6;¯I$¤òïSM?ã+ª0Ê„ùóª uPøðûh¡‚ˆ$„þZÇ#I¡I Õp¨#DÎŒåã*rÊs*-Œ»G¨QyÛ=w‡Pá]3%ÅÇÆÃåk5x3‰Õj¹|—?„ŸòªÜôǵ -'
v×ëÏæ•à!`Ñéf«ÓœŸßl¬dia²W`¾B˜¿¼ÙýŒ«tÊÓÍVpÖiž©aå³›
x
úär¨xz,Ö%Z|±y3×bÄ(÷-F9À%†pnœöà@!Å£ùâK_n£®¶Ž—_âM„|xÛW/) +!>|t—Žxï߃)•½ mF€bÚ¿ñ ƒôù U¡*̯Ƙ_†ô#v}‹¶ðvjû1 ]§qû¬ÏæW>ÛÆ~ZÀ6äþV%ݪ¡dZÍ5rPP××ËOË‘©í›Ö&vÛíL„Ñâz†./Ý‚0’¶©ptðãÀ“(ªœ@)< -Ñ„©<4DÆ“&夵sŠÎfÁdì -D3À†¥`Ôÿ0`R‡½xÛ&-ÆbºînvùS =uqÈñÛÐeÈXž!ÄŲ*D™¶%}«€5U¾w/ÉX®rñXn‰å‰Î“ÝÎ!ùV ¦-J¼™Ët˜ÂzæŸHßĵ‹‰l7ÉzÂÛ;¬K×y?ä—btY¯Ãkóú*óJ -V23çô ¦QÏ|$k”õµ—¯ÊÖðxjŽÝLCl&þ+]k'ŒìŠê1´ýQ2ÛÝ
œšØäñûùÓÍÇ›;÷ ü×7|þßßÈ$ߊH©U¾Ýèç}«`ÚîùGšO²!3›(kbyßà;óÓ‹¿‘“ŸÆ0Æb[„c-³‰Ôøï¢×aYÑú -×ä®$áúœBI 1”ÁÈ(6q;Æðì3Ç‚ÎLÉ\YÀ—J_xòZ€øØÎRæo€wa¾Õ0¡;ïGr!„¬ZÄU/A;ÞçɃ+Àç[¸tuö˜À_ü¡¸-v:Òý»-ž†XXøM‹®\§Ø‡ÚXYWEØ ¡}6÷Ã8ŒóµÚ»ã_þÑÜð£@‰=DÃçó)A!%àA(TÓìÆŸ×Êþ?.Ý
lendstream +xÚ]sã6î=¿ÂoufÖ\~K|Lw·½tn·{MÚ¹™^[Ž5kK®%'— +#g™‘DQ¦fËÝ=ÂÜWÌã,Ò"Æúþþêí"›b4׳ûuD+'4ÏÙì~õûüæóçŸÞßþûzÁO®ŠÒùÇ›O¿ÞüÓÁ>_>¿ùñÃ<ÊÜH@bñ4ÿòéý»ë?îºúpß³³Ì¨@^þ¼úý:[ç?]Q"L®fÏð@ 3†ÏvWR ¢¤²½º»úWO0šµ¯N‰@‰œ¨œg2àlÆ1JñDÊ-¸°B¸{©›}[µãhàG +ä;÷ÂþPÐ㹟vƒæigÛ#¬rxñäÖN"™$\Pâî>§pÅÁ¡¢y[ÎU¯Ã{rà G/žŠj[<lýãÀÿ»:xX¼2ä,#Fðü¢ÈaŒ‰^Éw»c]-‹UQdÊG–S‘i¯Ðò +mÇM?*ÜÏý»Ï,§.—]uÍæM
R—4ƒ7ëUU?:ÌA4öõ#¬Tw–‰•W=Ïd"è +r¾ª«®ØâðT=ÖEwtziURŠùmí0´ky<8Œºs3À}FùÛ8žkùªKªƒ@c¯Y©!AËQ˜« 2‚cz?huUö%ÈqûâF±–™Dxè¼áj"s-RÃ-¶ÍD¸ÒZXkÃß|¼y·øø^ኆ͟7ÕrãfŽméq +÷ÓnœâÚö¹\ºçÎ=£?Äß²$ÊÚ¢Jë"àt +AGšNLK3¿ßŽ"'eïj«ØÑFîïn\´ÝËÖ’ÊÇ"°°5z +ѧVò¥„4XÈUHB +{å±pµrû>ªç²tHÈùé`úWXä9=f„0²$\Qy.SEúxÜvÕ>„UÝvE½,Û8Øðs{Ôÿ®l‚éÛ³4Þ®³·»umkï¤{_ÇF~ûùIŽ" + ;“Ó& +ª¡\ŠËüõX& +ª5¡Ô(ápZA1#Ð ógÒΠ+«G–(Öwp¡¾Æ +Éõˆ±»²ž,Ø…(×VµlÜ—îS™ÈúÂÍ€•žš&’?=\‘Jغ«™ï<^õw}9z¢\€Ë¾ñ¯Ãwöx5' +«à—7ºp¼Ëïoã%
8N +Žóâ’ibÉää(„ɹI—üPÅS°Ì‡&Xä¶y|„dä¼'Z õŠ"¬BXV/Ó:.Ÿ7Q©aLÂÅœñ„¯o*ÕôO71b
BªÓM¸&Mjƒ†äšñË‚ë±&$—œ¥ØP骿ÚÃӡǃ>K»•¤IÕ…ž…x‘ õ÷I³§8!Í$ƒè$£\L‰ó$ˆ'Êèo¯YïF8uí +‡oš)‰Q`¬\X \#_æ;ˆïŠG¿âS±VýuüMƒMÁå²Ä»y!¸‹ +aÑD¿Ú(Â4çç[qȘEþ.Gmrñ͇ÝS\Ä$O[Á]§y¦†•Ï6i€›³Q“ÜF}‚§}¹¬PãËÕ›©#z¹¯è0Ê!\rÑÒF²R¼1š/.±tå6j+ëøcóK„ÇxüøëÂKʆ•&>ÚÆÇ€K܇ҵĀFeo|—1‡€BÂP—0H—廡2ŠùUóKŸ~„¦oÙöNOMß!ÈCÏ)mžõÙüÂeÛØM°ñ¹¿QQ¯jèÄzžSmdÔ¶ÅõüScsdjúžušífÂÂlâ:„®¨ì‚07©pv°c’(˜ªœ +VÊÓ#
¢;\ƒnÔ{€l²¾øòUéÞOͱ›hè§zâvi{;~fSn÷¾3èî’Éö8ipá4O»<ÿ¼ýx{o¿¿Ã}ÇçÿýF&Ú¯"ÅjùRvÉç}¯`ÜíL$NŒGéP>™)kbxßá;óiŒÁÅèÓÆXè‹pð´&g,Õþû`wXX4΋ÂoômÅÈú`ø}.< 󀨃€àÌ`&ñNܤQ<;×̱¤3Q4W"L¥/…x‚ÀÕ«ðÛ0ûö endobj -2591 0 obj << +2613 0 obj << /Type /Page -/Contents 2592 0 R -/Resources 2590 0 R +/Contents 2614 0 R +/Resources 2612 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2564 0 R +/Parent 2597 0 R >> endobj -2593 0 obj << -/D [2591 0 R /XYZ 85.0394 794.5015 null] +2615 0 obj << +/D [2613 0 R /XYZ 85.0394 794.5015 null] >> endobj -2594 0 obj << -/D [2591 0 R /XYZ 85.0394 751.281 null] +2616 0 obj << +/D [2613 0 R /XYZ 85.0394 749.4437 null] >> endobj -2595 0 obj << -/D [2591 0 R /XYZ 85.0394 555.2948 null] +2617 0 obj << +/D [2613 0 R /XYZ 85.0394 680.7174 null] >> endobj -2596 0 obj << -/D [2591 0 R /XYZ 85.0394 126.1169 null] +2618 0 obj << +/D [2613 0 R /XYZ 85.0394 501.4297 null] >> endobj -2590 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F55 1306 0 R /F53 1298 0 R /F41 1203 0 R >> +2619 0 obj << +/D [2613 0 R /XYZ 85.0394 100.9714 null] +>> endobj +2612 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F41 1208 0 R /F53 1303 0 R /F22 953 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2599 0 obj << -/Length 2726 +2622 0 obj << +/Length 2462 /Filter /FlateDecode >> stream -xÚ¥Y_oÜF÷§Xàºn³Êü×(÷ä8Në¢qr±ÐôAÞ•m¡»’»ÒÚõ·?rÈÑJ²6Nq0àq(‡ääŒäLÀŸœY—¸Le³43‰ÒΖ›#1»…¹Ÿ$ó,"Ó¢Ïõöêèõ{β$sÊÍ®nz²|"¼—³«Õïó·‰´ÉñW¿¾~ouY³ -@®ÏïN“Óï‰s V¥i’J1ëɧOgïÎÿ{¼PV€øã…bþáäâËÉoDûtœ©ùÉÏg—(ìèìªÛH³RhÜÅ_G¿ÿ!f+Øó¯G"Ñ™·³Gx‰Ì25Û«k´Ž”õÑåÑ:½Ùðê¤ñ¤H”vjÂzJΤL2kÕÀ|6KœV:ìöòìŒ6uòÛåG2ŽR=ãˆÌÂâÖömµZ&˺ºù*¬°ðO¾¢×qb·E…s¾7Wå›b5Iœ’zÌA%#úþò*ÌKþz{~ñŽ^Ìx'«MY•M»ÍÛzK¤ÏÅM±=–~^TË‚Hòj—¯'v,O”sŽÅsl
M¹0V „¬v‰4ÆSè|¹úåãç—x^µÅ¶*ZÒäò©i‹MC§uÕÔÛ¶ÜmöëšD§XŽ‘‰Ê|úlßçoÒ”7йlJà"ò.´M¤$H]€kX®m"K¤ÖvR®"UyõU©t%4‚¿ -¡nwॲ®ˆˆ”u1ið(‘íQð>Uõ}S6cj™¤ÞéÄ$m¦p#A[e1ˆ¦A)A:ôDL
L!Õq0ø~#b1ïÎ.O?Ÿº:ÿxqÀâSà›²x -a!¢ÅÁ$àP9oï -L˜gÙÜá ÕíaAA¨ház¡4±¶‰I#Ä:uû• ž¸\F>šbû -¶¡õš&wm¹.Û§cJÀàÂI5¿º£}‰žær~—31GÕÀbÒCfìlÑ™ÔjÊM¹Îq1eçŽý|·lw”ˆšW+ž~ªÚüo·õ„_¤€gxËûT6å˜,ISë»l²°ÚÎ/Û _TmÃK÷õ€µ®›"(cæeEÔëm¾,š‘¦F ×,~~,Û»h‘8š°Ù9à,CÃoJHÖëº}Œ6óÓu¾kPº‚ʆ+"Wp!šž¶8ÑiÖMÍlT~¿SŽW¹Šw
¦ÞÀ´¬7(™õjŸÖQ‹¸îFŒ|¹»¿‡Y¬Þt³²¤¤pJ¹$Èzf‘bþúG¢ýøzò…Ÿ~šxå5ÑÚš~49êú]—U1Fº}©Ê¿ŸKû×w -{Žÿ¾¢/e܃eü|³[Þá(Ãð¿_#ÖÜÞåÕÄj¤ßÉøgAEÆî…Å":q-+ ¶wäQžØÕz=¯ˆ¯¾ÇÕŒ¸^ÑdÄ8„ƒÑNŽâ‚ó YŸ_¤Ç<Z<§Ÿ?‹§_2¸¥ øÃ†Šú>·’1I&”d¾žFZ¤!áå%îŸÐdÏ4^RÁ™DXgYöª¸ÉwëvÁx®ŠwIjlì†iZd
nêõº~‰ž®Ÿè—Ò8*î |A¿mŒÙ¾©ÒÁjEnn"`ˆ‡ úáì¯0 ËyP75!/*3<ÌÞÕMK£Çr½¦Ñ5¿¹ãäswEÅrküù\]`¥Þ–ñ…œIy|jßîØC@‰©_!ÙK¨ßSqoÆp¤JŸ*?ò#†çs©.K„²nìDåyY߉@
NT;Ñ8{Å“W<Áéw%¦Œ¾Ìr)1@Çró©ýd2‘i×=OoDA+LÖÆ‚‚Ë@‡™Z< -öƒ‹ð¹€¦|~ŽŠ;þ~¾8$A8CéýÚåjbu
g*›Ù~«ä²ù=u%Då*숡SrÑ‚°,5°HÂÂEuȘ¿±ñÉ<×f`˜ÔPI8k -›¾d'Œûd’²ü¼‹Ë„þÀ‘'áq“·Ë;6&ø(ñNú¡1Ëêv*¡À‘Zu9”F4œ–Ñ`ëFj°RÐÏËÇô@ÁåED²g$ûÉžJ#RòØâm ¢‰B¶–hH?ð:ì~"Ó'e ¶tÆÎ§rˆÛæR6åØ4= -dà«yó›áµ_~Lz¥N„ëî;ii>ÉÆ^)êÊðï%ÖeÈ:ÔuG†aæ$Jà8ºf&ÎW(¯jÚ"ç‡`ñØÄ‡U"„aŒŽ §o=?˃ۆ«‘ËáÜ ò¥Sæ4"ŠÅú
UJx¸¤Ú=,#C¯À¼SÆtÐü«ØÝ¾XB¼M2Ù™4Þ@Eb/ÜÅ÷wÕ¡o»S@Í -÷*@ÕÈM–|B Ñ)”g5ê“®ùÓ{ªw¡Bö†¯ÈS†T]ú×\]ð•~uA–QŒXñêÈÊ.à,eÔ·Ïø-%óÏï(ŒÀм
78W‹Ðæ‹&H¡ƒáÍS(H b-L,9H¥ä#t -è¦P%¾ßM½§¼@‚j„쎃ö±ŽÇÄ$ufÐñÚä¹!°Ùò:†e¾¾·°›Íô5º”º»GÛ}±¾hNEZ+¼¤Ý>Å>&öBÃãëôZ&ߟ]@Jß3…nN‡væßØ×™ùr·åoYíú‰&ëŠFjþˇ“ÓŇw–ïÉ2Ý—ÝSõvû{ÔîfÒŽcfA*žYšÓcS,I–È]J„q×+ô/ºp‚;–7Å¢‚5ë7)A¶ÏÛ÷‡fê>¸ï‹x¹Ça…—¯Wû%ÃÅw60.›x/oÞ•Åê]h!pü×NYcS~¡%Ưµ_”D÷èÿþ(¼ÿ\nÒD{¯öß{‡}†ÅÛ•BKI§ž©??×ý; -±endstream +xÚ¥Y_sÛ8ϧðÌ=œ³[³ü#RdßÒ4ÝËÎnÚkÒ™›ÙÝÅVbÍÊRÎ’“Í·_€ eYfšÞÜt¦¦@ü +;o·ô¹)»®¸/;úZ¶»zEÃÛ2ê²ð+ÊíižÍƒ¤˜ ÁœÖwå³…oiÚíâ‚Vžýrý)pUfp›T@Döm³Z²eÛÜýÎ5×ðŸxCËqb÷eƒsv4×›r•$&E¤3‡‡•Œsð%ÇûË«´Ð…“¬6USuý¶è£Ý¾”w%™¥YKýZ4;°òñ‰…±Lc‚ø¤ ™æÈäÈ”™s§_oþõéËëV¼lúrÛ”=irýÜõå&øô¼mºvÛW»Í~ߌ©ÌD×eŠI®ö@#¶ÌŽÙ2Ál–çáƒÏR‘w¡4s8À%Wàœ XLŽ_9—IÁ“ЖÖF +{%Xn´æÌ˜Ì¥`*@[©1ŒÒ†$ºz/ÂCøÀ$Â×?‚_<Á‡‹ëó/—Ÿo.?]½`ñüRÏ™t<ZLó~]â anœ
æöw +WBF/57‘JùGÍnsëãep¨ßì&R"€4P†éùÚ°Áå]êÝ yéŠq3<œ}ÓÒ|â¦^JêÊð&êÊgêº#Ãaæð$Jà8º
L!_¡¼¦ëË"|x‹Ç&Þï!ctŒ¿}«ùEáÝv¸¹î
"ã°Q¾”`ÊâÏ’FDÑX¿¡j@ ÷¯4@@»ûm„ïoʘš»ÛWKˆÕ̉Á¤ñ òP$öÂC|W½àŠY=ÜÚ ðØ9¾4ÈܤÉ'•Cy–ö$ñï,ÁS£²wáI<…aHÕeüüª.Wd™Äˆæß¨#©?rA9Æ¿L%ž³ùðýÿlÿ§Á,gÊZ™þÛ–Ì5ÞÄLT +'Œ9R=þ©ìX÷¿òzWqendstream endobj -2598 0 obj << +2621 0 obj << /Type /Page -/Contents 2599 0 R -/Resources 2597 0 R +/Contents 2622 0 R +/Resources 2620 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2607 0 R +/Parent 2597 0 R >> endobj -2600 0 obj << -/D [2598 0 R /XYZ 56.6929 794.5015 null] +2623 0 obj << +/D [2621 0 R /XYZ 56.6929 794.5015 null] >> endobj -2601 0 obj << -/D [2598 0 R /XYZ 56.6929 752.2635 null] +2624 0 obj << +/D [2621 0 R /XYZ 56.6929 713.9465 null] >> endobj -2602 0 obj << -/D [2598 0 R /XYZ 56.6929 690.7232 null] +2625 0 obj << +/D [2621 0 R /XYZ 56.6929 649.6644 null] >> endobj -890 0 obj << -/D [2598 0 R /XYZ 56.6929 652.8084 null] +894 0 obj << +/D [2621 0 R /XYZ 56.6929 609.8446 null] >> endobj -2603 0 obj << -/D [2598 0 R /XYZ 56.6929 620.2487 null] +2626 0 obj << +/D [2621 0 R /XYZ 56.6929 576.4481 null] >> endobj -2604 0 obj << -/D [2598 0 R /XYZ 56.6929 585.1376 null] +2627 0 obj << +/D [2621 0 R /XYZ 56.6929 540.5004 null] >> endobj -2605 0 obj << -/D [2598 0 R /XYZ 56.6929 520.6753 null] +2628 0 obj << +/D [2621 0 R /XYZ 56.6929 473.2964 null] >> endobj -2606 0 obj << -/D [2598 0 R /XYZ 56.6929 462.0998 null] +2629 0 obj << +/D [2621 0 R /XYZ 56.6929 411.9792 null] >> endobj -2597 0 obj << -/Font << /F37 1014 0 R /F53 1298 0 R /F21 926 0 R /F22 949 0 R /F40 1146 0 R /F48 1223 0 R /F41 1203 0 R >> +2620 0 obj << +/Font << /F37 1018 0 R /F53 1303 0 R /F22 953 0 R /F21 930 0 R /F39 1151 0 R /F48 1228 0 R /F41 1208 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2610 0 obj << -/Length 1783 +2632 0 obj << +/Length 2068 /Filter /FlateDecode >> stream -xÚ¥XKsÔ8¾Ï¯˜ÊeZ,ô´¥¥8’@€„ -‰ëäªAj[#å"«²eÒz íÂï>Oš,Œ$R›v™W8ž×K/á÷4Ùõ¶pHRsk®<::ÙGfƒ„KÇX_,“ω³‹’Ã9)®ý9-«tZ¶iد„Œ£w³ºšƒù^ß:qB)å^Ð,ï¹ÔÁyf¿q°j²)6 -ö»‰‚]O¸Lª´.qü)»ÚeŒ÷pjƒ`9m~t„ÁEæ4^YfÕ¬N³C'\Séáñz’¢ñ~ªêuåÍkÆtRM¤¨2ÿ¥‚0Ñ+½çC¬¡ÊÞûÐECÓ.t@q¡ƒï t°žxöîúØIw}ìú],q¥s -†yu¹jɈc<RD™èN±”0öŒi5(¹ª[ÔÝ,òK$óv#¼¢vÕxËW-D0¨F4ø€`YÊ,>É—$/’ó"éÍ/û-“ê -GÍUÓfe)!
ÞdžÑe¼Ý;>}qà™³Y›w2\†9jR^v -lÃuÄI‘WYs9Kf‹Møú3œC8B‘ˆKåèô:N9´PDGJ»ÝŒ¦¾´v®Šï?.0è{’fódU´a“-¿@I -þ¢ž%Å¢nÚn#ÝŽd·ÅfÚùsäG5}ï…I¹ã©Þh¨öV«êXß®šÝQu›5íp~›n.ý¦^3ÝæJÒt™5MÖŸÀ˜‡—õÒ”Pâ¿ÿ¼'Τh[½HŠ‹z Éù,í‘/Êd–©uÆ>ZJƒèðxþ·/›o²¸:çòåQÆó'ßL1gEñìåïÅ·_ðÁGõg<ˆîê€;¶×âé‘>=_›wë·ëñ×»ç«WÞÁêk•+ìSO"EÖ#Wî»’!Lœ×_2¤e_ÝÝ©—ðöÄŒÉÁ#:¢‘s¢•QžiÊ=¿BU>9‘5©h‰¤ýwVy®Á¥´ä° …ƒ C.¬aCY˜@í¾Ëîú§ŸqFTLÍöIøëi_dâªGð¤-‹œããd¿Ng[Ö½w -¹À‚Ðz$øðAù1‰cM´ì@¦&°Ó4áîW5¢QIh†Äíõ!Žãkõ¤C¼+À*^AÄM5`„Äv¾+>QvÁ>Q¥x(¢Ë7 ùbÀúòŽ• - ]°Sd”F+¯Œ]°UÐ~×ämVy±õP|l{ýkÚ=Ÿ‚p8ó팬W몶5*T–†5¢ökaŒ’ØtâkÔõ›N‰ä}:Øê3"Ç¡âŽÇÖœe]4cq…« +xÚX[sÛ¶~×¯Ðø¥ôœÅ• +BÔ]eÕr³¿oóºÂ…ƒP?]Õ› }¨ÓŠ0Ù(~S¥Ë©3D˜Ú%‚ma¤e´Ün6§Ì€ +m±Çź¾º<{º¸|¦ÐQÜ*kÁÇžÊÁ.ã¨ÙÞß×›6Ká +Ù‰*ól*ý¦‚‹#T¹Ë`æèºØ¢ë4í\ï:ø¸Ö“ÀÞ‡}laë+4±Ä•Î(æÕý¶%†ñXeãOò¥„q`LkW?äªnqïfß# o7Âu«6h¾mÑ!‚$°|ªŽAR&o“¼HúíÊ@™Tûëû.”&Ôƒ×Y`l»Âpþæìòú›óÀœ-¥Äg˜§&å}·KbGœy•5GÌY²\Ü׫¼r%C(Âö8ý»m'.,EL¬pÇð-Çó¯}‰ƒ½b@@xÇt¢GnI³U²-ÚE“mÞBIZ0üE½LŠuÝ´§*h÷‰Ë,(´³æÈ¿˜Üé¯^˜dÄjE„}ãá¶Ñšõø`Àÿok¨Óípþù½¹õ;9)IÓMÖ4YSºGJ(ñ‡ýsK¼JñÐzp +L»¼(P®‡[°UHN$"¶G´y¯Uà¥#ÿL¡¡àšPø1˜0äÂ6”…‰ +Ö
~6ÈG¢ endobj -2609 0 obj << +2631 0 obj << /Type /Page -/Contents 2610 0 R -/Resources 2608 0 R +/Contents 2632 0 R +/Resources 2630 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2607 0 R +/Parent 2597 0 R >> endobj -2611 0 obj << -/D [2609 0 R /XYZ 85.0394 794.5015 null] +2633 0 obj << +/D [2631 0 R /XYZ 85.0394 794.5015 null] >> endobj -2612 0 obj << -/D [2609 0 R /XYZ 85.0394 668.3939 null] +2634 0 obj << +/D [2631 0 R /XYZ 85.0394 627.5418 null] >> endobj -2608 0 obj << -/Font << /F37 1014 0 R /F53 1298 0 R /F22 949 0 R /F21 926 0 R /F41 1203 0 R /F48 1223 0 R >> +2630 0 obj << +/Font << /F37 1018 0 R /F53 1303 0 R /F22 953 0 R /F41 1208 0 R /F21 930 0 R /F48 1228 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2615 0 obj << +2637 0 obj << /Length 2488 /Filter /FlateDecode >> stream xÚ¥Y[oÛÆ~÷¯Ð£DÛ½_pžÜØÍqÑØ9¶sp€$2E[D%R)»î¯?³W‘ÒÊrQ×ËÑììÌì7ß,ÉÃ?2ICÍHŽ&bT¬Îðè Þ}:#Af…¦}©ŸïÏ~ú…©‘AFR9ºìéÒkMF÷óo㟑h*ðøöúâãôãÍõ/Ÿ.¯'Sb¸âãó/_.¯/®þ7™RA$1>¿þzþ›Ÿû21t|þéònòãþ׳ËûdVßt‚™µé³o?ðh;øõ#f´½ÀcèhuÆC‚3g–gwgÿI {oÝO³® Q&iÆ”ŒAF:p†0H2Êœ3®Ï?_ú]Ý]ÞN`ûÿ…‡ûÛºåêÓ×Ûs»Ûû«›k»[ÐI{þÅ#E˜3í”Ý/ÊÉ”9®g+7ã¶Ü<—?»Ú¶=„·ESǘ>m7¢ÇåÜ¿íÿœE¹î¼ä¦ž~~S—EW5uÄê¹—‰¿óÊŠæ©®þ -u‹°âï嫟i×eQÙÅãªUm7h·ä}æ“ÅþÐ훓޾!“„Œµ
YÓ
Q4HÚõ–åXšñ¶ê'»6‹æ1»¹Î™ß,[?Óv³®\•uçÿôV˜ù!tXÄ:~Ôƒ”J¢Üܘñ]YîÙÑö<ÌÆM½{Yü¥:ݬù‡‹O9HQª¢©ûEo‹6ñ`‹îéŒqgðêúÂŒœÏWU]µÝfÖ5?u[>–>îu~öyVogK?~Œró²›UËëBÏb ÄšuwNÆùow7§“ßfÁw,°†ÿÈÿK;7µ‘x*ëýw+ØqÑÌK;Oü¼÷-îûV)$Œ½oÿ™'·@¤FTJ™Ò!ã•)ãiØ4ðÎù×ûßÜžvËUÝ•›º±½{m!Ôm@H°fÓUÛÕn]+È
Ž7R'ÔˆÆxèÕxfG€kÓ,úä
ÓHi¢R¼’gÏwÈÌ]ÜüÈá…€T ^®š˜M³|O½ÖͺÚýRÁàÌhÉF|Å•Î!;Ó© -hPZ$Ó¦Çc"BÀ¤/öA CgHaC{D"³4T¬W²©_uaåYXÍR*ûÎýh–ž%ŸËºòeÖN/-0ƒ½Ïá—–>Ùç˦ê¦W§ -¸þMŽÒ—Šé!IIR»¼ê/)á!úí%£PfÉÁÉ‚¡‚²7Xò €Ï¶kVp|ŠL8àHjÅå ÀfˆQÚkˆúÅÁ8àØý¢jýr…ǵXM¤lS$“Ü’9ÉÞu.¤Â±ºæ{G vé0ÿTvE>s•Ä»ã%°;.`ãËÌ~Îm +š‰ˆÅíkkEâþA¢%ÖC{±Œ@ôêv"¾xYX -kG¾3rsñåöZv¶±òv`ª»ãWA ø=è´ðêž
àßaà© -*S1™\TZ/ï"¤¿‹PG²]ƒ‘;‚01ú,PèØ è”Ö.Öžû;²õ´ -¶û£¼^ΊĿà‡áÖgg«ëHl9ÂZîÎQÈDâßù
‰„QF?ª=Oeoö2£ü³j;O®·^:Û -¬Rɯ§h$àœåBÔÞ/™½ºz´ëúÆAâñªñÞõ“åröÐØÖÇÿyØùÀ$@ínÔy-±cšû¯¹óÅ¡Á5ƒÖ¡Ÿ¢æxŠj“ÇUUõ6ÿ±ÂÕ²‰¤1%`ÎVëeDH@d¯Ïy´µ:Þ=ÃÈ*·OwÓOw
OÈP@³yw®š®Ç¾×ã×fëÚE³]&aǼ3¾°×ú»Rrº;&‘K›xͶ¶fY<T3ö&ƒZ …ÚcðVŸ¿n·Û(à -–»7™<…[²ïÚ]!Õ©ô¤3ÉÏ$ÿûÙ?‡oò¢€ŒDÇÈ-Á -QÆÔÛä¶/uœÜ&)çòxË&†.×&¼wÉÖ7@ZpFØÛ¶%©ŒqÃ(“$T
»Kt˦;§á³ +u‹°âï嫟i×eQÙÅãªUm7h·ä}æ“ÅþÐ훓޾!“„Œµ
YÓ
Q4HÚõ–åXšñ¶ê'»6‹æ1»¹Î™ß,[?Óv³®\•uçÿôV˜ù!tXÄ:~Ôƒ”J¢Üܘñ]YîÙÑö<ÌÆM½{Yü¥:ݬù‡‹O9HQª¢©ûEo‹6ñ`‹îéŒqgðêúÂŒœÏWU]µÝfÖ5?u[>–>îu~öyVogK?~Œró²›UËëBÏb ÄšuwNÆùow7§“ßfÁw,°†ÿÈÿK;7µ‘x*ëýw+ØqÑÌK;Oü¼[ƒ™¾o•BBÁØûöŸyâpDjD¥”)2^™2.f€Mÿ÷Ííi·\Õ]¹©ËÛ»×BÝ„k6]µ]íÖå°‚ŒÑàq#uBm€hŒ‡^g–q¸0Í¢OÞ0”&*Å+iqö|‡ÌÜÅÍ^ØH•à媉ÙÙ4Ë÷$Ñkݬ۪Ý/ÎŒ–lÄÁW\é²0 +Àþ#°!œ´Óà@p6#æG¡ÃKpè·éìG=øMÁº½4kNx>i-²B'HsF‚\ÒYdt‚“´b§ò±Zþ
•‹4ú=£\ÌÆwÊë”ïQ¾>iïò6£2@{Ìöõm2ú¦Ì@m§œ±pÕ¬Yñż“úö¤¹³ù|S¶íû=ÐTY,6MÓÍ«MÎN ?"¥KRº=©tt!çV(µS—)B)éáỸ¼ûx{õ¥G^H¨2xpˆ’!ŠiL©€¥E2mz<&"Lúb$l:4p†6´G$2KS€AÅz%›ªñUVž…Õ,¥²OpáÜfaéY²ñ¹¬+_fíôÒ3Øû~ié“}¾lªnêpu +€ˆ˜ær˜£Ž¶P#ð‡ÀqÖ÷#Å©#¯Ùq:jD ÆÒ¾¯jíº©çÖ„Œ;ÁSTsš‰0ƒ¸T1ííjmiBèDrÔ ðJÔ“ˆLëmÎ’5 'Îhú²&)°¥'¯^ëÌE>>ÜÖKÃÍ0>ç»È._'@ÏÆ–rp°Ç†žó4\ø¤‰ÍD·aî¥ê~6…wè¡Ñ\«¦³œ[00B
oÖáPpÏÑîÖ1˜Ø®ýÄ,ã*¥‘Á„ô3)aã¾Ç²½zŸHVÿsS̓
‹°íº,Ôç‡GÌ +e–œ,*({ƒ%/ +à”’’‘§ˆ“|Gê +ìkÓ/ +¨Wu¹ôoÒ,œ± Cøà˜E΄ÃõŒ\.›—|•g8#7âd$61\®ì˶µ]²>jƨ{™Wås +ÈHtŒÜ¬eL½MnûRÇÉm’r.·lbèrmRÀ{—l}Ó¤g„½m[’Ê7Œ20IBÕк»D·lºs>À õT`Ô<‚>¨ævÎlA&ª®µÔ€9~öƒìdŸÝKYI´ºdƒ Ô˜Sñ/ê”Ùc:uF†¼fÇHì7…vBõÑhK8º7c½“9é ãâ\äâl¿×‘ÌÍç ÎÐŒ) ¼ä
«’ÌYÃ3Ëúv}
µ_£ò8ýS \6û:ѱÔì÷*œãﯱÛM-©»¥èÑ¢Ý/ÓuÙðÔkh¬ÞÑöp«þWÜgZhsí=UƵ85ÆÿøîîS5·wiúHC +W£¬áDêÃ\
{mÿ?»³·
endstream endobj -2614 0 obj << +2636 0 obj << /Type /Page -/Contents 2615 0 R -/Resources 2613 0 R +/Contents 2637 0 R +/Resources 2635 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2607 0 R +/Parent 2647 0 R >> endobj -2616 0 obj << -/D [2614 0 R /XYZ 56.6929 794.5015 null] +2638 0 obj << +/D [2636 0 R /XYZ 56.6929 794.5015 null] >> endobj -2617 0 obj << -/D [2614 0 R /XYZ 56.6929 752.3759 null] +2639 0 obj << +/D [2636 0 R /XYZ 56.6929 752.3759 null] >> endobj -2618 0 obj << -/D [2614 0 R /XYZ 56.6929 668.0781 null] +2640 0 obj << +/D [2636 0 R /XYZ 56.6929 668.0781 null] >> endobj -2619 0 obj << -/D [2614 0 R /XYZ 56.6929 607.6906 null] +2641 0 obj << +/D [2636 0 R /XYZ 56.6929 607.6906 null] >> endobj -894 0 obj << -/D [2614 0 R /XYZ 56.6929 570.577 null] +898 0 obj << +/D [2636 0 R /XYZ 56.6929 570.577 null] >> endobj -2620 0 obj << -/D [2614 0 R /XYZ 56.6929 534.8112 null] +2642 0 obj << +/D [2636 0 R /XYZ 56.6929 534.8112 null] >> endobj -2621 0 obj << -/D [2614 0 R /XYZ 56.6929 503.6098 null] +2643 0 obj << +/D [2636 0 R /XYZ 56.6929 503.6098 null] >> endobj -2622 0 obj << -/D [2614 0 R /XYZ 56.6929 440.3004 null] +2644 0 obj << +/D [2636 0 R /XYZ 56.6929 440.3004 null] >> endobj -2623 0 obj << -/D [2614 0 R /XYZ 56.6929 370.9227 null] +2645 0 obj << +/D [2636 0 R /XYZ 56.6929 370.9227 null] >> endobj -2624 0 obj << -/D [2614 0 R /XYZ 56.6929 274.6697 null] +2646 0 obj << +/D [2636 0 R /XYZ 56.6929 274.6697 null] >> endobj -2613 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F40 1146 0 R /F53 1298 0 R /F55 1306 0 R >> +2635 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F39 1151 0 R /F53 1303 0 R /F55 1311 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2627 0 obj << -/Length 2258 +2650 0 obj << +/Length 2259 /Filter /FlateDecode >> stream @@ -12673,44 +12807,42 @@ B½&ˆ¡l gŠMôGƒ¬ˆyÌL‹dµÉ꺨ܫ©½n RLmLIņH ñ³Ì"^ÇÑT×»6Î/Ù¸§%³õ›û`øR¿”ÎY«¾iý›³ˆ‡N.#^§$4v¯eU¹¥Ûk•ì½V`y‹ã¦7,}¸Lnü«,_ú–‚0ˆbSºLؾ4gs¬Ì >voã„É&œf; M•ÒQh x{aHš
áꕇe]JaÉk[ö×@×Eí>;cUP—üð. El¬˜D?33¼ì!Gû,)ý¶„õg»®›½¥3õvÈ„ &u¡×KŽàAÊB}±×‚4מêµÎê5ôZÇzE{‰b>v»lìJ~*v9JSAÎÆ.X™=ÝJ<éŠþ -$ðЗî^W!ÀkˆA,ɪ.œrÈϹ' -‘žçu7v õ˜€úÁ×m÷þ"ýX/¨20IÝ…ÓdÇ픦¾ÉÃ/þ -JM ý¦©Ný°Ê˜_ƒ"µ +$ðЗî^W!ÀkˆA,ɪ.œrÈϹ' endobj -2626 0 obj << +2649 0 obj << /Type /Page -/Contents 2627 0 R -/Resources 2625 0 R +/Contents 2650 0 R +/Resources 2648 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2607 0 R +/Parent 2647 0 R >> endobj -2628 0 obj << -/D [2626 0 R /XYZ 85.0394 794.5015 null] +2651 0 obj << +/D [2649 0 R /XYZ 85.0394 794.5015 null] >> endobj -2629 0 obj << -/D [2626 0 R /XYZ 85.0394 390.6346 null] +2652 0 obj << +/D [2649 0 R /XYZ 85.0394 390.6346 null] >> endobj -2630 0 obj << -/D [2626 0 R /XYZ 85.0394 257.7108 null] +2653 0 obj << +/D [2649 0 R /XYZ 85.0394 257.7108 null] >> endobj -2631 0 obj << -/D [2626 0 R /XYZ 85.0394 193.2733 null] +2654 0 obj << +/D [2649 0 R /XYZ 85.0394 193.2733 null] >> endobj -898 0 obj << -/D [2626 0 R /XYZ 85.0394 153.3455 null] +902 0 obj << +/D [2649 0 R /XYZ 85.0394 153.3455 null] >> endobj -2632 0 obj << -/D [2626 0 R /XYZ 85.0394 116.3439 null] +2655 0 obj << +/D [2649 0 R /XYZ 85.0394 116.3439 null] >> endobj -2633 0 obj << -/D [2626 0 R /XYZ 85.0394 83.9066 null] +2656 0 obj << +/D [2649 0 R /XYZ 85.0394 83.9066 null] >> endobj -2625 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F55 1306 0 R /F41 1203 0 R /F48 1223 0 R /F40 1146 0 R >> +2648 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F55 1311 0 R /F41 1208 0 R /F48 1228 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2636 0 obj << -/Length 3140 +2659 0 obj << +/Length 3141 /Filter /FlateDecode >> stream @@ -12724,223 +12856,229 @@ l¶JíDãtî{Líü3JD§P®-$(2}%òJ–¨d„ã±£QDj
ußÙ£R>šžÊÍ1‡zÚ&ê¸îù;àÝê¼l=UD¸‘¿‹ ÈH”ïa²îª¥7ƒwû„+rœïÝoª6Rq+¨v„Õ£ØêSái”†Â1}¶¸" >T,¨;ªXˆ©±çœÔë Ü̽,9±nËmî3q˜/×>JkÈŠEbÇ©èC³^7O®¤I\ÏÁ]IjÝžfœ
IH5¸ÝÔÎKöÈ~ˆµixŠ}B;ÙÜ0Åg±CP¼Ö„üä.¬Iöoÿ0ÚìÛÎoTeÌ*51¯Uþ½œ „ÅMÞaУå÷|]yäÕ)Žq9œ +qŒ„ÿM^…E ø‚#0Â=á:ŒpÎÙ$L´¥'¢oƒ²#|ÀçýW -Ò +Ò +þ¡BÒúãõÍ;zÓzÁŠ
d˜m·Ã‘¦~/c±“M
S¿æõ>}l‚4’>cNv)Cq0üµT4x¯ÆÿùGY‡Ÿé”)¨Ýâð#SÀc/ +.R~ŒÄþç[Dzÿ!ºãendstream endobj -2635 0 obj << +2658 0 obj << /Type /Page -/Contents 2636 0 R -/Resources 2634 0 R +/Contents 2659 0 R +/Resources 2657 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2607 0 R +/Parent 2647 0 R >> endobj -2637 0 obj << -/D [2635 0 R /XYZ 56.6929 794.5015 null] +2660 0 obj << +/D [2658 0 R /XYZ 56.6929 794.5015 null] >> endobj -2638 0 obj << -/D [2635 0 R /XYZ 56.6929 749.2278 null] +2661 0 obj << +/D [2658 0 R /XYZ 56.6929 749.2278 null] >> endobj -2639 0 obj << -/D [2635 0 R /XYZ 56.6929 677.9694 null] +2662 0 obj << +/D [2658 0 R /XYZ 56.6929 677.9694 null] >> endobj -2640 0 obj << -/D [2635 0 R /XYZ 56.6929 495.229 null] +2663 0 obj << +/D [2658 0 R /XYZ 56.6929 495.229 null] >> endobj -2641 0 obj << -/D [2635 0 R /XYZ 56.6929 83.499 null] +2664 0 obj << +/D [2658 0 R /XYZ 56.6929 83.499 null] >> endobj -2634 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F41 1203 0 R /F53 1298 0 R /F22 949 0 R /F55 1306 0 R /F40 1146 0 R >> +2657 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F41 1208 0 R /F53 1303 0 R /F22 953 0 R /F55 1311 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2644 0 obj << +2667 0 obj << /Length 971 /Filter /FlateDecode >> stream -xÚ½VMoã6½ûWèhË‘"ÎÚÝz±q\ÛÈæ µäD€Ey-9Aúë;IYr”EŠBIÃÇáðÍãI€á!ä3±ŠÇ„»b„ƒGû<"zPØEÝlG¿þÆâ@!%¨¶ûN.‰°”$ئ÷ãéj5_ÎNBÊñøMBŽñøvºü6ýjc«‰¢ãéçù~‰Š# -ÃàTL_”aœˆøºôö6÷¶ö¿]IJ'endstream +xÚ½VMoã6½ûWèhË‘"ÎÚÝz±q\ÛÈæ µäD€Ey-9Aúë;IYr”EŠÂIÃÇáðÍã3I€áGÉf* +b!Ž vÅ0öyD&ô °‹ºÙŽ~ýÅBJPl÷\a)I°MïÇÓÕj¾œ-þœ„”ãñ
š„ãñítùmúÕÆVEÇÓÏó
|G endobj -2643 0 obj << +2666 0 obj << /Type /Page -/Contents 2644 0 R -/Resources 2642 0 R +/Contents 2667 0 R +/Resources 2665 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2607 0 R +/Parent 2647 0 R >> endobj -2645 0 obj << -/D [2643 0 R /XYZ 85.0394 794.5015 null] +2668 0 obj << +/D [2666 0 R /XYZ 85.0394 794.5015 null] >> endobj -2646 0 obj << -/D [2643 0 R /XYZ 85.0394 751.5568 null] +2669 0 obj << +/D [2666 0 R /XYZ 85.0394 751.5568 null] >> endobj -902 0 obj << -/D [2643 0 R /XYZ 85.0394 708.6012 null] +906 0 obj << +/D [2666 0 R /XYZ 85.0394 708.6012 null] >> endobj -2647 0 obj << -/D [2643 0 R /XYZ 85.0394 670.3846 null] +2670 0 obj << +/D [2666 0 R /XYZ 85.0394 670.3846 null] >> endobj -2648 0 obj << -/D [2643 0 R /XYZ 85.0394 636.5029 null] +2671 0 obj << +/D [2666 0 R /XYZ 85.0394 636.5029 null] >> endobj -2649 0 obj << -/D [2643 0 R /XYZ 85.0394 564.786 null] +2672 0 obj << +/D [2666 0 R /XYZ 85.0394 564.786 null] >> endobj -2650 0 obj << -/D [2643 0 R /XYZ 85.0394 498.9559 null] +2673 0 obj << +/D [2666 0 R /XYZ 85.0394 498.9559 null] >> endobj -2651 0 obj << -/D [2643 0 R /XYZ 85.0394 418.2058 null] +2674 0 obj << +/D [2666 0 R /XYZ 85.0394 418.2058 null] >> endobj -2652 0 obj << -/D [2643 0 R /XYZ 85.0394 349.4108 null] +2675 0 obj << +/D [2666 0 R /XYZ 85.0394 349.4108 null] >> endobj -906 0 obj << -/D [2643 0 R /XYZ 85.0394 306.4553 null] +910 0 obj << +/D [2666 0 R /XYZ 85.0394 306.4553 null] >> endobj -2653 0 obj << -/D [2643 0 R /XYZ 85.0394 268.1239 null] +2676 0 obj << +/D [2666 0 R /XYZ 85.0394 268.1239 null] >> endobj -2654 0 obj << -/D [2643 0 R /XYZ 85.0394 234.3569 null] +2677 0 obj << +/D [2666 0 R /XYZ 85.0394 234.3569 null] >> endobj -2655 0 obj << -/D [2643 0 R /XYZ 85.0394 162.6401 null] +2678 0 obj << +/D [2666 0 R /XYZ 85.0394 162.6401 null] >> endobj -2656 0 obj << -/D [2643 0 R /XYZ 85.0394 96.81 null] +2679 0 obj << +/D [2666 0 R /XYZ 85.0394 96.81 null] >> endobj -2642 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R /F40 1146 0 R >> +2665 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F22 953 0 R /F41 1208 0 R /F53 1303 0 R /F39 1151 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2659 0 obj << -/Length 2019 +2682 0 obj << +/Length 2018 /Filter /FlateDecode >> stream -xÚ¥XÝ—â¶ç¯àpÏâú#Î#;ÃîÒvg§sOïÙîC&È)$”„²ô¯¯dÙ!0™Ù‡È²lɲô“Œèsø‰~±(‘I?Nrö³m÷W0÷¾'œÌÈÚRoç½ß©¸Ÿ°$’Q¾lí¥×Zôç‹Ïƒ·Lr6„-ø`:»}ø8¾½›þöx?‰$Pr0¾¿ŸÜÝNŽdÈAd9|ß=Ž!Þý0±÷“ÙðËü§ÞdÞÖ6^p…VýÙûü…÷p†Ÿzœ©D‡ý#8I"ûÛ^*JyΦ7ëýÚlØšµK;!8“*’Þ¢/KÂP^¸#LX¤¤²î?¼ü8¹›??‹`±Q?–‚E¡Ô/è&¡Q[Ê«î¸/…šGªüñ]¶$Á\„p^+R¶Ofm™àÇè×Mk¤:l“m<a -Å¥qÓ®ZǃÝ&Í’Ñ \ke -³Oë¼XѸ,œÀïœËyƒ$òR¦¢Cmw-Y¨Uøì”W¦)ÍÀ(íÄ~ç!_î‡BÊ-i–¤·.i˜€„ ’L©œ-éngŠÜa‹’‘þ>[@%ˆôG -ÕWùßæZi@EÁëJ½P‡Ò¶+`RÅq|©tîÏlµ[Ê|wœyAß?òMùtªé²Pº¤¯ —ýhqø
ÿµ¤^ñŸ—£,Êmš×jÁÂH$¯«õBjÛL"D5y©v~é¦syyÏ×y¶&rŸ›
@/Ò:uW°.›ÑOnùqŸ×µ)˜í`©„éðz¤bÆhÏl2¡¥ã_fŸ:2‚÷G2b\¤h -¦¨Â,tw™ÚtÍ2³™í²_*?Î?|zø¶ÖiQ›}ajÒ7;UµÙV4¸)‹ªÜ×ùa{ÖD^_ !¥“¨©ŠP -‘Ùæ`«ÑõB±NhJ"O‡³ôPÑBE3š}ÿ‡„æ³é{š øAŠÂÅo»BÍLĆ(lÊbe -èzžrÓ‹|eªÚ‰šbU¯‰¶ÑÖ\§•›r—2¼ä`òçÌ0D†8€Ý‚&\´¿h†ˆ8Oy]WË0ê:˜Û-λ¡ß
¸¸Ì²ün@š:sŠ–$hq¾‡ÊfÌÀ½•{r[VoN6Ü-ŒSZ»5U•®ÜFéüTÔyreArY¹p³`aM¼cZ]ŒÚvÔ¾ÝÁÚ'_Žyíª@ ;;<¸½›¹r±ÝmÌZuköÔIâ*NŽ"#a@À:Ž1QˆRp‘_Ñ8Îß.P - ìH~›žˆÀx6~W¾|“×'oD}lìp¨‡$æRÇåæH7·q1p+pÑä7Dצ I—RÈĘ! -ãè\+Ï€ …„R;ìé*Wi¦-Ý‚m¹ÈQÖ‚>¨©×eeȹ±Áx@±VÕe“« æ¼4¢þSj -á1ê -³@/ÐhiE&Ô¶Š!Ç×åÑO¹M\s
ÔŽr¦.³rã0T† \^½áåþLSÁÃE;[äË‚Øiq:¦
R*ÚkÇ™Eió -–زÂKT»„ÎÆs‡ý¤¡aVƒ‡w74)šõöa¬T€ï†àgjíDÜ´7(E +xÚ¥XÝ—·ç¯àpOpý1Ÿd—$´Íf»°÷ôž4³ƒ9e†ú×W²ìa`g7͹‡‡‘eÙ’eé'Ñçðý0bQ*Ó~œ,ä"ìçÛï¯`î}O8™‘µ¥ÞÎ{?¾Sq?ei$£þ|ÙÚ+a<ID¾ø<xË$gCØ‚¦³›Ñ‡ã›Ñ»éo÷ÑH%ãûûÉÝíô·áH†ÄA–óÁÇñÝãøâÝS{?™
¿ÌêMæamãWhÕŸ½Ï_xgø©Ç™J“°„g"MeÛBÅÂ@)ÏÙôf½_›
[³vi§3gRE²ÃRô…`iÊw„)‹”TÖã‡÷'wóçg,"êÇR°(”ɺIhÔ–òª;.ÂK¡æ‘A•?¾Ã–$˜›¤!œ×Š˜ÃöIï¯-<`à˜äuÓ©Ûd[#OY BqiÜÔÀU'ñ`·Érd4(—ÄZi£÷Y]˜Kã~ç\nô¤‘—Ò2h»C$’…‰ +ŸòÊ4•00*qb¿ó/÷C‘Ê-i–¤·.i˜‚„ ’L©œ-Ùn§Í
î°EIÈ(ù>[@%ˆôG +Öåa³ úÉ-?ֆ¹Ð¾ +!Ë•"—+™’Ë-'¥^7N`ÖâR€ˆÂ䛃F×YDÄ:s¢‰<V4γCEÌhöaüšÏ¦ïi‚â)B +¿í +uÔ63¢t°)ÍÊÐõ:3žrÓ‹b¥«Ú‰j³ª×DÛhk®³ÊM¹KŠÞr0ù¦"CÀnA.Ú_4CDœˆ§¢®Î«euÌíçÝ‚Ðï\\fY~7 u»ÎEK´¸ ßCe³fàÞÊ=¹-¯7' +n‡‹–ÆÝêªÊVn£ì +Q +.ò+úÇ…ã»À + _ *|( iw®QÖõ…B;’ßf'"0žµßÕŸ¯ØõÉQ;ê!‰¹ÔqùFéÆã6.®u.šü†ÈãZšt)…LŒ¢0ŽÎµòRH(•±Ãž®Rq… QÂ’ ‘nÁ¶\(kAÔÔë²Òd†ÜØ…`< X«ê²ÉUs^Qÿ) +™GDÛe8,6šA@EN«§AvIZT8¶õô¼1•dx—ž…¤õw”¾ù=[ƒ/ȹÓëgÉÅ5c#]¸å¦tšþóP4™L°Ü¡Ì›fC÷¦)jÑxúv¾ÛCïû9Dðòàd=4P}`ÿ²OžMn¦óÿ¹–÷ÓÝlz;yc‚cK3ûv=kN‘Æ•/EÖùiâQ5@ŠNMGÀ[=u +.ÚÙ"_bgæt̤T*´×Ž3‹Òæ,±d…—¨v !æû3HCìïnhR +4ëíÃX© endobj -2658 0 obj << +2681 0 obj << /Type /Page -/Contents 2659 0 R -/Resources 2657 0 R +/Contents 2682 0 R +/Resources 2680 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2669 0 R +/Parent 2647 0 R >> endobj -2660 0 obj << -/D [2658 0 R /XYZ 56.6929 794.5015 null] +2683 0 obj << +/D [2681 0 R /XYZ 56.6929 794.5015 null] >> endobj -2661 0 obj << -/D [2658 0 R /XYZ 56.6929 752.0628 null] +2684 0 obj << +/D [2681 0 R /XYZ 56.6929 752.0628 null] >> endobj -2662 0 obj << -/D [2658 0 R /XYZ 56.6929 603.3016 null] +2685 0 obj << +/D [2681 0 R /XYZ 56.6929 603.3016 null] >> endobj -2663 0 obj << -/D [2658 0 R /XYZ 56.6929 539.7009 null] +2686 0 obj << +/D [2681 0 R /XYZ 56.6929 539.7009 null] >> endobj -910 0 obj << -/D [2658 0 R /XYZ 56.6929 500.3546 null] +914 0 obj << +/D [2681 0 R /XYZ 56.6929 500.3546 null] >> endobj -2664 0 obj << -/D [2658 0 R /XYZ 56.6929 463.723 null] +2687 0 obj << +/D [2681 0 R /XYZ 56.6929 463.723 null] >> endobj -2665 0 obj << -/D [2658 0 R /XYZ 56.6929 431.4263 null] +2688 0 obj << +/D [2681 0 R /XYZ 56.6929 431.4263 null] >> endobj -2666 0 obj << -/D [2658 0 R /XYZ 56.6929 364.9038 null] +2689 0 obj << +/D [2681 0 R /XYZ 56.6929 364.9038 null] >> endobj -2667 0 obj << -/D [2658 0 R /XYZ 56.6929 304.268 null] +2690 0 obj << +/D [2681 0 R /XYZ 56.6929 304.268 null] >> endobj -2668 0 obj << -/D [2658 0 R /XYZ 56.6929 107.6861 null] +2691 0 obj << +/D [2681 0 R /XYZ 56.6929 107.6861 null] >> endobj -2657 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F55 1306 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R >> +2680 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F55 1311 0 R /F22 953 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2672 0 obj << -/Length 1216 +2694 0 obj << +/Length 1217 /Filter /FlateDecode >> stream -xÚÕWKo£H¾ûWpÄÒ¸§ß4Ú““8ÑÄÉÆŽ´Òì°ÁÁ3Êþú¦;‡½ìÊ’ûU]¯¿ªnˆƒáG%f>w<Ÿ#‰pÖé;[X»+3©…&m©«åèó-óù’Jg¹iéR+EœeøÍ>?Ïæ7Œ'T`÷ -'c÷q:~5sÏcŸºÓ»Ù†Äc„(Ñr»óÅìšÝO÷ãïË/£Ù²ñ©í7ÁL;ôcôí;vBpÿË#æ+áü‚FÄ÷©“ޏ`HpÆê™Ýh1ú½QØZ¶á ˜BBQo -VÏÒ*†¨‚[õ"
ÛRçiØHi‡ZwÂ;*xžyØn¤ŒwyÈñTÏz“¿
[3¡Š‚gðˆ2%iTœMå"Î;›ñ+»º -™¢”ïu-7˜Z¾úIÕ©†«‚ w¯ -êO¡–àÆÃýÅuú¬äbJIa†áeÏô…nœÒÁé÷]o¾ÍÞûþ$†îendstream -endobj -2671 0 obj << +xÚÕWKoÛ8¾ûWè(5˧D¢''q““`n²%[ÂZ’kÉ-Ò_¿C‘’%Ev{Ù…“"‡óøøÍ$†q¤@˜)îøŠ#‰pÖé;[˜»+3©…&m©«åèãgæ; +)zÎrÓÒ%–’8Ëð›;}zšÍoîÿO¨ÀîOÆîÃtþ2ýjƞƊºÓÛÙ>‰ÏQ¢å<ìγkv7]Ü¿/¿ŒfËÆ§¶ß3íÐÑ·ïØ Áý/#Œ˜’Âù¥¨“ޏ`HpÆê‘Ýh1ú£QØš–á ˜DBR +yŒ² +‰Ålfž~]<êx +Å:¯ÚÐfR’™60M‘l³Êèÿγ]$®ÍççÛ—‡Ù|¹xS£-ï˜ç!åS~™œm©º¤¾%g#ÕP®g”`‚°¯Þ±ÚH
˜íMì!ìážÝel³Üp^÷öªùÏ$¬á«6P·µð©h4 ‚ÎBÆ|8B¹x²–ÔÈj)íú)7û¸Q…¤åeÓÔ€ínPX¥ ¤k| +á+áfÇtéLqà_˜¬¡:d[3gЂ ‹µÐšpÎÝëãÁžyåîµ·*Ïê¡â¸ßÃQíÆ°:ó¹|¨’JWì‘nRÙôaXº:gu»¸›NÈèSæþŠ“uܶi»úsõjÚÊCÝ©ƒ×}òi¬qt×P£Gžc…ý×UÞh1qêTŒÍqgúPŽQ}´™0Ì%lS_JSz4+·Ç¬ž¥!•Q §êE¶¥ÎÓ°‘ҵ΄7<”p=óß±ÝH
ïò!âËžõ&&¶*fBÏàe KÒ¨8›ÊEœw6ãWvv +Ïã +—M¸e²wpmI]Àµ–Ò‘ÎÖ¦ú~€%¿l·‘0ÜÁ2EJåw-7˜Z¾úJÕ©†«‚ 7· +endobj +2693 0 obj << /Type /Page -/Contents 2672 0 R -/Resources 2670 0 R +/Contents 2694 0 R +/Resources 2692 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2669 0 R +/Parent 2647 0 R >> endobj -2673 0 obj << -/D [2671 0 R /XYZ 85.0394 794.5015 null] +2695 0 obj << +/D [2693 0 R /XYZ 85.0394 794.5015 null] >> endobj -2674 0 obj << -/D [2671 0 R /XYZ 85.0394 752.4085 null] +2696 0 obj << +/D [2693 0 R /XYZ 85.0394 752.4085 null] >> endobj -2675 0 obj << -/D [2671 0 R /XYZ 85.0394 692.3565 null] +2697 0 obj << +/D [2693 0 R /XYZ 85.0394 692.3565 null] >> endobj -914 0 obj << -/D [2671 0 R /XYZ 85.0394 655.476 null] +918 0 obj << +/D [2693 0 R /XYZ 85.0394 655.476 null] >> endobj -2676 0 obj << -/D [2671 0 R /XYZ 85.0394 623.3704 null] +2698 0 obj << +/D [2693 0 R /XYZ 85.0394 623.3704 null] >> endobj -2677 0 obj << -/D [2671 0 R /XYZ 85.0394 588.7135 null] +2699 0 obj << +/D [2693 0 R /XYZ 85.0394 588.7135 null] >> endobj -2678 0 obj << -/D [2671 0 R /XYZ 85.0394 525.7396 null] +2700 0 obj << +/D [2693 0 R /XYZ 85.0394 525.7396 null] >> endobj -2679 0 obj << -/D [2671 0 R /XYZ 85.0394 468.6524 null] +2701 0 obj << +/D [2693 0 R /XYZ 85.0394 468.6524 null] >> endobj -2680 0 obj << -/D [2671 0 R /XYZ 85.0394 396.6452 null] +2702 0 obj << +/D [2693 0 R /XYZ 85.0394 396.6452 null] >> endobj -2681 0 obj << -/D [2671 0 R /XYZ 85.0394 211.0639 null] +2703 0 obj << +/D [2693 0 R /XYZ 85.0394 211.0639 null] >> endobj -2682 0 obj << -/D [2671 0 R /XYZ 85.0394 151.0119 null] +2704 0 obj << +/D [2693 0 R /XYZ 85.0394 151.0119 null] >> endobj -2670 0 obj << -/Font << /F37 1014 0 R /F21 926 0 R /F40 1146 0 R /F22 949 0 R /F41 1203 0 R /F53 1298 0 R >> +2692 0 obj << +/Font << /F37 1018 0 R /F21 930 0 R /F39 1151 0 R /F22 953 0 R /F41 1208 0 R /F53 1303 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2015 0 obj -[918 0 R /Fit] +2034 0 obj +[922 0 R /Fit] endobj -1867 0 obj -[918 0 R /Fit] +1880 0 obj +[922 0 R /Fit] endobj -1574 0 obj -[918 0 R /Fit] +1579 0 obj +[922 0 R /Fit] endobj -2683 0 obj << +2705 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj -2043 0 obj << +2065 0 obj << /Length1 1628 /Length2 8040 /Length3 532 @@ -12950,7 +13088,7 @@ endobj stream xÚíte\Ôí¶6Ò ˆtÃÐÝÝÝÝ¡Ä000Ì ÝÝÝÝ’‚R"‚´t ÒÈ‹>ïÞûüž³?³?½¿w¾Ìÿ^×Z׺î7¶‡Œ5Ü ¬‡¹rðpr‹t´P(ÐWç…CfL9g0ЇÉ]Á¢ -Äü{fXE +Äü{fXE 0Üú÷äè¹aÖÃöOÃoäæìüØã?ûÿxýœÿŒ=ì a.ÌÁAb¡ö™9Y®
Ä£ò/z{xœ*Þè—ÖÁ»2#×Dj,ïêÃ8›ÇEµyÍî;Ýoª²n
öA™ºÓÁß‹(üèX>ã.3v±ms™W`gÅúϨ¯"› rnêèš—ß¡RŽwð9£_²Ò¹Ð_8=óe4%v>oFÀk(Ù?`LÙ½¼`êú4ð±ûåÃ&9[~ƒ˜;26cLà«|r)Sƒj…×Íl(ßÛ b¬Å7ÎßÊçÏVð™h9Žù,¢I‚°RÊ• e®äß·RÆ%=²ìÙ
êt›œ(†Ì%³LÇî)®Ž>1Ù¥‘„µ…^Ñ2¼éˆO£Ý %õ‰>•pjÕr{2–ÂwÍ<–g¬™-j—!3cäáakIè,AŒ$ÁLˆÇÆ‹J¯³nöùU»Ïm›Þ‰D3 @@ -12973,35 +13111,35 @@ $OíœàÅ€DÈ t‡Í=žÝbóÆÃwî6ß"£“˵?”JËOP2RÐoQo+†â1)©w†¦ÜèådîI½ÈZ¿VÍ(e÷åû È"[vQÔüFØs(úF$'‘qL ®/¶!õÔ
¤HvkÖ‰Œh¼È‰¬ê؉á¶o?Ùa:Šÿ±qêcŒ°gã!_QÇ~ÏWê¡1üaœ¯UÝGmã§Yñmn%ìRãr9÷¬ß0qˆ5†/‚E…(êÚ“†,W‚˜$Ù½ï¶åçLxËÎÔ|ú奕£w†Z|ÂV€ãž÷,éOd ÞyŠGÝ
ŽÎ¨Ý3lÍ4©¿Î\×T2Zª½Ag—.7Ù#ÏPæï™v¼eŦQLÞ»±Oþ¼Ô\’ ¬ÿĵJÅñ¾(š3Ç].Å*,MÎ>ÛBx(ÃSÃó|D³uû‚Þ¡ï†{:Ò‘Á¨2G9¡Cê{É•<|?ÒK áéá@F)Ø,êw÷ó?È ¸¢Ëa„Çh%Ù±o^Œñ{‹6™Ý@¥-«ä%Å~jÉwXjz1îi´·î¬%uÕ3^¿±g¸`d+ÎK[ŽDe—„]âò†YèÖýÇ?Ï>£³HjË,èkѸÍhÔ8Š”™v_Å
[ªJÖ®²9m=·âú?\‹k>¼à¬‡¤*³Ñ³ž,Y
ê<‹ý¹uÓZ/ZV$S·é#ƒmNOš¨5M@¿§rãÝ0Hõ7¬&7[àçŽAØñêOõƧÈêÚ5±pE6~d»Ž^.x¨T1¬µ¤$£Í7¿ÿ4òÆêüj§‹G1¬èípoóÌ3³QýÐZ:œNÍÆéç,0½‹Š‡Zg‹ðâ£à)‹Q©¯³‹X""œÛÆ0ÏÁ¾äBvFA‚)Y9(ÎYÖý…ì¬S…|¸Ôü¾“qbæÇN.LÔX§…_ï‚¿œ%%½¥åŒìé|°D>W²7}C–Í#—ZR¸$º`bÛGο…a¿9gÝS%\”Á/œîñhC|?s§Ø…šg¯ÎÙÈ)ª¬m}ÐvÖËk†Ÿ.bÉ&O üõí+uqfº`Îa‡„°£â,I§ã¯½/‘˜÷ÇÝ›Á¤'P6ߢH‚Ú?÷›½šÙ¹˜Žà9¦ŠmHr7:pMRYŸ#£ 'æW¥¿ðKCß|-¡mWÝ躖ná²¶Ë0–«ÞÐ3äÛÙ=j’¸Ë-,n–³e±€¢üb½iÙ;‘˜Hâ°l<)žL.ßÐYÖÿ°Ú·)wL=(‚Œ£± L|)=å'ÀÆ-Å@²öò¾µ<ÃNrä³6îµEôʃ3±d¶kÓ»¬ÿ‹%ôµøü·(kD~ô(¬_yñ‡Í;¯åä²fùOî{&*‰äyÒ¯9ÛB±T¨d>è.<Sâ¢éX3p7«Á~ª"럽Ÿ“lË´ÍÔDQÿfŒ°Ì -*s"}Y
;Ò‰¢ú{YÌÝÇí]p¶Òݯ€Ž¶Xo³êÙ} +*s"}Y
;Ò‰¢ú{YÌÝÇí]p¶Òݯ€Ž¶Xo³êÙ} endobj -2044 0 obj << +2066 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 67 /LastChar 85 -/Widths 2684 0 R -/BaseFont /DYNYTS+URWPalladioL-Bold-Slant_167 -/FontDescriptor 2042 0 R +/Widths 2706 0 R +/BaseFont /GWFXOU+URWPalladioL-Bold-Slant_167 +/FontDescriptor 2064 0 R >> endobj -2042 0 obj << +2064 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /DYNYTS+URWPalladioL-Bold-Slant_167 +/FontName /GWFXOU+URWPalladioL-Bold-Slant_167 /ItalicAngle -9 /StemV 123 /XHeight 471 /FontBBox [-152 -301 1000 935] /Flags 4 /CharSet (/C/D/E/H/I/O/R/S/T/U) -/FontFile 2043 0 R +/FontFile 2065 0 R >> endobj -2684 0 obj +2706 0 obj [722 833 611 0 0 833 389 0 0 0 0 0 833 0 0 722 611 667 778 ] endobj -2028 0 obj << +2047 0 obj << /Length1 1630 /Length2 6133 /Length3 532 @@ -13013,7 +13151,7 @@ xÚíVuTÔí¶VA!¤†n†n”.IéΆ˜f(‘N)én$†FJ Á!¤[:%•$.úÝï|g}÷üuÏùë®;kͬ߻Ÿ½Ÿýìø½ Òy¦§aáèha
…«pJÃ•Ž H ±@Bá0Y$D¤±ÉB¬@¼¼ µµC‚XnxXÙÙ9þ²ürYzý‰ÜD" ¶0Ó̓;Äîì!o(þ×ZiÙ@! u
%5‹‚šHƒ¸Þ¡áf鵩@ 0„dw9þq -³rt³þ%àÆnÿ-ÈÙ~ãátƒÝiÀH„•+Ô ºÉª!+ÿ‡N¤òWnôÁmn<áVn¿JúÝÐÜ H(BB<‘¿rYB@ÖP„³£…×Mî2gWèon(Ìö/ Wˆ…«µ#¸¡¹áþÕ¿êýSõÎÎŽ^¿£á¿½þ¡ŠD@m¸ +³rt³þ%àÆnÿ-ÈÙ~ãátƒÝiÀH„•+Ô ºÉª!+ÿ‡N¤òWnôÁmn<áVn¿JúÝÐÜ H(BB<‘¿rYB@ÖP„³£…×Mî2gWèon(Ìö/ Wˆ…«µ#¸¡¹áþÕ¿êýSõÎÎŽ^¿£á¿½þ¡ŠD@m¸ ÿóü{é!Oˆ`zn%lŸš‘†¬"Ïéé—5úÐÁƒÑâ\\£ý:ß¿Þî—¾(Rf~QÂU;(zÕä5¾í|¹ªÌ¶ÖÛAæÈÜžÙË£ò¡g}ŸO4ÏôNˆ}-lZŒŸöU/Ê{LeÓP[wm©_ó™iÑÅ=àà;>WìýSVz÷|R†g_«”·¯´ÖÞ"®*ØþÊ”°yzÂÜÕ÷±§»ýðîûUJöìW8Œbî˜øL‘þ.Ù”OuJåÊߪݎË;BbubÁï<_^Ë¿Å`i¢KÙÅy¨yc@–‰Ÿ'\;ø$·®Q;S-”âs/,
9D¦Ô#,9ƦïKv²±SÐúê¿»èçö‰%…÷²õ-âÁ]3ëãÝ“±Ñ][™CæºÊlëŠÑLü‹¦ëÀ¢€5‘ؽrô›ìç3üܰ˜üDÑSjÛðôä)Wï8Ž*öÜŸèž“3@'}~+ÏÝ6‘žˆ•Ø\Žpµ<züuÚ>AbåPóبLbZ÷a3ÒYÍEœVÁ= ¾‹{·^®2<¿}5aq€©ÿ_5¹Ûðòµ÷>›À¥´ê$C}ÀXйœÕ÷ji—û€G‡/§Œdû-!j¹;Ë6#ÔÜŠ.Oé×ôÎc´¼$z¾I(ñØÇ/Wj®½"¹ßKÒÿ¾ð{Lš¿ÞH¥hÔ»Ã:iÓFRF<g]Û39}—ÞÞF™8|à0‰å b݇a›yKÜ£%t×TcaÖËF˨?B:äÐ 3ÚZP‚ÌÆŠ}
fñφôˆƒTU‡J鉽žj:»«Ï‹ºôN)/ÂÕ äE½¬^gº‹ ^/«k¯&6Ö7%³"”-ήQËòÍ“ñÆ‘r¾“'# ñÀèHvo»Vüy½¼Òç³³”ÎjÁÕŸ,_Âh^§–p³/â#Ó„HÊÀç„»ûÄŒ[‡¤Ê»B8Ò¬’%PË ™#¹&}Ô7uo(à–îu•úµÒ95ÀŒ¾?ËêcÕ8—ÄñâθÑ,™ê:f”†.‡Ðà¡ÝõÁ41hÀ›3):«;Ícƒ·ú‘¶Þ,èðY½:Nç5u…QEð‰rŸ–²ÌûŠ!&.ÜYâü×Éú;á$¤`×yme~b©@{•3*¹ @@ -13031,129 +13169,128 @@ d ¯òˆ¦:ôw ÕB¾ª\h~8©$‰¼¼·ý˜7!g;É¥ƒ\®cf>}7›ùâžÐÙZسãÁÖ–Ü^-Už&( ÖËÓ»ÜIFÙØS˜õOV_ºhýÐn-® X{$¢½‰¼û£@–rlZ™âɞˊ1o(¶¨mèö¡Ðé»÷ÝõäIŒ]Œ_-ô‹¸Þûò'zŸT¶n76Gت–·&úìIĆ‹7ÎÔ‰‰f¾<B‡›&ª½úŒ×ž´)„Æc+¤ œ?µÆ(_¹à™ñ0áNZ¬/ˆ_c24íŒË¢—'{.ö¥dÖî§Çz̓¯ÛKÃ{u`‡:s±¹ Á<º'—0— HMq±LåRnC@x›ôs̈W6ß>uä3¾õˆ;)EO4,Źk&l‰#õ޾„˜¬Ù¶³ ½höâiF] ‹œx'´ÅfÊb\ñê{Ý?¬¹¶=ê3¤XTÕW©*®§‰\Ee¶©x‘@†Dz:ƒ!¡X¾ÂK”G½èß>c{BŒÍCŒ±¹0šUÕ¼ƒ¿ªÝ•5xfœéÉU“Nhèòã»Z–$8û훎·òБÞåú¸;ß¾2~%~QÍ÷*|6οÀ.©ó¶H&l]ážçµÐ[èù%¥ÎºÆ¬!ÙrOxÆ!.B˜“zuW,Ôêr‹9å™ÊT°CHÖ‘_e‘‰ÿð:û5r€û3.ñ4v—W”ò]ª[)ïó–äÙÀ—݈H¾ÌûùSޏ+¹ºfS4çHõ¿ÞzyàÂ*/ç%Šâ×»Í Ï8ôæãmº'7…\ì°Å÷K)8ÐÁ@£bÅî\ç±ÄÝÊ‚×[g“©»5é«ÅÖ¡’'¯ÔíÌ¥ºégˆ<‚â¢Ï8TŠqùœ_Uå=¢¦#fœÞ*ª6í¶²*æ›\oi›–•`ûlj[ÛW*ˆ»ºœ2Ž(ËtŒp{ˆ¥6Í]š†}„¯>{?'CÆà§5zíEëÝÚÓÞ&vø¾öŠ
÷dYcØL‰8àÇÉu°à•GËÝšÎñtûëV²ˆ’eÓëû&KÅàჃ‘oS*.m•»8ÕîŒWQì3ÊDÌûj OpHY²ï®f>×¼ù‰_ôŸö‘Ƥ‰´»ø|EÀ’=PzêîXDƒ%½+C£ˆ1_ù¶‡=AýYœ:&Aaú;æ¬U¾öÝ*“ÍXJ·=à²ùˆ1¦¬ý<ð»©,|#
O'Cƒµë“M]í¼æf°ºÜS4‡AÇ÷Mj€“Ò·ÐökxõÊáž™ËG‡ÞÕéú,óÔ92‚¬
߸gp0o9)ÁM£«&ChVF=Vv¯ñõÅž¡üÜÈT·Žïvä(Ê´ãé¿7jzä ¾¹Â6]E³ÚŸÉÞeIGOIùç…&˜+ÊZ Sl© -Í`ƒ©c½G¯Lsé:JθÿÍàÿ þOX9B,\‘p'WÀ
?yÃendstream +Í`ƒ©c½G¯Lsé:JθÿÍàÿ þOX9B,\‘p'WÀ%Öyxendstream endobj -2029 0 obj << +2048 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 66 /LastChar 78 -/Widths 2685 0 R -/BaseFont /BWUSUT+URWPalladioL-BoldItal -/FontDescriptor 2027 0 R +/Widths 2707 0 R +/BaseFont /BJEDCG+URWPalladioL-BoldItal +/FontDescriptor 2046 0 R >> endobj -2027 0 obj << +2046 0 obj << /Ascent 728 /CapHeight 669 /Descent -256 -/FontName /BWUSUT+URWPalladioL-BoldItal +/FontName /BJEDCG+URWPalladioL-BoldItal /ItalicAngle -9.9 /StemV 114 /XHeight 469 /FontBBox [-170 -300 1073 935] /Flags 4 /CharSet (/B/D/I/N) -/FontFile 2028 0 R +/FontFile 2047 0 R >> endobj -2685 0 obj +2707 0 obj [667 0 778 0 0 0 0 389 0 0 0 0 778 ] endobj -1436 0 obj << +1441 0 obj << /Length1 771 /Length2 1151 /Length3 532 -/Length 1712 +/Length 1710 /Filter /FlateDecode >> stream -xÚíRkTSW‘ª¡¬òRIÕzX%2yj `,žò˜{CnIH@Ä•TeYÄF—<EE©°ªÔJ-± -SÀiaËqªUð5¬««ôç̯YsΟ³¿ý½¿óMóˆ’1D¶ÅP‚Áar„ X*•pØ€<³Ù-‡å‚¡!rŽ@à"´jÀ]Ø|!o…ǧÐ@0–¡Ç‘4¼‚é“$>i`QÈQ •*XCÖPÈÕ@†)˜Ð3Hë&od‚up&ŒgÁ“Âá -rKÃã$1£ŽUº(j¨ýÃj¨¶pCÛúVM -ïsXel×ü=p §eL -â7òÝnýÂÓ¥܎köUüMºÞûÛfóž$±ÎFp ýx êÑ¿.µpSBƒûRÏFßò¾\×x¡:ĵ®pf²¹94´zIól¬w0h¾G€ëB¿¹N¢$k4Pí²\ìÑ?PËqáMŒ/:.ô9ØóÒoè§ÒsÓÈŸEyöC[¤ïb>ˆ^nðýÕî|d]ª¾Ë·î¤ùÇyËöAÑ9ŒµûÒ×FÖn×èæì=&hxı«È9÷TÔüƒ²/õ^‘›ž-§·Ó6\©{L8G½¨Jeâ g[ÛPµž7dqÏ~²ç—”öº'àȺC5†Ý›>¾µrÑŽ
¡Ã@ï €š!þ¼4ïÍÖÑÞ0ƒ³¸¹#Ñ‚Þ;fºóc?"Ürî³ÖÓ?þ›¥Ôúÿ[µ–ÁuVFØêï"Û ÔR¥©s£AnÖËAò4/‹»Yêú½ä©;jnÉ0n%h‡_¬.eåY{Wòñ VU QÙRÉiõr›wfŽ=)u·>Ã7¼Îo¬ØÞ®ŒZ?Z9á·{B›ïze¤¨ó—3+¤Jé›DÙÞÔùÊl½®k^vswÙ§ -]0Ãkë™O_r¿:mlÚl3_#‰‚¾³Uul¿îz5<ÖQÃÙ'ÐqŸï,°{?·(‚Jý5.Óí¯/³öÝy);æÃBó]¯X÷2qékÛ„Øú¡Ûò¤Ã\¡K“¢©Á¸çbU‰ãDZê`¼,º@Ñ~;eKİ´¾ñÄn‡œCªœ’î¹…-³îÜü³ÛãeY²Ê¯×œçdÅžåõÎùÞsq±Š€RrO‹k¦Ý÷†ç<üáè=ûÑ%OâÎšŠ -_XU}g|+J$ÃWºD·ÚöÐêºÕÍ5e…{¤sk]6¼æt¸ãŠðš“ÿÞgíãÔeÄË׉§–»}«O-æ„ô…µ®Î†Ð#Xˆãš¾&—ö@f~¾¨,¨ûÆ®UJcçõòü_ÐY#u¢½zÿNL>+ }¾X`7ëþGW>ÿ.µ†?8vAÜš|÷Ëѵ;ù/-É,zr1CN¬êáͳl|šu¸ šZ7Àþåÿþ' -(Ô°'0O§üâúŒ endstream +xÚíRiTSבª¡¬2©¤j=,ŒiF
!¡€DŒ¢až$æÞ[’{éå’2ˆ8PIU–EltÉ(*J…UE (µÄ*´€i¡„e-Rµ*N½`]]¥?ßûõÖ;çÏÙßþÎÞßùΦ¹…Ë"Û +ˆÃrÁÐ 9G ð+µjÀ]Ø|!o™Ç§Ð@ –¦Ç‘<é$>i`QÈQ •*XCÖPÈÕ@†)˜Ð3Hë&n¤ƒup:ŒgÀ“Âá +ŒïM>qÓóRmÃùª çڂ鉦¦ààªEM3±ž€¹n~Îó}f;ˆ,@µÓ|¡[Wt_u6Û‰7>¶à˜Ðë@÷ŸÁK"MǽäÚnž—º“y?bi–÷ï6çÂj“õÞµ'LßÏY²ŠÈf¬Ý›z¬&¬f›FÿH0kÏQAýCŽMyöÙ'¢¦ï”ex¨óÛøt)½¶þrí#¡(üye2õ?ÓÒŠâ¨åøXV÷Ìšõ<Ÿ„”WÝ~‡×¬ÎÚµñÁ£›Ël_OÚõ÷¨iâOKr_oé ÑÚ9Š›ÚãÍèÝ£ÆÛß÷!‚Íg:jÝ}c¾Zì×B;ÿË芵®£2"‹Žõ,´î§AÍ•šZäb¹ Oñ0»š¤ÎßJž¸¢¦æ4ö`‚vè剪’(V®¥gÅI/7bÕh¥•-–œR/µšv{úèãWËS|Ó«¡ü†òÿŠð¸‘Šqß;]ãÚ<çËÃ…?Ÿ^&UJ_ÇËö$ÏUfêus2›ºJç9”ë[N¯ÉúœûÅ)Cã&«9øjI8ôµª}Û5ç+¡QöÎæhŽûìHLG¾Í»9…+©ÔOPÃâºQݾºÐRKß‘3#ß/0Ýñˆr-—¼²Žªl·.K8Ä:5*ë
»/TÛ¥ÄK#òm·’6¯’Ö5ße·sP•]Ü5» yÆü›~ry´$CVñeœß9~~FÔÙ`^Ÿÿ¬oÝ©()çÄ`‘¸ú@Ê]qOhö3ÿïÞƒÞ±
Yô8úŒ±°à¹EÕ{Ú»¼X2t¹St³u7¶KÝT]Z°[:»Æiý;!‡Ú/¯:øîj/nç}Ò6F]B¼xr©Ë×úä"NP·áaH˪L=܂ٯîmtjógæå‰Jº®ïV%5t\+Ëû”5PÇÛªöÍâDæ±üÚfà63î}p%öÓo’«ù£çÅ-‰W{>Y»ƒÿœȢ'1äÄŠnÞó†'™á‡ò«¨µýìÿpQþ_ࢀB
ËqÓÈñTÊŸ²%Œ»endstream endobj -1437 0 obj << +1442 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2686 0 R +/Encoding 2708 0 R /FirstChar 60 /LastChar 62 -/Widths 2687 0 R -/BaseFont /JPKESS+CMMI10 -/FontDescriptor 1435 0 R +/Widths 2709 0 R +/BaseFont /YKOEYZ+CMMI10 +/FontDescriptor 1440 0 R >> endobj -1435 0 obj << +1440 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 -/FontName /JPKESS+CMMI10 +/FontName /YKOEYZ+CMMI10 /ItalicAngle -14.04 /StemV 72 /XHeight 431 /FontBBox [-32 -250 1048 750] /Flags 4 /CharSet (/less/greater) -/FontFile 1436 0 R +/FontFile 1441 0 R >> endobj -2687 0 obj +2709 0 obj [778 0 778 ] endobj -2686 0 obj << +2708 0 obj << /Type /Encoding /Differences [ 0 /.notdef 60/less 61/.notdef 62/greater 63/.notdef] >> endobj -1425 0 obj << +1430 0 obj << /Length1 1199 /Length2 2269 /Length3 544 -/Length 3057 +/Length 3056 /Filter /FlateDecode >> stream -xÚíWi<”k2e$ûrYF3v*ëØ:a4v*cæ™1Œf±d(N¶²´I–{*[¢ÅD!”ŠRÑbÉz:Õ{z}{¿½¿÷y><÷}ý¯ë]×ÿ¾î’<§aF¤û€VtKDö” -
‚0t; -'®øbIxK"…µÒ6€ðe±45Ix²!™$$
diªBÅZÒˆô€&|E?… ÆÂ4×ÒПF¡…¯ ‘(4âj{Dv ¦3Äm1@&øOdº(-”!Ê -]œe(„ÿˆÂP¨akÄýêè -~»Óý -c7£‘© Öúf¤0(¡ Ka|¿ÍÎw¹‰«ÄÒ™”•+…è¢Áœ|)ÈdB‡² -4â/I-i:‘B#84¢xñ‡a&°H§Õ“‚b¿ïI¨D ðÁ~:aÇa¿êË—̤C4^Þ×nÓsžÿÊ–Ó'S¹ÆÜö’þ%Ò:ys™9l‡¯q¥çz»õ\ iÒ–Éú!þ†æMÈÂ"ñÂÜ6‰Ro‘—wÚmžÚ„èžFµI¥“ÌÎ}cvÛæƒ|Ù¼»’±Å=a\],zë¢Ç«×A0iÙ²‚ -^‡×ýª†âK±ïl¨QŽF°‡œfÊ/öH6ßîëu>©ìöà«{» RÑ$ìÝ×Óœ_7úa‚5œU=å#í^¢oÔ|ïºÖ’oiié'°@w·ö¾Àaõ®Ë®ˆä±Íæj§D/±_½•Œs;T¦ÐZYZø¾¥øIÞ½ZU%ôKeÙGË-GZø…›ZxÄ 5øúIi›¤m[¢y$Fw§Ù’y6R—}ñ‚×É3²³saA²¦~ò9Ví©íŠÌ«.QÖWpÄå÷RGMnªŸíy>é¶Õn³Òïuwœè„€®Ï‚MGÛ¢ûà·ËÕAÒ[â‹:Æ¿ª8áíÈzC—Àù‰ -Õ5§ZÚOœ‘l:ü…O¤?qÒUÁ_æÅç<çÒÿî‘çNøé4.×ío7ëÏL6Þ¬³®¿Q8¬ÒôåÓ®ÈqÏÒl"4÷ãòn¶ÊaùôÍ%_FLæ»NíÝzFÓ°ƒ‡ÜßÄh næõô~·?vÖø\æ=+å2ç¤ì¾—¦m÷ÃÚצ¿:4÷$0õMíàÙVï°4µé‰Ã^·ßr˜C]G]‚sê;å"0—«„$´v~ñvÓq{cr%«ÐôJòf×k«é;gïn¯±*¿·•§°(öxkÙà*^Ûð÷rðÁIÄéÁÃOy¢’Tfô¸:•&RåJÞ_߬g¹àÑÀ—ß÷ˆÕùO äk°wÏÁ<Õ[öÌÓßD¥Hýþ^ÒQ§a»‘~Ñ0Y)±ÌF
cñõ-]ËÝ~ó¤&–qUo¸WÉχpJÿz~ä”™nKúñ|
IF4üfwV²˜l”ñÂMÅãcîúµ½€Ð{o«Õ‚Ö,Ý,3꺼VS-T#óÊȪž&üñB’W¡°LÿŸÊÛ
Y`Aضú×tSÛu6³ªCÃ1¶w|z«™_¤FoDúQÒ}Á¨œÒÔ÷ãÂc=¶¬ÛâzEHNÉ5x?Þ§î÷äXY×ÁÓû‡‹ÑâœA‘¬ß^l¼¨}VÊ:
œ \H²¢ú :<Rãã2÷ëƒpÞ'cÌñ>èxÛˆØìI’^–w;êƒ~á$JyÏ9MÚ^¸;®þ—^æi¡h‰ -Mš®:p½=CÇÐ7ààBê'ÎaÇQ‡‚öwû¼ò3®Æ,9°½&eÓœuÞ„s;Þ:ÿ ‘³q±(9Q>þ€¢‰¿î¿®cªWcÊ'O·sº`özㄲÞg3
¿ÒùŸ]µ¸e„ç#ÞÔÖ&íîXË,…ÈêŒd·õ‡3 -œpV~àã.wýs‹°x½ª¤eJÍw<iVE5¥c¼ñ!|îÖzÁ®/àmR/d|)ïÙjvõzjWÆ
þ"?v®)(fv›s:«z5'A;$ѧéb§Œ·tyrQøÁLj–üÊy)þxq¢ó8·û-U´nƒ|÷³â1ÕˆDTPcAqdÏ!gŸON±‹¨võ§§²{i)¢Çä4S¬3“ä‚ÉÚ¡åÅÀC_¸ÞpòúVÚ½›Ÿ+Ó¢•ÄF¯>9+ÚWXûQìk¶Ö‡+4™.z‰Oè…²=íŒÈ7gRzù={ðÙøWQ!¥wuô&e¢'’„Mbˆ‚ÜÛs˜í¼;à‚ùÒFÄÉG©¤ß§ÞåZp´HtÅõZ7^{³Ù²¸©ûáõmþçû£g¬ø'ÊsñSÞ“]̹þ¤Ü|q®XLºª#¢2+#Âî´CU|_¥Ç:Çb?‹±í³ùÑ9¦&4éŒ)|F¢x‡àpžÞÉųX²S•¢žè|¥Pä.'•û¡›ÈB驦”L“ø™£CDÇBnÏÄéG
ç–¸y\*¾ .)=Aòxê¼$ÚWHä‰Ï{”mKVû‹ùüyVÛ gׄU™àrYßÇbõëz=É}ÊuùüÆ›á¥ìMÛÒŠyk±wäSxúò:%Pÿåÿ?Áÿ -â,z +xÚíWi<”k2e$ûrYF3vʾwÂhìTÆÌ3c3Ìb_Š(N¶²”H–{¥¨l‰"k´S%K–èÔûЩÞÓÛ·÷Ûû{ŸçÃsß×ÿºþ×uýïëþð(Èb°j¦šhE£2ÕÐH”`Oða1°8ê^µ} ‰eËÄQ +øK4§ƒ8&™FµÀ1!'_`‡£( + +'¬ùbˆ8K™¹Ö6€ðe2
ÔÕ‰8²!D$dª+CÅZR æ´€5|M?2ÄC…©ÿJC*-„ñKˆH¦ÖÛ#°Õ©ä hkñw +
ÖÞï«ýÐáhTJØw{\ +tqÖ”!ãÿ# +@¦„ý"îgGWðë…ø›îgø+»)•D5´ÆW#™aE 2ïûuv¾ÉMX¿ †Æ ¯]q(DýæäKÆûSA:”u¤~JjIÅÓd* À2¡ÅÑ ß
k0žE§C:ŸûmO$C%‚`(ˆ‡Òð»ŽøÕi\¾h*¢öê¾f›Žóâ–Œ<™Â1†älµ÷/“Ô*XÐË̳ÀtøU{n´ÛÈ‘&i™¬â¯oÖ„Ü,(/Èi“(ñyy·½ÁÖ™-ˆžYT›Dúqñìü7æawlÞËV,º+™w bh"1Û—=^O9À$¥+Šª¸&•õEWb§l(ÑŽ°~v³Ê/öh6Ïžu>*íñà©{»$TÕ$è=0xËŒW;¦?Áά™ñ‘t/Ó5h±â[Þ@\¹È,ÒÞ£¹?ð‘j÷eWDòûØf3•ÓÂY¯ßŠÇ¹®k-Ž*/žn)}RÐU«¬€~¥(ýpµåh¯àpS—t z_>*lp·mKX6‹²ÐÞmºb–ÔÀf_8ïu^üŒô‡ì|X´‰Ÿl^§U{j»<ãšK´õU,auZâ˜ñ-ÕÜÞSnÛí¶*,pßpÇ +OÊèú,Øl´‘-z +/çÅ8—Öøw=wÃ?K¦q¸î|»UçDfjŒ‘è£j0ëú›Å“Èju_ͪ<÷,õ&|ó@0.¡àV«†G×LüUäT¡‹Þð̾m¡gÔõ;¸HƒMô–àÆ`nOïwbçÎöZü¡c¥X᜔}Ò÷â¬íþãûÒºÑôׇž¦¾©ÎmõKS™<âuç-›1Ò}lØ%8¯¾±S&Òâò%1ÝŸ½Ý´ÜÞ_Í*6y‰¿Õ=a5{7÷Þ&Ññ+V•]Û¹ŠKbO$0Wõþ¸Äm1-žBäyƤ4§ÃÑ©0U”ò0_üþÆfË%žÂÁ{GÎ}Å'À*l—ƒYª·$ì¹§¿±R[‰êý}ÄcNìž +‡IiÌKˆd6ª‰†¨në^íñÛ\ '1¹zœÍ¯|Óý’ìb»ü¯GO›j÷2%/^±@’Mz¿ÙÝ‚•-'d¼tSòøM‚»~@/!t¦m5ZÐêå[¥F]W—Ò®Ô\ +¿ym`UOüp>É«XPjðÏ?eíF¬õ0 lGýÄP#ÍDëNͼòäÈ£C¶w}–újŸ%úc6#ýÈñ3Ÿ.t^yêÐô‡¸ˆXm¶¹^ƒ“óõ¦Ç›âTýž¯èÏ9ð¨-ÊÊúíåæš¹Öià$mè|’ÅÕá‘—y +1qQI¢Í1mä;Å6\Õ.B_·?ôB_=Úqå•é|Ñj +aau쀡™AO_b„D\u>UHx¥WÆ}çÐã[¾»ÒÇ3P}~ûÃ^T]/J÷ÂV%yN´ÖÒ°7OJÅÜ)4?½›-óÆº•Ÿ¾17F6êl¿Üå…³Ps26ºÝfÛË»÷z«ßSµ¾»4”|ÑS^·Zn]€_Šÿ”°Õ[KߺexCÃâ¢úÈB
PßÁt ^ÕìtÛè0Øh|wËÊbëdª¹-»¤z5\y3u#Oø‚±Î³ƒCc`v¿±'‡aâcÿËi6UÂwH½–²™©ÕG¶ÐŒy˜È³™²å'‘ÍÍ)2\„àOÜŒŸ÷·ŸøT{žcÉ “v/;Üõd¦‘‚a&ê¸|øé›–î}1ÃbUp]М¥ûÛcN³]§Ýî¢ü‡Êà©ÙŽíŸÚ;ëúÞ«¸´•;ÜG) Íõ1>É-§\02‰ë<Kø +Íw=©V%WʗƸãCxÜt‚]_ÂÛø$^JùVÜ»ÝôÚÔ:¯Œ›¼%~¬|PÄôz;'«fµ F9,6 îb§ˆ³tyrAðÁ\jžôÚy%þDi¢ó8§ûme´vƒlÏóÒ1åÈ^sDtPcQiTïagŸN|±Ë¨2VÍÇg²ûèi)ÂÇeÔS¬3“d‚Iš¡•¥@¿/\çQòÆ"fZ×OÕÎi1 +¢ £×žœ(®ý ò%[ãýUªT7L„+ô|ÅÞvzÔ›3)}¼ž½¸lÜëèò{Z:“|úR1“I‚Ƈüœ;óíÜ»àü…’„©G‰¤ßgÞå›sòµˆuÇõY7^ŸÀÚl[ÞÒÓc‡ÿ¹Á˜9+ÞÉ +Ç|ÜŒ÷T7ca0)¿P”#Ö"]YY•i—ãp)~ Úcƒc©ŸùØÎùµ<cªdÆŒV!=Q´ƒÿQΩ§ò¹’Ó%yÿáÅj(C'¥û¡[Hé“©&äLãø¹c#ÇbNÏÄÙ‡
gW8¹\ª>#.*<Aryk½"ØW‰ˆ.zTìHVù‹ñâEVÛI,ÛpÒ*áLp¥´ïc‘Ǻu}ž¤ÅºB^£ðrÖ–i¥Üµ˜{C²)\b¨ÿòÿŸà‚ endobj -1426 0 obj << +1431 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 97 /LastChar 110 -/Widths 2688 0 R -/BaseFont /OPZSNF+NimbusSanL-ReguItal -/FontDescriptor 1424 0 R +/Widths 2710 0 R +/BaseFont /MLNZMM+NimbusSanL-ReguItal +/FontDescriptor 1429 0 R >> endobj -1424 0 obj << +1429 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /OPZSNF+NimbusSanL-ReguItal +/FontName /MLNZMM+NimbusSanL-ReguItal /ItalicAngle -12 /StemV 88 /XHeight 523 /FontBBox [-178 -284 1108 953] /Flags 4 /CharSet (/a/c/n) -/FontFile 1425 0 R +/FontFile 1430 0 R >> endobj -2688 0 obj +2710 0 obj [556 0 500 0 0 0 0 0 0 0 0 0 0 556 ] endobj -1349 0 obj << +1354 0 obj << /Length1 1608 /Length2 7939 /Length3 532 @@ -13164,7 +13301,7 @@ stream xÚívgPTݶ-HPPÉ™&çÐÉ™–œƒº–††î&K(HÎQÉH’sÎ 9#$ˆ€øÐïžsn}ïüº÷üzõvÕ®ÚkιÆs޹VmVF-]^Yª„p@óùž4`ö–Î(]°ƒ¯ÜEXYå‘P0†pP G8ÚCзÿãºP( ²BÂÑ€Û¬Z -JñDÛ‚Ñ¿s£`·n +JñDÛ‚Ñ¿s£`·n uƒZ|™BX‰¼LLIB—Qdt
(<okbu:æ}Ò{ŸíûÑ쓼,Vôâº4¯rèéMûäŽãÏõg\=-äpöæxèA3gkö£¶Qî
~ó<¤]ÃpÏà µ%l“Ç+Ú:æ¹×w醄x‡ß9}™]²}IYΉ¼*"ÉVb—åìì²Å|ý~ÎÞÑÛÝÕÙ|ŒÓºNÉÏ*î‚MÈæë”N#m¢_äa™ŒéøÛÔªÏ!´0sL^µ$0ÙÂÿTh5ë¹[Fúù{ª\™ÏíßÉúÐâ¦Ùé%üföC ~–fí*!Î:‰EvýÔzð´÷Û6гßÕ•Ü ê³º£Âgü«e‰;}ƒv©b]ùßÖÒï6”‡ùÚ}sø.Gj¢T«$Kñ£•I
âQ–®‹Â~ÒìEÛ1w.ì*Çbr|¬½}$oÖ‡·Gs]> Ã?V1ñŸx£+w¿³^õ9’e‡Ð†ŠÚ¥ÍäÊu””7œœ¸äNÑ÷ˆ¨/ùŠõ.‹ú…'Ð)á0äPùÝÚ…ke ¸éÛR§ö ]8sô&sß±|*åŸî#>cÕ¯‡‹úœ‚œEëÑymeê÷AÆ€>8m„1œ4¬jõõr¦XÜâd8„²³¤¿V>M¼çÀ7ÁÜ&N\€*ÄJÒÜOµøï8•^Ýçôáö¼J%qõ‡ ‘®.µ&у;ìXBÒ0ÊÚcVKŸ0-S۷ߌG?óí·Eƒòñ(€(§¸Ëš’=´øô•ú+y\J6.æê”‹‚œÞ»ó^eúÞ‚·V„(õb*$Ã=AÁžéÌmEéïa9žoñ€Rý3™ÙÑS×!÷8ÎãÒ9‹ÅÕçÜrƒÅ£‘C™Äù\‹-ÕÕ²k±ò¡øáÃÍ8 @@ -13196,35 +13333,35 @@ QH;ǘ¢&šùŸe“ô¿žUÙ|µ°Sc0R2YE]¨ ‡á{__bçâ.°ßþ LóÃI8GU–¿Bã¡\‚–Ÿˆ{éõ´Sû›7M‹Š–…;ûÛ䃵h¹0GQœ&÷
<‹"œ_ý¼ÈAze‰ÀN2ÿPÜJ"u]©¶ÕLòs.}æQùü‰iõHö5¨ñ‹‚‘öqLðëƒýUj[’ =Á®…1Ñè²YÆHOŠåoq ’„!¿‡RÒ¯¸ð%ê«~u¯³¿0Š×·6î;>nE=m½aÔ\{\ÄcïQq”&T/bµ^þü‹}m“¹ò
A’ü陈×O/ÍI>c×b%ÒÌ&ìýºªú· ¶mJ;û7žb{ª6eC‰Æô_è<@ÀbW’+Q'‘šäçÚU›‚ݧ/ˆ+ƒË°a <¤þdÑ
_IÒõ.˜ê¢Ï\9¾§é-xÚÖ-9?›ìÐv_wóý}¾éH`…Ñ'>Êß4¬>äŽT‹¬ÌÛúGäµGÔà…$Í ï‚7LI›u`žUJ2ì„΃79ç¯~f´láÊΚìïW5?|¸':U—.ûrJoÇÓlÔË5áAÜçxE ³º×ا‰3Ç•ÚTñ#åKþtâ•.iKW@ö/É›ÔÑ÷ ûj&Q ¦Œ²È˜¥t°Èð§Äh-ؤ1íý b?e¾™F Š– ÉXrÙ/&Šjz©¨rAÁM°re.2Òe%ÉÍ£™6"5[¹(H4:\mdb“™[i:ýP½2“¿Ýä÷ö0JÑ»pÕh¯QšQ¨ý±Qó_»Ã7;mþã«÷Aú^ÁÐ;Óèvñ¡Õñ¥ã«*’Hóß¹,QëtT½}…ÁbWý€g”ùxÔ$Ó¬GÞ×™®'}¡uÞói õ´’D§ùõ; ¼xðÞԡư~.
°öâ%ÅÅ4O”˜»ª¡Þ»Bï\ÿÆÈæ -†ìvm…$t§³ÎLd?莑ˆ+í–«I&VñZ"-¿35MGöÊìä§7À Ñ4‰>ÅauA×W¯½r‚…`Hã×W{Ûw1Û®¹E¥^["W¬%BŽ… >«íÜMÑ#nNCuy‹¼Hû%Tž,TÜþ0]4.ïdîžk0œPañœ„5ðYÓëF–?ªU'?Õ‹«žäfü¸Š·Ö¤qCr®až1j,†º¿÷2Ó“=²õáÿ¶D4ÏØeÊÀ¿I
Üóv¼vþ´b„dîÿ¼ø)xý)\+"oÜ´¦ÜD1å[|)h$úØûeGUeŸ?õ¾†Ó<åízznKB†Éd–¬ö…Àÿò!øÿ +†ìvm…$t§³ÎLd?莑ˆ+í–«I&VñZ"-¿35MGöÊìä§7À Ñ4‰>ÅauA×W¯½r‚…`Hã×W{Ûw1Û®¹E¥^["W¬%BŽ… >«íÜMÑ#nNCuy‹¼Hû%Tž,TÜþ0]4.ïdîžk0œPañœ„5ðYÓëF–?ªU'?Õ‹«žäfü¸Š·Ö¤qCr®až1j,†º¿÷2Ó“=²õáÿ¶D4ÏØeÊÀ¿I
Üóv¼vþ´b„dîÿ¼ø)xý)\+"oÜ´¦ÜD1å[|)h$úØûeGUeŸ?õ¾†Ó<åízznKB†Éd–¬ö…Àÿò!øÿ endobj -1350 0 obj << +1355 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 36 /LastChar 121 -/Widths 2689 0 R -/BaseFont /OUKCEO+NimbusSanL-Bold -/FontDescriptor 1348 0 R +/Widths 2711 0 R +/BaseFont /XTUPOE+NimbusSanL-Bold +/FontDescriptor 1353 0 R >> endobj -1348 0 obj << +1353 0 obj << /Ascent 722 /CapHeight 722 /Descent -217 -/FontName /OUKCEO+NimbusSanL-Bold +/FontName /XTUPOE+NimbusSanL-Bold /ItalicAngle 0 /StemV 141 /XHeight 532 /FontBBox [-173 -307 1003 949] /Flags 4 /CharSet (/dollar/hyphen/semicolon/C/D/E/F/G/I/L/N/O/R/T/U/Y/a/c/d/e/f/g/h/i/l/m/n/o/p/q/r/s/t/u/w/y) -/FontFile 1349 0 R +/FontFile 1354 0 R >> endobj -2689 0 obj +2711 0 obj [556 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 722 722 667 611 778 0 278 0 0 611 0 722 778 0 0 722 0 611 722 0 0 0 667 0 0 0 0 0 0 0 556 0 556 611 556 333 611 611 278 0 0 278 889 611 611 611 611 389 556 333 611 0 778 0 556 ] endobj -1346 0 obj << +1351 0 obj << /Length1 1166 /Length2 8911 /Length3 544 @@ -13236,7 +13373,7 @@ xÚízU\\kö%‚»înA‚»»;PHî®!x 8îîîîîÁƒ<$ýý¿ÝÓ·{žæm~Sõp¾o}ÖÞ{}ûœz) U
1Kˆ9Pveá`e „8 l)qøCÀùÏ$AÎ@‹×¦¼Øþî›âöùØ -¶ü³%K7G6-0ÈÉ
('ù?Á¯ò¿0k +€‡“Ÿ +¶ü³%K7G6-0ÈÉ
('ù?Á¯ò¿0k +€‡“Ÿ qýñ$X8x8þÆiÚ€,ìÀ@—׳ø“‚-ÿ–R l±®¯SiælùOàÚÂÍÙùÕž?èõÞ¿öV ×@O òÊ"ÄB0Ô¶6´ý¡ZŒØƒe’«Wëî·97rŒ=ô7V˜^e»bîÜÛwŸ³$UÇl„+
`•`¡Ã㉥bø<ìøÅ;X°°Ã°`d#‰NYë„”P/駯Øûˆ¢ R¾Kx
Ê^P”ÝéÑKL`i„CpHôœTà‰ÉÊò+TŽøñž‚ÏUdíýÕàçG:%Ùmƒ#RPä»géäõQOï±+:°LûÅÑxæÃe]k/͉õJø:'º8ŸlJÛ¬žªGóy乌טòQK6‡
Ñ+íLvþ˜ð‰Å16(ÎñkX„Éßš†+…¨pœº–QÄ´Ôß^î)RêÔ[W,,¨Þ‘õÉ»ãp%n×)iuGYÖǚπñZ¬Õˆv4¹›îµ:®uľõ«GZýÖ:„<=Ÿ@‡ª˜yÝ—l:GBÎÚOAs½À:rÁUuiw™ª¨,w‘ʽVç±ÌwZ6ç]ºš½žW߯e͹„縤h£öÙ8âØYWÑtÔ¸c}ü5æ?°5&Jt”ùËÞ¨—OÉËÛòÁHÌîZ‚pr_‘\OœÅ±„4šß²~òIÝbâí‡y"ûÊ“¬4òŽZ¦¿;‚Àždz™RÑt[^cíÆ=ðàæ÷Ÿ‘øÜÏ•ä
=X}§^ÍóâÓÌ:Ë;}ß%[µ, ýÉЛ>µÞܱ^4AXç%ä#¬wÛ±W:eÅNã¥S¶SÈ“Hf÷ÖϦŠKuP·}.óF!Ö§•"k¯“/ågö«ÉФÁ ê2³Õ°"Ý ÝkÇÃñJ @@ -13266,35 +13403,35 @@ g~nM"up^ÅÃÓíÓêè” ,{!5ÿ8¿UËn Ðú‡ä9¬PjK¢!zóÙ!ñHaŸ´Þãïÿ¼£êOß,?€úVÐz¾’¢Œ¤ñ¸gTW-Š«XÑèƒðN¨PÊ94X}chAc~‡^ÅûI8Y½-°Ji¾á.˜<®¯ÇIâšo,¦ÙNì¥#ÊͽÊûÊàùk¤lùnýh2³ÒþÝu<Aíâ$FŒþ¦ÏD!þ:ƒêj%FDõŠ‚QúPÀ„´èÖ#מbG¡³°ï\ùe%mËf›‘g'CÕ䦨Ñ)Ê$‰‡x`A%*›H«¶#Ì'å;…p‘ûÚ9ß/iÔ¤N…ï#‰yàE×Óz˜8ƒÄÛ¼êpXe€N®Ñ †µ§r%ç˜û7¯¼Çé&ï`Foùª’׬ó›}tW™ë',4Ó‘õÊ™‘8‘À`Z*\-šðú[Ü‚JåÕ®{i!Ux„T
û•ˆ¼‘‡ômÙ85û)îÛ¼e¢ý¾KµÔÌ;¨žè{ÜÈ¡¾è{´Ñe¼Žò»~!–±l˜×R¡^n`žTG?ÂŽÎCMž—û[©s¬ ;ZWÀá¤ì`±3iSw-iUÉCW ÚVâ>xj„E‹ŒwêIo³}‚üH—ã Örú ãkÑnT‚e¿S< ¢x
K»«-1…‹54ËÆa«÷-ÕÜ@ÚUóªîÐsL/}8ÀѶ›Ñl¡ò‰ó9È+ß©O¹È¨qD‹£RKˆ7hëÀûÚë,l³Ž[‹x³#‹³ÆÒ4 -¶ÿÚ®½–ZJS•ñ~´õÓp+S!¨yWC6Æjy.Lä“X5^g˜Â£˜ýÿòƒüÿþŸ°°š9»BÌœí}œ.®ç?þ€‡ü¿ +¶ÿÚ®½–ZJS•ñ~´õÓp+S!¨yWC6Æjy.Lä“X5^g˜Â£˜ýÿòƒüÿþŸ°°š9»BÌœí}œ.®ç?þ€‡ü¿ endobj -1347 0 obj << +1352 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 2 /LastChar 151 -/Widths 2690 0 R -/BaseFont /PVBGJZ+NimbusSanL-Regu -/FontDescriptor 1345 0 R +/Widths 2712 0 R +/BaseFont /KSZZXV+NimbusSanL-Regu +/FontDescriptor 1350 0 R >> endobj -1345 0 obj << +1350 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /PVBGJZ+NimbusSanL-Regu +/FontName /KSZZXV+NimbusSanL-Regu /ItalicAngle 0 /StemV 85 /XHeight 523 /FontBBox [-174 -285 1001 953] /Flags 4 /CharSet (/fi/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/five/seven/eight/nine/semicolon/A/B/C/D/E/F/G/H/I/L/M/N/O/P/R/S/T/U/W/Y/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblright/endash/emdash) -/FontFile 1346 0 R +/FontFile 1351 0 R >> endobj -2690 0 obj +2712 0 obj [500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222 333 333 0 0 278 333 278 278 556 556 556 556 0 556 0 556 556 556 0 278 0 0 0 0 0 667 667 722 722 667 611 778 722 278 0 0 556 833 722 778 667 0 722 667 611 722 0 944 0 667 0 0 0 0 0 0 222 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 556 1000 ] endobj -1305 0 obj << +1310 0 obj << /Length1 1624 /Length2 9769 /Length3 532 @@ -13307,7 +13444,7 @@ uTa{µ©[ØC ÈÉú¬áðŒ=“i@]`.–Î'àÙ«†ŒÜßqÂl€°?¾] Ï0 ÃÕâhýÏXÎ`k 3ÈìâòLóÌý§:ÿÌð_²:9Ù{þe
ýKë?c€À\ÀöVì\ÜÏ>-aϾ!ކEÑÑ -àâü[ruúævþ«@Œf†é9 êhï +àâü[ruúævþ«@Œf†é9 êhï ktòó* íþ)áëB¥æ÷•!ìµcÂMž3‡NÛJÌ;/íÚ“À'¹¾4Lyø+ô-,;¦…Ø©GúÑÞ§ßUÖŒø9õv6F4µLîQ(ÇZxœÑN¯™hÜòi¯œpü,“¿Æ}ë…{Qõùðˆ>aÿúŠ¡g°¿¯·ý¹s›œ%+NÄ
›>*à]¹„‘n©w¸ìà0>¦I‚Ôõ’7¶_„›üë%^ÍœKüÉâWöIñ‘ë¨âx&CêŒm ä¿àh×ñ€F3>ÒaáÓ®GÀÇíí3IúYbɘ¨•šâÓ,&ÿ$ˆ)66ï7¿ï†%ër¾Ê_îoj_Yüíl§¾v‹w'J‘ñwÛàÎ}¾ÇÁú„l±•÷êµÂœé7ƧøêjܪŸl±Óä½ ™ç @@ -13348,35 +13485,35 @@ aÑF"$²¯Ö|3ß!i#ÌT<ÆK[tô p;w»Ô.Š[° §¬ì:9§ËY×ûM¹6È"Ù~ÝßïJ™uz¢ƒÏCz ©aÞÉ!âÚª8µs¨•<Ä×
Òð쳯†²Å³XcÄ*3å²›Ëj†Gˆ4£j2Æ÷Q@\}’Tyž¸¢i¼á8t‚ê·ý†ó`gh‡M£ïBD¸ëÙ›0Âp^*•-ºkjÚ·Z»æãÜd¨ÅüîÇ&n»$q‡˜,[ijK„½½%¡“îe6eS.Ââú˜ˆfÄ®ý>e¾î–â ¹¶«ŠØ£>;–¢‚/MòI”¡øi1-ƒ ¯‹3ÿ²]inÁàÞËDÒ>{ÓЈ dx—v³©lò9 ‰N‰+¶¦zöÍñÔ#é)ó\M£[s@Z›ÉR'õRÇ}ËAÕNQ¹IuÒ.8þÌÀˆ‚;a?ú“‡ö8ζÜ8ùx ÐxoAy橵"wðõçÆÛƒã)ï¼àì…ŒÞΊ@ÌcKÚ_Ù¼Z‚{+ˆ•\£\hr‹v·ñjÉæÇ¸((%Õn¹ð·
V•BòÃ{9y¦gN°œ
fµv*Ûï›s**o™^þ(Ú‘r)`lV3°ð‘öTÇãèή hYmš´0”ÚÊ÷8K¯6ù€›§vóÉy“Æ 7D倷»ò§1
\eÌ}¯ø§5ˆòþ[%fvÄÕ'œbÛ©ö¦&©"òƒõ4ìË*Ã5[Dô`1käý¶Õ•Ïê`•rM<4{áôUC÷øwݲðãT5cï¨ûët©„U0í¶»©kµG#G”Ä~}±yôd¹üÄI!ß©¬ÐGÀEîn‡NOí¬PË$‰šÍµÃ‡WgÞú©é!q@¥{ß®ê7ö$¹UÔî¸ò¡Pšè¾Ð›ÍA©a•bg¿fD(s¥ùv®gZÙZP€=NÕòä9èÕ&çýw…$H›Àì×Eg—ó¹-}>LÁ•Ó¦4üF¸pâX•*À¢„ƒ0¸LM+ª[‹Àãco®OóbÖŽÓ%Hé.. Ê X;éôN~'R‘`&‹¤óH–$Ѹ½¤[*¶–›<
ZG„‹m8Blà‚`•‰ &ùf¾±<£>W†2<퀔ã*õˆ¦¸ïÞºÑbï)£(]|Ͳ7.ÅBêOo_™íí—I>Ĺ=à[väÍ$ø¸ºBÎk[œy¸;ª$Ô¶VÔ¶¨ì+Qý †$·fø‰AÙuõ€•ô퇚|ÄS)¬ß©ãb -ÞëÇáØ(>§"´Ô?"¸ÔvÂj“øÓ‹©OïDkº§«wèKêfhÔuÐàÕ–®L~vsÜLðw~ùŽø›f÷ÀGY¯y²™)¿ÓbOú©ogɺeÁ]ñ¡—êÅÇêá0·H—c<ØÔrZ
:ÁÀ]>Ùã‚!ååÅÈØ¤üð¹‘c›€ù«ð#®QÆÂùOsYŽ\$yÓ&ˆ³±Ò„} ÏK÷ØÈó¢ä(ä&&¶¬SÊŠ¡ÊÛË4öË(d®NÏpT¸#;®±õæü_>ÿŸàÿ K{0Ðu +ÞëÇáØ(>§"´Ô?"¸ÔvÂj“øÓ‹©OïDkº§«wèKêfhÔuÐàÕ–®L~vsÜLðw~ùŽø›f÷ÀGY¯y²™)¿ÓbOú©ogɺeÁ]ñ¡—êÅÇêá0·H—c<ØÔrZ
:ÁÀ]>Ùã‚!ååÅÈØ¤üð¹‘c›€ù«ð#®QÆÂùOsYŽ\$yÓ&ˆ³±Ò„} ÏK÷ØÈó¢ä(ä&&¶¬SÊŠ¡ÊÛË4öË(d®NÏpT¸#;®±õæü_>ÿŸàÿ K{0Ðu endobj -1306 0 obj << +1311 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 35 /LastChar 122 -/Widths 2691 0 R -/BaseFont /MDLUDY+NimbusMonL-BoldObli -/FontDescriptor 1304 0 R +/Widths 2713 0 R +/BaseFont /PWFPFF+NimbusMonL-BoldObli +/FontDescriptor 1309 0 R >> endobj -1304 0 obj << +1309 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /MDLUDY+NimbusMonL-BoldObli +/FontName /PWFPFF+NimbusMonL-BoldObli /ItalicAngle -12 /StemV 103 /XHeight 439 /FontBBox [-61 -278 840 871] /Flags 4 /CharSet (/numbersign/hyphen/period/slash/A/C/D/I/P/R/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z) -/FontFile 1305 0 R +/FontFile 1310 0 R >> endobj -2691 0 obj +2713 0 obj [600 0 0 0 0 0 0 0 0 0 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 600 600 0 0 0 0 600 0 0 0 0 0 0 600 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 ] endobj -1297 0 obj << +1302 0 obj << /Length1 1630 /Length2 10888 /Length3 532 @@ -13389,67 +13526,83 @@ xÚíteT\ë–mpw÷‚àÜÝÝ-@€ www4Xp×àNp×à®yœs»ûö¸¯u÷¯7^±kìo͵撹öGC©¦É"nî` ’q°‡°°³² ° -˜Î K ³¹-ÈÅåæû¯éü³OÀêèèhëùw´Ãß^ÿQâ²µ`EfçxËiyËm ¶GþðײÈÛ[8 -Œ»C]ø¶ti ÓRß÷Ý…X«´m¼L»AŒJÑ2uc¼Ïf•ÖaõyØtv7GÕ5ŒJžáÉÆÛ8ÏîÞ»àRß:¢û™¥×Åãµc6¼Ãþöåè˜6ùàî–®oxp ¿ó®{‡„)7‰FÐ
6:À)—DT_»Â;’iºv—"®;)ˆmq*ó‚?˜1û5_ÝN[ë’ǯ=×ç³"/LIê}Ä£›k¼¶lBñ«¨¯¾-š|oRkÜó&[Þ&±ÝñreéòDQnßô?ª[K79Ð7/Ù/–_!ýmÛÑŸ ·¥Ê“žHÕ]Çy÷A8\¼ÙŸ.¶h¬æèú†ô“Bj£Öè®{ŽúÈ£÷ öÖt=¿ !æ¢DÚ–¶bO„t8&óïû·ù#¿-L.Ii§¼µ\’îžhRºª®
xïN -®°V -(Š0¢™PÁ´i—µ…½g`
äÒWDWN=%&jc6–K…Á×M囑êæ>vEÂëÁ|޹Eʯ#«îu€U•ý9å™x¼.dávÈ!ý:8ò¾€Ù€;pñJ#WT ¢Âª^Ûà'áHðmAFr4”,=gK3M¨Ì(R -ª¦S0†¶5§(ƒç•ÒÃòÙ#ÀÀîœj›Ó=âéÈmoßÐ -¸wÛõeä7ÊüÈ‚Wª¤I„ÜGñaquÂŒ†!q”ŠÂÓúF›ºNÑvw=É€ˆ
ø?©þ¤ÝÊCÌõýß{?~µCâ¤ÝXœì†q&ç1j;¯ãI¢™Ô§U$´ö2s«Q6·oÛ†±Œ•°ëãä'n¢ªÌ(" iÅÚPV Ý£BªÎµqt¸Ö•Ým™Y•d>Ã[¶‰’¿¦ÛV¸‰õ»ë+WÓP¬Å`,kE}±_Ys™° -ä’Þ›«+;Wœ‹ò,ïV‘äîIº9^Ü¡U½0~˜ðâÝ^^ñܤOgn}Â]^¿¡%K(îù˜§½ÉõUÙó˜×òÁ -îÑâ§Ó/ÆÔ€P +°-¼ÝyתžVý(/}_#™mѱ¦€*¥f~[ópÏ8V†ÉÑ8ï„$gÿ" N:<3Uwñò›ðžÂp6Ö‚ËI&Rü¬ÜŠÊ“‹pžÓo/8)Ô+~ÛJs§\¢öÊlöí»i{UŸÈ»Ã»4´½ÌM_˜š?Å]FÌ©•A·Ö_\"Óƒ‚’Þ}#FGïK}g|ÿñÌàë":ŠEù×%ñ’õ.C!+6‹¼R±ˆà!Qê˜_};¼È#Ëö]¿?Ü~d'My*½{·8¿á+ínßû·/ŸuG«ø0¢ß§ÒÍéÌ–àb“'¥ÿî¤ûm>‚ÿ«?‚´Q õÞ([ºÁfMÛÿŠƒ´–?Â…?¬Žžš.Tùô+ª©ãJ¦eUq8jrÜ…Yp?Á½Y~H…#úò=*Ïqí·Ï™‚T蓦ò¡E‡üA‚⫘Lm=ÏÊ72Ø÷]‹Õ™+eÉ¥½õ¦½=¾¼Eó@•3.¹w¹Gãd“•.Å/‹f\OFJ$Qó:Ñâ -ýòÃ)8ȉÅ)7è_£Œ·ÆT÷ô壌mMÌœ+¤ -G¦©J¨ç$î}0ÿx¯R7ë&K.iËP6RÔ.<,ë㺥1~4XÛ¸¥>÷Æ ètž•>¢Â:Ñ#)á>æk[¾»ïÛ'Îåõž¬Ž"¥à P¼Ê!B5ÿi‹ÒÌÒ÷ÀI¯´æ6‰ïíÚK²j?uFéi‰W!Ü’½NÒ.TEtmúÖF°t޹.†}-¾ü%`úµÙVîC¢p?VúŽÎëÏ-jû-fÃrÅó$î‹Ï„¬\AËÇlä¡NÉWô˜, -Ÿ`bêTèÖ6çCÅx+Äèô@›þ`ÙvªlÐTw»J·ô+²ùøp4Tâî]” ðâú>êóXÿfßdO¤Ï£\Ï”H:[PC‹Ä²¡-‰Çó|—ÕÏñÊŸ0ï³iov%§Ž=Æ‘»ñfLu³$ŒX«Dm|BØxz’‘:ÍDï¾T–[&n'îóšZ) ¶L`z˜÷Î(1ܦ—Éc¥œ˜*`ï3Ÿ+F(ò¿gVà/_JcÄh‡ÛÑ|¢Üm:rGæ-Ãì]07‰±?×›‡¶0RK4åÀí+—‚`îŽDÕÐLºÎ’ùˆ9>ñ¯ëwe£¯ÓÑ©<Ôº:n;=]7¶cm$Ïjô¨âÉåx¸Õ8>Ãp:'`=2’¬~'¡·:é'î•üc|±#úvN< -É‹|9 -PÙ·åI,™ËúP5—ã´"ªYžBRÒ!¿Ñ)ÑEï…ÅEUÁO»« Ñ ¾ 0Å)Û»9Q‡‚áT¥áååh°¹íeýè²bOäo¿*Þeº}N5à„M=*,".}º.ØÒ
>Dï7¼¤O¯·Äštéþ"Ìs¾Á%ÞÌø-".#S„ÚOXõNèWÇl„Ò]8T‹0üPÔ}zZÝ^„ð!¦Jr½fî:5…€c6Z¸ãGvÝ~Õ¦ÉþÍOqøÛÃÂÈ5Bl’÷eÆT5ª–ü€ÜØÖzä€üÛW–ÎòÏÎBÝî”}]Äè»vµ}V&–h Ô0;5#ÙB탟{ˆ>â‚éñ¯/bú3 13„;6é:®ƒ"|sjü”;“ã´iK—‰Öcˆ^#kJÚ•üMCG&³
Ú#©Áœ¶}äe-Yò -iÓpn¥ISÖÎ.DŠkÞë‹eªñÔY’ªU -{&p–è°ÌO@¤)ˆ -á(ÉÐ'k‚ï¾}ZuqåÙaÕa àuß+•?®Ò,ç<Ü¢p)Lå¶c§z7ƒÜÇc®{Öß°UþÝûÁÞ_)Pùîã0Nh_4SÌbÉ-Œ”²:ã%¹îL¯EÑ)ƒªÇ7D.÷{¸>ÈL¾¯“G‰óEZ:|ÇL÷ -ƒÉ/¡¤èïiÔò;ÌóêôÿLšUïÑ[læQÎaœ¦Ñ>ñ³G÷™=}!C‡áóoΤ…ÃTD^ê~÷Yñ5l{ž³×(᳓* ŠŸÏgé?»ñ\²Àå'Ç…îñµþ@vǸŒ‡¨óÀ9šæ‚Ã?ŸŸ¾èxŠBœZ÷ö´köö†dqÏ‘"$!ˆ
íxðÿ"`£þmÍÓK›ë.¿ôe|ê:Ÿ†›%u@éœo('_ -¸=Äõ¹Â¨ìW|ÝóúõyÆå£¹Œ O<ã–H¦¾kû»TCT•3SQú˜8EŠ9·[Éi{ªðãá²Çäve=§ûïŸ$)e Ù(ïöyï6bU_>`R¨ÿ™2Qt˜çR?=ÝIêbĉ& ¦yÍèZ÷;Ø%U¼å͇⌌àÊ·«6ŠnËLJ˜S2tqŠç+ÚóKÄ0H ûÓ'½ª~Ï”aLø˜±ºÙ‰l½,£ ;ˆ$ùubq¹ñÝ8cC¨.b/άKÌJáÖR7£¸§ôŵRì`çzËb“³Z'º½$ éëý€Õ÷ÒÞù¡À.(?ü<Óo' ÂX£¹ -½‚ü\Oãl}çÏ rÉ^ÜëcërhÁÄ{£x.;9¹ž³¸#ÛO}+öH‡Gzøå%
Æ®¼ð§AjS2kí;<)Ÿ@ZÍÆ»È`n#çPglv<C[HÀB -ó>çxž–HhÑo°þ¦¯£mÉØŒÄ¢o»L£ÇQ“0íñÅùuâ#ø2†Nü®{Q[V¯Àj¿¢»þ?ƒNWô¨?ƒt›á%¦qGGö:¼®*x¼ÃÀÌžÙÍÙ^?£õgf‰•çûúpïîLÂTÅ7^\ý?0[ÅÃèQÄè$†À×}ÝŠIÃP±ªÇdYvgä‰e¦w©Þ$àŒ¢_™×¹Žéß™†Ø'DÂ9ËŒ?h2ó¸%¹ß̆Ó6UÖ¾—õ„¯m“±(ò¨øÈþÉæD¥«‘÷§½ºwõ¦$MMó:2ž“ú©‘ƒ=‡3Ït]ÆF±°i\Çã“%N¥ŠaÿÝ£ÛEK¼ôÑ×îŒ6y.G†(®AM†<ï¹Ö~Êyõ.‹ï—²À.õ8'_e#åBâ[7Q:¿žßämø"mƒbìSƒŽÆZáÂ
4¨YŒ•{t¿Op¡Æ¨à‹!| ‘õj—/™§ÐLve§eŸ(ú]<Žqž(Á¨ð칄…ÏÀßù¨;ïAJGZ0ý7ùˈ¾†[(-®P+Uìp¤ëñ|\—;ï<?ÿTlX8ÎíDò§ê÷ç·ÐÄßÇð“QÛ¡ª›¾ž[,d‰É;´Š±¦IÄW -²
ðêwòoÀ -=+ѺEg¢ŠÖyé5,˜bQÚ¥x®Û:>ùÝ27r¤v¨x©t¯½ <¢íæVþ–(ù’]”Û®ÂãBB²ßâ ïE›Üä ?•ïd -ž¥Ìº”k®ÖPú-F3{^.|àƒM],¿Òck&Ïý"§^{9D_o·äË•ÄgDwŸÇ>B_6õ¦F§zJïf¬E§9åGÆŠ(IK6na mü¹¢äßúta\‘±+O|oÛn™ÔĺàÙ_
$üÔ>Šäkës±7¡{^´2ÐX
úñ©ã³¼€¥=Š&I×}µîäØsU5u¨ÿ’àï"VB”—~²rön‰Ã/A“¯>k]苬’)ŽÄìÂèÌ?vYèäF8ìúš -M,b?Sœ†è‚-\ ì‰ûdVwÑIôœúá~Ö7ŽÄkeAø€›ÂG9”¬™C:¶œ<_}9TïrTÒ^%M…íŒC,[E -tÓÎ@½*¯g :_‹»o]Ÿ°’cü‰·ÑcM -}+^ÂÂí¯e‚³é)À+-[‚fß7j5$‡=á›®bÖ;tZs<u%/é*¶Èø²EÌèÁþRå´6*Fõ0N纄Z
Ä4÷€4rð¿_ÓktV{zd¨%Î`n
»Ú3NrÁ'ÉHŠ¡Q1Â\®©9à -$2ÊÓ‰Ÿ(¹ -+ä—JEšÇ—éáJÝËÅGq¥½oP—Z{@LŠõÈ_ -L„³Â”%$6$n”% I1YÈcó³:Áì/÷HÅ -uÎÂüÕÏÍ{1T¨—t+jªNìpC4ç@ÖîÅfÙä:)0ýôðt<P‹b¥7ŠÔÒ·š‚ù(23¬õÙMö+&cÓl.^85^Z£Luü‰ -ê -EªÊqÓëTéCòâ¯yÇõ•+«ûv©FZpÇZòU1ì´‚îâD¨4ùÓ£Bªg9Œ¤ÁÆ{¾Púé™S›vÑ$‡¾\ñxllË5çÍiéõ$éTlFÚ—}GÈØf<üÈ -ü%ë2bh{açògôCÿ£ÜïW{e1¯éF¾'GŠ)Æa.¨³BG=(”ˆüªCÞÛjHk_×iêPtkºé7ïze›¶ý“tå9¬)U1M¯ž6¾¬ 4*k?¦‘<ꮢ±²àN|×P’.n¹||£ÜU+¶3F”MhÆœ¡¦9Ÿ?hHû›ç—nrÞ-ä0±Å‡ÝÖà’U·¢PA7ÄÜFwæ°'ŽÁìÓÖ‘–º@çPú)B²àFpéœ=ç(®é…àÎÂL„N·Í-þÄYØÒ.ŽF¹ÏîÀ1ÇN4.ì—{œH¶/ªB¥0¿Næ%@»&ZëÑ»BhÙœæ¹áí„WèºÑ$Kí[Êit9œßë;*ø¢FÜíƒPk—×xøOyŒüøŠ¼ÂÛ/¯OwÙóp»B"6àl:ˆ›ŠÕ‚U‘eP -Ç^;áµ³†˜¸ÔÕñXðÞŸÀ»b’¨®k€*G/·O3(|ýhÉ›ÐÅØ%§Yæ6ÈËM‘~OŽ¿Æñÿü
½}»—%Kƒï¦|º9W¼ø+[Xìè¤P˸—úòbhê~ƒÐT¥:J‹ìÛÔ +˜Î K ³¹-ÈÅåæû¯éü³OÀêèèhëùw´Ãß^ÿQâ²µ`EfçxËiyËm ¶GþðײÈÛ[8 +ª:ý3"6ø+LžkBYÆ^[=çŽ_vw‡ºðmé:Ó@§¤¾ïº±ViÛx™vƒ>•¢eëÆxŸÍ*Ãêó°éìnŽªk•<Ó·q:#žÝ1¼w+À¥¾uD÷3K¯‹ÇkÇlx‡ýíËÑ1mòÁÝ-]ßðà@ç\÷ Sn< ,mt€S.‰¨¾v…w$Ó6tí.E\wRÛâTæ!5,0cök¾º¶Ö%_{®ÏgE^˜’Ôûˆ%F79ÖxmÙ„âWQ5^}[4ùÞ¤Ö¸çM¶¼Lb»ãåÊÒå/ˆ¢Ü0¾éT·–nr¡o^²_,¿BúÛ¶£?%nK•'<(ª»ŽóîƒqZ¹x³?]lÑXÍÑõ#è'Z
„ÔF[Ñ]÷õ‘GïA;ìéz~BÌE‰´-mÅžépLæß÷oóG~ÿZ ™þ\’ÒNyk¹$Ý=ѤtU]ðÞ +N#ÌY¶|À¦ ïk¯ðUè`çÉ—ÃnþLJÔÙ°ªË¥%£÷Ü;6åï¾$bHè\™VÚïÅ£ô,>uiàÛ¾ÃÔ…Öô.–‘ŸÿR[š¾: !ï9áttIëi@b`ݳ’ôš¯·;1òØRïóg¨†·ë6L˜
m¦MaJÛ…>îÓ·£^Ñ“¤h§Öå1Ô|–‹O'¤/ñ£.Í
¿2Åàj¦boØë4{Oc©Ù’T¬‡Q|´ âQy®Î:3Ôœ2¡L°
Ù§Ž#÷n¥¤Ý9Moƒ`q°²~ò¯Gµ@¾êú®ŒÉÇe ¶¯D&»æ%ĶvùT +‡Î°çJå~ÙÑϽʵ‚ƒyQ^…ꢧø¼Ñ‘Ì’¬Û‚„ÛQ±´Ebʫ_¢”ªk”ÏϤáÞÔ¸´¦ÈŽÑh¿?ÏÊÁöóî›RõÍðð4$H1~Õ=@†ÁßjÓîÊ2½,Ë
ISd²2aI:<;‡…]?…Š1N]ˆ)[dÙ™L—DXÿ4ˆ—mA3¦™›Ì|}Ië +Ž®õiŠ{ÉÈÏeÿeâ’‹ñNe ä±)ÃÆÎú%˜MÕºt¾Ó=ÒXóª Úø]UK/<b¢@ +Öè÷J|ùÂ’^Û„Üžœ_½ÙöGßyµ¶²‘Xš©~Z7_#IbËã0Xü,O—n¥Rj9ÿ%¨‚£¾ô)§a6O´K< k¬H{€Ñ‘Ì-ÊõbÙòdf~않’ßïfƒ®æ‡ž17ðY¯N%x +ß\a +ƒ=®›Ê16#ÕÍ}ìŠ …׃?øs‹”#_GVÝë +Êv¹Â§µp½þ0¡Ñ‡ÆÔ?~¦:„Ö€ôR“÷Jn<òhh¬ÕU _)ÜÌÛÍs¿©ÈL +sTJßà:ÿ𵼎6C׉tãž%uº"D}ÙŠýã—ÔÁ
Ý×¥nà¤BhdÊ“zJòðáþXæA'ó>Ëá뺖·UE¯L +R¢}hŒDW#uéƒí;aäôôY Â@¥”"=zï”ôÙ¬röÉê…]‰ØŽ6Dü6O%í_o ‚4݆›©È%½7WWv¯8åYÞ"ÉÝ“$ts¼¸C«zaü0áÅ»½¼â¹IŸ.0ÎÜú„»¼~CK–PÜó1O{“뫲ç1¯åƒÜ!éåGB¸¾‰³:}[ +^¢ƒY»€ìëë’ç°ôa¾\ÙNŸØÇ_«h`LD
Å|?w/36Ð'^’¤¬_ûÀ-éV„ùô¹Ý÷§¡¨Ì=Ì¥ßó:6FŠÄ ºCoÙÈÙ\ìO3JdCT¸ÌÕý¦¡W‰6¥)ù¯÷§v3^Ìq~’éÓøÜÊäðç ¤¸ý :‚‹³Žz¤¹ØÕ àÄsƒ?¶pøµ] Ýý
~ðÿ4=ê_$&5AŽ›O«C1@Í·K±§°èŽ;(óE¢Ö–ó¿<3åðÜ£Å9N§_Œ©/ +V`[x!ºó®U=úQ6_ú<¾F2Û¢cMUJÍü¶ æážp¬?’£3pÞ IÎþD@?œtxfªî +âå76á='„álZ—“L¤øY1¸•'á<§ß^pR¨Wü¶”æN/¸D[í•ÙìÛwÓöþª>‘w‡whh{™›¾05 ~Š»Œ˜S+ƒn¿¸D¦%½ûÜMS)FŒŽÞ—úÎøþã™Á9ÖEt‹ò¯Kâ%ë]†BVly¥bÁC¢Ô1¿úv"x‘F–í»~¸ý4ÈNšòTz÷nq~ÃW:=:Úݾ÷o_>/ê0ŽVña2D¿O¥›Ó™-ÁÅ&OJÿÝI/öÛ|ÿW1h£ê½Q ¶tƒÍš¶ÿ'i-„X=5]¨òé-VTSÇ•LʪâpÔä¸9 +=²à~‚z³ +ü +Gôå{Tž
âÚoŸ3©Ð'7LåC‹ùƒÅW1™Úzž•od°ï) +2º«2WÊ’K{ëMz{|y‹æ'$€*g\rïr2ÆÉ&+]Š_͸>žŒ”H¢æu¢Å©Â»Qo„ ,¿¶ŠþBø1æÑæU»?I.Ì=—:fˆ$LsÇ»ˆ°5òñG`E¥ú$ ÞdÉG—" ÄKü•â’\¬ož¿j<І3J;æ‹Ï‚¦½¬?8$f½ß)døô“Öbº}ˆI¹¬2IŽ¡§“™úÚüW©Ùýr‘FÕŸàac›l,ÖÝï¢ûP×w2·Û梑٠+ úå[‡Sp‹S(n +пFo©îéËGÛš˜9WH :L9R•P/Î[IÜû`þñ^¥nÖM–\2Ò–= l¤¨#\xXÖÇuKcüh°¶qK'|î-ŒÐé=+}D…u¢GRÂ}<Ì×¶ }w Þ·OœË!ê=YEJÁA x•C„jþÓ¥™¥ï“^iÍmßÛµ—d3,Ô ~êŒÒÓ¯B¸%{œ."¤)\¨ŠèÚô`és]ûZ|ùKÀôk³Ü‡Dá~&¬ôן[Ôö[̆äŠçIÜŸ Y
8¸‚–ÙÈC’¯è1Y& +uÍœêì£_;LºXä‚‹„µcˆ´>ÁÄÔ©Ðm·Šð*$VˆÑé6ýÁ²íTÙ ©î>v•n'0èWdóñáhþ¨ÄÝ»(AàÅõ}Ôç±þ;ɞHŸG¹ž)‘t¶ †‰eC[[çù.«žã•?a6ÞgÓ*ÞìJN{Œ?"wã͘êfI±V
ˆÚø„°ñô$#uš‰Þ}©,·LÜNÜç5µRl™Àô0ïQb¸ÿL/“ÇJ91UÀÞg>WŒPäϬÀ^¾”ƈѷ£ùD¹ÚtäŽÌ[†Ù»`nc®7Z=l[a$¤–hÊÛW.Á܉ª¡™t#œ%ós|â_×ïÊF?^§£Ry¨tuÜvzºnlÇÚHžÕèQÅ“Ëñp«q|†átNÀzd$Yý;OB/nuÒ?NÜ+ùÇøb-Fô'ìœx +pJXÓ¼²£0XTþÌÝGKŠÎšDÅJˆb +Èò¯3šx9|'ׯà³R*{xiÁ^5X~ØX¨òÃÑÿê‹ëâ†$NÞüy‚æk|ëæ-=ÛÑö¶WbÆæ_‚ÆÙWSf/B(“Š•Ù;¾`“öúšï†wªÖ5Z©Ãˈp)íâÜÏ><[ +ÔO’ùr +·Œ“1ŽD-Zü†'˜ñÿ ²oË“X2—õ¡.j.ÇiET²<…¤¤C:£S¢‹Þ‹‹ª‚žvWA£A|AaŠS¶ws¢Ã©JÃËËÑ`sÛË0úÐeÅžÈß~U¼Ëuûœj2$À ›.$zTXD\út]°¥|ˆ*ÞoxHŸ^o‰5éÒýE˜)æ|ƒK¼™ñ[D\F¦3´Ÿ°êЯŽÙ¥»p¨`ø¡ ©ûô´:º/¼áCL•äz3ÌÜuj +Çl´pÇìºýªM“ý›Ÿâð!¶‡…‘k„Ø$ïËŒ©:jT-ù¹±[õÈù&¶®,埅ºÝ)ûºˆÑ?víjÿ,ú¬ZM,Ñ4¨avjF²…Ú?÷;|Ä;Òã__Äôg@cfwlÒu\EøæÔø%(w&ÇiÓ–.Ç[½FÖ”´+ù›†ŽLf5´9Fþ +Rƒ9mûÉ 0ÊZ²ä'Ò¦áÜJ’¦¬œ]ˆ×¼×ËT㩳$U« +Š|LàwMBq¬%£ä”•£¸rÙѬn?,ÂWMg÷ŸŽRê:l}ß>Afàúx§²ÜwªÆ6kÃè™<ÖÛ¹èQÑ¡¬•,Bä»ÿ¨jF;œQ”kÊD-c›iïú>½”Ï“_B?HÑßÓ¨åw˜çÕéÿ™4«Þ£·ØÌ£œÃ8M£}âg.î3{úB†ÃçßœI‡©ˆ¼Ôýî²âkØö<g¯QÂg%&U@?'žÏ&Ò[vã¹d
€ËOŽÝãjýìŽqQçs4͇>5>}Ññ…8)´îíi×ìí
Éâž#E$HB5Úñà!þEÀFýÛš§—6×]~éËøÔu>
7Kê€Ò#8ßPN¾p{ˆës…QÙ®øºçõëóŒË#:GsžxÆ-‘L}×öv©†¨*-f ¦ £ +ô1qŠs*n·’ÓöTáÇÃeÉ#ìÊz"N÷ß?IRʲQÞíóÞmξ|À¤Pÿ3e¢è0Ï¥~z*º“ÔňMLóšÑµîw°KªxË›ÅÁ•oWmÝ–™”0¦dèâÏW´ç—ˆa‘@ö§OZ{Uý8ž)Øð1cu³ÙzYFvHòëÄâr/â»qƇP]Ä^œY—˜•Â¥nF#.pOé‹k¥ØÁÎõ–Å&gµ>N8t{I@Ò×û«ï¥½óC]P~øy¦ßN@„±0Fszù¹žÆÙúΟAå’½¸Ö9ÆÖåЂ‰÷Fð\"vrr=gqG·ŸúV<ì ô>ðËKŒ\yá…OƒÔ¦dÖÚwxS>´šw‘ÁÜFÎ¡ÎØ +ìx†¶€… +Sà à.C¨êÌæ~-÷fjóL£Ê°°’ÐL ,Š…&F€p(€~E]zsCW _Ùhv{.W~®Ï²éѬL´AÆæ}Îñ<?,‘Тß`ýM^GÛ’±‰EßZw™F£&aÚã‹óëÄFðeø]÷¢¶¬^Õ~Dwý*~®èPé6ÃK.L㎎ì"tx]Uðx‡™<³›²½~FëÏÌ;*+Î÷õáÞÝ™„©8Šo¼¸ú`¶Š‡Ñ£‰ ÐI¯ûº“†¡bUɲ6ìÎÈËLï"R½IÀE¿:3®sÓ¿2
±Nˆ„s–"Ðdæ pKr¿™
¦mª¬}/ë _Û&cQ$ä1Pñ‘ý[’͉JW "ïO{uïêM!I›šæud<'õ;S#3{#fžéºŒbaÓ¸ŽÇ'KœJÃþ»G·‹–x裯Ý?lò\ŽZ
Q\ƒšyÞsý”óê]ß/e]êqN¾ÊFÊ…Ä·n¢t0~=¿ÉÛðEÚÅØ ¦ Œ%´Â…hP³+÷è~ŸàBQÁCø"ëÕ._27N¡™*ìÊNË>Pô»xã<Q‚QáÙs Ÿ¿óQwÞƒ”Ž´`ú+nò—|
¶ PZ ]¡VªØáH×âù¸.wÞy~þ+¨Ø°pœÛ‰äOÔïÏn¡‰)¾á'£¶CU71|=·XÈ“wh3bM“ˆ¯d!àÕïä߀zV¢)t‹ÎDóÒ1jX0Å¢´Kñ\·u|ò»enäHíPñRé^)zAxDÛÍü-Qò%»(!¶ Z]…Ç…„þ„e¿ÅÞ‹6¹ÉA~*ßÉ<K˜u)×2\¡ô[Œ(fö¼\øÀ›ºX~¥ÆÖL +žûEN½örˆ¾ÞnÉ9–+‰Ïˆ +î>1Ž}„¾lêMNõ”ZßÿÌX‹NsÊŒQ*’–lÜÂ@ÚøsEÉ¿õé &¸"cWžøÞ¶Ý2¨‰uÁ³¿Hø©}ZÉ×ÖçboB÷¼h1d ±ôãSÇgyK{M’®ûjÝɱçªjêPÿ%ÁßE¬„(/ýdåì݇_‚&
^|ÖºÐY!%/R‰Ù…ј/~ì²ÐÉpØõ5\Œ4¸N±:IƩšKË=¿H7šdÀÆj2 Ç%L”™K¤”ŽŸ1Ãâæ¥Éq¢ pX“§gn«E®óÂÈcååµsr3dÈ‘m—격éÒ‚¸ÈbýÃÍ$Ҩ޼xETH—3¥ìK˜aGù5ôÖïOðŽ”’€i¡rêš ¥£ŒEäÏ +™TVÆØi.ÌYs2þäìT4a,/h¶5béL}#£»“ªu4w)“4¯²ð÷ÐÐÎV¢øyí8Z¬Ôý†iDÊiú^ø%Ž/%¯N“?åžÂyn5f¸ÙlM_^LWïô-ÄRW-ü‰e²hnÃŽ¼DcbúÏ8‹G%Ya¹—9öÝ·!nÕ0á¨%î¦bQ¯P_sÕxýž¬¥¹¥ÑP¡ïá’*Í#s‘÷ô¼zgâzÈsŒ9^™Ð|Úß³ÌQØIJ’$ÛºD$S¾º¬ÌÚƒ·Â7ÉÍ%bå1¸f]èc¨*ºÄÿŽì÷I\p_¦ÞÉÀh]*ä«ê0´!ÜS}-$Jï§~Ò’\s†ãZ$ºK™—ê#¼“ÕQ~t˜¶Zn¥¡ƒÂÏmzJ5á*gS\eu_:,û˜‚¸¦=ñvZµ7Ñà•*åC=©ÿ8Õæ¹Â•qž¤ðc±½ýµWGKÊšXÄ.~¦8
Ð:[¸Ø÷ɬî&¢“è9õÃý¬o‰×Ê>‚ð7…r(Y#:2‡tl9y¾úr¨Þ婤½Jš +Û‡ +X¶Šè¦zU^Ï„Au¾wߺ>a%Çøo£ÇšúZW0¼„…Û_Ë'fÓS€WZ¶Í¾oÔ:kH{Â7ÿ\Ŭ%vè´æxêJ^Ò!Tl‘ñe‹˜Ñ'‚ý¥ÊhmTŒêaœÎu µˆiîiä࿦×è¬öôÈPKœÁÜvµgœä‚!O’‘4C£b„¹\SsÀHd”§>Pr"VÈ/•Š4%þŽ/ÓÕº—‹âZK{ß .µö€˜4-ê‘3¾˜g/„)KHlHÜ(K@A“b²Çægu‚5Ø_Xõ˜ëáD-vÏrÐÅ#Îoõ~i^Ϧˆì)Ý(w§¶¯W¸Á‡Œ–}ÿ]!AP±ÜŒ¸cÅÿÒæÃŽ¢~¾C¹ÕQ«ÁeìyènÉ‘>õ„2m‘~ sù6¯°mË„¡Ã_°L3ivœüj¼ãSB}Ârå.ô.ñ<Yþ`…Y´‚–aõ0ï†6 +d]xÿħ𫛘ÙülɧÙušñd¿HÔR”7®‚x×ÑŠ„êjesóKŽð.ӦД/e‹‰SAeN4„Ì‘`Ï]M£ `Ðxhç%!@þ=oOGÿ0¢ZìÝjãBå§BvÙ0Ù²§ìF%N*t,guYŽ©8Ò¯L'àq[Ï#e—Õ?fÉFBYŽÈ6ÉéáûÙH€÷Ã.}nÌ"v;µJú³¦*eµŽî±_.¤ºIÁnA;ÕeqÌz1æ1P%Tw
88øãˆÉ°ŽöIÎr—1v ¿âìîfs¨@¶ÃŸõÛ8)ÜrÞ6” +óê +þÏ=ÔͲ{ªõ÷º§œ7˜Ì,œÈ©ÓD~ü¬7úÒ
·«8/¿47Ó +œõdåä‡ëf꜅ù«Ÿ›÷b¨P/;éVÔTØá†hÎ!€¬Ý‹Í²ÉuR`úéáéx Å Ko©¥o5/ó3Pdf*Xë³›ìWLƦ-Ø\¼pj¼´<F˜<êø˜štrH¾RzÞ<vOÀÓdZ'Îlº£õ
‚®î4,|äêîè7OÁÄч•¾„ËÍäeIáB“û0@ÖIËÇò‡BÝ/åÔ~ƒ¥j¡&¹ø£¶ìu‡6Q1e”Úsý~]8Øá¼w…°ôJ0S[½uk
¯üO<¤r•ñŠ0+õ{G$h…‹¨ÚíÁ +©ŒU"iÈrŒ©•éwÒ_£šo?ØË~“‹kOµ[3-}ýÔ:šm!9‹ÁÖPìÞ_÷ÃHÍAíÃ=
íUüÙ°²Ï Ìädcfù^`(Üi¢“û=Õ}þ¬ò‹ +Ó÷X‚Ë&ÅVW{j‹s·»m¾]Ç£¹/‚Š5ÙèŸu7íl´Ùjª›9¤ÔÊ!pÈåYµÑáêÑ\¤·ýcVY¦ÈDŸÙ½jìEA´ŸÐ*ÓÂ)5qQÃOÿ†ÜI›}w³“äôÉ +ÖÆ•«FhÏ-?ƒ|ÌćÏ?RY[Úˆâ÷Ü”EY„"É–ºU¼œ#'è`p¿ep:`ÕC¶3Ñ.?EÀûp„ä1ÃEJͺ3›x2DH·ª×9:Ü/·ë˜mœr;ÿæÕ{L52QPÌÔîÌ ¹‰‡õG³-¾²®¥#ÚQë¡&ðe/O ›®ê¾¶=–Ô §¹n‹Š,ú§òÐ_Ǩ¡¼Çªv¯6œ÷Μ7¬RSöáã„ ¡ÐÏêAv"Õhk•BCú™Ÿ¼Ä:\{¦é£üî‘(®K·âe«’wó$ÐMy +B²¨W'e£µ/}îÛW'¡;y°³R•’ÑÕk.“V½Ô#—©fŠ<00òVÌП¶Kû_©a ‘n¶g×sò©ÃÄ>LzÊ ¬,7§Dœ×š*Ë[+ñµ±Â’¸¾ÛÐþö»z'©!(n7p>,œ€»—ÚàÌÓáÛ)¢Æoa«¶0“É)óZI]ùÞíµÚkOM(ƒló™à«'PÆá;½°L~Uà™oٰϨ#:êE"gߌÿ®Â©<Oôö÷s]½ê~J€éÆlуƒê‚ùFq%Š›¯)m|bŠOPK©exßäÏ@%ß6•–Äõ…©à»ígä& +Ä„,®ÜÔ + 8¢««µØSÈ<C™…*¨V›iƒãk|§jFÍ™LK¡©:ªD_u.¸ÕaC €
õ„Ü>øÛÀ˜è'5Cb…‘|IË-WW)’|
ß§Tóã9¦(£MÄŒ8A`-Ϭ‚³ 噥ÅQ蹉ñM±0Æ…»~Ç} +ù8áÎ|aU'+› øY7‹0=c;³2ùO!·EÅœÙn¯±gÑŸ3ØP#BýÌCK©=¦\4‘ËïäSÑ +b똣å„ËÉg”dúsú`‡ÿ¤±XçðïÒTa¸ï b\I©ìzÎìšDmÒΪ6%&îU@p¯K¢õMyž0Ƨf^`77+ì»vŸË×Ýré„§Å›iyjÆä±[@äÂHÙÓWö0øJ¦„¾hŸÆµ‰Ó-Õ}æC4Œ•Á…_<z³GvŸ‡Å¥¿}=Bê‘Å }Dˆ/Td``8oX9ž©úÐçAͨîCo›ŠÌt}fykâ¬Û\S>z/õýÐ!è˜"¯QÌ÷ó‡êÃE½ÚÏOò°ýŠ$T•ã&¦Ö©Ò‡:åÄ_óŽë+WV÷íR´à޵ä«bØiÝʼnPiò§ F…TÏrIƒŒ÷|¡ôÓ31¦6í¢I}¹âñØØ–kΛÓÒëIÒ©ØŒ´/ûޱ!ÌxøA[(ø/JÖe"ÄÐöÂÎåÏè‡þG¹ß¯öÊ&b^Ó|OŽSŒÃ\Pg…ŽzP(ùU‡¼·ÕÖ¾®ÓÔ¡èÖtÓoÞõÊ6mû'éÊsXSªbš^=3l|YA.hTÖ~L"yÔ]Ec!eÁø®¡$]Ürù"øF¹«VlgŒ(›ÐŒ9BM
r>Ðö7Ï/Ýä¼[Èab‹-ºÁ%«nE) 2‚nˆ¹îÌaOƒÙ§="3,uΡôS6„dÁàÒ9{ÎQ\ÓÁ'œ…™<n›[ü‰³°¥9\rŸÝ!c$Zh\Ø/÷8‘l'^T…Ja&~ZÌK€vM´Ö£w…Ð8²9ÍsÃÛ ¯Ðu£I–Ú5¶”Óè*r8¿×w,TðEÿŒ¸Û+¡Ö.¯ñ6ðŸòùñy…·)^^Ÿî²ç,àv…DlÀÙt7«<«"Ë Ž½vÂjg
1q©«ã±à½?wÅ$Q]× +AhŠºš’îb>ñúþ±]aúÁ(Éè\PW»ÚwYÏ!>ï½d±Q‘xÅ
PÖÌŸú’_£DΟ?êôo[-‚âÑöÌt÷Òì\³M{äs¶S ©+GòÝ¥Ó,—©4ÊWNEvÉʱ<Þ×ð$§\à /66ï»Øþ‡?äÿOðÿ™-èq°:Û ÿ¶ðÐvendstream endobj -1298 0 obj << +1303 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 34 /LastChar 122 -/Widths 2692 0 R -/BaseFont /VQGAVV+NimbusMonL-ReguObli -/FontDescriptor 1296 0 R +/Widths 2714 0 R +/BaseFont /SYVGZN+NimbusMonL-ReguObli +/FontDescriptor 1301 0 R >> endobj -1296 0 obj << +1301 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /VQGAVV+NimbusMonL-ReguObli +/FontName /SYVGZN+NimbusMonL-ReguObli /ItalicAngle -12 /StemV 43 /XHeight 426 /FontBBox [-61 -237 774 811] /Flags 4 /CharSet (/quotedbl/numbersign/parenleft/parenright/plus/hyphen/period/slash/four/six/colon/B/C/D/F/I/N/O/R/T/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) -/FontFile 1297 0 R +/FontFile 1302 0 R >> endobj -2692 0 obj +2714 0 obj [600 600 0 0 0 0 600 600 0 600 0 600 600 600 0 0 0 0 600 0 600 0 0 0 600 0 0 0 0 0 0 0 600 600 600 0 600 0 0 600 0 0 0 0 600 600 0 0 600 0 600 0 0 0 0 0 0 600 0 600 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj -1222 0 obj << +1227 0 obj << /Length1 1606 /Length2 17262 /Length3 532 @@ -13457,7 +13610,7 @@ endobj /Filter /FlateDecode >> stream -xÚ¬µc”¦ÍÒ%\¶»Ì»ªË¶mÛ¶m]¶.vÙ¶mÛ¶ñõsÎ̼³Î7¿fÞ×ZWFDîØ;2“„P^‰FÀØÎÐDÔÎÖ™†–ž kacèâ$cg+M#hgmøkd!!r41p¶°³6p6ᨙ„MŒ +xÚ¬µc”¦ÍÒ%\¶»Ì»ªË¶mÛ¶m]¶.vÙ¶mÛ¶ñõsÎ̼³Î7¿fÞ×ZWFDîØ;2“„P^‰FÀØÎÐDÔÎÖ™†–ž kacèâ$cg+M#hgmøkd!!r41p¶°³6p6ᨙ„MŒ Ú¹¼h˜™ ÿßtþFÄÖÈÎøŸ)Qr6°5þ;XÿËðÛÈÅÑñ¯žÿ:ëþŸë¸‰‰»‰Ìê’W°eZfºs
FîЄ°V_èPˆ}I½rQ•]·_Ú¯Ž ýêÚ†)ίVÅ3ûÏIÊÑtk²î“«|\ŸŸ½È›¤ílT‡tº%ðéçjQ^×ÒÛ`š¬ôª‡» @@ -13517,35 +13670,35 @@ Z®ËoÛ4ëŠ*s³°ütg†©NeÔú#‡ßìF¹¤¹K¸]C•f/ZЪ}¿@ôFêbM̼¦K´ØËJ®?L›^ëåɼo¬àÜ^Såõš¾q VÍ]êAy³XH±ÔŒèyÒLåýkoù"-Õ6_XŸs(GÕjØwOÎÃIÕÕ\‘›"NÚGvB<dÎ2æUøõÇͨa'nœ"dáõj›K†·…éÀaµ*»Üz^YCOs´’âUerÕ3“®©¿*̶^qèåSømÄ“—´¿Ìm+V#.MïäîuS³°¢º ½7Rz·Ú•DÊ£{ót§UYEzØ”Qù-t²y˜’…[ O[UÜW¨‡³!¨ï5ý
¹yK=n¸±u».5®°Rë¡fð¨,¸V2›è>ÓˆŽ…¤Yô·ØfàÄØ(ßÁx‰!´à‰%žM>¯Z) å"UØð;z¯Ãg«Ô«¼L’"¤Ú-Û‚ Ÿ‚xwÒ×~ e]bþL‚¸=V›Ïóð¨-ÁÅû”Cª³;ÓÖoä®Í ¨ÐÒ&CdÊÜÞ<_}9Ížsßú–M©’£ê˜Eä‡S+ø{ðåÅ1Kg¥V£2¾ÒÁ5«È–eéýê õÏŠ½SÅöÁ…®ÙK¼TùГ®°zc†\wír,Ö™yÆTôfDÇãF^±–ýtÚ|¶«w]’ÂйP ¿,:Fp\îŽr|0`Ï!ÛÍéy¾.Nïè^(%×½ñ>Ü0Ø]^ÒC ‘$®Çž5~<ðrpÊÃz>ŠPãuÍx{¿šècAÊûß·™ÍZÆ~œe·9^|Ø™ª´:öÛ9½0 *ÿ}ôõW'¼D>½³}=à -zžûcêÈ^‡õsa`ÔúþçBº&¿¯ÈÀ}Ü–#üÝ×õ,¶…ð€5nXœ`KÃ|Úªup´ëqª£¦Ws•³Fþ»‰ûë»ÕnË·+1§!NqM;Ú¦”+1Åôä@2Z
œXÞ%ÉŠû:bj -XãÙS9´½ AÄŠ›˜ì \¿j‹Gq‘ñ
YÔ4Ûûª2x"…þ€¦Æ">5IåñOù¼Ðù)þþbZòZj÷Ö›ŒEŒ×©8Œ†–BY‡tç÷]Ü þ×™¢Ë€9£ýd%ut o¥tÃØ_‹Òs¼#Žp9Ä RsˆNóÊAα›‘my_êB[öéNU9Wɶ¿~›ê? +XãÙS9´½ AÄŠ›˜ì \¿j‹Gq‘ñ
YÔ4Ûûª2x"…þ€¦Æ">5IåñOù¼Ðù)þþbZòZj÷Ö›ŒEŒ×©8Œ†–BY‡tç÷]Ü þ×™¢Ë€9£ýd%ut o¥tÃØ_‹Òs¼#Žp9Ä RsˆNóÊAα›‘my_êB[öéNU9Wɶ¿~›ê? endobj -1223 0 obj << +1228 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 34 /LastChar 125 -/Widths 2693 0 R -/BaseFont /PFSPPT+NimbusMonL-Bold -/FontDescriptor 1221 0 R +/Widths 2715 0 R +/BaseFont /VFTPOZ+NimbusMonL-Bold +/FontDescriptor 1226 0 R >> endobj -1221 0 obj << +1226 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /PFSPPT+NimbusMonL-Bold +/FontName /VFTPOZ+NimbusMonL-Bold /ItalicAngle 0 /StemV 101 /XHeight 439 /FontBBox [-43 -278 681 871] /Flags 4 /CharSet (/quotedbl/numbersign/quoteright/plus/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/at/A/B/C/D/E/F/G/H/I/K/M/N/O/R/S/T/W/Z/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright) -/FontFile 1222 0 R +/FontFile 1227 0 R >> endobj -2693 0 obj +2715 0 obj [600 600 0 0 0 600 0 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 0 0 600 600 600 0 0 600 0 0 600 600 0 600 0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj -1202 0 obj << +1207 0 obj << /Length1 1612 /Length2 18760 /Length3 532 @@ -13554,7 +13707,7 @@ endobj >> stream xÚ¬·ctåßÖ&›£’Û¶mWœT²cÛ¶m§bÛ¶]±*¶[ÿsºûíqnß/}ß{Œßšxæ3ç3×c“)ªÐ ÛþŠÛÚ8Ñ1Ñ3räÍ:;ÊÙÚÈÒ)Mlpdd"@C's[QC' 7@h˜™L\\\pd -ŠšRò +ŠšRò üªm{|ÓÂv¸*Þk‚é§¹?ÛÜ—Ní>ö¥©F{1(zR€—ùøÞ$T}¨›ä4z%ˆégQžW‹²ÛZìŒê»“JÊzÅïPß§;X`®ž¨üH\ üÐIí|ŒRëc1:QA¾Õžž‘'?=RŽõÜ@öíãÑäÄÂ’ñ¸@ ’GúÙçà h©Ux†SA¥7!àÝ´_}jt{êå‘‘â’FX˾*šæ¯Ù´Ë¾'A¦·ð&Ê9H¶îWþÀ¼žŸŽäJœæšËýZw&sÄâmŸ 쿵$
œÉ„®'~ @@ -13635,35 +13788,35 @@ i¿5xÑ@>,Ïu> w?tiÓ¶0ûôIÏä#%(ù‰ö ^hâŒð·¹ œ£“hZ™Í/øÅ_à7œÀ+P¸¸&&êåî$+Nȶp®Ô
~I(–»c¹ÚŸYªÓÅg¶%ø¥p%ö>’H¾iL¿\ÚõÐß(¦µâ_«8Cƒ—R{‹ ޵rð¦ëØíû‹0Ê{‡˜ÊQê¸2‰«Zœa‰ƒ†*7Äc¹äJî„I›ÏüìÒ]©æÁ 1=Š¡å©òñS€MX¡¥GMøªéþP¢‹:*½ÙOT9†ÜD¨*ÀzÞÃ*Úž“¬ÿ°Ë_hg ‚œ«ê9ŸjˆŠ"J7Þ®(ðhT(ìâ ª¦¼ÜðÊ™§Ä‹V¬áÝq -oò]ç}£¯9B‘7õ· öœH{È’ëæi`T&éVÇãs"¹‡‡ªÃßÛçVMo¼iá÷׈â{C„^×;¿_g¿`,·÷þ2
Ún“
RÂɫǶ]ÅjÍuib°ƒãÏV!QÏÆ>²¦aO<ö”ñOÁxƒªH²$áófe°§Åû›ê¥úКxÇÑiêÅà>ò$–Ìy"-Ú-ŵ ôý‰¤Ëq¸ŠÖˆÕ"™[Ø m¥cA¸¶¹"t8Q+PK¥ìó÷Ñ”¶ëÛãh_“ ®$+ƒº‡¼S¾ÎúÜþµ$áØ™éezv~7EhÅZÞ‚¥ÓªãHÝåûm®Ý‘(ãŸÄ"Þïòwnúê›»ÉÕ”^«¦ +oò]ç}£¯9B‘7õ· öœH{È’ëæi`T&éVÇãs"¹‡‡ªÃßÛçVMo¼iá÷׈â{C„^×;¿_g¿`,·÷þ2
Ún“
RÂɫǶ]ÅjÍuib°ƒãÏV!QÏÆ>²¦aO<ö”ñOÁxƒªH²$áófe°§Åû›ê¥úКxÇÑiêÅà>ò$–Ìy"-Ú-ŵ ôý‰¤Ëq¸ŠÖˆÕ"™[Ø m¥cA¸¶¹"t8Q+PK¥ìó÷Ñ”¶ëÛãh_“ ®$+ƒº‡¼S¾ÎúÜþµ$áØ™éezv~7EhÅZÞ‚¥ÓªãHÝåûm®Ý‘(ãŸÄ"Þïòwnúê›»ÉÕ”^«¦ endobj -1203 0 obj << +1208 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 33 /LastChar 125 -/Widths 2694 0 R -/BaseFont /IYMHTJ+NimbusMonL-Regu -/FontDescriptor 1201 0 R +/Widths 2716 0 R +/BaseFont /WCFSRN+NimbusMonL-Regu +/FontDescriptor 1206 0 R >> endobj -1201 0 obj << +1206 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /IYMHTJ+NimbusMonL-Regu +/FontName /WCFSRN+NimbusMonL-Regu /ItalicAngle 0 /StemV 41 /XHeight 426 /FontBBox [-12 -237 650 811] /Flags 4 /CharSet (/exclam/quotedbl/numbersign/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright) -/FontFile 1202 0 R +/FontFile 1207 0 R >> endobj -2694 0 obj +2716 0 obj [600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj -1145 0 obj << +1150 0 obj << /Length1 1620 /Length2 20127 /Length3 532 @@ -13671,7 +13824,7 @@ endobj /Filter /FlateDecode >> stream -xÚ¬ºct¤]·.Ûv*I§cul'[£b§bÛ¶mÛ¶Ží¤cwý¼ï·÷>cŸóëœý£jÜk^s^×Zë5FQ’)ª0›Ø%ìlA,ŒÌ< +xÚ¬ºct¤]·.Ûv*I§cul'[£b§bÛ¶mÛ¶Ží¤cwý¼ï·÷>cŸóëœý£jÜk^s^×Zë5FQ’)ª0›Ø%ìlA,ŒÌ< šþô¯œtGLz¥ÈéQž7K²;P?8˜Õö¦””õJ>`ˆg:Yánžiü(\ ü°¾<Ù£ø§6Äbw¡5aÔž_|M<}~¢î½…î?$¤Ë‰…§äuBþéçC(øCB¼ªùÕi{Ju¡glŸÏÏìC(»ƒ¢ÈbÓËZÁçjð§fÌÁpC@¶ ¦éÂú”/é„ÐaF)¹ìÉT_Äü AÇDF@’_²–
z¿IÂ>^"ò“£œŸpÖj×Ñm¡HNZ¬¹Šù—;Ão{ô«OŠ—©š}¾ŽÈïqM gÀÁõ@‰Î @@ -13745,35 +13898,35 @@ K› ÀöYt^¬evQ&57Ñ„t9Æ©‘;ØQLV2²ûËI2U^¹¨%Ô~ŸŒ×ˆzW p íSß»bò7+Ö˜ß áænÍwˆ'£#µE°nx‹¢PšL~|ö4KQ¦–!¯jn£ÕªîØãVBGE”}œœ ŽýÐ{ƒéV³”Vã0¾ô.¶Tv‚Ì|`°SU[¸U!&ýø7 >hI£YÉì0…òÇ*껪¦úݳj€í¨ž¨ß`Ù?8sGx9g3ÎîèñÙt÷:n:—SúluHx‹œ›ÍÉPo·«ÃJAüÕh€ß¾ÅW'ˆÃô´B ¶q…¡Jˆ`“ý kaæ®´bg>–MO”¶æB8uk—ÄþÙ7)Çê®Ü¿5GVQ(ë¿Pm-FG*åTA¸¡WK2z)· Ž×?3Ì›QOl s¹ -¹ƒ%ÔÕÝÙêjý¡Øáßendstream +¹ƒ%ÔÕÝÙêjý±áóendstream endobj -1146 0 obj << +1151 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 2 /LastChar 151 -/Widths 2695 0 R -/BaseFont /DOAKOD+URWPalladioL-Ital -/FontDescriptor 1144 0 R +/Widths 2717 0 R +/BaseFont /PIDGVL+URWPalladioL-Ital +/FontDescriptor 1149 0 R >> endobj -1144 0 obj << +1149 0 obj << /Ascent 722 /CapHeight 693 /Descent -261 -/FontName /DOAKOD+URWPalladioL-Ital +/FontName /PIDGVL+URWPalladioL-Ital /ItalicAngle -9.5 /StemV 78 /XHeight 482 /FontBBox [-170 -305 1010 941] /Flags 4 /CharSet (/fi/fl/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/emdash) -/FontFile 1145 0 R +/FontFile 1150 0 R >> endobj -2695 0 obj +2717 0 obj [528 545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 0 0 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 0 0 0 0 0 0 722 611 667 778 611 556 722 778 333 0 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 0 0 0 0 0 0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 ] endobj -1013 0 obj << +1017 0 obj << /Length1 1630 /Length2 16214 /Length3 532 @@ -13786,7 +13939,7 @@ xÚ¬¹eTœm“-Œ»kðÆÝ‚{pwׯ¥qwwwBpwwwwn‚÷/Ïûž™9kÎùu¾ùÕ÷U»jW]µë®^½š’TI•QÄÌÁÄ\ÒÁÄÈ R ššÛ»˜Ó,œ¶ÿ> üfîajîøÄ -hjcÿOó9ÿ
™Û›ý÷úÿÊô¯ê™åµ´Å4èÿ½Ê¨jûw¾Y¹¸ÿ¡ôw@jžŽæ€ÿ•NSÞÁì?ÿð‰Š:x +hjcÿOó9ÿ
™Û›ý÷úÿÊô¯ê™µe$D$èÿ½Ê¨jûw¾Y¹¸ÿ¡ôw@jžŽæ€ÿ•NSÞÁì?ÿð‰Š:x 2¶7û;nÿiø6uuvþ«ò¿6ÀßëÿÇù_ƒonîanа¾â`Êb‘ ªÃÍ™×èc… u,mT+*¨qèõψØå4z«
ejšáûh÷\>s|?üFw4Ö‡cKÝ›f~ùЗœ¶¿ý'U'7ýQ³A)ræ¹fŒ÷Õ’Ü”‹ÆÑÞ”²ŠAÉÑL'»3ÜÕ#m ‰ªV¶ý^]n?É÷oŠ üÐìæÇÕQÿÑŠ´Këñ¯0AÙ¬ŒÚ#Ûõ½ü¶Sz_“Ò¶Âæ°Â¯£Z¬4¦×âÚpj~¿H]c}jÇyŒ{ì|yz0Òä$·‘×ù³›'È úKåWµ0wïèåóä»÷ ¦¤†®ßëÓôäNg@«ÔËfR~7øX3X¯§º<†ž‡:;D݇Y‹’‡±ÇƲ ¾qv"©Î.å¶±8Á[Ö†¸gÛyŽ ‡Ø @@ -13840,84 +13993,81 @@ T S!õ\¶ZãÒJ)¡#¢:sÌæÀŽ_îR·è¢#Ô¦Bò êOqÚô¡9U¤$Ö=6Ððü|Hò‹°s%nS,{¨üˆ&õÊ’—8$²cå’6¿p[Žx7íj£\k@?®ð¶"Ü<4s=3Ña½BÚ_Z¼–âç0h^×IÓ¡gÀDFÌû"O,v}V%t ïæûüH¦¼¯¸Êi¹ò¢Œ Vº<3ÿiúü`+zв±ƒõ¤âBy¿e5m¨á^[ÄyaS©aŠ€()ÞŸíÆÜ=7w3ÔV³Md& ðÑÈå’½Teöä´þe¢QŽh¬õäØîαÿ”øg´>»6¹”¼g´(>\PóÔkºßo†‘vÝ8‹¥‡HZR¯±˜(rÔs•Ì7R¶s×»LíªøŠæüz!ÁÈ
U[–Õ²69§QŽƒ.[¿’6çÏhüS—Wse®÷±dßbfïyîI‡dÁFbNþ%ÕgÔÆGœ¢,bœrü(šÙÂ%+'‹
Òl£g"îuªrC`Wro¦1€5ÇCÈ…çpû¶šÍÄ]sG¹ÑOnäàrqœìZI=…M}…)äCQÊ~ ê!µŸ¾Dz9·%eÞ!û©ÆÁ”,Ý,>׿¿âb‰lGûrs
RøV0'uV·ƒÔ)É ²;^%!#úㆹå"à÷È“µ‚i4Í p#Öo·¤_Œä%±!¥Óæ`…(`¢ix¸ü={Pìr{[£3þÝɶ*\ÔvµvÈÆe~0{zŠJ"É®Ñc µÄÀ‹í_~ …U¢÷íýwõœÅ6o¸JÚè¨OÊÿ7E®Õ?ÿm]~»úàD¾?œñ޹,à¾$ôƒc2‹™‹ã鏿ߋM|&ìšp{³×Ó\Ì «e
•Œ¤·Æý:®s”CrªÞr±[G^…_x[´?ÒØæå'®Öܬž¥Škv5‰GlŸë½º>QÄè5ó†…¼~šÒÙŽÝÙvnÂ|*ÑÐaòÝ¥ÉÿÞ^á=tønÚÖ•_ÎïxPðdòùCß•bRæwWbgÖJ?~årοþC¬[BýädƯ{ñ h§úÍwÓ‰Ï'}2~Ñ]Ø6å°âÙŒ9û²&ÜÔîNÖñûö¡î±`luî‹)G2O=ßùEßCùä”Õùù[ -¹ÓÏ™wŸ˜sìÇÆâ@•»¯M·åöMXvºóEÿÿu9~Û¤k²¹¶…꼪?yÉg“º”òÌÜ{ç;OÛ«YŸ$3iÕæ#ÛÏn•8²oväóŽ7¯ã}ËÏëÕýÜá?÷þ¹ësÿ„æÕäÈ©Ù÷pö.Õ`¹fýO©a›K<ÛNîêè=|ˆuÖïD©â¹µßýÝ^Ú(šDªM?T¹CÂxÝ;)ñ´g¥ÙENÓ/Û¾}õ%×ÊÛJ®Q†…É9©‰E%ù¹‰EÙ\ +¹ÓÏ™wŸ˜sìÇÆâ@•»¯M·åöMXvºóEÿÿu9~Û¤k²¹¶…꼪?yÉg“º”òÌÜ{ç;OÛ«YŸ$3iÕæ#ÛÏn•8²oväóŽ7¯ã}ËÏëÕýÜá?÷þ¹ësÿ„æÕäÈ©Ù÷pö.Õ`¹fýO©a›K<ÛNîêè=|ˆuÖïD©â¹µßýÝ^Ú(šDªM?T¹CÂxÝ;)ñ´g¥ÙENÓ/Û¾}õ%×ÊÛJ®Q†…É9©‰E%ù¹‰EÙ\ endobj -1014 0 obj << +1018 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 35 /LastChar 90 -/Widths 2696 0 R -/BaseFont /MXNYCV+URWPalladioL-Roma-Slant_167 -/FontDescriptor 1012 0 R +/Widths 2718 0 R +/BaseFont /YIEAFN+URWPalladioL-Roma-Slant_167 +/FontDescriptor 1016 0 R >> endobj -1012 0 obj << +1016 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /MXNYCV+URWPalladioL-Roma-Slant_167 +/FontName /YIEAFN+URWPalladioL-Roma-Slant_167 /ItalicAngle -9 /StemV 84 /XHeight 469 /FontBBox [-166 -283 1021 943] /Flags 4 /CharSet (/numbersign/parenleft/parenright/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/X/Y/Z) -/FontFile 1013 0 R +/FontFile 1017 0 R >> endobj -2696 0 obj +2718 0 obj [500 0 0 0 0 333 333 0 0 250 333 250 0 500 500 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 0 667 667 667 ] endobj -951 0 obj << +955 0 obj << /Length1 862 /Length2 1251 /Length3 532 -/Length 1860 +/Length 1861 /Filter /FlateDecode >> stream xÚíUkTgnõJÀ+Å€€¸ -æ2@ Š&X4-÷¨ HeH&$d`’`€ -,P ‚A…ÊE ÒJi½ -& X¹ê -ºè±KîþÚ³3æ}žç{¿gž÷;ç³0óbè$vEDHi€‹;ë -Dƒ -‚°Ìá?Ad -†¡ÀÜ?öoॡ¿Ãí1BßXÀ 1oþkp"‹&P‚£=ö# h88Pþ›-EQX$Y<›Xüok.Ë`6®§a;%†äV%•Ç|vîö÷t^´Vhz´›üjbòøœ£,êYo³`IÉH‘êÊq>Tiø9Ûé¤>zÙ(Ý#íË©býWRËü2ã¨Än>2!U¾ê•åS¾ÿTþ×*cZ#úðÌ7[¶öLm‰mÕ;ËQ3žk˜èÒ]oísÂÚ|£CÏyíþ÷7à#ûwlž¨‰Í½¾=~ëžÓ/vMµTruƒ¦ ™G¸ -唨ńú±W:¸ªgó¶]ê^Ê÷>¹íG
ÅZÚòmõ^Nàý©ª}^gìÖÎ0Ìù(ôú3~š—á¹s‡‡4ÇÔžò^Å%Üûy
²ï…üm°d"|mÞ՛Ы -¢+¡e¼¥ïf¡=UyäÁ„êZÅõQiý
'K9Iu‹²/þt&Ç¿$×÷ÂÏHöeµÕ£ÊƆîÚ¹äÀñ|tWYù1må>u+wš¨(ñ§}ÊÚók,UÂ=AþËIÒë„®çZµ-2“R_FeòäT±NËëÍ^™mƒžòYk¥j•tOHuÜÙg¼mwöüï2Çæ5c¾Ê„hG=Ÿàœõ‡zO~ºÓ´ó/ïé1èdÅP!Ÿ°Æÿžz…ZsÊ$ŒvOP>J¬-H=ÿ«ÇŽUrÒ\Ħ¼Ák
å;öç2›XÍŽ›i|™`¥þ&£ÒË|¥iQï|qÀØ2T¤Éïÿ€$ÙZÚïnH¡±Ç?-Œ¯o÷êŸí”f×çÄg{(.G‘3— E~-vzeø¢îèKâ®up”Iku}Àí¿§8é\3}ç.œRW uS¯ˆÖî5Ò¿ÓáZ:¢ß2_ÃÙÙ|kÄ9d~UG$hÕþi^~°1 +æ2@ Š,š–K +x -—úÁKæ<`_*\Î2$€Ïv`€ +Õ€PŠÄa'«¨@4ðEXÀ2Ì1‰(B$Ø +±aÌý3lû^ú;ÜÃ!ô€e€ìP± +I Ÿ{Zw&#-ÉòôöÿB+öPSn"Ë‹õL£é}^þ´9³mtSü¨Ÿ&‰q¼åÅÀ¸Í¤xÌW—v±³Ä?ÙØ2¾Xïl7¯íRvfš¡D²ÛnÐý/ìíä$eñ¢&SÎþfþ"và‰ïÖ†~Œ¶×BnîÉšŽö0:QÊ{¦òªuª*55#ö8Ž9$v‡DàœQyb›jÕü
ÛÀŽƒ{îSLÃc3‡š1µô½Êä—tãã…žû&Ê|FWèxhö?+”S¢êÇÌtpUÏæm»&>Ô½”ï3|rÛŠµ´åÛ꽜ÀûSUû6¼ÎØÿ¬n˜óQè?ôgü5/ÃsçiŽ©½ä½ŠK¸÷ódßÿøÛ`ÉDøÚ¼«7WD7BËxKßÍB{ªòȃ ÕµŠë£ÒúN–r’êe_üéLN@I®ß…4^‘ìËj«G•
ݵsÉâù0讲òcÚÊ}ê6Vî4QQ@ûÔwϯ±T ÷„Ëó_N’^'t=תm‘™”úÑ+“'§ŠuZ^off¶
z
Ègm¬é”ªUÒ=M ÕqgŸñ¶]ÜÙó¿Ë›×Œù)¢õ|‚\qÖê=ùéNÓÎW¼¼§Ç´¢“C…t|š€{êjÍ)“0Ú=«|”X[zþWϪ䤹ˆMyƒ×ÊwìÏe4ù6?p8¶n¦ñe‚•ú›ŒJ¦ùJÓ¢Þùâ +€¾e¨H“ßÿI²µ´ß#Ü0BcZ_ßÎìŸí”f×çÄg{*.G‘3— Eþ-vzeø¢îèKâ®up”Iku=ëößSœt®™¾sN©+º«WDk÷éßép+Ño™¯áìl¾5â2èrUG$hÕþi^~°‘úå¦iOÛK@̲ÓXc]ù[
×d™ì&qø°Æ9ücꃙÍÞöc“Y4—¼ÆC¡òqpô9³¾Ž:¬X>òso³¡º¶öð©ŽÎ$¿wóÙ6YòiÕäúím]„ã;²¼1Nô~Nw?Õ7«ÐY™XÃi©³CcH»fùhõÈyù«{rʹïé‘ÿÃ÷ÿÿ
°«B%ˆBCqÿ® þkendstream endobj -952 0 obj << +956 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2697 0 R +/Encoding 2719 0 R /FirstChar 13 /LastChar 110 -/Widths 2698 0 R -/BaseFont /ARSCBQ+CMSY10 -/FontDescriptor 950 0 R +/Widths 2720 0 R +/BaseFont /QIMYMI+CMSY10 +/FontDescriptor 954 0 R >> endobj -950 0 obj << +954 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 -/FontName /ARSCBQ+CMSY10 +/FontName /QIMYMI+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/circlecopyrt/bullet/braceleft/braceright/bar/backslash) -/FontFile 951 0 R +/FontFile 955 0 R >> endobj -2698 0 obj +2720 0 obj [1000 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 0 0 278 0 0 0 500 ] endobj -2697 0 obj << +2719 0 obj << /Type /Encoding /Differences [ 0 /.notdef 13/circlecopyrt 14/.notdef 15/bullet 16/.notdef 102/braceleft/braceright 104/.notdef 106/bar 107/.notdef 110/backslash 111/.notdef] >> endobj -948 0 obj << +952 0 obj << /Length1 1616 /Length2 25435 /Length3 532 @@ -13925,7 +14075,7 @@ endobj /Filter /FlateDecode >> stream -xÚ¬ºc”¤]°%\]î²,Û¶mÛvuÙ¶mÛ¶»lW—mÛúú}ïܹ³î̯ùæG®õœˆ8;vÄ>'Öz2“„@^‰FÀØÎÐDÔÎÖ‰†–ž ¢¨&o`mm`la'M£hgc +xÚ¬ºc”¤]°%\]î²,Û¶mÛvuÙ¶mÛ¶»lW—mÛúú}ïܹ³î̯ùæG®õœˆ8;vÄ>'Öz2“„@^‰FÀØÎÐDÔÎÖ‰†–ž ¢¨&o`mm`la'M£hgc áàUûZRRŽ_&½þ’ÞŸfx¯%Ê3® ôEþsÈC®”ô“‘Bå0²TU’?…šÜ¡ˆhÍÒVùòýåm»TúÃ8Z§ä‚Û°ý ³:I?Ôöz"6›Èbœ^% yá×h}×¹Z ypÓ‚u=jëé 3\xœa(74nŠïRýƒ&cx£aYKÜ¿‰~ػբÉI·XiêS¨“2ø ú›G²¨†lkÕ›$ñé³øIñƒ<½*;:̽¤PœT1]š«ÚowŽ0~,A¸ÕO˜Ó%/‡ìdccÅ÷‹k×{GKÌ‘›j™(+ÔBUÞD#¡6ª:Mð%¿s¾†I¼;v#wïRUèB&%Ô øªÕ(cÊïZB™ª³/7í¿'|8¾—}Z£6Ã*DLi´¯kâ'/rn¶èXÐ60µ!~Èaïގا*\Dxc(uè³?^NWù±CVØñ Áá´ÅÚQ[´¬5üŠvȈ0Kïø^•vµÚ*V¦°cœ
(p3“¸µMÖiÒ|#Óƒ}5ãByE¦Ç•yÖÌÞ¢º<^×<;>3ý ÎÈ;V<g5j‡ùôIH›C„ÿæaTÓ€ @@ -14028,35 +14178,35 @@ PÔ3)lmŒ;œ¸—ü“5|—î”+ÀTÅv‰¼Ô_òF^›bQãLT?yÇ¥ðb²èewïA© !ÅdYò]mÝÏÈÍ[Ÿ ‡)Í1p’}l‹ÈÙ¤û¨¯šð1ônQ“Öü:”ƒ‘96êì(…+õƒ<“4Ã7Q|ÿF1°²¨üñ#\õl1ï,äÝ?7Âeì7®Œ½nØ<É„3ÄÓ›rhNBRòÂÑC ^[ÜÀ!ÄŠxMcOÝ—ÙPFt>l¿‹JF¢‡ßÂöð1’£†°åïxDÑv hÇÚ ¥åã—r¢fY—òU·zifÁUÆz*JfU¤ËÞ ½ýä|ÿ:Ð(Pk<’¥WÝìo*Á]ö…gP³Šþ,ÚFjî¶%™;ɘ¹á9L9.DœÇǦÝ@sOµhòÚ³BãtÑsÒ~ˆ®›×)-ÉA -ÇГöÞVMýͲ:“®³m›ÓWBÖþü/ùÁÿ ±©¡“‹½¡“5Ìÿ +ÇГöÞVMýͲ:“®³m›ÓWBÖþü/ùÁÿ ±©¡“‹½¡“5Ìÿ endobj -949 0 obj << +953 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 2 /LastChar 216 -/Widths 2699 0 R -/BaseFont /ZOKDVE+URWPalladioL-Roma -/FontDescriptor 947 0 R +/Widths 2721 0 R +/BaseFont /IKJVPS+URWPalladioL-Roma +/FontDescriptor 951 0 R >> endobj -947 0 obj << +951 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /ZOKDVE+URWPalladioL-Roma +/FontName /IKJVPS+URWPalladioL-Roma /ItalicAngle 0 /StemV 84 /XHeight 469 /FontBBox [-166 -283 1021 943] /Flags 4 /CharSet (/fi/fl/exclam/numbersign/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/circumflex/quotedblleft/quotedblright/endash/emdash/Oslash) -/FontFile 948 0 R +/FontFile 952 0 R >> endobj -2699 0 obj +2721 0 obj [605 608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 500 500 840 0 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 0 606 0 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 0 333 0 0 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 500 500 0 500 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 ] endobj -925 0 obj << +929 0 obj << /Length1 1614 /Length2 24903 /Length3 532 @@ -14064,7 +14214,7 @@ endobj /Filter /FlateDecode >> stream -xÚ¬zcteß³mlÛN:¶“ŽmÛö‰mÛN:¶mÛ¶ŽÙq^ÿþWoÜ÷>½w?ì1öªª5kVÍZkœ3Æ&'VP¦4™Šìœé˜è¹‰T•ÔmlM,2tB +xÚ¬zcteß³mlÛN:¶“ŽmÛö‰mÛN:¶mÛ¶ŽÙq^ÿþWoÜ÷>½w?ì1öªª5kVÍZkœ3Æ&'VP¦4™Šìœé˜è¹‰T•ÔmlM,2tB Ѫ&ðëöÜ(ÞÃÇ‘œåRMyû©i¯MH>c¸¤bq›‹bgÜë㤸>·+Zµ‹¥{ü‹q=v¾™«O¼—«Ñ)X!íÁ/$ä±)$§ÁØ^‘w?í¦‘ù]€§“X.2)§©Êer[¤ .©»¹™ ;þÄýI‰ŽBÃA¦¸¯»àÐaÁôÞ®|û³ 5ï8sêÓ† "ŸÍëã-ö .TÞ;”Ïè*Yp§«© ‹ÕÀKÀk"!œÑE¾[OžKA3æTv7‰.ѧü™"ÇS"V™bIÆ@Ζӧ @@ -14167,849 +14317,856 @@ V‘<}6j]'»EVîhû‚}6¡ÝÀ6àÛ·o÷CfÀ¿ièﬕò1e·)(+‚§l¦…ãƒÖˆç\àíÈìk}/y»—ìǸoÕ ¥`M/\oõÛþJXSù6”¿ü'ŽOØLaà¨oÍZNõµáø÷P³¬æ#À«-’·^=èCp§“´ñ»wÓ^»±òž,àìÎ-3à rg‡lÖ:G> ‡û$Ëú*Ï[¾'е5ØÌ½Ã¾^¿‚@rG{XÎN3?Ü&Óvj½ìÖfl3OˆÐ¥\á"ÝJ)P\°7À«J&zgT‘š|†ñhÝh^r×X&âhŒç]CŠÒ÷ˆÂú%#ÅŸß’ïçUUÒÙ$ïRDäü¾Rk¤zwŒñã—Z UßD„j%‘{7¹’&LoÅLó´T0‰* -Ë—ÌF+uå| ã_ìŽ'¬gk"¸qáD]² +Ë—ÌF+uå| ã_ìŽ'¬gk"¸qáD]² endobj -926 0 obj << +930 0 obj << /Type /Font /Subtype /Type1 -/Encoding 2683 0 R +/Encoding 2705 0 R /FirstChar 2 /LastChar 151 -/Widths 2700 0 R -/BaseFont /JRQYWS+URWPalladioL-Bold -/FontDescriptor 924 0 R +/Widths 2722 0 R +/BaseFont /YKSFXN+URWPalladioL-Bold +/FontDescriptor 928 0 R >> endobj -924 0 obj << +928 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /JRQYWS+URWPalladioL-Bold +/FontName /YKSFXN+URWPalladioL-Bold /ItalicAngle 0 /StemV 123 /XHeight 471 /FontBBox [-152 -301 1000 935] /Flags 4 /CharSet (/fi/fl/exclam/numbersign/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/question/at/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblright/emdash) -/FontFile 925 0 R +/FontFile 929 0 R >> endobj -2700 0 obj +2722 0 obj [611 611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 500 500 889 0 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 0 0 0 444 747 778 667 722 833 611 556 833 833 389 0 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 0 333 0 0 0 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 1000 ] endobj -927 0 obj << +931 0 obj << /Type /Pages /Count 6 -/Parent 2701 0 R -/Kids [918 0 R 944 0 R 954 0 R 1009 0 R 1073 0 R 1136 0 R] +/Parent 2723 0 R +/Kids [922 0 R 948 0 R 958 0 R 1013 0 R 1077 0 R 1140 0 R] >> endobj -1211 0 obj << +1216 0 obj << /Type /Pages /Count 6 -/Parent 2701 0 R -/Kids [1198 0 R 1213 0 R 1225 0 R 1238 0 R 1249 0 R 1256 0 R] +/Parent 2723 0 R +/Kids [1202 0 R 1218 0 R 1230 0 R 1243 0 R 1254 0 R 1261 0 R] >> endobj -1272 0 obj << +1277 0 obj << /Type /Pages /Count 6 -/Parent 2701 0 R -/Kids [1268 0 R 1274 0 R 1282 0 R 1291 0 R 1301 0 R 1315 0 R] +/Parent 2723 0 R +/Kids [1273 0 R 1279 0 R 1287 0 R 1296 0 R 1306 0 R 1320 0 R] >> endobj -1323 0 obj << +1328 0 obj << /Type /Pages /Count 6 -/Parent 2701 0 R -/Kids [1319 0 R 1326 0 R 1333 0 R 1338 0 R 1360 0 R 1369 0 R] +/Parent 2723 0 R +/Kids [1324 0 R 1331 0 R 1338 0 R 1343 0 R 1364 0 R 1374 0 R] >> endobj -1378 0 obj << +1383 0 obj << /Type /Pages /Count 6 -/Parent 2701 0 R -/Kids [1375 0 R 1380 0 R 1385 0 R 1394 0 R 1403 0 R 1410 0 R] +/Parent 2723 0 R +/Kids [1380 0 R 1385 0 R 1390 0 R 1399 0 R 1408 0 R 1415 0 R] >> endobj -1419 0 obj << +1424 0 obj << /Type /Pages /Count 6 -/Parent 2701 0 R -/Kids [1416 0 R 1421 0 R 1431 0 R 1444 0 R 1452 0 R 1465 0 R] +/Parent 2723 0 R +/Kids [1421 0 R 1426 0 R 1436 0 R 1449 0 R 1457 0 R 1470 0 R] >> endobj -1475 0 obj << +1480 0 obj << /Type /Pages /Count 6 -/Parent 2702 0 R -/Kids [1471 0 R 1477 0 R 1483 0 R 1491 0 R 1497 0 R 1503 0 R] +/Parent 2724 0 R +/Kids [1476 0 R 1482 0 R 1488 0 R 1496 0 R 1502 0 R 1508 0 R] >> endobj -1515 0 obj << +1520 0 obj << /Type /Pages /Count 6 -/Parent 2702 0 R -/Kids [1512 0 R 1517 0 R 1524 0 R 1528 0 R 1538 0 R 1543 0 R] +/Parent 2724 0 R +/Kids [1517 0 R 1522 0 R 1529 0 R 1533 0 R 1543 0 R 1548 0 R] >> endobj -1557 0 obj << +1562 0 obj << /Type /Pages /Count 6 -/Parent 2702 0 R -/Kids [1550 0 R 1559 0 R 1568 0 R 1576 0 R 1587 0 R 1593 0 R] +/Parent 2724 0 R +/Kids [1555 0 R 1564 0 R 1573 0 R 1581 0 R 1592 0 R 1598 0 R] >> endobj -1604 0 obj << +1609 0 obj << /Type /Pages /Count 6 -/Parent 2702 0 R -/Kids [1599 0 R 1606 0 R 1610 0 R 1617 0 R 1622 0 R 1632 0 R] +/Parent 2724 0 R +/Kids [1604 0 R 1611 0 R 1615 0 R 1622 0 R 1627 0 R 1637 0 R] >> endobj -1639 0 obj << +1644 0 obj << /Type /Pages /Count 6 -/Parent 2702 0 R -/Kids [1636 0 R 1641 0 R 1645 0 R 1649 0 R 1656 0 R 1660 0 R] +/Parent 2724 0 R +/Kids [1641 0 R 1646 0 R 1650 0 R 1654 0 R 1660 0 R 1665 0 R] >> endobj -1670 0 obj << +1675 0 obj << /Type /Pages /Count 6 -/Parent 2702 0 R -/Kids [1665 0 R 1672 0 R 1677 0 R 1687 0 R 1691 0 R 1695 0 R] +/Parent 2724 0 R +/Kids [1670 0 R 1677 0 R 1682 0 R 1692 0 R 1696 0 R 1700 0 R] >> endobj -1708 0 obj << +1712 0 obj << /Type /Pages /Count 6 -/Parent 2703 0 R -/Kids [1703 0 R 1710 0 R 1718 0 R 1723 0 R 1727 0 R 1731 0 R] +/Parent 2725 0 R +/Kids [1705 0 R 1715 0 R 1723 0 R 1728 0 R 1732 0 R 1736 0 R] >> endobj -1744 0 obj << +1747 0 obj << /Type /Pages /Count 6 -/Parent 2703 0 R -/Kids [1737 0 R 1746 0 R 1751 0 R 1759 0 R 1766 0 R 1771 0 R] +/Parent 2725 0 R +/Kids [1740 0 R 1749 0 R 1756 0 R 1761 0 R 1768 0 R 1776 0 R] >> endobj -1783 0 obj << +1787 0 obj << /Type /Pages /Count 6 -/Parent 2703 0 R -/Kids [1778 0 R 1786 0 R 1791 0 R 1796 0 R 1801 0 R 1806 0 R] +/Parent 2725 0 R +/Kids [1781 0 R 1791 0 R 1796 0 R 1800 0 R 1806 0 R 1811 0 R] >> endobj -1821 0 obj << +1820 0 obj << /Type /Pages /Count 6 -/Parent 2703 0 R -/Kids [1814 0 R 1823 0 R 1828 0 R 1832 0 R 1836 0 R 1840 0 R] +/Parent 2725 0 R +/Kids [1816 0 R 1822 0 R 1832 0 R 1837 0 R 1842 0 R 1846 0 R] >> endobj -1851 0 obj << +1853 0 obj << /Type /Pages /Count 6 -/Parent 2703 0 R -/Kids [1848 0 R 1853 0 R 1869 0 R 1884 0 R 1908 0 R 1917 0 R] +/Parent 2725 0 R +/Kids [1850 0 R 1855 0 R 1863 0 R 1867 0 R 1882 0 R 1896 0 R] >> endobj -1934 0 obj << +1927 0 obj << /Type /Pages /Count 6 -/Parent 2703 0 R -/Kids [1923 0 R 1936 0 R 1940 0 R 1946 0 R 1956 0 R 1968 0 R] +/Parent 2725 0 R +/Kids [1908 0 R 1929 0 R 1936 0 R 1942 0 R 1952 0 R 1958 0 R] >> endobj -1983 0 obj << +1973 0 obj << /Type /Pages /Count 6 -/Parent 2704 0 R -/Kids [1976 0 R 1985 0 R 1990 0 R 1997 0 R 2005 0 R 2017 0 R] +/Parent 2726 0 R +/Kids [1964 0 R 1975 0 R 1987 0 R 1995 0 R 2003 0 R 2007 0 R] >> endobj -2031 0 obj << +2022 0 obj << /Type /Pages /Count 6 -/Parent 2704 0 R -/Kids [2024 0 R 2033 0 R 2039 0 R 2050 0 R 2054 0 R 2058 0 R] +/Parent 2726 0 R +/Kids [2015 0 R 2024 0 R 2036 0 R 2043 0 R 2051 0 R 2055 0 R] >> endobj -2072 0 obj << +2071 0 obj << /Type /Pages /Count 6 -/Parent 2704 0 R -/Kids [2069 0 R 2074 0 R 2081 0 R 2091 0 R 2150 0 R 2206 0 R] +/Parent 2726 0 R +/Kids [2061 0 R 2073 0 R 2077 0 R 2081 0 R 2092 0 R 2096 0 R] >> endobj -2294 0 obj << +2112 0 obj << /Type /Pages /Count 6 -/Parent 2704 0 R -/Kids [2260 0 R 2296 0 R 2304 0 R 2312 0 R 2319 0 R 2324 0 R] +/Parent 2726 0 R +/Kids [2103 0 R 2114 0 R 2173 0 R 2229 0 R 2283 0 R 2318 0 R] >> endobj 2333 0 obj << /Type /Pages /Count 6 -/Parent 2704 0 R -/Kids [2330 0 R 2335 0 R 2344 0 R 2350 0 R 2355 0 R 2359 0 R] +/Parent 2726 0 R +/Kids [2326 0 R 2335 0 R 2342 0 R 2347 0 R 2353 0 R 2357 0 R] >> endobj -2374 0 obj << +2371 0 obj << /Type /Pages /Count 6 -/Parent 2704 0 R -/Kids [2364 0 R 2376 0 R 2381 0 R 2393 0 R 2402 0 R 2411 0 R] +/Parent 2726 0 R +/Kids [2366 0 R 2373 0 R 2378 0 R 2382 0 R 2387 0 R 2398 0 R] >> endobj -2424 0 obj << +2414 0 obj << /Type /Pages /Count 6 -/Parent 2705 0 R -/Kids [2416 0 R 2426 0 R 2432 0 R 2436 0 R 2442 0 R 2454 0 R] +/Parent 2727 0 R +/Kids [2403 0 R 2416 0 R 2425 0 R 2434 0 R 2439 0 R 2448 0 R] >> endobj -2468 0 obj << +2457 0 obj << /Type /Pages /Count 6 -/Parent 2705 0 R -/Kids [2464 0 R 2470 0 R 2482 0 R 2486 0 R 2490 0 R 2495 0 R] +/Parent 2727 0 R +/Kids [2454 0 R 2459 0 R 2465 0 R 2476 0 R 2486 0 R 2492 0 R] >> endobj -2516 0 obj << +2507 0 obj << /Type /Pages /Count 6 -/Parent 2705 0 R -/Kids [2506 0 R 2518 0 R 2523 0 R 2530 0 R 2539 0 R 2543 0 R] +/Parent 2727 0 R +/Kids [2503 0 R 2509 0 R 2513 0 R 2517 0 R 2528 0 R 2539 0 R] >> endobj -2564 0 obj << +2549 0 obj << /Type /Pages /Count 6 -/Parent 2705 0 R -/Kids [2552 0 R 2566 0 R 2571 0 R 2576 0 R 2581 0 R 2591 0 R] +/Parent 2727 0 R +/Kids [2545 0 R 2551 0 R 2562 0 R 2566 0 R 2573 0 R 2587 0 R] >> endobj -2607 0 obj << +2597 0 obj << /Type /Pages /Count 6 -/Parent 2705 0 R -/Kids [2598 0 R 2609 0 R 2614 0 R 2626 0 R 2635 0 R 2643 0 R] +/Parent 2727 0 R +/Kids [2593 0 R 2599 0 R 2604 0 R 2613 0 R 2621 0 R 2631 0 R] >> endobj -2669 0 obj << +2647 0 obj << /Type /Pages -/Count 2 -/Parent 2705 0 R -/Kids [2658 0 R 2671 0 R] +/Count 6 +/Parent 2727 0 R +/Kids [2636 0 R 2649 0 R 2658 0 R 2666 0 R 2681 0 R 2693 0 R] >> endobj -2701 0 obj << +2723 0 obj << /Type /Pages /Count 36 -/Parent 2706 0 R -/Kids [927 0 R 1211 0 R 1272 0 R 1323 0 R 1378 0 R 1419 0 R] +/Parent 2728 0 R +/Kids [931 0 R 1216 0 R 1277 0 R 1328 0 R 1383 0 R 1424 0 R] >> endobj -2702 0 obj << +2724 0 obj << /Type /Pages /Count 36 -/Parent 2706 0 R -/Kids [1475 0 R 1515 0 R 1557 0 R 1604 0 R 1639 0 R 1670 0 R] +/Parent 2728 0 R +/Kids [1480 0 R 1520 0 R 1562 0 R 1609 0 R 1644 0 R 1675 0 R] >> endobj -2703 0 obj << +2725 0 obj << /Type /Pages /Count 36 -/Parent 2706 0 R -/Kids [1708 0 R 1744 0 R 1783 0 R 1821 0 R 1851 0 R 1934 0 R] +/Parent 2728 0 R +/Kids [1712 0 R 1747 0 R 1787 0 R 1820 0 R 1853 0 R 1927 0 R] >> endobj -2704 0 obj << +2726 0 obj << /Type /Pages /Count 36 -/Parent 2706 0 R -/Kids [1983 0 R 2031 0 R 2072 0 R 2294 0 R 2333 0 R 2374 0 R] +/Parent 2728 0 R +/Kids [1973 0 R 2022 0 R 2071 0 R 2112 0 R 2333 0 R 2371 0 R] >> endobj -2705 0 obj << +2727 0 obj << /Type /Pages -/Count 32 -/Parent 2706 0 R -/Kids [2424 0 R 2468 0 R 2516 0 R 2564 0 R 2607 0 R 2669 0 R] +/Count 36 +/Parent 2728 0 R +/Kids [2414 0 R 2457 0 R 2507 0 R 2549 0 R 2597 0 R 2647 0 R] >> endobj -2706 0 obj << +2728 0 obj << /Type /Pages -/Count 176 -/Kids [2701 0 R 2702 0 R 2703 0 R 2704 0 R 2705 0 R] +/Count 180 +/Kids [2723 0 R 2724 0 R 2725 0 R 2726 0 R 2727 0 R] >> endobj -2707 0 obj << +2729 0 obj << /Type /Outlines /First 7 0 R -/Last 831 0 R +/Last 835 0 R /Count 10 >> endobj +919 0 obj << +/Title 920 0 R +/A 917 0 R +/Parent 835 0 R +/Prev 915 0 R +>> endobj 915 0 obj << /Title 916 0 R /A 913 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 911 0 R +/Next 919 0 R >> endobj 911 0 obj << /Title 912 0 R /A 909 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 907 0 R /Next 915 0 R >> endobj 907 0 obj << /Title 908 0 R /A 905 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 903 0 R /Next 911 0 R >> endobj 903 0 obj << /Title 904 0 R /A 901 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 899 0 R /Next 907 0 R >> endobj 899 0 obj << /Title 900 0 R /A 897 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 895 0 R /Next 903 0 R >> endobj 895 0 obj << /Title 896 0 R /A 893 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 891 0 R /Next 899 0 R >> endobj 891 0 obj << /Title 892 0 R /A 889 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 887 0 R /Next 895 0 R >> endobj 887 0 obj << /Title 888 0 R /A 885 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 883 0 R /Next 891 0 R >> endobj 883 0 obj << /Title 884 0 R /A 881 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 879 0 R /Next 887 0 R >> endobj 879 0 obj << /Title 880 0 R /A 877 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 875 0 R /Next 883 0 R >> endobj 875 0 obj << /Title 876 0 R /A 873 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 871 0 R /Next 879 0 R >> endobj 871 0 obj << /Title 872 0 R /A 869 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 867 0 R /Next 875 0 R >> endobj 867 0 obj << /Title 868 0 R /A 865 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 863 0 R /Next 871 0 R >> endobj 863 0 obj << /Title 864 0 R /A 861 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 859 0 R /Next 867 0 R >> endobj 859 0 obj << /Title 860 0 R /A 857 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 855 0 R /Next 863 0 R >> endobj 855 0 obj << /Title 856 0 R /A 853 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 851 0 R /Next 859 0 R >> endobj 851 0 obj << /Title 852 0 R /A 849 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 847 0 R /Next 855 0 R >> endobj 847 0 obj << /Title 848 0 R /A 845 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 843 0 R /Next 851 0 R >> endobj 843 0 obj << /Title 844 0 R /A 841 0 R -/Parent 831 0 R +/Parent 835 0 R /Prev 839 0 R /Next 847 0 R >> endobj 839 0 obj << /Title 840 0 R /A 837 0 R -/Parent 831 0 R -/Prev 835 0 R +/Parent 835 0 R /Next 843 0 R >> endobj 835 0 obj << /Title 836 0 R /A 833 0 R -/Parent 831 0 R -/Next 839 0 R +/Parent 2729 0 R +/Prev 743 0 R +/First 839 0 R +/Last 919 0 R +/Count -21 >> endobj 831 0 obj << /Title 832 0 R /A 829 0 R -/Parent 2707 0 R -/Prev 739 0 R -/First 835 0 R -/Last 915 0 R -/Count -21 +/Parent 779 0 R +/Prev 803 0 R >> endobj 827 0 obj << /Title 828 0 R /A 825 0 R -/Parent 775 0 R -/Prev 799 0 R +/Parent 803 0 R +/Prev 823 0 R >> endobj 823 0 obj << /Title 824 0 R /A 821 0 R -/Parent 799 0 R +/Parent 803 0 R /Prev 819 0 R +/Next 827 0 R >> endobj 819 0 obj << /Title 820 0 R /A 817 0 R -/Parent 799 0 R +/Parent 803 0 R /Prev 815 0 R /Next 823 0 R >> endobj 815 0 obj << /Title 816 0 R /A 813 0 R -/Parent 799 0 R +/Parent 803 0 R /Prev 811 0 R /Next 819 0 R >> endobj 811 0 obj << /Title 812 0 R /A 809 0 R -/Parent 799 0 R +/Parent 803 0 R /Prev 807 0 R /Next 815 0 R >> endobj 807 0 obj << /Title 808 0 R /A 805 0 R -/Parent 799 0 R -/Prev 803 0 R +/Parent 803 0 R /Next 811 0 R >> endobj 803 0 obj << /Title 804 0 R /A 801 0 R -/Parent 799 0 R -/Next 807 0 R +/Parent 779 0 R +/Prev 799 0 R +/Next 831 0 R +/First 807 0 R +/Last 827 0 R +/Count -6 >> endobj 799 0 obj << /Title 800 0 R /A 797 0 R -/Parent 775 0 R +/Parent 779 0 R /Prev 795 0 R -/Next 827 0 R -/First 803 0 R -/Last 823 0 R -/Count -6 +/Next 803 0 R >> endobj 795 0 obj << /Title 796 0 R /A 793 0 R -/Parent 775 0 R +/Parent 779 0 R /Prev 791 0 R /Next 799 0 R >> endobj 791 0 obj << /Title 792 0 R /A 789 0 R -/Parent 775 0 R +/Parent 779 0 R /Prev 787 0 R /Next 795 0 R >> endobj 787 0 obj << /Title 788 0 R /A 785 0 R -/Parent 775 0 R +/Parent 779 0 R /Prev 783 0 R /Next 791 0 R >> endobj 783 0 obj << /Title 784 0 R /A 781 0 R -/Parent 775 0 R -/Prev 779 0 R +/Parent 779 0 R /Next 787 0 R >> endobj 779 0 obj << /Title 780 0 R /A 777 0 R -/Parent 775 0 R -/Next 783 0 R +/Parent 743 0 R +/Prev 763 0 R +/First 783 0 R +/Last 831 0 R +/Count -7 >> endobj 775 0 obj << /Title 776 0 R /A 773 0 R -/Parent 739 0 R -/Prev 759 0 R -/First 779 0 R -/Last 827 0 R -/Count -7 +/Parent 763 0 R +/Prev 771 0 R >> endobj 771 0 obj << /Title 772 0 R /A 769 0 R -/Parent 759 0 R +/Parent 763 0 R /Prev 767 0 R +/Next 775 0 R >> endobj 767 0 obj << /Title 768 0 R /A 765 0 R -/Parent 759 0 R -/Prev 763 0 R +/Parent 763 0 R /Next 771 0 R >> endobj 763 0 obj << /Title 764 0 R /A 761 0 R -/Parent 759 0 R -/Next 767 0 R +/Parent 743 0 R +/Prev 755 0 R +/Next 779 0 R +/First 767 0 R +/Last 775 0 R +/Count -3 >> endobj 759 0 obj << /Title 760 0 R /A 757 0 R -/Parent 739 0 R -/Prev 751 0 R -/Next 775 0 R -/First 763 0 R -/Last 771 0 R -/Count -3 +/Parent 755 0 R >> endobj 755 0 obj << /Title 756 0 R /A 753 0 R -/Parent 751 0 R +/Parent 743 0 R +/Prev 747 0 R +/Next 763 0 R +/First 759 0 R +/Last 759 0 R +/Count -1 >> endobj 751 0 obj << /Title 752 0 R /A 749 0 R -/Parent 739 0 R -/Prev 743 0 R -/Next 759 0 R -/First 755 0 R -/Last 755 0 R -/Count -1 +/Parent 747 0 R >> endobj 747 0 obj << /Title 748 0 R /A 745 0 R /Parent 743 0 R +/Next 755 0 R +/First 751 0 R +/Last 751 0 R +/Count -1 >> endobj 743 0 obj << /Title 744 0 R /A 741 0 R -/Parent 739 0 R -/Next 751 0 R +/Parent 2729 0 R +/Prev 723 0 R +/Next 835 0 R /First 747 0 R -/Last 747 0 R -/Count -1 +/Last 779 0 R +/Count -4 >> endobj 739 0 obj << /Title 740 0 R /A 737 0 R -/Parent 2707 0 R -/Prev 719 0 R -/Next 831 0 R -/First 743 0 R -/Last 775 0 R -/Count -4 +/Parent 723 0 R +/Prev 735 0 R >> endobj 735 0 obj << /Title 736 0 R /A 733 0 R -/Parent 719 0 R -/Prev 731 0 R +/Parent 723 0 R +/Prev 727 0 R +/Next 739 0 R >> endobj 731 0 obj << /Title 732 0 R /A 729 0 R -/Parent 719 0 R -/Prev 723 0 R -/Next 735 0 R +/Parent 727 0 R >> endobj 727 0 obj << /Title 728 0 R /A 725 0 R /Parent 723 0 R +/Next 735 0 R +/First 731 0 R +/Last 731 0 R +/Count -1 >> endobj 723 0 obj << /Title 724 0 R /A 721 0 R -/Parent 719 0 R -/Next 731 0 R +/Parent 2729 0 R +/Prev 699 0 R +/Next 743 0 R /First 727 0 R -/Last 727 0 R -/Count -1 +/Last 739 0 R +/Count -3 >> endobj 719 0 obj << /Title 720 0 R /A 717 0 R -/Parent 2707 0 R -/Prev 695 0 R -/Next 739 0 R -/First 723 0 R -/Last 735 0 R -/Count -3 +/Parent 699 0 R +/Prev 707 0 R >> endobj 715 0 obj << /Title 716 0 R /A 713 0 R -/Parent 695 0 R -/Prev 703 0 R +/Parent 707 0 R +/Prev 711 0 R >> endobj 711 0 obj << /Title 712 0 R /A 709 0 R -/Parent 703 0 R -/Prev 707 0 R +/Parent 707 0 R +/Next 715 0 R >> endobj 707 0 obj << /Title 708 0 R /A 705 0 R -/Parent 703 0 R -/Next 711 0 R +/Parent 699 0 R +/Prev 703 0 R +/Next 719 0 R +/First 711 0 R +/Last 715 0 R +/Count -2 >> endobj 703 0 obj << /Title 704 0 R /A 701 0 R -/Parent 695 0 R -/Prev 699 0 R -/Next 715 0 R -/First 707 0 R -/Last 711 0 R -/Count -2 +/Parent 699 0 R +/Next 707 0 R >> endobj 699 0 obj << /Title 700 0 R /A 697 0 R -/Parent 695 0 R -/Next 703 0 R +/Parent 2729 0 R +/Prev 355 0 R +/Next 723 0 R +/First 703 0 R +/Last 719 0 R +/Count -3 >> endobj 695 0 obj << /Title 696 0 R /A 693 0 R -/Parent 2707 0 R -/Prev 355 0 R -/Next 719 0 R -/First 699 0 R -/Last 715 0 R -/Count -3 +/Parent 675 0 R +/Prev 691 0 R >> endobj 691 0 obj << /Title 692 0 R /A 689 0 R -/Parent 671 0 R +/Parent 675 0 R /Prev 687 0 R +/Next 695 0 R >> endobj 687 0 obj << /Title 688 0 R /A 685 0 R -/Parent 671 0 R +/Parent 675 0 R /Prev 683 0 R /Next 691 0 R >> endobj 683 0 obj << /Title 684 0 R /A 681 0 R -/Parent 671 0 R +/Parent 675 0 R /Prev 679 0 R /Next 687 0 R >> endobj 679 0 obj << /Title 680 0 R /A 677 0 R -/Parent 671 0 R -/Prev 675 0 R +/Parent 675 0 R /Next 683 0 R >> endobj 675 0 obj << /Title 676 0 R /A 673 0 R -/Parent 671 0 R -/Next 679 0 R +/Parent 667 0 R +/Prev 671 0 R +/First 679 0 R +/Last 695 0 R +/Count -5 >> endobj 671 0 obj << /Title 672 0 R /A 669 0 R -/Parent 663 0 R -/Prev 667 0 R -/First 675 0 R -/Last 691 0 R -/Count -5 +/Parent 667 0 R +/Next 675 0 R >> endobj 667 0 obj << /Title 668 0 R /A 665 0 R -/Parent 663 0 R -/Next 671 0 R +/Parent 355 0 R +/Prev 611 0 R +/First 671 0 R +/Last 675 0 R +/Count -2 >> endobj 663 0 obj << /Title 664 0 R /A 661 0 R -/Parent 355 0 R -/Prev 607 0 R -/First 667 0 R -/Last 671 0 R -/Count -2 +/Parent 611 0 R +/Prev 659 0 R >> endobj 659 0 obj << /Title 660 0 R /A 657 0 R -/Parent 607 0 R -/Prev 655 0 R +/Parent 611 0 R +/Prev 639 0 R +/Next 663 0 R >> endobj 655 0 obj << /Title 656 0 R /A 653 0 R -/Parent 607 0 R -/Prev 635 0 R -/Next 659 0 R +/Parent 639 0 R +/Prev 651 0 R >> endobj 651 0 obj << /Title 652 0 R /A 649 0 R -/Parent 635 0 R +/Parent 639 0 R /Prev 647 0 R +/Next 655 0 R >> endobj 647 0 obj << /Title 648 0 R /A 645 0 R -/Parent 635 0 R +/Parent 639 0 R /Prev 643 0 R /Next 651 0 R >> endobj 643 0 obj << /Title 644 0 R /A 641 0 R -/Parent 635 0 R -/Prev 639 0 R +/Parent 639 0 R /Next 647 0 R >> endobj 639 0 obj << /Title 640 0 R /A 637 0 R -/Parent 635 0 R -/Next 643 0 R +/Parent 611 0 R +/Prev 635 0 R +/Next 659 0 R +/First 643 0 R +/Last 655 0 R +/Count -4 >> endobj 635 0 obj << /Title 636 0 R /A 633 0 R -/Parent 607 0 R +/Parent 611 0 R /Prev 631 0 R -/Next 655 0 R -/First 639 0 R -/Last 651 0 R -/Count -4 +/Next 639 0 R >> endobj 631 0 obj << /Title 632 0 R /A 629 0 R -/Parent 607 0 R +/Parent 611 0 R /Prev 627 0 R /Next 635 0 R >> endobj 627 0 obj << /Title 628 0 R /A 625 0 R -/Parent 607 0 R -/Prev 623 0 R +/Parent 611 0 R +/Prev 615 0 R /Next 631 0 R >> endobj 623 0 obj << /Title 624 0 R /A 621 0 R -/Parent 607 0 R -/Prev 611 0 R -/Next 627 0 R +/Parent 615 0 R +/Prev 619 0 R >> endobj 619 0 obj << /Title 620 0 R /A 617 0 R -/Parent 611 0 R -/Prev 615 0 R +/Parent 615 0 R +/Next 623 0 R >> endobj 615 0 obj << /Title 616 0 R /A 613 0 R /Parent 611 0 R -/Next 619 0 R +/Next 627 0 R +/First 619 0 R +/Last 623 0 R +/Count -2 >> endobj 611 0 obj << /Title 612 0 R /A 609 0 R -/Parent 607 0 R -/Next 623 0 R +/Parent 355 0 R +/Prev 387 0 R +/Next 667 0 R /First 615 0 R -/Last 619 0 R -/Count -2 +/Last 663 0 R +/Count -7 >> endobj 607 0 obj << /Title 608 0 R /A 605 0 R -/Parent 355 0 R -/Prev 387 0 R -/Next 663 0 R -/First 611 0 R -/Last 659 0 R -/Count -7 +/Parent 591 0 R +/Prev 603 0 R >> endobj 603 0 obj << /Title 604 0 R /A 601 0 R -/Parent 587 0 R +/Parent 591 0 R /Prev 599 0 R +/Next 607 0 R >> endobj 599 0 obj << /Title 600 0 R /A 597 0 R -/Parent 587 0 R +/Parent 591 0 R /Prev 595 0 R /Next 603 0 R >> endobj 595 0 obj << /Title 596 0 R /A 593 0 R -/Parent 587 0 R -/Prev 591 0 R +/Parent 591 0 R /Next 599 0 R >> endobj 591 0 obj << /Title 592 0 R /A 589 0 R -/Parent 587 0 R -/Next 595 0 R +/Parent 387 0 R +/Prev 587 0 R +/First 595 0 R +/Last 607 0 R +/Count -4 >> endobj 587 0 obj << /Title 588 0 R /A 585 0 R /Parent 387 0 R /Prev 583 0 R -/First 591 0 R -/Last 603 0 R -/Count -4 +/Next 591 0 R >> endobj 583 0 obj << /Title 584 0 R @@ -15078,21 +15235,21 @@ endobj /Title 548 0 R /A 545 0 R /Parent 387 0 R -/Prev 543 0 R +/Prev 463 0 R /Next 551 0 R >> endobj 543 0 obj << /Title 544 0 R /A 541 0 R -/Parent 387 0 R -/Prev 463 0 R -/Next 547 0 R +/Parent 463 0 R +/Prev 539 0 R >> endobj 539 0 obj << /Title 540 0 R /A 537 0 R /Parent 463 0 R /Prev 535 0 R +/Next 543 0 R >> endobj 535 0 obj << /Title 536 0 R @@ -15224,10 +15381,10 @@ endobj /A 461 0 R /Parent 387 0 R /Prev 459 0 R -/Next 543 0 R +/Next 547 0 R /First 467 0 R -/Last 539 0 R -/Count -19 +/Last 543 0 R +/Count -20 >> endobj 459 0 obj << /Title 460 0 R @@ -15360,9 +15517,9 @@ endobj /A 385 0 R /Parent 355 0 R /Prev 359 0 R -/Next 607 0 R +/Next 611 0 R /First 391 0 R -/Last 587 0 R +/Last 591 0 R /Count -28 >> endobj 383 0 obj << @@ -15419,11 +15576,11 @@ endobj 355 0 obj << /Title 356 0 R /A 353 0 R -/Parent 2707 0 R +/Parent 2729 0 R /Prev 343 0 R -/Next 695 0 R +/Next 699 0 R /First 359 0 R -/Last 663 0 R +/Last 667 0 R /Count -4 >> endobj 351 0 obj << @@ -15441,7 +15598,7 @@ endobj 343 0 obj << /Title 344 0 R /A 341 0 R -/Parent 2707 0 R +/Parent 2729 0 R /Prev 131 0 R /Next 355 0 R /First 347 0 R @@ -15824,7 +15981,7 @@ endobj 131 0 obj << /Title 132 0 R /A 129 0 R -/Parent 2707 0 R +/Parent 2729 0 R /Prev 91 0 R /Next 343 0 R /First 135 0 R @@ -15898,7 +16055,7 @@ endobj 91 0 obj << /Title 92 0 R /A 89 0 R -/Parent 2707 0 R +/Parent 2729 0 R /Prev 67 0 R /Next 131 0 R /First 95 0 R @@ -15941,7 +16098,7 @@ endobj 67 0 obj << /Title 68 0 R /A 65 0 R -/Parent 2707 0 R +/Parent 2729 0 R /Prev 7 0 R /Next 91 0 R /First 71 0 R @@ -16050,2757 +16207,2779 @@ endobj 7 0 obj << /Title 8 0 R /A 5 0 R -/Parent 2707 0 R +/Parent 2729 0 R /Next 67 0 R /First 11 0 R /Last 23 0 R /Count -4 >> endobj -2708 0 obj << -/Names [(Access_Control_Lists) 2037 0 R (Bv9ARM.ch01) 1215 0 R (Bv9ARM.ch02) 1259 0 R (Bv9ARM.ch03) 1277 0 R (Bv9ARM.ch04) 1341 0 R (Bv9ARM.ch05) 1520 0 R (Bv9ARM.ch06) 1531 0 R (Bv9ARM.ch07) 2036 0 R (Bv9ARM.ch08) 2061 0 R (Bv9ARM.ch09) 2077 0 R (Bv9ARM.ch10) 2338 0 R (Configuration_File_Grammar) 1554 0 R (DNSSEC) 1407 0 R (Doc-Start) 923 0 R (Setting_TTLs) 1961 0 R (acache) 1266 0 R (access_control) 1706 0 R (acl) 1563 0 R (address_match_lists) 1536 0 R (admin_tools) 1299 0 R (appendix.A) 738 0 R (appendix.B) 830 0 R (bibliography) 2085 0 R (bind9.library) 2293 0 R (boolean_options) 1357 0 R (builtin) 1781 0 R (chapter*.1) 957 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 342 0 R (chapter.6) 354 0 R (chapter.7) 694 0 R (chapter.8) 718 0 R (cite.RFC1033) 2212 0 R (cite.RFC1034) 2097 0 R (cite.RFC1035) 2099 0 R (cite.RFC1101) 2194 0 R (cite.RFC1123) 2196 0 R (cite.RFC1183) 2156 0 R (cite.RFC1464) 2234 0 R (cite.RFC1535) 2142 0 R (cite.RFC1536) 2144 0 R (cite.RFC1537) 2214 0 R (cite.RFC1591) 2198 0 R (cite.RFC1706) 2158 0 R (cite.RFC1712) 2254 0 R (cite.RFC1713) 2236 0 R (cite.RFC1794) 2238 0 R (cite.RFC1876) 2160 0 R (cite.RFC1912) 2216 0 R (cite.RFC1982) 2146 0 R (cite.RFC1995) 2104 0 R (cite.RFC1996) 2106 0 R (cite.RFC2010) 2218 0 R (cite.RFC2052) 2162 0 R (cite.RFC2065) 2266 0 R (cite.RFC2136) 2108 0 R (cite.RFC2137) 2268 0 R (cite.RFC2163) 2164 0 R (cite.RFC2168) 2166 0 R (cite.RFC2181) 2110 0 R (cite.RFC2219) 2220 0 R (cite.RFC2230) 2168 0 R (cite.RFC2240) 2240 0 R (cite.RFC2308) 2112 0 R (cite.RFC2317) 2200 0 R (cite.RFC2345) 2242 0 R (cite.RFC2352) 2244 0 R (cite.RFC2535) 2270 0 R (cite.RFC2536) 2170 0 R (cite.RFC2537) 2172 0 R (cite.RFC2538) 2174 0 R (cite.RFC2539) 2176 0 R (cite.RFC2540) 2178 0 R (cite.RFC2671) 2114 0 R (cite.RFC2672) 2116 0 R (cite.RFC2673) 2256 0 R (cite.RFC2782) 2180 0 R (cite.RFC2825) 2224 0 R (cite.RFC2826) 2202 0 R (cite.RFC2845) 2118 0 R (cite.RFC2874) 2258 0 R (cite.RFC2915) 2182 0 R (cite.RFC2929) 2204 0 R (cite.RFC2930) 2120 0 R (cite.RFC2931) 2122 0 R (cite.RFC3007) 2124 0 R (cite.RFC3008) 2272 0 R (cite.RFC3071) 2246 0 R (cite.RFC3090) 2274 0 R (cite.RFC3110) 2184 0 R (cite.RFC3123) 2186 0 R (cite.RFC3225) 2130 0 R (cite.RFC3258) 2248 0 R (cite.RFC3445) 2276 0 R (cite.RFC3490) 2226 0 R (cite.RFC3491) 2228 0 R (cite.RFC3492) 2230 0 R (cite.RFC3596) 2188 0 R (cite.RFC3597) 2190 0 R (cite.RFC3645) 2126 0 R (cite.RFC3655) 2278 0 R (cite.RFC3658) 2280 0 R (cite.RFC3755) 2282 0 R (cite.RFC3757) 2284 0 R (cite.RFC3833) 2132 0 R (cite.RFC3845) 2286 0 R (cite.RFC3901) 2250 0 R (cite.RFC4033) 2134 0 R (cite.RFC4034) 2136 0 R (cite.RFC4035) 2138 0 R (cite.RFC4074) 2148 0 R (cite.RFC974) 2101 0 R (cite.id2510579) 2291 0 R (clients-per-query) 2015 0 R (configuration_file_elements) 1532 0 R (controls_statement_definition_and_usage) 1324 0 R (diagnostic_tools) 1247 0 R (dnssec.dynamic.zones) 1427 0 R (dynamic_update) 1351 0 R (dynamic_update_policies) 1313 0 R (dynamic_update_security) 1716 0 R (empty) 1789 0 R (historical_dns_information) 2079 0 R (id2466560) 1216 0 R (id2466583) 1217 0 R (id2467282) 1366 0 R (id2467368) 1372 0 R (id2467474) 1218 0 R (id2467483) 1219 0 R (id2467723) 1229 0 R (id2467745) 1230 0 R (id2467779) 1231 0 R (id2467863) 1234 0 R (id2467956) 1227 0 R (id2470261) 1241 0 R (id2470284) 1244 0 R (id2470382) 1245 0 R (id2470404) 1246 0 R (id2470502) 1252 0 R (id2470537) 1253 0 R (id2470564) 1254 0 R (id2470598) 1260 0 R (id2470625) 1261 0 R (id2470637) 1262 0 R (id2470731) 1265 0 R (id2470742) 1271 0 R (id2470774) 1279 0 R (id2470790) 1280 0 R (id2470812) 1285 0 R (id2470829) 1286 0 R (id2471235) 1294 0 R (id2471240) 1295 0 R (id2473323) 1329 0 R (id2473335) 1330 0 R (id2474423) 1388 0 R (id2474440) 1389 0 R (id2474478) 1390 0 R (id2474497) 1391 0 R (id2474507) 1392 0 R (id2474544) 1397 0 R (id2474669) 1398 0 R (id2474718) 1400 0 R (id2474732) 1401 0 R (id2474918) 1406 0 R (id2475054) 1408 0 R (id2475202) 1413 0 R (id2475283) 1414 0 R (id2475411) 1428 0 R (id2475653) 1429 0 R (id2475689) 1434 0 R (id2475840) 1440 0 R (id2475877) 1447 0 R (id2475890) 1448 0 R (id2475923) 1449 0 R (id2475949) 1450 0 R (id2475959) 1455 0 R (id2476037) 1456 0 R (id2476050) 1457 0 R (id2476087) 1458 0 R (id2476097) 1459 0 R (id2476201) 1461 0 R (id2476224) 1468 0 R (id2476461) 1474 0 R (id2476557) 1480 0 R (id2476627) 1481 0 R (id2476801) 1486 0 R (id2476809) 1487 0 R (id2476840) 1488 0 R (id2476964) 1489 0 R (id2476995) 1494 0 R (id2477330) 1500 0 R (id2477376) 1501 0 R (id2477430) 1506 0 R (id2477560) 1508 0 R (id2477581) 1509 0 R (id2477614) 1521 0 R (id2477830) 1533 0 R (id2478791) 1541 0 R (id2478819) 1546 0 R (id2479025) 1547 0 R (id2479040) 1548 0 R (id2479069) 1553 0 R (id2479281) 1555 0 R (id2479747) 1562 0 R (id2479789) 1564 0 R (id2479937) 1566 0 R (id2480296) 1573 0 R (id2480313) 1579 0 R (id2480405) 1580 0 R (id2480428) 1581 0 R (id2480587) 1585 0 R (id2480781) 1590 0 R (id2480834) 1591 0 R (id2481390) 1602 0 R (id2482124) 1613 0 R (id2482254) 1614 0 R (id2482576) 1620 0 R (id2482717) 1625 0 R (id2482781) 1628 0 R (id2482825) 1629 0 R (id2482840) 1630 0 R (id2486020) 1668 0 R (id2488210) 1698 0 R (id2488405) 1700 0 R (id2488932) 1715 0 R (id2490067) 1734 0 R (id2490126) 1740 0 R (id2490617) 1749 0 R (id2491120) 1763 0 R (id2492867) 1794 0 R (id2493619) 1812 0 R (id2493758) 1818 0 R (id2493805) 1820 0 R (id2494299) 1826 0 R (id2495873) 1843 0 R (id2495880) 1844 0 R (id2495885) 1845 0 R (id2496308) 1857 0 R (id2496341) 1858 0 R (id2498274) 1920 0 R (id2498628) 1926 0 R (id2498646) 1927 0 R (id2498666) 1930 0 R (id2498971) 1932 0 R (id2500005) 1943 0 R (id2500269) 1949 0 R (id2500291) 1950 0 R (id2500653) 1952 0 R (id2500790) 1954 0 R (id2500808) 1959 0 R (id2501349) 1962 0 R (id2501474) 1964 0 R (id2501489) 1965 0 R (id2501601) 1971 0 R (id2501623) 1972 0 R (id2501707) 1973 0 R (id2501905) 1974 0 R (id2501974) 1979 0 R (id2502010) 1980 0 R (id2502086) 1981 0 R (id2502597) 1993 0 R (id2502964) 2001 0 R (id2502969) 2002 0 R (id2504437) 2009 0 R (id2504443) 2010 0 R (id2504820) 2012 0 R (id2504825) 2013 0 R (id2505910) 2020 0 R (id2505942) 2021 0 R (id2506352) 2030 0 R (id2506525) 2046 0 R (id2506675) 2047 0 R (id2506803) 2048 0 R (id2506951) 2062 0 R (id2507025) 2063 0 R (id2507036) 2064 0 R (id2507053) 2065 0 R (id2507184) 2078 0 R (id2507287) 2084 0 R (id2507543) 2089 0 R (id2507545) 2095 0 R (id2507554) 2100 0 R (id2507577) 2096 0 R (id2507601) 2098 0 R (id2507637) 2109 0 R (id2507664) 2111 0 R (id2507689) 2103 0 R (id2507714) 2105 0 R (id2507737) 2107 0 R (id2507793) 2113 0 R (id2507819) 2115 0 R (id2507846) 2117 0 R (id2507908) 2119 0 R (id2507938) 2121 0 R (id2507968) 2123 0 R (id2507994) 2125 0 R (id2508069) 2128 0 R (id2508076) 2129 0 R (id2508103) 2131 0 R (id2508139) 2133 0 R (id2508204) 2135 0 R (id2508269) 2137 0 R (id2508334) 2140 0 R (id2508343) 2141 0 R (id2508369) 2143 0 R (id2508437) 2145 0 R (id2508472) 2147 0 R (id2508513) 2154 0 R (id2508518) 2155 0 R (id2508576) 2157 0 R (id2508613) 2165 0 R (id2508648) 2159 0 R (id2508702) 2161 0 R (id2508741) 2163 0 R (id2508766) 2167 0 R (id2508792) 2169 0 R (id2508819) 2171 0 R (id2508845) 2173 0 R (id2508885) 2175 0 R (id2508915) 2177 0 R (id2508945) 2179 0 R (id2508987) 2181 0 R (id2509020) 2183 0 R (id2509047) 2185 0 R (id2509070) 2187 0 R (id2509128) 2189 0 R (id2509153) 2192 0 R (id2509160) 2193 0 R (id2509186) 2195 0 R (id2509208) 2197 0 R (id2509232) 2199 0 R (id2509277) 2201 0 R (id2509301) 2203 0 R (id2509419) 2210 0 R (id2509427) 2211 0 R (id2509450) 2213 0 R (id2509477) 2215 0 R (id2509504) 2217 0 R (id2509540) 2219 0 R (id2509580) 2222 0 R (id2509586) 2223 0 R (id2509618) 2225 0 R (id2509664) 2227 0 R (id2509699) 2229 0 R (id2509725) 2232 0 R (id2509744) 2233 0 R (id2509834) 2235 0 R (id2509860) 2237 0 R (id2509885) 2239 0 R (id2509909) 2241 0 R (id2509955) 2243 0 R (id2509978) 2245 0 R (id2510005) 2247 0 R (id2510030) 2249 0 R (id2510068) 2252 0 R (id2510074) 2253 0 R (id2510132) 2255 0 R (id2510158) 2257 0 R (id2510195) 2264 0 R (id2510206) 2265 0 R (id2510246) 2267 0 R (id2510273) 2269 0 R (id2510302) 2271 0 R (id2510328) 2273 0 R (id2510355) 2275 0 R (id2510391) 2277 0 R (id2510427) 2279 0 R (id2510454) 2281 0 R (id2510481) 2283 0 R (id2510525) 2285 0 R (id2510567) 2288 0 R (id2510577) 2290 0 R (id2510579) 2292 0 R (id2510803) 2299 0 R (id2510812) 2300 0 R (id2510837) 2301 0 R (id2510868) 2302 0 R (id2511013) 2307 0 R (id2511040) 2309 0 R (id2511048) 2310 0 R (id2511207) 2315 0 R (id2511260) 2316 0 R (id2511324) 2317 0 R (id2511339) 2322 0 R (id2511470) 2327 0 R (id2511534) 2328 0 R (incremental_zone_transfers) 1363 0 R (internet_drafts) 2287 0 R (ipv6addresses) 1510 0 R (journal) 1353 0 R (lwresd) 1522 0 R (man.arpaname) 2647 0 R (man.ddns-confgen) 2632 0 R (man.dig) 2339 0 R (man.dnssec-dsfromkey) 2387 0 R (man.dnssec-keyfromlabel) 2405 0 R (man.dnssec-keygen) 1441 0 R (man.dnssec-revoke) 2448 0 R (man.dnssec-settime) 1442 0 R (man.dnssec-signzone) 2476 0 R (man.genrandom) 2653 0 R (man.host) 2371 0 R (man.isc-hmac-fixup) 2664 0 R (man.named) 2533 0 R (man.named-checkconf) 2500 0 R (man.named-checkzone) 2512 0 R (man.named-journalprint) 2555 0 R (man.nsec3hash) 2676 0 R (man.nsupdate) 2561 0 R (man.rndc) 2587 0 R (man.rndc-confgen) 2620 0 R (man.rndc.conf) 2603 0 R (managed-keys) 1463 0 R (notify) 1342 0 R (options) 1312 0 R (page.1) 922 0 R (page.10) 1303 0 R (page.100) 1958 0 R (page.101) 1970 0 R (page.102) 1978 0 R (page.103) 1987 0 R (page.104) 1992 0 R (page.105) 1999 0 R (page.106) 2007 0 R (page.107) 2019 0 R (page.108) 2026 0 R (page.109) 2035 0 R (page.11) 1317 0 R (page.110) 2041 0 R (page.111) 2052 0 R (page.112) 2056 0 R (page.113) 2060 0 R (page.114) 2071 0 R (page.115) 2076 0 R (page.116) 2083 0 R (page.117) 2093 0 R (page.118) 2152 0 R (page.119) 2208 0 R (page.12) 1321 0 R (page.120) 2262 0 R (page.121) 2298 0 R (page.122) 2306 0 R (page.123) 2314 0 R (page.124) 2321 0 R (page.125) 2326 0 R (page.126) 2332 0 R (page.127) 2337 0 R (page.128) 2346 0 R (page.129) 2352 0 R (page.13) 1328 0 R (page.130) 2357 0 R (page.131) 2361 0 R (page.132) 2366 0 R (page.133) 2378 0 R (page.134) 2383 0 R (page.135) 2395 0 R (page.136) 2404 0 R (page.137) 2413 0 R (page.138) 2418 0 R (page.139) 2428 0 R (page.14) 1335 0 R (page.140) 2434 0 R (page.141) 2438 0 R (page.142) 2444 0 R (page.143) 2456 0 R (page.144) 2466 0 R (page.145) 2472 0 R (page.146) 2484 0 R (page.147) 2488 0 R (page.148) 2492 0 R (page.149) 2497 0 R (page.15) 1340 0 R (page.150) 2508 0 R (page.151) 2520 0 R (page.152) 2525 0 R (page.153) 2532 0 R (page.154) 2541 0 R (page.155) 2545 0 R (page.156) 2554 0 R (page.157) 2568 0 R (page.158) 2573 0 R (page.159) 2578 0 R (page.16) 1362 0 R (page.160) 2583 0 R (page.161) 2593 0 R (page.162) 2600 0 R (page.163) 2611 0 R (page.164) 2616 0 R (page.165) 2628 0 R (page.166) 2637 0 R (page.167) 2645 0 R (page.168) 2660 0 R (page.169) 2673 0 R (page.17) 1371 0 R (page.18) 1377 0 R (page.19) 1382 0 R (page.2) 946 0 R (page.20) 1387 0 R (page.21) 1396 0 R (page.22) 1405 0 R (page.23) 1412 0 R (page.24) 1418 0 R (page.25) 1423 0 R (page.26) 1433 0 R (page.27) 1446 0 R (page.28) 1454 0 R (page.29) 1467 0 R (page.3) 1240 0 R (page.30) 1473 0 R (page.31) 1479 0 R (page.32) 1485 0 R (page.33) 1493 0 R (page.34) 1499 0 R (page.35) 1505 0 R (page.36) 1514 0 R (page.37) 1519 0 R (page.38) 1526 0 R (page.39) 1530 0 R (page.4) 1251 0 R (page.40) 1540 0 R (page.41) 1545 0 R (page.42) 1552 0 R (page.43) 1561 0 R (page.44) 1570 0 R (page.45) 1578 0 R (page.46) 1589 0 R (page.47) 1595 0 R (page.48) 1601 0 R (page.49) 1608 0 R (page.5) 1258 0 R (page.50) 1612 0 R (page.51) 1619 0 R (page.52) 1624 0 R (page.53) 1634 0 R (page.54) 1638 0 R (page.55) 1643 0 R (page.56) 1647 0 R (page.57) 1651 0 R (page.58) 1658 0 R (page.59) 1662 0 R (page.6) 1270 0 R (page.60) 1667 0 R (page.61) 1674 0 R (page.62) 1679 0 R (page.63) 1689 0 R (page.64) 1693 0 R (page.65) 1697 0 R (page.66) 1705 0 R (page.67) 1712 0 R (page.68) 1720 0 R (page.69) 1725 0 R (page.7) 1276 0 R (page.70) 1729 0 R (page.71) 1733 0 R (page.72) 1739 0 R (page.73) 1748 0 R (page.74) 1753 0 R (page.75) 1761 0 R (page.76) 1768 0 R (page.77) 1773 0 R (page.78) 1780 0 R (page.79) 1788 0 R (page.8) 1284 0 R (page.80) 1793 0 R (page.81) 1798 0 R (page.82) 1803 0 R (page.83) 1808 0 R (page.84) 1816 0 R (page.85) 1825 0 R (page.86) 1830 0 R (page.87) 1834 0 R (page.88) 1838 0 R (page.89) 1842 0 R (page.9) 1293 0 R (page.90) 1850 0 R (page.91) 1855 0 R (page.92) 1871 0 R (page.93) 1886 0 R (page.94) 1910 0 R (page.95) 1919 0 R (page.96) 1925 0 R (page.97) 1938 0 R (page.98) 1942 0 R (page.99) 1948 0 R (page.i) 956 0 R (page.ii) 1011 0 R (page.iii) 1075 0 R (page.iv) 1138 0 R (page.v) 1200 0 R (pkcs11) 1469 0 R (proposed_standards) 1367 0 R (query_address) 1721 0 R (rfc5011.support) 1460 0 R (rfcs) 1236 0 R (rndc) 1574 0 R (root_delegation_only) 1867 0 R (rrset_ordering) 1289 0 R (sample_configuration) 1278 0 R (section*.10) 2221 0 R (section*.100) 2549 0 R (section*.101) 2550 0 R (section*.102) 2556 0 R (section*.103) 2557 0 R (section*.104) 2558 0 R (section*.105) 2559 0 R (section*.106) 2560 0 R (section*.107) 2562 0 R (section*.108) 2563 0 R (section*.109) 2569 0 R (section*.11) 2231 0 R (section*.110) 2574 0 R (section*.111) 2579 0 R (section*.112) 2584 0 R (section*.113) 2585 0 R (section*.114) 2586 0 R (section*.115) 2588 0 R (section*.116) 2589 0 R (section*.117) 2594 0 R (section*.118) 2595 0 R (section*.119) 2596 0 R (section*.12) 2251 0 R (section*.120) 2601 0 R (section*.121) 2602 0 R (section*.122) 2604 0 R (section*.123) 2605 0 R (section*.124) 2606 0 R (section*.125) 2612 0 R (section*.126) 2617 0 R (section*.127) 2618 0 R (section*.128) 2619 0 R (section*.129) 2621 0 R (section*.13) 2263 0 R (section*.130) 2622 0 R (section*.131) 2623 0 R (section*.132) 2624 0 R (section*.133) 2629 0 R (section*.134) 2630 0 R (section*.135) 2631 0 R (section*.136) 2633 0 R (section*.137) 2638 0 R (section*.138) 2639 0 R (section*.139) 2640 0 R (section*.14) 2289 0 R (section*.140) 2641 0 R (section*.141) 2646 0 R (section*.142) 2648 0 R (section*.143) 2649 0 R (section*.144) 2650 0 R (section*.145) 2651 0 R (section*.146) 2652 0 R (section*.147) 2654 0 R (section*.148) 2655 0 R (section*.149) 2656 0 R (section*.15) 2340 0 R (section*.150) 2661 0 R (section*.151) 2662 0 R (section*.152) 2663 0 R (section*.153) 2665 0 R (section*.154) 2666 0 R (section*.155) 2667 0 R (section*.156) 2668 0 R (section*.157) 2674 0 R (section*.158) 2675 0 R (section*.159) 2677 0 R (section*.16) 2341 0 R (section*.160) 2678 0 R (section*.161) 2679 0 R (section*.162) 2680 0 R (section*.163) 2681 0 R (section*.164) 2682 0 R (section*.17) 2342 0 R (section*.18) 2347 0 R (section*.19) 2348 0 R (section*.2) 2088 0 R (section*.20) 2353 0 R (section*.21) 2362 0 R (section*.22) 2367 0 R (section*.23) 2368 0 R (section*.24) 2369 0 R (section*.25) 2370 0 R (section*.26) 2372 0 R (section*.27) 2373 0 R (section*.28) 2379 0 R (section*.29) 2384 0 R (section*.3) 2094 0 R (section*.30) 2385 0 R (section*.31) 2386 0 R (section*.32) 2388 0 R (section*.33) 2389 0 R (section*.34) 2390 0 R (section*.35) 2391 0 R (section*.36) 2396 0 R (section*.37) 2397 0 R (section*.38) 2398 0 R (section*.39) 2399 0 R (section*.4) 2102 0 R (section*.40) 2400 0 R (section*.41) 2406 0 R (section*.42) 2407 0 R (section*.43) 2408 0 R (section*.44) 2409 0 R (section*.45) 2414 0 R (section*.46) 2419 0 R (section*.47) 2420 0 R (section*.48) 2421 0 R (section*.49) 2422 0 R (section*.5) 2127 0 R (section*.50) 2423 0 R (section*.51) 2429 0 R (section*.52) 2430 0 R (section*.53) 2439 0 R (section*.54) 2440 0 R (section*.55) 2445 0 R (section*.56) 2446 0 R (section*.57) 2447 0 R (section*.58) 2449 0 R (section*.59) 2450 0 R (section*.6) 2139 0 R (section*.60) 2451 0 R (section*.61) 2452 0 R (section*.62) 2457 0 R (section*.63) 2458 0 R (section*.64) 2459 0 R (section*.65) 2460 0 R (section*.66) 2461 0 R (section*.67) 2462 0 R (section*.68) 2467 0 R (section*.69) 2473 0 R (section*.7) 2153 0 R (section*.70) 2474 0 R (section*.71) 2475 0 R (section*.72) 2477 0 R (section*.73) 2478 0 R (section*.74) 2479 0 R (section*.75) 2480 0 R (section*.76) 2493 0 R (section*.77) 2498 0 R (section*.78) 2499 0 R (section*.79) 2501 0 R (section*.8) 2191 0 R (section*.80) 2502 0 R (section*.81) 2503 0 R (section*.82) 2504 0 R (section*.83) 2509 0 R (section*.84) 2510 0 R (section*.85) 2511 0 R (section*.86) 2513 0 R (section*.87) 2514 0 R (section*.88) 2515 0 R (section*.89) 2521 0 R (section*.9) 2209 0 R (section*.90) 2526 0 R (section*.91) 2527 0 R (section*.92) 2528 0 R (section*.93) 2534 0 R (section*.94) 2535 0 R (section*.95) 2536 0 R (section*.96) 2537 0 R (section*.97) 2546 0 R (section*.98) 2547 0 R (section*.99) 2548 0 R (section.1.1) 10 0 R (section.1.2) 14 0 R (section.1.3) 18 0 R (section.1.4) 22 0 R (section.2.1) 70 0 R (section.2.2) 74 0 R (section.2.3) 78 0 R (section.2.4) 82 0 R (section.2.5) 86 0 R (section.3.1) 94 0 R (section.3.2) 106 0 R (section.3.3) 110 0 R (section.4.1) 134 0 R (section.4.10) 274 0 R (section.4.11) 286 0 R (section.4.12) 330 0 R (section.4.2) 138 0 R (section.4.3) 146 0 R (section.4.4) 150 0 R (section.4.5) 158 0 R (section.4.6) 194 0 R (section.4.7) 198 0 R (section.4.8) 202 0 R (section.4.9) 218 0 R (section.5.1) 346 0 R (section.5.2) 350 0 R (section.6.1) 358 0 R (section.6.2) 386 0 R (section.6.3) 606 0 R (section.6.4) 662 0 R (section.7.1) 698 0 R (section.7.2) 702 0 R (section.7.3) 714 0 R (section.8.1) 722 0 R (section.8.2) 730 0 R (section.8.3) 734 0 R (section.A.1) 742 0 R (section.A.2) 750 0 R (section.A.3) 758 0 R (section.A.4) 774 0 R (section.B.1) 834 0 R (section.B.10) 870 0 R (section.B.11) 874 0 R (section.B.12) 878 0 R (section.B.13) 882 0 R (section.B.14) 886 0 R (section.B.15) 890 0 R (section.B.16) 894 0 R (section.B.17) 898 0 R (section.B.18) 902 0 R (section.B.19) 906 0 R (section.B.2) 838 0 R (section.B.20) 910 0 R (section.B.21) 914 0 R (section.B.3) 842 0 R (section.B.4) 846 0 R (section.B.5) 850 0 R (section.B.6) 854 0 R (section.B.7) 858 0 R (section.B.8) 862 0 R (section.B.9) 866 0 R (server_resource_limits) 1742 0 R (server_statement_definition_and_usage) 1685 0 R (server_statement_grammar) 1804 0 R (statistics) 1988 0 R (statistics_counters) 2000 0 R (statschannels) 1811 0 R (statsfile) 1654 0 R (subsection.1.4.1) 26 0 R (subsection.1.4.2) 30 0 R (subsection.1.4.3) 34 0 R (subsection.1.4.4) 38 0 R (subsection.1.4.5) 54 0 R (subsection.1.4.6) 62 0 R (subsection.3.1.1) 98 0 R (subsection.3.1.2) 102 0 R (subsection.3.3.1) 114 0 R (subsection.3.3.2) 126 0 R (subsection.4.10.1) 278 0 R (subsection.4.10.2) 282 0 R (subsection.4.11.1) 290 0 R (subsection.4.11.2) 302 0 R (subsection.4.11.3) 314 0 R (subsection.4.11.4) 318 0 R (subsection.4.11.5) 322 0 R (subsection.4.11.6) 326 0 R (subsection.4.12.1) 334 0 R (subsection.4.12.2) 338 0 R (subsection.4.2.1) 142 0 R (subsection.4.4.1) 154 0 R (subsection.4.5.1) 162 0 R (subsection.4.5.2) 174 0 R (subsection.4.5.3) 178 0 R (subsection.4.5.4) 182 0 R (subsection.4.5.5) 186 0 R (subsection.4.5.6) 190 0 R (subsection.4.8.1) 206 0 R (subsection.4.8.2) 210 0 R (subsection.4.8.3) 214 0 R (subsection.4.9.1) 222 0 R (subsection.4.9.10) 258 0 R (subsection.4.9.11) 262 0 R (subsection.4.9.12) 266 0 R (subsection.4.9.13) 270 0 R (subsection.4.9.2) 226 0 R (subsection.4.9.3) 230 0 R (subsection.4.9.4) 234 0 R (subsection.4.9.5) 238 0 R (subsection.4.9.6) 242 0 R (subsection.4.9.7) 246 0 R (subsection.4.9.8) 250 0 R (subsection.4.9.9) 254 0 R (subsection.6.1.1) 362 0 R (subsection.6.1.2) 374 0 R (subsection.6.2.1) 390 0 R (subsection.6.2.10) 426 0 R (subsection.6.2.11) 442 0 R (subsection.6.2.12) 446 0 R (subsection.6.2.13) 450 0 R (subsection.6.2.14) 454 0 R (subsection.6.2.15) 458 0 R (subsection.6.2.16) 462 0 R (subsection.6.2.17) 542 0 R (subsection.6.2.18) 546 0 R (subsection.6.2.19) 550 0 R (subsection.6.2.2) 394 0 R (subsection.6.2.20) 554 0 R (subsection.6.2.21) 558 0 R (subsection.6.2.22) 562 0 R (subsection.6.2.23) 566 0 R (subsection.6.2.24) 570 0 R (subsection.6.2.25) 574 0 R (subsection.6.2.26) 578 0 R (subsection.6.2.27) 582 0 R (subsection.6.2.28) 586 0 R (subsection.6.2.3) 398 0 R (subsection.6.2.4) 402 0 R (subsection.6.2.5) 406 0 R (subsection.6.2.6) 410 0 R (subsection.6.2.7) 414 0 R (subsection.6.2.8) 418 0 R (subsection.6.2.9) 422 0 R (subsection.6.3.1) 610 0 R (subsection.6.3.2) 622 0 R (subsection.6.3.3) 626 0 R (subsection.6.3.4) 630 0 R (subsection.6.3.5) 634 0 R (subsection.6.3.6) 654 0 R (subsection.6.3.7) 658 0 R (subsection.6.4.1) 670 0 R (subsection.7.2.1) 706 0 R (subsection.7.2.2) 710 0 R (subsection.8.1.1) 726 0 R (subsection.A.1.1) 746 0 R (subsection.A.2.1) 754 0 R (subsection.A.3.1) 762 0 R (subsection.A.3.2) 766 0 R (subsection.A.3.3) 770 0 R (subsection.A.4.1) 778 0 R (subsection.A.4.2) 782 0 R (subsection.A.4.3) 786 0 R (subsection.A.4.4) 790 0 R (subsection.A.4.5) 794 0 R (subsection.A.4.6) 798 0 R (subsection.A.4.7) 826 0 R (subsubsection.1.4.4.1) 42 0 R (subsubsection.1.4.4.2) 46 0 R (subsubsection.1.4.4.3) 50 0 R (subsubsection.1.4.5.1) 58 0 R (subsubsection.3.3.1.1) 118 0 R (subsubsection.3.3.1.2) 122 0 R (subsubsection.4.11.1.1) 294 0 R (subsubsection.4.11.1.2) 298 0 R (subsubsection.4.11.2.1) 306 0 R (subsubsection.4.11.2.2) 310 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 366 0 R (subsubsection.6.1.1.2) 370 0 R (subsubsection.6.1.2.1) 378 0 R (subsubsection.6.1.2.2) 382 0 R (subsubsection.6.2.10.1) 430 0 R (subsubsection.6.2.10.2) 434 0 R (subsubsection.6.2.10.3) 438 0 R (subsubsection.6.2.16.1) 466 0 R (subsubsection.6.2.16.10) 502 0 R (subsubsection.6.2.16.11) 506 0 R (subsubsection.6.2.16.12) 510 0 R (subsubsection.6.2.16.13) 514 0 R (subsubsection.6.2.16.14) 518 0 R (subsubsection.6.2.16.15) 522 0 R (subsubsection.6.2.16.16) 526 0 R (subsubsection.6.2.16.17) 530 0 R (subsubsection.6.2.16.18) 534 0 R (subsubsection.6.2.16.19) 538 0 R (subsubsection.6.2.16.2) 470 0 R (subsubsection.6.2.16.3) 474 0 R (subsubsection.6.2.16.4) 478 0 R (subsubsection.6.2.16.5) 482 0 R (subsubsection.6.2.16.6) 486 0 R (subsubsection.6.2.16.7) 490 0 R (subsubsection.6.2.16.8) 494 0 R (subsubsection.6.2.16.9) 498 0 R (subsubsection.6.2.28.1) 590 0 R (subsubsection.6.2.28.2) 594 0 R (subsubsection.6.2.28.3) 598 0 R (subsubsection.6.2.28.4) 602 0 R (subsubsection.6.3.1.1) 614 0 R (subsubsection.6.3.1.2) 618 0 R (subsubsection.6.3.5.1) 638 0 R (subsubsection.6.3.5.2) 642 0 R (subsubsection.6.3.5.3) 646 0 R (subsubsection.6.3.5.4) 650 0 R (subsubsection.6.4.0.1) 666 0 R (subsubsection.6.4.1.1) 674 0 R (subsubsection.6.4.1.2) 678 0 R (subsubsection.6.4.1.3) 682 0 R (subsubsection.6.4.1.4) 686 0 R (subsubsection.6.4.1.5) 690 0 R (subsubsection.A.4.6.1) 802 0 R (subsubsection.A.4.6.2) 806 0 R (subsubsection.A.4.6.3) 810 0 R (subsubsection.A.4.6.4) 814 0 R (subsubsection.A.4.6.5) 818 0 R (subsubsection.A.4.6.6) 822 0 R (table.1.1) 1220 0 R (table.1.2) 1228 0 R (table.3.1) 1287 0 R (table.3.2) 1331 0 R (table.6.1) 1534 0 R (table.6.10) 1931 0 R (table.6.11) 1933 0 R (table.6.12) 1944 0 R (table.6.13) 1951 0 R (table.6.14) 1953 0 R (table.6.15) 1960 0 R (table.6.16) 1963 0 R (table.6.17) 1966 0 R (table.6.18) 1982 0 R (table.6.19) 1994 0 R (table.6.2) 1556 0 R (table.6.20) 2003 0 R (table.6.21) 2011 0 R (table.6.22) 2014 0 R (table.6.23) 2022 0 R (table.6.3) 1565 0 R (table.6.4) 1603 0 R (table.6.5) 1615 0 R (table.6.6) 1669 0 R (table.6.7) 1764 0 R (table.6.8) 1846 0 R (table.6.9) 1921 0 R (the_category_phrase) 1597 0 R (the_sortlist_statement) 1755 0 R (topology) 1754 0 R (trusted-keys) 1817 0 R (tsig) 1383 0 R (tuning) 1769 0 R (types_of_resource_records_and_when_to_use_them) 1235 0 R (view_statement_grammar) 1784 0 R (zone_statement_grammar) 1701 0 R (zone_transfers) 1358 0 R (zonefile_format) 1776 0 R] +2730 0 obj << +/Names [(Access_Control_Lists) 2059 0 R (Bv9ARM.ch01) 1220 0 R (Bv9ARM.ch02) 1264 0 R (Bv9ARM.ch03) 1282 0 R (Bv9ARM.ch04) 1346 0 R (Bv9ARM.ch05) 1525 0 R (Bv9ARM.ch06) 1536 0 R (Bv9ARM.ch07) 2058 0 R (Bv9ARM.ch08) 2084 0 R (Bv9ARM.ch09) 2099 0 R (Bv9ARM.ch10) 2360 0 R (Configuration_File_Grammar) 1559 0 R (DNSSEC) 1412 0 R (Doc-Start) 927 0 R (Setting_TTLs) 1980 0 R (acache) 1271 0 R (access_control) 1710 0 R (acl) 1568 0 R (address_match_lists) 1541 0 R (admin_tools) 1304 0 R (appendix.A) 742 0 R (appendix.B) 834 0 R (bibliography) 2107 0 R (bind9.library) 2316 0 R (boolean_options) 1361 0 R (builtin) 1785 0 R (chapter*.1) 961 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 342 0 R (chapter.6) 354 0 R (chapter.7) 698 0 R (chapter.8) 722 0 R (cite.RFC1033) 2235 0 R (cite.RFC1034) 2120 0 R (cite.RFC1035) 2122 0 R (cite.RFC1101) 2217 0 R (cite.RFC1123) 2219 0 R (cite.RFC1183) 2179 0 R (cite.RFC1464) 2257 0 R (cite.RFC1535) 2165 0 R (cite.RFC1536) 2167 0 R (cite.RFC1537) 2237 0 R (cite.RFC1591) 2221 0 R (cite.RFC1706) 2181 0 R (cite.RFC1712) 2277 0 R (cite.RFC1713) 2259 0 R (cite.RFC1794) 2261 0 R (cite.RFC1876) 2183 0 R (cite.RFC1912) 2239 0 R (cite.RFC1982) 2169 0 R (cite.RFC1995) 2127 0 R (cite.RFC1996) 2129 0 R (cite.RFC2010) 2241 0 R (cite.RFC2052) 2185 0 R (cite.RFC2065) 2289 0 R (cite.RFC2136) 2131 0 R (cite.RFC2137) 2291 0 R (cite.RFC2163) 2187 0 R (cite.RFC2168) 2189 0 R (cite.RFC2181) 2133 0 R (cite.RFC2219) 2243 0 R (cite.RFC2230) 2191 0 R (cite.RFC2240) 2263 0 R (cite.RFC2308) 2135 0 R (cite.RFC2317) 2223 0 R (cite.RFC2345) 2265 0 R (cite.RFC2352) 2267 0 R (cite.RFC2535) 2293 0 R (cite.RFC2536) 2193 0 R (cite.RFC2537) 2195 0 R (cite.RFC2538) 2197 0 R (cite.RFC2539) 2199 0 R (cite.RFC2540) 2201 0 R (cite.RFC2671) 2137 0 R (cite.RFC2672) 2139 0 R (cite.RFC2673) 2279 0 R (cite.RFC2782) 2203 0 R (cite.RFC2825) 2247 0 R (cite.RFC2826) 2225 0 R (cite.RFC2845) 2141 0 R (cite.RFC2874) 2281 0 R (cite.RFC2915) 2205 0 R (cite.RFC2929) 2227 0 R (cite.RFC2930) 2143 0 R (cite.RFC2931) 2145 0 R (cite.RFC3007) 2147 0 R (cite.RFC3008) 2295 0 R (cite.RFC3071) 2269 0 R (cite.RFC3090) 2297 0 R (cite.RFC3110) 2207 0 R (cite.RFC3123) 2209 0 R (cite.RFC3225) 2153 0 R (cite.RFC3258) 2271 0 R (cite.RFC3445) 2299 0 R (cite.RFC3490) 2249 0 R (cite.RFC3491) 2251 0 R (cite.RFC3492) 2253 0 R (cite.RFC3596) 2211 0 R (cite.RFC3597) 2213 0 R (cite.RFC3645) 2149 0 R (cite.RFC3655) 2301 0 R (cite.RFC3658) 2303 0 R (cite.RFC3755) 2305 0 R (cite.RFC3757) 2307 0 R (cite.RFC3833) 2155 0 R (cite.RFC3845) 2309 0 R (cite.RFC3901) 2273 0 R (cite.RFC4033) 2157 0 R (cite.RFC4034) 2159 0 R (cite.RFC4035) 2161 0 R (cite.RFC4074) 2171 0 R (cite.RFC974) 2124 0 R (cite.id2511269) 2314 0 R (clients-per-query) 2034 0 R (configuration_file_elements) 1537 0 R (controls_statement_definition_and_usage) 1329 0 R (diagnostic_tools) 1252 0 R (dnssec.dynamic.zones) 1432 0 R (dynamic_update) 1356 0 R (dynamic_update_policies) 1318 0 R (dynamic_update_security) 1721 0 R (empty) 1794 0 R (historical_dns_information) 2101 0 R (id2466563) 1221 0 R (id2466586) 1222 0 R (id2467270) 1411 0 R (id2467406) 1413 0 R (id2467477) 1223 0 R (id2467486) 1224 0 R (id2467726) 1234 0 R (id2467748) 1235 0 R (id2467782) 1236 0 R (id2467866) 1239 0 R (id2467959) 1232 0 R (id2470264) 1246 0 R (id2470288) 1249 0 R (id2470386) 1250 0 R (id2470407) 1251 0 R (id2470505) 1257 0 R (id2470540) 1258 0 R (id2470567) 1259 0 R (id2470601) 1265 0 R (id2470628) 1266 0 R (id2470709) 1267 0 R (id2470734) 1270 0 R (id2470745) 1276 0 R (id2470777) 1284 0 R (id2470793) 1285 0 R (id2470816) 1290 0 R (id2470833) 1291 0 R (id2471238) 1299 0 R (id2471243) 1300 0 R (id2473326) 1334 0 R (id2473338) 1335 0 R (id2473765) 1371 0 R (id2473851) 1377 0 R (id2474284) 1393 0 R (id2474301) 1394 0 R (id2474340) 1395 0 R (id2474358) 1396 0 R (id2474369) 1397 0 R (id2474405) 1402 0 R (id2474531) 1403 0 R (id2474580) 1405 0 R (id2474594) 1406 0 R (id2475200) 1418 0 R (id2475281) 1419 0 R (id2475706) 1433 0 R (id2475744) 1434 0 R (id2475780) 1439 0 R (id2475862) 1445 0 R (id2475899) 1452 0 R (id2475912) 1453 0 R (id2475945) 1454 0 R (id2476040) 1455 0 R (id2476050) 1460 0 R (id2476059) 1461 0 R (id2476072) 1462 0 R (id2476178) 1463 0 R (id2476187) 1464 0 R (id2476224) 1466 0 R (id2476314) 1473 0 R (id2476484) 1479 0 R (id2476648) 1485 0 R (id2476786) 1486 0 R (id2476891) 1491 0 R (id2476900) 1492 0 R (id2476931) 1493 0 R (id2476986) 1494 0 R (id2477085) 1499 0 R (id2477420) 1505 0 R (id2477466) 1506 0 R (id2477521) 1511 0 R (id2477651) 1513 0 R (id2477672) 1514 0 R (id2477705) 1526 0 R (id2477921) 1538 0 R (id2478882) 1546 0 R (id2478909) 1551 0 R (id2479115) 1552 0 R (id2479130) 1553 0 R (id2479160) 1558 0 R (id2479303) 1560 0 R (id2479837) 1567 0 R (id2479880) 1569 0 R (id2480027) 1571 0 R (id2480455) 1578 0 R (id2480472) 1584 0 R (id2480496) 1585 0 R (id2480519) 1586 0 R (id2480678) 1590 0 R (id2480804) 1595 0 R (id2480856) 1596 0 R (id2481481) 1607 0 R (id2482215) 1618 0 R (id2482345) 1619 0 R (id2482666) 1625 0 R (id2482808) 1630 0 R (id2482872) 1633 0 R (id2482916) 1634 0 R (id2482931) 1635 0 R (id2486252) 1673 0 R (id2488436) 1703 0 R (id2488563) 1709 0 R (id2489158) 1720 0 R (id2490225) 1743 0 R (id2490284) 1745 0 R (id2490707) 1754 0 R (id2491277) 1772 0 R (id2492820) 1803 0 R (id2493079) 1809 0 R (id2493965) 1827 0 R (id2494173) 1829 0 R (id2494220) 1835 0 R (id2494714) 1840 0 R (id2496259) 1858 0 R (id2496266) 1859 0 R (id2496272) 1860 0 R (id2496743) 1871 0 R (id2496776) 1872 0 R (id2498908) 1939 0 R (id2499454) 1945 0 R (id2499473) 1946 0 R (id2499493) 1949 0 R (id2499730) 1955 0 R (id2500900) 1961 0 R (id2501096) 1967 0 R (id2501117) 1968 0 R (id2501480) 1970 0 R (id2501617) 1972 0 R (id2501703) 1978 0 R (id2502107) 1981 0 R (id2502232) 1983 0 R (id2502247) 1984 0 R (id2502359) 1990 0 R (id2502381) 1991 0 R (id2502534) 1992 0 R (id2502595) 1993 0 R (id2502664) 1998 0 R (id2502700) 1999 0 R (id2502776) 2000 0 R (id2503287) 2011 0 R (id2503586) 2019 0 R (id2503591) 2020 0 R (id2505127) 2028 0 R (id2505133) 2029 0 R (id2505646) 2031 0 R (id2505652) 2032 0 R (id2506600) 2039 0 R (id2506700) 2040 0 R (id2507042) 2049 0 R (id2507284) 2068 0 R (id2507501) 2069 0 R (id2507561) 2070 0 R (id2507709) 2085 0 R (id2507715) 2086 0 R (id2507726) 2087 0 R (id2507744) 2088 0 R (id2507805) 2100 0 R (id2507909) 2106 0 R (id2508233) 2111 0 R (id2508235) 2118 0 R (id2508244) 2123 0 R (id2508267) 2119 0 R (id2508291) 2121 0 R (id2508327) 2132 0 R (id2508354) 2134 0 R (id2508379) 2126 0 R (id2508404) 2128 0 R (id2508427) 2130 0 R (id2508483) 2136 0 R (id2508509) 2138 0 R (id2508536) 2140 0 R (id2508598) 2142 0 R (id2508628) 2144 0 R (id2508658) 2146 0 R (id2508684) 2148 0 R (id2508759) 2151 0 R (id2508766) 2152 0 R (id2508793) 2154 0 R (id2508829) 2156 0 R (id2508894) 2158 0 R (id2508960) 2160 0 R (id2509025) 2163 0 R (id2509033) 2164 0 R (id2509059) 2166 0 R (id2509127) 2168 0 R (id2509162) 2170 0 R (id2509203) 2177 0 R (id2509208) 2178 0 R (id2509266) 2180 0 R (id2509303) 2188 0 R (id2509338) 2182 0 R (id2509461) 2184 0 R (id2509499) 2186 0 R (id2509525) 2190 0 R (id2509550) 2192 0 R (id2509577) 2194 0 R (id2509604) 2196 0 R (id2509712) 2198 0 R (id2509741) 2200 0 R (id2509771) 2202 0 R (id2509814) 2204 0 R (id2509847) 2206 0 R (id2509874) 2208 0 R (id2509897) 2210 0 R (id2509955) 2212 0 R (id2509979) 2215 0 R (id2509987) 2216 0 R (id2510012) 2218 0 R (id2510035) 2220 0 R (id2510058) 2222 0 R (id2510104) 2224 0 R (id2510128) 2226 0 R (id2510178) 2233 0 R (id2510185) 2234 0 R (id2510209) 2236 0 R (id2510235) 2238 0 R (id2510262) 2240 0 R (id2510298) 2242 0 R (id2510339) 2245 0 R (id2510344) 2246 0 R (id2510376) 2248 0 R (id2510422) 2250 0 R (id2510457) 2252 0 R (id2510484) 2255 0 R (id2510502) 2256 0 R (id2510524) 2258 0 R (id2510550) 2260 0 R (id2510576) 2262 0 R (id2510599) 2264 0 R (id2510645) 2266 0 R (id2510668) 2268 0 R (id2510695) 2270 0 R (id2510721) 2272 0 R (id2510758) 2275 0 R (id2510764) 2276 0 R (id2510822) 2278 0 R (id2510849) 2280 0 R (id2510885) 2287 0 R (id2510897) 2288 0 R (id2510936) 2290 0 R (id2510963) 2292 0 R (id2510993) 2294 0 R (id2511018) 2296 0 R (id2511045) 2298 0 R (id2511081) 2300 0 R (id2511117) 2302 0 R (id2511144) 2304 0 R (id2511171) 2306 0 R (id2511216) 2308 0 R (id2511257) 2311 0 R (id2511267) 2313 0 R (id2511269) 2315 0 R (id2511425) 2321 0 R (id2511434) 2322 0 R (id2511459) 2323 0 R (id2511558) 2324 0 R (id2511635) 2329 0 R (id2511661) 2331 0 R (id2511738) 2332 0 R (id2511829) 2338 0 R (id2511882) 2339 0 R (id2512014) 2340 0 R (id2512029) 2345 0 R (id2512161) 2350 0 R (id2512293) 2351 0 R (incremental_zone_transfers) 1368 0 R (internet_drafts) 2310 0 R (ipv6addresses) 1515 0 R (journal) 1367 0 R (lwresd) 1527 0 R (man.arpaname) 2670 0 R (man.ddns-confgen) 2655 0 R (man.dig) 2361 0 R (man.dnssec-dsfromkey) 2409 0 R (man.dnssec-keyfromlabel) 2428 0 R (man.dnssec-keygen) 1446 0 R (man.dnssec-revoke) 2471 0 R (man.dnssec-settime) 1447 0 R (man.dnssec-signzone) 2498 0 R (man.genrandom) 2676 0 R (man.host) 2394 0 R (man.isc-hmac-fixup) 2687 0 R (man.named) 2556 0 R (man.named-checkconf) 2523 0 R (man.named-checkzone) 2535 0 R (man.named-journalprint) 2578 0 R (man.nsec3hash) 2698 0 R (man.nsupdate) 2584 0 R (man.rndc) 2610 0 R (man.rndc-confgen) 2642 0 R (man.rndc.conf) 2626 0 R (managed-keys) 1468 0 R (notify) 1347 0 R (options) 1317 0 R (page.1) 926 0 R (page.10) 1308 0 R (page.100) 1954 0 R (page.101) 1960 0 R (page.102) 1966 0 R (page.103) 1977 0 R (page.104) 1989 0 R (page.105) 1997 0 R (page.106) 2005 0 R (page.107) 2009 0 R (page.108) 2017 0 R (page.109) 2026 0 R (page.11) 1322 0 R (page.110) 2038 0 R (page.111) 2045 0 R (page.112) 2053 0 R (page.113) 2057 0 R (page.114) 2063 0 R (page.115) 2075 0 R (page.116) 2079 0 R (page.117) 2083 0 R (page.118) 2094 0 R (page.119) 2098 0 R (page.12) 1326 0 R (page.120) 2105 0 R (page.121) 2116 0 R (page.122) 2175 0 R (page.123) 2231 0 R (page.124) 2285 0 R (page.125) 2320 0 R (page.126) 2328 0 R (page.127) 2337 0 R (page.128) 2344 0 R (page.129) 2349 0 R (page.13) 1333 0 R (page.130) 2355 0 R (page.131) 2359 0 R (page.132) 2368 0 R (page.133) 2375 0 R (page.134) 2380 0 R (page.135) 2384 0 R (page.136) 2389 0 R (page.137) 2400 0 R (page.138) 2405 0 R (page.139) 2418 0 R (page.14) 1340 0 R (page.140) 2427 0 R (page.141) 2436 0 R (page.142) 2441 0 R (page.143) 2450 0 R (page.144) 2456 0 R (page.145) 2461 0 R (page.146) 2467 0 R (page.147) 2478 0 R (page.148) 2488 0 R (page.149) 2494 0 R (page.15) 1345 0 R (page.150) 2505 0 R (page.151) 2511 0 R (page.152) 2515 0 R (page.153) 2519 0 R (page.154) 2530 0 R (page.155) 2541 0 R (page.156) 2547 0 R (page.157) 2553 0 R (page.158) 2564 0 R (page.159) 2568 0 R (page.16) 1366 0 R (page.160) 2575 0 R (page.161) 2589 0 R (page.162) 2595 0 R (page.163) 2601 0 R (page.164) 2606 0 R (page.165) 2615 0 R (page.166) 2623 0 R (page.167) 2633 0 R (page.168) 2638 0 R (page.169) 2651 0 R (page.17) 1376 0 R (page.170) 2660 0 R (page.171) 2668 0 R (page.172) 2683 0 R (page.173) 2695 0 R (page.18) 1382 0 R (page.19) 1387 0 R (page.2) 950 0 R (page.20) 1392 0 R (page.21) 1401 0 R (page.22) 1410 0 R (page.23) 1417 0 R (page.24) 1423 0 R (page.25) 1428 0 R (page.26) 1438 0 R (page.27) 1451 0 R (page.28) 1459 0 R (page.29) 1472 0 R (page.3) 1245 0 R (page.30) 1478 0 R (page.31) 1484 0 R (page.32) 1490 0 R (page.33) 1498 0 R (page.34) 1504 0 R (page.35) 1510 0 R (page.36) 1519 0 R (page.37) 1524 0 R (page.38) 1531 0 R (page.39) 1535 0 R (page.4) 1256 0 R (page.40) 1545 0 R (page.41) 1550 0 R (page.42) 1557 0 R (page.43) 1566 0 R (page.44) 1575 0 R (page.45) 1583 0 R (page.46) 1594 0 R (page.47) 1600 0 R (page.48) 1606 0 R (page.49) 1613 0 R (page.5) 1263 0 R (page.50) 1617 0 R (page.51) 1624 0 R (page.52) 1629 0 R (page.53) 1639 0 R (page.54) 1643 0 R (page.55) 1648 0 R (page.56) 1652 0 R (page.57) 1656 0 R (page.58) 1662 0 R (page.59) 1667 0 R (page.6) 1275 0 R (page.60) 1672 0 R (page.61) 1679 0 R (page.62) 1684 0 R (page.63) 1694 0 R (page.64) 1698 0 R (page.65) 1702 0 R (page.66) 1707 0 R (page.67) 1717 0 R (page.68) 1725 0 R (page.69) 1730 0 R (page.7) 1281 0 R (page.70) 1734 0 R (page.71) 1738 0 R (page.72) 1742 0 R (page.73) 1751 0 R (page.74) 1758 0 R (page.75) 1763 0 R (page.76) 1770 0 R (page.77) 1778 0 R (page.78) 1783 0 R (page.79) 1793 0 R (page.8) 1289 0 R (page.80) 1798 0 R (page.81) 1802 0 R (page.82) 1808 0 R (page.83) 1813 0 R (page.84) 1818 0 R (page.85) 1824 0 R (page.86) 1834 0 R (page.87) 1839 0 R (page.88) 1844 0 R (page.89) 1848 0 R (page.9) 1298 0 R (page.90) 1852 0 R (page.91) 1857 0 R (page.92) 1865 0 R (page.93) 1869 0 R (page.94) 1884 0 R (page.95) 1898 0 R (page.96) 1910 0 R (page.97) 1931 0 R (page.98) 1938 0 R (page.99) 1944 0 R (page.i) 960 0 R (page.ii) 1015 0 R (page.iii) 1079 0 R (page.iv) 1142 0 R (page.v) 1204 0 R (pkcs11) 1474 0 R (proposed_standards) 1372 0 R (query_address) 1726 0 R (rfc5011.support) 1465 0 R (rfcs) 1241 0 R (rndc) 1579 0 R (root_delegation_only) 1880 0 R (rrset_ordering) 1294 0 R (sample_configuration) 1283 0 R (section*.10) 2244 0 R (section*.100) 2576 0 R (section*.101) 2577 0 R (section*.102) 2579 0 R (section*.103) 2580 0 R (section*.104) 2581 0 R (section*.105) 2582 0 R (section*.106) 2583 0 R (section*.107) 2585 0 R (section*.108) 2590 0 R (section*.109) 2591 0 R (section*.11) 2254 0 R (section*.110) 2596 0 R (section*.111) 2602 0 R (section*.112) 2607 0 R (section*.113) 2608 0 R (section*.114) 2609 0 R (section*.115) 2611 0 R (section*.116) 2616 0 R (section*.117) 2617 0 R (section*.118) 2618 0 R (section*.119) 2619 0 R (section*.12) 2274 0 R (section*.120) 2624 0 R (section*.121) 2625 0 R (section*.122) 2627 0 R (section*.123) 2628 0 R (section*.124) 2629 0 R (section*.125) 2634 0 R (section*.126) 2639 0 R (section*.127) 2640 0 R (section*.128) 2641 0 R (section*.129) 2643 0 R (section*.13) 2286 0 R (section*.130) 2644 0 R (section*.131) 2645 0 R (section*.132) 2646 0 R (section*.133) 2652 0 R (section*.134) 2653 0 R (section*.135) 2654 0 R (section*.136) 2656 0 R (section*.137) 2661 0 R (section*.138) 2662 0 R (section*.139) 2663 0 R (section*.14) 2312 0 R (section*.140) 2664 0 R (section*.141) 2669 0 R (section*.142) 2671 0 R (section*.143) 2672 0 R (section*.144) 2673 0 R (section*.145) 2674 0 R (section*.146) 2675 0 R (section*.147) 2677 0 R (section*.148) 2678 0 R (section*.149) 2679 0 R (section*.15) 2362 0 R (section*.150) 2684 0 R (section*.151) 2685 0 R (section*.152) 2686 0 R (section*.153) 2688 0 R (section*.154) 2689 0 R (section*.155) 2690 0 R (section*.156) 2691 0 R (section*.157) 2696 0 R (section*.158) 2697 0 R (section*.159) 2699 0 R (section*.16) 2363 0 R (section*.160) 2700 0 R (section*.161) 2701 0 R (section*.162) 2702 0 R (section*.163) 2703 0 R (section*.164) 2704 0 R (section*.17) 2364 0 R (section*.18) 2369 0 R (section*.19) 2370 0 R (section*.2) 2110 0 R (section*.20) 2376 0 R (section*.21) 2385 0 R (section*.22) 2390 0 R (section*.23) 2391 0 R (section*.24) 2392 0 R (section*.25) 2393 0 R (section*.26) 2395 0 R (section*.27) 2396 0 R (section*.28) 2401 0 R (section*.29) 2406 0 R (section*.3) 2117 0 R (section*.30) 2407 0 R (section*.31) 2408 0 R (section*.32) 2410 0 R (section*.33) 2411 0 R (section*.34) 2412 0 R (section*.35) 2413 0 R (section*.36) 2419 0 R (section*.37) 2420 0 R (section*.38) 2421 0 R (section*.39) 2422 0 R (section*.4) 2125 0 R (section*.40) 2423 0 R (section*.41) 2429 0 R (section*.42) 2430 0 R (section*.43) 2431 0 R (section*.44) 2432 0 R (section*.45) 2437 0 R (section*.46) 2442 0 R (section*.47) 2443 0 R (section*.48) 2444 0 R (section*.49) 2445 0 R (section*.5) 2150 0 R (section*.50) 2446 0 R (section*.51) 2451 0 R (section*.52) 2452 0 R (section*.53) 2462 0 R (section*.54) 2463 0 R (section*.55) 2468 0 R (section*.56) 2469 0 R (section*.57) 2470 0 R (section*.58) 2472 0 R (section*.59) 2473 0 R (section*.6) 2162 0 R (section*.60) 2474 0 R (section*.61) 2479 0 R (section*.62) 2480 0 R (section*.63) 2481 0 R (section*.64) 2482 0 R (section*.65) 2483 0 R (section*.66) 2484 0 R (section*.67) 2489 0 R (section*.68) 2490 0 R (section*.69) 2495 0 R (section*.7) 2176 0 R (section*.70) 2496 0 R (section*.71) 2497 0 R (section*.72) 2499 0 R (section*.73) 2500 0 R (section*.74) 2501 0 R (section*.75) 2506 0 R (section*.76) 2520 0 R (section*.77) 2521 0 R (section*.78) 2522 0 R (section*.79) 2524 0 R (section*.8) 2214 0 R (section*.80) 2525 0 R (section*.81) 2526 0 R (section*.82) 2531 0 R (section*.83) 2532 0 R (section*.84) 2533 0 R (section*.85) 2534 0 R (section*.86) 2536 0 R (section*.87) 2537 0 R (section*.88) 2542 0 R (section*.89) 2543 0 R (section*.9) 2232 0 R (section*.90) 2548 0 R (section*.91) 2554 0 R (section*.92) 2555 0 R (section*.93) 2557 0 R (section*.94) 2558 0 R (section*.95) 2559 0 R (section*.96) 2560 0 R (section*.97) 2569 0 R (section*.98) 2570 0 R (section*.99) 2571 0 R (section.1.1) 10 0 R (section.1.2) 14 0 R (section.1.3) 18 0 R (section.1.4) 22 0 R (section.2.1) 70 0 R (section.2.2) 74 0 R (section.2.3) 78 0 R (section.2.4) 82 0 R (section.2.5) 86 0 R (section.3.1) 94 0 R (section.3.2) 106 0 R (section.3.3) 110 0 R (section.4.1) 134 0 R (section.4.10) 274 0 R (section.4.11) 286 0 R (section.4.12) 330 0 R (section.4.2) 138 0 R (section.4.3) 146 0 R (section.4.4) 150 0 R (section.4.5) 158 0 R (section.4.6) 194 0 R (section.4.7) 198 0 R (section.4.8) 202 0 R (section.4.9) 218 0 R (section.5.1) 346 0 R (section.5.2) 350 0 R (section.6.1) 358 0 R (section.6.2) 386 0 R (section.6.3) 610 0 R (section.6.4) 666 0 R (section.7.1) 702 0 R (section.7.2) 706 0 R (section.7.3) 718 0 R (section.8.1) 726 0 R (section.8.2) 734 0 R (section.8.3) 738 0 R (section.A.1) 746 0 R (section.A.2) 754 0 R (section.A.3) 762 0 R (section.A.4) 778 0 R (section.B.1) 838 0 R (section.B.10) 874 0 R (section.B.11) 878 0 R (section.B.12) 882 0 R (section.B.13) 886 0 R (section.B.14) 890 0 R (section.B.15) 894 0 R (section.B.16) 898 0 R (section.B.17) 902 0 R (section.B.18) 906 0 R (section.B.19) 910 0 R (section.B.2) 842 0 R (section.B.20) 914 0 R (section.B.21) 918 0 R (section.B.3) 846 0 R (section.B.4) 850 0 R (section.B.5) 854 0 R (section.B.6) 858 0 R (section.B.7) 862 0 R (section.B.8) 866 0 R (section.B.9) 870 0 R (server_resource_limits) 1752 0 R (server_statement_definition_and_usage) 1690 0 R (server_statement_grammar) 1814 0 R (statistics) 2010 0 R (statistics_counters) 2018 0 R (statschannels) 1826 0 R (statsfile) 1658 0 R (subsection.1.4.1) 26 0 R (subsection.1.4.2) 30 0 R (subsection.1.4.3) 34 0 R (subsection.1.4.4) 38 0 R (subsection.1.4.5) 54 0 R (subsection.1.4.6) 62 0 R (subsection.3.1.1) 98 0 R (subsection.3.1.2) 102 0 R (subsection.3.3.1) 114 0 R (subsection.3.3.2) 126 0 R (subsection.4.10.1) 278 0 R (subsection.4.10.2) 282 0 R (subsection.4.11.1) 290 0 R (subsection.4.11.2) 302 0 R (subsection.4.11.3) 314 0 R (subsection.4.11.4) 318 0 R (subsection.4.11.5) 322 0 R (subsection.4.11.6) 326 0 R (subsection.4.12.1) 334 0 R (subsection.4.12.2) 338 0 R (subsection.4.2.1) 142 0 R (subsection.4.4.1) 154 0 R (subsection.4.5.1) 162 0 R (subsection.4.5.2) 174 0 R (subsection.4.5.3) 178 0 R (subsection.4.5.4) 182 0 R (subsection.4.5.5) 186 0 R (subsection.4.5.6) 190 0 R (subsection.4.8.1) 206 0 R (subsection.4.8.2) 210 0 R (subsection.4.8.3) 214 0 R (subsection.4.9.1) 222 0 R (subsection.4.9.10) 258 0 R (subsection.4.9.11) 262 0 R (subsection.4.9.12) 266 0 R (subsection.4.9.13) 270 0 R (subsection.4.9.2) 226 0 R (subsection.4.9.3) 230 0 R (subsection.4.9.4) 234 0 R (subsection.4.9.5) 238 0 R (subsection.4.9.6) 242 0 R (subsection.4.9.7) 246 0 R (subsection.4.9.8) 250 0 R (subsection.4.9.9) 254 0 R (subsection.6.1.1) 362 0 R (subsection.6.1.2) 374 0 R (subsection.6.2.1) 390 0 R (subsection.6.2.10) 426 0 R (subsection.6.2.11) 442 0 R (subsection.6.2.12) 446 0 R (subsection.6.2.13) 450 0 R (subsection.6.2.14) 454 0 R (subsection.6.2.15) 458 0 R (subsection.6.2.16) 462 0 R (subsection.6.2.17) 546 0 R (subsection.6.2.18) 550 0 R (subsection.6.2.19) 554 0 R (subsection.6.2.2) 394 0 R (subsection.6.2.20) 558 0 R (subsection.6.2.21) 562 0 R (subsection.6.2.22) 566 0 R (subsection.6.2.23) 570 0 R (subsection.6.2.24) 574 0 R (subsection.6.2.25) 578 0 R (subsection.6.2.26) 582 0 R (subsection.6.2.27) 586 0 R (subsection.6.2.28) 590 0 R (subsection.6.2.3) 398 0 R (subsection.6.2.4) 402 0 R (subsection.6.2.5) 406 0 R (subsection.6.2.6) 410 0 R (subsection.6.2.7) 414 0 R (subsection.6.2.8) 418 0 R (subsection.6.2.9) 422 0 R (subsection.6.3.1) 614 0 R (subsection.6.3.2) 626 0 R (subsection.6.3.3) 630 0 R (subsection.6.3.4) 634 0 R (subsection.6.3.5) 638 0 R (subsection.6.3.6) 658 0 R (subsection.6.3.7) 662 0 R (subsection.6.4.1) 674 0 R (subsection.7.2.1) 710 0 R (subsection.7.2.2) 714 0 R (subsection.8.1.1) 730 0 R (subsection.A.1.1) 750 0 R (subsection.A.2.1) 758 0 R (subsection.A.3.1) 766 0 R (subsection.A.3.2) 770 0 R (subsection.A.3.3) 774 0 R (subsection.A.4.1) 782 0 R (subsection.A.4.2) 786 0 R (subsection.A.4.3) 790 0 R (subsection.A.4.4) 794 0 R (subsection.A.4.5) 798 0 R (subsection.A.4.6) 802 0 R (subsection.A.4.7) 830 0 R (subsubsection.1.4.4.1) 42 0 R (subsubsection.1.4.4.2) 46 0 R (subsubsection.1.4.4.3) 50 0 R (subsubsection.1.4.5.1) 58 0 R (subsubsection.3.3.1.1) 118 0 R (subsubsection.3.3.1.2) 122 0 R (subsubsection.4.11.1.1) 294 0 R (subsubsection.4.11.1.2) 298 0 R (subsubsection.4.11.2.1) 306 0 R (subsubsection.4.11.2.2) 310 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 366 0 R (subsubsection.6.1.1.2) 370 0 R (subsubsection.6.1.2.1) 378 0 R (subsubsection.6.1.2.2) 382 0 R (subsubsection.6.2.10.1) 430 0 R (subsubsection.6.2.10.2) 434 0 R (subsubsection.6.2.10.3) 438 0 R (subsubsection.6.2.16.1) 466 0 R (subsubsection.6.2.16.10) 502 0 R (subsubsection.6.2.16.11) 506 0 R (subsubsection.6.2.16.12) 510 0 R (subsubsection.6.2.16.13) 514 0 R (subsubsection.6.2.16.14) 518 0 R (subsubsection.6.2.16.15) 522 0 R (subsubsection.6.2.16.16) 526 0 R (subsubsection.6.2.16.17) 530 0 R (subsubsection.6.2.16.18) 534 0 R (subsubsection.6.2.16.19) 538 0 R (subsubsection.6.2.16.2) 470 0 R (subsubsection.6.2.16.20) 542 0 R (subsubsection.6.2.16.3) 474 0 R (subsubsection.6.2.16.4) 478 0 R (subsubsection.6.2.16.5) 482 0 R (subsubsection.6.2.16.6) 486 0 R (subsubsection.6.2.16.7) 490 0 R (subsubsection.6.2.16.8) 494 0 R (subsubsection.6.2.16.9) 498 0 R (subsubsection.6.2.28.1) 594 0 R (subsubsection.6.2.28.2) 598 0 R (subsubsection.6.2.28.3) 602 0 R (subsubsection.6.2.28.4) 606 0 R (subsubsection.6.3.1.1) 618 0 R (subsubsection.6.3.1.2) 622 0 R (subsubsection.6.3.5.1) 642 0 R (subsubsection.6.3.5.2) 646 0 R (subsubsection.6.3.5.3) 650 0 R (subsubsection.6.3.5.4) 654 0 R (subsubsection.6.4.0.1) 670 0 R (subsubsection.6.4.1.1) 678 0 R (subsubsection.6.4.1.2) 682 0 R (subsubsection.6.4.1.3) 686 0 R (subsubsection.6.4.1.4) 690 0 R (subsubsection.6.4.1.5) 694 0 R (subsubsection.A.4.6.1) 806 0 R (subsubsection.A.4.6.2) 810 0 R (subsubsection.A.4.6.3) 814 0 R (subsubsection.A.4.6.4) 818 0 R (subsubsection.A.4.6.5) 822 0 R (subsubsection.A.4.6.6) 826 0 R (table.1.1) 1225 0 R (table.1.2) 1233 0 R (table.3.1) 1292 0 R (table.3.2) 1336 0 R (table.6.1) 1539 0 R (table.6.10) 1950 0 R (table.6.11) 1956 0 R (table.6.12) 1962 0 R (table.6.13) 1969 0 R (table.6.14) 1971 0 R (table.6.15) 1979 0 R (table.6.16) 1982 0 R (table.6.17) 1985 0 R (table.6.18) 2001 0 R (table.6.19) 2012 0 R (table.6.2) 1561 0 R (table.6.20) 2021 0 R (table.6.21) 2030 0 R (table.6.22) 2033 0 R (table.6.23) 2041 0 R (table.6.3) 1570 0 R (table.6.4) 1608 0 R (table.6.5) 1620 0 R (table.6.6) 1674 0 R (table.6.7) 1773 0 R (table.6.8) 1861 0 R (table.6.9) 1940 0 R (the_category_phrase) 1602 0 R (the_sortlist_statement) 1764 0 R (topology) 1759 0 R (trusted-keys) 1828 0 R (tsig) 1388 0 R (tuning) 1774 0 R (types_of_resource_records_and_when_to_use_them) 1240 0 R (view_statement_grammar) 1789 0 R (zone_statement_grammar) 1713 0 R (zone_transfers) 1362 0 R (zonefile_format) 1788 0 R] /Limits [(Access_Control_Lists) (zonefile_format)] >> endobj -2709 0 obj << -/Kids [2708 0 R] +2731 0 obj << +/Kids [2730 0 R] >> endobj -2710 0 obj << -/Dests 2709 0 R +2732 0 obj << +/Dests 2731 0 R >> endobj -2711 0 obj << +2733 0 obj << /Type /Catalog -/Pages 2706 0 R -/Outlines 2707 0 R -/Names 2710 0 R +/Pages 2728 0 R +/Outlines 2729 0 R +/Names 2732 0 R /PageMode /UseOutlines -/OpenAction 917 0 R +/OpenAction 921 0 R >> endobj -2712 0 obj << +2734 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() -/CreationDate (D:20101209044315Z) +/CreationDate (D:20110113051337Z) /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) >> endobj xref -0 2713 +0 2735 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000000 00000 f 0000000009 00000 n -0000347484 00000 n -0001159132 00000 n +0000347882 00000 n +0001171080 00000 n 0000000054 00000 n 0000000086 00000 n -0000347611 00000 n -0001159060 00000 n +0000348009 00000 n +0001171008 00000 n 0000000133 00000 n 0000000173 00000 n -0000347739 00000 n -0001158974 00000 n +0000348137 00000 n +0001170922 00000 n 0000000221 00000 n 0000000273 00000 n -0000347867 00000 n -0001158888 00000 n +0000348265 00000 n +0001170836 00000 n 0000000321 00000 n 0000000377 00000 n -0000352151 00000 n -0001158778 00000 n +0000352551 00000 n +0001170726 00000 n 0000000425 00000 n 0000000478 00000 n -0000352278 00000 n -0001158704 00000 n +0000352678 00000 n +0001170652 00000 n 0000000531 00000 n 0000000572 00000 n -0000352406 00000 n -0001158617 00000 n +0000352806 00000 n +0001170565 00000 n 0000000625 00000 n 0000000674 00000 n -0000352533 00000 n -0001158530 00000 n +0000352933 00000 n +0001170478 00000 n 0000000727 00000 n 0000000757 00000 n -0000356829 00000 n -0001158406 00000 n +0000357230 00000 n +0001170354 00000 n 0000000810 00000 n 0000000861 00000 n -0000356957 00000 n -0001158332 00000 n +0000357358 00000 n +0001170280 00000 n 0000000919 00000 n 0000000964 00000 n -0000357085 00000 n -0001158245 00000 n +0000357486 00000 n +0001170193 00000 n 0000001022 00000 n 0000001062 00000 n -0000357213 00000 n -0001158171 00000 n +0000357614 00000 n +0001170119 00000 n 0000001120 00000 n 0000001162 00000 n -0000360198 00000 n -0001158047 00000 n +0000360599 00000 n +0001169995 00000 n 0000001215 00000 n 0000001260 00000 n -0000360326 00000 n -0001157986 00000 n +0000360727 00000 n +0001169934 00000 n 0000001318 00000 n 0000001355 00000 n -0000360454 00000 n -0001157912 00000 n +0000360855 00000 n +0001169860 00000 n 0000001408 00000 n 0000001463 00000 n -0000363401 00000 n -0001157787 00000 n +0000363802 00000 n +0001169735 00000 n 0000001509 00000 n 0000001556 00000 n -0000363529 00000 n -0001157713 00000 n +0000363930 00000 n +0001169661 00000 n 0000001604 00000 n 0000001648 00000 n -0000363657 00000 n -0001157626 00000 n +0000364058 00000 n +0001169574 00000 n 0000001696 00000 n 0000001735 00000 n -0000363785 00000 n -0001157539 00000 n +0000364186 00000 n +0001169487 00000 n 0000001783 00000 n 0000001825 00000 n -0000363912 00000 n -0001157452 00000 n +0000364313 00000 n +0001169400 00000 n 0000001873 00000 n 0000001936 00000 n -0000364989 00000 n -0001157378 00000 n +0000365390 00000 n +0001169326 00000 n 0000001984 00000 n 0000002034 00000 n -0000366648 00000 n -0001157250 00000 n +0000367049 00000 n +0001169198 00000 n 0000002080 00000 n 0000002126 00000 n -0000366775 00000 n -0001157137 00000 n +0000367176 00000 n +0001169085 00000 n 0000002174 00000 n 0000002218 00000 n -0000366903 00000 n -0001157061 00000 n +0000367304 00000 n +0001169009 00000 n 0000002271 00000 n 0000002323 00000 n -0000367031 00000 n -0001156984 00000 n +0000367432 00000 n +0001168932 00000 n 0000002377 00000 n 0000002436 00000 n -0000369483 00000 n -0001156893 00000 n +0000369884 00000 n +0001168841 00000 n 0000002485 00000 n 0000002523 00000 n -0000372821 00000 n -0001156776 00000 n +0000373222 00000 n +0001168724 00000 n 0000002572 00000 n 0000002618 00000 n -0000372949 00000 n -0001156658 00000 n +0000373350 00000 n +0001168606 00000 n 0000002672 00000 n 0000002739 00000 n -0000373077 00000 n -0001156579 00000 n +0000373478 00000 n +0001168527 00000 n 0000002798 00000 n 0000002842 00000 n -0000373206 00000 n -0001156500 00000 n +0000373607 00000 n +0001168448 00000 n 0000002901 00000 n 0000002949 00000 n -0000387945 00000 n -0001156421 00000 n +0000388346 00000 n +0001168369 00000 n 0000003003 00000 n 0000003036 00000 n -0000393639 00000 n -0001156288 00000 n +0000393972 00000 n +0001168236 00000 n 0000003083 00000 n 0000003126 00000 n -0000393768 00000 n -0001156209 00000 n +0000394101 00000 n +0001168157 00000 n 0000003175 00000 n 0000003205 00000 n -0000393897 00000 n -0001156077 00000 n +0000394230 00000 n +0001168025 00000 n 0000003254 00000 n 0000003292 00000 n -0000394026 00000 n -0001156012 00000 n +0000398739 00000 n +0001167960 00000 n 0000003346 00000 n 0000003388 00000 n -0000398379 00000 n -0001155919 00000 n +0000398868 00000 n +0001167867 00000 n 0000003437 00000 n 0000003496 00000 n -0000398507 00000 n -0001155787 00000 n +0000398997 00000 n +0001167735 00000 n 0000003545 00000 n 0000003578 00000 n -0000402424 00000 n -0001155722 00000 n +0000402915 00000 n +0001167670 00000 n 0000003632 00000 n 0000003681 00000 n -0000405438 00000 n -0001155590 00000 n +0000405929 00000 n +0001167538 00000 n 0000003730 00000 n 0000003758 00000 n -0000408218 00000 n -0001155472 00000 n +0000408709 00000 n +0001167420 00000 n 0000003812 00000 n 0000003881 00000 n -0000408347 00000 n -0001155393 00000 n +0000408838 00000 n +0001167341 00000 n 0000003940 00000 n 0000003988 00000 n -0000408475 00000 n -0001155314 00000 n +0000408966 00000 n +0001167262 00000 n 0000004047 00000 n 0000004092 00000 n -0000408604 00000 n -0001155221 00000 n +0000409095 00000 n +0001167169 00000 n 0000004146 00000 n 0000004214 00000 n -0000408733 00000 n -0001155128 00000 n +0000409224 00000 n +0001167076 00000 n 0000004268 00000 n 0000004338 00000 n -0000412401 00000 n -0001155035 00000 n +0000412893 00000 n +0001166983 00000 n 0000004392 00000 n 0000004455 00000 n -0000412530 00000 n -0001154942 00000 n +0000413022 00000 n +0001166890 00000 n 0000004509 00000 n 0000004564 00000 n -0000412658 00000 n -0001154863 00000 n +0000413150 00000 n +0001166811 00000 n 0000004618 00000 n 0000004650 00000 n -0000412786 00000 n -0001154770 00000 n +0000413278 00000 n +0001166718 00000 n 0000004699 00000 n 0000004727 00000 n -0000416555 00000 n -0001154677 00000 n +0000417047 00000 n +0001166625 00000 n 0000004776 00000 n 0000004808 00000 n -0000416684 00000 n -0001154545 00000 n +0000417176 00000 n +0001166493 00000 n 0000004857 00000 n 0000004887 00000 n -0000416813 00000 n -0001154466 00000 n +0000417305 00000 n +0001166414 00000 n 0000004941 00000 n 0000004982 00000 n -0000420570 00000 n -0001154373 00000 n +0000421103 00000 n +0001166321 00000 n 0000005036 00000 n 0000005078 00000 n -0000420699 00000 n -0001154294 00000 n +0000421232 00000 n +0001166242 00000 n 0000005132 00000 n 0000005177 00000 n -0000426136 00000 n -0001154161 00000 n +0000426555 00000 n +0001166109 00000 n 0000005226 00000 n 0000005294 00000 n -0000426265 00000 n -0001154082 00000 n +0000426684 00000 n +0001166030 00000 n 0000005348 00000 n 0000005408 00000 n -0000426394 00000 n -0001153989 00000 n +0000426813 00000 n +0001165937 00000 n 0000005462 00000 n 0000005513 00000 n -0000430364 00000 n -0001153896 00000 n +0000430752 00000 n +0001165844 00000 n 0000005567 00000 n 0000005621 00000 n -0000430493 00000 n -0001153803 00000 n +0000430880 00000 n +0001165751 00000 n 0000005675 00000 n 0000005721 00000 n -0000433565 00000 n -0001153710 00000 n +0000434030 00000 n +0001165658 00000 n 0000005775 00000 n 0000005817 00000 n -0000433693 00000 n -0001153617 00000 n +0000434159 00000 n +0001165565 00000 n 0000005871 00000 n 0000005922 00000 n -0000433821 00000 n -0001153524 00000 n +0000434288 00000 n +0001165472 00000 n 0000005976 00000 n 0000006025 00000 n -0000433950 00000 n -0001153431 00000 n +0000434417 00000 n +0001165379 00000 n 0000006079 00000 n 0000006136 00000 n -0000436864 00000 n -0001153338 00000 n +0000437331 00000 n +0001165286 00000 n 0000006190 00000 n 0000006245 00000 n -0000436993 00000 n -0001153245 00000 n +0000437460 00000 n +0001165193 00000 n 0000006300 00000 n 0000006356 00000 n -0000437122 00000 n -0001153152 00000 n +0000437589 00000 n +0001165100 00000 n 0000006411 00000 n 0000006472 00000 n -0000437251 00000 n -0001153059 00000 n +0000437718 00000 n +0001165007 00000 n 0000006527 00000 n 0000006573 00000 n -0000437380 00000 n -0001152980 00000 n +0000437847 00000 n +0001164928 00000 n 0000006628 00000 n 0000006671 00000 n -0000437509 00000 n -0001152848 00000 n +0000437976 00000 n +0001164796 00000 n 0000006721 00000 n 0000006777 00000 n -0000437638 00000 n -0001152769 00000 n +0000438105 00000 n +0001164717 00000 n 0000006832 00000 n 0000006878 00000 n -0000441230 00000 n -0001152690 00000 n +0000441697 00000 n +0001164638 00000 n 0000006933 00000 n 0000006980 00000 n -0000441359 00000 n -0001152558 00000 n +0000441826 00000 n +0001164506 00000 n 0000007030 00000 n 0000007087 00000 n -0000444366 00000 n -0001152440 00000 n +0000444833 00000 n +0001164388 00000 n 0000007142 00000 n 0000007182 00000 n -0000447254 00000 n -0001152361 00000 n +0000447721 00000 n +0001164309 00000 n 0000007242 00000 n 0000007315 00000 n -0000447383 00000 n -0001152282 00000 n +0000447850 00000 n +0001164230 00000 n 0000007375 00000 n 0000007448 00000 n -0000449845 00000 n -0001152150 00000 n +0000450312 00000 n +0001164098 00000 n 0000007503 00000 n 0000007561 00000 n -0000449974 00000 n -0001152071 00000 n +0000450441 00000 n +0001164019 00000 n 0000007621 00000 n 0000007678 00000 n -0000450103 00000 n -0001151992 00000 n +0000450570 00000 n +0001163940 00000 n 0000007738 00000 n 0000007797 00000 n -0000450232 00000 n -0001151899 00000 n +0000450699 00000 n +0001163847 00000 n 0000007852 00000 n 0000007896 00000 n -0000453041 00000 n -0001151806 00000 n +0000453508 00000 n +0001163754 00000 n 0000007951 00000 n 0000007991 00000 n -0000455840 00000 n -0001151713 00000 n +0000456307 00000 n +0001163661 00000 n 0000008046 00000 n 0000008114 00000 n -0000455969 00000 n -0001151634 00000 n +0000456436 00000 n +0001163582 00000 n 0000008169 00000 n 0000008240 00000 n -0000460034 00000 n -0001151516 00000 n +0000460502 00000 n +0001163464 00000 n 0000008290 00000 n 0000008337 00000 n -0000460163 00000 n -0001151437 00000 n +0000460631 00000 n +0001163385 00000 n 0000008392 00000 n 0000008453 00000 n -0000460292 00000 n -0001151358 00000 n +0000460760 00000 n +0001163306 00000 n 0000008508 00000 n 0000008578 00000 n -0000463160 00000 n -0001151225 00000 n +0000463628 00000 n +0001163173 00000 n 0000008625 00000 n 0000008678 00000 n -0000463289 00000 n -0001151146 00000 n +0000463757 00000 n +0001163094 00000 n 0000008727 00000 n 0000008783 00000 n -0000463418 00000 n -0001151067 00000 n +0000463886 00000 n +0001163015 00000 n 0000008832 00000 n 0000008881 00000 n -0000467688 00000 n -0001150934 00000 n +0000468156 00000 n +0001162882 00000 n 0000008928 00000 n 0000008980 00000 n -0000467817 00000 n -0001150816 00000 n +0000468285 00000 n +0001162764 00000 n 0000009029 00000 n 0000009080 00000 n -0000472509 00000 n -0001150698 00000 n +0000472977 00000 n +0001162646 00000 n 0000009134 00000 n 0000009179 00000 n -0000472637 00000 n -0001150619 00000 n +0000473105 00000 n +0001162567 00000 n 0000009238 00000 n 0000009272 00000 n -0000476230 00000 n -0001150540 00000 n +0000476698 00000 n +0001162488 00000 n 0000009331 00000 n 0000009379 00000 n -0000476359 00000 n -0001150422 00000 n +0000476827 00000 n +0001162370 00000 n 0000009433 00000 n 0000009473 00000 n -0000476488 00000 n -0001150343 00000 n +0000476956 00000 n +0001162291 00000 n 0000009532 00000 n 0000009566 00000 n -0000479340 00000 n -0001150264 00000 n +0000479808 00000 n +0001162212 00000 n 0000009625 00000 n 0000009673 00000 n -0000479469 00000 n -0001150131 00000 n +0000479937 00000 n +0001162079 00000 n 0000009722 00000 n 0000009772 00000 n -0000482539 00000 n -0001150052 00000 n +0000483007 00000 n +0001162000 00000 n 0000009826 00000 n 0000009873 00000 n -0000482667 00000 n -0001149959 00000 n +0000483135 00000 n +0001161907 00000 n 0000009927 00000 n 0000009987 00000 n -0000482926 00000 n -0001149866 00000 n +0000483394 00000 n +0001161814 00000 n 0000010041 00000 n 0000010093 00000 n -0000488108 00000 n -0001149773 00000 n +0000488576 00000 n +0001161721 00000 n 0000010147 00000 n 0000010212 00000 n -0000488237 00000 n -0001149680 00000 n +0000488705 00000 n +0001161628 00000 n 0000010266 00000 n 0000010317 00000 n -0000491714 00000 n -0001149587 00000 n +0000492182 00000 n +0001161535 00000 n 0000010371 00000 n 0000010435 00000 n -0000491843 00000 n -0001149494 00000 n +0000492311 00000 n +0001161442 00000 n 0000010489 00000 n 0000010536 00000 n -0000491972 00000 n -0001149401 00000 n +0000492440 00000 n +0001161349 00000 n 0000010590 00000 n 0000010650 00000 n -0000492101 00000 n -0001149308 00000 n +0000492569 00000 n +0001161256 00000 n 0000010704 00000 n 0000010755 00000 n -0000496118 00000 n -0001149176 00000 n +0000496587 00000 n +0001161124 00000 n 0000010810 00000 n 0000010875 00000 n -0000496247 00000 n -0001149097 00000 n +0000496716 00000 n +0001161045 00000 n 0000010935 00000 n 0000010982 00000 n -0000503068 00000 n -0001149004 00000 n +0000503537 00000 n +0001160952 00000 n 0000011042 00000 n 0000011090 00000 n -0000509473 00000 n -0001148925 00000 n +0000509942 00000 n +0001160873 00000 n 0000011150 00000 n 0000011204 00000 n -0000512561 00000 n -0001148832 00000 n +0000513030 00000 n +0001160780 00000 n 0000011259 00000 n 0000011309 00000 n -0000515418 00000 n -0001148739 00000 n +0000515887 00000 n +0001160687 00000 n 0000011364 00000 n 0000011427 00000 n -0000515547 00000 n -0001148646 00000 n +0000516016 00000 n +0001160594 00000 n 0000011482 00000 n 0000011534 00000 n -0000515675 00000 n -0001148553 00000 n +0000516144 00000 n +0001160501 00000 n 0000011589 00000 n 0000011654 00000 n -0000515803 00000 n -0001148460 00000 n +0000516272 00000 n +0001160408 00000 n 0000011709 00000 n 0000011761 00000 n -0000520853 00000 n -0001148327 00000 n +0000521203 00000 n +0001160275 00000 n 0000011816 00000 n 0000011881 00000 n -0000536471 00000 n -0001148248 00000 n +0000540970 00000 n +0001160196 00000 n 0000011941 00000 n 0000011985 00000 n -0000562017 00000 n -0001148155 00000 n +0000562567 00000 n +0001160103 00000 n 0000012045 00000 n 0000012084 00000 n -0000562146 00000 n -0001148062 00000 n +0000566202 00000 n +0001160010 00000 n 0000012144 00000 n 0000012191 00000 n -0000565541 00000 n -0001147969 00000 n +0000566331 00000 n +0001159917 00000 n 0000012251 00000 n 0000012294 00000 n -0000569818 00000 n -0001147876 00000 n +0000570602 00000 n +0001159824 00000 n 0000012354 00000 n 0000012393 00000 n -0000573503 00000 n -0001147783 00000 n +0000574015 00000 n +0001159731 00000 n 0000012453 00000 n 0000012495 00000 n -0000576483 00000 n -0001147690 00000 n +0000580980 00000 n +0001159638 00000 n 0000012555 00000 n 0000012598 00000 n -0000583680 00000 n -0001147597 00000 n +0000588486 00000 n +0001159545 00000 n 0000012658 00000 n 0000012701 00000 n -0000588135 00000 n -0001147504 00000 n +0000588615 00000 n +0001159452 00000 n 0000012761 00000 n 0000012822 00000 n -0000588264 00000 n -0001147411 00000 n +0000592678 00000 n +0001159359 00000 n 0000012883 00000 n 0000012935 00000 n -0000592104 00000 n -0001147318 00000 n +0000592807 00000 n +0001159266 00000 n 0000012996 00000 n 0000013049 00000 n -0000596453 00000 n -0001147225 00000 n +0000595837 00000 n +0001159173 00000 n 0000013110 00000 n 0000013148 00000 n -0000596582 00000 n -0001147132 00000 n +0000599775 00000 n +0001159080 00000 n 0000013209 00000 n 0000013261 00000 n -0000599446 00000 n -0001147039 00000 n +0000603067 00000 n +0001158987 00000 n 0000013322 00000 n 0000013366 00000 n -0000602825 00000 n -0001146946 00000 n +0000603325 00000 n +0001158894 00000 n 0000013427 00000 n 0000013463 00000 n -0000611700 00000 n -0001146853 00000 n +0000612154 00000 n +0001158801 00000 n 0000013524 00000 n 0000013587 00000 n -0000614811 00000 n -0001146760 00000 n +0000615500 00000 n +0001158708 00000 n 0000013648 00000 n 0000013698 00000 n -0000618760 00000 n -0001146667 00000 n +0000619261 00000 n +0001158615 00000 n 0000013759 00000 n 0000013815 00000 n -0000618887 00000 n -0001146588 00000 n +0000623589 00000 n +0001158522 00000 n 0000013876 00000 n 0000013923 00000 n -0000626257 00000 n -0001146495 00000 n -0000013978 00000 n -0000014029 00000 n -0000626386 00000 n -0001146402 00000 n -0000014084 00000 n -0000014148 00000 n -0000630987 00000 n -0001146309 00000 n -0000014203 00000 n -0000014267 00000 n -0000631116 00000 n -0001146216 00000 n -0000014322 00000 n -0000014399 00000 n -0000634881 00000 n -0001146123 00000 n -0000014454 00000 n -0000014511 00000 n -0000635010 00000 n -0001146030 00000 n -0000014566 00000 n -0000014636 00000 n -0000635139 00000 n -0001145937 00000 n -0000014691 00000 n -0000014748 00000 n -0000635268 00000 n -0001145844 00000 n -0000014803 00000 n -0000014873 00000 n -0000639141 00000 n -0001145751 00000 n -0000014928 00000 n -0000014977 00000 n -0000639269 00000 n -0001145658 00000 n -0000015032 00000 n -0000015094 00000 n -0000644064 00000 n -0001145565 00000 n -0000015149 00000 n -0000015198 00000 n -0000647249 00000 n -0001145447 00000 n -0000015253 00000 n -0000015315 00000 n -0000647378 00000 n -0001145368 00000 n -0000015375 00000 n -0000015414 00000 n -0000656742 00000 n -0001145275 00000 n -0000015474 00000 n -0000015508 00000 n -0000656871 00000 n -0001145182 00000 n -0000015568 00000 n -0000015609 00000 n -0000673635 00000 n -0001145103 00000 n -0000015669 00000 n -0000015721 00000 n -0000681203 00000 n -0001144971 00000 n -0000015770 00000 n -0000015803 00000 n -0000681332 00000 n -0001144853 00000 n -0000015857 00000 n -0000015929 00000 n -0000681461 00000 n -0001144774 00000 n -0000015988 00000 n -0000016032 00000 n -0000692257 00000 n -0001144695 00000 n -0000016091 00000 n -0000016144 00000 n -0000692644 00000 n -0001144602 00000 n -0000016198 00000 n -0000016248 00000 n -0000696013 00000 n -0001144509 00000 n -0000016302 00000 n -0000016340 00000 n -0000696272 00000 n -0001144416 00000 n -0000016394 00000 n -0000016443 00000 n -0000699361 00000 n -0001144284 00000 n -0000016497 00000 n -0000016549 00000 n -0000699490 00000 n -0001144205 00000 n -0000016608 00000 n -0000016653 00000 n -0000699619 00000 n -0001144112 00000 n -0000016712 00000 n -0000016764 00000 n -0000699748 00000 n -0001144019 00000 n -0000016823 00000 n -0000016876 00000 n -0000701944 00000 n -0001143940 00000 n -0000016935 00000 n -0000016984 00000 n -0000702072 00000 n -0001143847 00000 n -0000017038 00000 n -0000017118 00000 n -0000706376 00000 n -0001143768 00000 n -0000017172 00000 n -0000017221 00000 n -0000706505 00000 n -0001143650 00000 n -0000017270 00000 n -0000017310 00000 n -0000709955 00000 n -0001143571 00000 n -0000017369 00000 n -0000017416 00000 n -0000713333 00000 n -0001143453 00000 n -0000017470 00000 n -0000017515 00000 n -0000713462 00000 n -0001143374 00000 n -0000017574 00000 n -0000017633 00000 n -0000716809 00000 n -0001143281 00000 n -0000017692 00000 n -0000017756 00000 n -0000717068 00000 n -0001143188 00000 n -0000017815 00000 n -0000017871 00000 n -0000721229 00000 n -0001143095 00000 n -0000017930 00000 n -0000017988 00000 n -0000723239 00000 n -0001143016 00000 n -0000018047 00000 n -0000018109 00000 n -0000725019 00000 n -0001142883 00000 n -0000018156 00000 n -0000018208 00000 n -0000725148 00000 n -0001142804 00000 n -0000018257 00000 n -0000018301 00000 n -0000729184 00000 n -0001142672 00000 n -0000018350 00000 n -0000018391 00000 n -0000729313 00000 n -0001142593 00000 n -0000018445 00000 n -0000018493 00000 n -0000729441 00000 n -0001142514 00000 n -0000018547 00000 n -0000018598 00000 n -0000729570 00000 n -0001142435 00000 n -0000018647 00000 n -0000018694 00000 n -0000734169 00000 n -0001142302 00000 n -0000018741 00000 n -0000018778 00000 n -0000734298 00000 n -0001142184 00000 n -0000018827 00000 n -0000018866 00000 n -0000734427 00000 n -0001142119 00000 n -0000018920 00000 n -0000018998 00000 n -0000734556 00000 n -0001142026 00000 n -0000019047 00000 n -0000019114 00000 n -0000734685 00000 n -0001141947 00000 n -0000019163 00000 n -0000019208 00000 n -0000738126 00000 n -0001141814 00000 n -0000019256 00000 n -0000019288 00000 n -0000738255 00000 n -0001141696 00000 n +0000627885 00000 n +0001158443 00000 n +0000013984 00000 n +0000014052 00000 n +0000630379 00000 n +0001158350 00000 n +0000014107 00000 n +0000014158 00000 n +0000634993 00000 n +0001158257 00000 n +0000014213 00000 n +0000014277 00000 n +0000638961 00000 n +0001158164 00000 n +0000014332 00000 n +0000014396 00000 n +0000639090 00000 n +0001158071 00000 n +0000014451 00000 n +0000014528 00000 n +0000639219 00000 n +0001157978 00000 n +0000014583 00000 n +0000014640 00000 n +0000639348 00000 n +0001157885 00000 n +0000014695 00000 n +0000014765 00000 n +0000643377 00000 n +0001157792 00000 n +0000014820 00000 n +0000014877 00000 n +0000643506 00000 n +0001157699 00000 n +0000014932 00000 n +0000015002 00000 n +0000647781 00000 n +0001157606 00000 n +0000015057 00000 n +0000015106 00000 n +0000647909 00000 n +0001157513 00000 n +0000015161 00000 n +0000015223 00000 n +0000649790 00000 n +0001157420 00000 n +0000015278 00000 n +0000015327 00000 n +0000655281 00000 n +0001157302 00000 n +0000015382 00000 n +0000015444 00000 n +0000655410 00000 n +0001157223 00000 n +0000015504 00000 n +0000015543 00000 n +0000664332 00000 n +0001157130 00000 n +0000015603 00000 n +0000015637 00000 n +0000664461 00000 n +0001157037 00000 n +0000015697 00000 n +0000015738 00000 n +0000685090 00000 n +0001156958 00000 n +0000015798 00000 n +0000015850 00000 n +0000692072 00000 n +0001156826 00000 n +0000015899 00000 n +0000015932 00000 n +0000692201 00000 n +0001156708 00000 n +0000015986 00000 n +0000016058 00000 n +0000692330 00000 n +0001156629 00000 n +0000016117 00000 n +0000016161 00000 n +0000702932 00000 n +0001156550 00000 n +0000016220 00000 n +0000016273 00000 n +0000703321 00000 n +0001156457 00000 n +0000016327 00000 n +0000016377 00000 n +0000707175 00000 n +0001156364 00000 n +0000016431 00000 n +0000016469 00000 n +0000707434 00000 n +0001156271 00000 n +0000016523 00000 n +0000016572 00000 n +0000710207 00000 n +0001156139 00000 n +0000016626 00000 n +0000016678 00000 n +0000710332 00000 n +0001156060 00000 n +0000016737 00000 n +0000016782 00000 n +0000710461 00000 n +0001155967 00000 n +0000016841 00000 n +0000016893 00000 n +0000710590 00000 n +0001155874 00000 n +0000016952 00000 n +0000017005 00000 n +0000713042 00000 n +0001155795 00000 n +0000017064 00000 n +0000017113 00000 n +0000713171 00000 n +0001155702 00000 n +0000017167 00000 n +0000017247 00000 n +0000717486 00000 n +0001155623 00000 n +0000017301 00000 n +0000017350 00000 n +0000720991 00000 n +0001155505 00000 n +0000017399 00000 n +0000017439 00000 n +0000721250 00000 n +0001155426 00000 n +0000017498 00000 n +0000017545 00000 n +0000724682 00000 n +0001155308 00000 n +0000017599 00000 n +0000017644 00000 n +0000724811 00000 n +0001155229 00000 n +0000017703 00000 n +0000017762 00000 n +0000728166 00000 n +0001155136 00000 n +0000017821 00000 n +0000017885 00000 n +0000728425 00000 n +0001155043 00000 n +0000017944 00000 n +0000018000 00000 n +0000732582 00000 n +0001154950 00000 n +0000018059 00000 n +0000018117 00000 n +0000734603 00000 n +0001154871 00000 n +0000018176 00000 n +0000018238 00000 n +0000736767 00000 n +0001154738 00000 n +0000018285 00000 n +0000018337 00000 n +0000736896 00000 n +0001154659 00000 n +0000018386 00000 n +0000018430 00000 n +0000740931 00000 n +0001154527 00000 n +0000018479 00000 n +0000018520 00000 n +0000741060 00000 n +0001154448 00000 n +0000018574 00000 n +0000018622 00000 n +0000741188 00000 n +0001154369 00000 n +0000018676 00000 n +0000018727 00000 n +0000741317 00000 n +0001154290 00000 n +0000018776 00000 n +0000018823 00000 n +0000745916 00000 n +0001154157 00000 n +0000018870 00000 n +0000018907 00000 n +0000746045 00000 n +0001154039 00000 n +0000018956 00000 n +0000018995 00000 n +0000746174 00000 n +0001153974 00000 n +0000019049 00000 n +0000019127 00000 n +0000746303 00000 n +0001153881 00000 n +0000019176 00000 n +0000019243 00000 n +0000746432 00000 n +0001153802 00000 n +0000019292 00000 n 0000019337 00000 n -0000019376 00000 n -0000738384 00000 n -0001141631 00000 n -0000019430 00000 n -0000019491 00000 n -0000742066 00000 n -0001141499 00000 n -0000019540 00000 n -0000019597 00000 n -0000742195 00000 n -0001141434 00000 n -0000019651 00000 n -0000019700 00000 n -0000742324 00000 n -0001141302 00000 n -0000019749 00000 n -0000019811 00000 n -0000742453 00000 n -0001141223 00000 n -0000019865 00000 n -0000019920 00000 n -0000767295 00000 n -0001141130 00000 n -0000019974 00000 n -0000020015 00000 n -0000767424 00000 n -0001141051 00000 n -0000020069 00000 n -0000020121 00000 n -0000767813 00000 n -0001140933 00000 n -0000020170 00000 n -0000020220 00000 n -0000770635 00000 n -0001140854 00000 n -0000020274 00000 n -0000020312 00000 n -0000770764 00000 n -0001140761 00000 n -0000020366 00000 n +0000749873 00000 n +0001153669 00000 n +0000019385 00000 n +0000019417 00000 n +0000750002 00000 n +0001153551 00000 n +0000019466 00000 n +0000019505 00000 n +0000750131 00000 n +0001153486 00000 n +0000019559 00000 n +0000019620 00000 n +0000753813 00000 n +0001153354 00000 n +0000019669 00000 n +0000019726 00000 n +0000753942 00000 n +0001153289 00000 n +0000019780 00000 n +0000019829 00000 n +0000754071 00000 n +0001153157 00000 n +0000019878 00000 n +0000019940 00000 n +0000754200 00000 n +0001153078 00000 n +0000019994 00000 n +0000020049 00000 n +0000779043 00000 n +0001152985 00000 n +0000020103 00000 n +0000020144 00000 n +0000779172 00000 n +0001152906 00000 n +0000020198 00000 n +0000020250 00000 n +0000779561 00000 n +0001152788 00000 n +0000020299 00000 n +0000020349 00000 n +0000782383 00000 n +0001152709 00000 n 0000020403 00000 n -0000770893 00000 n -0001140668 00000 n -0000020457 00000 n +0000020441 00000 n +0000782512 00000 n +0001152616 00000 n 0000020495 00000 n -0000771022 00000 n -0001140575 00000 n -0000020549 00000 n -0000020601 00000 n -0000774258 00000 n -0001140482 00000 n -0000020655 00000 n -0000020698 00000 n -0000774386 00000 n -0001140350 00000 n -0000020752 00000 n -0000020797 00000 n -0000774514 00000 n -0001140271 00000 n -0000020856 00000 n -0000020922 00000 n -0000777499 00000 n -0001140178 00000 n -0000020981 00000 n -0000021069 00000 n -0000777628 00000 n -0001140085 00000 n -0000021128 00000 n -0000021203 00000 n -0000777757 00000 n -0001139992 00000 n -0000021262 00000 n -0000021347 00000 n -0000780664 00000 n -0001139899 00000 n -0000021406 00000 n -0000021487 00000 n -0000783125 00000 n -0001139820 00000 n -0000021546 00000 n -0000021630 00000 n -0000783254 00000 n -0001139741 00000 n -0000021684 00000 n -0000021728 00000 n -0000786083 00000 n -0001139621 00000 n -0000021776 00000 n -0000021810 00000 n -0000786212 00000 n -0001139542 00000 n -0000021859 00000 n -0000021886 00000 n -0000804176 00000 n -0001139449 00000 n -0000021935 00000 n -0000021963 00000 n -0000811714 00000 n -0001139356 00000 n -0000022012 00000 n -0000022052 00000 n -0000817973 00000 n -0001139263 00000 n -0000022101 00000 n -0000022144 00000 n -0000824507 00000 n -0001139170 00000 n -0000022193 00000 n +0000020532 00000 n +0000782641 00000 n +0001152523 00000 n +0000020586 00000 n +0000020624 00000 n +0000782770 00000 n +0001152430 00000 n +0000020678 00000 n +0000020730 00000 n +0000786006 00000 n +0001152337 00000 n +0000020784 00000 n +0000020827 00000 n +0000786134 00000 n +0001152205 00000 n +0000020881 00000 n +0000020926 00000 n +0000786262 00000 n +0001152126 00000 n +0000020985 00000 n +0000021051 00000 n +0000789248 00000 n +0001152033 00000 n +0000021110 00000 n +0000021198 00000 n +0000789377 00000 n +0001151940 00000 n +0000021257 00000 n +0000021332 00000 n +0000789506 00000 n +0001151847 00000 n +0000021391 00000 n +0000021476 00000 n +0000792414 00000 n +0001151754 00000 n +0000021535 00000 n +0000021616 00000 n +0000794875 00000 n +0001151675 00000 n +0000021675 00000 n +0000021759 00000 n +0000795004 00000 n +0001151596 00000 n +0000021813 00000 n +0000021857 00000 n +0000797833 00000 n +0001151476 00000 n +0000021905 00000 n +0000021939 00000 n +0000797962 00000 n +0001151397 00000 n +0000021988 00000 n +0000022015 00000 n +0000815928 00000 n +0001151304 00000 n +0000022064 00000 n +0000022092 00000 n +0000823477 00000 n +0001151211 00000 n +0000022141 00000 n +0000022181 00000 n +0000829752 00000 n +0001151118 00000 n 0000022230 00000 n -0000837945 00000 n -0001139077 00000 n -0000022279 00000 n -0000022316 00000 n -0000841082 00000 n -0001138984 00000 n -0000022365 00000 n -0000022403 00000 n -0000847650 00000 n -0001138891 00000 n -0000022452 00000 n -0000022491 00000 n -0000861418 00000 n -0001138798 00000 n -0000022540 00000 n -0000022579 00000 n -0000864225 00000 n -0001138705 00000 n -0000022629 00000 n +0000022273 00000 n +0000836286 00000 n +0001151025 00000 n +0000022322 00000 n +0000022359 00000 n +0000849525 00000 n +0001150932 00000 n +0000022408 00000 n +0000022445 00000 n +0000852549 00000 n +0001150839 00000 n +0000022494 00000 n +0000022532 00000 n +0000859199 00000 n +0001150746 00000 n +0000022581 00000 n +0000022620 00000 n +0000872663 00000 n +0001150653 00000 n 0000022669 00000 n -0000874022 00000 n -0001138612 00000 n -0000022719 00000 n -0000022749 00000 n -0000882230 00000 n -0001138519 00000 n -0000022799 00000 n -0000022842 00000 n -0000882683 00000 n -0001138426 00000 n -0000022892 00000 n -0000022925 00000 n -0000897043 00000 n -0001138333 00000 n -0000022975 00000 n -0000023004 00000 n -0000904361 00000 n -0001138240 00000 n +0000022708 00000 n +0000875682 00000 n +0001150560 00000 n +0000022758 00000 n +0000022798 00000 n +0000885177 00000 n +0001150467 00000 n +0000022848 00000 n +0000022878 00000 n +0000893983 00000 n +0001150374 00000 n +0000022928 00000 n +0000022971 00000 n +0000894437 00000 n +0001150281 00000 n +0000023021 00000 n 0000023054 00000 n -0000023088 00000 n -0000910058 00000 n -0001138147 00000 n -0000023138 00000 n -0000023175 00000 n -0000913327 00000 n -0001138054 00000 n -0000023225 00000 n -0000023262 00000 n -0000918809 00000 n -0001137961 00000 n -0000023312 00000 n -0000023345 00000 n -0000919262 00000 n -0001137868 00000 n -0000023395 00000 n -0000023429 00000 n -0000922211 00000 n -0001137775 00000 n -0000023479 00000 n -0000023518 00000 n -0000924358 00000 n -0001137696 00000 n -0000023568 00000 n -0000023602 00000 n -0000023975 00000 n -0000024097 00000 n -0000288898 00000 n -0000023655 00000 n -0000288772 00000 n -0000288835 00000 n -0001132141 00000 n -0001106056 00000 n -0001131967 00000 n -0001133179 00000 n -0000025406 00000 n -0000025599 00000 n -0000025679 00000 n -0000025716 00000 n -0000025797 00000 n -0000025921 00000 n -0000026180 00000 n -0000026539 00000 n -0000026571 00000 n -0000026665 00000 n -0000027698 00000 n -0000038834 00000 n -0000104424 00000 n -0000170014 00000 n -0000235604 00000 n -0000290322 00000 n -0000290137 00000 n -0000288998 00000 n -0000290259 00000 n -0001104820 00000 n -0001078201 00000 n -0001104646 00000 n -0001077516 00000 n -0001075372 00000 n -0001077352 00000 n -0000302040 00000 n -0000293373 00000 n -0000290407 00000 n -0000301914 00000 n -0000301977 00000 n -0000293915 00000 n -0000294069 00000 n -0000294226 00000 n -0000294383 00000 n -0000294540 00000 n -0000294697 00000 n -0000294859 00000 n -0000295021 00000 n -0000295182 00000 n -0000295344 00000 n -0000295511 00000 n -0000295678 00000 n -0000295843 00000 n -0000296005 00000 n -0000296171 00000 n -0000296333 00000 n -0000296487 00000 n -0000296644 00000 n -0000296801 00000 n -0000296957 00000 n -0000297113 00000 n -0000297270 00000 n -0000297425 00000 n -0000297582 00000 n -0000297744 00000 n -0000297906 00000 n -0000298063 00000 n -0000298218 00000 n -0000298379 00000 n -0000298546 00000 n -0000298713 00000 n -0000298874 00000 n -0000299029 00000 n -0000299186 00000 n -0000299343 00000 n -0000299505 00000 n -0000299662 00000 n -0000299819 00000 n -0000299980 00000 n -0000300137 00000 n -0000300299 00000 n -0000300466 00000 n -0000300633 00000 n -0000300796 00000 n -0000300959 00000 n -0000301122 00000 n -0000301284 00000 n -0000301447 00000 n -0000301603 00000 n -0000301759 00000 n -0000315558 00000 n -0000305495 00000 n -0000302125 00000 n -0000315493 00000 n -0001074784 00000 n -0001057363 00000 n -0001074598 00000 n -0000306145 00000 n -0000306309 00000 n -0000306472 00000 n -0000306636 00000 n -0000306795 00000 n -0000306959 00000 n -0000307123 00000 n -0000307287 00000 n -0000307451 00000 n -0000307615 00000 n -0000307779 00000 n -0000307943 00000 n -0000308107 00000 n -0000308271 00000 n -0000308436 00000 n -0000308601 00000 n -0000308766 00000 n -0000308931 00000 n -0000309091 00000 n -0000309256 00000 n -0000309420 00000 n -0000309580 00000 n -0000309745 00000 n -0000309915 00000 n -0000310085 00000 n -0000310250 00000 n -0000310419 00000 n -0000310588 00000 n -0000310753 00000 n -0000310918 00000 n -0000311082 00000 n -0000311247 00000 n -0000311407 00000 n -0000311572 00000 n -0000311737 00000 n -0000311893 00000 n -0000312052 00000 n -0000312211 00000 n -0000312368 00000 n -0000312527 00000 n -0000312691 00000 n -0000312860 00000 n -0000313029 00000 n -0000313193 00000 n -0000313362 00000 n -0000313531 00000 n -0000313690 00000 n -0000313854 00000 n -0000314018 00000 n -0000314182 00000 n -0000314346 00000 n -0000314510 00000 n -0000314674 00000 n -0000314837 00000 n -0000315001 00000 n -0000315163 00000 n -0000315325 00000 n -0000329665 00000 n -0000319135 00000 n -0000315658 00000 n -0000329600 00000 n -0000319803 00000 n -0000319972 00000 n -0000320140 00000 n -0000320304 00000 n -0000320467 00000 n -0000320631 00000 n -0000320795 00000 n -0000320959 00000 n -0000321123 00000 n -0000321292 00000 n -0000321460 00000 n -0000321629 00000 n -0000321798 00000 n -0000321966 00000 n -0000322135 00000 n -0000322304 00000 n -0000322472 00000 n -0000322641 00000 n -0000322811 00000 n -0000322980 00000 n -0000323150 00000 n -0000323320 00000 n -0000323490 00000 n -0000323660 00000 n -0000323830 00000 n -0000324000 00000 n -0000324170 00000 n -0000324340 00000 n -0000324503 00000 n -0000324667 00000 n -0000324830 00000 n -0000324994 00000 n -0000325157 00000 n -0000325321 00000 n -0000325485 00000 n -0000325649 00000 n -0000325812 00000 n -0000325976 00000 n -0000326140 00000 n -0000326303 00000 n -0000326472 00000 n -0000326640 00000 n +0000908695 00000 n +0001150188 00000 n +0000023104 00000 n +0000023133 00000 n +0000915895 00000 n +0001150095 00000 n +0000023183 00000 n +0000023217 00000 n +0000921877 00000 n +0001150002 00000 n +0000023267 00000 n +0000023304 00000 n +0000925147 00000 n +0001149909 00000 n +0000023354 00000 n +0000023391 00000 n +0000930630 00000 n +0001149816 00000 n +0000023441 00000 n +0000023474 00000 n +0000931083 00000 n +0001149723 00000 n +0000023524 00000 n +0000023558 00000 n +0000934031 00000 n +0001149630 00000 n +0000023608 00000 n +0000023647 00000 n +0000936179 00000 n +0001149551 00000 n +0000023697 00000 n +0000023731 00000 n +0000024104 00000 n +0000024226 00000 n +0000289027 00000 n +0000023784 00000 n +0000288901 00000 n +0000288964 00000 n +0001143960 00000 n +0001117875 00000 n +0001143786 00000 n +0001144998 00000 n +0000025535 00000 n +0000025728 00000 n +0000025808 00000 n +0000025845 00000 n +0000025926 00000 n +0000026050 00000 n +0000026309 00000 n +0000026668 00000 n +0000026700 00000 n +0000026794 00000 n +0000027827 00000 n +0000038963 00000 n +0000104553 00000 n +0000170143 00000 n +0000235733 00000 n +0000290455 00000 n +0000290270 00000 n +0000289127 00000 n +0000290392 00000 n +0001116639 00000 n +0001090020 00000 n +0001116465 00000 n +0001089335 00000 n +0001087190 00000 n +0001089171 00000 n +0000302181 00000 n +0000293506 00000 n +0000290540 00000 n +0000302055 00000 n +0000302118 00000 n +0000294052 00000 n +0000294206 00000 n +0000294363 00000 n +0000294520 00000 n +0000294677 00000 n +0000294834 00000 n +0000294996 00000 n +0000295158 00000 n +0000295319 00000 n +0000295481 00000 n +0000295648 00000 n +0000295815 00000 n +0000295980 00000 n +0000296142 00000 n +0000296308 00000 n +0000296470 00000 n +0000296624 00000 n +0000296781 00000 n +0000296938 00000 n +0000297094 00000 n +0000297250 00000 n +0000297407 00000 n +0000297562 00000 n +0000297719 00000 n +0000297881 00000 n +0000298043 00000 n +0000298200 00000 n +0000298355 00000 n +0000298516 00000 n +0000298683 00000 n +0000298850 00000 n +0000299011 00000 n +0000299166 00000 n +0000299323 00000 n +0000299480 00000 n +0000299642 00000 n +0000299799 00000 n +0000299956 00000 n +0000300117 00000 n +0000300275 00000 n +0000300438 00000 n +0000300606 00000 n +0000300774 00000 n +0000300937 00000 n +0000301100 00000 n +0000301263 00000 n +0000301425 00000 n +0000301588 00000 n +0000301744 00000 n +0000301900 00000 n +0000315699 00000 n +0000305636 00000 n +0000302266 00000 n +0000315634 00000 n +0001086602 00000 n +0001069181 00000 n +0001086416 00000 n +0000306286 00000 n +0000306450 00000 n +0000306613 00000 n +0000306777 00000 n +0000306936 00000 n +0000307100 00000 n +0000307264 00000 n +0000307428 00000 n +0000307592 00000 n +0000307756 00000 n +0000307920 00000 n +0000308084 00000 n +0000308248 00000 n +0000308412 00000 n +0000308577 00000 n +0000308742 00000 n +0000308907 00000 n +0000309072 00000 n +0000309232 00000 n +0000309397 00000 n +0000309561 00000 n +0000309721 00000 n +0000309886 00000 n +0000310056 00000 n +0000310226 00000 n +0000310391 00000 n +0000310560 00000 n +0000310729 00000 n +0000310894 00000 n +0000311059 00000 n +0000311223 00000 n +0000311388 00000 n +0000311548 00000 n +0000311713 00000 n +0000311878 00000 n +0000312034 00000 n +0000312193 00000 n +0000312352 00000 n +0000312509 00000 n +0000312668 00000 n +0000312832 00000 n +0000313001 00000 n +0000313170 00000 n +0000313334 00000 n +0000313503 00000 n +0000313672 00000 n +0000313831 00000 n +0000313995 00000 n +0000314159 00000 n +0000314323 00000 n +0000314487 00000 n +0000314651 00000 n +0000314815 00000 n +0000314978 00000 n +0000315142 00000 n +0000315304 00000 n +0000315466 00000 n +0000329835 00000 n +0000319302 00000 n +0000315799 00000 n +0000329770 00000 n +0000319970 00000 n +0000320139 00000 n +0000320307 00000 n +0000320471 00000 n +0000320634 00000 n +0000320798 00000 n +0000320962 00000 n +0000321126 00000 n +0000321290 00000 n +0000321459 00000 n +0000321627 00000 n +0000321796 00000 n +0000321965 00000 n +0000322133 00000 n +0000322302 00000 n +0000322471 00000 n +0000322639 00000 n +0000322808 00000 n +0000322978 00000 n +0000323147 00000 n +0000323317 00000 n +0000323487 00000 n +0000323657 00000 n +0000323827 00000 n +0000323997 00000 n +0000324167 00000 n +0000324337 00000 n +0000324507 00000 n +0000324676 00000 n +0000324840 00000 n +0000325003 00000 n +0000325167 00000 n +0000325331 00000 n +0000325495 00000 n +0000325659 00000 n +0000325823 00000 n +0000325986 00000 n +0000326150 00000 n +0000326314 00000 n +0000326477 00000 n +0000326641 00000 n 0000326809 00000 n 0000326978 00000 n -0000327136 00000 n -0000327298 00000 n -0000327466 00000 n -0000327634 00000 n -0000327796 00000 n -0000327959 00000 n -0000328121 00000 n -0000328284 00000 n -0000328452 00000 n -0000328620 00000 n -0000328788 00000 n -0000328956 00000 n -0000329118 00000 n -0000329279 00000 n -0000329434 00000 n -0000342808 00000 n -0000333248 00000 n -0000329765 00000 n -0000342743 00000 n -0000333880 00000 n -0000334043 00000 n -0000334211 00000 n -0000334379 00000 n -0000334547 00000 n -0001056472 00000 n -0001035138 00000 n -0001056296 00000 n -0000334715 00000 n -0000334883 00000 n -0000335038 00000 n -0000335196 00000 n -0000335354 00000 n -0000335516 00000 n -0000335678 00000 n -0000335836 00000 n -0000335992 00000 n -0000336150 00000 n -0000336313 00000 n -0000336471 00000 n -0000336629 00000 n -0000336786 00000 n -0000336943 00000 n -0000337106 00000 n -0000337264 00000 n -0000337427 00000 n -0000337585 00000 n -0000337747 00000 n -0000337909 00000 n -0000338072 00000 n -0000338230 00000 n -0000338393 00000 n -0000338556 00000 n -0000338719 00000 n -0000338882 00000 n -0000339045 00000 n -0000339208 00000 n -0000339376 00000 n -0000339544 00000 n -0000339712 00000 n -0000339880 00000 n -0000340046 00000 n -0000340213 00000 n -0000340375 00000 n -0000340532 00000 n -0000340690 00000 n -0000340848 00000 n -0000341006 00000 n -0000341164 00000 n -0000341322 00000 n -0000341480 00000 n -0000341638 00000 n -0000341796 00000 n -0000341954 00000 n -0000342113 00000 n -0000342272 00000 n -0000342429 00000 n -0000342586 00000 n -0000345002 00000 n -0000343625 00000 n -0000342922 00000 n -0000344937 00000 n -0001034170 00000 n -0001014200 00000 n -0001033995 00000 n -0000343826 00000 n -0000343985 00000 n -0000344144 00000 n -0000344302 00000 n -0000344461 00000 n -0000344619 00000 n -0000344778 00000 n -0001133300 00000 n -0000348125 00000 n -0000347358 00000 n -0000345103 00000 n -0000347546 00000 n -0000347674 00000 n -0000347802 00000 n -0000347930 00000 n -0000347995 00000 n -0000348060 00000 n -0001013383 00000 n -0000994918 00000 n -0001013208 00000 n -0000352660 00000 n -0000351519 00000 n -0000348253 00000 n -0000352021 00000 n -0000352086 00000 n -0000352213 00000 n -0000352341 00000 n -0000352469 00000 n -0000351675 00000 n -0000351869 00000 n -0000352595 00000 n -0000681396 00000 n -0000742517 00000 n -0000357341 00000 n -0000356283 00000 n -0000352788 00000 n -0000356764 00000 n -0000356892 00000 n -0000356439 00000 n -0000356602 00000 n -0000357020 00000 n -0000357148 00000 n -0000357276 00000 n -0000373141 00000 n -0000360582 00000 n -0000360007 00000 n -0000357469 00000 n -0000360133 00000 n -0000360261 00000 n -0000360389 00000 n -0000360517 00000 n -0000364040 00000 n -0000362874 00000 n -0000360696 00000 n -0000363336 00000 n -0000363464 00000 n -0000363592 00000 n -0000363720 00000 n -0000363848 00000 n -0000363030 00000 n -0000363183 00000 n -0000363975 00000 n -0000618823 00000 n -0000365117 00000 n -0000364798 00000 n -0000364126 00000 n -0000364924 00000 n -0000365052 00000 n -0001133425 00000 n -0000367160 00000 n -0000366457 00000 n -0000365217 00000 n -0000366583 00000 n -0000366711 00000 n -0000366838 00000 n -0000366966 00000 n -0000367095 00000 n -0000369742 00000 n -0000369112 00000 n -0000367260 00000 n -0000369418 00000 n -0000369547 00000 n -0000369612 00000 n -0000369677 00000 n -0000369259 00000 n -0000599510 00000 n -0000373335 00000 n -0000372630 00000 n -0000369856 00000 n -0000372756 00000 n -0000372885 00000 n -0000373012 00000 n -0000994235 00000 n -0000982173 00000 n -0000994056 00000 n -0000373270 00000 n -0000378002 00000 n -0000376932 00000 n -0000373463 00000 n -0000377937 00000 n -0000981600 00000 n -0000970667 00000 n -0000981421 00000 n -0000377115 00000 n -0000377270 00000 n -0000377441 00000 n -0000377612 00000 n -0000377767 00000 n -0000520917 00000 n -0000673699 00000 n -0000381529 00000 n -0000381338 00000 n -0000378171 00000 n -0000381464 00000 n -0000386001 00000 n -0000385604 00000 n -0000381671 00000 n -0000385936 00000 n -0000385751 00000 n -0001133550 00000 n -0000488172 00000 n -0000388204 00000 n -0000387754 00000 n -0000386157 00000 n -0000387880 00000 n -0000388009 00000 n -0000388074 00000 n -0000388139 00000 n -0000388673 00000 n -0000388482 00000 n -0000388332 00000 n -0000388608 00000 n -0000391436 00000 n -0000394154 00000 n -0000391271 00000 n -0000388715 00000 n +0000327147 00000 n +0000327316 00000 n +0000327473 00000 n +0000327636 00000 n +0000327804 00000 n +0000327971 00000 n +0000328134 00000 n +0000328296 00000 n +0000328459 00000 n +0000328622 00000 n +0000328790 00000 n +0000328958 00000 n +0000329126 00000 n +0000329293 00000 n +0000329454 00000 n +0000329614 00000 n +0000342999 00000 n +0000333429 00000 n +0000329935 00000 n +0000342934 00000 n +0000334061 00000 n +0000334229 00000 n +0000334392 00000 n +0000334560 00000 n +0000334728 00000 n +0000334896 00000 n +0001068290 00000 n +0001046956 00000 n +0001068114 00000 n +0000335064 00000 n +0000335231 00000 n +0000335387 00000 n +0000335545 00000 n +0000335703 00000 n +0000335866 00000 n +0000336029 00000 n +0000336187 00000 n +0000336343 00000 n +0000336501 00000 n +0000336664 00000 n +0000336822 00000 n +0000336980 00000 n +0000337136 00000 n +0000337294 00000 n +0000337457 00000 n +0000337615 00000 n +0000337778 00000 n +0000337935 00000 n +0000338097 00000 n +0000338260 00000 n +0000338423 00000 n +0000338581 00000 n +0000338744 00000 n +0000338907 00000 n +0000339070 00000 n +0000339233 00000 n +0000339396 00000 n +0000339559 00000 n +0000339727 00000 n +0000339895 00000 n +0000340062 00000 n +0000340228 00000 n +0000340395 00000 n +0000340562 00000 n +0000340725 00000 n +0000340882 00000 n +0000341040 00000 n +0000341198 00000 n +0000341356 00000 n +0000341514 00000 n +0000341672 00000 n +0000341830 00000 n +0000341988 00000 n +0000342146 00000 n +0000342304 00000 n +0000342463 00000 n +0000342620 00000 n +0000342777 00000 n +0000345400 00000 n +0000343854 00000 n +0000343113 00000 n +0000345335 00000 n +0000344064 00000 n +0001045988 00000 n +0001026018 00000 n +0001045813 00000 n +0000344223 00000 n +0000344382 00000 n +0000344540 00000 n +0000344699 00000 n +0000344858 00000 n +0000345017 00000 n +0000345176 00000 n +0001145119 00000 n +0000348523 00000 n +0000347756 00000 n +0000345501 00000 n +0000347944 00000 n +0000348072 00000 n +0000348200 00000 n +0000348328 00000 n +0000348393 00000 n +0000348458 00000 n +0001025201 00000 n +0001006736 00000 n +0001025026 00000 n +0000353060 00000 n +0000351919 00000 n +0000348651 00000 n +0000352421 00000 n +0000352486 00000 n +0000352613 00000 n +0000352741 00000 n +0000352869 00000 n +0000352075 00000 n +0000352269 00000 n +0000352995 00000 n +0000692265 00000 n +0000754264 00000 n +0000357742 00000 n +0000356684 00000 n +0000353188 00000 n +0000357165 00000 n +0000357293 00000 n +0000356840 00000 n +0000357003 00000 n +0000357421 00000 n +0000357549 00000 n +0000357677 00000 n +0000373542 00000 n +0000360983 00000 n +0000360408 00000 n +0000357870 00000 n +0000360534 00000 n +0000360662 00000 n +0000360790 00000 n +0000360918 00000 n +0000364441 00000 n +0000363275 00000 n +0000361097 00000 n +0000363737 00000 n +0000363865 00000 n +0000363993 00000 n +0000364121 00000 n +0000364249 00000 n +0000363431 00000 n +0000363584 00000 n +0000364376 00000 n +0000619325 00000 n +0000365518 00000 n +0000365199 00000 n +0000364527 00000 n +0000365325 00000 n +0000365453 00000 n +0001145244 00000 n +0000367561 00000 n +0000366858 00000 n +0000365618 00000 n +0000366984 00000 n +0000367112 00000 n +0000367239 00000 n +0000367367 00000 n +0000367496 00000 n +0000370143 00000 n +0000369513 00000 n +0000367661 00000 n +0000369819 00000 n +0000369948 00000 n +0000370013 00000 n +0000370078 00000 n +0000369660 00000 n +0000603131 00000 n +0000373736 00000 n +0000373031 00000 n +0000370257 00000 n +0000373157 00000 n +0000373286 00000 n +0000373413 00000 n +0001006053 00000 n +0000993991 00000 n +0001005874 00000 n +0000373671 00000 n +0000378403 00000 n +0000377333 00000 n +0000373864 00000 n +0000378338 00000 n +0000993418 00000 n +0000982485 00000 n +0000993239 00000 n +0000377516 00000 n +0000377671 00000 n +0000377842 00000 n +0000378013 00000 n +0000378168 00000 n +0000521267 00000 n +0000685154 00000 n +0000381930 00000 n +0000381739 00000 n +0000378572 00000 n +0000381865 00000 n +0000386402 00000 n +0000386005 00000 n +0000382072 00000 n +0000386337 00000 n +0000386152 00000 n +0001145369 00000 n +0000488640 00000 n +0000388605 00000 n +0000388155 00000 n +0000386558 00000 n +0000388281 00000 n +0000388410 00000 n +0000388475 00000 n +0000388540 00000 n +0000389074 00000 n +0000388883 00000 n +0000388733 00000 n +0000389009 00000 n +0000391769 00000 n +0000394359 00000 n +0000391604 00000 n +0000389116 00000 n +0000393907 00000 n +0000394036 00000 n +0000394165 00000 n +0000393412 00000 n 0000393574 00000 n -0000393703 00000 n -0000393832 00000 n -0000393079 00000 n +0000981579 00000 n +0000971559 00000 n +0000981405 00000 n +0000970995 00000 n +0000961909 00000 n +0000970820 00000 n +0000394294 00000 n +0000393736 00000 n 0000393241 00000 n -0000969761 00000 n -0000959741 00000 n -0000969587 00000 n -0000959177 00000 n -0000950091 00000 n -0000959002 00000 n -0000393961 00000 n -0000393403 00000 n -0000394090 00000 n -0000392908 00000 n -0000392966 00000 n -0000393056 00000 n -0000536535 00000 n -0000576547 00000 n -0000398636 00000 n -0000397830 00000 n -0000394325 00000 n -0000398314 00000 n -0000398442 00000 n -0000397986 00000 n -0000398152 00000 n -0000398571 00000 n -0000746548 00000 n -0000402553 00000 n -0000402044 00000 n -0000398792 00000 n -0000402359 00000 n -0000402488 00000 n -0000402191 00000 n -0000403701 00000 n -0000403510 00000 n -0000402694 00000 n -0000403636 00000 n -0001133675 00000 n -0000405567 00000 n -0000405247 00000 n -0000403802 00000 n -0000405373 00000 n -0000405502 00000 n -0000408862 00000 n -0000408027 00000 n -0000405681 00000 n -0000408153 00000 n -0000408282 00000 n -0000408411 00000 n -0000408539 00000 n -0000408668 00000 n -0000408797 00000 n -0000412915 00000 n -0000412019 00000 n -0000409004 00000 n -0000412336 00000 n -0000412465 00000 n -0000412593 00000 n -0000412166 00000 n -0000412721 00000 n -0000412850 00000 n -0000416942 00000 n -0000416364 00000 n -0000413056 00000 n -0000416490 00000 n -0000416619 00000 n -0000416748 00000 n -0000416877 00000 n -0000420828 00000 n -0000420379 00000 n -0000417084 00000 n -0000420505 00000 n -0000420634 00000 n -0000420763 00000 n -0000423261 00000 n -0000423070 00000 n -0000420956 00000 n -0000423196 00000 n -0001133800 00000 n -0000426522 00000 n -0000425945 00000 n -0000423405 00000 n -0000426071 00000 n -0000949816 00000 n -0000946458 00000 n -0000949637 00000 n -0000426200 00000 n -0000426329 00000 n -0000426457 00000 n -0000430622 00000 n -0000429814 00000 n -0000426693 00000 n -0000430299 00000 n -0000430428 00000 n -0000946103 00000 n -0000944105 00000 n -0000945938 00000 n -0000429970 00000 n -0000430135 00000 n -0000430557 00000 n -0000824571 00000 n -0000841146 00000 n -0000434079 00000 n -0000433374 00000 n -0000430750 00000 n -0000433500 00000 n -0000433628 00000 n -0000433757 00000 n -0000433885 00000 n -0000434014 00000 n -0000437766 00000 n -0000436496 00000 n -0000434193 00000 n -0000436799 00000 n -0000436928 00000 n -0000437057 00000 n -0000437186 00000 n -0000437315 00000 n -0000437444 00000 n -0000437573 00000 n -0000437702 00000 n -0000436643 00000 n -0000635332 00000 n -0000441488 00000 n -0000441039 00000 n -0000437894 00000 n -0000441165 00000 n -0000441294 00000 n -0000441423 00000 n -0000444495 00000 n -0000444175 00000 n -0000441602 00000 n -0000444301 00000 n -0000444430 00000 n -0001133925 00000 n -0000447512 00000 n -0000447063 00000 n -0000444665 00000 n -0000447189 00000 n -0000447318 00000 n -0000447447 00000 n -0000450361 00000 n -0000449654 00000 n -0000447669 00000 n -0000449780 00000 n -0000449909 00000 n -0000450038 00000 n -0000450167 00000 n -0000450296 00000 n -0000453170 00000 n -0000452850 00000 n -0000450475 00000 n -0000452976 00000 n -0000453105 00000 n -0000458882 00000 n -0000456098 00000 n -0000455649 00000 n -0000453284 00000 n -0000455775 00000 n -0000455904 00000 n -0000456033 00000 n -0000460421 00000 n -0000458735 00000 n -0000456226 00000 n -0000459969 00000 n -0000460098 00000 n -0000459808 00000 n -0000460227 00000 n -0000460356 00000 n -0000742259 00000 n -0000460933 00000 n -0000460742 00000 n -0000460592 00000 n -0000460868 00000 n -0001134050 00000 n -0000463547 00000 n -0000462969 00000 n -0000460975 00000 n -0000463095 00000 n -0000463224 00000 n -0000463353 00000 n -0000463482 00000 n -0000463988 00000 n -0000463797 00000 n -0000463647 00000 n -0000463923 00000 n -0000468075 00000 n -0000467309 00000 n -0000464030 00000 n -0000467623 00000 n -0000467752 00000 n -0000467880 00000 n -0000467945 00000 n -0000468010 00000 n -0000467456 00000 n -0000472573 00000 n -0000472765 00000 n -0000472318 00000 n -0000468175 00000 n -0000472444 00000 n -0000472700 00000 n -0000476617 00000 n -0000476039 00000 n -0000472893 00000 n -0000476165 00000 n -0000476294 00000 n -0000476423 00000 n -0000476552 00000 n -0000479727 00000 n -0000479149 00000 n -0000476758 00000 n -0000479275 00000 n -0000479404 00000 n -0000479533 00000 n -0000479598 00000 n -0000479662 00000 n -0001134175 00000 n -0000483052 00000 n -0000482348 00000 n -0000479884 00000 n -0000482474 00000 n -0000482603 00000 n -0000482731 00000 n -0000482796 00000 n -0000482861 00000 n -0000482987 00000 n -0000488365 00000 n -0000487577 00000 n -0000483166 00000 n -0000488043 00000 n -0000487733 00000 n -0000487884 00000 n -0000488301 00000 n -0000925084 00000 n -0000492230 00000 n -0000490959 00000 n -0000488506 00000 n -0000491649 00000 n -0000491778 00000 n -0000491907 00000 n -0000492036 00000 n -0000491124 00000 n -0000491276 00000 n -0000491462 00000 n -0000492165 00000 n -0000496376 00000 n -0000495927 00000 n -0000492358 00000 n -0000496053 00000 n -0000496182 00000 n -0000496311 00000 n -0000500282 00000 n -0000499903 00000 n -0000496504 00000 n -0000500217 00000 n -0000500050 00000 n -0000503132 00000 n -0000503327 00000 n -0000502877 00000 n -0000500396 00000 n -0000503003 00000 n -0000503197 00000 n -0000503262 00000 n -0001134300 00000 n -0000506131 00000 n -0000505940 00000 n -0000503441 00000 n -0000506066 00000 n -0000509731 00000 n -0000509282 00000 n -0000506245 00000 n -0000509408 00000 n -0000509537 00000 n -0000509602 00000 n -0000509666 00000 n -0000512689 00000 n -0000512370 00000 n -0000509845 00000 n -0000512496 00000 n -0000512624 00000 n -0000515932 00000 n -0000514892 00000 n -0000512803 00000 n -0000515353 00000 n -0000515482 00000 n -0000515048 00000 n -0000515202 00000 n -0000515610 00000 n -0000515738 00000 n -0000515867 00000 n -0000517448 00000 n -0000517257 00000 n -0000516046 00000 n -0000517383 00000 n -0000519004 00000 n -0000518813 00000 n -0000517549 00000 n -0000518939 00000 n -0001134425 00000 n -0000520981 00000 n -0000520662 00000 n -0000519105 00000 n -0000520788 00000 n -0000524507 00000 n -0000524316 00000 n -0000521095 00000 n -0000524442 00000 n -0000529042 00000 n -0000528496 00000 n -0000524649 00000 n -0000528977 00000 n -0000528652 00000 n -0000528809 00000 n -0000710019 00000 n -0000532624 00000 n -0000532433 00000 n -0000529170 00000 n -0000532559 00000 n -0000536599 00000 n -0000536106 00000 n -0000532752 00000 n -0000536406 00000 n -0000536253 00000 n -0000540671 00000 n -0000540351 00000 n -0000536741 00000 n -0000540477 00000 n -0000540542 00000 n -0000540607 00000 n -0001134550 00000 n -0000544809 00000 n -0000544443 00000 n -0000540785 00000 n -0000544744 00000 n -0000544590 00000 n -0000550183 00000 n -0000549052 00000 n -0000544980 00000 n -0000550118 00000 n -0000549235 00000 n -0000549392 00000 n -0000549576 00000 n -0000549749 00000 n -0000549933 00000 n -0000626450 00000 n -0000554281 00000 n -0000554090 00000 n -0000550338 00000 n -0000554216 00000 n -0000558001 00000 n -0000557810 00000 n -0000554395 00000 n -0000557936 00000 n -0000562275 00000 n -0000561636 00000 n -0000558115 00000 n -0000561952 00000 n -0000562081 00000 n -0000561783 00000 n -0000562210 00000 n -0000644128 00000 n -0000565670 00000 n -0000565162 00000 n -0000562389 00000 n -0000565476 00000 n -0000565605 00000 n -0000565309 00000 n -0001134675 00000 n -0000569946 00000 n -0000569256 00000 n -0000565827 00000 n -0000569753 00000 n -0000569412 00000 n -0000569582 00000 n -0000569882 00000 n -0000729634 00000 n -0000573632 00000 n -0000573312 00000 n -0000570074 00000 n -0000573438 00000 n -0000573567 00000 n -0000576612 00000 n -0000576292 00000 n -0000573746 00000 n -0000576418 00000 n -0000580615 00000 n -0000580424 00000 n -0000576783 00000 n -0000580550 00000 n -0000583809 00000 n -0000583309 00000 n -0000580729 00000 n -0000583615 00000 n -0000583744 00000 n -0000583456 00000 n -0000588393 00000 n -0000587586 00000 n -0000583980 00000 n -0000588070 00000 n -0000588199 00000 n -0000587742 00000 n -0000588328 00000 n -0000587915 00000 n -0001134800 00000 n -0000592233 00000 n -0000591913 00000 n -0000588507 00000 n -0000592039 00000 n -0000592168 00000 n -0000596710 00000 n -0000595915 00000 n -0000592404 00000 n -0000596388 00000 n -0000596517 00000 n -0000596645 00000 n -0000596071 00000 n -0000596233 00000 n -0000599704 00000 n -0000599065 00000 n -0000596881 00000 n -0000599381 00000 n -0000599212 00000 n -0000599575 00000 n -0000599640 00000 n -0000602953 00000 n -0000602634 00000 n -0000599832 00000 n -0000602760 00000 n -0000602889 00000 n -0000607420 00000 n -0000606878 00000 n -0000603138 00000 n -0000607355 00000 n -0000607034 00000 n -0000607195 00000 n -0000706440 00000 n -0000611829 00000 n -0000611321 00000 n -0000607534 00000 n -0000611635 00000 n -0000611764 00000 n -0000611468 00000 n -0001134925 00000 n -0000639204 00000 n -0000614940 00000 n -0000614620 00000 n -0000611957 00000 n -0000614746 00000 n -0000614875 00000 n -0000619016 00000 n -0000618569 00000 n -0000615110 00000 n -0000618695 00000 n -0000618951 00000 n -0000623009 00000 n -0000622646 00000 n -0000619130 00000 n -0000622944 00000 n -0000622793 00000 n -0000626515 00000 n -0000626066 00000 n -0000623137 00000 n -0000626192 00000 n -0000626321 00000 n -0000631245 00000 n -0000630453 00000 n -0000626629 00000 n -0000630922 00000 n -0000630609 00000 n -0000630760 00000 n -0000631051 00000 n -0000631180 00000 n -0000635397 00000 n -0000634515 00000 n -0000631359 00000 n -0000634816 00000 n -0000634945 00000 n -0000635074 00000 n -0000634662 00000 n -0000635203 00000 n -0001135050 00000 n -0000639398 00000 n -0000638950 00000 n -0000635511 00000 n -0000639076 00000 n -0000639333 00000 n -0000642522 00000 n -0000642331 00000 n -0000639540 00000 n -0000642457 00000 n -0000644193 00000 n -0000643873 00000 n -0000642636 00000 n -0000643999 00000 n -0000645759 00000 n -0000645568 00000 n -0000644307 00000 n -0000645694 00000 n -0000647637 00000 n -0000647058 00000 n -0000645860 00000 n -0000647184 00000 n -0000647313 00000 n -0000647442 00000 n -0000647507 00000 n -0000647572 00000 n -0000651670 00000 n -0000651479 00000 n -0000647751 00000 n -0000651605 00000 n -0001135175 00000 n -0000656999 00000 n -0000654987 00000 n -0000651784 00000 n -0000656677 00000 n -0000655206 00000 n -0000656806 00000 n -0000656934 00000 n -0000655374 00000 n -0000655536 00000 n -0000655698 00000 n -0000655860 00000 n -0000656021 00000 n -0000656183 00000 n -0000656354 00000 n -0000656516 00000 n -0000925051 00000 n -0000662399 00000 n -0000660301 00000 n -0000657113 00000 n -0000662334 00000 n -0000660538 00000 n -0000660701 00000 n -0000660864 00000 n -0000661027 00000 n -0000661190 00000 n -0000661353 00000 n -0000661516 00000 n -0000661676 00000 n -0000661837 00000 n -0000662005 00000 n -0000662174 00000 n -0000668880 00000 n -0000665330 00000 n -0000662527 00000 n -0000668815 00000 n -0000665648 00000 n -0000665809 00000 n -0000665971 00000 n -0000666133 00000 n -0000666295 00000 n -0000666448 00000 n -0000666611 00000 n -0000666765 00000 n -0000666919 00000 n -0000667072 00000 n -0000667225 00000 n -0000667387 00000 n -0000667549 00000 n -0000667709 00000 n -0000667869 00000 n -0000668031 00000 n -0000668191 00000 n -0000668350 00000 n +0000393299 00000 n +0000393389 00000 n +0000541034 00000 n +0000581044 00000 n +0000399126 00000 n +0000398190 00000 n +0000394530 00000 n +0000398674 00000 n +0000398803 00000 n +0000398932 00000 n +0000398346 00000 n +0000398512 00000 n +0000399061 00000 n +0000758296 00000 n +0000403044 00000 n +0000402535 00000 n +0000399282 00000 n +0000402850 00000 n +0000402979 00000 n +0000402682 00000 n +0000404192 00000 n +0000404001 00000 n +0000403185 00000 n +0000404127 00000 n +0001145494 00000 n +0000406058 00000 n +0000405738 00000 n +0000404293 00000 n +0000405864 00000 n +0000405993 00000 n +0000409353 00000 n +0000408518 00000 n +0000406172 00000 n +0000408644 00000 n +0000408773 00000 n +0000408902 00000 n +0000409030 00000 n +0000409159 00000 n +0000409288 00000 n +0000413407 00000 n +0000412511 00000 n +0000409495 00000 n +0000412828 00000 n +0000412957 00000 n +0000413085 00000 n +0000412658 00000 n +0000413213 00000 n +0000413342 00000 n +0000417434 00000 n +0000416856 00000 n +0000413548 00000 n +0000416982 00000 n +0000417111 00000 n +0000417240 00000 n +0000417369 00000 n +0000421361 00000 n +0000420912 00000 n +0000417576 00000 n +0000421038 00000 n +0000421167 00000 n +0000421296 00000 n +0000423674 00000 n +0000423483 00000 n +0000421489 00000 n +0000423609 00000 n +0001145619 00000 n +0000426942 00000 n +0000426364 00000 n +0000423818 00000 n +0000426490 00000 n +0000961634 00000 n +0000958277 00000 n +0000961455 00000 n +0000426619 00000 n +0000426748 00000 n +0000426877 00000 n +0000431009 00000 n +0000430202 00000 n +0000427113 00000 n +0000430687 00000 n +0000430816 00000 n +0000957922 00000 n +0000955926 00000 n +0000957757 00000 n +0000430358 00000 n +0000430522 00000 n +0000430944 00000 n +0000836350 00000 n +0000852613 00000 n +0000434546 00000 n +0000433839 00000 n +0000431137 00000 n +0000433965 00000 n +0000434094 00000 n +0000434223 00000 n +0000434352 00000 n +0000434481 00000 n +0000438233 00000 n +0000436963 00000 n +0000434660 00000 n +0000437266 00000 n +0000437395 00000 n +0000437524 00000 n +0000437653 00000 n +0000437782 00000 n +0000437911 00000 n +0000438040 00000 n +0000438169 00000 n +0000437110 00000 n +0000643570 00000 n +0000441955 00000 n +0000441506 00000 n +0000438361 00000 n +0000441632 00000 n +0000441761 00000 n +0000441890 00000 n +0000444962 00000 n +0000444642 00000 n +0000442069 00000 n +0000444768 00000 n +0000444897 00000 n +0001145744 00000 n +0000447979 00000 n +0000447530 00000 n +0000445132 00000 n +0000447656 00000 n +0000447785 00000 n +0000447914 00000 n +0000450828 00000 n +0000450121 00000 n +0000448136 00000 n +0000450247 00000 n +0000450376 00000 n +0000450505 00000 n +0000450634 00000 n +0000450763 00000 n +0000453637 00000 n +0000453317 00000 n +0000450942 00000 n +0000453443 00000 n +0000453572 00000 n +0000459350 00000 n +0000456565 00000 n +0000456116 00000 n +0000453751 00000 n +0000456242 00000 n +0000456371 00000 n +0000456500 00000 n +0000460889 00000 n +0000459203 00000 n +0000456693 00000 n +0000460437 00000 n +0000460566 00000 n +0000460276 00000 n +0000460695 00000 n +0000460824 00000 n +0000754006 00000 n +0000461401 00000 n +0000461210 00000 n +0000461060 00000 n +0000461336 00000 n +0001145869 00000 n +0000464015 00000 n +0000463437 00000 n +0000461443 00000 n +0000463563 00000 n +0000463692 00000 n +0000463821 00000 n +0000463950 00000 n +0000464456 00000 n +0000464265 00000 n +0000464115 00000 n +0000464391 00000 n +0000468543 00000 n +0000467777 00000 n +0000464498 00000 n +0000468091 00000 n +0000468220 00000 n +0000468348 00000 n +0000468413 00000 n +0000468478 00000 n +0000467924 00000 n +0000473041 00000 n +0000473233 00000 n +0000472786 00000 n +0000468643 00000 n +0000472912 00000 n +0000473168 00000 n +0000477085 00000 n +0000476507 00000 n +0000473361 00000 n +0000476633 00000 n +0000476762 00000 n +0000476891 00000 n +0000477020 00000 n +0000480195 00000 n +0000479617 00000 n +0000477226 00000 n +0000479743 00000 n +0000479872 00000 n +0000480001 00000 n +0000480066 00000 n +0000480130 00000 n +0001145994 00000 n +0000483520 00000 n +0000482816 00000 n +0000480352 00000 n +0000482942 00000 n +0000483071 00000 n +0000483199 00000 n +0000483264 00000 n +0000483329 00000 n +0000483455 00000 n +0000488833 00000 n +0000488045 00000 n +0000483634 00000 n +0000488511 00000 n +0000488201 00000 n +0000488352 00000 n +0000488769 00000 n +0000936905 00000 n +0000492698 00000 n +0000491427 00000 n +0000488974 00000 n +0000492117 00000 n +0000492246 00000 n +0000492375 00000 n +0000492504 00000 n +0000491592 00000 n +0000491744 00000 n +0000491930 00000 n +0000492633 00000 n +0000496845 00000 n +0000496396 00000 n +0000492826 00000 n +0000496522 00000 n +0000496651 00000 n +0000496780 00000 n +0000500751 00000 n +0000500372 00000 n +0000496973 00000 n +0000500686 00000 n +0000500519 00000 n +0000503601 00000 n +0000503796 00000 n +0000503346 00000 n +0000500865 00000 n +0000503472 00000 n +0000503666 00000 n +0000503731 00000 n +0001146119 00000 n +0000506600 00000 n +0000506409 00000 n +0000503910 00000 n +0000506535 00000 n +0000510200 00000 n +0000509751 00000 n +0000506714 00000 n +0000509877 00000 n +0000510006 00000 n +0000510071 00000 n +0000510135 00000 n +0000513158 00000 n +0000512839 00000 n +0000510314 00000 n +0000512965 00000 n +0000513093 00000 n +0000516401 00000 n +0000515361 00000 n +0000513272 00000 n +0000515822 00000 n +0000515951 00000 n +0000515517 00000 n +0000515671 00000 n +0000516079 00000 n +0000516207 00000 n +0000516336 00000 n +0000517922 00000 n +0000517731 00000 n +0000516515 00000 n +0000517857 00000 n +0000519482 00000 n +0000519291 00000 n +0000518023 00000 n +0000519417 00000 n +0001146244 00000 n +0000521332 00000 n +0000521012 00000 n +0000519583 00000 n +0000521138 00000 n +0000524826 00000 n +0000524635 00000 n +0000521446 00000 n +0000524761 00000 n +0000529212 00000 n +0000528843 00000 n +0000524954 00000 n +0000529147 00000 n +0000528990 00000 n +0000721314 00000 n +0000533277 00000 n +0000532895 00000 n +0000529354 00000 n +0000533212 00000 n +0000533042 00000 n +0000537480 00000 n +0000537115 00000 n +0000533405 00000 n +0000537415 00000 n +0000537262 00000 n +0000541228 00000 n +0000540779 00000 n +0000537622 00000 n +0000540905 00000 n +0000541099 00000 n +0000541163 00000 n +0001146369 00000 n +0000545529 00000 n +0000545163 00000 n +0000541356 00000 n +0000545464 00000 n +0000545310 00000 n +0000550613 00000 n +0000549480 00000 n +0000545657 00000 n +0000550548 00000 n +0000549663 00000 n +0000549819 00000 n +0000550004 00000 n +0000550178 00000 n +0000550363 00000 n +0000635057 00000 n +0000554889 00000 n +0000554698 00000 n +0000550811 00000 n +0000554824 00000 n +0000558842 00000 n +0000558651 00000 n +0000555003 00000 n +0000558777 00000 n +0000562696 00000 n +0000562376 00000 n +0000558956 00000 n +0000562502 00000 n +0000562631 00000 n +0000566460 00000 n +0000565644 00000 n +0000562810 00000 n +0000566137 00000 n +0000565800 00000 n +0000566266 00000 n +0000566395 00000 n +0000565970 00000 n +0001146494 00000 n +0000649854 00000 n +0000570731 00000 n +0000570040 00000 n +0000566617 00000 n +0000570537 00000 n +0000570196 00000 n +0000570366 00000 n +0000570666 00000 n +0000741381 00000 n +0000574144 00000 n +0000573824 00000 n +0000570859 00000 n +0000573950 00000 n +0000574079 00000 n +0000577093 00000 n +0000576902 00000 n +0000574258 00000 n +0000577028 00000 n +0000581109 00000 n +0000580789 00000 n +0000577264 00000 n +0000580915 00000 n +0000584447 00000 n +0000584256 00000 n +0000581223 00000 n +0000584382 00000 n +0000588744 00000 n +0000587930 00000 n +0000584618 00000 n +0000588421 00000 n +0000588550 00000 n +0000588086 00000 n +0000588679 00000 n +0000588247 00000 n +0001146619 00000 n +0000592936 00000 n +0000592311 00000 n +0000588901 00000 n +0000592613 00000 n +0000592742 00000 n +0000592458 00000 n +0000592871 00000 n +0000595966 00000 n +0000595646 00000 n +0000593064 00000 n +0000595772 00000 n +0000595901 00000 n +0000599903 00000 n +0000599236 00000 n +0000596137 00000 n +0000599710 00000 n +0000599839 00000 n +0000599392 00000 n +0000599554 00000 n +0000603454 00000 n +0000602685 00000 n +0000600017 00000 n +0000603002 00000 n +0000602832 00000 n +0000603196 00000 n +0000603261 00000 n +0000603389 00000 n +0000607429 00000 n +0000607055 00000 n +0000603639 00000 n +0000607364 00000 n +0000607202 00000 n +0000612282 00000 n +0000611605 00000 n +0000607600 00000 n +0000612089 00000 n +0000611761 00000 n +0000612218 00000 n +0000611924 00000 n +0001146744 00000 n +0000717550 00000 n +0000647845 00000 n +0000615629 00000 n +0000615309 00000 n +0000612410 00000 n +0000615435 00000 n +0000615564 00000 n +0000619390 00000 n +0000619070 00000 n +0000615756 00000 n +0000619196 00000 n +0000623718 00000 n +0000623226 00000 n +0000619547 00000 n +0000623524 00000 n +0000623653 00000 n +0000623373 00000 n +0000628014 00000 n +0000627694 00000 n +0000623846 00000 n +0000627820 00000 n +0000627949 00000 n +0000630508 00000 n +0000630188 00000 n +0000628155 00000 n +0000630314 00000 n +0000630443 00000 n +0000635122 00000 n +0000634631 00000 n +0000630622 00000 n +0000634928 00000 n +0000634778 00000 n +0001146869 00000 n +0000639476 00000 n +0000638426 00000 n +0000635236 00000 n +0000638896 00000 n +0000638582 00000 n +0000639025 00000 n +0000639154 00000 n +0000639283 00000 n +0000639412 00000 n +0000638744 00000 n +0000643635 00000 n +0000643186 00000 n +0000639590 00000 n +0000643312 00000 n +0000643441 00000 n +0000648038 00000 n +0000647590 00000 n +0000643763 00000 n +0000647716 00000 n +0000647973 00000 n +0000649919 00000 n +0000649599 00000 n +0000648180 00000 n +0000649725 00000 n +0000651456 00000 n +0000651265 00000 n +0000650033 00000 n +0000651391 00000 n +0000652915 00000 n +0000652724 00000 n +0000651557 00000 n +0000652850 00000 n +0001146994 00000 n +0000655669 00000 n +0000655090 00000 n +0000653016 00000 n +0000655216 00000 n +0000655345 00000 n +0000655474 00000 n +0000655539 00000 n +0000655604 00000 n +0000659334 00000 n +0000659143 00000 n +0000655783 00000 n +0000659269 00000 n +0000664590 00000 n +0000662747 00000 n +0000659448 00000 n +0000664267 00000 n +0000662957 00000 n +0000664396 00000 n +0000664525 00000 n +0000663125 00000 n +0000663287 00000 n +0000663449 00000 n +0000663611 00000 n +0000663773 00000 n +0000663935 00000 n +0000664106 00000 n +0000936872 00000 n +0000669869 00000 n +0000667949 00000 n +0000664704 00000 n +0000669804 00000 n +0000668177 00000 n +0000668340 00000 n 0000668503 00000 n 0000668666 00000 n -0000673764 00000 n -0000672581 00000 n -0000668994 00000 n -0000673570 00000 n -0000672764 00000 n -0000672929 00000 n -0000673095 00000 n -0000673258 00000 n -0000673411 00000 n -0000677607 00000 n -0000677288 00000 n -0000673892 00000 n -0000677414 00000 n -0000677479 00000 n -0000677542 00000 n -0000681848 00000 n -0000680651 00000 n -0000677792 00000 n -0000681138 00000 n -0000681267 00000 n -0000681525 00000 n -0000680807 00000 n -0000680977 00000 n -0000681590 00000 n -0000681655 00000 n -0000681720 00000 n -0000681784 00000 n -0001135300 00000 n -0000685198 00000 n -0000685007 00000 n -0000682033 00000 n -0000685133 00000 n -0000688937 00000 n -0000688616 00000 n -0000685285 00000 n -0000688742 00000 n -0000688807 00000 n -0000688872 00000 n -0000692773 00000 n -0000692066 00000 n -0000689052 00000 n -0000692192 00000 n -0000692321 00000 n -0000692384 00000 n -0000692449 00000 n -0000692514 00000 n -0000692579 00000 n -0000692708 00000 n -0000696530 00000 n -0000695692 00000 n -0000692887 00000 n -0000695818 00000 n -0000695883 00000 n -0000695948 00000 n -0000696077 00000 n -0000696142 00000 n -0000696207 00000 n -0000696336 00000 n -0000696401 00000 n -0000696465 00000 n -0000699877 00000 n -0000699170 00000 n -0000696658 00000 n -0000699296 00000 n -0000699425 00000 n -0000699554 00000 n -0000699683 00000 n -0000699812 00000 n -0000702331 00000 n -0000701753 00000 n -0000700076 00000 n -0000701879 00000 n -0000702008 00000 n -0000702136 00000 n -0000702201 00000 n -0000702266 00000 n -0001135425 00000 n -0000706634 00000 n -0000706185 00000 n -0000702459 00000 n -0000706311 00000 n -0000706569 00000 n -0000710084 00000 n -0000709453 00000 n -0000706761 00000 n -0000709760 00000 n -0000709825 00000 n -0000709890 00000 n -0000709600 00000 n -0000713721 00000 n -0000713142 00000 n -0000710198 00000 n -0000713268 00000 n -0000713397 00000 n -0000713526 00000 n -0000713591 00000 n -0000713656 00000 n -0000717327 00000 n -0000716432 00000 n -0000713835 00000 n -0000716744 00000 n -0000716579 00000 n -0000716873 00000 n -0000716938 00000 n -0000717003 00000 n -0000717132 00000 n -0000717197 00000 n -0000717262 00000 n -0000925018 00000 n -0000721488 00000 n -0000721038 00000 n -0000717441 00000 n -0000721164 00000 n -0000721293 00000 n -0000721358 00000 n -0000721423 00000 n -0000723368 00000 n -0000723048 00000 n -0000721616 00000 n -0000723174 00000 n -0000943824 00000 n -0000936540 00000 n -0000943644 00000 n -0000723303 00000 n -0001135550 00000 n -0000725277 00000 n -0000724828 00000 n -0000723510 00000 n -0000724954 00000 n -0000725083 00000 n -0000725212 00000 n -0000729699 00000 n -0000728756 00000 n -0000725391 00000 n -0000729119 00000 n -0000936219 00000 n -0000927006 00000 n -0000936033 00000 n -0000728903 00000 n -0000729248 00000 n -0000729376 00000 n -0000729505 00000 n -0000731058 00000 n -0000730867 00000 n -0000729940 00000 n -0000730993 00000 n -0000731499 00000 n -0000731308 00000 n -0000731158 00000 n -0000731434 00000 n -0000734813 00000 n -0000733587 00000 n -0000731541 00000 n -0000734104 00000 n -0000734233 00000 n -0000734362 00000 n -0000734491 00000 n -0000734620 00000 n -0000734749 00000 n -0000733743 00000 n -0000733915 00000 n -0000735268 00000 n -0000735077 00000 n -0000734927 00000 n -0000735203 00000 n -0001135675 00000 n -0000738513 00000 n -0000737935 00000 n -0000735310 00000 n -0000738061 00000 n -0000738190 00000 n -0000738319 00000 n -0000738448 00000 n -0000742710 00000 n -0000741491 00000 n -0000738599 00000 n -0000742001 00000 n -0000742130 00000 n -0000742388 00000 n -0000741647 00000 n -0000741826 00000 n -0000742582 00000 n -0000742646 00000 n -0000749600 00000 n -0000745772 00000 n -0000742866 00000 n -0000745898 00000 n -0000745963 00000 n -0000746028 00000 n -0000746093 00000 n -0000746158 00000 n -0000746223 00000 n -0000746288 00000 n -0000746353 00000 n -0000746418 00000 n -0000746483 00000 n -0000746613 00000 n -0000746678 00000 n -0000746743 00000 n -0000746808 00000 n -0000746873 00000 n -0000746938 00000 n -0000747003 00000 n -0000747068 00000 n -0000747133 00000 n -0000747198 00000 n -0000747263 00000 n -0000747328 00000 n -0000747393 00000 n -0000747458 00000 n -0000747523 00000 n -0000747588 00000 n -0000747653 00000 n -0000747718 00000 n -0000747783 00000 n -0000747848 00000 n -0000747913 00000 n -0000747978 00000 n -0000748043 00000 n -0000748108 00000 n -0000748172 00000 n -0000748237 00000 n -0000748302 00000 n -0000748367 00000 n -0000748432 00000 n -0000748497 00000 n -0000748562 00000 n -0000748627 00000 n -0000748692 00000 n -0000748757 00000 n -0000748822 00000 n -0000748887 00000 n -0000748952 00000 n -0000749017 00000 n -0000749082 00000 n -0000749147 00000 n -0000749212 00000 n -0000749277 00000 n -0000749342 00000 n -0000749407 00000 n -0000749472 00000 n -0000749536 00000 n -0000756248 00000 n -0000752684 00000 n -0000749714 00000 n -0000752810 00000 n -0000752875 00000 n -0000752940 00000 n -0000753005 00000 n -0000753070 00000 n -0000753135 00000 n -0000753200 00000 n -0000753265 00000 n -0000753330 00000 n -0000753395 00000 n -0000753460 00000 n -0000753525 00000 n -0000753589 00000 n -0000753654 00000 n -0000753719 00000 n -0000753784 00000 n -0000753849 00000 n -0000753914 00000 n -0000753979 00000 n -0000754044 00000 n -0000754109 00000 n -0000754174 00000 n -0000754239 00000 n -0000754304 00000 n -0000754368 00000 n -0000754433 00000 n -0000754498 00000 n -0000754563 00000 n -0000754628 00000 n -0000754693 00000 n -0000754758 00000 n -0000754823 00000 n -0000754888 00000 n -0000754953 00000 n -0000755018 00000 n -0000755083 00000 n -0000755148 00000 n -0000755213 00000 n -0000755278 00000 n -0000755343 00000 n -0000755407 00000 n -0000755471 00000 n -0000755535 00000 n -0000755600 00000 n -0000755665 00000 n -0000755730 00000 n -0000755795 00000 n -0000755860 00000 n -0000755925 00000 n -0000755990 00000 n -0000756055 00000 n -0000756120 00000 n -0000756184 00000 n -0000762423 00000 n -0000758985 00000 n -0000756362 00000 n -0000759111 00000 n -0000759176 00000 n -0000759241 00000 n -0000759306 00000 n -0000759371 00000 n -0000759436 00000 n -0000759501 00000 n -0000759566 00000 n -0000759631 00000 n -0000759696 00000 n -0000759761 00000 n -0000759826 00000 n -0000759891 00000 n -0000759956 00000 n -0000760021 00000 n -0000760086 00000 n -0000760151 00000 n -0000760216 00000 n -0000760281 00000 n -0000760346 00000 n -0000760411 00000 n -0000760476 00000 n -0000760541 00000 n -0000760606 00000 n -0000760671 00000 n -0000760736 00000 n -0000760801 00000 n -0000760866 00000 n -0000760931 00000 n -0000760996 00000 n -0000761061 00000 n -0000761126 00000 n -0000761191 00000 n -0000761256 00000 n -0000761320 00000 n -0000761385 00000 n -0000761450 00000 n -0000761515 00000 n -0000761580 00000 n -0000761645 00000 n -0000761710 00000 n -0000761775 00000 n -0000761840 00000 n -0000761905 00000 n -0000761970 00000 n -0000762035 00000 n -0000762100 00000 n -0000762165 00000 n -0000762230 00000 n -0000762295 00000 n -0000762359 00000 n -0000767942 00000 n -0000765546 00000 n -0000762537 00000 n -0000765672 00000 n -0000765737 00000 n -0000765802 00000 n -0000765867 00000 n -0000765932 00000 n -0000765997 00000 n -0000766062 00000 n -0000766127 00000 n -0000766192 00000 n -0000766257 00000 n -0000766322 00000 n -0000766387 00000 n -0000766452 00000 n -0000766516 00000 n -0000766581 00000 n -0000766646 00000 n -0000766711 00000 n -0000766776 00000 n -0000766841 00000 n -0000766906 00000 n -0000766971 00000 n -0000767036 00000 n -0000767101 00000 n -0000767166 00000 n -0000767231 00000 n -0000767359 00000 n -0000767488 00000 n -0000767553 00000 n -0000767618 00000 n -0000767683 00000 n -0000767748 00000 n -0000767877 00000 n -0001135800 00000 n -0000771151 00000 n -0000770444 00000 n -0000768069 00000 n -0000770570 00000 n -0000770699 00000 n -0000770828 00000 n -0000770957 00000 n -0000771086 00000 n -0000774643 00000 n -0000773886 00000 n -0000771278 00000 n -0000774193 00000 n -0000774322 00000 n -0000774033 00000 n -0000774450 00000 n -0000774578 00000 n -0000777886 00000 n -0000777308 00000 n -0000774770 00000 n -0000777434 00000 n -0000777563 00000 n -0000777692 00000 n -0000777821 00000 n -0000780793 00000 n -0000780473 00000 n -0000778000 00000 n -0000780599 00000 n -0000780728 00000 n -0000783383 00000 n -0000782934 00000 n -0000780963 00000 n -0000783060 00000 n -0000783189 00000 n -0000783318 00000 n -0000783824 00000 n -0000783633 00000 n -0000783483 00000 n -0000783759 00000 n -0001135925 00000 n -0000786536 00000 n -0000785892 00000 n -0000783866 00000 n -0000786018 00000 n -0000786147 00000 n -0000786276 00000 n -0000786341 00000 n -0000786406 00000 n -0000786471 00000 n -0000790876 00000 n -0000790556 00000 n -0000786650 00000 n -0000790682 00000 n -0000790747 00000 n -0000790812 00000 n -0000794479 00000 n -0000794224 00000 n -0000791032 00000 n -0000794350 00000 n -0000794415 00000 n -0000797730 00000 n -0000797539 00000 n -0000794621 00000 n -0000797665 00000 n -0000801450 00000 n -0000801194 00000 n -0000797858 00000 n -0000801320 00000 n -0000801385 00000 n -0000804433 00000 n -0000803725 00000 n -0000801592 00000 n -0000803851 00000 n -0000803916 00000 n -0000803981 00000 n -0000804046 00000 n -0000804111 00000 n -0000804240 00000 n -0000804305 00000 n -0000804369 00000 n -0001136050 00000 n -0000809102 00000 n -0000808846 00000 n -0000804575 00000 n -0000808972 00000 n -0000809037 00000 n -0000812101 00000 n -0000811328 00000 n -0000809230 00000 n -0000811454 00000 n -0000811519 00000 n -0000811584 00000 n -0000811649 00000 n -0000811778 00000 n -0000811843 00000 n -0000811906 00000 n -0000811971 00000 n -0000812036 00000 n -0000815014 00000 n -0000814499 00000 n -0000812257 00000 n -0000814625 00000 n -0000814690 00000 n -0000814755 00000 n -0000814820 00000 n -0000814885 00000 n -0000814950 00000 n -0000818362 00000 n -0000817782 00000 n -0000815170 00000 n -0000817908 00000 n -0000818037 00000 n -0000818102 00000 n -0000818167 00000 n -0000818232 00000 n -0000818297 00000 n -0000821814 00000 n -0000821558 00000 n -0000818504 00000 n -0000821684 00000 n -0000821749 00000 n -0000824765 00000 n -0000824121 00000 n -0000821942 00000 n -0000824247 00000 n -0000824312 00000 n -0000824377 00000 n -0000824442 00000 n -0000824636 00000 n -0000824701 00000 n -0001136175 00000 n -0000828537 00000 n -0000828217 00000 n -0000824934 00000 n -0000828343 00000 n -0000828408 00000 n -0000828473 00000 n -0000832122 00000 n -0000831931 00000 n -0000828665 00000 n -0000832057 00000 n -0000835630 00000 n -0000835310 00000 n -0000832250 00000 n -0000835436 00000 n -0000835501 00000 n -0000835565 00000 n -0000838333 00000 n -0000837560 00000 n -0000835771 00000 n -0000837686 00000 n -0000837751 00000 n -0000837815 00000 n -0000837880 00000 n -0000838009 00000 n -0000838074 00000 n -0000838139 00000 n -0000838203 00000 n -0000838268 00000 n -0000841471 00000 n -0000840761 00000 n -0000838503 00000 n -0000840887 00000 n -0000840952 00000 n -0000841017 00000 n -0000841211 00000 n -0000841276 00000 n -0000841341 00000 n -0000841406 00000 n -0000844810 00000 n -0000844554 00000 n -0000841627 00000 n -0000844680 00000 n -0000844745 00000 n -0001136300 00000 n -0000848039 00000 n -0000847264 00000 n -0000844924 00000 n -0000847390 00000 n -0000847455 00000 n -0000847520 00000 n -0000847585 00000 n -0000847714 00000 n -0000847779 00000 n -0000847844 00000 n -0000847909 00000 n -0000847974 00000 n -0000851940 00000 n -0000851749 00000 n -0000848195 00000 n -0000851875 00000 n -0000855364 00000 n -0000855173 00000 n -0000852068 00000 n -0000855299 00000 n -0000858993 00000 n -0000858737 00000 n -0000855492 00000 n -0000858863 00000 n -0000858928 00000 n -0000861807 00000 n -0000861097 00000 n -0000859149 00000 n -0000861223 00000 n -0000861288 00000 n -0000861353 00000 n -0000861482 00000 n -0000861547 00000 n -0000861612 00000 n -0000861677 00000 n -0000861742 00000 n -0000864545 00000 n -0000863839 00000 n -0000861963 00000 n -0000863965 00000 n -0000864030 00000 n -0000864095 00000 n -0000864160 00000 n -0000864287 00000 n -0000864352 00000 n -0000864415 00000 n -0000864480 00000 n -0001136425 00000 n -0000867779 00000 n -0000867524 00000 n -0000864687 00000 n -0000867650 00000 n -0000867715 00000 n -0000870919 00000 n -0000870534 00000 n -0000867893 00000 n -0000870660 00000 n -0000870725 00000 n -0000870790 00000 n -0000870855 00000 n -0000874411 00000 n -0000873831 00000 n -0000871061 00000 n -0000873957 00000 n -0000874086 00000 n -0000874151 00000 n -0000874216 00000 n -0000874281 00000 n -0000874346 00000 n -0000877480 00000 n -0000877289 00000 n -0000874553 00000 n -0000877415 00000 n -0000880240 00000 n -0000879727 00000 n -0000877693 00000 n -0000879853 00000 n -0000879918 00000 n -0000879982 00000 n -0000880047 00000 n -0000880112 00000 n -0000880177 00000 n -0000882942 00000 n -0000882039 00000 n -0000880453 00000 n -0000882165 00000 n -0000882294 00000 n -0000882359 00000 n -0000882424 00000 n -0000882489 00000 n -0000882553 00000 n -0000882618 00000 n -0000882747 00000 n -0000882812 00000 n -0000882877 00000 n -0001136550 00000 n -0000887439 00000 n -0000887183 00000 n -0000883084 00000 n -0000887309 00000 n -0000887374 00000 n -0000891222 00000 n -0000890966 00000 n -0000887567 00000 n -0000891092 00000 n -0000891157 00000 n -0000894458 00000 n -0000894202 00000 n -0000891350 00000 n -0000894328 00000 n -0000894393 00000 n -0000897301 00000 n -0000896657 00000 n -0000894586 00000 n -0000896783 00000 n -0000896848 00000 n -0000896913 00000 n -0000896978 00000 n -0000897107 00000 n -0000897172 00000 n -0000897237 00000 n -0000901091 00000 n -0000900706 00000 n -0000897470 00000 n -0000900832 00000 n -0000900897 00000 n -0000900961 00000 n -0000901026 00000 n -0000904685 00000 n -0000904040 00000 n -0000901233 00000 n -0000904166 00000 n -0000904231 00000 n -0000904296 00000 n -0000904425 00000 n -0000904490 00000 n -0000904555 00000 n -0000904620 00000 n -0001136675 00000 n -0000906961 00000 n -0000906705 00000 n -0000904841 00000 n -0000906831 00000 n -0000906896 00000 n -0000910446 00000 n -0000909672 00000 n -0000907103 00000 n -0000909798 00000 n -0000909863 00000 n -0000909928 00000 n -0000909993 00000 n -0000910121 00000 n -0000910186 00000 n -0000910251 00000 n -0000910316 00000 n -0000910381 00000 n -0000913520 00000 n -0000912941 00000 n -0000910602 00000 n -0000913067 00000 n -0000913132 00000 n -0000913197 00000 n -0000913262 00000 n -0000913391 00000 n -0000913456 00000 n -0000917345 00000 n -0000916897 00000 n -0000913676 00000 n -0000917023 00000 n -0000917088 00000 n -0000917153 00000 n -0000917218 00000 n -0000917282 00000 n -0000919583 00000 n -0000918553 00000 n -0000917501 00000 n -0000918679 00000 n -0000918744 00000 n -0000918873 00000 n -0000918938 00000 n -0000919003 00000 n -0000919067 00000 n -0000919132 00000 n -0000919197 00000 n -0000919326 00000 n -0000919391 00000 n -0000919456 00000 n -0000919521 00000 n -0000922598 00000 n -0000921825 00000 n -0000919725 00000 n -0000921951 00000 n -0000922016 00000 n -0000922081 00000 n -0000922146 00000 n -0000922275 00000 n -0000922339 00000 n -0000922404 00000 n -0000922469 00000 n -0000922533 00000 n -0001136800 00000 n -0000924876 00000 n -0000924037 00000 n -0000922740 00000 n -0000924163 00000 n -0000924228 00000 n -0000924293 00000 n -0000924421 00000 n -0000924486 00000 n -0000924551 00000 n -0000924616 00000 n -0000924681 00000 n -0000924746 00000 n -0000924811 00000 n -0000925117 00000 n -0000936461 00000 n -0000944050 00000 n -0000946350 00000 n -0000946319 00000 n -0000950036 00000 n -0000959476 00000 n -0000970211 00000 n -0000981906 00000 n -0000994623 00000 n -0001013857 00000 n -0001034753 00000 n -0001056901 00000 n -0001075157 00000 n -0001078003 00000 n -0001077773 00000 n -0001105421 00000 n -0001132687 00000 n -0001136889 00000 n -0001137014 00000 n -0001137140 00000 n -0001137266 00000 n -0001137392 00000 n -0001137518 00000 n -0001137619 00000 n -0001159242 00000 n -0001183132 00000 n -0001183173 00000 n -0001183213 00000 n -0001183347 00000 n +0000668828 00000 n +0000668991 00000 n +0000669153 00000 n +0000669316 00000 n +0000669475 00000 n +0000669636 00000 n +0000674490 00000 n +0000672918 00000 n +0000669997 00000 n +0000674425 00000 n +0000673128 00000 n +0000673297 00000 n +0000673459 00000 n +0000673621 00000 n +0000673783 00000 n +0000673945 00000 n +0000674108 00000 n +0000674262 00000 n +0000680794 00000 n +0000677903 00000 n +0000674618 00000 n +0000680729 00000 n +0000678185 00000 n +0000678337 00000 n +0000678491 00000 n +0000678642 00000 n +0000678796 00000 n +0000678958 00000 n +0000679120 00000 n +0000679281 00000 n +0000679443 00000 n +0000679605 00000 n +0000679767 00000 n +0000679929 00000 n +0000680082 00000 n +0000680245 00000 n +0000680400 00000 n +0000680564 00000 n +0001147119 00000 n +0000685219 00000 n +0000684381 00000 n +0000680922 00000 n +0000685025 00000 n +0000684546 00000 n +0000684709 00000 n +0000684863 00000 n +0000688373 00000 n +0000688053 00000 n +0000685361 00000 n +0000688179 00000 n +0000688244 00000 n +0000688308 00000 n +0000692589 00000 n +0000691519 00000 n +0000688544 00000 n +0000692007 00000 n +0000692136 00000 n +0000692394 00000 n +0000691675 00000 n +0000691845 00000 n +0000692459 00000 n +0000692524 00000 n +0000696040 00000 n +0000695720 00000 n +0000692717 00000 n +0000695846 00000 n +0000695911 00000 n +0000695975 00000 n +0000699529 00000 n +0000699208 00000 n +0000696141 00000 n +0000699334 00000 n +0000699399 00000 n +0000699464 00000 n +0000703450 00000 n +0000702741 00000 n +0000699644 00000 n +0000702867 00000 n +0000702996 00000 n +0000703061 00000 n +0000703126 00000 n +0000703191 00000 n +0000703256 00000 n +0000703385 00000 n +0001147244 00000 n +0000707691 00000 n +0000706854 00000 n +0000703564 00000 n +0000706980 00000 n +0000707045 00000 n +0000707110 00000 n +0000707239 00000 n +0000707304 00000 n +0000707369 00000 n +0000707498 00000 n +0000707563 00000 n +0000707627 00000 n +0000710718 00000 n +0000710016 00000 n +0000707819 00000 n +0000710142 00000 n +0000710269 00000 n +0000710396 00000 n +0000710525 00000 n +0000710653 00000 n +0000713428 00000 n +0000712851 00000 n +0000710917 00000 n +0000712977 00000 n +0000713106 00000 n +0000713235 00000 n +0000713300 00000 n +0000713364 00000 n +0000717615 00000 n +0000717295 00000 n +0000713613 00000 n +0000717421 00000 n +0000721379 00000 n +0000720619 00000 n +0000717742 00000 n +0000720926 00000 n +0000721055 00000 n +0000721120 00000 n +0000721185 00000 n +0000720766 00000 n +0000725070 00000 n +0000724491 00000 n +0000721493 00000 n +0000724617 00000 n +0000724746 00000 n +0000724875 00000 n +0000724940 00000 n +0000725005 00000 n +0001147369 00000 n +0000728684 00000 n +0000727789 00000 n +0000725184 00000 n +0000728101 00000 n +0000727936 00000 n +0000728230 00000 n +0000728295 00000 n +0000728360 00000 n +0000728489 00000 n +0000728554 00000 n +0000728619 00000 n +0000936839 00000 n +0000732841 00000 n +0000732391 00000 n +0000728798 00000 n +0000732517 00000 n +0000732646 00000 n +0000732711 00000 n +0000732776 00000 n +0000734732 00000 n +0000734412 00000 n +0000732969 00000 n +0000734538 00000 n +0000955645 00000 n +0000948361 00000 n +0000955465 00000 n +0000734667 00000 n +0000735215 00000 n +0000735024 00000 n +0000734874 00000 n +0000735150 00000 n +0000737025 00000 n +0000736576 00000 n +0000735257 00000 n +0000736702 00000 n +0000736831 00000 n +0000736960 00000 n +0000741446 00000 n +0000740503 00000 n +0000737139 00000 n +0000740866 00000 n +0000948040 00000 n +0000938827 00000 n +0000947854 00000 n +0000740650 00000 n +0000740995 00000 n +0000741123 00000 n +0000741252 00000 n +0001147494 00000 n +0000742805 00000 n +0000742614 00000 n +0000741687 00000 n +0000742740 00000 n +0000743246 00000 n +0000743055 00000 n +0000742905 00000 n +0000743181 00000 n +0000746560 00000 n +0000745334 00000 n +0000743288 00000 n +0000745851 00000 n +0000745980 00000 n +0000746109 00000 n +0000746238 00000 n +0000746367 00000 n +0000746496 00000 n +0000745490 00000 n +0000745662 00000 n +0000747015 00000 n +0000746824 00000 n +0000746674 00000 n +0000746950 00000 n +0000750260 00000 n +0000749682 00000 n +0000747057 00000 n +0000749808 00000 n +0000749937 00000 n +0000750066 00000 n +0000750195 00000 n +0000754457 00000 n +0000753238 00000 n +0000750346 00000 n +0000753748 00000 n +0000753877 00000 n +0000754135 00000 n +0000753394 00000 n +0000753573 00000 n +0000754329 00000 n +0000754393 00000 n +0001147619 00000 n +0000761348 00000 n +0000757520 00000 n +0000754613 00000 n +0000757646 00000 n +0000757711 00000 n +0000757776 00000 n +0000757841 00000 n +0000757906 00000 n +0000757971 00000 n +0000758036 00000 n +0000758101 00000 n +0000758166 00000 n +0000758231 00000 n +0000758361 00000 n +0000758426 00000 n +0000758491 00000 n +0000758556 00000 n +0000758621 00000 n +0000758686 00000 n +0000758751 00000 n +0000758816 00000 n +0000758881 00000 n +0000758946 00000 n +0000759011 00000 n +0000759076 00000 n +0000759141 00000 n +0000759206 00000 n +0000759271 00000 n +0000759336 00000 n +0000759401 00000 n +0000759466 00000 n +0000759531 00000 n +0000759596 00000 n +0000759661 00000 n +0000759726 00000 n +0000759791 00000 n +0000759856 00000 n +0000759920 00000 n +0000759985 00000 n +0000760050 00000 n +0000760115 00000 n +0000760180 00000 n +0000760245 00000 n +0000760310 00000 n +0000760375 00000 n +0000760440 00000 n +0000760505 00000 n +0000760570 00000 n +0000760635 00000 n +0000760700 00000 n +0000760765 00000 n +0000760830 00000 n +0000760895 00000 n +0000760960 00000 n +0000761025 00000 n +0000761090 00000 n +0000761155 00000 n +0000761220 00000 n +0000761284 00000 n +0000767996 00000 n +0000764432 00000 n +0000761462 00000 n +0000764558 00000 n +0000764623 00000 n +0000764688 00000 n +0000764753 00000 n +0000764818 00000 n +0000764883 00000 n +0000764948 00000 n +0000765013 00000 n +0000765078 00000 n +0000765143 00000 n +0000765208 00000 n +0000765273 00000 n +0000765337 00000 n +0000765402 00000 n +0000765467 00000 n +0000765532 00000 n +0000765597 00000 n +0000765662 00000 n +0000765727 00000 n +0000765792 00000 n +0000765857 00000 n +0000765922 00000 n +0000765987 00000 n +0000766052 00000 n +0000766116 00000 n +0000766181 00000 n +0000766246 00000 n +0000766311 00000 n +0000766376 00000 n +0000766441 00000 n +0000766506 00000 n +0000766571 00000 n +0000766636 00000 n +0000766701 00000 n +0000766766 00000 n +0000766831 00000 n +0000766896 00000 n +0000766961 00000 n +0000767026 00000 n +0000767091 00000 n +0000767155 00000 n +0000767219 00000 n +0000767283 00000 n +0000767348 00000 n +0000767413 00000 n +0000767478 00000 n +0000767543 00000 n +0000767608 00000 n +0000767673 00000 n +0000767738 00000 n +0000767803 00000 n +0000767868 00000 n +0000767932 00000 n +0000774171 00000 n +0000770733 00000 n +0000768110 00000 n +0000770859 00000 n +0000770924 00000 n +0000770989 00000 n +0000771054 00000 n +0000771119 00000 n +0000771184 00000 n +0000771249 00000 n +0000771314 00000 n +0000771379 00000 n +0000771444 00000 n +0000771509 00000 n +0000771574 00000 n +0000771639 00000 n +0000771704 00000 n +0000771769 00000 n +0000771834 00000 n +0000771899 00000 n +0000771964 00000 n +0000772029 00000 n +0000772094 00000 n +0000772159 00000 n +0000772224 00000 n +0000772289 00000 n +0000772354 00000 n +0000772419 00000 n +0000772484 00000 n +0000772549 00000 n +0000772614 00000 n +0000772679 00000 n +0000772744 00000 n +0000772809 00000 n +0000772874 00000 n +0000772939 00000 n +0000773004 00000 n +0000773068 00000 n +0000773133 00000 n +0000773198 00000 n +0000773263 00000 n +0000773328 00000 n +0000773393 00000 n +0000773458 00000 n +0000773523 00000 n +0000773588 00000 n +0000773653 00000 n +0000773718 00000 n +0000773783 00000 n +0000773848 00000 n +0000773913 00000 n +0000773978 00000 n +0000774043 00000 n +0000774107 00000 n +0000779690 00000 n +0000777294 00000 n +0000774285 00000 n +0000777420 00000 n +0000777485 00000 n +0000777550 00000 n +0000777615 00000 n +0000777680 00000 n +0000777745 00000 n +0000777810 00000 n +0000777875 00000 n +0000777940 00000 n +0000778005 00000 n +0000778070 00000 n +0000778135 00000 n +0000778200 00000 n +0000778264 00000 n +0000778329 00000 n +0000778394 00000 n +0000778459 00000 n +0000778524 00000 n +0000778589 00000 n +0000778654 00000 n +0000778719 00000 n +0000778784 00000 n +0000778849 00000 n +0000778914 00000 n +0000778979 00000 n +0000779107 00000 n +0000779236 00000 n +0000779301 00000 n +0000779366 00000 n +0000779431 00000 n +0000779496 00000 n +0000779625 00000 n +0000782899 00000 n +0000782192 00000 n +0000779817 00000 n +0000782318 00000 n +0000782447 00000 n +0000782576 00000 n +0000782705 00000 n +0000782834 00000 n +0000786391 00000 n +0000785634 00000 n +0000783026 00000 n +0000785941 00000 n +0000786070 00000 n +0000785781 00000 n +0000786198 00000 n +0000786326 00000 n +0001147744 00000 n +0000789635 00000 n +0000789057 00000 n +0000786518 00000 n +0000789183 00000 n +0000789312 00000 n +0000789441 00000 n +0000789570 00000 n +0000792543 00000 n +0000792223 00000 n +0000789749 00000 n +0000792349 00000 n +0000792478 00000 n +0000795133 00000 n +0000794684 00000 n +0000792713 00000 n +0000794810 00000 n +0000794939 00000 n +0000795068 00000 n +0000795574 00000 n +0000795383 00000 n +0000795233 00000 n +0000795509 00000 n +0000798286 00000 n +0000797642 00000 n +0000795616 00000 n +0000797768 00000 n +0000797897 00000 n +0000798026 00000 n +0000798091 00000 n +0000798156 00000 n +0000798221 00000 n +0000802626 00000 n +0000802306 00000 n +0000798400 00000 n +0000802432 00000 n +0000802497 00000 n +0000802562 00000 n +0001147869 00000 n +0000806229 00000 n +0000805974 00000 n +0000802782 00000 n +0000806100 00000 n +0000806165 00000 n +0000809480 00000 n +0000809289 00000 n +0000806371 00000 n +0000809415 00000 n +0000813200 00000 n +0000812944 00000 n +0000809608 00000 n +0000813070 00000 n +0000813135 00000 n +0000816185 00000 n +0000815477 00000 n +0000813342 00000 n +0000815603 00000 n +0000815668 00000 n +0000815733 00000 n +0000815798 00000 n +0000815863 00000 n +0000815992 00000 n +0000816057 00000 n +0000816121 00000 n +0000820854 00000 n +0000820598 00000 n +0000816327 00000 n +0000820724 00000 n +0000820789 00000 n +0000823864 00000 n +0000823091 00000 n +0000820982 00000 n +0000823217 00000 n +0000823282 00000 n +0000823347 00000 n +0000823412 00000 n +0000823541 00000 n +0000823606 00000 n +0000823669 00000 n +0000823734 00000 n +0000823799 00000 n +0001147994 00000 n +0000826778 00000 n +0000826263 00000 n +0000824020 00000 n +0000826389 00000 n +0000826454 00000 n +0000826519 00000 n +0000826584 00000 n +0000826649 00000 n +0000826714 00000 n +0000830141 00000 n +0000829561 00000 n +0000826934 00000 n +0000829687 00000 n +0000829816 00000 n +0000829881 00000 n +0000829946 00000 n +0000830011 00000 n +0000830076 00000 n +0000833593 00000 n +0000833337 00000 n +0000830283 00000 n +0000833463 00000 n +0000833528 00000 n +0000836544 00000 n +0000835900 00000 n +0000833721 00000 n +0000836026 00000 n +0000836091 00000 n +0000836156 00000 n +0000836221 00000 n +0000836415 00000 n +0000836480 00000 n +0000840137 00000 n +0000839816 00000 n +0000836713 00000 n +0000839942 00000 n +0000840007 00000 n +0000840072 00000 n +0000843728 00000 n +0000843537 00000 n +0000840265 00000 n +0000843663 00000 n +0001148119 00000 n +0000847194 00000 n +0000846873 00000 n +0000843856 00000 n +0000846999 00000 n +0000847064 00000 n +0000847129 00000 n +0000849848 00000 n +0000849139 00000 n +0000847335 00000 n +0000849265 00000 n +0000849330 00000 n +0000849395 00000 n +0000849460 00000 n +0000849589 00000 n +0000849654 00000 n +0000849719 00000 n +0000849784 00000 n +0000852873 00000 n +0000852164 00000 n +0000850004 00000 n +0000852290 00000 n +0000852355 00000 n +0000852419 00000 n +0000852484 00000 n +0000852678 00000 n +0000852743 00000 n +0000852808 00000 n +0000856354 00000 n +0000856033 00000 n +0000853029 00000 n +0000856159 00000 n +0000856224 00000 n +0000856289 00000 n +0000859523 00000 n +0000858813 00000 n +0000856468 00000 n +0000858939 00000 n +0000859004 00000 n +0000859069 00000 n +0000859134 00000 n +0000859263 00000 n +0000859328 00000 n +0000859393 00000 n +0000859458 00000 n +0000863173 00000 n +0000862917 00000 n +0000859679 00000 n +0000863043 00000 n +0000863108 00000 n +0001148244 00000 n +0000866830 00000 n +0000866639 00000 n +0000863315 00000 n +0000866765 00000 n +0000870155 00000 n +0000869964 00000 n +0000866958 00000 n +0000870090 00000 n +0000872984 00000 n +0000872277 00000 n +0000870297 00000 n +0000872403 00000 n +0000872468 00000 n +0000872533 00000 n +0000872598 00000 n +0000872727 00000 n +0000872790 00000 n +0000872855 00000 n +0000872920 00000 n +0000875941 00000 n +0000875231 00000 n +0000873140 00000 n +0000875357 00000 n +0000875422 00000 n +0000875487 00000 n +0000875552 00000 n +0000875617 00000 n +0000875746 00000 n +0000875811 00000 n +0000875876 00000 n +0000879240 00000 n +0000878919 00000 n +0000876097 00000 n +0000879045 00000 n +0000879110 00000 n +0000879175 00000 n +0000882471 00000 n +0000882216 00000 n +0000879382 00000 n +0000882342 00000 n +0000882407 00000 n +0001148369 00000 n +0000885566 00000 n +0000884856 00000 n +0000882599 00000 n +0000884982 00000 n +0000885047 00000 n +0000885112 00000 n +0000885241 00000 n +0000885306 00000 n +0000885371 00000 n +0000885436 00000 n +0000885501 00000 n +0000888867 00000 n +0000888676 00000 n +0000885722 00000 n +0000888802 00000 n +0000891929 00000 n +0000891544 00000 n +0000889080 00000 n +0000891670 00000 n +0000891735 00000 n +0000891800 00000 n +0000891865 00000 n +0000894630 00000 n +0000893662 00000 n +0000892170 00000 n +0000893788 00000 n +0000893853 00000 n +0000893918 00000 n +0000894047 00000 n +0000894112 00000 n +0000894177 00000 n +0000894242 00000 n +0000894307 00000 n +0000894372 00000 n +0000894501 00000 n +0000894566 00000 n +0000899133 00000 n +0000898812 00000 n +0000894772 00000 n +0000898938 00000 n +0000899003 00000 n +0000899068 00000 n +0000902877 00000 n +0000902621 00000 n +0000899261 00000 n +0000902747 00000 n +0000902812 00000 n +0001148494 00000 n +0000906309 00000 n +0000906053 00000 n +0000903005 00000 n +0000906179 00000 n +0000906244 00000 n +0000908888 00000 n +0000908310 00000 n +0000906437 00000 n +0000908436 00000 n +0000908501 00000 n +0000908566 00000 n +0000908630 00000 n +0000908759 00000 n +0000908824 00000 n +0000912889 00000 n +0000912438 00000 n +0000909043 00000 n +0000912564 00000 n +0000912629 00000 n +0000912694 00000 n +0000912759 00000 n +0000912824 00000 n +0000916219 00000 n +0000915574 00000 n +0000913031 00000 n +0000915700 00000 n +0000915765 00000 n +0000915830 00000 n +0000915959 00000 n +0000916024 00000 n +0000916089 00000 n +0000916154 00000 n +0000918780 00000 n +0000918524 00000 n +0000916375 00000 n +0000918650 00000 n +0000918715 00000 n +0000922265 00000 n +0000921491 00000 n +0000918922 00000 n +0000921617 00000 n +0000921682 00000 n +0000921747 00000 n +0000921812 00000 n +0000921940 00000 n +0000922005 00000 n +0000922070 00000 n +0000922135 00000 n +0000922200 00000 n +0001148619 00000 n +0000925340 00000 n +0000924761 00000 n +0000922421 00000 n +0000924887 00000 n +0000924952 00000 n +0000925017 00000 n +0000925082 00000 n +0000925211 00000 n +0000925276 00000 n +0000929166 00000 n +0000928718 00000 n +0000925496 00000 n +0000928844 00000 n +0000928909 00000 n +0000928974 00000 n +0000929039 00000 n +0000929103 00000 n +0000931404 00000 n +0000930374 00000 n +0000929322 00000 n +0000930500 00000 n +0000930565 00000 n +0000930694 00000 n +0000930759 00000 n +0000930824 00000 n +0000930888 00000 n +0000930953 00000 n +0000931018 00000 n +0000931147 00000 n +0000931212 00000 n +0000931277 00000 n +0000931342 00000 n +0000934418 00000 n +0000933645 00000 n +0000931546 00000 n +0000933771 00000 n +0000933836 00000 n +0000933901 00000 n +0000933966 00000 n +0000934095 00000 n +0000934159 00000 n +0000934224 00000 n +0000934289 00000 n +0000934353 00000 n +0000936697 00000 n +0000935858 00000 n +0000934560 00000 n +0000935984 00000 n +0000936049 00000 n +0000936114 00000 n +0000936242 00000 n +0000936307 00000 n +0000936372 00000 n +0000936437 00000 n +0000936502 00000 n +0000936567 00000 n +0000936632 00000 n +0000936938 00000 n +0000948282 00000 n +0000955871 00000 n +0000958169 00000 n +0000958138 00000 n +0000961854 00000 n +0000971294 00000 n +0000982029 00000 n +0000993724 00000 n +0001006441 00000 n +0001025675 00000 n +0001046571 00000 n +0001068719 00000 n +0001086975 00000 n +0001089822 00000 n +0001089592 00000 n +0001117240 00000 n +0001144506 00000 n +0001148744 00000 n +0001148869 00000 n +0001148995 00000 n +0001149121 00000 n +0001149247 00000 n +0001149373 00000 n +0001149474 00000 n +0001171190 00000 n +0001195215 00000 n +0001195256 00000 n +0001195296 00000 n +0001195430 00000 n trailer << -/Size 2713 -/Root 2711 0 R -/Info 2712 0 R -/ID [<6E80C828D1E607CC3256CBEDB563F107> <6E80C828D1E607CC3256CBEDB563F107>] +/Size 2735 +/Root 2733 0 R +/Info 2734 0 R +/ID [<C6D521051BC7BE55D12193A2A0C1A6D3> <C6D521051BC7BE55D12193A2A0C1A6D3>] >> startxref -1183605 +1195688 %%EOF diff --git a/doc/arm/man.arpaname.html b/doc/arm/man.arpaname.html index 09d345b1..3a75bbca 100644 --- a/doc/arm/man.arpaname.html +++ b/doc/arm/man.arpaname.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.arpaname.html,v 1.23 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.arpaname.html,v 1.33 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,20 +50,20 @@ <div class="cmdsynopsis"><p><code class="command">arpaname</code> {<em class="replaceable"><code>ipaddress </code></em>...}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2613172"></a><h2>DESCRIPTION</h2> +<a name="id2645814"></a><h2>DESCRIPTION</h2> <p> <span><strong class="command">arpaname</strong></span> translates IP addresses (IPv4 and IPv6) to the corresponding IN-ADDR.ARPA or IP6.ARPA names. </p> </div> <div class="refsect1" lang="en"> -<a name="id2654078"></a><h2>SEE ALSO</h2> +<a name="id2645829"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">BIND 9 Administrator Reference Manual</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2654092"></a><h2>AUTHOR</h2> +<a name="id2645843"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.ddns-confgen.html b/doc/arm/man.ddns-confgen.html index 322efb00..a026518f 100644 --- a/doc/arm/man.ddns-confgen.html +++ b/doc/arm/man.ddns-confgen.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.ddns-confgen.html,v 1.59 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.ddns-confgen.html,v 1.69 2011-01-13 05:13:52 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">ddns-confgen</code> [<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>] [<code class="option">-h</code>] [<code class="option">-k <em class="replaceable"><code>keyname</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomfile</code></em></code>] [ -s <em class="replaceable"><code>name</code></em> | -z <em class="replaceable"><code>zone</code></em> ] [<code class="option">-q</code>] [name]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2646305"></a><h2>DESCRIPTION</h2> +<a name="id2643585"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">ddns-confgen</strong></span> generates a key for use by <span><strong class="command">nsupdate</strong></span> and <span><strong class="command">named</strong></span>. It simplifies configuration @@ -77,7 +77,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2646392"></a><h2>OPTIONS</h2> +<a name="id2643740"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt> <dd><p> @@ -144,7 +144,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2653965"></a><h2>SEE ALSO</h2> +<a name="id2644624"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">nsupdate</span>(1)</span>, <span class="citerefentry"><span class="refentrytitle">named.conf</span>(5)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, @@ -152,7 +152,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2654004"></a><h2>AUTHOR</h2> +<a name="id2645754"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.dig.html b/doc/arm/man.dig.html index e7c1dc5b..526ad776 100644 --- a/doc/arm/man.dig.html +++ b/doc/arm/man.dig.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.dig.html,v 1.153 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.dig.html,v 1.162 2011-01-13 05:13:50 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -52,7 +52,7 @@ <div class="cmdsynopsis"><p><code class="command">dig</code> [global-queryopt...] [query...]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2608899"></a><h2>DESCRIPTION</h2> +<a name="id2609998"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dig</strong></span> (domain information groper) is a flexible tool for interrogating DNS name servers. It performs DNS lookups and @@ -98,7 +98,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2608994"></a><h2>SIMPLE USAGE</h2> +<a name="id2610093"></a><h2>SIMPLE USAGE</h2> <p> A typical invocation of <span><strong class="command">dig</strong></span> looks like: </p> @@ -144,7 +144,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2609514"></a><h2>OPTIONS</h2> +<a name="id2610204"></a><h2>OPTIONS</h2> <p> The <code class="option">-b</code> option sets the source IP address of the query to <em class="parameter"><code>address</code></em>. This must be a valid @@ -248,7 +248,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2661398"></a><h2>QUERY OPTIONS</h2> +<a name="id2662088"></a><h2>QUERY OPTIONS</h2> <p><span><strong class="command">dig</strong></span> provides a number of query options which affect the way in which lookups are made and the results displayed. Some of @@ -579,7 +579,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2662344"></a><h2>MULTIPLE QUERIES</h2> +<a name="id2663102"></a><h2>MULTIPLE QUERIES</h2> <p> The BIND 9 implementation of <span><strong class="command">dig </strong></span> supports @@ -625,7 +625,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr </p> </div> <div class="refsect1" lang="en"> -<a name="id2662498"></a><h2>IDN SUPPORT</h2> +<a name="id2663188"></a><h2>IDN SUPPORT</h2> <p> If <span><strong class="command">dig</strong></span> has been built with IDN (internationalized domain name) support, it can accept and display non-ASCII domain names. @@ -639,14 +639,14 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr </p> </div> <div class="refsect1" lang="en"> -<a name="id2662526"></a><h2>FILES</h2> +<a name="id2663217"></a><h2>FILES</h2> <p><code class="filename">/etc/resolv.conf</code> </p> <p><code class="filename">${HOME}/.digrc</code> </p> </div> <div class="refsect1" lang="en"> -<a name="id2662616"></a><h2>SEE ALSO</h2> +<a name="id2663238"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">host</span>(1)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, @@ -654,7 +654,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr </p> </div> <div class="refsect1" lang="en"> -<a name="id2662653"></a><h2>BUGS</h2> +<a name="id2663275"></a><h2>BUGS</h2> <p> There are probably too many query options. </p> diff --git a/doc/arm/man.dnssec-dsfromkey.html b/doc/arm/man.dnssec-dsfromkey.html index 68bd20d3..885b7548 100644 --- a/doc/arm/man.dnssec-dsfromkey.html +++ b/doc/arm/man.dnssec-dsfromkey.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.dnssec-dsfromkey.html,v 1.64 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.dnssec-dsfromkey.html,v 1.74 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -51,14 +51,14 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-dsfromkey</code> {-s} [<code class="option">-1</code>] [<code class="option">-2</code>] [<code class="option">-a <em class="replaceable"><code>alg</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-l <em class="replaceable"><code>domain</code></em></code>] [<code class="option">-s</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-f <em class="replaceable"><code>file</code></em></code>] [<code class="option">-A</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] {dnsname}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2610669"></a><h2>DESCRIPTION</h2> +<a name="id2612185"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-dsfromkey</strong></span> outputs the Delegation Signer (DS) resource record (RR), as defined in RFC 3658 and RFC 4509, for the given key(s). </p> </div> <div class="refsect1" lang="en"> -<a name="id2610683"></a><h2>OPTIONS</h2> +<a name="id2612199"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-1</span></dt> <dd><p> @@ -72,8 +72,8 @@ <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt> <dd><p> Select the digest algorithm. The value of - <code class="option">algorithm</code> must be one of SHA-1 (SHA1) or - SHA-256 (SHA256). These values are case insensitive. + <code class="option">algorithm</code> must be one of SHA-1 (SHA1), + SHA-256 (SHA256) or GOST. These values are case insensitive. </p></dd> <dt><span class="term">-K <em class="replaceable"><code>directory</code></em></span></dt> <dd><p> @@ -119,7 +119,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2611350"></a><h2>EXAMPLE</h2> +<a name="id2612797"></a><h2>EXAMPLE</h2> <p> To build the SHA-256 DS RR from the <strong class="userinput"><code>Kexample.com.+003+26160</code></strong> @@ -134,7 +134,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2611386"></a><h2>FILES</h2> +<a name="id2612834"></a><h2>FILES</h2> <p> The keyfile can be designed by the key identification <code class="filename">Knnnn.+aaa+iiiii</code> or the full file name @@ -148,13 +148,13 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2611906"></a><h2>CAVEAT</h2> +<a name="id2613080"></a><h2>CAVEAT</h2> <p> A keyfile error can give a "file not found" even if the file exists. </p> </div> <div class="refsect1" lang="en"> -<a name="id2611915"></a><h2>SEE ALSO</h2> +<a name="id2613090"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, @@ -164,7 +164,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2611955"></a><h2>AUTHOR</h2> +<a name="id2613129"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.dnssec-keyfromlabel.html b/doc/arm/man.dnssec-keyfromlabel.html index b3565b45..a39c2b12 100644 --- a/doc/arm/man.dnssec-keyfromlabel.html +++ b/doc/arm/man.dnssec-keyfromlabel.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.dnssec-keyfromlabel.html,v 1.100 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.dnssec-keyfromlabel.html,v 1.110 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-keyfromlabel</code> {-l <em class="replaceable"><code>label</code></em>} [<code class="option">-3</code>] [<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>] [<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-f <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-G</code>] [<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-k</code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>] [<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>] [<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-y</code>] {name}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2612464"></a><h2>DESCRIPTION</h2> +<a name="id2613703"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-keyfromlabel</strong></span> gets keys with the given label from a crypto hardware and builds key files for DNSSEC (Secure DNS), as defined in RFC 2535 @@ -63,14 +63,14 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2612484"></a><h2>OPTIONS</h2> +<a name="id2613723"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt> <dd> <p> Selects the cryptographic algorithm. The value of <code class="option">algorithm</code> must be one of RSAMD5, RSASHA1, - DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256 or RSASHA512. + DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512 or ECCGOST. These values are case insensitive. </p> <p> @@ -182,7 +182,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2613057"></a><h2>TIMING OPTIONS</h2> +<a name="id2614023"></a><h2>TIMING OPTIONS</h2> <p> Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as @@ -229,7 +229,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2614452"></a><h2>GENERATED KEY FILES</h2> +<a name="id2615691"></a><h2>GENERATED KEY FILES</h2> <p> When <span><strong class="command">dnssec-keyfromlabel</strong></span> completes successfully, @@ -268,7 +268,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2614614"></a><h2>SEE ALSO</h2> +<a name="id2666166"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, @@ -276,7 +276,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2614647"></a><h2>AUTHOR</h2> +<a name="id2666199"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.dnssec-keygen.html b/doc/arm/man.dnssec-keygen.html index f35d5f66..9119b0d3 100644 --- a/doc/arm/man.dnssec-keygen.html +++ b/doc/arm/man.dnssec-keygen.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.dnssec-keygen.html,v 1.169 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.dnssec-keygen.html,v 1.179 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-keygen</code> [<code class="option">-a <em class="replaceable"><code>algorithm</code></em></code>] [<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>] [<code class="option">-n <em class="replaceable"><code>nametype</code></em></code>] [<code class="option">-3</code>] [<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-C</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-e</code>] [<code class="option">-f <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-G</code>] [<code class="option">-g <em class="replaceable"><code>generator</code></em></code>] [<code class="option">-h</code>] [<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-i <em class="replaceable"><code>interval</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-k</code>] [<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>] [<code class="option">-q</code>] [<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-S <em class="replaceable"><code>key</code></em></code>] [<code class="option">-s <em class="replaceable"><code>strength</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-z</code>] {name}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2613624"></a><h2>DESCRIPTION</h2> +<a name="id2614727"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-keygen</strong></span> generates keys for DNSSEC (Secure DNS), as defined in RFC 2535 and RFC 4034. It can also generate keys for use with @@ -64,14 +64,14 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2613644"></a><h2>OPTIONS</h2> +<a name="id2614747"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt> <dd> <p> Selects the cryptographic algorithm. For DNSSEC keys, the value of <code class="option">algorithm</code> must be one of RSAMD5, RSASHA1, - DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256 or RSASHA512. + DSA, NSEC3RSASHA1, NSEC3DSA, RSASHA256, RSASHA512 or ECCGOST. For TSIG/TKEY, the value must be DH (Diffie Hellman), HMAC-MD5, HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, or HMAC-SHA512. These values are @@ -129,7 +129,7 @@ Use an NSEC3-capable algorithm to generate a DNSSEC key. If this option is used and no algorithm is explicitly set on the command line, NSEC3RSASHA1 will be used by - default. Note that RSASHA256 and RSASHA512 algorithms + default. Note that RSASHA256, RSASHA512 and ECCGOST algorithms are NSEC3-capable. </p></dd> <dt><span class="term">-C</span></dt> @@ -266,7 +266,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2664404"></a><h2>TIMING OPTIONS</h2> +<a name="id2667418"></a><h2>TIMING OPTIONS</h2> <p> Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as @@ -337,7 +337,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2664594"></a><h2>GENERATED KEYS</h2> +<a name="id2667540"></a><h2>GENERATED KEYS</h2> <p> When <span><strong class="command">dnssec-keygen</strong></span> completes successfully, @@ -383,7 +383,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2664701"></a><h2>EXAMPLE</h2> +<a name="id2667716"></a><h2>EXAMPLE</h2> <p> To generate a 768-bit DSA key for the domain <strong class="userinput"><code>example.com</code></strong>, the following command would be @@ -404,7 +404,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2664758"></a><h2>SEE ALSO</h2> +<a name="id2667841"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 2539</em>, @@ -413,7 +413,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2664789"></a><h2>AUTHOR</h2> +<a name="id2667872"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.dnssec-revoke.html b/doc/arm/man.dnssec-revoke.html index 28d798dd..505450ff 100644 --- a/doc/arm/man.dnssec-revoke.html +++ b/doc/arm/man.dnssec-revoke.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.dnssec-revoke.html,v 1.52 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.dnssec-revoke.html,v 1.62 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-revoke</code> [<code class="option">-hr</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-f</code>] {keyfile}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2613754"></a><h2>DESCRIPTION</h2> +<a name="id2614925"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-revoke</strong></span> reads a DNSSEC key file, sets the REVOKED bit on the key as defined in RFC 5011, and creates a new pair of key files containing the @@ -58,7 +58,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2613768"></a><h2>OPTIONS</h2> +<a name="id2614939"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-h</span></dt> <dd><p> @@ -91,14 +91,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2613876"></a><h2>SEE ALSO</h2> +<a name="id2615047"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 5011</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2613900"></a><h2>AUTHOR</h2> +<a name="id2615072"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.dnssec-settime.html b/doc/arm/man.dnssec-settime.html index cfd0660d..fbf5ab71 100644 --- a/doc/arm/man.dnssec-settime.html +++ b/doc/arm/man.dnssec-settime.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.dnssec-settime.html,v 1.48 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.dnssec-settime.html,v 1.58 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-settime</code> [<code class="option">-f</code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-P <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-A <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-R <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-I <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-D <em class="replaceable"><code>date/offset</code></em></code>] [<code class="option">-h</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] {keyfile}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2614238"></a><h2>DESCRIPTION</h2> +<a name="id2615205"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-settime</strong></span> reads a DNSSEC private key file and sets the key timing metadata as specified by the <code class="option">-P</code>, <code class="option">-A</code>, @@ -75,7 +75,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2614297"></a><h2>OPTIONS</h2> +<a name="id2615264"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-f</span></dt> <dd><p> @@ -106,7 +106,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2614732"></a><h2>TIMING OPTIONS</h2> +<a name="id2615767"></a><h2>TIMING OPTIONS</h2> <p> Dates can be expressed in the format YYYYMMDD or YYYYMMDDHHMMSS. If the argument begins with a '+' or '-', it is interpreted as @@ -185,7 +185,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2614871"></a><h2>PRINTING OPTIONS</h2> +<a name="id2615974"></a><h2>PRINTING OPTIONS</h2> <p> <span><strong class="command">dnssec-settime</strong></span> can also be used to print the timing metadata associated with a key. @@ -211,7 +211,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2615565"></a><h2>SEE ALSO</h2> +<a name="id2616668"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, @@ -219,7 +219,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2615598"></a><h2>AUTHOR</h2> +<a name="id2616701"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.dnssec-signzone.html b/doc/arm/man.dnssec-signzone.html index 69aa7ecd..c1c69273 100644 --- a/doc/arm/man.dnssec-signzone.html +++ b/doc/arm/man.dnssec-signzone.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.dnssec-signzone.html,v 1.169 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.dnssec-signzone.html,v 1.179 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">dnssec-signzone</code> [<code class="option">-a</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-d <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine</code></em></code>] [<code class="option">-e <em class="replaceable"><code>end-time</code></em></code>] [<code class="option">-f <em class="replaceable"><code>output-file</code></em></code>] [<code class="option">-g</code>] [<code class="option">-h</code>] [<code class="option">-K <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-k <em class="replaceable"><code>key</code></em></code>] [<code class="option">-l <em class="replaceable"><code>domain</code></em></code>] [<code class="option">-i <em class="replaceable"><code>interval</code></em></code>] [<code class="option">-I <em class="replaceable"><code>input-format</code></em></code>] [<code class="option">-j <em class="replaceable"><code>jitter</code></em></code>] [<code class="option">-N <em class="replaceable"><code>soa-serial-format</code></em></code>] [<code class="option">-o <em class="replaceable"><code>origin</code></em></code>] [<code class="option">-O <em class="replaceable"><code>output-format</code></em></code>] [<code class="option">-p</code>] [<code class="option">-P</code>] [<code class="option">-r <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-S</code>] [<code class="option">-s <em class="replaceable"><code>start-time</code></em></code>] [<code class="option">-T <em class="replaceable"><code>ttl</code></em></code>] [<code class="option">-t</code>] [<code class="option">-u</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-x</code>] [<code class="option">-z</code>] [<code class="option">-3 <em class="replaceable"><code>salt</code></em></code>] [<code class="option">-H <em class="replaceable"><code>iterations</code></em></code>] [<code class="option">-A</code>] {zonefile} [key...]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2616326"></a><h2>DESCRIPTION</h2> +<a name="id2617770"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">dnssec-signzone</strong></span> signs a zone. It generates NSEC and RRSIG records and produces a signed version of the @@ -61,7 +61,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2616345"></a><h2>OPTIONS</h2> +<a name="id2617789"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a</span></dt> <dd><p> @@ -397,7 +397,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2665751"></a><h2>EXAMPLE</h2> +<a name="id2671701"></a><h2>EXAMPLE</h2> <p> The following command signs the <strong class="userinput"><code>example.com</code></strong> zone with the DSA key generated by <span><strong class="command">dnssec-keygen</strong></span> @@ -427,14 +427,14 @@ db.example.com.signed %</pre> </div> <div class="refsect1" lang="en"> -<a name="id2665830"></a><h2>SEE ALSO</h2> +<a name="id2671780"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 4033</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2665854"></a><h2>AUTHOR</h2> +<a name="id2671804"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.genrandom.html b/doc/arm/man.genrandom.html index 94f23c4c..2522d4c8 100644 --- a/doc/arm/man.genrandom.html +++ b/doc/arm/man.genrandom.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.genrandom.html,v 1.24 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.genrandom.html,v 1.34 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">genrandom</code> [<code class="option">-n <em class="replaceable"><code>number</code></em></code>] {<em class="replaceable"><code>size</code></em>} {<em class="replaceable"><code>filename</code></em>}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2613972"></a><h2>DESCRIPTION</h2> +<a name="id2613505"></a><h2>DESCRIPTION</h2> <p> <span><strong class="command">genrandom</strong></span> generates a file or a set of files containing a specified quantity @@ -59,7 +59,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2613987"></a><h2>ARGUMENTS</h2> +<a name="id2613520"></a><h2>ARGUMENTS</h2> <div class="variablelist"><dl> <dt><span class="term">-n <em class="replaceable"><code>number</code></em></span></dt> <dd><p> @@ -77,14 +77,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2654188"></a><h2>SEE ALSO</h2> +<a name="id2645939"></a><h2>SEE ALSO</h2> <p> <span class="citerefentry"><span class="refentrytitle">rand</span>(3)</span>, <span class="citerefentry"><span class="refentrytitle">arc4random</span>(3)</span> </p> </div> <div class="refsect1" lang="en"> -<a name="id2654215"></a><h2>AUTHOR</h2> +<a name="id2645965"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.host.html b/doc/arm/man.host.html index de568419..f35c866f 100644 --- a/doc/arm/man.host.html +++ b/doc/arm/man.host.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.host.html,v 1.151 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.host.html,v 1.160 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">host</code> [<code class="option">-aCdlnrsTwv</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-N <em class="replaceable"><code>ndots</code></em></code>] [<code class="option">-R <em class="replaceable"><code>number</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-W <em class="replaceable"><code>wait</code></em></code>] [<code class="option">-m <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-4</code>] [<code class="option">-6</code>] {name} [server]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2609920"></a><h2>DESCRIPTION</h2> +<a name="id2610541"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">host</strong></span> is a simple utility for performing DNS lookups. It is normally used to convert names to IP addresses and vice versa. @@ -202,7 +202,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2610365"></a><h2>IDN SUPPORT</h2> +<a name="id2611943"></a><h2>IDN SUPPORT</h2> <p> If <span><strong class="command">host</strong></span> has been built with IDN (internationalized domain name) support, it can accept and display non-ASCII domain names. @@ -216,12 +216,12 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2610462"></a><h2>FILES</h2> +<a name="id2611972"></a><h2>FILES</h2> <p><code class="filename">/etc/resolv.conf</code> </p> </div> <div class="refsect1" lang="en"> -<a name="id2610476"></a><h2>SEE ALSO</h2> +<a name="id2611986"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">dig</span>(1)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>. </p> diff --git a/doc/arm/man.isc-hmac-fixup.html b/doc/arm/man.isc-hmac-fixup.html index 6b78eb4f..c1c7c101 100644 --- a/doc/arm/man.isc-hmac-fixup.html +++ b/doc/arm/man.isc-hmac-fixup.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.isc-hmac-fixup.html,v 1.21 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.isc-hmac-fixup.html,v 1.31 2011-01-13 05:13:52 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">isc-hmac-fixup</code> {<em class="replaceable"><code>algorithm</code></em>} {<em class="replaceable"><code>secret</code></em>}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2614057"></a><h2>DESCRIPTION</h2> +<a name="id2648065"></a><h2>DESCRIPTION</h2> <p> Versions of BIND 9 up to and including BIND 9.6 had a bug causing HMAC-SHA* TSIG keys which were longer than the digest length of the @@ -76,7 +76,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2654294"></a><h2>SECURITY CONSIDERATIONS</h2> +<a name="id2648092"></a><h2>SECURITY CONSIDERATIONS</h2> <p> Secrets that have been converted by <span><strong class="command">isc-hmac-fixup</strong></span> are shortened, but as this is how the HMAC protocol works in @@ -87,14 +87,14 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2654310"></a><h2>SEE ALSO</h2> +<a name="id2648108"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 2104</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2654327"></a><h2>AUTHOR</h2> +<a name="id2648125"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.named-checkconf.html b/doc/arm/man.named-checkconf.html index 3d5c3be6..f2d4f27d 100644 --- a/doc/arm/man.named-checkconf.html +++ b/doc/arm/man.named-checkconf.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.named-checkconf.html,v 1.164 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.named-checkconf.html,v 1.174 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">named-checkconf</code> [<code class="option">-h</code>] [<code class="option">-v</code>] [<code class="option">-j</code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] {filename} [<code class="option">-p</code>] [<code class="option">-z</code>]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2616918"></a><h2>DESCRIPTION</h2> +<a name="id2618157"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">named-checkconf</strong></span> checks the syntax, but not the semantics, of a <span><strong class="command">named</strong></span> configuration file. The file is parsed @@ -70,7 +70,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2616988"></a><h2>OPTIONS</h2> +<a name="id2618228"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-h</span></dt> <dd><p> @@ -109,21 +109,21 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2617123"></a><h2>RETURN VALUES</h2> +<a name="id2618430"></a><h2>RETURN VALUES</h2> <p><span><strong class="command">named-checkconf</strong></span> returns an exit status of 1 if errors were detected and 0 otherwise. </p> </div> <div class="refsect1" lang="en"> -<a name="id2617137"></a><h2>SEE ALSO</h2> +<a name="id2618444"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">named-checkzone</span>(8)</span>, <em class="citetitle">BIND 9 Administrator Reference Manual</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2617166"></a><h2>AUTHOR</h2> +<a name="id2618474"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.named-checkzone.html b/doc/arm/man.named-checkzone.html index baecd322..7f632396 100644 --- a/doc/arm/man.named-checkzone.html +++ b/doc/arm/man.named-checkzone.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.named-checkzone.html,v 1.173 2010/12/09 01:14:11 tbox Exp $ --> +<!-- $Id: man.named-checkzone.html,v 1.183 2011-01-13 05:13:52 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -51,7 +51,7 @@ <div class="cmdsynopsis"><p><code class="command">named-compilezone</code> [<code class="option">-d</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-C <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-r <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {<code class="option">-o <em class="replaceable"><code>filename</code></em></code>} {zonename} {filename}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2669049"></a><h2>DESCRIPTION</h2> +<a name="id2620181"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">named-checkzone</strong></span> checks the syntax and integrity of a zone file. It performs the same checks as <span><strong class="command">named</strong></span> does when loading a @@ -71,7 +71,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2669099"></a><h2>OPTIONS</h2> +<a name="id2620231"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-d</span></dt> <dd><p> @@ -265,14 +265,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2669870"></a><h2>RETURN VALUES</h2> +<a name="id2673704"></a><h2>RETURN VALUES</h2> <p><span><strong class="command">named-checkzone</strong></span> returns an exit status of 1 if errors were detected and 0 otherwise. </p> </div> <div class="refsect1" lang="en"> -<a name="id2669884"></a><h2>SEE ALSO</h2> +<a name="id2673718"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>, <em class="citetitle">RFC 1035</em>, @@ -280,7 +280,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2669917"></a><h2>AUTHOR</h2> +<a name="id2673751"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.named-journalprint.html b/doc/arm/man.named-journalprint.html index 6e1b3825..925a2bcd 100644 --- a/doc/arm/man.named-journalprint.html +++ b/doc/arm/man.named-journalprint.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.named-journalprint.html,v 1.23 2010/12/09 01:14:11 tbox Exp $ --> +<!-- $Id: man.named-journalprint.html,v 1.33 2011-01-13 05:13:52 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">named-journalprint</code> {<em class="replaceable"><code>journal</code></em>}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2611562"></a><h2>DESCRIPTION</h2> +<a name="id2611300"></a><h2>DESCRIPTION</h2> <p> <span><strong class="command">named-journalprint</strong></span> prints the contents of a zone journal file in a human-readable @@ -76,7 +76,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2611608"></a><h2>SEE ALSO</h2> +<a name="id2635922"></a><h2>SEE ALSO</h2> <p> <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">nsupdate</span>(8)</span>, @@ -84,7 +84,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2637102"></a><h2>AUTHOR</h2> +<a name="id2635953"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.named.html b/doc/arm/man.named.html index 13f3aeab..f24fbc93 100644 --- a/doc/arm/man.named.html +++ b/doc/arm/man.named.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.named.html,v 1.175 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.named.html,v 1.185 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">named</code> [<code class="option">-4</code>] [<code class="option">-6</code>] [<code class="option">-c <em class="replaceable"><code>config-file</code></em></code>] [<code class="option">-d <em class="replaceable"><code>debug-level</code></em></code>] [<code class="option">-E <em class="replaceable"><code>engine-name</code></em></code>] [<code class="option">-f</code>] [<code class="option">-g</code>] [<code class="option">-m <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-n <em class="replaceable"><code>#cpus</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-s</code>] [<code class="option">-S <em class="replaceable"><code>#max-socks</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>] [<code class="option">-v</code>] [<code class="option">-V</code>] [<code class="option">-x <em class="replaceable"><code>cache-file</code></em></code>]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2631528"></a><h2>DESCRIPTION</h2> +<a name="id2620753"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">named</strong></span> is a Domain Name System (DNS) server, part of the BIND 9 distribution from ISC. For more @@ -65,7 +65,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2631559"></a><h2>OPTIONS</h2> +<a name="id2632389"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-4</span></dt> <dd><p> @@ -246,7 +246,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2639144"></a><h2>SIGNALS</h2> +<a name="id2639223"></a><h2>SIGNALS</h2> <p> In routine operation, signals should not be used to control the nameserver; <span><strong class="command">rndc</strong></span> should be used @@ -267,7 +267,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639194"></a><h2>CONFIGURATION</h2> +<a name="id2674635"></a><h2>CONFIGURATION</h2> <p> The <span><strong class="command">named</strong></span> configuration file is too complex to describe in detail here. A complete description is provided @@ -284,7 +284,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639243"></a><h2>FILES</h2> +<a name="id2674684"></a><h2>FILES</h2> <div class="variablelist"><dl> <dt><span class="term"><code class="filename">/etc/named.conf</code></span></dt> <dd><p> @@ -297,7 +297,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2639287"></a><h2>SEE ALSO</h2> +<a name="id2674796"></a><h2>SEE ALSO</h2> <p><em class="citetitle">RFC 1033</em>, <em class="citetitle">RFC 1034</em>, <em class="citetitle">RFC 1035</em>, @@ -310,7 +310,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2673900"></a><h2>AUTHOR</h2> +<a name="id2674867"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.nsec3hash.html b/doc/arm/man.nsec3hash.html index ce97da8d..3bc54080 100644 --- a/doc/arm/man.nsec3hash.html +++ b/doc/arm/man.nsec3hash.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.nsec3hash.html,v 1.24 2010/12/09 01:14:12 tbox Exp $ --> +<!-- $Id: man.nsec3hash.html,v 1.34 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -48,7 +48,7 @@ <div class="cmdsynopsis"><p><code class="command">nsec3hash</code> {<em class="replaceable"><code>salt</code></em>} {<em class="replaceable"><code>algorithm</code></em>} {<em class="replaceable"><code>iterations</code></em>} {<em class="replaceable"><code>domain</code></em>}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2654851"></a><h2>DESCRIPTION</h2> +<a name="id2614243"></a><h2>DESCRIPTION</h2> <p> <span><strong class="command">nsec3hash</strong></span> generates an NSEC3 hash based on a set of NSEC3 parameters. This can be used to check the validity @@ -56,7 +56,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2654866"></a><h2>ARGUMENTS</h2> +<a name="id2614258"></a><h2>ARGUMENTS</h2> <div class="variablelist"><dl> <dt><span class="term">salt</span></dt> <dd><p> @@ -80,14 +80,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2654928"></a><h2>SEE ALSO</h2> +<a name="id2650501"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">BIND 9 Administrator Reference Manual</em>, <em class="citetitle">RFC 5155</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2654945"></a><h2>AUTHOR</h2> +<a name="id2650518"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.nsupdate.html b/doc/arm/man.nsupdate.html index a7789df0..ed13e66c 100644 --- a/doc/arm/man.nsupdate.html +++ b/doc/arm/man.nsupdate.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.nsupdate.html,v 1.100 2010/12/09 01:14:11 tbox Exp $ --> +<!-- $Id: man.nsupdate.html,v 1.110 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">nsupdate</code> [<code class="option">-d</code>] [<code class="option">-D</code>] [[<code class="option">-g</code>] | [<code class="option">-o</code>] | [<code class="option">-l</code>] | [<code class="option">-y <em class="replaceable"><code>[<span class="optional">hmac:</span>]keyname:secret</code></em></code>] | [<code class="option">-k <em class="replaceable"><code>keyfile</code></em></code>]] [<code class="option">-t <em class="replaceable"><code>timeout</code></em></code>] [<code class="option">-u <em class="replaceable"><code>udptimeout</code></em></code>] [<code class="option">-r <em class="replaceable"><code>udpretries</code></em></code>] [<code class="option">-R <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-v</code>] [filename]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2637264"></a><h2>DESCRIPTION</h2> +<a name="id2637616"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">nsupdate</strong></span> is used to submit Dynamic DNS Update requests as defined in RFC 2136 to a name server. @@ -210,7 +210,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2637802"></a><h2>INPUT FORMAT</h2> +<a name="id2638427"></a><h2>INPUT FORMAT</h2> <p><span><strong class="command">nsupdate</strong></span> reads input from <em class="parameter"><code>filename</code></em> @@ -498,7 +498,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2677080"></a><h2>EXAMPLES</h2> +<a name="id2677773"></a><h2>EXAMPLES</h2> <p> The examples below show how <span><strong class="command">nsupdate</strong></span> @@ -552,7 +552,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2677130"></a><h2>FILES</h2> +<a name="id2677824"></a><h2>FILES</h2> <div class="variablelist"><dl> <dt><span class="term"><code class="constant">/etc/resolv.conf</code></span></dt> <dd><p> @@ -575,7 +575,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2677282"></a><h2>SEE ALSO</h2> +<a name="id2677975"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">RFC 2136</em>, <em class="citetitle">RFC 3007</em>, @@ -590,7 +590,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2677339"></a><h2>BUGS</h2> +<a name="id2678033"></a><h2>BUGS</h2> <p> The TSIG key is redundantly stored in two separate files. This is a consequence of nsupdate using the DST library diff --git a/doc/arm/man.rndc-confgen.html b/doc/arm/man.rndc-confgen.html index 6737b2cc..044f62f4 100644 --- a/doc/arm/man.rndc-confgen.html +++ b/doc/arm/man.rndc-confgen.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.rndc-confgen.html,v 1.179 2010/12/09 01:14:10 tbox Exp $ --> +<!-- $Id: man.rndc-confgen.html,v 1.189 2011-01-13 05:13:52 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">rndc-confgen</code> [<code class="option">-a</code>] [<code class="option">-b <em class="replaceable"><code>keysize</code></em></code>] [<code class="option">-c <em class="replaceable"><code>keyfile</code></em></code>] [<code class="option">-h</code>] [<code class="option">-k <em class="replaceable"><code>keyname</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomfile</code></em></code>] [<code class="option">-s <em class="replaceable"><code>address</code></em></code>] [<code class="option">-t <em class="replaceable"><code>chrootdir</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2640589"></a><h2>DESCRIPTION</h2> +<a name="id2641351"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">rndc-confgen</strong></span> generates configuration files for <span><strong class="command">rndc</strong></span>. It can be used as a @@ -66,7 +66,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2640929"></a><h2>OPTIONS</h2> +<a name="id2641417"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-a</span></dt> <dd> @@ -173,7 +173,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2653808"></a><h2>EXAMPLES</h2> +<a name="id2642418"></a><h2>EXAMPLES</h2> <p> To allow <span><strong class="command">rndc</strong></span> to be used with no manual configuration, run @@ -190,7 +190,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2653864"></a><h2>SEE ALSO</h2> +<a name="id2646434"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">rndc.conf</span>(5)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, @@ -198,7 +198,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2653902"></a><h2>AUTHOR</h2> +<a name="id2646472"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.rndc.conf.html b/doc/arm/man.rndc.conf.html index 3a0b06d2..87d25f2b 100644 --- a/doc/arm/man.rndc.conf.html +++ b/doc/arm/man.rndc.conf.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.rndc.conf.html,v 1.180 2010/12/09 01:14:11 tbox Exp $ --> +<!-- $Id: man.rndc.conf.html,v 1.190 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">rndc.conf</code> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2612043"></a><h2>DESCRIPTION</h2> +<a name="id2640658"></a><h2>DESCRIPTION</h2> <p><code class="filename">rndc.conf</code> is the configuration file for <span><strong class="command">rndc</strong></span>, the BIND 9 name server control utility. This file has a similar structure and syntax to @@ -135,7 +135,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639931"></a><h2>EXAMPLE</h2> +<a name="id2640829"></a><h2>EXAMPLE</h2> <pre class="programlisting"> options { default-server localhost; @@ -209,7 +209,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2640053"></a><h2>NAME SERVER CONFIGURATION</h2> +<a name="id2641019"></a><h2>NAME SERVER CONFIGURATION</h2> <p> The name server must be configured to accept rndc connections and to recognize the key specified in the <code class="filename">rndc.conf</code> @@ -219,7 +219,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2640352"></a><h2>SEE ALSO</h2> +<a name="id2641113"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">rndc-confgen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">mmencode</span>(1)</span>, @@ -227,7 +227,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2640390"></a><h2>AUTHOR</h2> +<a name="id2641152"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.rndc.html b/doc/arm/man.rndc.html index 92500ed4..5b96e334 100644 --- a/doc/arm/man.rndc.html +++ b/doc/arm/man.rndc.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2003 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -14,7 +14,7 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: man.rndc.html,v 1.178 2010/12/09 01:14:11 tbox Exp $ --> +<!-- $Id: man.rndc.html,v 1.188 2011-01-13 05:13:51 tbox Exp $ --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">rndc</code> [<code class="option">-b <em class="replaceable"><code>source-address</code></em></code>] [<code class="option">-c <em class="replaceable"><code>config-file</code></em></code>] [<code class="option">-k <em class="replaceable"><code>key-file</code></em></code>] [<code class="option">-s <em class="replaceable"><code>server</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-V</code>] [<code class="option">-y <em class="replaceable"><code>key_id</code></em></code>] {command}</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2638160"></a><h2>DESCRIPTION</h2> +<a name="id2639672"></a><h2>DESCRIPTION</h2> <p><span><strong class="command">rndc</strong></span> controls the operation of a name server. It supersedes the <span><strong class="command">ndc</strong></span> utility @@ -79,7 +79,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2638210"></a><h2>OPTIONS</h2> +<a name="id2639722"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-b <em class="replaceable"><code>source-address</code></em></span></dt> <dd><p> @@ -151,7 +151,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639664"></a><h2>LIMITATIONS</h2> +<a name="id2640425"></a><h2>LIMITATIONS</h2> <p><span><strong class="command">rndc</strong></span> does not yet support all the commands of the BIND 8 <span><strong class="command">ndc</strong></span> utility. @@ -165,7 +165,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639694"></a><h2>SEE ALSO</h2> +<a name="id2640456"></a><h2>SEE ALSO</h2> <p><span class="citerefentry"><span class="refentrytitle">rndc.conf</span>(5)</span>, <span class="citerefentry"><span class="refentrytitle">rndc-confgen</span>(8)</span>, <span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>, @@ -175,7 +175,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2639750"></a><h2>AUTHOR</h2> +<a name="id2640512"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/misc/options b/doc/misc/options index ae6761f9..8f271ce1 100644 --- a/doc/misc/options +++ b/doc/misc/options @@ -108,13 +108,15 @@ options { recursive-only <boolean>; suffix <ipv6_address>; }; + dns64-contact <string>; + dns64-server <string>; dnssec-accept-expired <boolean>; dnssec-dnskey-kskonly <boolean>; dnssec-enable <boolean>; dnssec-lookaside <string> trust-anchor <string>; dnssec-must-be-secure <string> <boolean>; dnssec-secure-to-insecure <boolean>; - dnssec-validation <boolean>; + dnssec-validation ( yes | no | auto ); dual-stack-servers [ port <integer> ] { ( <quoted_string> [ port <integer> ] | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ); ... }; @@ -192,6 +194,10 @@ options { request-ixfr <boolean>; request-nsid <boolean>; reserved-sockets <integer>; + response-policy { + zone <string> [ policy ( given | no-op | nxdomain | nodata + | cname <domain> ) ]; + }; rfc2308-type1 <boolean>; // not yet implemented root-delegation-only [ exclude { <quoted_string>; ... } ]; rrset-order { [ class <string> ] [ type <string> ] [ name @@ -217,6 +223,7 @@ options { tkey-dhkey <quoted_string> <integer>; tkey-domain <quoted_string>; tkey-gssapi-credential <quoted_string>; + tkey-gssapi-keytab <quoted_string>; topology { <address_match_element>; ... }; // not implemented transfer-format ( many-answers | one-answer ); transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; @@ -319,13 +326,15 @@ view <string> <optional_class> { recursive-only <boolean>; suffix <ipv6_address>; }; + dns64-contact <string>; + dns64-server <string>; dnssec-accept-expired <boolean>; dnssec-dnskey-kskonly <boolean>; dnssec-enable <boolean>; dnssec-lookaside <string> trust-anchor <string>; dnssec-must-be-secure <string> <boolean>; dnssec-secure-to-insecure <boolean>; - dnssec-validation <boolean>; + dnssec-validation ( yes | no | auto ); dual-stack-servers [ port <integer> ] { ( <quoted_string> [ port <integer> ] | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ); ... }; @@ -387,6 +396,10 @@ view <string> <optional_class> { recursion <boolean>; request-ixfr <boolean>; request-nsid <boolean>; + response-policy { + zone <string> [ policy ( given | no-op | nxdomain | nodata + | cname <domain> ) ]; + }; rfc2308-type1 <boolean>; // not yet implemented root-delegation-only [ exclude { <quoted_string>; ... } ]; rrset-order { [ class <string> ] [ type <string> ] [ name @@ -493,6 +506,9 @@ view <string> <optional_class> { nsec3-test-zone <boolean>; // test only pubkey <integer> <integer> <integer> <quoted_string>; // obsolete + server-addresses { ( <ipv4_address> | <ipv6_address> ) [ + port <integer> ]; ... }; + server-names { <quoted_string>; ... }; sig-signing-nodes <integer>; sig-signing-signatures <integer>; sig-signing-type <integer>; @@ -502,14 +518,14 @@ view <string> <optional_class> { transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; try-tcp-refresh <boolean>; - type ( master | slave | stub | hint | forward | - delegation-only ); + type ( master | slave | stub | static-stub | hint | forward + | delegation-only ); update-check-ksk <boolean>; update-policy ( local | { ( grant | deny ) <string> ( name | subdomain | wildcard | self | selfsub | selfwild | krb5-self | ms-self | krb5-subdomain | ms-subdomain | - tcp-self | 6to4-self | zonesub ) [ <string> ] - <rrtypelist>; ... }; + tcp-self | 6to4-self | zonesub | external ) [ <string> + ] <rrtypelist>; ... }; use-alt-transfer-source <boolean>; zero-no-soa-ttl <boolean>; zone-statistics <boolean>; @@ -575,6 +591,9 @@ zone <string> <optional_class> { notify-to-soa <boolean>; nsec3-test-zone <boolean>; // test only pubkey <integer> <integer> <integer> <quoted_string>; // obsolete + server-addresses { ( <ipv4_address> | <ipv6_address> ) [ port + <integer> ]; ... }; + server-names { <quoted_string>; ... }; sig-signing-nodes <integer>; sig-signing-signatures <integer>; sig-signing-type <integer>; @@ -582,12 +601,13 @@ zone <string> <optional_class> { transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; try-tcp-refresh <boolean>; - type ( master | slave | stub | hint | forward | delegation-only ); + type ( master | slave | stub | static-stub | hint | forward | + delegation-only ); update-check-ksk <boolean>; update-policy ( local | { ( grant | deny ) <string> ( name | subdomain | wildcard | self | selfsub | selfwild | krb5-self | ms-self | krb5-subdomain | ms-subdomain | tcp-self | 6to4-self - | zonesub ) [ <string> ] <rrtypelist>; ... }; + | zonesub | external ) [ <string> ] <rrtypelist>; ... }; use-alt-transfer-source <boolean>; zero-no-soa-ttl <boolean>; zone-statistics <boolean>; diff --git a/lib/bind9/api b/lib/bind9/api index 94575eb4..78dd0b40 100644 --- a/lib/bind9/api +++ b/lib/bind9/api @@ -1,3 +1,3 @@ LIBINTERFACE = 80 -LIBREVISION = 0 +LIBREVISION = 1 LIBAGE = 0 diff --git a/lib/bind9/check.c b/lib/bind9/check.c index 43e929d3..6fa9aa9a 100644 --- a/lib/bind9/check.c +++ b/lib/bind9/check.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: check.c,v 1.122 2010/12/08 23:47:06 tbox Exp $ */ +/* $Id: check.c,v 1.125 2011-01-07 23:47:07 tbox Exp $ */ /*! \file */ @@ -696,6 +696,12 @@ check_options(const cfg_obj_t *options, isc_log_t *logctx, isc_mem_t *mctx) { { "statistics-interval", 60, 28 * 24 * 60 }, /* 28 days */ }; + static const char *server_contact[] = { + "empty-server", "empty-contact", + "dns64-server", "dns64-contact", + NULL + }; + /* * Check that fields specified in units of time other than seconds * have reasonable values. @@ -938,38 +944,29 @@ check_options(const cfg_obj_t *options, isc_log_t *logctx, isc_mem_t *mctx) { } /* - * Check empty zone configuration. + * Check server/contacts for syntactic validity. */ - obj = NULL; - (void)cfg_map_get(options, "empty-server", &obj); - if (obj != NULL) { - str = cfg_obj_asstring(obj); - isc_buffer_init(&b, str, strlen(str)); - isc_buffer_add(&b, strlen(str)); - tresult = dns_name_fromtext(dns_fixedname_name(&fixed), &b, - dns_rootname, 0, NULL); - if (tresult != ISC_R_SUCCESS) { - cfg_obj_log(obj, logctx, ISC_LOG_ERROR, - "empty-server: invalid name '%s'", str); - result = ISC_R_FAILURE; - } - } - - obj = NULL; - (void)cfg_map_get(options, "empty-contact", &obj); - if (obj != NULL) { - str = cfg_obj_asstring(obj); - isc_buffer_init(&b, str, strlen(str)); - isc_buffer_add(&b, strlen(str)); - tresult = dns_name_fromtext(dns_fixedname_name(&fixed), &b, - dns_rootname, 0, NULL); - if (tresult != ISC_R_SUCCESS) { - cfg_obj_log(obj, logctx, ISC_LOG_ERROR, - "empty-contact: invalid name '%s'", str); - result = ISC_R_FAILURE; + for (i= 0; server_contact[i] != NULL; i++) { + obj = NULL; + (void)cfg_map_get(options, server_contact[i], &obj); + if (obj != NULL) { + str = cfg_obj_asstring(obj); + isc_buffer_init(&b, str, strlen(str)); + isc_buffer_add(&b, strlen(str)); + tresult = dns_name_fromtext(dns_fixedname_name(&fixed), + &b, dns_rootname, 0, NULL); + if (tresult != ISC_R_SUCCESS) { + cfg_obj_log(obj, logctx, ISC_LOG_ERROR, + "%s: invalid name '%s'", + server_contact[i], str); + result = ISC_R_FAILURE; + } } } + /* + * Check empty zone configuration. + */ obj = NULL; (void)cfg_map_get(options, "disable-empty-zone", &obj); for (element = cfg_list_first(obj); @@ -1225,7 +1222,8 @@ check_update_policy(const cfg_obj_t *policy, isc_log_t *logctx) { #define HINTZONE 8 #define FORWARDZONE 16 #define DELEGATIONZONE 32 -#define CHECKACL 64 +#define STATICSTUBZONE 64 +#define CHECKACL 128 typedef struct { const char *name; @@ -1238,7 +1236,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, dns_rdataclass_t defclass, cfg_aclconfctx_t *actx, isc_log_t *logctx, isc_mem_t *mctx) { - const char *zname; + const char *znamestr; const char *typestr; unsigned int ztype; const cfg_obj_t *zoptions; @@ -1248,11 +1246,14 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, unsigned int i; dns_rdataclass_t zclass; dns_fixedname_t fixedname; + dns_name_t *zname = NULL; isc_buffer_t b; isc_boolean_t root = ISC_FALSE; + const cfg_listelt_t *element; static optionstable options[] = { - { "allow-query", MASTERZONE | SLAVEZONE | STUBZONE | CHECKACL }, + { "allow-query", MASTERZONE | SLAVEZONE | STUBZONE | CHECKACL | + STATICSTUBZONE }, { "allow-notify", SLAVEZONE | CHECKACL }, { "allow-transfer", MASTERZONE | SLAVEZONE | CHECKACL }, { "notify", MASTERZONE | SLAVEZONE }, @@ -1281,7 +1282,8 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, { "sig-signing-nodes", MASTERZONE }, { "sig-signing-type", MASTERZONE }, { "sig-signing-signatures", MASTERZONE }, - { "zone-statistics", MASTERZONE | SLAVEZONE | STUBZONE }, + { "zone-statistics", MASTERZONE | SLAVEZONE | STUBZONE | + STATICSTUBZONE}, { "allow-update", MASTERZONE | CHECKACL }, { "allow-update-forwarding", SLAVEZONE | CHECKACL }, { "file", MASTERZONE | SLAVEZONE | STUBZONE | HINTZONE }, @@ -1304,6 +1306,8 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, { "dnssec-dnskey-kskonly", MASTERZONE }, { "auto-dnssec", MASTERZONE }, { "try-tcp-refresh", SLAVEZONE }, + { "server-addresses", STATICSTUBZONE }, + { "server-names", STATICSTUBZONE }, }; static optionstable dialups[] = { @@ -1313,7 +1317,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, { "passive", SLAVEZONE | STUBZONE }, }; - zname = cfg_obj_asstring(cfg_tuple_get(zconfig, "name")); + znamestr = cfg_obj_asstring(cfg_tuple_get(zconfig, "name")); zoptions = cfg_tuple_get(zconfig, "options"); @@ -1321,7 +1325,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, (void)cfg_map_get(zoptions, "type", &obj); if (obj == NULL) { cfg_obj_log(zconfig, logctx, ISC_LOG_ERROR, - "zone '%s': type not present", zname); + "zone '%s': type not present", znamestr); return (ISC_R_FAILURE); } @@ -1332,6 +1336,8 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, ztype = SLAVEZONE; else if (strcasecmp(typestr, "stub") == 0) ztype = STUBZONE; + else if (strcasecmp(typestr, "static-stub") == 0) + ztype = STATICSTUBZONE; else if (strcasecmp(typestr, "forward") == 0) ztype = FORWARDZONE; else if (strcasecmp(typestr, "hint") == 0) @@ -1341,7 +1347,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, else { cfg_obj_log(obj, logctx, ISC_LOG_ERROR, "zone '%s': invalid type %s", - zname, typestr); + znamestr, typestr); return (ISC_R_FAILURE); } @@ -1355,14 +1361,14 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, if (result != ISC_R_SUCCESS) { cfg_obj_log(obj, logctx, ISC_LOG_ERROR, "zone '%s': invalid class %s", - zname, r.base); + znamestr, r.base); return (ISC_R_FAILURE); } if (zclass != defclass) { cfg_obj_log(obj, logctx, ISC_LOG_ERROR, "zone '%s': class '%s' does not " "match view/default class", - zname, r.base); + znamestr, r.base); return (ISC_R_FAILURE); } } @@ -1373,26 +1379,25 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, * deals with strings. */ dns_fixedname_init(&fixedname); - isc_buffer_init(&b, zname, strlen(zname)); - isc_buffer_add(&b, strlen(zname)); + isc_buffer_init(&b, znamestr, strlen(znamestr)); + isc_buffer_add(&b, strlen(znamestr)); tresult = dns_name_fromtext(dns_fixedname_name(&fixedname), &b, dns_rootname, DNS_NAME_DOWNCASE, NULL); if (tresult != ISC_R_SUCCESS) { cfg_obj_log(zconfig, logctx, ISC_LOG_ERROR, - "zone '%s': is not a valid name", zname); + "zone '%s': is not a valid name", znamestr); result = ISC_R_FAILURE; } else { char namebuf[DNS_NAME_FORMATSIZE]; - dns_name_format(dns_fixedname_name(&fixedname), - namebuf, sizeof(namebuf)); + zname = dns_fixedname_name(&fixedname); + dns_name_format(zname, namebuf, sizeof(namebuf)); tresult = nameexist(zconfig, namebuf, ztype == HINTZONE ? 1 : 2, symtab, "zone '%s': already exists " "previous definition: %s:%u", logctx, mctx); if (tresult != ISC_R_SUCCESS) result = tresult; - if (dns_name_equal(dns_fixedname_name(&fixedname), - dns_rootname)) + if (dns_name_equal(zname, dns_rootname)) root = ISC_TRUE; } @@ -1411,13 +1416,15 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, cfg_obj_log(obj, logctx, ISC_LOG_ERROR, "option '%s' is not allowed " "in '%s' zone '%s'", - options[i].name, typestr, zname); + options[i].name, typestr, + znamestr); result = ISC_R_FAILURE; } else cfg_obj_log(obj, logctx, ISC_LOG_WARNING, "option '%s' is not allowed " "in '%s' zone '%s'", - options[i].name, typestr, zname); + options[i].name, typestr, + znamestr); } obj = NULL; if ((options[i].allowed & ztype) != 0 && @@ -1439,7 +1446,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, if (cfg_map_get(zoptions, "masters", &obj) != ISC_R_SUCCESS) { cfg_obj_log(zoptions, logctx, ISC_LOG_ERROR, "zone '%s': missing 'masters' entry", - zname); + znamestr); result = ISC_R_FAILURE; } else { isc_uint32_t count; @@ -1450,7 +1457,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, if (tresult == ISC_R_SUCCESS && count == 0) { cfg_obj_log(zoptions, logctx, ISC_LOG_ERROR, "zone '%s': empty 'masters' entry", - zname); + znamestr); result = ISC_R_FAILURE; } } @@ -1472,7 +1479,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, cfg_obj_log(obj, logctx, ISC_LOG_ERROR, "zone '%s': 'allow-update' is ignored " "when 'update-policy' is present", - zname); + znamestr); result = ISC_R_FAILURE; } else if (res2 == ISC_R_SUCCESS && check_update_policy(obj, logctx) != ISC_R_SUCCESS) @@ -1531,7 +1538,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, "dialup type '%s' is not " "allowed in '%s' " "zone '%s'", - str, typestr, zname); + str, typestr, znamestr); result = ISC_R_FAILURE; } break; @@ -1539,7 +1546,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, if (i == sizeof(dialups) / sizeof(dialups[0])) { cfg_obj_log(obj, logctx, ISC_LOG_ERROR, "invalid dialup type '%s' in zone " - "'%s'", str, zname); + "'%s'", str, znamestr); result = ISC_R_FAILURE; } } @@ -1563,6 +1570,78 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, result = ISC_R_FAILURE; /* + * Check validity of static stub server addresses. + */ + obj = NULL; + (void)cfg_map_get(zoptions, "server-addresses", &obj); + if (ztype == STATICSTUBZONE && obj != NULL) { + for (element = cfg_list_first(obj); + element != NULL; + element = cfg_list_next(element)) + { + isc_sockaddr_t sa; + isc_netaddr_t na; + obj = cfg_listelt_value(element); + sa = *cfg_obj_assockaddr(obj); + + if (isc_sockaddr_getport(&sa) != 0) { + result = ISC_R_FAILURE; + cfg_obj_log(obj, logctx, ISC_LOG_ERROR, + "port is not configurable for " + "static stub server-addresses"); + } + + isc_netaddr_fromsockaddr(&na, &sa); + if (isc_netaddr_getzone(&na) != 0) { + result = ISC_R_FAILURE; + cfg_obj_log(obj, logctx, ISC_LOG_ERROR, + "scoped address is not allowed " + "for static stub " + "server-addresses"); + } + } + } + + /* + * Check validity of static stub server names. + */ + obj = NULL; + (void)cfg_map_get(zoptions, "server-names", &obj); + if (zname != NULL && ztype == STATICSTUBZONE && obj != NULL) { + for (element = cfg_list_first(obj); + element != NULL; + element = cfg_list_next(element)) + { + const char *snamestr; + dns_fixedname_t fixed_sname; + isc_buffer_t b2; + dns_name_t *sname; + + obj = cfg_listelt_value(element); + snamestr = cfg_obj_asstring(obj); + + dns_fixedname_init(&fixed_sname); + isc_buffer_init(&b2, snamestr, strlen(snamestr)); + isc_buffer_add(&b2, strlen(snamestr)); + sname = dns_fixedname_name(&fixed_sname); + tresult = dns_name_fromtext(sname, &b2, dns_rootname, + 0, NULL); + if (tresult != ISC_R_SUCCESS) { + cfg_obj_log(zconfig, logctx, ISC_LOG_ERROR, + "server-name '%s' is not a valid " + "name", snamestr); + result = ISC_R_FAILURE; + } else if (dns_name_issubdomain(sname, zname)) { + cfg_obj_log(zconfig, logctx, ISC_LOG_ERROR, + "server-name '%s' must not be a " + "subdomain of zone name '%s'", + snamestr, znamestr); + result = ISC_R_FAILURE; + } + } + } + + /* * Check various options. */ tresult = check_options(zoptions, logctx, mctx); @@ -1585,7 +1664,7 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, (ztype == MASTERZONE || ztype == HINTZONE)) { cfg_obj_log(zconfig, logctx, ISC_LOG_ERROR, "zone '%s': missing 'file' entry", - zname); + znamestr); result = tresult; } } diff --git a/lib/bind9/win32/libbind9.dsp b/lib/bind9/win32/libbind9.dsp index be429cfc..d6087f3d 100644 --- a/lib/bind9/win32/libbind9.dsp +++ b/lib/bind9/win32/libbind9.dsp @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "libbind9_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../../libxml2-2.7.3/include" /I "../../../lib/dns/win32/include" /I "../..../lib/dns/sec/openssl/include" /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isccfg/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "NDEBUG" /D "WIN32" /D "__STDC__" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBBIND9_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../../libxml2-2.7.3/include" /I "../../../lib/dns/win32/include" /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isccfg/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "NDEBUG" /D "WIN32" /D "__STDC__" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBBIND9_EXPORTS" /YX /FD /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
diff --git a/lib/bind9/win32/libbind9.mak b/lib/bind9/win32/libbind9.mak index e630b906..73d3608e 100644 --- a/lib/bind9/win32/libbind9.mak +++ b/lib/bind9/win32/libbind9.mak @@ -137,7 +137,7 @@ CLEAN : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../../libxml2-2.7.3/include" /I "../../../lib/dns/win32/include" /I "../..../lib/dns/sec/openssl/include" /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isccfg/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "NDEBUG" /D "WIN32" /D "__STDC__" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBBIND9_EXPORTS" /Fp"$(INTDIR)\libbind9.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../../libxml2-2.7.3/include" /I "../../../lib/dns/win32/include" /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isccfg/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "NDEBUG" /D "WIN32" /D "__STDC__" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBBIND9_EXPORTS" /Fp"$(INTDIR)\libbind9.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\libbind9.bsc"
diff --git a/lib/dns/Makefile.in b/lib/dns/Makefile.in index 5e26cd9b..45c5c2a4 100644 --- a/lib/dns/Makefile.in +++ b/lib/dns/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -13,7 +13,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.172 2010/12/08 02:46:16 marka Exp $ +# $Id: Makefile.in,v 1.176 2011-01-13 01:59:27 marka Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -47,7 +47,7 @@ LIBS = @LIBS@ # Alphabetically OPENSSLLINKOBJS = openssl_link.@O@ openssldh_link.@O@ openssldsa_link.@O@ \ - opensslrsa_link.@O@ + opensslgost_link.@O@ opensslrsa_link.@O@ DSTOBJS = @DST_EXTRA_OBJS@ @OPENSSLLINKOBJS@ \ dst_api.@O@ dst_lib.@O@ dst_parse.@O@ dst_result.@O@ \ @@ -64,10 +64,10 @@ DNSOBJS = acache.@O@ acl.@O@ adb.@O@ byaddr.@O@ \ name.@O@ ncache.@O@ nsec.@O@ nsec3.@O@ order.@O@ peer.@O@ \ portlist.@O@ private.@O@ \ rbt.@O@ rbtdb.@O@ rbtdb64.@O@ rcode.@O@ rdata.@O@ \ - rdatalist.@O@ \ - rdataset.@O@ rdatasetiter.@O@ rdataslab.@O@ request.@O@ \ - resolver.@O@ result.@O@ rootns.@O@ rriterator.@O@ sdb.@O@ \ - sdlz.@O@ soa.@O@ ssu.@O@ \ + rdatalist.@O@ rdataset.@O@ rdatasetiter.@O@ rdataslab.@O@ \ + request.@O@ resolver.@O@ result.@O@ rootns.@O@ rpz.@O@ \ + rriterator.@O@ sdb.@O@ \ + sdlz.@O@ soa.@O@ ssu.@O@ ssu_external.@O@ \ stats.@O@ tcpmsg.@O@ time.@O@ timer.@O@ tkey.@O@ \ tsec.@O@ tsig.@O@ ttl.@O@ validator.@O@ \ version.@O@ view.@O@ xfrin.@O@ zone.@O@ zonekey.@O@ zt.@O@ @@ -75,8 +75,8 @@ DNSOBJS = acache.@O@ acl.@O@ adb.@O@ byaddr.@O@ \ OBJS= ${DNSOBJS} ${OTHEROBJS} ${DSTOBJS} # Alphabetically -OPENSSLLINKSRCS = openssl_link.c openssldh_link.c \ - openssldsa_link.c opensslrsa_link.c +OPENSSLLINKSRCS = openssl_link.c openssldh_link.c openssldsa_link.c \ + opensslgost_link.c opensslrsa_link.c DSTSRCS = @DST_EXTRA_SRCS@ @OPENSSLLINKSRCS@ \ dst_api.c dst_lib.c dst_parse.c \ @@ -90,11 +90,10 @@ DNSSRCS = acache.c acl.c adb.c byaddr.c \ keydata.c keytable.c lib.c log.c lookup.c \ master.c masterdump.c message.c \ name.c ncache.c nsec.c nsec3.c order.c peer.c portlist.c \ - rbt.c rbtdb.c rbtdb64.c rcode.c rdata.c \ - rdatalist.c \ + rbt.c rbtdb.c rbtdb64.c rcode.c rdata.c rdatalist.c \ rdataset.c rdatasetiter.c rdataslab.c request.c \ - resolver.c result.c rootns.c rriterator.c sdb.c sdlz.c \ - soa.c ssu.c \ + resolver.c result.c rootns.c rpz.c rriterator.c \ + sdb.c sdlz.c soa.c ssu.c ssu_external.c \ stats.c tcpmsg.c time.c timer.c tkey.c \ tsec.c tsig.c ttl.c validator.c \ version.c view.c xfrin.c zone.c zonekey.c zt.c ${OTHERSRCS} diff --git a/lib/dns/adb.c b/lib/dns/adb.c index d324453e..fcc2dd8e 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: adb.c,v 1.251 2010/11/16 05:38:31 marka Exp $ */ +/* $Id: adb.c,v 1.254 2010-12-21 23:47:08 tbox Exp $ */ /*! \file * @@ -66,13 +66,6 @@ #define DNS_ADBFETCH6_VALID(x) ISC_MAGIC_VALID(x, DNS_ADBFETCH6_MAGIC) /*! - * The number of buckets needs to be a prime (for good hashing). - * - * XXXRTH How many buckets do we need? - */ -#define NBUCKETS 1009 /*%< how many buckets for names/addrs */ - -/*! * For type 3 negative cache entries, we will remember that the address is * broken for this long. XXXMLG This is also used for actual addresses, too. * The intent is to keep us from constantly asking about A/AAAA records @@ -139,30 +132,37 @@ struct dns_adb { * * XXXRTH Have a per-bucket structure that contains all of these? */ - dns_adbnamelist_t names[NBUCKETS]; - dns_adbnamelist_t deadnames[NBUCKETS]; - /*% See dns_adbnamelist_t */ - isc_mutex_t namelocks[NBUCKETS]; - /*% See dns_adbnamelist_t */ - isc_boolean_t name_sd[NBUCKETS]; - /*% See dns_adbnamelist_t */ - unsigned int name_refcnt[NBUCKETS]; + unsigned int nnames; + isc_mutex_t namescntlock; + unsigned int namescnt; + dns_adbnamelist_t *names; + dns_adbnamelist_t *deadnames; + isc_mutex_t *namelocks; + isc_boolean_t *name_sd; + unsigned int *name_refcnt; /*! - * Bucketized locks for entries. + * Bucketized locks and lists for entries. * * XXXRTH Have a per-bucket structure that contains all of these? */ - dns_adbentrylist_t entries[NBUCKETS]; - dns_adbentrylist_t deadentries[NBUCKETS]; - isc_mutex_t entrylocks[NBUCKETS]; - isc_boolean_t entry_sd[NBUCKETS]; /*%< shutting down */ - unsigned int entry_refcnt[NBUCKETS]; + unsigned int nentries; + isc_mutex_t entriescntlock; + unsigned int entriescnt; + dns_adbentrylist_t *entries; + dns_adbentrylist_t *deadentries; + isc_mutex_t *entrylocks; + isc_boolean_t *entry_sd; /*%< shutting down */ + unsigned int *entry_refcnt; isc_event_t cevent; isc_boolean_t cevent_sent; isc_boolean_t shutting_down; isc_eventlist_t whenshutdown; + isc_event_t growentries; + isc_boolean_t growentries_sent; + isc_event_t grownames; + isc_boolean_t grownames_sent; }; /* @@ -484,6 +484,322 @@ ttlclamp(dns_ttl_t ttl) { } /* + * Hashing is most efficient if the number of buckets is prime. + * The sequence below is the closest previous primes to 2^n and + * 1.5 * 2^n, for values of n from 10 to 28. (The tables will + * no longer grow beyond 2^28 entries.) + */ +static const unsigned nbuckets[] = { 1021, 1531, 2039, 3067, 4093, 6143, + 8191, 12281, 16381, 24571, 32749, + 49193, 65521, 98299, 131071, 199603, + 262139, 393209, 524287, 768431, 1048573, + 1572853, 2097143, 3145721, 4194301, + 6291449, 8388593, 12582893, 16777213, + 25165813, 33554393, 50331599, 67108859, + 100663291, 134217689, 201326557, + 268535431, 0 }; + +static void +grow_entries(isc_task_t *task, isc_event_t *ev) { + dns_adb_t *adb; + dns_adbentry_t *e; + dns_adbentrylist_t *newdeadentries = NULL; + dns_adbentrylist_t *newentries = NULL; + isc_boolean_t *newentry_sd = NULL; + isc_mutex_t *newentrylocks = NULL; + isc_result_t result; + unsigned int *newentry_refcnt = NULL; + unsigned int i, n, bucket; + + adb = ev->ev_arg; + INSIST(DNS_ADB_VALID(adb)); + + isc_event_free(&ev); + + isc_task_beginexclusive(task); + + i = 0; + while (nbuckets[i] != 0 && adb->nentries >= nbuckets[i]) + i++; + if (nbuckets[i] != 0) + n = nbuckets[i]; + else + goto done; + + DP(ISC_LOG_INFO, "adb: grow_entries to %u starting", n); + + /* + * Are we shutting down? + */ + for (i = 0; i < adb->nentries; i++) + if (adb->entry_sd[i]) + goto cleanup; + + /* + * Grab all the resources we need. + */ + newentries = isc_mem_get(adb->mctx, sizeof(*newentries) * n); + newdeadentries = isc_mem_get(adb->mctx, sizeof(*newdeadentries) * n); + newentrylocks = isc_mem_get(adb->mctx, sizeof(*newentrylocks) * n); + newentry_sd = isc_mem_get(adb->mctx, sizeof(*newentry_sd) * n); + newentry_refcnt = isc_mem_get(adb->mctx, sizeof(*newentry_refcnt) * n); + if (newentries == NULL || newdeadentries == NULL || + newentrylocks == NULL || newentry_sd == NULL || + newentry_refcnt == NULL) + goto cleanup; + + /* + * Initialise the new resources. + */ + result = isc_mutexblock_init(newentrylocks, n); + if (result != ISC_R_SUCCESS) + goto cleanup; + + for (i = 0; i < n; i++) { + ISC_LIST_INIT(newentries[i]); + ISC_LIST_INIT(newdeadentries[i]); + newentry_sd[i] = ISC_FALSE; + newentry_refcnt[i] = 0; + adb->irefcnt++; + } + + /* + * Move entries to new arrays. + */ + for (i = 0; i < adb->nentries; i++) { + e = ISC_LIST_HEAD(adb->entries[i]); + while (e != NULL) { + ISC_LIST_UNLINK(adb->entries[i], e, plink); + bucket = isc_sockaddr_hash(&e->sockaddr, ISC_TRUE) % n; + e->lock_bucket = bucket; + ISC_LIST_APPEND(newentries[bucket], e, plink); + INSIST(adb->entry_refcnt[i] > 0); + adb->entry_refcnt[i]--; + newentry_refcnt[bucket]++; + e = ISC_LIST_HEAD(adb->entries[i]); + } + e = ISC_LIST_HEAD(adb->deadentries[i]); + while (e != NULL) { + ISC_LIST_UNLINK(adb->deadentries[i], e, plink); + bucket = isc_sockaddr_hash(&e->sockaddr, ISC_TRUE) % n; + e->lock_bucket = bucket; + ISC_LIST_APPEND(newdeadentries[bucket], e, plink); + INSIST(adb->entry_refcnt[i] > 0); + adb->entry_refcnt[i]--; + newentry_refcnt[bucket]++; + e = ISC_LIST_HEAD(adb->deadentries[i]); + } + INSIST(adb->entry_refcnt[i] == 0); + adb->irefcnt--; + } + + /* + * Cleanup old resources. + */ + DESTROYMUTEXBLOCK(adb->entrylocks, adb->nentries); + isc_mem_put(adb->mctx, adb->entries, + sizeof(*adb->entries) * adb->nentries); + isc_mem_put(adb->mctx, adb->deadentries, + sizeof(*adb->deadentries) * adb->nentries); + isc_mem_put(adb->mctx, adb->entrylocks, + sizeof(*adb->entrylocks) * adb->nentries); + isc_mem_put(adb->mctx, adb->entry_sd, + sizeof(*adb->entry_sd) * adb->nentries); + isc_mem_put(adb->mctx, adb->entry_refcnt, + sizeof(*adb->entry_refcnt) * adb->nentries); + + /* + * Install new resources. + */ + adb->entries = newentries; + adb->deadentries = newdeadentries; + adb->entrylocks = newentrylocks; + adb->entry_sd = newentry_sd; + adb->entry_refcnt = newentry_refcnt; + adb->nentries = n; + + /* + * Only on success do we set adb->growentries_sent to ISC_FALSE. + * This will prevent us being continuously being called on error. + */ + adb->growentries_sent = ISC_FALSE; + goto done; + + cleanup: + if (newentries != NULL) + isc_mem_put(adb->mctx, newentries, + sizeof(*newentries) * n); + if (newdeadentries != NULL) + isc_mem_put(adb->mctx, newdeadentries, + sizeof(*newdeadentries) * n); + if (newentrylocks != NULL) + isc_mem_put(adb->mctx, newentrylocks, + sizeof(*newentrylocks) * n); + if (newentry_sd != NULL) + isc_mem_put(adb->mctx, newentry_sd, + sizeof(*newentry_sd) * n); + if (newentry_refcnt != NULL) + isc_mem_put(adb->mctx, newentry_refcnt, + sizeof(*newentry_refcnt) * n); + done: + isc_task_endexclusive(task); + + LOCK(&adb->lock); + if (dec_adb_irefcnt(adb)) + check_exit(adb); + UNLOCK(&adb->lock); + DP(ISC_LOG_INFO, "adb: grow_entries finished"); +} + +static void +grow_names(isc_task_t *task, isc_event_t *ev) { + dns_adb_t *adb; + dns_adbname_t *name; + dns_adbnamelist_t *newdeadnames = NULL; + dns_adbnamelist_t *newnames = NULL; + isc_boolean_t *newname_sd = NULL; + isc_mutex_t *newnamelocks = NULL; + isc_result_t result; + unsigned int *newname_refcnt = NULL; + unsigned int i, n, bucket; + + adb = ev->ev_arg; + INSIST(DNS_ADB_VALID(adb)); + + isc_event_free(&ev); + + isc_task_beginexclusive(task); + + i = 0; + while (nbuckets[i] != 0 && adb->nnames >= nbuckets[i]) + i++; + if (nbuckets[i] != 0) + n = nbuckets[i]; + else + goto done; + + DP(ISC_LOG_INFO, "adb: grow_names to %u starting", n); + + /* + * Are we shutting down? + */ + for (i = 0; i < adb->nnames; i++) + if (adb->name_sd[i]) + goto cleanup; + + /* + * Grab all the resources we need. + */ + newnames = isc_mem_get(adb->mctx, sizeof(*newnames) * n); + newdeadnames = isc_mem_get(adb->mctx, sizeof(*newdeadnames) * n); + newnamelocks = isc_mem_get(adb->mctx, sizeof(*newnamelocks) * n); + newname_sd = isc_mem_get(adb->mctx, sizeof(*newname_sd) * n); + newname_refcnt = isc_mem_get(adb->mctx, sizeof(*newname_refcnt) * n); + if (newnames == NULL || newdeadnames == NULL || + newnamelocks == NULL || newname_sd == NULL || + newname_refcnt == NULL) + goto cleanup; + + /* + * Initialise the new resources. + */ + result = isc_mutexblock_init(newnamelocks, n); + if (result != ISC_R_SUCCESS) + goto cleanup; + + for (i = 0; i < n; i++) { + ISC_LIST_INIT(newnames[i]); + ISC_LIST_INIT(newdeadnames[i]); + newname_sd[i] = ISC_FALSE; + newname_refcnt[i] = 0; + adb->irefcnt++; + } + + /* + * Move names to new arrays. + */ + for (i = 0; i < adb->nnames; i++) { + name = ISC_LIST_HEAD(adb->names[i]); + while (name != NULL) { + ISC_LIST_UNLINK(adb->names[i], name, plink); + bucket = dns_name_fullhash(&name->name, ISC_TRUE) % n; + name->lock_bucket = bucket; + ISC_LIST_APPEND(newnames[bucket], name, plink); + INSIST(adb->name_refcnt[i] > 0); + adb->name_refcnt[i]--; + newname_refcnt[bucket]++; + name = ISC_LIST_HEAD(adb->names[i]); + } + name = ISC_LIST_HEAD(adb->deadnames[i]); + while (name != NULL) { + ISC_LIST_UNLINK(adb->deadnames[i], name, plink); + bucket = dns_name_fullhash(&name->name, ISC_TRUE) % n; + name->lock_bucket = bucket; + ISC_LIST_APPEND(newdeadnames[bucket], name, plink); + INSIST(adb->name_refcnt[i] > 0); + adb->name_refcnt[i]--; + newname_refcnt[bucket]++; + name = ISC_LIST_HEAD(adb->deadnames[i]); + } + INSIST(adb->name_refcnt[i] == 0); + adb->irefcnt--; + } + + /* + * Cleanup old resources. + */ + DESTROYMUTEXBLOCK(adb->namelocks, adb->nnames); + isc_mem_put(adb->mctx, adb->names, + sizeof(*adb->names) * adb->nnames); + isc_mem_put(adb->mctx, adb->deadnames, + sizeof(*adb->deadnames) * adb->nnames); + isc_mem_put(adb->mctx, adb->namelocks, + sizeof(*adb->namelocks) * adb->nnames); + isc_mem_put(adb->mctx, adb->name_sd, + sizeof(*adb->name_sd) * adb->nnames); + isc_mem_put(adb->mctx, adb->name_refcnt, + sizeof(*adb->name_refcnt) * adb->nnames); + + /* + * Install new resources. + */ + adb->names = newnames; + adb->deadnames = newdeadnames; + adb->namelocks = newnamelocks; + adb->name_sd = newname_sd; + adb->name_refcnt = newname_refcnt; + adb->nnames = n; + + /* + * Only on success do we set adb->grownames_sent to ISC_FALSE. + * This will prevent us being continuously being called on error. + */ + adb->grownames_sent = ISC_FALSE; + goto done; + + cleanup: + if (newnames != NULL) + isc_mem_put(adb->mctx, newnames, sizeof(*newnames) * n); + if (newdeadnames != NULL) + isc_mem_put(adb->mctx, newdeadnames, sizeof(*newdeadnames) * n); + if (newnamelocks != NULL) + isc_mem_put(adb->mctx, newnamelocks, sizeof(*newnamelocks) * n); + if (newname_sd != NULL) + isc_mem_put(adb->mctx, newname_sd, sizeof(*newname_sd) * n); + if (newname_refcnt != NULL) + isc_mem_put(adb->mctx, newname_refcnt, + sizeof(*newname_refcnt) * n); + done: + isc_task_endexclusive(task); + + LOCK(&adb->lock); + if (dec_adb_irefcnt(adb)) + check_exit(adb); + UNLOCK(&adb->lock); + DP(ISC_LOG_INFO, "adb: grow_names finished"); +} + +/* * Requires the adbname bucket be locked and that no entry buckets be locked. * * This code handles A and AAAA rdatasets only. @@ -836,12 +1152,12 @@ violate_locking_hierarchy(isc_mutex_t *have, isc_mutex_t *want) { */ static isc_boolean_t shutdown_names(dns_adb_t *adb) { - int bucket; + unsigned int bucket; isc_boolean_t result = ISC_FALSE; dns_adbname_t *name; dns_adbname_t *next_name; - for (bucket = 0; bucket < NBUCKETS; bucket++) { + for (bucket = 0; bucket < adb->nnames; bucket++) { LOCK(&adb->namelocks[bucket]); adb->name_sd[bucket] = ISC_TRUE; @@ -881,12 +1197,12 @@ shutdown_names(dns_adb_t *adb) { */ static isc_boolean_t shutdown_entries(dns_adb_t *adb) { - int bucket; + unsigned int bucket; isc_boolean_t result = ISC_FALSE; dns_adbentry_t *entry; dns_adbentry_t *next_entry; - for (bucket = 0; bucket < NBUCKETS; bucket++) { + for (bucket = 0; bucket < adb->nentries; bucket++) { LOCK(&adb->entrylocks[bucket]); adb->entry_sd[bucket] = ISC_TRUE; @@ -1306,6 +1622,16 @@ new_adbname(dns_adb_t *adb, dns_name_t *dnsname) { ISC_LIST_INIT(name->finds); ISC_LINK_INIT(name, plink); + LOCK(&adb->namescntlock); + adb->namescnt++; + if (!adb->grownames_sent && adb->namescnt > (adb->nnames * 8)) { + isc_event_t *event = &adb->grownames; + inc_adb_irefcnt(adb); + isc_task_send(adb->task, &event); + adb->grownames_sent = ISC_TRUE; + } + UNLOCK(&adb->namescntlock); + return (name); } @@ -1329,6 +1655,9 @@ free_adbname(dns_adb_t *adb, dns_adbname_t **name) { dns_name_free(&n->name, adb->mctx); isc_mempool_put(adb->nmp, n); + LOCK(&adb->namescntlock); + adb->namescnt--; + UNLOCK(&adb->namescntlock); } static inline dns_adbnamehook_t * @@ -1417,6 +1746,16 @@ new_adbentry(dns_adb_t *adb) { e->expires = 0; ISC_LIST_INIT(e->lameinfo); ISC_LINK_INIT(e, plink); + LOCK(&adb->entriescntlock); + adb->entriescnt++; + if (!adb->growentries_sent && + adb->entriescnt > (adb->nentries * 8)) { + isc_event_t *event = &adb->growentries; + inc_adb_irefcnt(adb); + isc_task_send(adb->task, &event); + adb->growentries_sent = ISC_TRUE; + } + UNLOCK(&adb->entriescntlock); return (e); } @@ -1444,6 +1783,9 @@ free_adbentry(dns_adb_t *adb, dns_adbentry_t **entry) { } isc_mempool_put(adb->emp, e); + LOCK(&adb->entriescntlock); + adb->entriescnt--; + UNLOCK(&adb->entriescntlock); } static inline dns_adbfind_t * @@ -1597,7 +1939,7 @@ find_name_and_lock(dns_adb_t *adb, dns_name_t *name, dns_adbname_t *adbname; int bucket; - bucket = dns_name_fullhash(name, ISC_FALSE) % NBUCKETS; + bucket = dns_name_fullhash(name, ISC_FALSE) % adb->nnames; if (*bucketp == DNS_ADB_INVALIDBUCKET) { LOCK(&adb->namelocks[bucket]); @@ -1639,7 +1981,7 @@ find_entry_and_lock(dns_adb_t *adb, isc_sockaddr_t *addr, int *bucketp, dns_adbentry_t *entry, *entry_next; int bucket; - bucket = isc_sockaddr_hash(addr, ISC_TRUE) % NBUCKETS; + bucket = isc_sockaddr_hash(addr, ISC_TRUE) % adb->nentries; if (*bucketp == DNS_ADB_INVALIDBUCKET) { LOCK(&adb->entrylocks[bucket]); @@ -1992,13 +2334,36 @@ destroy(dns_adb_t *adb) { isc_mempool_destroy(&adb->aimp); isc_mempool_destroy(&adb->afmp); - DESTROYMUTEXBLOCK(adb->entrylocks, NBUCKETS); - DESTROYMUTEXBLOCK(adb->namelocks, NBUCKETS); + DESTROYMUTEXBLOCK(adb->entrylocks, adb->nentries); + isc_mem_put(adb->mctx, adb->entries, + sizeof(*adb->entries) * adb->nentries); + isc_mem_put(adb->mctx, adb->deadentries, + sizeof(*adb->deadentries) * adb->nentries); + isc_mem_put(adb->mctx, adb->entrylocks, + sizeof(*adb->entrylocks) * adb->nentries); + isc_mem_put(adb->mctx, adb->entry_sd, + sizeof(*adb->entry_sd) * adb->nentries); + isc_mem_put(adb->mctx, adb->entry_refcnt, + sizeof(*adb->entry_refcnt) * adb->nentries); + + DESTROYMUTEXBLOCK(adb->namelocks, adb->nnames); + isc_mem_put(adb->mctx, adb->names, + sizeof(*adb->names) * adb->nnames); + isc_mem_put(adb->mctx, adb->deadnames, + sizeof(*adb->deadnames) * adb->nnames); + isc_mem_put(adb->mctx, adb->namelocks, + sizeof(*adb->namelocks) * adb->nnames); + isc_mem_put(adb->mctx, adb->name_sd, + sizeof(*adb->name_sd) * adb->nnames); + isc_mem_put(adb->mctx, adb->name_refcnt, + sizeof(*adb->name_refcnt) * adb->nnames); DESTROYLOCK(&adb->reflock); DESTROYLOCK(&adb->lock); DESTROYLOCK(&adb->mplock); DESTROYLOCK(&adb->overmemlock); + DESTROYLOCK(&adb->entriescntlock); + DESTROYLOCK(&adb->namescntlock); isc_mem_putanddetach(&adb->mctx, adb, sizeof(dns_adb_t)); } @@ -2014,7 +2379,7 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr, { dns_adb_t *adb; isc_result_t result; - int i; + unsigned int i; REQUIRE(mem != NULL); REQUIRE(view != NULL); @@ -2054,6 +2419,30 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr, adb->shutting_down = ISC_FALSE; ISC_LIST_INIT(adb->whenshutdown); + adb->nentries = nbuckets[0]; + adb->entriescnt = 0; + adb->entries = NULL; + adb->deadentries = NULL; + adb->entry_sd = NULL; + adb->entry_refcnt = NULL; + adb->entrylocks = NULL; + ISC_EVENT_INIT(&adb->growentries, sizeof(adb->growentries), 0, NULL, + DNS_EVENT_ADBGROWENTRIES, grow_entries, adb, + adb, NULL, NULL); + adb->growentries_sent = ISC_FALSE; + + adb->nnames = nbuckets[0]; + adb->namescnt = 0; + adb->names = NULL; + adb->deadnames = NULL; + adb->name_sd = NULL; + adb->name_refcnt = NULL; + adb->namelocks = NULL; + ISC_EVENT_INIT(&adb->grownames, sizeof(adb->grownames), 0, NULL, + DNS_EVENT_ADBGROWNAMES, grow_names, adb, + adb, NULL, NULL); + adb->grownames_sent = ISC_FALSE; + isc_mem_attach(mem, &adb->mctx); result = isc_mutex_init(&adb->lock); @@ -2072,28 +2461,68 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr, if (result != ISC_R_SUCCESS) goto fail0e; + result = isc_mutex_init(&adb->entriescntlock); + if (result != ISC_R_SUCCESS) + goto fail0f; + + result = isc_mutex_init(&adb->namescntlock); + if (result != ISC_R_SUCCESS) + goto fail0g; + +#define ALLOCENTRY(adb, el) \ + do { \ + (adb)->el = isc_mem_get((adb)->mctx, \ + sizeof(*(adb)->el) * (adb)->nentries); \ + if ((adb)->el == NULL) { \ + result = ISC_R_NOMEMORY; \ + goto fail1; \ + }\ + } while (0) + ALLOCENTRY(adb, entries); + ALLOCENTRY(adb, deadentries); + ALLOCENTRY(adb, entrylocks); + ALLOCENTRY(adb, entry_sd); + ALLOCENTRY(adb, entry_refcnt); +#undef ALLOCENTRY + +#define ALLOCNAME(adb, el) \ + do { \ + (adb)->el = isc_mem_get((adb)->mctx, \ + sizeof(*(adb)->el) * (adb)->nnames); \ + if ((adb)->el == NULL) { \ + result = ISC_R_NOMEMORY; \ + goto fail1; \ + }\ + } while (0) + ALLOCNAME(adb, names); + ALLOCNAME(adb, deadnames); + ALLOCNAME(adb, namelocks); + ALLOCNAME(adb, name_sd); + ALLOCNAME(adb, name_refcnt); +#undef ALLOCNAME + /* * Initialize the bucket locks for names and elements. * May as well initialize the list heads, too. */ - result = isc_mutexblock_init(adb->namelocks, NBUCKETS); + result = isc_mutexblock_init(adb->namelocks, adb->nnames); if (result != ISC_R_SUCCESS) goto fail1; - for (i = 0; i < NBUCKETS; i++) { + for (i = 0; i < adb->nnames; i++) { ISC_LIST_INIT(adb->names[i]); ISC_LIST_INIT(adb->deadnames[i]); adb->name_sd[i] = ISC_FALSE; adb->name_refcnt[i] = 0; adb->irefcnt++; } - for (i = 0; i < NBUCKETS; i++) { + for (i = 0; i < adb->nentries; i++) { ISC_LIST_INIT(adb->entries[i]); ISC_LIST_INIT(adb->deadentries[i]); adb->entry_sd[i] = ISC_FALSE; adb->entry_refcnt[i] = 0; adb->irefcnt++; } - result = isc_mutexblock_init(adb->entrylocks, NBUCKETS); + result = isc_mutexblock_init(adb->entrylocks, adb->nentries); if (result != ISC_R_SUCCESS) goto fail2; @@ -2140,12 +2569,42 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr, isc_task_detach(&adb->task); /* clean up entrylocks */ - DESTROYMUTEXBLOCK(adb->entrylocks, NBUCKETS); + DESTROYMUTEXBLOCK(adb->entrylocks, adb->nentries); fail2: /* clean up namelocks */ - DESTROYMUTEXBLOCK(adb->namelocks, NBUCKETS); + DESTROYMUTEXBLOCK(adb->namelocks, adb->nnames); fail1: /* clean up only allocated memory */ + if (adb->entries != NULL) + isc_mem_put(adb->mctx, adb->entries, + sizeof(*adb->entries) * adb->nentries); + if (adb->deadentries != NULL) + isc_mem_put(adb->mctx, adb->deadentries, + sizeof(*adb->deadentries) * adb->nentries); + if (adb->entrylocks != NULL) + isc_mem_put(adb->mctx, adb->entrylocks, + sizeof(*adb->entrylocks) * adb->nentries); + if (adb->entry_sd != NULL) + isc_mem_put(adb->mctx, adb->entry_sd, + sizeof(*adb->entry_sd) * adb->nentries); + if (adb->entry_refcnt != NULL) + isc_mem_put(adb->mctx, adb->entry_refcnt, + sizeof(*adb->entry_refcnt) * adb->nentries); + if (adb->names != NULL) + isc_mem_put(adb->mctx, adb->names, + sizeof(*adb->names) * adb->nnames); + if (adb->deadnames != NULL) + isc_mem_put(adb->mctx, adb->deadnames, + sizeof(*adb->deadnames) * adb->nnames); + if (adb->namelocks != NULL) + isc_mem_put(adb->mctx, adb->namelocks, + sizeof(*adb->namelocks) * adb->nnames); + if (adb->name_sd != NULL) + isc_mem_put(adb->mctx, adb->name_sd, + sizeof(*adb->name_sd) * adb->nnames); + if (adb->name_refcnt != NULL) + isc_mem_put(adb->mctx, adb->name_refcnt, + sizeof(*adb->name_refcnt) * adb->nnames); if (adb->nmp != NULL) isc_mempool_destroy(&adb->nmp); if (adb->nhmp != NULL) @@ -2161,6 +2620,10 @@ dns_adb_create(isc_mem_t *mem, dns_view_t *view, isc_timermgr_t *timermgr, if (adb->afmp != NULL) isc_mempool_destroy(&adb->afmp); + DESTROYLOCK(&adb->namescntlock); + fail0g: + DESTROYLOCK(&adb->entriescntlock); + fail0f: DESTROYLOCK(&adb->overmemlock); fail0e: DESTROYLOCK(&adb->reflock); @@ -2728,7 +3191,7 @@ dns_adb_cancelfind(dns_adbfind_t *find) { void dns_adb_dump(dns_adb_t *adb, FILE *f) { - int i; + unsigned int i; isc_stdtime_t now; REQUIRE(DNS_ADB_VALID(adb)); @@ -2744,9 +3207,9 @@ dns_adb_dump(dns_adb_t *adb, FILE *f) { LOCK(&adb->lock); isc_stdtime_get(&now); - for (i = 0; i < NBUCKETS; i++) + for (i = 0; i < adb->nnames; i++) RUNTIME_CHECK(cleanup_names(adb, i, now) == ISC_FALSE); - for (i = 0; i < NBUCKETS; i++) + for (i = 0; i < adb->nentries; i++) RUNTIME_CHECK(cleanup_entries(adb, i, now) == ISC_FALSE); dump_adb(adb, f, ISC_FALSE, now); @@ -2762,7 +3225,7 @@ dump_ttl(FILE *f, const char *legend, isc_stdtime_t value, isc_stdtime_t now) { static void dump_adb(dns_adb_t *adb, FILE *f, isc_boolean_t debug, isc_stdtime_t now) { - int i; + unsigned int i; dns_adbname_t *name; dns_adbentry_t *entry; @@ -2772,15 +3235,15 @@ dump_adb(dns_adb_t *adb, FILE *f, isc_boolean_t debug, isc_stdtime_t now) { adb, adb->erefcnt, adb->irefcnt, isc_mempool_getallocated(adb->nhmp)); - for (i = 0; i < NBUCKETS; i++) + for (i = 0; i < adb->nnames; i++) LOCK(&adb->namelocks[i]); - for (i = 0; i < NBUCKETS; i++) + for (i = 0; i < adb->nentries; i++) LOCK(&adb->entrylocks[i]); /* * Dump the names */ - for (i = 0; i < NBUCKETS; i++) { + for (i = 0; i < adb->nnames; i++) { name = ISC_LIST_HEAD(adb->names[i]); if (name == NULL) continue; @@ -2824,7 +3287,7 @@ dump_adb(dns_adb_t *adb, FILE *f, isc_boolean_t debug, isc_stdtime_t now) { fprintf(f, ";\n; Unassociated entries\n;\n"); - for (i = 0; i < NBUCKETS; i++) { + for (i = 0; i < adb->nentries; i++) { entry = ISC_LIST_HEAD(adb->entries[i]); while (entry != NULL) { if (entry->refcnt == 0) @@ -2836,9 +3299,9 @@ dump_adb(dns_adb_t *adb, FILE *f, isc_boolean_t debug, isc_stdtime_t now) { /* * Unlock everything */ - for (i = 0; i < NBUCKETS; i++) + for (i = 0; i < adb->nentries; i++) UNLOCK(&adb->entrylocks[i]); - for (i = 0; i < NBUCKETS; i++) + for (i = 0; i < adb->nnames; i++) UNLOCK(&adb->namelocks[i]); } @@ -2999,10 +3462,20 @@ dbfind_name(dns_adbname_t *adbname, isc_stdtime_t now, dns_rdatatype_t rdtype) else adbname->fetch6_err = FIND_ERR_UNEXPECTED; - result = dns_view_find(adb->view, &adbname->name, rdtype, now, - NAME_GLUEOK(adbname) ? DNS_DBFIND_GLUEOK : 0, - ISC_TF(NAME_HINTOK(adbname)), - NULL, NULL, fname, &rdataset, NULL); + /* + * We need to specify whether to search static-stub zones (if + * configured) depending on whether this is a "start at zone" lookup, + * i.e., whether it's a "bailiwick" glue. If it's bailiwick (in which + * case NAME_STARTATZONE is set) we need to stop the search at any + * matching static-stub zone without looking into the cache to honor + * the configuration on which server we should send queries to. + */ + result = dns_view_find2(adb->view, &adbname->name, rdtype, now, + NAME_GLUEOK(adbname) ? DNS_DBFIND_GLUEOK : 0, + ISC_TF(NAME_HINTOK(adbname)), + (adbname->flags & NAME_STARTATZONE) != 0 ? + ISC_TRUE : ISC_FALSE, + NULL, NULL, fname, &rdataset, NULL); /* XXXVIX this switch statement is too sparse to gen a jump table. */ switch (result) { @@ -3557,9 +4030,9 @@ dns_adb_flush(dns_adb_t *adb) { /* * Call our cleanup routines. */ - for (i = 0; i < NBUCKETS; i++) + for (i = 0; i < adb->nnames; i++) RUNTIME_CHECK(cleanup_names(adb, i, INT_MAX) == ISC_FALSE); - for (i = 0; i < NBUCKETS; i++) + for (i = 0; i < adb->nentries; i++) RUNTIME_CHECK(cleanup_entries(adb, i, INT_MAX) == ISC_FALSE); #ifdef DUMP_ADB_AFTER_CLEANING @@ -3578,7 +4051,7 @@ dns_adb_flushname(dns_adb_t *adb, dns_name_t *name) { INSIST(DNS_ADB_VALID(adb)); LOCK(&adb->lock); - bucket = dns_name_hash(name, ISC_FALSE) % NBUCKETS; + bucket = dns_name_hash(name, ISC_FALSE) % adb->nnames; LOCK(&adb->namelocks[bucket]); adbname = ISC_LIST_HEAD(adb->names[bucket]); while (adbname != NULL) { diff --git a/lib/dns/api b/lib/dns/api index 94575eb4..e6441e65 100644 --- a/lib/dns/api +++ b/lib/dns/api @@ -1,3 +1,3 @@ -LIBINTERFACE = 80 +LIBINTERFACE = 81 LIBREVISION = 0 LIBAGE = 0 diff --git a/lib/dns/db.c b/lib/dns/db.c index f1ac0043..c74d24df 100644 --- a/lib/dns/db.c +++ b/lib/dns/db.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: db.c,v 1.95 2009/10/08 23:13:06 marka Exp $ */ +/* $Id: db.c,v 1.97 2011-01-13 04:59:25 tbox Exp $ */ /*! \file */ @@ -944,3 +944,21 @@ dns_db_resigned(dns_db_t *db, dns_rdataset_t *rdataset, if (db->methods->resigned != NULL) (db->methods->resigned)(db, rdataset, version); } + +void +dns_db_rpz_enabled(dns_db_t *db, dns_rpz_st_t *st) +{ + if (db->methods->rpz_enabled != NULL) + (db->methods->rpz_enabled)(db, st); +} + +isc_result_t +dns_db_rpz_findips(dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type, + dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *version, + dns_rdataset_t *ardataset, dns_rpz_st_t *st) +{ + if (db->methods->rpz_findips == NULL) + return (ISC_R_NOTIMPLEMENTED); + return ((db->methods->rpz_findips)(rpz, rpz_type, zone, db, version, + ardataset, st)); +} diff --git a/lib/dns/dlz.c b/lib/dns/dlz.c index 66c8fc51..5a508e9c 100644 --- a/lib/dns/dlz.c +++ b/lib/dns/dlz.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2005, 2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dlz.c,v 1.7 2009/01/17 23:47:42 tbox Exp $ */ +/* $Id: dlz.c,v 1.10 2010-12-20 23:47:20 tbox Exp $ */ /*! \file */ @@ -64,6 +64,8 @@ #include <dns/log.h> #include <dns/master.h> #include <dns/dlz.h> +#include <dns/ssu.h> +#include <dns/zone.h> #include <isc/buffer.h> @@ -230,6 +232,12 @@ dns_dlzdestroy(dns_dlzdb_t **dbp) { */ REQUIRE(dbp != NULL && DNS_DLZ_VALID(*dbp)); +#ifdef BIND9 + if ((*dbp)->ssutable != NULL) { + dns_ssutable_detach(&(*dbp)->ssutable); + } +#endif + /* call the drivers destroy method */ if ((*dbp) != NULL) { mctx = (*dbp)->mctx; @@ -499,7 +507,7 @@ dns_dlzunregister(dns_dlzimplementation_t **dlzimp) { mctx = dlz_imp->mctx; /* - * return the memory back to the available memory pool and + * Return the memory back to the available memory pool and * remove it from the memory context. */ isc_mem_put(mctx, dlz_imp, sizeof(dns_dlzimplementation_t)); @@ -508,3 +516,143 @@ dns_dlzunregister(dns_dlzimplementation_t **dlzimp) { /* Unlock the dlz_implementations list. */ RWUNLOCK(&dlz_implock, isc_rwlocktype_write); } + +#ifdef BIND9 +/* + * Create a writeable DLZ zone. This can be called by DLZ drivers + * during configure() to create a zone that can be updated. The zone + * type is set to dns_zone_dlz, which is equivalent to a master zone + * + * This function uses a callback setup in dns_dlzconfigure() to call + * into the server zone code to setup the remaining pieces of server + * specific functionality on the zone + */ +isc_result_t +dns_dlz_writeablezone(dns_view_t *view, const char *zone_name) { + dns_zone_t *zone = NULL; + dns_zone_t *dupzone = NULL; + isc_result_t result; + isc_buffer_t buffer; + dns_fixedname_t fixorigin; + dns_name_t *origin; + dns_rdataclass_t zclass; + dns_dlzdb_t *dlzdatabase; + + REQUIRE(DNS_DLZ_VALID(view->dlzdatabase)); + + dlzdatabase = view->dlzdatabase; + + REQUIRE(dlzdatabase->configure_callback != NULL); + + isc_buffer_init(&buffer, zone_name, strlen(zone_name)); + isc_buffer_add(&buffer, strlen(zone_name)); + dns_fixedname_init(&fixorigin); + result = dns_name_fromtext(dns_fixedname_name(&fixorigin), + &buffer, dns_rootname, 0, NULL); + if (result != ISC_R_SUCCESS) + goto cleanup; + origin = dns_fixedname_name(&fixorigin); + + zclass = view->rdclass; + + /* See if the zone already exists */ + result = dns_view_findzone(view, origin, &dupzone); + if (result == ISC_R_SUCCESS) { + dns_zone_detach(&dupzone); + result = ISC_R_EXISTS; + goto cleanup; + } + INSIST(dupzone == NULL); + + /* Create it */ + result = dns_zone_create(&zone, view->mctx); + if (result != ISC_R_SUCCESS) + goto cleanup; + result = dns_zone_setorigin(zone, origin); + if (result != ISC_R_SUCCESS) + goto cleanup; + dns_zone_setview(zone, view); + + dns_zone_setadded(zone, ISC_TRUE); + + if (dlzdatabase->ssutable == NULL) { + result = dns_ssutable_createdlz(dlzdatabase->mctx, + &dlzdatabase->ssutable, + view->dlzdatabase); + if (result != ISC_R_SUCCESS) + goto cleanup; + } + dns_zone_setssutable(zone, dlzdatabase->ssutable); + + result = dlzdatabase->configure_callback(view, zone); + if (result != ISC_R_SUCCESS) + goto cleanup; + + /* + * Add the zone to its view in the new view list. + */ + result = dns_view_addzone(view, zone); + + result = ISC_R_SUCCESS; + + cleanup: + if (zone != NULL) + dns_zone_detach(&zone); + + return (result); +} +#endif + +/*% + * Configure a DLZ driver. This is optional, and if supplied gives + * the backend an opportunity to configure parameters related to DLZ. + */ +isc_result_t +dns_dlzconfigure(dns_view_t *view, isc_result_t (*callback)(dns_view_t *, + dns_zone_t *)) +{ + dns_dlzimplementation_t *impl; + dns_dlzdb_t *dlzdatabase; + isc_result_t result; + + REQUIRE(view != NULL); + REQUIRE(DNS_DLZ_VALID(view->dlzdatabase)); + REQUIRE(view->dlzdatabase->implementation != NULL); + + dlzdatabase = view->dlzdatabase; + impl = dlzdatabase->implementation; + + if (impl->methods->configure == NULL) + return (ISC_R_SUCCESS); + + dlzdatabase->configure_callback = callback; + + result = impl->methods->configure(impl->driverarg, + dlzdatabase->dbdata, view); + return (result); +} + +isc_boolean_t +dns_dlz_ssumatch(dns_dlzdb_t *dlzdatabase, + dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr, + dns_rdatatype_t type, const dst_key_t *key) +{ + dns_dlzimplementation_t *impl; + isc_boolean_t r; + + REQUIRE(dlzdatabase != NULL); + REQUIRE(dlzdatabase->implementation != NULL); + REQUIRE(dlzdatabase->implementation->methods != NULL); + impl = dlzdatabase->implementation; + + if (impl->methods->ssumatch == NULL) { + isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, + DNS_LOGMODULE_DLZ, ISC_LOG_INFO, + "No ssumatch method for DLZ database"); + return (ISC_FALSE); + } + + r = impl->methods->ssumatch(signer, name, tcpaddr, type, key, + impl->driverarg, dlzdatabase->dbdata); + return (r); +} diff --git a/lib/dns/ds.c b/lib/dns/ds.c index e994cc56..80e1503f 100644 --- a/lib/dns/ds.c +++ b/lib/dns/ds.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2010 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: ds.c,v 1.11 2007/06/19 23:47:16 tbox Exp $ */ +/* $Id: ds.c,v 1.13 2010-12-23 23:47:08 tbox Exp $ */ /*! \file */ @@ -38,6 +38,13 @@ #include <dst/dst.h> +#ifdef HAVE_OPENSSL_GOST +#include <dst/result.h> +#include <openssl/evp.h> + +extern const EVP_MD * EVP_gost(void); +#endif + isc_result_t dns_ds_buildrdata(dns_name_t *owner, dns_rdata_t *key, unsigned int digest_type, unsigned char *buffer, @@ -49,6 +56,12 @@ dns_ds_buildrdata(dns_name_t *owner, dns_rdata_t *key, isc_region_t r; isc_buffer_t b; dns_rdata_ds_t ds; + isc_sha1_t sha1; + isc_sha256_t sha256; +#ifdef HAVE_OPENSSL_GOST + EVP_MD_CTX ctx; + const EVP_MD *md; +#endif REQUIRE(key != NULL); REQUIRE(key->type == dns_rdatatype_dnskey); @@ -63,8 +76,8 @@ dns_ds_buildrdata(dns_name_t *owner, dns_rdata_t *key, memset(buffer, 0, DNS_DS_BUFFERSIZE); isc_buffer_init(&b, buffer, DNS_DS_BUFFERSIZE); - if (digest_type == DNS_DSDIGEST_SHA1) { - isc_sha1_t sha1; + switch (digest_type) { + case DNS_DSDIGEST_SHA1: isc_sha1_init(&sha1); dns_name_toregion(name, &r); isc_sha1_update(&sha1, r.base, r.length); @@ -72,8 +85,33 @@ dns_ds_buildrdata(dns_name_t *owner, dns_rdata_t *key, INSIST(r.length >= 4); isc_sha1_update(&sha1, r.base, r.length); isc_sha1_final(&sha1, digest); - } else { - isc_sha256_t sha256; + break; +#ifdef HAVE_OPENSSL_GOST +#define CHECK(x) \ + if ((x) != 1) { \ + EVP_MD_CTX_cleanup(&ctx); \ + return (DST_R_OPENSSLFAILURE); \ + } + + case DNS_DSDIGEST_GOST: + md = EVP_gost(); + if (md == NULL) + return (DST_R_OPENSSLFAILURE); + EVP_MD_CTX_init(&ctx); + CHECK(EVP_DigestInit(&ctx, md)); + dns_name_toregion(name, &r); + CHECK(EVP_DigestUpdate(&ctx, + (const void *) r.base, + (size_t) r.length)); + dns_rdata_toregion(key, &r); + INSIST(r.length >= 4); + CHECK(EVP_DigestUpdate(&ctx, + (const void *) r.base, + (size_t) r.length)); + CHECK(EVP_DigestFinal(&ctx, digest, NULL)); + break; +#endif + default: isc_sha256_init(&sha256); dns_name_toregion(name, &r); isc_sha256_update(&sha256, r.base, r.length); @@ -81,6 +119,7 @@ dns_ds_buildrdata(dns_name_t *owner, dns_rdata_t *key, INSIST(r.length >= 4); isc_sha256_update(&sha256, r.base, r.length); isc_sha256_final(digest, &sha256); + break; } ds.mctx = NULL; @@ -89,8 +128,19 @@ dns_ds_buildrdata(dns_name_t *owner, dns_rdata_t *key, ds.algorithm = r.base[3]; ds.key_tag = dst_region_computeid(&r, ds.algorithm); ds.digest_type = digest_type; - ds.length = (digest_type == DNS_DSDIGEST_SHA1) ? - ISC_SHA1_DIGESTLENGTH : ISC_SHA256_DIGESTLENGTH; + switch (digest_type) { + case DNS_DSDIGEST_SHA1: + ds.length = ISC_SHA1_DIGESTLENGTH; + break; +#ifdef HAVE_OPENSSL_GOST + case DNS_DSDIGEST_GOST: + ds.length = ISC_GOST_DIGESTLENGTH; + break; +#endif + default: + ds.length = ISC_SHA256_DIGESTLENGTH; + break; + } ds.digest = digest; return (dns_rdata_fromstruct(rdata, key->rdclass, dns_rdatatype_ds, @@ -99,6 +149,12 @@ dns_ds_buildrdata(dns_name_t *owner, dns_rdata_t *key, isc_boolean_t dns_ds_digest_supported(unsigned int digest_type) { +#ifdef HAVE_OPENSSL_GOST + return (ISC_TF(digest_type == DNS_DSDIGEST_SHA1 || + digest_type == DNS_DSDIGEST_SHA256 || + digest_type == DNS_DSDIGEST_GOST)); +#else return (ISC_TF(digest_type == DNS_DSDIGEST_SHA1 || digest_type == DNS_DSDIGEST_SHA256)); +#endif } diff --git a/lib/dns/dst_api.c b/lib/dns/dst_api.c index 81ed8bb4..1ece3127 100644 --- a/lib/dns/dst_api.c +++ b/lib/dns/dst_api.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -31,7 +31,7 @@ /* * Principal Author: Brian Wellington - * $Id: dst_api.c,v 1.53 2010/12/09 00:54:33 marka Exp $ + * $Id: dst_api.c,v 1.57 2011-01-11 23:47:13 tbox Exp $ */ /*! \file */ @@ -223,6 +223,9 @@ dst_lib_init2(isc_mem_t *mctx, isc_entropy_t *ectx, RETERR(dst__openssldsa_init(&dst_t_func[DST_ALG_NSEC3DSA])); #endif RETERR(dst__openssldh_init(&dst_t_func[DST_ALG_DH])); +#ifdef HAVE_OPENSSL_GOST + RETERR(dst__opensslgost_init(&dst_t_func[DST_ALG_ECCGOST])); +#endif #endif /* OPENSSL */ #ifdef GSSAPI RETERR(dst__gssapi_init(&dst_t_func[DST_ALG_GSSAPI])); @@ -700,9 +703,10 @@ dst_key_getgssctx(const dst_key_t *key) isc_result_t dst_key_fromgssapi(dns_name_t *name, gss_ctx_id_t gssctx, isc_mem_t *mctx, - dst_key_t **keyp) + dst_key_t **keyp, isc_region_t *intoken) { dst_key_t *key; + isc_result_t result; REQUIRE(gssctx != NULL); REQUIRE(keyp != NULL && *keyp == NULL); @@ -712,9 +716,21 @@ dst_key_fromgssapi(dns_name_t *name, gss_ctx_id_t gssctx, isc_mem_t *mctx, if (key == NULL) return (ISC_R_NOMEMORY); + if (intoken != NULL) { + /* + * Keep the token for use by external ssu rules. They may need + * to examine the PAC in the kerberos ticket. + */ + RETERR(isc_buffer_allocate(key->mctx, &key->key_tkeytoken, + intoken->length)); + RETERR(isc_buffer_copyregion(key->key_tkeytoken, intoken)); + } + key->keydata.gssctx = gssctx; *keyp = key; - return (ISC_R_SUCCESS); + result = ISC_R_SUCCESS; +out: + return result; } isc_result_t @@ -1054,6 +1070,9 @@ dst_key_free(dst_key_t **keyp) { isc_mem_free(mctx, key->label); dns_name_free(key->key_name, mctx); isc_mem_put(mctx, key->key_name, sizeof(dns_name_t)); + if (key->key_tkeytoken) { + isc_buffer_free(&key->key_tkeytoken); + } memset(key, 0, sizeof(dst_key_t)); isc_mem_put(mctx, key, sizeof(dst_key_t)); *keyp = NULL; @@ -1097,6 +1116,9 @@ dst_key_sigsize(const dst_key_t *key, unsigned int *n) { case DST_ALG_NSEC3DSA: *n = DNS_SIG_DSASIGSIZE; break; + case DST_ALG_ECCGOST: + *n = DNS_SIG_GOSTSIGSIZE; + break; case DST_ALG_HMACMD5: *n = 16; break; @@ -1149,7 +1171,7 @@ dst_key_setflags(dst_key_t *key, isc_uint32_t flags) { } void -dst_key_format(dst_key_t *key, char *cp, unsigned int size) { +dst_key_format(const dst_key_t *key, char *cp, unsigned int size) { char namestr[DNS_NAME_FORMATSIZE]; char algstr[DNS_NAME_FORMATSIZE]; @@ -1159,6 +1181,48 @@ dst_key_format(dst_key_t *key, char *cp, unsigned int size) { snprintf(cp, size, "%s/%s/%d", namestr, algstr, dst_key_id(key)); } +isc_result_t +dst_key_dump(dst_key_t *key, isc_mem_t *mctx, char **buffer, int *length) { + + REQUIRE(buffer != NULL && *buffer == NULL); + REQUIRE(length != NULL && *length == 0); + REQUIRE(VALID_KEY(key)); + + if (key->func->isprivate == NULL) + return (ISC_R_NOTIMPLEMENTED); + return (key->func->dump(key, mctx, buffer, length)); +} + +isc_result_t +dst_key_restore(dns_name_t *name, unsigned int alg, unsigned int flags, + unsigned int protocol, dns_rdataclass_t rdclass, + isc_mem_t *mctx, const char *keystr, dst_key_t **keyp) +{ + isc_result_t result; + dst_key_t *key; + + REQUIRE(dst_initialized == ISC_TRUE); + REQUIRE(keyp != NULL && *keyp == NULL); + + if (alg >= DST_MAX_ALGS || dst_t_func[alg] == NULL) + return (DST_R_UNSUPPORTEDALG); + + if (dst_t_func[alg]->restore == NULL) + return (ISC_R_NOTIMPLEMENTED); + + key = get_key_struct(name, alg, flags, protocol, 0, rdclass, mctx); + if (key == NULL) + return (ISC_R_NOMEMORY); + + result = (dst_t_func[alg]->restore)(key, keystr); + if (result == ISC_R_SUCCESS) + *keyp = key; + else + dst_key_free(&key); + + return (result); +} + /*** *** Static methods ***/ @@ -1359,6 +1423,7 @@ issymmetric(const dst_key_t *key) { case DST_ALG_DSA: case DST_ALG_NSEC3DSA: case DST_ALG_DH: + case DST_ALG_ECCGOST: return (ISC_FALSE); case DST_ALG_HMACMD5: case DST_ALG_GSSAPI: @@ -1631,7 +1696,8 @@ algorithm_status(unsigned int alg) { alg == DST_ALG_DSA || alg == DST_ALG_DH || alg == DST_ALG_HMACMD5 || alg == DST_ALG_NSEC3DSA || alg == DST_ALG_NSEC3RSASHA1 || - alg == DST_ALG_RSASHA256 || alg == DST_ALG_RSASHA512) + alg == DST_ALG_RSASHA256 || alg == DST_ALG_RSASHA512 || + alg == DST_ALG_ECCGOST) return (DST_R_NOCRYPTO); #endif return (DST_R_UNSUPPORTEDALG); @@ -1709,3 +1775,8 @@ dst__entropy_status(void) { return (0); #endif } + +isc_buffer_t * +dst_key_tkeytoken(const dst_key_t *key) { + return (key->key_tkeytoken); +} diff --git a/lib/dns/dst_internal.h b/lib/dns/dst_internal.h index 994b9867..220b3da8 100644 --- a/lib/dns/dst_internal.h +++ b/lib/dns/dst_internal.h @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -29,7 +29,7 @@ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dst_internal.h,v 1.25 2010/12/09 04:31:57 tbox Exp $ */ +/* $Id: dst_internal.h,v 1.29 2011-01-11 23:47:13 tbox Exp $ */ #ifndef DST_DST_INTERNAL_H #define DST_DST_INTERNAL_H 1 @@ -128,6 +128,7 @@ struct dst_key { int fmt_minor; /*%< private key format, minor version */ dst_func_t * func; /*%< crypto package specific functions */ + isc_buffer_t *key_tkeytoken; /*%< TKEY token data */ }; struct dst_context { @@ -190,6 +191,9 @@ struct dst_func { isc_result_t (*fromlabel)(dst_key_t *key, const char *engine, const char *label, const char *pin); + isc_result_t (*dump)(dst_key_t *key, isc_mem_t *mctx, char **buffer, + int *length); + isc_result_t (*restore)(dst_key_t *key, const char *keystr); }; /*% @@ -208,6 +212,9 @@ isc_result_t dst__opensslrsa_init(struct dst_func **funcp, isc_result_t dst__openssldsa_init(struct dst_func **funcp); isc_result_t dst__openssldh_init(struct dst_func **funcp); isc_result_t dst__gssapi_init(struct dst_func **funcp); +#ifdef HAVE_OPENSSL_GOST +isc_result_t dst__opensslgost_init(struct dst_func **funcp); +#endif /*% * Destructors diff --git a/lib/dns/dst_parse.c b/lib/dns/dst_parse.c index fd2f1d11..4d7d784f 100644 --- a/lib/dns/dst_parse.c +++ b/lib/dns/dst_parse.c @@ -31,7 +31,7 @@ /*% * Principal Author: Brian Wellington - * $Id: dst_parse.c,v 1.26 2010/01/11 10:49:14 fdupont Exp $ + * $Id: dst_parse.c,v 1.27 2010-12-23 04:07:58 marka Exp $ */ #include <config.h> @@ -104,6 +104,8 @@ static struct parse_map map[] = { {TAG_DSA_PRIVATE, "Private_value(x):"}, {TAG_DSA_PUBLIC, "Public_value(y):"}, + {TAG_GOST_PRIVASN1, "GostAsn1:"}, + {TAG_HMACMD5_KEY, "Key:"}, {TAG_HMACMD5_BITS, "Bits:"}, @@ -240,6 +242,15 @@ check_dsa(const dst_private_t *priv) { } static int +check_gost(const dst_private_t *priv) { + if (priv->nelements != GOST_NTAGS) + return (-1); + if (priv->elements[0].tag != TAG(DST_ALG_ECCGOST, 0)) + return (-1); + return (0); +} + +static int check_hmac_md5(const dst_private_t *priv, isc_boolean_t old) { int i, j; @@ -296,6 +307,8 @@ check_data(const dst_private_t *priv, const unsigned int alg, return (check_dh(priv)); case DST_ALG_DSA: return (check_dsa(priv)); + case DST_ALG_ECCGOST: + return (check_gost(priv)); case DST_ALG_HMACMD5: return (check_hmac_md5(priv, old)); case DST_ALG_HMACSHA1: @@ -587,6 +600,9 @@ dst__privstruct_writefile(const dst_key_t *key, const dst_private_t *priv, case DST_ALG_RSASHA512: fprintf(fp, "(RSASHA512)\n"); break; + case DST_ALG_ECCGOST: + fprintf(fp, "(ECC-GOST)\n"); + break; case DST_ALG_HMACMD5: fprintf(fp, "(HMAC_MD5)\n"); break; diff --git a/lib/dns/dst_parse.h b/lib/dns/dst_parse.h index ceb8b188..d1034ce6 100644 --- a/lib/dns/dst_parse.h +++ b/lib/dns/dst_parse.h @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -29,7 +29,7 @@ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dst_parse.h,v 1.15 2009/10/26 21:18:24 each Exp $ */ +/* $Id: dst_parse.h,v 1.17 2010-12-23 23:47:08 tbox Exp $ */ /*! \file */ #ifndef DST_DST_PARSE_H @@ -78,6 +78,9 @@ #define TAG_DSA_PRIVATE ((DST_ALG_DSA << TAG_SHIFT) + 3) #define TAG_DSA_PUBLIC ((DST_ALG_DSA << TAG_SHIFT) + 4) +#define GOST_NTAGS 1 +#define TAG_GOST_PRIVASN1 ((DST_ALG_ECCGOST << TAG_SHIFT) + 0) + #define OLD_HMACMD5_NTAGS 1 #define HMACMD5_NTAGS 2 #define TAG_HMACMD5_KEY ((DST_ALG_HMACMD5 << TAG_SHIFT) + 0) diff --git a/lib/dns/gssapi_link.c b/lib/dns/gssapi_link.c index 56458145..e14d0eb9 100644 --- a/lib/dns/gssapi_link.c +++ b/lib/dns/gssapi_link.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -16,13 +16,14 @@ */ /* - * $Id: gssapi_link.c,v 1.14 2009/10/24 23:47:36 tbox Exp $ + * $Id: gssapi_link.c,v 1.16 2011-01-11 23:47:13 tbox Exp $ */ #include <config.h> #ifdef GSSAPI +#include <isc/base64.h> #include <isc/buffer.h> #include <isc/mem.h> #include <isc/string.h> @@ -44,6 +45,12 @@ (gb).value = (r).base; \ } while (0) +#define GBUFFER_TO_REGION(gb, r) \ + do { \ + (r).length = (gb).length; \ + (r).base = (gb).value; \ + } while (0) + struct dst_gssapi_signverifyctx { isc_buffer_t *buffer; @@ -276,6 +283,79 @@ gssapi_destroy(dst_key_t *key) { key->keydata.gssctx = NULL; } +static isc_result_t +gssapi_restore(dst_key_t *key, const char *keystr) { + OM_uint32 major, minor; + size_t len; + isc_buffer_t *b = NULL; + isc_region_t r; + gss_buffer_desc gssbuffer; + isc_result_t result; + + len = strlen(keystr); + if ((len % 4) != 0) + return (ISC_R_BADBASE64); + + len = (len / 4) * 3; + + result = isc_buffer_allocate(key->mctx, &b, len); + if (result != ISC_R_SUCCESS) + return (result); + + result = isc_base64_decodestring(keystr, b); + if (result != ISC_R_SUCCESS) { + isc_buffer_free(&b); + return (result); + } + + isc_buffer_remainingregion(b, &r); + REGION_TO_GBUFFER(r, gssbuffer); + major = gss_import_sec_context(&minor, &gssbuffer, + &key->keydata.gssctx); + if (major != GSS_S_COMPLETE) { + isc_buffer_free(&b); + return (ISC_R_FAILURE); + } + + isc_buffer_free(&b); + return (ISC_R_SUCCESS); +} + +static isc_result_t +gssapi_dump(dst_key_t *key, isc_mem_t *mctx, char **buffer, int *length) { + OM_uint32 major, minor; + gss_buffer_desc gssbuffer; + size_t len; + char *buf; + isc_buffer_t b; + isc_region_t r; + isc_result_t result; + + major = gss_export_sec_context(&minor, &key->keydata.gssctx, + &gssbuffer); + if (major != GSS_S_COMPLETE) { + fprintf(stderr, "gss_export_sec_context -> %d, %d\n", + major, minor); + return (ISC_R_FAILURE); + } + if (gssbuffer.length == 0) + return (ISC_R_FAILURE); + len = ((gssbuffer.length + 2)/3) * 4; + buf = isc_mem_get(mctx, len); + if (buf == NULL) { + gss_release_buffer(&minor, &gssbuffer); + return (ISC_R_NOMEMORY); + } + isc_buffer_init(&b, buf, len); + GBUFFER_TO_REGION(gssbuffer, r); + result = isc_base64_totext(&r, 0, "", &b); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + gss_release_buffer(&minor, &gssbuffer); + *buffer = buf; + *length = len; + return (ISC_R_SUCCESS); +} + static dst_func_t gssapi_functions = { gssapi_create_signverify_ctx, gssapi_destroy_signverify_ctx, @@ -294,6 +374,8 @@ static dst_func_t gssapi_functions = { NULL, /*%< parse */ NULL, /*%< cleanup */ NULL, /*%< fromlabel */ + gssapi_dump, + gssapi_restore, }; isc_result_t diff --git a/lib/dns/gssapictx.c b/lib/dns/gssapictx.c index 3a25e09c..707745cc 100644 --- a/lib/dns/gssapictx.c +++ b/lib/dns/gssapictx.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,16 +15,18 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: gssapictx.c,v 1.18 2010/07/09 05:13:15 each Exp $ */ +/* $Id: gssapictx.c,v 1.26 2011-01-10 03:49:49 marka Exp $ */ #include <config.h> +#include <ctype.h> #include <stdlib.h> #include <string.h> #include <isc/buffer.h> #include <isc/dir.h> #include <isc/entropy.h> +#include <isc/file.h> #include <isc/lex.h> #include <isc/mem.h> #include <isc/once.h> @@ -201,9 +203,12 @@ log_cred(const gss_cred_id_t cred) { * - tkey-gssapi-credential doesn't start with DNS/ * - the default realm in /etc/krb5.conf and the * tkey-gssapi-credential bind config option don't match + * + * Note that if tkey-gssapi-keytab is set then these configure checks + * are not performed, and runtime errors from gssapi are used instead */ static void -dst_gssapi_check_config(const char *gss_name) { +check_config(const char *gss_name) { const char *p; krb5_context krb5_ctx; char *krb5_realm = NULL; @@ -263,7 +268,7 @@ dst_gssapi_acquirecred(dns_name_t *name, isc_boolean_t initiate, * here when we're in the acceptor role, which would let us * default the hostname and use a compiled in default service * name of "DNS", giving one less thing to configure in - * named.conf. Unfortunately, this creates a circular + * named.conf. Unfortunately, this creates a circular * dependency due to DNS-based realm lookup in at least one * GSSAPI implementation (Heimdal). Oh well. */ @@ -273,7 +278,7 @@ dst_gssapi_acquirecred(dns_name_t *name, isc_boolean_t initiate, gret = gss_import_name(&minor, &gnamebuf, GSS_C_NO_OID, &gname); if (gret != GSS_S_COMPLETE) { - dst_gssapi_check_config((char *)array); + check_config((char *)array); gss_log(3, "failed gss_import_name: %s", gss_error_tostring(gret, minor, buf, @@ -306,7 +311,7 @@ dst_gssapi_acquirecred(dns_name_t *name, isc_boolean_t initiate, initiate ? "initiate" : "accept", (char *)gnamebuf.value, gss_error_tostring(gret, minor, buf, sizeof(buf))); - dst_gssapi_check_config((char *)array); + check_config((char *)array); return (ISC_R_FAILURE); } @@ -358,10 +363,10 @@ dst_gssapi_identitymatchesrealmkrb5(dns_name_t *signer, dns_name_t *name, if (rname == NULL) return (isc_boolean_false); *rname = '\0'; - rname += 2; + rname++; /* - * Find the host portion of the signer's name. We do this by + * Find the host portion of the signer's name. We do this by * searching for the first / character. We then check to make * certain the instance name is "host" * @@ -440,7 +445,7 @@ dst_gssapi_identitymatchesrealmms(dns_name_t *signer, dns_name_t *name, return (isc_boolean_false); /* - * Find the host portion of the signer's name. Zero out the $ so + * Find the host portion of the signer's name. Zero out the $ so * it terminates the signer's name, and skip past the @ for * the realm. * @@ -454,7 +459,7 @@ dst_gssapi_identitymatchesrealmms(dns_name_t *signer, dns_name_t *name, /* * Find the first . in the target name, and make it the end of - * the string. The rest of the name has to match the realm. + * the string. The rest of the name has to match the realm. */ if (name != NULL) { nname = strchr(nbuf, '.'); @@ -510,9 +515,34 @@ dst_gssapi_releasecred(gss_cred_id_t *cred) { #endif } +#ifdef GSSAPI +/* + * Format a gssapi error message info into a char ** on the given memory + * context. This is used to return gssapi error messages back up the + * call chain for reporting to the user. + */ +static void +gss_err_message(isc_mem_t *mctx, isc_uint32_t major, isc_uint32_t minor, + char **err_message) +{ + char buf[1024]; + char *estr; + + if (err_message == NULL || mctx == NULL) { + /* the caller doesn't want any error messages */ + return; + } + + estr = gss_error_tostring(major, minor, buf, sizeof(buf)); + if (estr) + (*err_message) = isc_mem_strdup(mctx, estr); +} +#endif + isc_result_t dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, - isc_buffer_t *outtoken, gss_ctx_id_t *gssctx) + isc_buffer_t *outtoken, gss_ctx_id_t *gssctx, + isc_mem_t *mctx, char **err_message) { #ifdef GSSAPI isc_region_t r; @@ -523,10 +553,10 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, isc_result_t result; gss_buffer_desc gnamebuf; unsigned char array[DNS_NAME_MAXTEXT + 1]; - char buf[1024]; /* Client must pass us a valid gss_ctx_id_t here */ REQUIRE(gssctx != NULL); + REQUIRE(mctx != NULL); isc_buffer_init(&namebuf, array, sizeof(array)); name_to_gbuffer(name, &namebuf, &gnamebuf); @@ -534,6 +564,7 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, /* Get the name as a GSS name */ gret = gss_import_name(&minor, &gnamebuf, GSS_C_NO_OID, &gname); if (gret != GSS_S_COMPLETE) { + gss_err_message(mctx, gret, minor, err_message); result = ISC_R_FAILURE; goto out; } @@ -550,8 +581,7 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, * Note that we don't set GSS_C_SEQUENCE_FLAG as Windows DNS * servers don't like it. */ - flags = GSS_C_REPLAY_FLAG | GSS_C_MUTUAL_FLAG | GSS_C_DELEG_FLAG | - GSS_C_INTEG_FLAG; + flags = GSS_C_REPLAY_FLAG | GSS_C_MUTUAL_FLAG | GSS_C_INTEG_FLAG; gret = gss_init_sec_context(&minor, GSS_C_NO_CREDENTIAL, gssctx, gname, GSS_SPNEGO_MECHANISM, flags, @@ -559,9 +589,9 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, NULL, &gouttoken, &ret_flags, NULL); if (gret != GSS_S_COMPLETE && gret != GSS_S_CONTINUE_NEEDED) { - gss_log(3, "Failure initiating security context"); - gss_log(3, "%s", gss_error_tostring(gret, minor, - buf, sizeof(buf))); + gss_err_message(mctx, gret, minor, err_message); + gss_log(3, "Failure initiating security context: %s", + *err_message); result = ISC_R_FAILURE; goto out; } @@ -593,6 +623,8 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, UNUSED(intoken); UNUSED(outtoken); UNUSED(gssctx); + UNUSED(mctx); + UNUSED(err_message); return (ISC_R_NOTIMPLEMENTED); #endif @@ -600,6 +632,7 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, isc_result_t dst_gssapi_acceptctx(gss_cred_id_t cred, + const char *gssapi_keytab, isc_region_t *intoken, isc_buffer_t **outtoken, gss_ctx_id_t *ctxout, dns_name_t *principal, isc_mem_t *mctx) @@ -626,6 +659,34 @@ dst_gssapi_acceptctx(gss_cred_id_t cred, else context = *ctxout; + if (gssapi_keytab != NULL) { +#ifdef ISC_PLATFORM_GSSAPI_KRB5_HEADER + gret = gsskrb5_register_acceptor_identity(gssapi_keytab); + if (gret != GSS_S_COMPLETE) { + gss_log(3, "failed " + "gsskrb5_register_acceptor_identity(%s): %s", + gssapi_keytab, + gss_error_tostring(gret, minor, + buf, sizeof(buf))); + return (DNS_R_INVALIDTKEY); + } +#else + /* + * Minimize memory leakage by only setting KRB5_KTNAME + * if it needs to change. + */ + const char *old = getenv("KRB5_KTNAME"); + if (old == NULL || strcmp(old, gssapi_keytab) != 0) { + char *kt = malloc(strlen(gssapi_keytab) + 13); + if (kt == NULL) + return (ISC_R_NOMEMORY); + sprintf(kt, "KRB5_KTNAME=%s", gssapi_keytab); + if (putenv(kt) != 0) + return (ISC_R_NOMEMORY); + } +#endif + } + gret = gss_accept_sec_context(&minor, &context, cred, &gintoken, GSS_C_NO_CHANNEL_BINDINGS, &gname, NULL, &gouttoken, NULL, NULL, NULL); @@ -717,6 +778,7 @@ dst_gssapi_acceptctx(gss_cred_id_t cred, return (result); #else UNUSED(cred); + UNUSED(gssapi_keytab); UNUSED(intoken); UNUSED(outtoken); UNUSED(ctxout); diff --git a/lib/dns/hmac_link.c b/lib/dns/hmac_link.c index fa54b962..ecc40898 100644 --- a/lib/dns/hmac_link.c +++ b/lib/dns/hmac_link.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -31,7 +31,7 @@ /* * Principal Author: Brian Wellington - * $Id: hmac_link.c,v 1.17 2010/01/07 23:48:54 tbox Exp $ + * $Id: hmac_link.c,v 1.19 2011-01-11 23:47:13 tbox Exp $ */ #include <config.h> @@ -325,6 +325,8 @@ static dst_func_t hmacmd5_functions = { hmacmd5_parse, NULL, /*%< cleanup */ NULL, /*%< fromlabel */ + NULL, /*%< dump */ + NULL, /*%< restore */ }; isc_result_t @@ -599,6 +601,8 @@ static dst_func_t hmacsha1_functions = { hmacsha1_parse, NULL, /* cleanup */ NULL, /* fromlabel */ + NULL, /* dump */ + NULL, /* restore */ }; isc_result_t @@ -875,6 +879,8 @@ static dst_func_t hmacsha224_functions = { hmacsha224_parse, NULL, /* cleanup */ NULL, /* fromlabel */ + NULL, /* dump */ + NULL, /* restore */ }; isc_result_t @@ -1151,6 +1157,8 @@ static dst_func_t hmacsha256_functions = { hmacsha256_parse, NULL, /* cleanup */ NULL, /* fromlabel */ + NULL, /* dump */ + NULL, /* restore */ }; isc_result_t @@ -1427,6 +1435,8 @@ static dst_func_t hmacsha384_functions = { hmacsha384_parse, NULL, /* cleanup */ NULL, /* fromlabel */ + NULL, /* dump */ + NULL, /* restore */ }; isc_result_t @@ -1703,6 +1713,8 @@ static dst_func_t hmacsha512_functions = { hmacsha512_parse, NULL, /* cleanup */ NULL, /* fromlabel */ + NULL, /* dump */ + NULL, /* restore */ }; isc_result_t diff --git a/lib/dns/include/dns/db.h b/lib/dns/include/dns/db.h index 234f7b5e..edb1263a 100644 --- a/lib/dns/include/dns/db.h +++ b/lib/dns/include/dns/db.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: db.h,v 1.102 2009/11/25 23:49:22 tbox Exp $ */ +/* $Id: db.h,v 1.104 2011-01-13 04:59:25 tbox Exp $ */ #ifndef DNS_DB_H #define DNS_DB_H 1 @@ -63,6 +63,7 @@ #include <dns/name.h> #include <dns/rdata.h> #include <dns/rdataset.h> +#include <dns/rpz.h> #include <dns/types.h> ISC_LANG_BEGINDECLS @@ -170,6 +171,13 @@ typedef struct dns_dbmethods { dns_dbversion_t *version); isc_boolean_t (*isdnssec)(dns_db_t *db); dns_stats_t *(*getrrsetstats)(dns_db_t *db); + void (*rpz_enabled)(dns_db_t *db, dns_rpz_st_t *st); + isc_result_t (*rpz_findips)(dns_rpz_zone_t *rpz, + dns_rpz_type_t rpz_type, + dns_zone_t *zone, dns_db_t *db, + dns_dbversion_t *version, + dns_rdataset_t *ardataset, + dns_rpz_st_t *st); } dns_dbmethods_t; typedef isc_result_t @@ -1487,6 +1495,31 @@ dns_db_getrrsetstats(dns_db_t *db); * dns_rdatasetstats_create(); otherwise NULL. */ +void +dns_db_rpz_enabled(dns_db_t *db, dns_rpz_st_t *st); +/*%< + * See if a policy database has DNS_RPZ_TYPE_IP, DNS_RPZ_TYPE_NSIP, or + * DNS_RPZ_TYPE_NSDNAME records. + */ + +isc_result_t +dns_db_rpz_findips(dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type, + dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *version, + dns_rdataset_t *ardataset, dns_rpz_st_t *st); +/*%< + * Search the CDIR block tree of a response policy tree of trees for the best + * match to any of the IP addresses in an A or AAAA rdataset. + * + * Requires: + * \li search in policy zone 'rpz' for a match of 'rpz_type' either + * DNS_RPZ_TYPE_IP or DNS_RPZ_TYPE_NSIP + * \li 'zone' and 'db' are the database corresponding to 'rpz' + * \li 'version' is the required version of the database + * \li 'ardataset' is an A or AAAA rdataset of addresses to check + * \li 'found' specifies the previous best match if any or + * or NULL, an empty name, 0, DNS_RPZ_POLICY_MISS, and 0 + */ + ISC_LANG_ENDDECLS #endif /* DNS_DB_H */ diff --git a/lib/dns/include/dns/dlz.h b/lib/dns/include/dns/dlz.h index 461d1620..e04b1b1a 100644 --- a/lib/dns/include/dns/dlz.h +++ b/lib/dns/include/dns/dlz.h @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2005-2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2005-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dlz.h,v 1.9 2009/01/17 23:47:43 tbox Exp $ */ +/* $Id: dlz.h,v 1.12 2010-12-20 23:47:21 tbox Exp $ */ /*! \file dns/dlz.h */ @@ -87,6 +87,7 @@ #include <dns/name.h> #include <dns/types.h> #include <dns/view.h> +#include <dst/dst.h> #include <isc/lang.h> @@ -166,12 +167,37 @@ typedef isc_result_t * return a result code indicating the type of error. */ + +typedef isc_result_t +(*dns_dlzconfigure_t)(void *driverarg, void *dbdata, dns_view_t *view); +/*%< + * Method prototype. Drivers implementing the DLZ interface may + * optionally supply a configure method. If supplied, this will be + * called immediately after the create method is called. The driver + * may call configuration functions during the configure call + */ + + +typedef isc_boolean_t (*dns_dlzssumatch_t)(dns_name_t *signer, + dns_name_t *name, + isc_netaddr_t *tcpaddr, + dns_rdatatype_t type, + const dst_key_t *key, + void *driverarg, void *dbdata); +/*%< + * Method prototype. Drivers implementing the DLZ interface may + * optionally supply a ssumatch method. If supplied, this will be + * called to authorize update requests + */ + /*% the methods supplied by a DLZ driver */ typedef struct dns_dlzmethods { dns_dlzcreate_t create; dns_dlzdestroy_t destroy; dns_dlzfindzone_t findzone; dns_dlzallowzonexfr_t allowzonexfr; + dns_dlzconfigure_t configure; + dns_dlzssumatch_t ssumatch; } dns_dlzmethods_t; /*% information about a DLZ driver */ @@ -183,12 +209,18 @@ struct dns_dlzimplementation { ISC_LINK(dns_dlzimplementation_t) link; }; -/*% an instance of a DLZ driver */ +typedef isc_result_t (*dlzconfigure_callback_t)(dns_view_t *, dns_zone_t *); + +/*% An instance of a DLZ driver */ struct dns_dlzdb { unsigned int magic; isc_mem_t *mctx; dns_dlzimplementation_t *implementation; void *dbdata; + dlzconfigure_callback_t configure_callback; +#ifdef BIND9 + dns_ssutable_t *ssutable; +#endif }; @@ -285,6 +317,30 @@ dns_dlzunregister(dns_dlzimplementation_t **dlzimp); * is called. */ + +isc_result_t +dns_dlz_writeablezone(dns_view_t *view, const char *zone_name); + +/*%< + * creates a writeable DLZ zone. Must be called from within the + * configure() method of a DLZ driver. + */ + + +isc_result_t +dns_dlzconfigure(dns_view_t *view, dlzconfigure_callback_t callback); +/*%< + * call a DLZ drivers configure method, if supplied + */ + +isc_boolean_t +dns_dlz_ssumatch(dns_dlzdb_t *dlzdatabase, + dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr, + dns_rdatatype_t type, const dst_key_t *key); +/*%< + * call a DLZ drivers ssumatch method, if supplied. Otherwise return ISC_FALSE + */ + ISC_LANG_ENDDECLS #endif /* DLZ_H */ diff --git a/lib/dns/include/dns/ds.h b/lib/dns/include/dns/ds.h index b59fb839..04e4bab9 100644 --- a/lib/dns/include/dns/ds.h +++ b/lib/dns/include/dns/ds.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2010 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: ds.h,v 1.10 2007/06/19 23:47:16 tbox Exp $ */ +/* $Id: ds.h,v 1.12 2010-12-23 23:47:08 tbox Exp $ */ #ifndef DNS_DS_H #define DNS_DS_H 1 @@ -26,6 +26,11 @@ #define DNS_DSDIGEST_SHA1 (1) #define DNS_DSDIGEST_SHA256 (2) +#define DNS_DSDIGEST_GOST (3) + +/* should not be here... */ + +#define ISC_GOST_DIGESTLENGTH 32U /* * Assuming SHA-256 digest type. diff --git a/lib/dns/include/dns/events.h b/lib/dns/include/dns/events.h index 9b6d1636..d9858336 100644 --- a/lib/dns/include/dns/events.h +++ b/lib/dns/include/dns/events.h @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: events.h,v 1.55 2010/05/10 23:50:55 tbox Exp $ */ +/* $Id: events.h,v 1.56 2010-12-21 03:11:42 marka Exp $ */ #ifndef DNS_EVENTS_H #define DNS_EVENTS_H 1 @@ -72,6 +72,8 @@ #define DNS_EVENT_MANAGEKEYS (ISC_EVENTCLASS_DNS + 42) #define DNS_EVENT_CLIENTRESDONE (ISC_EVENTCLASS_DNS + 43) #define DNS_EVENT_CLIENTREQDONE (ISC_EVENTCLASS_DNS + 44) +#define DNS_EVENT_ADBGROWENTRIES (ISC_EVENTCLASS_DNS + 45) +#define DNS_EVENT_ADBGROWNAMES (ISC_EVENTCLASS_DNS + 46) #define DNS_EVENT_FIRSTEVENT (ISC_EVENTCLASS_DNS + 0) #define DNS_EVENT_LASTEVENT (ISC_EVENTCLASS_DNS + 65535) diff --git a/lib/dns/include/dns/keyvalues.h b/lib/dns/include/dns/keyvalues.h index cc36d286..21076570 100644 --- a/lib/dns/include/dns/keyvalues.h +++ b/lib/dns/include/dns/keyvalues.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: keyvalues.h,v 1.27 2009/10/22 02:21:31 each Exp $ */ +/* $Id: keyvalues.h,v 1.29 2010-12-23 23:47:08 tbox Exp $ */ #ifndef DNS_KEYVALUES_H #define DNS_KEYVALUES_H 1 @@ -70,6 +70,7 @@ #define DNS_KEYALG_NSEC3RSASHA1 7 #define DNS_KEYALG_RSASHA256 8 #define DNS_KEYALG_RSASHA512 10 +#define DNS_KEYALG_ECCGOST 12 #define DNS_KEYALG_INDIRECT 252 #define DNS_KEYALG_PRIVATEDNS 253 #define DNS_KEYALG_PRIVATEOID 254 /*%< Key begins with OID giving alg */ @@ -98,4 +99,6 @@ #define DNS_SIG_DSAMINBYTES 213 #define DNS_SIG_DSAMAXBYTES 405 +#define DNS_SIG_GOSTSIGSIZE 64 + #endif /* DNS_KEYVALUES_H */ diff --git a/lib/dns/include/dns/name.h b/lib/dns/include/dns/name.h index e00167bf..c13a85d5 100644 --- a/lib/dns/include/dns/name.h +++ b/lib/dns/include/dns/name.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: name.h,v 1.135 2010/07/09 23:46:51 tbox Exp $ */ +/* $Id: name.h,v 1.137 2011-01-13 04:59:26 tbox Exp $ */ #ifndef DNS_NAME_H #define DNS_NAME_H 1 @@ -756,7 +756,7 @@ dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, isc_result_t dns_name_fromtext(dns_name_t *name, isc_buffer_t *source, - dns_name_t *origin, unsigned int options, + const dns_name_t *origin, unsigned int options, isc_buffer_t *target); /*%< * Convert the textual representation of a DNS name at source @@ -1168,11 +1168,18 @@ dns_name_tostring(dns_name_t *source, char **target, isc_mem_t *mctx); isc_result_t dns_name_fromstring(dns_name_t *target, const char *src, unsigned int options, isc_mem_t *mctx); +isc_result_t +dns_name_fromstring2(dns_name_t *target, const char *src, + const dns_name_t *origin, unsigned int options, + isc_mem_t *mctx); /*%< * Convert a string to a name and place it in target, allocating memory * as necessary. 'options' has the same semantics as that of * dns_name_fromtext(). * + * If 'target' has a buffer then the name will be copied into it rather than + * memory being allocated. + * * Requires: * * \li 'target' is a valid name that is not read-only. diff --git a/lib/dns/include/dns/result.h b/lib/dns/include/dns/result.h index c9b4d251..adc1215a 100644 --- a/lib/dns/include/dns/result.h +++ b/lib/dns/include/dns/result.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: result.h,v 1.120 2010/02/25 05:08:01 tbox Exp $ */ +/* $Id: result.h,v 1.122 2011-01-11 23:47:13 tbox Exp $ */ #ifndef DNS_RESULT_H #define DNS_RESULT_H 1 @@ -150,8 +150,9 @@ #define DNS_R_INVALIDNSEC3 (ISC_RESULTCLASS_DNS + 104) #define DNS_R_NOTMASTER (ISC_RESULTCLASS_DNS + 105) #define DNS_R_BROKENCHAIN (ISC_RESULTCLASS_DNS + 106) +#define DNS_R_EXPIRED (ISC_RESULTCLASS_DNS + 107) -#define DNS_R_NRESULTS 107 /*%< Number of results */ +#define DNS_R_NRESULTS 108 /*%< Number of results */ /* * DNS wire format rcodes. diff --git a/lib/dns/include/dns/rpz.h b/lib/dns/include/dns/rpz.h new file mode 100644 index 00000000..404f5176 --- /dev/null +++ b/lib/dns/include/dns/rpz.h @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: rpz.h,v 1.3 2011-01-13 04:59:26 tbox Exp $ */ + +#ifndef DNS_RPZ_H +#define DNS_RPZ_H 1 + +#include <isc/lang.h> + +#include <dns/fixedname.h> +#include <dns/rdata.h> +#include <dns/types.h> + +ISC_LANG_BEGINDECLS + +#define DNS_RPZ_IP_ZONE "rpz-ip" +#define DNS_RPZ_NSIP_ZONE "rpz-nsip" +#define DNS_RPZ_NSDNAME_ZONE "rpz-nsdname" + +typedef isc_uint8_t dns_rpz_cidr_bits_t; + +typedef enum { + DNS_RPZ_TYPE_BAD, + DNS_RPZ_TYPE_QNAME, + DNS_RPZ_TYPE_IP, + DNS_RPZ_TYPE_NSIP, + DNS_RPZ_TYPE_NSDNAME +} dns_rpz_type_t; + +/* + * Require DNS_RPZ_POLICY_NO_OP < DNS_RPZ_POLICY_NXDOMAIN < + * DNS_RPZ_POLICY_NODATA < DNS_RPZ_POLICY_CNAME. + */ +typedef enum { + DNS_RPZ_POLICY_GIVEN = 0, /* 'given': what something else says */ + DNS_RPZ_POLICY_NO_OP = 1, /* 'no-op': do not rewrite */ + DNS_RPZ_POLICY_NXDOMAIN = 2, /* 'nxdomain': answer with NXDOMAIN */ + DNS_RPZ_POLICY_NODATA = 3, /* 'nodata': answer with ANCOUNT=0 */ + DNS_RPZ_POLICY_CNAME = 4, /* 'cname x': answer with x's rrsets */ + DNS_RPZ_POLICY_RECORD = 5, + DNS_RPZ_POLICY_MISS, + DNS_RPZ_POLICY_ERROR +} dns_rpz_policy_t; + +/* + * Specify a response policy zone. + */ +typedef struct dns_rpz_zone dns_rpz_zone_t; + +struct dns_rpz_zone { + ISC_LINK(dns_rpz_zone_t) link; + int num; + dns_name_t origin; /* Policy zone name */ + dns_name_t nsdname; /* RPZ_NSDNAME_ZONE.origin */ + dns_rpz_policy_t policy; /* RPZ_POLICY_GIVEN or override */ + dns_name_t cname; /* override name for + RPZ_POLICY_CNAME */ +}; + +/* + * Radix trees for response policy IP addresses. + */ +typedef struct dns_rpz_cidr dns_rpz_cidr_t; + +/* + * context for finding the best policy + */ +typedef struct { + unsigned int state; +# define DNS_RPZ_REWRITTEN 0x0001 +# define DNS_RPZ_DONE_QNAME 0x0002 +# define DNS_RPZ_DONE_A 0x0004 +# define DNS_RPZ_RECURSING 0x0008 +# define DNS_RPZ_HAVE_IP 0x0010 +# define DNS_RPZ_HAVE_NSIPv4 0x0020 +# define DNS_RPZ_HAVE_NSIPv6 0x0040 +# define DNS_RPZ_HAD_NSDNAME 0x0080 + /* + * Best match so far. + */ + struct { + dns_rpz_type_t type; + dns_rpz_zone_t *rpz; + dns_rpz_cidr_bits_t prefix; + dns_rpz_policy_t policy; + dns_ttl_t ttl; + isc_result_t result; + dns_zone_t *zone; + dns_db_t *db; + dns_dbnode_t *node; + dns_rdataset_t *rdataset; + } m; + /* + * State for chasing NS names and addresses including recursion. + */ + struct { + unsigned int label; + dns_db_t *db; + dns_rdataset_t *ns_rdataset; + dns_rdatatype_t r_type; + isc_result_t r_result; + dns_rdataset_t *r_rdataset; + } ns; + /* + * State of real query while recursing for NSIP or NSDNAME. + */ + struct { + isc_result_t result; + isc_boolean_t is_zone; + isc_boolean_t authoritative; + dns_zone_t *zone; + dns_db_t *db; + dns_dbnode_t *node; + dns_rdataset_t *rdataset; + dns_rdataset_t *sigrdataset; + dns_rdatatype_t qtype; + } q; + dns_name_t *qname; + dns_name_t *r_name; + dns_name_t *fname; + dns_fixedname_t _qnamef; + dns_fixedname_t _r_namef; + dns_fixedname_t _fnamef; +} dns_rpz_st_t; + +#define DNS_RPZ_TTL_DEFAULT 5 + +/* + * So various response policy zone messages can be turned up or down. + */ +#define DNS_RPZ_ERROR_LEVEL ISC_LOG_WARNING +#define DNS_RPZ_INFO_LEVEL ISC_LOG_INFO +#define DNS_RPZ_DEBUG_LEVEL1 ISC_LOG_DEBUG(1) +#define DNS_RPZ_DEBUG_LEVEL2 ISC_LOG_DEBUG(2) + +const char * +dns_rpz_type2str(dns_rpz_type_t type); + +dns_rpz_policy_t +dns_rpz_str2policy(const char *str); + +void +dns_rpz_set_need(isc_boolean_t need); + +isc_boolean_t +dns_rpz_needed(void); + +void +dns_rpz_cidr_free(dns_rpz_cidr_t **cidr); + +void +dns_rpz_view_destroy(dns_view_t *view); + +isc_result_t +dns_rpz_new_cidr(isc_mem_t *mctx, dns_name_t *origin, + dns_rpz_cidr_t **rbtdb_cidr); +void +dns_rpz_enabled(dns_rpz_cidr_t *cidr, dns_rpz_st_t *st); + +void +dns_rpz_cidr_deleteip(dns_rpz_cidr_t *cidr, dns_name_t *name); + +void +dns_rpz_cidr_addip(dns_rpz_cidr_t *cidr, dns_name_t *name); + +isc_result_t +dns_rpz_cidr_find(dns_rpz_cidr_t *cidr, const isc_netaddr_t *netaddr, + dns_rpz_type_t type, dns_name_t *canon_name, + dns_name_t *search_name, dns_rpz_cidr_bits_t *prefix); + +dns_rpz_policy_t +dns_rpz_decode_cname(dns_rdataset_t *, dns_name_t *selfname); + +#endif /* DNS_RPZ_H */ + diff --git a/lib/dns/include/dns/sdlz.h b/lib/dns/include/dns/sdlz.h index c452f463..b917cc07 100644 --- a/lib/dns/include/dns/sdlz.h +++ b/lib/dns/include/dns/sdlz.h @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2005-2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2005-2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: sdlz.h,v 1.9 2009/01/17 23:47:43 tbox Exp $ */ +/* $Id: sdlz.h,v 1.14 2011-01-13 08:50:29 tbox Exp $ */ /*! \file dns/sdlz.h */ @@ -74,11 +74,10 @@ typedef struct dns_sdlzlookup dns_sdlzlookup_t; /* A simple DLZ database traversal in progress. */ typedef struct dns_sdlzallnodes dns_sdlzallnodes_t; - -typedef isc_result_t -(*dns_sdlzallnodesfunc_t)(const char *zone, void *driverarg, void *dbdata, - dns_sdlzallnodes_t *allnodes); - +typedef isc_result_t (*dns_sdlzallnodesfunc_t)(const char *zone, + void *driverarg, + void *dbdata, + dns_sdlzallnodes_t *allnodes); /*%< * Method prototype. Drivers implementing the SDLZ interface may * supply an all nodes method. This method is called when the DNS @@ -92,9 +91,9 @@ typedef isc_result_t * does not have to implement an all nodes method. */ -typedef isc_result_t -(*dns_sdlzallowzonexfr_t)(void *driverarg, void *dbdata, const char *name, - const char *client); +typedef isc_result_t (*dns_sdlzallowzonexfr_t)(void *driverarg, + void *dbdata, const char *name, + const char *client); /*%< * Method prototype. Drivers implementing the SDLZ interface may @@ -117,9 +116,9 @@ typedef isc_result_t * error. */ -typedef isc_result_t -(*dns_sdlzauthorityfunc_t)(const char *zone, void *driverarg, void *dbdata, - dns_sdlzlookup_t *lookup); +typedef isc_result_t (*dns_sdlzauthorityfunc_t)(const char *zone, + void *driverarg, void *dbdata, + dns_sdlzlookup_t *lookup); /*%< * Method prototype. Drivers implementing the SDLZ interface may @@ -131,9 +130,9 @@ typedef isc_result_t * method. */ -typedef isc_result_t -(*dns_sdlzcreate_t)(const char *dlzname, unsigned int argc, char *argv[], - void *driverarg, void **dbdata); +typedef isc_result_t (*dns_sdlzcreate_t)(const char *dlzname, + unsigned int argc, char *argv[], + void *driverarg, void **dbdata); /*%< * Method prototype. Drivers implementing the SDLZ interface may @@ -142,8 +141,7 @@ typedef isc_result_t * does not have to implement a create method. */ -typedef void -(*dns_sdlzdestroy_t)(void *driverarg, void *dbdata); +typedef void (*dns_sdlzdestroy_t)(void *driverarg, void *dbdata); /*%< * Method prototype. Drivers implementing the SDLZ interface may @@ -198,6 +196,87 @@ typedef isc_result_t * lookup method. */ +typedef isc_result_t (*dns_sdlznewversion_t)(const char *zone, + void *driverarg, void *dbdata, + void **versionp); +/*%< + * Method prototype. Drivers implementing the SDLZ interface may + * supply a newversion method. This method is called to start a + * write transaction on a zone and should only be implemented by + * writeable backends. + * When implemented, the driver should create a new transaction, and + * fill *versionp with a pointer to the transaction state. The + * closeversion function will be called to close the transaction. + */ + +typedef void (*dns_sdlzcloseversion_t)(const char *zone, isc_boolean_t commit, + void *driverarg, void *dbdata, + void **versionp); +/*%< + * Method prototype. Drivers implementing the SDLZ interface must + * supply a closeversion method if they supply a newversion method. + * When implemented, the driver should close the given transaction, + * committing changes if 'commit' is ISC_TRUE. If 'commit' is not true + * then all changes should be discarded and the database rolled back. + * If the call is successful then *versionp should be set to NULL + */ + +typedef isc_result_t (*dns_sdlzconfigure_t)(dns_view_t *view, void *driverarg, + void *dbdata); +/*%< + * Method prototype. Drivers implementing the SDLZ interface may + * supply a configure method. When supplied, it will be called + * immediately after the create method to give the driver a chance + * to configure writeable zones + */ + + +typedef isc_boolean_t (*dns_sdlzssumatch_t)(const char *signer, + const char *name, + const char *tcpaddr, + const char *type, + const char *key, + isc_uint32_t keydatalen, + unsigned char *keydata, + void *driverarg, + void *dbdata); + +/*%< + * Method prototype. Drivers implementing the SDLZ interface may + * supply a ssumatch method. If supplied, then ssumatch will be + * called to authorize any zone updates. The driver should return + * ISC_TRUE to allow the update, and ISC_FALSE to deny it. For a DLZ + * controlled zone, this is the only access control on updates. + */ + + +typedef isc_result_t (*dns_sdlzmodrdataset_t)(const char *name, + const char *rdatastr, + void *driverarg, void *dbdata, + void *version); +/*%< + * Method prototype. Drivers implementing the SDLZ interface may + * supply addrdataset and subtractrdataset methods. If supplied, then these + * will be called when rdatasets are added/subtracted during + * updates. The version parameter comes from a call to the sdlz + * newversion() method from the driver. The rdataset parameter is a + * linearise string representation of the rdataset change. The format + * is the same as used by dig when displaying records. The fields are + * tab delimited. + */ + +typedef isc_result_t (*dns_sdlzdelrdataset_t)(const char *name, + const char *type, + void *driverarg, void *dbdata, + void *version); +/*%< + * Method prototype. Drivers implementing the SDLZ interface may + * supply a delrdataset method. If supplied, then this + * function will be called when rdatasets are deleted during + * updates. The call should remove all rdatasets of the given type for + * the specified name. + */ + typedef struct dns_sdlzmethods { dns_sdlzcreate_t create; dns_sdlzdestroy_t destroy; @@ -206,6 +285,13 @@ typedef struct dns_sdlzmethods { dns_sdlzauthorityfunc_t authority; dns_sdlzallnodesfunc_t allnodes; dns_sdlzallowzonexfr_t allowzonexfr; + dns_sdlznewversion_t newversion; + dns_sdlzcloseversion_t closeversion; + dns_sdlzconfigure_t configure; + dns_sdlzssumatch_t ssumatch; + dns_sdlzmodrdataset_t addrdataset; + dns_sdlzmodrdataset_t subtractrdataset; + dns_sdlzdelrdataset_t delrdataset; } dns_sdlzmethods_t; isc_result_t @@ -261,6 +347,14 @@ dns_sdlz_putsoa(dns_sdlzlookup_t *lookup, const char *mname, const char *rname, */ +isc_result_t +dns_sdlz_setdb(dns_dlzdb_t *dlzdatabase, dns_rdataclass_t rdclass, + dns_name_t *name, dns_db_t **dbp); +/*%< + * Create the database pointers for a writeable SDLZ zone + */ + + ISC_LANG_ENDDECLS #endif /* SDLZ_H */ diff --git a/lib/dns/include/dns/ssu.h b/lib/dns/include/dns/ssu.h index f013bd03..5d6c1781 100644 --- a/lib/dns/include/dns/ssu.h +++ b/lib/dns/include/dns/ssu.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2010, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: ssu.h,v 1.24 2008/01/18 23:46:58 tbox Exp $ */ +/* $Id: ssu.h,v 1.28 2011-01-06 23:47:00 tbox Exp $ */ #ifndef DNS_SSU_H #define DNS_SSU_H 1 @@ -25,6 +25,7 @@ #include <isc/lang.h> #include <dns/types.h> +#include <dst/dst.h> ISC_LANG_BEGINDECLS @@ -40,7 +41,9 @@ ISC_LANG_BEGINDECLS #define DNS_SSUMATCHTYPE_SUBDOMAINKRB5 9 #define DNS_SSUMATCHTYPE_TCPSELF 10 #define DNS_SSUMATCHTYPE_6TO4SELF 11 -#define DNS_SSUMATCHTYPE_MAX 11 /* max value */ +#define DNS_SSUMATCHTYPE_EXTERNAL 12 +#define DNS_SSUMATCHTYPE_DLZ 13 +#define DNS_SSUMATCHTYPE_MAX 12 /* max value */ isc_result_t dns_ssutable_create(isc_mem_t *mctx, dns_ssutable_t **table); @@ -57,6 +60,16 @@ dns_ssutable_create(isc_mem_t *mctx, dns_ssutable_t **table); *\li ISC_R_NOMEMORY */ +isc_result_t +dns_ssutable_createdlz(isc_mem_t *mctx, dns_ssutable_t **tablep, + dns_dlzdb_t *dlzdatabase); +/*%< + * Create an SSU table that contains a dlzdatabase pointer, and a + * single rule with matchtype DNS_SSUMATCHTYPE_DLZ. This type of SSU + * table is used by writeable DLZ drivers to offload authorization for + * updates to the driver. + */ + void dns_ssutable_attach(dns_ssutable_t *source, dns_ssutable_t **targetp); /*%< @@ -120,7 +133,7 @@ dns_ssutable_addrule(dns_ssutable_t *table, isc_boolean_t grant, isc_boolean_t dns_ssutable_checkrules(dns_ssutable_t *table, dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr, - dns_rdatatype_t type); + dns_rdatatype_t type, const dst_key_t *key); /*%< * Checks that the attempted update of (name, type) is allowed according * to the rules specified in the simple-secure-update rule table. If @@ -184,6 +197,16 @@ isc_result_t dns_ssutable_nextrule(dns_ssurule_t *rule, *\li #ISC_R_NOMORE */ + +/*%< + * Check a policy rule via an external application + */ +isc_boolean_t +dns_ssu_external_match(dns_name_t *identity, dns_name_t *signer, + dns_name_t *name, isc_netaddr_t *tcpaddr, + dns_rdatatype_t type, const dst_key_t *key, + isc_mem_t *mctx); + ISC_LANG_ENDDECLS #endif /* DNS_SSU_H */ diff --git a/lib/dns/include/dns/tkey.h b/lib/dns/include/dns/tkey.h index 6a002a9a..f9e34f8f 100644 --- a/lib/dns/include/dns/tkey.h +++ b/lib/dns/include/dns/tkey.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: tkey.h,v 1.28 2009/01/17 23:47:43 tbox Exp $ */ +/* $Id: tkey.h,v 1.32 2011-01-08 23:47:01 tbox Exp $ */ #ifndef DNS_TKEY_H #define DNS_TKEY_H 1 @@ -44,6 +44,7 @@ struct dns_tkeyctx { gss_cred_id_t gsscred; isc_mem_t *mctx; isc_entropy_t *ectx; + char *gssapi_keytab; }; isc_result_t @@ -123,7 +124,8 @@ dns_tkey_builddhquery(dns_message_t *msg, dst_key_t *key, dns_name_t *name, isc_result_t dns_tkey_buildgssquery(dns_message_t *msg, dns_name_t *name, dns_name_t *gname, isc_buffer_t *intoken, isc_uint32_t lifetime, - gss_ctx_id_t *context, isc_boolean_t win2k); + gss_ctx_id_t *context, isc_boolean_t win2k, + isc_mem_t *mctx, char **err_message); /*%< * Builds a query containing a TKEY that will generate a GSSAPI context. * The key is requested to have the specified lifetime (in seconds). @@ -141,6 +143,7 @@ dns_tkey_buildgssquery(dns_message_t *msg, dns_name_t *name, dns_name_t *gname, *\li ISC_R_SUCCESS msg was successfully updated to include the * query to be sent *\li other an error occurred while building the message + *\li *err_message optional error message */ @@ -187,7 +190,7 @@ isc_result_t dns_tkey_processgssresponse(dns_message_t *qmsg, dns_message_t *rmsg, dns_name_t *gname, gss_ctx_id_t *context, isc_buffer_t *outtoken, dns_tsigkey_t **outkey, - dns_tsig_keyring_t *ring); + dns_tsig_keyring_t *ring, char **err_message); /*%< * XXX */ @@ -211,12 +214,11 @@ dns_tkey_processdeleteresponse(dns_message_t *qmsg, dns_message_t *rmsg, * component of the query or response */ - isc_result_t dns_tkey_gssnegotiate(dns_message_t *qmsg, dns_message_t *rmsg, dns_name_t *server, gss_ctx_id_t *context, dns_tsigkey_t **outkey, dns_tsig_keyring_t *ring, - isc_boolean_t win2k); + isc_boolean_t win2k, char **err_message); /* * Client side negotiation of GSS-TSIG. Process the response diff --git a/lib/dns/include/dns/tsig.h b/lib/dns/include/dns/tsig.h index c5299c53..ef9423b2 100644 --- a/lib/dns/include/dns/tsig.h +++ b/lib/dns/include/dns/tsig.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: tsig.h,v 1.57 2010/12/09 00:54:34 marka Exp $ */ +/* $Id: tsig.h,v 1.59 2011-01-11 23:47:13 tbox Exp $ */ #ifndef DNS_TSIG_H #define DNS_TSIG_H 1 @@ -25,6 +25,7 @@ #include <isc/lang.h> #include <isc/refcount.h> #include <isc/rwlock.h> +#include <isc/stdio.h> #include <isc/stdtime.h> #include <dns/types.h> @@ -69,6 +70,7 @@ struct dns_tsig_keyring { unsigned int generated; unsigned int maxgenerated; ISC_LIST(dns_tsigkey_t) lru; + unsigned int references; }; struct dns_tsigkey { @@ -269,7 +271,14 @@ dns_tsigkeyring_add(dns_tsig_keyring_t *ring, dns_name_t *name, void -dns_tsigkeyring_destroy(dns_tsig_keyring_t **ringp); +dns_tsigkeyring_attach(dns_tsig_keyring_t *source, dns_tsig_keyring_t **target); + +void +dns_tsigkeyring_detach(dns_tsig_keyring_t **ringp); + +isc_result_t +dns_tsigkeyring_dumpanddetach(dns_tsig_keyring_t **ringp, FILE *fp); + /*%< * Destroy a TSIG key ring. * @@ -277,6 +286,9 @@ dns_tsigkeyring_destroy(dns_tsig_keyring_t **ringp); *\li 'ringp' is not NULL */ +void +dns_keyring_restore(dns_tsig_keyring_t *ring, FILE *fp); + ISC_LANG_ENDDECLS #endif /* DNS_TSIG_H */ diff --git a/lib/dns/include/dns/view.h b/lib/dns/include/dns/view.h index c044f655..4b240239 100644 --- a/lib/dns/include/dns/view.h +++ b/lib/dns/include/dns/view.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: view.h,v 1.128 2010/12/08 02:46:16 marka Exp $ */ +/* $Id: view.h,v 1.132 2011-01-13 01:59:28 marka Exp $ */ #ifndef DNS_VIEW_H #define DNS_VIEW_H 1 @@ -74,6 +74,7 @@ #include <dns/acl.h> #include <dns/fixedname.h> #include <dns/rdatastruct.h> +#include <dns/rpz.h> #include <dns/types.h> ISC_LANG_BEGINDECLS @@ -160,6 +161,7 @@ struct dns_view { dns_acl_t * v4_aaaa_acl; dns_dns64list_t dns64; unsigned int dns64cnt; + ISC_LIST(dns_rpz_zone_t) rpz_zones; /* * Configurable data for server use only, @@ -376,6 +378,8 @@ dns_view_sethints(dns_view_t *view, dns_db_t *hints); void dns_view_setkeyring(dns_view_t *view, dns_tsig_keyring_t *ring); +void +dns_view_setdynamickeyring(dns_view_t *view, dns_tsig_keyring_t *ring); /*%< * Set the view's static TSIG keys * @@ -392,6 +396,15 @@ dns_view_setkeyring(dns_view_t *view, dns_tsig_keyring_t *ring); */ void +dns_view_getdynamickeyring(dns_view_t *view, dns_tsig_keyring_t **ringp); +/*%< + * Return the views dynamic keys. + * + * \li 'view' is a valid, unfrozen view. + * \li 'ringp' != NULL && ringp == NULL. + */ + +void dns_view_setdstport(dns_view_t *view, in_port_t dstport); /*%< * Set the view's destination port. This is the port to @@ -459,9 +472,24 @@ dns_view_find(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, isc_stdtime_t now, unsigned int options, isc_boolean_t use_hints, dns_db_t **dbp, dns_dbnode_t **nodep, dns_name_t *foundname, dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset); +isc_result_t +dns_view_find2(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, + isc_stdtime_t now, unsigned int options, + isc_boolean_t use_hints, isc_boolean_t use_static_stub, + dns_db_t **dbp, dns_dbnode_t **nodep, dns_name_t *foundname, + dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset); /*%< * Find an rdataset whose owner name is 'name', and whose type is * 'type'. + * In general, this function first searches view's zone and cache DBs for the + * best match data against 'name'. If nothing found there, and if 'use_hints' + * is ISC_TRUE, the view's hint DB (if configured) is searched. + * If the view is configured with a static-stub zone which gives the longest + * match for 'name' among the zones, however, the cache DB is not consulted + * unless 'use_static_stub' is ISC_FALSE (see below about this argument). + * + * dns_view_find() is a backward compatible version equivalent to + * dns_view_find2() with use_static_stub argument being ISC_FALSE. * * Notes: * @@ -477,6 +505,23 @@ dns_view_find(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, * in the hints database but not the type, the result code will be * #DNS_R_HINTNXRRSET. * + *\li If 'use_static_stub' is ISC_FALSE and the longest match zone for 'name' + * is a static-stub zone, it's ignored and the cache and/or hints will be + * searched. In the majority of the cases this argument should be + * ISC_FALSE. The only known usage of this argument being ISC_TRUE is + * if this search is for a "bailiwick" glue A or AAAA RRset that may + * best match a static-stub zone. Consider the following example: + * this view is configured with a static-stub zone "example.com", + * and an attempt of recursive resolution needs to send a query for the + * zone. In this case it's quite likely that the resolver is trying to + * find A/AAAA RRs for the apex name "example.com". And, to honor the + * static-stub configuration it needs to return the glue RRs in the + * static-stub zone even if that exact RRs coming from the authoritative + * zone has been cached. + * In other general cases, the requested data is better to be + * authoritative, either locally configured or retrieved from an external + * server, and the data in the static-stub zone should better be ignored. + * *\li 'foundname' must meet the requirements of dns_db_find(). * *\li If 'sigrdataset' is not NULL, and there is a SIG rdataset which @@ -1027,4 +1072,7 @@ dns_view_setnewzones(dns_view_t *view, isc_boolean_t allow, void *cfgctx, * \li 'view' is valid. */ +void +dns_view_restorekeyring(dns_view_t *view); + #endif /* DNS_VIEW_H */ diff --git a/lib/dns/include/dns/zone.h b/lib/dns/include/dns/zone.h index 842370d0..67756d92 100644 --- a/lib/dns/include/dns/zone.h +++ b/lib/dns/include/dns/zone.h @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zone.h,v 1.178 2010/08/16 22:21:07 marka Exp $ */ +/* $Id: zone.h,v 1.182 2010-12-18 01:56:22 each Exp $ */ #ifndef DNS_ZONE_H #define DNS_ZONE_H 1 @@ -41,7 +41,9 @@ typedef enum { dns_zone_master, dns_zone_slave, dns_zone_stub, - dns_zone_key + dns_zone_staticstub, + dns_zone_key, + dns_zone_dlz } dns_zonetype_t; #define DNS_ZONEOPT_SERVERS 0x00000001U /*%< perform server checks */ @@ -380,6 +382,22 @@ dns_zone_getdb(dns_zone_t *zone, dns_db_t **dbp); *\li DNS_R_NOTLOADED */ +void +dns_zone_setdb(dns_zone_t *zone, dns_db_t *db); +/*%< + * Sets the zone database to 'db'. + * + * This function is expected to be used to configure a zone with a + * database which is not loaded from a file or zone transfer. + * It can be used for a general purpose zone, but right now its use + * is limited to static-stub zones to avoid possible undiscovered + * problems in the general cases. + * + * Require: + *\li 'zone' to be a valid zone of static-stub. + *\li zone doesn't have a database. + */ + isc_result_t dns_zone_setdbtype(dns_zone_t *zone, unsigned int dbargc, const char * const *dbargv); @@ -1686,7 +1704,7 @@ void dns_zone_setcheckmx(dns_zone_t *zone, dns_checkmxfunc_t checkmx); /*%< * Set the post load integrity callback function 'checkmx'. - * 'checkmx' will be called if the MX is not within the zone. + * 'checkmx' will be called if the MX TARGET is not within the zone. * * Require: * 'zone' to be a valid zone. @@ -1705,8 +1723,8 @@ dns_zone_setchecksrv(dns_zone_t *zone, dns_checkmxfunc_t checksrv); void dns_zone_setcheckns(dns_zone_t *zone, dns_checknsfunc_t checkns); /*%< - * Set the post load integrity callback function 'checkmx'. - * 'checkmx' will be called if the MX is not within the zone. + * Set the post load integrity callback function 'checkns'. + * 'checkns' will be called if the NS TARGET is not within the zone. * * Require: * 'zone' to be a valid zone. @@ -1828,6 +1846,12 @@ dns_zone_getadded(dns_zone_t *zone); * \li 'zone' to be valid. */ +isc_result_t +dns_zone_dlzpostload(dns_zone_t *zone, dns_db_t *db); +/*% + * Load the origin names for a writeable DLZ database. + */ + ISC_LANG_ENDDECLS #endif /* DNS_ZONE_H */ diff --git a/lib/dns/include/dst/dst.h b/lib/dns/include/dst/dst.h index 4ddfaf36..3c999f68 100644 --- a/lib/dns/include/dst/dst.h +++ b/lib/dns/include/dst/dst.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dst.h,v 1.27 2010/12/09 04:31:57 tbox Exp $ */ +/* $Id: dst.h,v 1.31 2011-01-11 23:47:14 tbox Exp $ */ #ifndef DST_DST_H #define DST_DST_H 1 @@ -58,6 +58,7 @@ typedef struct dst_context dst_context_t; #define DST_ALG_NSEC3RSASHA1 7 #define DST_ALG_RSASHA256 8 #define DST_ALG_RSASHA512 10 +#define DST_ALG_ECCGOST 12 #define DST_ALG_HMACMD5 157 #define DST_ALG_GSSAPI 160 #define DST_ALG_HMACSHA1 161 /* XXXMPA */ @@ -470,7 +471,7 @@ dst_key_getgssctx(const dst_key_t *key); isc_result_t dst_key_fromgssapi(dns_name_t *name, gss_ctx_id_t gssctx, isc_mem_t *mctx, - dst_key_t **keyp); + dst_key_t **keyp, isc_region_t *intoken); /*%< * Converts a GSSAPI opaque context id into a DST key. * @@ -831,12 +832,46 @@ dst_key_setprivateformat(dst_key_t *key, int major, int minor); #define DST_KEY_FORMATSIZE (DNS_NAME_FORMATSIZE + DNS_SECALG_FORMATSIZE + 7) void -dst_key_format(dst_key_t *key, char *cp, unsigned int size); +dst_key_format(const dst_key_t *key, char *cp, unsigned int size); /*%< * Write the uniquely identifying information about the key (name, * algorithm, key ID) into a string 'cp' of size 'size'. */ + +isc_buffer_t * +dst_key_tkeytoken(const dst_key_t *key); +/*%< + * Return the token from the TKEY request, if any. If this key was + * not negotiated via TKEY, return NULL. + */ + + +isc_result_t +dst_key_dump(dst_key_t *key, isc_mem_t *mctx, char **buffer, int *length); +/*%< + * Allocate 'buffer' and dump the key into it in base64 format. The buffer + * is not NUL terminated. The length of the buffer is returned in *length. + * + * 'buffer' needs to be freed using isc_mem_put(mctx, buffer, length); + * + * Requires: + * 'buffer' to be non NULL and *buffer to be NULL. + * 'length' to be non NULL and *length to be zero. + * + * Returns: + * ISC_R_SUCCESS + * ISC_R_NOMEMORY + * ISC_R_NOTIMPLEMENTED + * others. + */ + +isc_result_t +dst_key_restore(dns_name_t *name, unsigned int alg, unsigned int flags, + unsigned int protocol, dns_rdataclass_t rdclass, + isc_mem_t *mctx, const char *keystr, dst_key_t **keyp); + + ISC_LANG_ENDDECLS #endif /* DST_DST_H */ diff --git a/lib/dns/include/dst/gssapi.h b/lib/dns/include/dst/gssapi.h index 31e454a4..189e6b59 100644 --- a/lib/dns/include/dst/gssapi.h +++ b/lib/dns/include/dst/gssapi.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: gssapi.h,v 1.11 2009/01/17 23:47:43 tbox Exp $ */ +/* $Id: gssapi.h,v 1.16 2011-01-08 23:47:01 tbox Exp $ */ #ifndef DST_GSSAPI_H #define DST_GSSAPI_H 1 @@ -34,8 +34,12 @@ * MSVC does not like macros in #include lines. */ #include <gssapi/gssapi.h> +#include <gssapi/gssapi_krb5.h> #else #include ISC_PLATFORM_GSSAPIHEADER +#ifdef ISC_PLATFORM_GSSAPI_KRB5_HEADER +#include ISC_PLATFORM_GSSAPI_KRB5_HEADER +#endif #endif #ifndef GSS_SPNEGO_MECHANISM #define GSS_SPNEGO_MECHANISM ((void*)0) @@ -90,7 +94,8 @@ dst_gssapi_releasecred(gss_cred_id_t *cred); isc_result_t dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, - isc_buffer_t *outtoken, gss_ctx_id_t *gssctx); + isc_buffer_t *outtoken, gss_ctx_id_t *gssctx, + isc_mem_t *mctx, char **err_message); /* * Initiates a GSS context. * @@ -108,10 +113,12 @@ dst_gssapi_initctx(dns_name_t *name, isc_buffer_t *intoken, * ISC_R_SUCCESS msg was successfully updated to include the * query to be sent * other an error occurred while building the message + * *err_message optional error message */ isc_result_t dst_gssapi_acceptctx(gss_cred_id_t cred, + const char *gssapi_keytab, isc_region_t *intoken, isc_buffer_t **outtoken, gss_ctx_id_t *context, dns_name_t *principal, isc_mem_t *mctx); diff --git a/lib/dns/name.c b/lib/dns/name.c index 8442acef..f88f281b 100644 --- a/lib/dns/name.c +++ b/lib/dns/name.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: name.c,v 1.172 2010/07/09 05:13:15 each Exp $ */ +/* $Id: name.c,v 1.174 2011-01-13 04:59:25 tbox Exp $ */ /*! \file */ @@ -1021,7 +1021,7 @@ dns_name_toregion(dns_name_t *name, isc_region_t *r) { isc_result_t dns_name_fromtext(dns_name_t *name, isc_buffer_t *source, - dns_name_t *origin, unsigned int options, + const dns_name_t *origin, unsigned int options, isc_buffer_t *target) { unsigned char *ndata, *label; @@ -2396,6 +2396,14 @@ isc_result_t dns_name_fromstring(dns_name_t *target, const char *src, unsigned int options, isc_mem_t *mctx) { + return (dns_name_fromstring2(target, src, dns_rootname, options, mctx)); +} + +isc_result_t +dns_name_fromstring2(dns_name_t *target, const char *src, + const dns_name_t *origin, unsigned int options, + isc_mem_t *mctx) +{ isc_result_t result; isc_buffer_t buf; dns_fixedname_t fn; @@ -2405,14 +2413,19 @@ dns_name_fromstring(dns_name_t *target, const char *src, unsigned int options, isc_buffer_init(&buf, src, strlen(src)); isc_buffer_add(&buf, strlen(src)); - dns_fixedname_init(&fn); - name = dns_fixedname_name(&fn); + if (BINDABLE(target) && target->buffer != NULL) + name = target; + else { + dns_fixedname_init(&fn); + name = dns_fixedname_name(&fn); + } - result = dns_name_fromtext(name, &buf, dns_rootname, options, NULL); + result = dns_name_fromtext(name, &buf, origin, options, NULL); if (result != ISC_R_SUCCESS) return (result); - result = dns_name_dup(name, mctx, target); + if (name != target) + result = dns_name_dupwithoffsets(name, mctx, target); return (result); } diff --git a/lib/dns/openssldh_link.c b/lib/dns/openssldh_link.c index 5be3c9c6..9deda6b4 100644 --- a/lib/dns/openssldh_link.c +++ b/lib/dns/openssldh_link.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -31,7 +31,7 @@ /* * Principal Author: Brian Wellington - * $Id: openssldh_link.c,v 1.18 2009/10/30 05:08:23 marka Exp $ + * $Id: openssldh_link.c,v 1.20 2011-01-11 23:47:13 tbox Exp $ */ #ifdef OPENSSL @@ -640,6 +640,8 @@ static dst_func_t openssldh_functions = { openssldh_parse, openssldh_cleanup, NULL, /*%< fromlabel */ + NULL, /*%< dump */ + NULL, /*%< restore */ }; isc_result_t diff --git a/lib/dns/openssldsa_link.c b/lib/dns/openssldsa_link.c index feab1a79..ae88d4c9 100644 --- a/lib/dns/openssldsa_link.c +++ b/lib/dns/openssldsa_link.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -29,7 +29,7 @@ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: openssldsa_link.c,v 1.18 2009/10/30 05:08:23 marka Exp $ */ +/* $Id: openssldsa_link.c,v 1.20 2011-01-11 23:47:13 tbox Exp $ */ #ifdef OPENSSL #ifndef USE_EVP @@ -618,6 +618,8 @@ static dst_func_t openssldsa_functions = { openssldsa_parse, NULL, /*%< cleanup */ NULL, /*%< fromlabel */ + NULL, /*%< dump */ + NULL, /*%< restore */ }; isc_result_t diff --git a/lib/dns/opensslgost_link.c b/lib/dns/opensslgost_link.c new file mode 100644 index 00000000..55276277 --- /dev/null +++ b/lib/dns/opensslgost_link.c @@ -0,0 +1,416 @@ +/* + * Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: opensslgost_link.c,v 1.3 2010-12-23 23:47:08 tbox Exp $ */ + +#include <config.h> + +#ifdef HAVE_OPENSSL_GOST + +#include <isc/entropy.h> +#include <isc/mem.h> +#include <isc/string.h> +#include <isc/util.h> + +#include <dst/result.h> + +#include "dst_internal.h" +#include "dst_openssl.h" +#include "dst_parse.h" + +#include <openssl/err.h> +#include <openssl/objects.h> +#include <openssl/rsa.h> +#include <openssl/engine.h> + +static ENGINE *e = NULL; +static const EVP_MD *opensslgost_digest; +extern const EVP_MD *EVP_gost(void); + +const EVP_MD *EVP_gost(void) { + return (opensslgost_digest); +} + +#define DST_RET(a) {ret = a; goto err;} + +static isc_result_t opensslgost_todns(const dst_key_t *key, + isc_buffer_t *data); + +static isc_result_t +opensslgost_createctx(dst_key_t *key, dst_context_t *dctx) { + EVP_MD_CTX *evp_md_ctx; + const EVP_MD *md = EVP_gost(); + + UNUSED(key); + + if (md == NULL) + return (DST_R_OPENSSLFAILURE); + + evp_md_ctx = EVP_MD_CTX_create(); + if (evp_md_ctx == NULL) + return (ISC_R_NOMEMORY); + + if (!EVP_DigestInit_ex(evp_md_ctx, md, NULL)) { + EVP_MD_CTX_destroy(evp_md_ctx); + return (ISC_R_FAILURE); + } + dctx->ctxdata.evp_md_ctx = evp_md_ctx; + + return (ISC_R_SUCCESS); +} + +static void +opensslgost_destroyctx(dst_context_t *dctx) { + EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx; + + if (evp_md_ctx != NULL) { + EVP_MD_CTX_destroy(evp_md_ctx); + dctx->ctxdata.evp_md_ctx = NULL; + } +} + +static isc_result_t +opensslgost_adddata(dst_context_t *dctx, const isc_region_t *data) { + EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx; + + if (!EVP_DigestUpdate(evp_md_ctx, data->base, data->length)) + return (ISC_R_FAILURE); + + return (ISC_R_SUCCESS); +} + +static isc_result_t +opensslgost_sign(dst_context_t *dctx, isc_buffer_t *sig) { + dst_key_t *key = dctx->key; + isc_region_t r; + unsigned int siglen = 0; + EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx; + EVP_PKEY *pkey = key->keydata.pkey; + + isc_buffer_availableregion(sig, &r); + + if (r.length < (unsigned int) EVP_PKEY_size(pkey)) + return (ISC_R_NOSPACE); + + if (!EVP_SignFinal(evp_md_ctx, r.base, &siglen, pkey)) + return (ISC_R_FAILURE); + + isc_buffer_add(sig, siglen); + + return (ISC_R_SUCCESS); +} + +static isc_result_t +opensslgost_verify(dst_context_t *dctx, const isc_region_t *sig) { + dst_key_t *key = dctx->key; + int status = 0; + EVP_MD_CTX *evp_md_ctx = dctx->ctxdata.evp_md_ctx; + EVP_PKEY *pkey = key->keydata.pkey; + + status = EVP_VerifyFinal(evp_md_ctx, sig->base, sig->length, pkey); + if (status != 1) + return (dst__openssl_toresult(DST_R_VERIFYFAILURE)); + + return (ISC_R_SUCCESS); +} + +static isc_boolean_t +opensslgost_compare(const dst_key_t *key1, const dst_key_t *key2) { + EVP_PKEY *pkey1, *pkey2; + + pkey1 = key1->keydata.pkey; + pkey2 = key2->keydata.pkey; + + if (pkey1 == NULL && pkey2 == NULL) + return (ISC_TRUE); + else if (pkey1 == NULL || pkey2 == NULL) + return (ISC_FALSE); + + if (EVP_PKEY_cmp(pkey1, pkey2) != 1) + return (ISC_FALSE); + return (ISC_TRUE); +} + +static int +progress_cb(EVP_PKEY_CTX *ctx) +{ + union { + void *dptr; + void (*fptr)(int); + } u; + int p; + + u.dptr = EVP_PKEY_CTX_get_app_data(ctx); + p = EVP_PKEY_CTX_get_keygen_info(ctx, 0); + if (u.fptr != NULL) + u.fptr(p); + return (1); +} + +static isc_result_t +opensslgost_generate(dst_key_t *key, int unused, void (*callback)(int)) { + EVP_PKEY_CTX *ctx; + union { + void *dptr; + void (*fptr)(int); + } u; + EVP_PKEY *pkey = NULL; + + UNUSED(unused); + ctx = EVP_PKEY_CTX_new_id(NID_id_GostR3410_2001, NULL); + if (ctx == NULL) + goto err; + if (callback != NULL) { + u.fptr = callback; + EVP_PKEY_CTX_set_app_data(ctx, u.dptr); + EVP_PKEY_CTX_set_cb(ctx, &progress_cb); + } + if (EVP_PKEY_keygen_init(ctx) <= 0) + goto err; + if (EVP_PKEY_CTX_ctrl_str(ctx, "paramset", "A") <= 0) + goto err; + if (EVP_PKEY_keygen(ctx, &pkey) <= 0) + goto err; + key->keydata.pkey = pkey; + EVP_PKEY_CTX_free(ctx); + return (ISC_R_SUCCESS); + +err: + if (pkey != NULL) + EVP_PKEY_free(pkey); + if (ctx != NULL) + EVP_PKEY_CTX_free(ctx); + return (dst__openssl_toresult(DST_R_OPENSSLFAILURE)); +} + +static isc_boolean_t +opensslgost_isprivate(const dst_key_t *key) { + EVP_PKEY *pkey = key->keydata.pkey; + EC_KEY *ec; + + INSIST(pkey != NULL); + + ec = EVP_PKEY_get0(pkey); + return (ISC_TF(ec != NULL && EC_KEY_get0_private_key(ec) != NULL)); +} + +static void +opensslgost_destroy(dst_key_t *key) { + EVP_PKEY *pkey = key->keydata.pkey; + + EVP_PKEY_free(pkey); + key->keydata.pkey = NULL; +} + +unsigned char gost_prefix[37] = { + 0x30, 0x63, 0x30, 0x1c, 0x06, 0x06, 0x2a, 0x85, + 0x03, 0x02, 0x02, 0x13, 0x30, 0x12, 0x06, 0x07, + 0x2a, 0x85, 0x03, 0x02, 0x02, 0x23, 0x01, 0x06, + 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1e, 0x01, + 0x03, 0x43, 0x00, 0x04, 0x40 +}; + +static isc_result_t +opensslgost_todns(const dst_key_t *key, isc_buffer_t *data) { + EVP_PKEY *pkey; + isc_region_t r; + unsigned char der[37 + 64], *p; + int len; + + REQUIRE(key->keydata.pkey != NULL); + + pkey = key->keydata.pkey; + + isc_buffer_availableregion(data, &r); + if (r.length < 64) + return (ISC_R_NOSPACE); + + p = der; + len = i2d_PUBKEY(pkey, &p); + INSIST(len == sizeof(der)); + INSIST(memcmp(gost_prefix, der, 37) == 0); + memcpy(r.base, der + 37, 64); + isc_buffer_add(data, 64); + + return (ISC_R_SUCCESS); +} + +static isc_result_t +opensslgost_fromdns(dst_key_t *key, isc_buffer_t *data) { + isc_region_t r; + EVP_PKEY *pkey = NULL; + unsigned char der[37 + 64]; + const unsigned char *p; + + isc_buffer_remainingregion(data, &r); + if (r.length == 0) + return (ISC_R_SUCCESS); + + if (r.length != 64) + return (DST_R_INVALIDPUBLICKEY); + memcpy(der, gost_prefix, 37); + memcpy(der + 37, r.base, 64); + isc_buffer_forward(data, 64); + + p = der; + if (d2i_PUBKEY(&pkey, &p, (long) sizeof(der)) == NULL) + return (dst__openssl_toresult(DST_R_OPENSSLFAILURE)); + key->keydata.pkey = pkey; + + return (ISC_R_SUCCESS); +} + +static isc_result_t +opensslgost_tofile(const dst_key_t *key, const char *directory) { + EVP_PKEY *pkey; + dst_private_t priv; + isc_result_t result; + unsigned char *der, *p; + int len; + + if (key->keydata.pkey == NULL) + return (DST_R_NULLKEY); + + pkey = key->keydata.pkey; + + len = i2d_PrivateKey(pkey, NULL); + der = isc_mem_get(key->mctx, (size_t) len); + if (der == NULL) + return (ISC_R_NOMEMORY); + + p = der; + if (i2d_PrivateKey(pkey, &p) != len) { + result = dst__openssl_toresult(DST_R_OPENSSLFAILURE); + goto fail; + } + + priv.elements[0].tag = TAG_GOST_PRIVASN1; + priv.elements[0].length = len; + priv.elements[0].data = der; + priv.nelements = GOST_NTAGS; + + result = dst__privstruct_writefile(key, &priv, directory); + fail: + if (der != NULL) + isc_mem_put(key->mctx, der, (size_t) len); + return (result); +} + +static isc_result_t +opensslgost_parse(dst_key_t *key, isc_lex_t *lexer, dst_key_t *pub) { + dst_private_t priv; + isc_result_t ret; + isc_mem_t *mctx = key->mctx; + EVP_PKEY *pkey = NULL; + const unsigned char *p; + + UNUSED(pub); + + /* read private key file */ + ret = dst__privstruct_parse(key, DST_ALG_ECCGOST, lexer, mctx, &priv); + if (ret != ISC_R_SUCCESS) + return (ret); + + INSIST(priv.elements[0].tag == TAG_GOST_PRIVASN1); + p = priv.elements[0].data; + if (d2i_PrivateKey(NID_id_GostR3410_2001, &pkey, &p, + (long) priv.elements[0].length) == NULL) + DST_RET(DST_R_INVALIDPRIVATEKEY); + key->keydata.pkey = pkey; + key->key_size = EVP_PKEY_bits(pkey); + dst__privstruct_free(&priv, mctx); + memset(&priv, 0, sizeof(priv)); + return (ISC_R_SUCCESS); + + err: + if (pkey != NULL) + EVP_PKEY_free(pkey); + opensslgost_destroy(key); + dst__privstruct_free(&priv, mctx); + memset(&priv, 0, sizeof(priv)); + return (ret); +} + +static void +opensslgost_cleanup(void) { + if (e != NULL) { + ENGINE_finish(e); + ENGINE_free(e); + e = NULL; + } +} + +static dst_func_t opensslgost_functions = { + opensslgost_createctx, + opensslgost_destroyctx, + opensslgost_adddata, + opensslgost_sign, + opensslgost_verify, + NULL, /*%< computesecret */ + opensslgost_compare, + NULL, /*%< paramcompare */ + opensslgost_generate, + opensslgost_isprivate, + opensslgost_destroy, + opensslgost_todns, + opensslgost_fromdns, + opensslgost_tofile, + opensslgost_parse, + opensslgost_cleanup, + NULL, /*%< fromlabel */ +}; + +isc_result_t +dst__opensslgost_init(dst_func_t **funcp) { + REQUIRE(funcp != NULL); + + /* check if the gost engine works properly */ + e = ENGINE_by_id("gost"); + if (e == NULL) + return (DST_R_OPENSSLFAILURE); + if (ENGINE_init(e) <= 0) { + ENGINE_free(e); + e = NULL; + return (DST_R_OPENSSLFAILURE); + } + /* better than to rely on digest_gost symbol */ + opensslgost_digest = ENGINE_get_digest(e, NID_id_GostR3411_94); + /* from openssl.cnf */ + if ((opensslgost_digest == NULL) || + (ENGINE_register_pkey_asn1_meths(e) <= 0) || + (ENGINE_ctrl_cmd_string(e, + "CRYPT_PARAMS", + "id-Gost28147-89-CryptoPro-A-ParamSet", + 0) <= 0)) { + ENGINE_finish(e); + ENGINE_free(e); + e = NULL; + return (DST_R_OPENSSLFAILURE); + } + + if (*funcp == NULL) + *funcp = &opensslgost_functions; + return (ISC_R_SUCCESS); +} + +#else /* HAVE_OPENSSL_GOST */ + +#include <isc/util.h> + +EMPTY_TRANSLATION_UNIT + +#endif /* HAVE_OPENSSL_GOST */ +/*! \file */ diff --git a/lib/dns/opensslrsa_link.c b/lib/dns/opensslrsa_link.c index 08bf8b39..fcdc9f06 100644 --- a/lib/dns/opensslrsa_link.c +++ b/lib/dns/opensslrsa_link.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -17,7 +17,7 @@ /* * Principal Author: Brian Wellington - * $Id: opensslrsa_link.c,v 1.37 2009/10/30 05:08:23 marka Exp $ + * $Id: opensslrsa_link.c,v 1.39 2011-01-11 23:47:13 tbox Exp $ */ #ifdef OPENSSL #include <config.h> @@ -1386,6 +1386,8 @@ static dst_func_t opensslrsa_functions = { opensslrsa_parse, NULL, /*%< cleanup */ opensslrsa_fromlabel, + NULL, /*%< dump */ + NULL, /*%< restore */ }; isc_result_t diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 0b120d79..335667e7 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rbtdb.c,v 1.307 2010/12/02 04:58:13 marka Exp $ */ +/* $Id: rbtdb.c,v 1.310 2011-01-13 09:53:04 marka Exp $ */ /*! \file */ @@ -53,6 +53,7 @@ #include <dns/nsec.h> #include <dns/nsec3.h> #include <dns/rbt.h> +#include <dns/rpz.h> #include <dns/rdata.h> #include <dns/rdataset.h> #include <dns/rdatasetiter.h> @@ -437,6 +438,7 @@ typedef struct { dns_rbt_t * tree; dns_rbt_t * nsec; dns_rbt_t * nsec3; + dns_rpz_cidr_t * rpz_cidr; /* Unlocked */ unsigned int quantum; @@ -953,6 +955,11 @@ free_rbtdb(dns_rbtdb_t *rbtdb, isc_boolean_t log, isc_event_t *event) { if (rbtdb->rrsetstats != NULL) dns_stats_detach(&rbtdb->rrsetstats); +#ifdef BIND9 + if (rbtdb->rpz_cidr != NULL) + dns_rpz_cidr_free(&rbtdb->rpz_cidr); +#endif + isc_mem_put(rbtdb->common.mctx, rbtdb->node_locks, rbtdb->node_lock_count * sizeof(rbtdb_nodelock_t)); isc_rwlock_destroy(&rbtdb->tree_lock); @@ -1488,6 +1495,14 @@ delete_node(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node) switch (node->nsec) { case DNS_RBT_NSEC_NORMAL: +#ifdef BIND9 + if (rbtdb->rpz_cidr != NULL) { + dns_fixedname_init(&fname); + name = dns_fixedname_name(&fname); + dns_rbt_fullnamefromnode(node, name); + dns_rpz_cidr_deleteip(rbtdb->rpz_cidr, name); + } +#endif result = dns_rbt_deletenode(rbtdb->tree, node, ISC_FALSE); break; case DNS_RBT_NSEC_HAS_NSEC: @@ -1522,6 +1537,9 @@ delete_node(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node) } } result = dns_rbt_deletenode(rbtdb->tree, node, ISC_FALSE); +#ifdef BIND9 + dns_rpz_cidr_deleteip(rbtdb->rpz_cidr, name); +#endif break; case DNS_RBT_NSEC_NSEC: result = dns_rbt_deletenode(rbtdb->nsec, node, ISC_FALSE); @@ -2495,6 +2513,17 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create, node = NULL; result = dns_rbt_addnode(rbtdb->tree, name, &node); if (result == ISC_R_SUCCESS) { +#ifdef BIND9 + if (rbtdb->rpz_cidr != NULL) { + dns_fixedname_t fnamef; + dns_name_t *fname; + + dns_fixedname_init(&fnamef); + fname = dns_fixedname_name(&fnamef); + dns_rbt_fullnamefromnode(node, fname); + dns_rpz_cidr_addip(rbtdb->rpz_cidr, fname); + } +#endif dns_rbt_namefromnode(node, &nodename); #ifdef DNS_RBT_USEHASH node->locknum = node->hashval % rbtdb->node_lock_count; @@ -4510,6 +4539,200 @@ find_coveringnsec(rbtdb_search_t *search, dns_dbnode_t **nodep, return (result); } +/* + * Mark a database for response policy rewriting. + */ +#ifdef BIND9 +static void +get_rpz_enabled(dns_db_t *db, dns_rpz_st_t *st) +{ + dns_rbtdb_t *rbtdb; + + rbtdb = (dns_rbtdb_t *)db; + REQUIRE(VALID_RBTDB(rbtdb)); + RWLOCK(&rbtdb->tree_lock, isc_rwlocktype_read); + dns_rpz_enabled(rbtdb->rpz_cidr, st); + RWUNLOCK(&rbtdb->tree_lock, isc_rwlocktype_read); +} + +/* + * Search the CDIR block tree of a response policy tree of trees for all of + * the IP addresses in an A or AAAA rdataset. + * Among the policies for all IPv4 and IPv6 addresses for a name, choose + * the longest prefix. Among those with the longest prefix, the first + * configured policy. Among answers for with the longest prefixes for + * two or more IP addresses in the A and AAAA rdatasets the lexically + * smallest address. + */ +static isc_result_t +rpz_findips(dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type, + dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *version, + dns_rdataset_t *ardataset, dns_rpz_st_t *st) +{ + dns_rbtdb_t *rbtdb; + struct in_addr ina; + struct in6_addr in6a; + isc_netaddr_t netaddr; + dns_fixedname_t selfnamef, qnamef; + dns_name_t *selfname, *qname; + dns_rbtnode_t *node; + dns_rdataset_t zrdataset; + dns_rpz_cidr_bits_t prefix; + isc_result_t result; + dns_rpz_policy_t rpz_policy; + dns_ttl_t ttl; + + rbtdb = (dns_rbtdb_t *)db; + REQUIRE(VALID_RBTDB(rbtdb)); + RWLOCK(&rbtdb->tree_lock, isc_rwlocktype_read); + + if (rbtdb->rpz_cidr == NULL) { + RWUNLOCK(&rbtdb->tree_lock, isc_rwlocktype_read); + dns_db_detach(&db); + dns_zone_detach(&zone); + return (ISC_R_UNEXPECTED); + } + + dns_fixedname_init(&selfnamef); + dns_fixedname_init(&qnamef); + selfname = dns_fixedname_name(&selfnamef); + qname = dns_fixedname_name(&qnamef); + + for (result = dns_rdataset_first(ardataset); + result == ISC_R_SUCCESS; + result = dns_rdataset_next(ardataset)) { + dns_rdata_t rdata = DNS_RDATA_INIT; + dns_rdataset_current(ardataset, &rdata); + switch (rdata.type) { + case dns_rdatatype_a: + INSIST(rdata.length == 4); + memcpy(&ina.s_addr, rdata.data, 4); + isc_netaddr_fromin(&netaddr, &ina); + break; + case dns_rdatatype_aaaa: + INSIST(rdata.length == 16); + memcpy(in6a.s6_addr, rdata.data, 16); + isc_netaddr_fromin6(&netaddr, &in6a); + break; + default: + continue; + } + + result = dns_rpz_cidr_find(rbtdb->rpz_cidr, &netaddr, rpz_type, + selfname, qname, &prefix); + if (result != ISC_R_SUCCESS) + continue; + + /* + * Choose the policy with the longest matching prefix. + * Between policies with the same prefix, choose the first + * configured. + */ + if (st->m.policy != DNS_RPZ_POLICY_MISS) { + if (prefix < st->m.prefix) + continue; + if (prefix == st->m.prefix && + rpz->num > st->m.rpz->num) + continue; + } + + /* + * We have rpz_st an entry with a prefix at least as long as + * the prefix of the entry we had before. Find the node + * corresponding to CDIR tree entry. + */ + node = NULL; + result = dns_rbt_findnode(rbtdb->tree, qname, NULL, + &node, NULL, 0, NULL, NULL); + if (result != ISC_R_SUCCESS) { + char namebuf[DNS_NAME_FORMATSIZE]; + + dns_name_format(qname, namebuf, sizeof(namebuf)); + isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, + DNS_LOGMODULE_CACHE, DNS_RPZ_ERROR_LEVEL, + "rpz_findips findnode(%s): %s", + namebuf, isc_result_totext(result)); + continue; + } + /* + * First look for a simple rewrite of the IP address. + * If that fails, look for a CNAME. If we cannot find + * a CNAME or the CNAME is neither of the special forms + * "*" or ".", treat it like a real CNAME. + */ + dns_rdataset_init(&zrdataset); + result = dns_db_findrdataset(db, node, version, ardataset->type, + 0, 0, &zrdataset, NULL); + if (result != ISC_R_SUCCESS) + result = dns_db_findrdataset(db, node, version, + dns_rdatatype_cname, + 0, 0, &zrdataset, NULL); + if (result == ISC_R_SUCCESS) { + if (zrdataset.type != dns_rdatatype_cname) { + rpz_policy = DNS_RPZ_POLICY_RECORD; + } else { + rpz_policy = dns_rpz_decode_cname(&zrdataset, + selfname); + if (rpz_policy == DNS_RPZ_POLICY_RECORD) + result = DNS_R_CNAME; + } + ttl = zrdataset.ttl; + } else { + rpz_policy = DNS_RPZ_POLICY_RECORD; + result = DNS_R_NXRRSET; + ttl = DNS_RPZ_TTL_DEFAULT; + } + + /* + * Use an overriding action specified in the configuration file + */ + if (rpz->policy != DNS_RPZ_POLICY_GIVEN && + rpz_policy != DNS_RPZ_POLICY_NO_OP) + rpz_policy = rpz->policy; + + /* + * We know the new prefix is at least as long as the current. + * Prefer the new answer if the new prefix is longer. + * Prefer the zone configured first if the prefixes are equal. + * With two actions from the same zone, prefer the action + * on the "smallest" name. + */ + if (st->m.policy == DNS_RPZ_POLICY_MISS || + prefix > st->m.prefix || + rpz->num <= st->m.rpz->num || + 0 > dns_name_compare(qname, st->qname)) { + if (dns_rdataset_isassociated(st->m.rdataset)) + dns_rdataset_disassociate(st->m.rdataset); + if (st->m.node != NULL) + dns_db_detachnode(st->m.db, &st->m.node); + if (st->m.db != NULL) + dns_db_detach(&st->m.db); + if (st->m.zone != NULL) + dns_zone_detach(&st->m.zone); + st->m.rpz = rpz; + st->m.type = rpz_type; + st->m.prefix = prefix; + st->m.policy = rpz_policy; + st->m.ttl = ttl; + st->m.result = result; + dns_name_copy(qname, st->qname, NULL); + if (rpz_policy == DNS_RPZ_POLICY_RECORD && + result != DNS_R_NXRRSET) { + dns_rdataset_clone(&zrdataset,st->m.rdataset); + dns_db_attachnode(db, node, &st->m.node); + } + dns_db_attach(db, &st->m.db); + dns_zone_attach(zone, &st->m.zone); + } + if (dns_rdataset_isassociated(&zrdataset)) + dns_rdataset_disassociate(&zrdataset); + } + + RWUNLOCK(&rbtdb->tree_lock, isc_rwlocktype_read); + return (ISC_R_SUCCESS); +} +#endif + static isc_result_t cache_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version, dns_rdatatype_t type, unsigned int options, isc_stdtime_t now, @@ -6583,6 +6806,12 @@ loadnode(dns_rbtdb_t *rbtdb, dns_name_t *name, dns_rbtnode_t **nodep, dns_rbtnode_t *nsecnode; noderesult = dns_rbt_addnode(rbtdb->tree, name, nodep); + +#ifdef BIND9 + if (noderesult == ISC_R_SUCCESS) + dns_rpz_cidr_addip(rbtdb->rpz_cidr, name); +#endif + if (!hasnsec) return (noderesult); if (noderesult == ISC_R_EXISTS) { @@ -6694,7 +6923,7 @@ loading_addrdataset(void *arg, dns_name_t *name, dns_rdataset_t *rdataset) { } if (result != ISC_R_SUCCESS && result != ISC_R_EXISTS) return (result); - if (result != ISC_R_EXISTS) { + if (result == ISC_R_SUCCESS) { dns_name_t foundname; dns_name_init(&foundname, NULL); dns_rbt_namefromnode(node, &foundname); @@ -7156,7 +7385,14 @@ static dns_dbmethods_t zone_methods = { getsigningtime, resigned, isdnssec, + NULL, +#ifdef BIND9 + get_rpz_enabled, + rpz_findips +#else + NULL, NULL +#endif }; static dns_dbmethods_t cache_methods = { @@ -7195,7 +7431,9 @@ static dns_dbmethods_t cache_methods = { NULL, NULL, isdnssec, - getrrsetstats + getrrsetstats, + NULL, + NULL }; isc_result_t @@ -7377,6 +7615,24 @@ dns_rbtdb_create return (result); } +#ifdef BIND9 + /* + * Get ready for response policy IP address searching if at least one + * zone has been configured as a response policy zone and this + * is not a cache zone. + * It would be better to know that this database is for a policy + * zone named for a view, but that would require knowledge from + * above such as an argv[] set from data in the zone. + */ + if (type == dns_dbtype_zone && !dns_name_equal(origin, dns_rootname)) { + result = dns_rpz_new_cidr(mctx, origin, &rbtdb->rpz_cidr); + if (result != ISC_R_SUCCESS) { + free_rbtdb(rbtdb, ISC_FALSE, NULL); + return (result); + } + } +#endif + /* * In order to set the node callback bit correctly in zone databases, * we need to know if the node has the origin name of the zone. diff --git a/lib/dns/rcode.c b/lib/dns/rcode.c index 46b6c01c..18fedcde 100644 --- a/lib/dns/rcode.c +++ b/lib/dns/rcode.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rcode.c,v 1.15 2010/11/17 23:47:08 tbox Exp $ */ +/* $Id: rcode.c,v 1.16 2010-12-23 04:07:58 marka Exp $ */ #include <config.h> #include <ctype.h> @@ -107,6 +107,7 @@ { DNS_KEYALG_NSEC3RSASHA1, "NSEC3RSASHA1", 0 }, \ { DNS_KEYALG_RSASHA256, "RSASHA256", 0 }, \ { DNS_KEYALG_RSASHA512, "RSASHA512", 0 }, \ + { DNS_KEYALG_ECCGOST, "ECCGOST", 0 }, \ { DNS_KEYALG_INDIRECT, "INDIRECT", 0 }, \ { DNS_KEYALG_PRIVATEDNS, "PRIVATEDNS", 0 }, \ { DNS_KEYALG_PRIVATEOID, "PRIVATEOID", 0 }, \ diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c index be5fc64b..c282b033 100644 --- a/lib/dns/rdata.c +++ b/lib/dns/rdata.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rdata.c,v 1.207 2010/11/17 23:47:08 tbox Exp $ */ +/* $Id: rdata.c,v 1.209 2011-01-13 04:59:25 tbox Exp $ */ /*! \file */ @@ -1150,6 +1150,11 @@ name_prefix(dns_name_t *name, dns_name_t *origin, dns_name_t *target) { if (l1 == l2) goto return_false; + /* Master files should be case preserving. */ + dns_name_getlabelsequence(name, l1 - l2, l2, target); + if (!dns_name_caseequal(origin, target)) + goto return_false; + dns_name_getlabelsequence(name, 0, l1 - l2, target); return (ISC_TRUE); diff --git a/lib/dns/rdata/generic/dlv_32769.c b/lib/dns/rdata/generic/dlv_32769.c index d2229220..0f87433c 100644 --- a/lib/dns/rdata/generic/dlv_32769.c +++ b/lib/dns/rdata/generic/dlv_32769.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006, 2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dlv_32769.c,v 1.8 2009/12/04 22:06:37 tbox Exp $ */ +/* $Id: dlv_32769.c,v 1.10 2010-12-23 23:47:08 tbox Exp $ */ /* draft-ietf-dnsext-delegation-signer-05.txt */ @@ -74,12 +74,20 @@ fromtext_dlv(ARGS_FROMTEXT) { /* * Digest. */ - if (c == DNS_DSDIGEST_SHA1) + switch (c) { + case DNS_DSDIGEST_SHA1: length = ISC_SHA1_DIGESTLENGTH; - else if (c == DNS_DSDIGEST_SHA256) + break; + case DNS_DSDIGEST_SHA256: length = ISC_SHA256_DIGESTLENGTH; - else + break; + case DNS_DSDIGEST_GOST: + length = ISC_GOST_DIGESTLENGTH; + break; + default: length = -1; + break; + } return (isc_hex_tobuffer(lexer, target, -1)); } @@ -152,7 +160,9 @@ fromwire_dlv(ARGS_FROMWIRE) { (sr.base[3] == DNS_DSDIGEST_SHA1 && sr.length < 4 + ISC_SHA1_DIGESTLENGTH) || (sr.base[3] == DNS_DSDIGEST_SHA256 && - sr.length < 4 + ISC_SHA256_DIGESTLENGTH)) + sr.length < 4 + ISC_SHA256_DIGESTLENGTH) || + (sr.base[3] == DNS_DSDIGEST_GOST && + sr.length < 4 + ISC_GOST_DIGESTLENGTH)) return (ISC_R_UNEXPECTEDEND); /* @@ -164,6 +174,8 @@ fromwire_dlv(ARGS_FROMWIRE) { sr.length = 4 + ISC_SHA1_DIGESTLENGTH; else if (sr.base[3] == DNS_DSDIGEST_SHA256) sr.length = 4 + ISC_SHA256_DIGESTLENGTH; + else if (sr.base[3] == DNS_DSDIGEST_GOST) + sr.length = 4 + ISC_GOST_DIGESTLENGTH; isc_buffer_forward(source, sr.length); return (mem_tobuffer(target, sr.base, sr.length)); @@ -213,6 +225,9 @@ fromstruct_dlv(ARGS_FROMSTRUCT) { case DNS_DSDIGEST_SHA256: REQUIRE(dlv->length == ISC_SHA256_DIGESTLENGTH); break; + case DNS_DSDIGEST_GOST: + REQUIRE(dlv->length == ISC_GOST_DIGESTLENGTH); + break; } UNUSED(type); diff --git a/lib/dns/rdata/generic/ds_43.c b/lib/dns/rdata/generic/ds_43.c index c592093d..ee74ab67 100644 --- a/lib/dns/rdata/generic/ds_43.c +++ b/lib/dns/rdata/generic/ds_43.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2010 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: ds_43.c,v 1.14 2009/12/04 22:06:37 tbox Exp $ */ +/* $Id: ds_43.c,v 1.16 2010-12-23 23:47:08 tbox Exp $ */ /* draft-ietf-dnsext-delegation-signer-05.txt */ @@ -74,12 +74,20 @@ fromtext_ds(ARGS_FROMTEXT) { /* * Digest. */ - if (c == DNS_DSDIGEST_SHA1) + switch (c) { + case DNS_DSDIGEST_SHA1: length = ISC_SHA1_DIGESTLENGTH; - else if (c == DNS_DSDIGEST_SHA256) + break; + case DNS_DSDIGEST_SHA256: length = ISC_SHA256_DIGESTLENGTH; - else + break; + case DNS_DSDIGEST_GOST: + length = ISC_GOST_DIGESTLENGTH; + break; + default: length = -1; + break; + } return (isc_hex_tobuffer(lexer, target, length)); } @@ -152,7 +160,9 @@ fromwire_ds(ARGS_FROMWIRE) { (sr.base[3] == DNS_DSDIGEST_SHA1 && sr.length < 4 + ISC_SHA1_DIGESTLENGTH) || (sr.base[3] == DNS_DSDIGEST_SHA256 && - sr.length < 4 + ISC_SHA256_DIGESTLENGTH)) + sr.length < 4 + ISC_SHA256_DIGESTLENGTH) || + (sr.base[3] == DNS_DSDIGEST_GOST && + sr.length < 4 + ISC_GOST_DIGESTLENGTH)) return (ISC_R_UNEXPECTEDEND); /* @@ -164,6 +174,8 @@ fromwire_ds(ARGS_FROMWIRE) { sr.length = 4 + ISC_SHA1_DIGESTLENGTH; else if (sr.base[3] == DNS_DSDIGEST_SHA256) sr.length = 4 + ISC_SHA256_DIGESTLENGTH; + else if (sr.base[3] == DNS_DSDIGEST_GOST) + sr.length = 4 + ISC_GOST_DIGESTLENGTH; isc_buffer_forward(source, sr.length); return (mem_tobuffer(target, sr.base, sr.length)); @@ -213,6 +225,9 @@ fromstruct_ds(ARGS_FROMSTRUCT) { case DNS_DSDIGEST_SHA256: REQUIRE(ds->length == ISC_SHA256_DIGESTLENGTH); break; + case DNS_DSDIGEST_GOST: + REQUIRE(ds->length == ISC_GOST_DIGESTLENGTH); + break; } UNUSED(type); diff --git a/lib/dns/rdata/generic/hip_55.c b/lib/dns/rdata/generic/hip_55.c index cc7ded31..4cda9c64 100644 --- a/lib/dns/rdata/generic/hip_55.c +++ b/lib/dns/rdata/generic/hip_55.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: hip_55.c,v 1.6 2009/12/04 22:06:37 tbox Exp $ */ +/* $Id: hip_55.c,v 1.8 2011-01-13 04:59:26 tbox Exp $ */ /* reviewed: TBC */ @@ -122,8 +122,6 @@ static inline isc_result_t totext_hip(ARGS_TOTEXT) { isc_region_t region; dns_name_t name; - dns_name_t prefix; - isc_boolean_t sub; size_t length, key_len, hit_len; unsigned char algorithm; char buf[sizeof("225 ")]; @@ -175,12 +173,10 @@ totext_hip(ARGS_TOTEXT) { * Rendezvous Servers. */ dns_name_init(&name, NULL); - dns_name_init(&prefix, NULL); while (region.length > 0) { dns_name_fromregion(&name, ®ion); - sub = name_prefix(&name, tctx->origin, &prefix); - RETERR(dns_name_totext(&prefix, sub, target)); + RETERR(dns_name_totext(&name, ISC_FALSE, target)); isc_region_consume(®ion, name.length); if (region.length > 0) RETERR(str_totext(tctx->linebreak, target)); diff --git a/lib/dns/rdata/generic/ipseckey_45.c b/lib/dns/rdata/generic/ipseckey_45.c index 072f13d6..995a1353 100644 --- a/lib/dns/rdata/generic/ipseckey_45.c +++ b/lib/dns/rdata/generic/ipseckey_45.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2005, 2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: ipseckey_45.c,v 1.9 2009/12/04 22:06:37 tbox Exp $ */ +/* $Id: ipseckey_45.c,v 1.11 2011-01-13 04:59:26 tbox Exp $ */ #ifndef RDATA_GENERIC_IPSECKEY_45_C #define RDATA_GENERIC_IPSECKEY_45_C @@ -120,8 +120,6 @@ static inline isc_result_t totext_ipseckey(ARGS_TOTEXT) { isc_region_t region; dns_name_t name; - dns_name_t prefix; - isc_boolean_t sub; char buf[sizeof("255 ")]; unsigned short num; unsigned short gateway; @@ -130,7 +128,6 @@ totext_ipseckey(ARGS_TOTEXT) { REQUIRE(rdata->length >= 3); dns_name_init(&name, NULL); - dns_name_init(&prefix, NULL); if (rdata->data[1] > 3U) return (ISC_R_NOTIMPLEMENTED); @@ -183,8 +180,7 @@ totext_ipseckey(ARGS_TOTEXT) { case 3: dns_name_fromregion(&name, ®ion); - sub = name_prefix(&name, tctx->origin, &prefix); - RETERR(dns_name_totext(&prefix, sub, target)); + RETERR(dns_name_totext(&name, ISC_FALSE, target)); isc_region_consume(®ion, name_length(&name)); break; } diff --git a/lib/dns/rdata/generic/nsec_47.c b/lib/dns/rdata/generic/nsec_47.c index ee9fb37c..5807d5f6 100644 --- a/lib/dns/rdata/generic/nsec_47.c +++ b/lib/dns/rdata/generic/nsec_47.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007-2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: nsec_47.c,v 1.13 2009/12/04 22:06:37 tbox Exp $ */ +/* $Id: nsec_47.c,v 1.15 2011-01-13 04:59:26 tbox Exp $ */ /* reviewed: Wed Mar 15 18:21:15 PST 2000 by brister */ @@ -88,20 +88,18 @@ totext_nsec(ARGS_TOTEXT) { isc_region_t sr; unsigned int i, j, k; dns_name_t name; - dns_name_t prefix; - isc_boolean_t sub; unsigned int window, len; REQUIRE(rdata->type == 47); REQUIRE(rdata->length != 0); + UNUSED(tctx); + dns_name_init(&name, NULL); - dns_name_init(&prefix, NULL); dns_rdata_toregion(rdata, &sr); dns_name_fromregion(&name, &sr); isc_region_consume(&sr, name_length(&name)); - sub = name_prefix(&name, tctx->origin, &prefix); - RETERR(dns_name_totext(&prefix, sub, target)); + RETERR(dns_name_totext(&name, ISC_FALSE, target)); for (i = 0; i < sr.length; i += len) { diff --git a/lib/dns/rdata/generic/rrsig_46.c b/lib/dns/rdata/generic/rrsig_46.c index 078cd4cb..1fa7d07b 100644 --- a/lib/dns/rdata/generic/rrsig_46.c +++ b/lib/dns/rdata/generic/rrsig_46.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rrsig_46.c,v 1.12 2009/12/04 22:06:37 tbox Exp $ */ +/* $Id: rrsig_46.c,v 1.14 2011-01-13 04:59:26 tbox Exp $ */ /* Reviewed: Fri Mar 17 09:05:02 PST 2000 by gson */ @@ -134,8 +134,6 @@ totext_rrsig(ARGS_TOTEXT) { unsigned long exp; unsigned long foot; dns_name_t name; - dns_name_t prefix; - isc_boolean_t sub; REQUIRE(rdata->type == 46); REQUIRE(rdata->length != 0); @@ -217,11 +215,9 @@ totext_rrsig(ARGS_TOTEXT) { * Signer. */ dns_name_init(&name, NULL); - dns_name_init(&prefix, NULL); dns_name_fromregion(&name, &sr); isc_region_consume(&sr, name_length(&name)); - sub = name_prefix(&name, tctx->origin, &prefix); - RETERR(dns_name_totext(&prefix, sub, target)); + RETERR(dns_name_totext(&name, ISC_FALSE, target)); /* * Sig. diff --git a/lib/dns/result.c b/lib/dns/result.c index 02705dc9..4cc194dc 100644 --- a/lib/dns/result.c +++ b/lib/dns/result.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: result.c,v 1.130 2010/02/25 05:08:01 tbox Exp $ */ +/* $Id: result.c,v 1.132 2011-01-11 23:47:13 tbox Exp $ */ /*! \file */ @@ -160,6 +160,7 @@ static const char *text[DNS_R_NRESULTS] = { "not master", /*%< 105 DNS_R_NOTMASTER */ "broken trust chain", /*%< 106 DNS_R_BROKENCHAIN */ + "expired", /*%< 106 DNS_R_EXPIRED */ }; static const char *rcode_text[DNS_R_NRCODERESULTS] = { diff --git a/lib/dns/rpz.c b/lib/dns/rpz.c new file mode 100644 index 00000000..96d2e716 --- /dev/null +++ b/lib/dns/rpz.c @@ -0,0 +1,1168 @@ +/* + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: rpz.c,v 1.6 2011-01-13 06:48:14 marka Exp $ */ + +/*! \file */ + +#include <config.h> + +#include <isc/buffer.h> +#include <isc/mem.h> +#include <isc/net.h> +#include <isc/netaddr.h> +#include <isc/print.h> +#include <isc/stdlib.h> +#include <isc/string.h> +#include <isc/util.h> + +#include <dns/db.h> +#include <dns/fixedname.h> +#include <dns/log.h> +#include <dns/rdata.h> +#include <dns/rdataset.h> +#include <dns/rdatastruct.h> +#include <dns/result.h> +#include <dns/rpz.h> +#include <dns/view.h> + + +/* + * Parallel radix trees for databases of response policy IP addresses + * + * The radix or Patricia trees are somewhat specialized to handle response + * policy addresses by representing the two test of IP IP addresses and name + * server IP addresses in a single tree. + * + * Each leaf indicates that an IP address is listed in the IP address or the + * name server IP address policy sub-zone (or both) of the corresponding + * response response zone. The policy data such as a CNAME or an A record + * is kept in the policy zone. After an IP address has been found in a radix + * tree, the node in the policy zone's database is found by converting + * the IP address to a domain name in a canonical form. + * + * The response policy zone canonical form of IPv6 addresses is one of: + * prefix.W.W.W.W.W.W.W.W + * prefix.WORDS.zz + * prefix.WORDS.zz.WORDS + * prefix.zz.WORDS + * where + * prefix is the prefix length of the IPv6 address between 1 and 128 + * W is a number between 0 and 65535 + * WORDS is one or more numbers W separated with "." + * zz corresponds to :: in the standard IPv6 text representation + * + * The canonical form of IPv4 addresses is: + * prefix.B.B.B.B + * where + * prefix is the prefix length of the address between 1 and 32 + * B is a number between 0 and 255 + * + * IPv4 addresses are distinguished from IPv6 addresses by having + * 5 labels all of which are numbers, and a prefix between 1 and 32. + */ + + +/* + * Use a private definition of IPv6 addresses because s6_addr32 is not + * always defined and our IPv6 addresses are in non-standard byte order + */ +typedef isc_uint32_t dns_rpz_cidr_word_t; +#define DNS_RPZ_CIDR_WORD_BITS ((int)sizeof(dns_rpz_cidr_word_t)*8) +#define DNS_RPZ_CIDR_KEY_BITS ((int)sizeof(dns_rpz_cidr_key_t)*8) +#define DNS_RPZ_CIDR_WORDS (128/DNS_RPZ_CIDR_WORD_BITS) +typedef struct { + dns_rpz_cidr_word_t w[DNS_RPZ_CIDR_WORDS]; +} dns_rpz_cidr_key_t; + +#define ADDR_V4MAPPED 0xffff + +#define DNS_RPZ_WORD_MASK(b) \ + ((b) == 0 ? (dns_rpz_cidr_word_t)(-1) \ + : ((dns_rpz_cidr_word_t)(-1) \ + << (DNS_RPZ_CIDR_WORD_BITS - (b)))) + +#define DNS_RPZ_IP_BIT(ip, bitno) \ + (1 & ((ip)->w[(bitno)/DNS_RPZ_CIDR_WORD_BITS] >> \ + (DNS_RPZ_CIDR_WORD_BITS - 1 - ((bitno) % DNS_RPZ_CIDR_WORD_BITS)))) + +typedef struct dns_rpz_cidr_node dns_rpz_cidr_node_t; +typedef isc_uint8_t dns_rpz_cidr_flags_t; +struct dns_rpz_cidr_node { + dns_rpz_cidr_node_t *parent; + dns_rpz_cidr_node_t *child[2]; + dns_rpz_cidr_key_t ip; + dns_rpz_cidr_bits_t bits; + dns_rpz_cidr_flags_t flags; +#define DNS_RPZ_CIDR_FG_IP 0x01 /* has IP data or is parent of IP */ +#define DNS_RPZ_CIDR_FG_IP_DATA 0x02 /* has IP data */ +#define DNS_RPZ_CIDR_FG_NSIPv4 0x04 /* has or is parent of NSIPv4 data */ +#define DNS_RPZ_CIDR_FG_NSIPv6 0x08 /* has or is parent of NSIPv6 data */ +#define DNS_RPZ_CIDR_FG_NSIP_DATA 0x10 /* has NSIP data */ +}; + +struct dns_rpz_cidr { + isc_mem_t *mctx; + isc_boolean_t had_nsdname; + dns_rpz_cidr_node_t *root; + dns_name_t ip_name; /* RPZ_IP_ZONE.LOCALHOST. */ + dns_name_t nsip_name; /* RPZ_NSIP_ZONE.LOCALHOST. */ + dns_name_t nsdname_name; /* RPZ_NSDNAME_ZONE.LOCALHOST */ +}; + + +static isc_boolean_t have_rpz_zones = ISC_FALSE; + + +const char * +dns_rpz_type2str(dns_rpz_type_t type) +{ + switch (type) { + case DNS_RPZ_TYPE_QNAME: + return ("QNAME"); + case DNS_RPZ_TYPE_IP: + return ("IP"); + case DNS_RPZ_TYPE_NSIP: + return ("NSIP"); + case DNS_RPZ_TYPE_NSDNAME: + return ("NSDNAME"); + case DNS_RPZ_TYPE_BAD: + break; + } + FATAL_ERROR(__FILE__, __LINE__, + "impossible response policy zone type %d", type); + return ("impossible"); +} + + + +dns_rpz_policy_t +dns_rpz_str2policy(const char *str) +{ + if (str == NULL) + return (DNS_RPZ_POLICY_ERROR); + if (!strcasecmp(str, "given")) + return (DNS_RPZ_POLICY_GIVEN); + if (!strcasecmp(str, "no-op")) + return (DNS_RPZ_POLICY_NO_OP); + if (!strcasecmp(str, "nxdomain")) + return (DNS_RPZ_POLICY_NXDOMAIN); + if (!strcasecmp(str, "nodata")) + return (DNS_RPZ_POLICY_NODATA); + if (!strcasecmp(str, "cname")) + return (DNS_RPZ_POLICY_CNAME); + return (DNS_RPZ_POLICY_ERROR); +} + + + +/* + * Free the radix tree of a response policy database. + */ +void +dns_rpz_cidr_free(dns_rpz_cidr_t **cidrp) { + dns_rpz_cidr_node_t *cur, *child, *parent; + dns_rpz_cidr_t *cidr; + + REQUIRE(cidrp != NULL); + + cidr = *cidrp; + if (cidr == NULL) + return; + + cur = cidr->root; + while (cur != NULL) { + /* Depth first. */ + child = cur->child[0]; + if (child != NULL) { + cur = child; + continue; + } + child = cur->child[1]; + if (child != NULL) { + cur = child; + continue; + } + + /* Delete this leaf and go up. */ + parent = cur->parent; + if (parent == NULL) + cidr->root = NULL; + else + parent->child[parent->child[1] == cur] = NULL; + isc_mem_put(cidr->mctx, cur, sizeof(*cur)); + cur = parent; + } + + dns_name_free(&cidr->ip_name, cidr->mctx); + dns_name_free(&cidr->nsip_name, cidr->mctx); + dns_name_free(&cidr->nsdname_name, cidr->mctx); + isc_mem_put(cidr->mctx, cidr, sizeof(*cidr)); + *cidrp = NULL; +} + + + +/* + * Forget a view's list of policy zones. + */ +void +dns_rpz_view_destroy(dns_view_t *view) { + dns_rpz_zone_t *zone; + + REQUIRE(view != NULL); + + while (!ISC_LIST_EMPTY(view->rpz_zones)) { + zone = ISC_LIST_HEAD(view->rpz_zones); + ISC_LIST_UNLINK(view->rpz_zones, zone, link); + if (dns_name_dynamic(&zone->origin)) + dns_name_free(&zone->origin, view->mctx); + if (dns_name_dynamic(&zone->nsdname)) + dns_name_free(&zone->nsdname, view->mctx); + if (dns_name_dynamic(&zone->cname)) + dns_name_free(&zone->cname, view->mctx); + isc_mem_put(view->mctx, zone, sizeof(*zone)); + } +} + +/* + * Note that we have at least one response policy zone. + * It would be better for something to tell the rbtdb code that the + * zone is in at least one view's list of policy zones. + */ +void +dns_rpz_set_need(isc_boolean_t need) +{ + have_rpz_zones = need; +} + + +isc_boolean_t +dns_rpz_needed(void) +{ + return (have_rpz_zones); +} + + + +/* + * Start a new radix tree for a response policy zone. + */ +isc_result_t +dns_rpz_new_cidr(isc_mem_t *mctx, dns_name_t *origin, + dns_rpz_cidr_t **rbtdb_cidr) +{ + isc_result_t result; + dns_rpz_cidr_t *cidr; + + REQUIRE(rbtdb_cidr != NULL && *rbtdb_cidr == NULL); + + /* + * Only if there is at least one response policy zone. + */ + if (!have_rpz_zones) + return (ISC_R_SUCCESS); + + cidr = isc_mem_get(mctx, sizeof(*cidr)); + if (cidr == NULL) + return (ISC_R_NOMEMORY); + memset(cidr, 0, sizeof(*cidr)); + cidr->mctx = mctx; + + dns_name_init(&cidr->ip_name, NULL); + result = dns_name_fromstring2(&cidr->ip_name, DNS_RPZ_IP_ZONE, origin, + DNS_NAME_DOWNCASE, mctx); + if (result != ISC_R_SUCCESS) { + isc_mem_put(mctx, cidr, sizeof(*cidr)); + return (result); + } + + dns_name_init(&cidr->nsip_name, NULL); + result = dns_name_fromstring2(&cidr->nsip_name, DNS_RPZ_NSIP_ZONE, + origin, DNS_NAME_DOWNCASE, mctx); + if (result != ISC_R_SUCCESS) { + dns_name_free(&cidr->ip_name, mctx); + isc_mem_put(mctx, cidr, sizeof(*cidr)); + return (result); + } + + dns_name_init(&cidr->nsdname_name, NULL); + result = dns_name_fromstring2(&cidr->nsdname_name, DNS_RPZ_NSDNAME_ZONE, + origin, DNS_NAME_DOWNCASE, mctx); + if (result != ISC_R_SUCCESS) { + dns_name_free(&cidr->nsip_name, mctx); + dns_name_free(&cidr->ip_name, mctx); + isc_mem_put(mctx, cidr, sizeof(*cidr)); + return (result); + } + + *rbtdb_cidr = cidr; + return (ISC_R_SUCCESS); +} + + +/* + * See if a policy zone has IP, NSIP, or NSDNAME rules or records. + */ +void +dns_rpz_enabled(dns_rpz_cidr_t *cidr, dns_rpz_st_t *st) { + if (cidr->root != NULL && + (cidr->root->flags & DNS_RPZ_CIDR_FG_IP) != 0) + st->state |= DNS_RPZ_HAVE_IP; + if (cidr->root != NULL && + (cidr->root->flags & DNS_RPZ_CIDR_FG_NSIPv4) != 0) + st->state |= DNS_RPZ_HAVE_NSIPv4; + if (cidr->root != NULL && + (cidr->root->flags & DNS_RPZ_CIDR_FG_NSIPv6) != 0) + st->state |= DNS_RPZ_HAVE_NSIPv6; + if (cidr->had_nsdname) + st->state |= DNS_RPZ_HAD_NSDNAME; +} + +static inline dns_rpz_cidr_flags_t +get_flags(const dns_rpz_cidr_key_t *ip, dns_rpz_cidr_bits_t prefix, + dns_rpz_type_t rpz_type) +{ + if (rpz_type == DNS_RPZ_TYPE_NSIP) { + if (prefix >= 96 && + ip->w[0] == 0 && ip->w[1] == 0 && + ip->w[2] == ADDR_V4MAPPED) + return (DNS_RPZ_CIDR_FG_NSIP_DATA | + DNS_RPZ_CIDR_FG_NSIPv4); + else + return (DNS_RPZ_CIDR_FG_NSIP_DATA | + DNS_RPZ_CIDR_FG_NSIPv6); + } else { + return (DNS_RPZ_CIDR_FG_IP | DNS_RPZ_CIDR_FG_IP_DATA); + } +} + + + +/* + * Mark a node as having IP or NSIP data and all of its parents + * as members of the IP or NSIP tree. + */ +static void +set_node_flags(dns_rpz_cidr_node_t *node, dns_rpz_type_t rpz_type) { + dns_rpz_cidr_flags_t flags; + + flags = get_flags(&node->ip, node->bits, rpz_type); + node->flags |= flags; + flags &= ~(DNS_RPZ_CIDR_FG_NSIP_DATA | DNS_RPZ_CIDR_FG_IP_DATA); + for (;;) { + node = node->parent; + if (node == NULL) + return; + node->flags |= flags; + } +} + + + +/* + * Make a radix tree node. + */ +static dns_rpz_cidr_node_t * +new_node(dns_rpz_cidr_t *cidr, const dns_rpz_cidr_key_t *ip, + dns_rpz_cidr_bits_t bits, dns_rpz_cidr_flags_t flags) +{ + dns_rpz_cidr_node_t *node; + int i, words, wlen; + + node = isc_mem_get(cidr->mctx, sizeof(*node)); + if (node == NULL) + return (NULL); + memset(node, 0, sizeof(*node)); + + node->flags = flags & ~(DNS_RPZ_CIDR_FG_IP_DATA | + DNS_RPZ_CIDR_FG_NSIP_DATA); + + node->bits = bits; + words = bits / DNS_RPZ_CIDR_WORD_BITS; + wlen = bits % DNS_RPZ_CIDR_WORD_BITS; + i = 0; + while (i < words) { + node->ip.w[i] = ip->w[i]; + ++i; + } + if (wlen != 0) { + node->ip.w[i] = ip->w[i] & DNS_RPZ_WORD_MASK(wlen); + ++i; + } + while (i < DNS_RPZ_CIDR_WORDS) + node->ip.w[i++] = 0; + + return (node); +} + + + +static void +badname(int level, dns_name_t *name, const char *comment) +{ + char printname[DNS_NAME_FORMATSIZE]; + + if (isc_log_wouldlog(dns_lctx, level)) { + dns_name_format(name, printname, sizeof(printname)); + isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, + DNS_LOGMODULE_RBTDB, level, + "invalid response policy name \"%s\"%s", + printname, comment); + } +} + + + +/* + * Convert an IP address from radix tree binary (host byte order) to + * to its canonical response policy domain name and its name in the + * policy zone. + */ +static isc_result_t +ip2name(dns_rpz_cidr_t *cidr, const dns_rpz_cidr_key_t *tgt_ip, + dns_rpz_cidr_bits_t tgt_prefix, dns_rpz_type_t type, + dns_name_t *canon_name, dns_name_t *search_name) +{ +#ifndef INET6_ADDRSTRLEN +#define INET6_ADDRSTRLEN 46 +#endif + int w[DNS_RPZ_CIDR_WORDS*2]; + char str[1+8+1+INET6_ADDRSTRLEN+1]; + isc_buffer_t buffer; + dns_name_t *name; + isc_result_t result; + isc_boolean_t zeros; + int i, n, len; + + if (tgt_prefix > 96 && + tgt_ip->w[0] == 0 && + tgt_ip->w[1] == 0 && + tgt_ip->w[2] == ADDR_V4MAPPED) { + len = snprintf(str, sizeof(str), "%d.%d.%d.%d.%d", + tgt_prefix - 96, + tgt_ip->w[3] & 0xff, + (tgt_ip->w[3]>>8) & 0xff, + (tgt_ip->w[3]>>16) & 0xff, + (tgt_ip->w[3]>>24) & 0xff); + if (len == -1 || len > (int)sizeof(str)) + return (ISC_R_FAILURE); + } else { + for (i = 0; i < DNS_RPZ_CIDR_WORDS; i++) { + w[i*2+1] = ((tgt_ip->w[DNS_RPZ_CIDR_WORDS-1-i] >> 16) + & 0xffff); + w[i*2] = tgt_ip->w[DNS_RPZ_CIDR_WORDS-1-i] & 0xffff; + } + zeros = ISC_FALSE; + len = snprintf(str, sizeof(str), "%d", tgt_prefix); + if (len == -1) + return (ISC_R_FAILURE); + i = 0; + while (i < DNS_RPZ_CIDR_WORDS * 2) { + if (w[i] != 0 || zeros + || i >= DNS_RPZ_CIDR_WORDS * 2 - 1 + || w[i+1] != 0) { + INSIST((size_t)len <= sizeof(str)); + n = snprintf(&str[len], sizeof(str) - len, + ".%x", w[i++]); + if (n < 0) + return (ISC_R_FAILURE); + len += n; + } else { + zeros = ISC_TRUE; + INSIST((size_t)len <= sizeof(str)); + n = snprintf(&str[len], sizeof(str) - len, + ".zz"); + if (n < 0) + return (ISC_R_FAILURE); + len += n; + i += 2; + while (i < DNS_RPZ_CIDR_WORDS * 2 && w[i] == 0) + ++i; + } + if (len > (int)sizeof(str)) + return (ISC_R_FAILURE); + } + } + + if (canon_name != NULL) { + isc__buffer_init(&buffer, str, sizeof(str)); + isc__buffer_add(&buffer, len); + result = dns_name_fromtext(canon_name, &buffer, + dns_rootname, 0, NULL); + if (result != ISC_R_SUCCESS) + return (result); + } + if (search_name != NULL) { + isc__buffer_init(&buffer, str, sizeof(str)); + isc__buffer_add(&buffer, len); + if (type == DNS_RPZ_TYPE_NSIP) + name = &cidr->nsip_name; + else + name = &cidr->ip_name; + result = dns_name_fromtext(search_name, &buffer, name, 0, NULL); + if (result != ISC_R_SUCCESS) + return (result); + } + return (ISC_R_SUCCESS); +} + + + +/* + * Decide which kind of IP address response policy zone a name is in. + */ +static dns_rpz_type_t +set_type(dns_rpz_cidr_t *cidr, dns_name_t *name) { + + if (dns_name_issubdomain(name, &cidr->ip_name)) + return (DNS_RPZ_TYPE_IP); + + /* + * Require `./configure --enable-rpz-nsip` and nsdname + * until consistency problems are resolved. + */ +#ifdef ENABLE_RPZ_NSIP + if (dns_name_issubdomain(name, &cidr->nsip_name)) + return (DNS_RPZ_TYPE_NSIP); +#endif + +#ifdef ENABLE_RPZ_NSDNAME + if (dns_name_issubdomain(name, &cidr->nsdname_name)) + return (DNS_RPZ_TYPE_NSDNAME); +#endif + + return (DNS_RPZ_TYPE_QNAME); +} + + + +/* + * Convert an IP address from canonical response policy domain name form + * to radix tree binary (host byte order). + */ +static isc_result_t +name2ipkey(dns_rpz_cidr_t *cidr, int level, dns_name_t *src_name, + dns_rpz_type_t type, dns_rpz_cidr_key_t *tgt_ip, + dns_rpz_cidr_bits_t *tgt_prefix) +{ + isc_buffer_t buffer; + unsigned char data[DNS_NAME_MAXWIRE+1]; + dns_fixedname_t fname; + dns_name_t *name; + const char *cp, *end; + char *cp2; + int ip_labels; + dns_rpz_cidr_bits_t bits; + unsigned long prefix, l; + int i; + + /* + * Need at least enough labels for the shortest name, + * :: or 128.*.RPZ_x_ZONE.rpz.LOCALHOST. + */ + ip_labels = dns_name_countlabels(src_name); + ip_labels -= dns_name_countlabels(&cidr->ip_name); + ip_labels--; + if (ip_labels < 1) { + badname(level, src_name, ", too short"); + return (ISC_R_FAILURE); + } + + /* + * Get text for the IP address without RPZ_x_ZONE.rpz.LOCALHOST. + */ + dns_fixedname_init(&fname); + name = dns_fixedname_name(&fname); + dns_name_split(src_name, dns_name_countlabels(&cidr->ip_name), + name, NULL); + isc_buffer_init(&buffer, data, sizeof(data)); + dns_name_totext(name, ISC_TRUE, &buffer); + isc_buffer_putuint8(&buffer, '\0'); + cp = isc_buffer_base(&buffer); + + prefix = strtoul(cp, &cp2, 10); + if (prefix < 1U || prefix > 128U || *cp2 != '.') { + badname(level, src_name, ", bad prefix length"); + return (ISC_R_FAILURE); + } + cp = cp2+1; + + end = isc_buffer_used(&buffer); + if (ip_labels == 4 && !strchr(cp, 'z')) { + /* + * Convert an IPv4 address + * from the form "prefix.w.z.y.x" + */ + if (prefix > 32U) { + badname(level, src_name, "; bad IPv4 prefix length"); + return (ISC_R_FAILURE); + } + prefix += 96; + *tgt_prefix = (dns_rpz_cidr_bits_t)prefix; + tgt_ip->w[0] = 0; + tgt_ip->w[1] = 0; + tgt_ip->w[2] = ADDR_V4MAPPED; + tgt_ip->w[3] = 0; + for (i = 0; i < 32; i += 8) { + l = strtoul(cp, &cp2, 10); + if (l > 255U || (*cp2 != '.' && *cp2 != '\0')) { + badname(level, src_name, "; bad IPv4 address"); + return (ISC_R_FAILURE); + } + tgt_ip->w[3] |= l << i; + cp = cp2 + 1; + } + } else { + /* + * Convert a text IPv6 address. + */ + *tgt_prefix = (dns_rpz_cidr_bits_t)prefix; + for (i = 0; + ip_labels > 0 && i < DNS_RPZ_CIDR_WORDS * 2; + ip_labels--) { + if (cp[0] == 'z' && cp[1] == 'z' && + (cp[2] == '.' || cp[2] == '\0') && + i <= 6) { + do { + if ((i & 1) == 0) + tgt_ip->w[3-i/2] = 0; + ++i; + } while (ip_labels + i <= 8); + cp += 3; + } else { + l = strtoul(cp, &cp2, 16); + if (l > 0xffffu || + (*cp2 != '.' && *cp2 != '\0')) { + badname(level, src_name, ""); + return (ISC_R_FAILURE); + } + if ((i & 1) == 0) + tgt_ip->w[3-i/2] = l; + else + tgt_ip->w[3-i/2] |= l << 16; + i++; + cp = cp2 + 1; + } + } + } + if (cp != end) { + badname(level, src_name, ""); + return (ISC_R_FAILURE); + } + + /* + * Check for 1s after the prefix length. + */ + bits = (dns_rpz_cidr_bits_t)prefix; + while (bits < DNS_RPZ_CIDR_KEY_BITS) { + dns_rpz_cidr_word_t aword; + + i = bits % DNS_RPZ_CIDR_WORD_BITS; + aword = tgt_ip->w[bits / DNS_RPZ_CIDR_WORD_BITS]; + if ((aword & ~DNS_RPZ_WORD_MASK(i)) != 0) { + badname(level, src_name, "; wrong prefix length"); + return (ISC_R_FAILURE); + } + bits -= i; + bits += DNS_RPZ_CIDR_WORD_BITS; + } + + /* + * Convert the IPv6 address back to a canonical policy domain name + * to ensure that it is in canonical form. + */ + if (ISC_R_SUCCESS != ip2name(cidr, tgt_ip, (dns_rpz_cidr_bits_t)prefix, + type, NULL, name) || + !dns_name_equal(src_name, name)) { + badname(level, src_name, "; not canonical"); + return (ISC_R_FAILURE); + } + + return (ISC_R_SUCCESS); +} + + + +/* + * find first differing bit + */ +static int +ffbit(dns_rpz_cidr_word_t w) { + int bit; + + if (w == 0) + return (DNS_RPZ_CIDR_WORD_BITS); + for (bit = 0; (w & (1 << (DNS_RPZ_CIDR_WORD_BITS-1))) == 0; bit++) + w <<= 1; + return (bit); +} + + + +/* + * find the first differing bit in two keys + */ +static int +diff_keys(const dns_rpz_cidr_key_t *key1, dns_rpz_cidr_bits_t bits1, + const dns_rpz_cidr_key_t *key2, dns_rpz_cidr_bits_t bits2) +{ + dns_rpz_cidr_word_t delta; + dns_rpz_cidr_bits_t maxbit, bit; + int i; + + maxbit = ISC_MIN(bits1, bits2); + + /* + * find the first differing words + */ + for (i = 0, bit = 0; + bit <= maxbit; + i++, bit += DNS_RPZ_CIDR_WORD_BITS) { + delta = key1->w[i] ^ key2->w[i]; + if (delta != 0) { + bit += ffbit(delta); + break; + } + } + return (ISC_MIN(bit, maxbit)); +} + + + +/* + * Search a radix tree for an IP address for ordinary lookup + * or for a CIDR block adding or deleting an entry + * The tree read (for simple search) or write lock must be held by the caller. + * + * return ISC_R_SUCCESS, ISC_R_NOTFOUND, DNS_R_PARTIALMATCH, ISC_R_EXISTS, + * ISC_R_NOMEMORY + */ +static isc_result_t +search(dns_rpz_cidr_t *cidr, const dns_rpz_cidr_key_t *tgt_ip, + dns_rpz_cidr_bits_t tgt_prefix, dns_rpz_type_t type, + isc_boolean_t create, + dns_rpz_cidr_node_t **found) /* NULL or longest match node */ +{ + dns_rpz_cidr_node_t *cur, *parent, *child, *new_parent, *sibling; + int cur_num, child_num; + dns_rpz_cidr_bits_t dbit; + dns_rpz_cidr_flags_t flags, data_flag; + isc_result_t find_result; + + flags = get_flags(tgt_ip, tgt_prefix, type); + data_flag = flags & (DNS_RPZ_CIDR_FG_IP_DATA | + DNS_RPZ_CIDR_FG_NSIP_DATA); + + find_result = ISC_R_NOTFOUND; + if (found != NULL) + *found = NULL; + cur = cidr->root; + parent = NULL; + cur_num = 0; + for (;;) { + if (cur == NULL) { + /* + * No child so we cannot go down. Fail or + * add the target as a child of the current parent. + */ + if (!create) + return (find_result); + child = new_node(cidr, tgt_ip, tgt_prefix, 0); + if (child == NULL) + return (ISC_R_NOMEMORY); + if (parent == NULL) + cidr->root = child; + else + parent->child[cur_num] = child; + child->parent = parent; + set_node_flags(child, type); + if (found != NULL) + *found = cur; + return (ISC_R_SUCCESS); + } + + /* + * Pretend a node not in the correct tree does not exist + * if we are not adding to the tree, + * If we are adding, then continue down to eventually + * add a node and mark/put this node in the correct tree. + */ + if ((cur->flags & flags) == 0 && !create) + return (find_result); + + dbit = diff_keys(tgt_ip, tgt_prefix, &cur->ip, cur->bits); + /* + * dbit <= tgt_prefix and dbit <= cur->bits always. + * We are finished searching if we matched all of the target. + */ + if (dbit == tgt_prefix) { + if (tgt_prefix == cur->bits) { + /* + * The current node matches the target exactly. + * It is the answer if it has data. + */ + if ((cur->flags & data_flag) != 0) { + if (create) + return (ISC_R_EXISTS); + if (found != NULL) + *found = cur; + return (ISC_R_SUCCESS); + } else if (create) { + /* + * The node had no data but does now. + */ + set_node_flags(cur, type); + if (found != NULL) + *found = cur; + return (ISC_R_SUCCESS); + } + return (find_result); + } + + /* + * We know tgt_prefix < cur_bits which means that + * the target is shorter than the current node. + * Add the target as the current node's parent. + */ + if (!create) + return (find_result); + + new_parent = new_node(cidr, tgt_ip, tgt_prefix, + cur->flags); + if (new_parent == NULL) + return (ISC_R_NOMEMORY); + new_parent->parent = parent; + if (parent == NULL) + cidr->root = new_parent; + else + parent->child[cur_num] = new_parent; + child_num = DNS_RPZ_IP_BIT(&cur->ip, tgt_prefix+1); + new_parent->child[child_num] = cur; + cur->parent = new_parent; + set_node_flags(new_parent, type); + if (found != NULL) + *found = new_parent; + return (ISC_R_SUCCESS); + } + + if (dbit == cur->bits) { + /* + * We have a partial match by matching of all of the + * current node but only part of the target. + * Try to go down. + */ + if ((cur->flags & data_flag) != 0) { + find_result = DNS_R_PARTIALMATCH; + if (found != NULL) + *found = cur; + } + + parent = cur; + cur_num = DNS_RPZ_IP_BIT(tgt_ip, dbit); + cur = cur->child[cur_num]; + continue; + } + + + /* + * dbit < tgt_prefix and dbit < cur->bits, + * so we failed to match both the target and the current node. + * Insert a fork of a parent above the current node and + * add the target as a sibling of the current node + */ + if (!create) + return (find_result); + + sibling = new_node(cidr, tgt_ip, tgt_prefix, 0); + if (sibling == NULL) + return (ISC_R_NOMEMORY); + new_parent = new_node(cidr, tgt_ip, dbit, cur->flags); + if (new_parent == NULL) { + isc_mem_put(cidr->mctx, sibling, sizeof(*sibling)); + return (ISC_R_NOMEMORY); + } + new_parent->parent = parent; + if (parent == NULL) + cidr->root = new_parent; + else + parent->child[cur_num] = new_parent; + child_num = DNS_RPZ_IP_BIT(tgt_ip, dbit); + new_parent->child[child_num] = sibling; + new_parent->child[1-child_num] = cur; + cur->parent = new_parent; + sibling->parent = new_parent; + set_node_flags(sibling, type); + if (found != NULL) + *found = sibling; + return (ISC_R_SUCCESS); + } +} + + + +/* + * Add an IP address to the radix tree of a response policy database. + * The tree write lock must be held by the caller. + */ +void +dns_rpz_cidr_addip(dns_rpz_cidr_t *cidr, dns_name_t *name) +{ + dns_rpz_cidr_key_t tgt_ip; + dns_rpz_cidr_bits_t tgt_prefix; + dns_rpz_type_t type; + + if (cidr == NULL) + return; + + /* + * no worries if the new name is not an IP address + */ + type = set_type(cidr, name); + switch (type) { + case DNS_RPZ_TYPE_IP: + case DNS_RPZ_TYPE_NSIP: + break; + case DNS_RPZ_TYPE_NSDNAME: + cidr->had_nsdname = ISC_TRUE; + return; + case DNS_RPZ_TYPE_QNAME: + case DNS_RPZ_TYPE_BAD: + return; + } + if (ISC_R_SUCCESS != name2ipkey(cidr, DNS_RPZ_ERROR_LEVEL, name, + type, &tgt_ip, &tgt_prefix)) + return; + + if (ISC_R_EXISTS == search(cidr, &tgt_ip, tgt_prefix, type, + ISC_TRUE, NULL) && + isc_log_wouldlog(dns_lctx, DNS_RPZ_ERROR_LEVEL)) { + char printname[DNS_NAME_FORMATSIZE]; + + dns_name_format(name, printname, sizeof(printname)); + isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, + DNS_LOGMODULE_RBTDB, DNS_RPZ_ERROR_LEVEL, + "duplicate response policy name \"%s\"", + printname); + } +} + + + +/* + * Delete an IP address from the radix tree of a response policy database. + * The tree write lock must be held by the caller. + */ +void +dns_rpz_cidr_deleteip(dns_rpz_cidr_t *cidr, dns_name_t *name) { + dns_rpz_cidr_key_t tgt_ip; + dns_rpz_cidr_bits_t tgt_prefix; + dns_rpz_type_t type; + dns_rpz_cidr_node_t *tgt = NULL, *parent, *child; + dns_rpz_cidr_flags_t flags, data_flag; + + if (cidr == NULL) + return; + + /* + * Decide which kind of policy zone IP address it is, if either + * and then find its node. + */ + type = set_type(cidr, name); + switch (type) { + case DNS_RPZ_TYPE_IP: + case DNS_RPZ_TYPE_NSIP: + break; + case DNS_RPZ_TYPE_NSDNAME: + /* + * We cannot easily count nsdnames because + * internal rbt nodes get deleted. + */ + return; + case DNS_RPZ_TYPE_QNAME: + case DNS_RPZ_TYPE_BAD: + return; + } + + /* + * Do not get excited about the deletion of interior rbt nodes. + */ + if (ISC_R_SUCCESS != name2ipkey(cidr, DNS_RPZ_DEBUG_LEVEL2, name, + type, &tgt_ip, &tgt_prefix)) + return; + if (ISC_R_SUCCESS != search(cidr, &tgt_ip, tgt_prefix, type, + ISC_FALSE, &tgt)) { + if (isc_log_wouldlog(dns_lctx, DNS_RPZ_ERROR_LEVEL)) { + char printname[DNS_NAME_FORMATSIZE]; + + dns_name_format(name, printname, sizeof(printname)); + isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, + DNS_LOGMODULE_RBTDB, DNS_RPZ_ERROR_LEVEL, + "missing response policy node \"%s\"", + printname); + } + return; + } + + /* + * Mark the node and its parents to reflect the deleted IP address. + */ + flags = get_flags(&tgt_ip, tgt_prefix, type); + data_flag = flags & (DNS_RPZ_CIDR_FG_IP_DATA | + DNS_RPZ_CIDR_FG_NSIP_DATA); + tgt->flags &= ~data_flag; + for (parent = tgt; parent != NULL; parent = parent->parent) { + if ((parent->flags & data_flag) != 0 || + (parent->child[0] != NULL && + (parent->child[0]->flags & flags) != 0) || + (parent->child[1] != NULL && + (parent->child[1]->flags & flags) != 0)) + break; + parent->flags &= ~flags; + } + + /* + * We might need to delete 2 nodes. + */ + do { + /* + * The node is now useless if it has no data of its own + * and 0 or 1 children. We are finished if it is not useless. + */ + if ((child = tgt->child[0]) != NULL) { + if (tgt->child[1] != NULL) + return; + } else { + child = tgt->child[1]; + } + if ((tgt->flags & (DNS_RPZ_CIDR_FG_IP_DATA | + DNS_RPZ_CIDR_FG_NSIP_DATA)) != 0) + return; + + /* + * Replace the pointer to this node in the parent with + * the remaining child or NULL. + */ + parent = tgt->parent; + if (parent == NULL) { + cidr->root = child; + } else { + parent->child[parent->child[1] == tgt] = child; + } + /* + * If the child exists fix up its parent pointer. + */ + if (child != NULL) + child->parent = parent; + isc_mem_put(cidr->mctx, tgt, sizeof(*tgt)); + + tgt = parent; + } while (tgt != NULL); +} + + + +/* + * Caller must hold tree lock. + * Return ISC_R_NOTFOUND + * or ISC_R_SUCCESS and the found entry's canonical and search names + * and its prefix length + */ +isc_result_t +dns_rpz_cidr_find(dns_rpz_cidr_t *cidr, const isc_netaddr_t *netaddr, + dns_rpz_type_t type, dns_name_t *canon_name, + dns_name_t *search_name, dns_rpz_cidr_bits_t *prefix) +{ + dns_rpz_cidr_key_t tgt_ip; + isc_result_t result; + dns_rpz_cidr_node_t *found; + int i; + + /* + * Convert IP address to CIDR tree key. + */ + if (netaddr->family == AF_INET) { + tgt_ip.w[0] = 0; + tgt_ip.w[1] = 0; + tgt_ip.w[2] = ADDR_V4MAPPED; + tgt_ip.w[3] = ntohl(netaddr->type.in.s_addr); + } else if (netaddr->family == AF_INET6) { + dns_rpz_cidr_key_t src_ip6; + + /* + * Given the int aligned struct in_addr member of netaddr->type + * one could cast netaddr->type.in6 to dns_rpz_cidr_key_t *, + * but there are objections. + */ + memcpy(src_ip6.w, &netaddr->type.in6, sizeof(src_ip6.w)); + for (i = 0; i < 4; i++) { + tgt_ip.w[i] = ntohl(src_ip6.w[i]); + } + } else { + return (ISC_R_NOTFOUND); + } + + result = search(cidr, &tgt_ip, 128, type, ISC_FALSE, &found); + if (result != ISC_R_SUCCESS && result != DNS_R_PARTIALMATCH) + return (result); + + *prefix = found->bits; + return (ip2name(cidr, &found->ip, found->bits, type, + canon_name, search_name)); +} + + + +/* + * Translate CNAME rdata to a QNAME response policy action. + */ +dns_rpz_policy_t +dns_rpz_decode_cname(dns_rdataset_t *rdataset, dns_name_t *selfname) { + dns_rdata_t rdata = DNS_RDATA_INIT; + dns_rdata_cname_t cname; + isc_result_t result; + + result = dns_rdataset_first(rdataset); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + dns_rdataset_current(rdataset, &rdata); + result = dns_rdata_tostruct(&rdata, &cname, NULL); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + dns_rdata_reset(&rdata); + + /* + * CNAME . means NXDOMAIN + */ + if (dns_name_equal(&cname.cname, dns_rootname)) + return (DNS_RPZ_POLICY_NXDOMAIN); + + /* + * CNAME *. means NODATA + */ + if (dns_name_countlabels(&cname.cname) == 2 + && dns_name_iswildcard(&cname.cname)) + return (DNS_RPZ_POLICY_NODATA); + + /* + * 128.1.0.127.rpz-ip CNAME 128.1.0.0.127. means "do not rewrite" + */ + if (selfname != NULL && dns_name_equal(&cname.cname, selfname)) + return (DNS_RPZ_POLICY_NO_OP); + + /* + * evil.com CNAME garden.net rewrites www.evil.com to www.garden.net. + */ + return (DNS_RPZ_POLICY_RECORD); +} diff --git a/lib/dns/sdb.c b/lib/dns/sdb.c index 7d8dd745..d27007d3 100644 --- a/lib/dns/sdb.c +++ b/lib/dns/sdb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: sdb.c,v 1.74 2010/08/16 04:46:16 marka Exp $ */ +/* $Id: sdb.c,v 1.76 2011-01-13 04:59:25 tbox Exp $ */ /*! \file */ @@ -1254,6 +1254,8 @@ static dns_dbmethods_t sdb_methods = { NULL, NULL, NULL, + NULL, + NULL }; static isc_result_t diff --git a/lib/dns/sdlz.c b/lib/dns/sdlz.c index 9c553c80..e684e1da 100644 --- a/lib/dns/sdlz.c +++ b/lib/dns/sdlz.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2005-2010 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2005-2011 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: sdlz.c,v 1.25 2010/08/16 04:46:16 marka Exp $ */ +/* $Id: sdlz.c,v 1.31 2011-01-13 06:29:16 marka Exp $ */ /*! \file */ @@ -108,6 +108,8 @@ struct dns_sdlz_db { isc_mutex_t refcnt_lock; /* Locked */ unsigned int references; + dns_dbversion_t *future_version; + int dummy_version; }; struct dns_sdlzlookup { @@ -164,8 +166,6 @@ typedef struct sdlz_rdatasetiter { /* This is a reasonable value */ #define SDLZ_DEFAULT_TTL (60 * 60 * 24) -static int dummy; - #ifdef __COVERITY__ #define MAYBE_LOCK(imp) LOCK(&imp->driverlock) #define MAYBE_UNLOCK(imp) UNLOCK(&imp->driverlock) @@ -225,11 +225,22 @@ static dns_dbiteratormethods_t dbiterator_methods = { * Utility functions */ -/*% Converts the input string to lowercase, in place. */ +/* + * Log a message at the given level + */ +static void +sdlz_log(int level, const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + isc_log_vwrite(dns_lctx, DNS_LOGCATEGORY_DATABASE, + DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(level), + fmt, ap); + va_end(ap); +} +/*% Converts the input string to lowercase, in place. */ static void dns_sdlz_tolower(char *str) { - unsigned int len = strlen(str); unsigned int i; @@ -237,7 +248,6 @@ dns_sdlz_tolower(char *str) { if (str[i] >= 'A' && str[i] <= 'Z') str[i] += 32; } - } static inline unsigned int @@ -381,43 +391,79 @@ dump(dns_db_t *db, dns_dbversion_t *version, const char *filename, static void currentversion(dns_db_t *db, dns_dbversion_t **versionp) { + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db; + REQUIRE(VALID_SDLZDB(sdlz)); REQUIRE(versionp != NULL && *versionp == NULL); - UNUSED(db); - - *versionp = (void *) &dummy; + *versionp = (void *) &sdlz->dummy_version; return; } static isc_result_t newversion(dns_db_t *db, dns_dbversion_t **versionp) { - UNUSED(db); - UNUSED(versionp); + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db; + char origin[DNS_NAME_MAXTEXT + 1]; + isc_result_t result; - return (ISC_R_NOTIMPLEMENTED); + REQUIRE(VALID_SDLZDB(sdlz)); + + if (sdlz->dlzimp->methods->newversion == NULL) + return (ISC_R_NOTIMPLEMENTED); + + dns_name_format(&sdlz->common.origin, origin, sizeof(origin)); + + result = sdlz->dlzimp->methods->newversion(origin, + sdlz->dlzimp->driverarg, + sdlz->dbdata, versionp); + if (result != ISC_R_SUCCESS) { + sdlz_log(ISC_LOG_ERROR, + "sdlz newversion on origin %s failed : %s", + origin, isc_result_totext(result)); + return (result); + } + + sdlz->future_version = *versionp; + return (ISC_R_SUCCESS); } static void attachversion(dns_db_t *db, dns_dbversion_t *source, dns_dbversion_t **targetp) { - REQUIRE(source != NULL && source == (void *) &dummy); + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db; + + REQUIRE(VALID_SDLZDB(sdlz)); + REQUIRE(source != NULL && source == (void *)&sdlz->dummy_version); - UNUSED(db); - UNUSED(source); - UNUSED(targetp); *targetp = source; } static void closeversion(dns_db_t *db, dns_dbversion_t **versionp, isc_boolean_t commit) { - REQUIRE(versionp != NULL && *versionp == (void *) &dummy); - REQUIRE(commit == ISC_FALSE); + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db; + char origin[DNS_NAME_MAXTEXT + 1]; - UNUSED(db); - UNUSED(commit); + REQUIRE(VALID_SDLZDB(sdlz)); + REQUIRE(versionp != NULL); + + if (*versionp == (void *)&sdlz->dummy_version) { + *versionp = NULL; + return; + } + + REQUIRE(*versionp == sdlz->future_version); + REQUIRE(sdlz->dlzimp->methods->closeversion != NULL); + + dns_name_format(&sdlz->common.origin, origin, sizeof(origin)); - *versionp = NULL; + sdlz->dlzimp->methods->closeversion(origin, commit, + sdlz->dlzimp->driverarg, + sdlz->dbdata, versionp); + if (*versionp != NULL) + sdlz_log(ISC_LOG_ERROR, + "sdlz closeversion on origin %s failed", origin); + + sdlz->future_version = NULL; } static isc_result_t @@ -506,11 +552,11 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create, dns_sdlzauthorityfunc_t authority; REQUIRE(VALID_SDLZDB(sdlz)); - REQUIRE(create == ISC_FALSE); REQUIRE(nodep != NULL && *nodep == NULL); - UNUSED(name); - UNUSED(create); + if (sdlz->dlzimp->methods->newversion == NULL) { + REQUIRE(create == ISC_FALSE); + } isc_buffer_init(&b, namestr, sizeof(namestr)); if ((sdlz->dlzimp->flags & DNS_SDLZFLAG_RELATIVEOWNER) != 0) { @@ -558,7 +604,7 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create, * if the host (namestr) was not found, try to lookup a * "wildcard" host. */ - if (result != ISC_R_SUCCESS) { + if (result != ISC_R_SUCCESS && !create) { result = sdlz->dlzimp->methods->lookup(zonestr, "*", sdlz->dlzimp->driverarg, sdlz->dbdata, node); @@ -566,7 +612,7 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create, MAYBE_UNLOCK(sdlz->dlzimp); - if (result != ISC_R_SUCCESS && !isorigin) { + if (result != ISC_R_SUCCESS && !isorigin && !create) { destroynode(node); return (result); } @@ -584,6 +630,23 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create, } } + if (node->name == NULL) { + node->name = isc_mem_get(sdlz->common.mctx, + sizeof(dns_name_t)); + if (node->name == NULL) { + destroynode(node); + return (ISC_R_NOMEMORY); + } + dns_name_init(node->name, NULL); + result = dns_name_dup(name, sdlz->common.mctx, node->name); + if (result != ISC_R_SUCCESS) { + isc_mem_put(sdlz->common.mctx, node->name, + sizeof(dns_name_t)); + destroynode(node); + return (result); + } + } + *nodep = node; return (ISC_R_SUCCESS); } @@ -778,7 +841,7 @@ find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version, REQUIRE(VALID_SDLZDB(sdlz)); REQUIRE(nodep == NULL || *nodep == NULL); - REQUIRE(version == NULL || version == (void *) &dummy); + REQUIRE(version == NULL || version == (void*)&sdlz->dummy_version); UNUSED(options); UNUSED(sdlz); @@ -920,9 +983,14 @@ static isc_result_t allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, isc_stdtime_t now, dns_rdatasetiter_t **iteratorp) { + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *) db; sdlz_rdatasetiter_t *iterator; - REQUIRE(version == NULL || version == &dummy); + REQUIRE(VALID_SDLZDB(sdlz)); + + REQUIRE(version == NULL || + version == (void*)&sdlz->dummy_version || + version == sdlz->future_version); UNUSED(version); UNUSED(now); @@ -945,47 +1013,139 @@ allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, } static isc_result_t +modrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, + dns_rdataset_t *rdataset, unsigned int options, + dns_sdlzmodrdataset_t mod_function) +{ + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db; + dns_master_style_t *style = NULL; + isc_result_t result; + isc_buffer_t *buffer = NULL; + isc_mem_t *mctx; + dns_sdlznode_t *sdlznode; + char *rdatastr = NULL; + char name[DNS_NAME_MAXTEXT + 1]; + + REQUIRE(VALID_SDLZDB(sdlz)); + + if (mod_function == NULL) + return (ISC_R_NOTIMPLEMENTED); + + sdlznode = (dns_sdlznode_t *)node; + + UNUSED(options); + + dns_name_format(sdlznode->name, name, sizeof(name)); + + mctx = sdlz->common.mctx; + + result = isc_buffer_allocate(mctx, &buffer, 1024); + if (result != ISC_R_SUCCESS) + return (result); + + result = dns_master_stylecreate(&style, 0, 0, 0, 0, 0, 0, 1, mctx); + if (result != ISC_R_SUCCESS) + goto cleanup; + + result = dns_master_rdatasettotext(sdlznode->name, rdataset, + style, buffer); + if (result != ISC_R_SUCCESS) + goto cleanup; + + if (isc_buffer_usedlength(buffer) < 1) { + result = ISC_R_BADADDRESSFORM; + goto cleanup; + } + + rdatastr = isc_buffer_base(buffer); + if (rdatastr == NULL) { + result = ISC_R_NOMEMORY; + goto cleanup; + } + rdatastr[isc_buffer_usedlength(buffer) - 1] = 0; + + MAYBE_LOCK(sdlz->dlzimp); + result = mod_function(name, rdatastr, sdlz->dlzimp->driverarg, + sdlz->dbdata, version); + MAYBE_UNLOCK(sdlz->dlzimp); + +cleanup: + isc_buffer_free(&buffer); + if (style != NULL) + dns_master_styledestroy(&style, mctx); + + return (result); +} + +static isc_result_t addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, isc_stdtime_t now, dns_rdataset_t *rdataset, unsigned int options, dns_rdataset_t *addedrdataset) { - UNUSED(db); - UNUSED(node); - UNUSED(version); + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db; + isc_result_t result; + UNUSED(now); - UNUSED(rdataset); - UNUSED(options); UNUSED(addedrdataset); + REQUIRE(VALID_SDLZDB(sdlz)); - return (ISC_R_NOTIMPLEMENTED); + if (sdlz->dlzimp->methods->addrdataset == NULL) + return (ISC_R_NOTIMPLEMENTED); + + result = modrdataset(db, node, version, rdataset, options, + sdlz->dlzimp->methods->addrdataset); + return (result); } + static isc_result_t subtractrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, dns_rdataset_t *rdataset, unsigned int options, dns_rdataset_t *newrdataset) { - UNUSED(db); - UNUSED(node); - UNUSED(version); - UNUSED(rdataset); - UNUSED(options); + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db; + isc_result_t result; + UNUSED(newrdataset); + REQUIRE(VALID_SDLZDB(sdlz)); - return (ISC_R_NOTIMPLEMENTED); + if (sdlz->dlzimp->methods->subtractrdataset == NULL) { + return (ISC_R_NOTIMPLEMENTED); + } + + result = modrdataset(db, node, version, rdataset, options, + sdlz->dlzimp->methods->subtractrdataset); + return (result); } static isc_result_t deleterdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, dns_rdatatype_t type, dns_rdatatype_t covers) { - UNUSED(db); - UNUSED(node); - UNUSED(version); - UNUSED(type); + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db; + char name[DNS_NAME_MAXTEXT + 1]; + char b_type[DNS_RDATATYPE_FORMATSIZE]; + dns_sdlznode_t *sdlznode; + isc_result_t result; + UNUSED(covers); - return (ISC_R_NOTIMPLEMENTED); + REQUIRE(VALID_SDLZDB(sdlz)); + + if (sdlz->dlzimp->methods->delrdataset == NULL) + return (ISC_R_NOTIMPLEMENTED); + + sdlznode = (dns_sdlznode_t *)node; + dns_name_format(sdlznode->name, name, sizeof(name)); + dns_rdatatype_format(type, b_type, sizeof(b_type)); + + MAYBE_LOCK(sdlz->dlzimp); + result = sdlz->dlzimp->methods->delrdataset(name, b_type, + sdlz->dlzimp->driverarg, + sdlz->dbdata, version); + MAYBE_UNLOCK(sdlz->dlzimp); + + return (result); } static isc_boolean_t @@ -1021,6 +1181,26 @@ settask(dns_db_t *db, isc_task_t *task) { } +/* + * getoriginnode() is used by the update code to find the + * dns_rdatatype_dnskey record for a zone + */ +static isc_result_t +getoriginnode(dns_db_t *db, dns_dbnode_t **nodep) { + dns_sdlz_db_t *sdlz = (dns_sdlz_db_t *)db; + isc_result_t result; + + REQUIRE(VALID_SDLZDB(sdlz)); + if (sdlz->dlzimp->methods->newversion == NULL) + return (ISC_R_NOTIMPLEMENTED); + + result = findnode(db, &sdlz->common.origin, ISC_FALSE, nodep); + if (result != ISC_R_SUCCESS) + sdlz_log(ISC_LOG_ERROR, "sdlz getoriginnode failed : %s", + isc_result_totext(result)); + return (result); +} + static dns_dbmethods_t sdlzdb_methods = { attach, detach, @@ -1049,6 +1229,8 @@ static dns_dbmethods_t sdlzdb_methods = { ispersistent, overmem, settask, + getoriginnode, + NULL, NULL, NULL, NULL, @@ -1371,9 +1553,7 @@ dns_sdlzcreate(isc_mem_t *mctx, const char *dlzname, unsigned int argc, isc_result_t result = ISC_R_NOTFOUND; /* Write debugging message to log */ - isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, - DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2), - "Loading SDLZ driver."); + sdlz_log(ISC_LOG_DEBUG(2), "Loading SDLZ driver."); /* * Performs checks to make sure data is as we expect it to be. @@ -1395,13 +1575,9 @@ dns_sdlzcreate(isc_mem_t *mctx, const char *dlzname, unsigned int argc, /* Write debugging message to log */ if (result == ISC_R_SUCCESS) { - isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, - DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2), - "SDLZ driver loaded successfully."); + sdlz_log(ISC_LOG_DEBUG(2), "SDLZ driver loaded successfully."); } else { - isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, - DNS_LOGMODULE_DLZ, ISC_LOG_ERROR, - "SDLZ driver failed to load."); + sdlz_log(ISC_LOG_ERROR, "SDLZ driver failed to load."); } return (result); @@ -1414,9 +1590,7 @@ dns_sdlzdestroy(void *driverdata, void **dbdata) dns_sdlzimplementation_t *imp; /* Write debugging message to log */ - isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, - DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2), - "Unloading SDLZ driver."); + sdlz_log(ISC_LOG_DEBUG(2), "Unloading SDLZ driver."); imp = driverdata; @@ -1472,11 +1646,97 @@ dns_sdlzfindzone(void *driverarg, void *dbdata, isc_mem_t *mctx, return (result); } + +static isc_result_t +dns_sdlzconfigure(void *driverarg, void *dbdata, dns_view_t *view) +{ + isc_result_t result; + dns_sdlzimplementation_t *imp; + + REQUIRE(driverarg != NULL); + + imp = (dns_sdlzimplementation_t *) driverarg; + + /* Call SDLZ driver's configure method */ + if (imp->methods->configure != NULL) { + MAYBE_LOCK(imp); + result = imp->methods->configure(view, imp->driverarg, dbdata); + MAYBE_UNLOCK(imp); + } else { + result = ISC_R_SUCCESS; + } + + return (result); +} + +static isc_boolean_t +dns_sdlzssumatch(dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr, + dns_rdatatype_t type, const dst_key_t *key, void *driverarg, + void *dbdata) +{ + dns_sdlzimplementation_t *imp; + char b_signer[DNS_NAME_FORMATSIZE]; + char b_name[DNS_NAME_FORMATSIZE]; + char b_addr[ISC_NETADDR_FORMATSIZE]; + char b_type[DNS_RDATATYPE_FORMATSIZE]; + char b_key[DST_KEY_FORMATSIZE]; + isc_buffer_t *tkey_token; + isc_region_t token_region; + isc_uint32_t token_len = 0; + isc_boolean_t ret; + + REQUIRE(driverarg != NULL); + + imp = (dns_sdlzimplementation_t *) driverarg; + if (imp->methods->ssumatch == NULL) + return (ISC_FALSE); + + /* + * Format the request elements. sdlz operates on strings, not + * structures + */ + if (signer) + dns_name_format(signer, b_signer, sizeof(b_signer)); + else + b_signer[0] = 0; + + dns_name_format(name, b_name, sizeof(b_name)); + + if (tcpaddr) + isc_netaddr_format(tcpaddr, b_addr, sizeof(b_addr)); + else + b_addr[0] = 0; + + dns_rdatatype_format(type, b_type, sizeof(b_type)); + + if (key) + dst_key_format(key, b_key, sizeof(b_key)); + else + b_key[0] = 0; + + tkey_token = dst_key_tkeytoken(key); + + if (tkey_token) { + isc_buffer_region(tkey_token, &token_region); + token_len = token_region.length; + } + + MAYBE_LOCK(imp); + ret = imp->methods->ssumatch(b_signer, b_name, b_addr, b_type, b_key, + token_len, + token_len ? token_region.base : NULL, + imp->driverarg, dbdata); + MAYBE_UNLOCK(imp); + return (ret); +} + static dns_dlzmethods_t sdlzmethods = { dns_sdlzcreate, dns_sdlzdestroy, dns_sdlzfindzone, - dns_sdlzallowzonexfr + dns_sdlzallowzonexfr, + dns_sdlzconfigure, + dns_sdlzssumatch }; /* @@ -1530,8 +1790,16 @@ dns_sdlz_putrr(dns_sdlzlookup_t *lookup, const char *type, dns_ttl_t ttl, ISC_LINK_INIT(rdatalist, link); ISC_LIST_APPEND(lookup->lists, rdatalist, link); } else - if (rdatalist->ttl != ttl) - return (DNS_R_BADTTL); + if (rdatalist->ttl > ttl) { + /* + * BIND9 doesn't enforce all RRs in an RRset + * having the same TTL, as per RFC 2136, + * section 7.12. If a DLZ backend has + * different TTLs, then the best + * we can do is return the lowest. + */ + rdatalist->ttl = ttl; + } rdata = isc_mem_get(mctx, sizeof(dns_rdata_t)); if (rdata == NULL) @@ -1694,9 +1962,7 @@ dns_sdlzregister(const char *drivername, const dns_sdlzmethods_t *methods, DNS_SDLZFLAG_THREADSAFE)) == 0); /* Write debugging message to log */ - isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, - DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2), - "Registering SDLZ driver '%s'", drivername); + sdlz_log(ISC_LOG_DEBUG(2), "Registering SDLZ driver '%s'", drivername); /* * Allocate memory for a sdlz_implementation object. Error if @@ -1769,9 +2035,7 @@ dns_sdlzunregister(dns_sdlzimplementation_t **sdlzimp) { isc_mem_t *mctx; /* Write debugging message to log */ - isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, - DNS_LOGMODULE_DLZ, ISC_LOG_DEBUG(2), - "Unregistering SDLZ driver."); + sdlz_log(ISC_LOG_DEBUG(2), "Unregistering SDLZ driver."); /* * Performs checks to make sure data is as we expect it to be. @@ -1797,3 +2061,16 @@ dns_sdlzunregister(dns_sdlzimplementation_t **sdlzimp) { *sdlzimp = NULL; } + + +isc_result_t +dns_sdlz_setdb(dns_dlzdb_t *dlzdatabase, dns_rdataclass_t rdclass, + dns_name_t *name, dns_db_t **dbp) +{ + isc_result_t result; + + result = dns_sdlzcreateDBP(dlzdatabase->mctx, + dlzdatabase->implementation->driverarg, + dlzdatabase->dbdata, name, rdclass, dbp); + return (result); +} diff --git a/lib/dns/spnego.c b/lib/dns/spnego.c index eda3d51e..5ad492ce 100644 --- a/lib/dns/spnego.c +++ b/lib/dns/spnego.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2006-2011 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: spnego.c,v 1.12 2009/07/21 06:53:09 marka Exp $ */ +/* $Id: spnego.c,v 1.16 2011-01-11 23:47:13 tbox Exp $ */ /*! \file * \brief @@ -172,6 +172,8 @@ /* asn1_err.h */ /* Generated from ../../../lib/asn1/asn1_err.et */ +#ifndef ERROR_TABLE_BASE_asn1 +/* these may be brought in already via gssapi_krb5.h */ typedef enum asn1_error_number { ASN1_BAD_TIMEFORMAT = 1859794432, ASN1_MISSING_FIELD = 1859794433, @@ -186,6 +188,7 @@ typedef enum asn1_error_number { } asn1_error_number; #define ERROR_TABLE_BASE_asn1 1859794432 +#endif #define __asn1_common_definitions__ @@ -409,7 +412,7 @@ code_NegTokenArg(OM_uint32 * minor_status, { OM_uint32 ret; u_char *buf; - size_t buf_size, buf_len; + size_t buf_size, buf_len = 0; buf_size = 1024; buf = malloc(buf_size); diff --git a/lib/dns/ssu.c b/lib/dns/ssu.c index ab692420..eb135510 100644 --- a/lib/dns/ssu.c +++ b/lib/dns/ssu.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2010, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -17,7 +17,7 @@ /*! \file */ /* - * $Id: ssu.c,v 1.34 2008/01/18 23:46:58 tbox Exp $ + * $Id: ssu.c,v 1.38 2011-01-06 23:47:00 tbox Exp $ * Principal Author: Brian Wellington */ @@ -30,11 +30,13 @@ #include <isc/string.h> #include <isc/util.h> +#include <dns/dlz.h> #include <dns/fixedname.h> #include <dns/name.h> #include <dns/ssu.h> #include <dst/gssapi.h> +#include <dst/dst.h> #define SSUTABLEMAGIC ISC_MAGIC('S', 'S', 'U', 'T') #define VALID_SSUTABLE(table) ISC_MAGIC_VALID(table, SSUTABLEMAGIC) @@ -59,6 +61,7 @@ struct dns_ssutable { isc_mem_t *mctx; unsigned int references; isc_mutex_t lock; + dns_dlzdb_t *dlzdatabase; ISC_LIST(dns_ssurule_t) rules; }; @@ -345,7 +348,8 @@ stf_from_address(dns_name_t *stfself, isc_netaddr_t *tcpaddr) { isc_boolean_t dns_ssutable_checkrules(dns_ssutable_t *table, dns_name_t *signer, dns_name_t *name, isc_netaddr_t *tcpaddr, - dns_rdatatype_t type) + dns_rdatatype_t type, + const dst_key_t *key) { dns_ssurule_t *rule; unsigned int i; @@ -483,10 +487,27 @@ dns_ssutable_checkrules(dns_ssutable_t *table, dns_name_t *signer, if (!dns_name_equal(stfself, name)) continue; break; + case DNS_SSUMATCHTYPE_EXTERNAL: + if (!dns_ssu_external_match(rule->identity, signer, + name, tcpaddr, type, key, + table->mctx)) + continue; + break; + case DNS_SSUMATCHTYPE_DLZ: + if (!dns_dlz_ssumatch(table->dlzdatabase, signer, + name, tcpaddr, type, key)) + continue; + break; } if (rule->ntypes == 0) { - if (!isusertype(type)) + /* + * If this is a DLZ rule, then the DLZ ssu + * checks will have already checked + * the type. + */ + if (rule->matchtype != DNS_SSUMATCHTYPE_DLZ && + !isusertype(type)) continue; } else { for (i = 0; i < rule->ntypes; i++) { @@ -550,3 +571,42 @@ dns_ssutable_nextrule(dns_ssurule_t *rule, dns_ssurule_t **nextrule) { *nextrule = ISC_LIST_NEXT(rule, link); return (*nextrule != NULL ? ISC_R_SUCCESS : ISC_R_NOMORE); } + +/* + * Create a specialised SSU table that points at an external DLZ database + */ +isc_result_t +dns_ssutable_createdlz(isc_mem_t *mctx, dns_ssutable_t **tablep, + dns_dlzdb_t *dlzdatabase) +{ + isc_result_t result; + dns_ssurule_t *rule; + dns_ssutable_t *table = NULL; + + REQUIRE(tablep != NULL && *tablep == NULL); + + result = dns_ssutable_create(mctx, &table); + if (result != ISC_R_SUCCESS) + return (result); + + table->dlzdatabase = dlzdatabase; + + rule = isc_mem_get(table->mctx, sizeof(dns_ssurule_t)); + if (rule == NULL) { + dns_ssutable_detach(&table); + return (ISC_R_NOMEMORY); + } + + rule->identity = NULL; + rule->name = NULL; + rule->types = NULL; + rule->grant = ISC_TRUE; + rule->matchtype = DNS_SSUMATCHTYPE_DLZ; + rule->ntypes = 0; + rule->types = NULL; + rule->magic = SSURULEMAGIC; + + ISC_LIST_INITANDAPPEND(table->rules, rule, link); + *tablep = table; + return (ISC_R_SUCCESS); +} diff --git a/lib/dns/ssu_external.c b/lib/dns/ssu_external.c new file mode 100644 index 00000000..ac72a1f8 --- /dev/null +++ b/lib/dns/ssu_external.c @@ -0,0 +1,265 @@ +/* + * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: ssu_external.c,v 1.7 2011-01-13 07:05:57 marka Exp $ */ + +/* + * This implements external update-policy rules. This allows permission + * to update a zone to be checked by consulting an external daemon (e.g., + * kerberos). + */ + +#include <config.h> +#include <errno.h> +#include <unistd.h> + +#ifdef ISC_PLATFORM_HAVESYSUNH +#include <sys/socket.h> +#include <sys/un.h> +#endif + +#include <isc/magic.h> +#include <isc/mem.h> +#include <isc/netaddr.h> +#include <isc/result.h> +#include <isc/string.h> +#include <isc/util.h> +#include <isc/strerror.h> + +#include <dns/fixedname.h> +#include <dns/name.h> +#include <dns/ssu.h> +#include <dns/log.h> +#include <dns/rdatatype.h> + +#include <dst/dst.h> + + +static void +ssu_e_log(int level, const char *fmt, ...) { + va_list ap; + + va_start(ap, fmt); + isc_log_vwrite(dns_lctx, DNS_LOGCATEGORY_SECURITY, + DNS_LOGMODULE_ZONE, ISC_LOG_DEBUG(level), fmt, ap); + va_end(ap); +} + + +/* + * Connect to a UNIX domain socket. + */ +static int +ux_socket_connect(const char *path) { + int fd = -1; +#ifdef ISC_PLATFORM_HAVESYSUNH + struct sockaddr_un addr; + + REQUIRE(path != NULL); + + if (strlen(path) > sizeof(addr.sun_path)) { + ssu_e_log(3, "ssu_external: socket path '%s' " + "longer than system maximum %u", + path, sizeof(addr.sun_path)); + return (-1); + } + + memset(&addr, 0, sizeof(addr)); + addr.sun_family = AF_UNIX; + strncpy(addr.sun_path, path, sizeof(addr.sun_path)); + + fd = socket(AF_UNIX, SOCK_STREAM, 0); + if (fd == -1) { + char strbuf[ISC_STRERRORSIZE]; + isc__strerror(errno, strbuf, sizeof(strbuf)); + ssu_e_log(3, "ssu_external: unable to create socket - %s", + strbuf); + return (-1); + } + + if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) == -1) { + char strbuf[ISC_STRERRORSIZE]; + isc__strerror(errno, strbuf, sizeof(strbuf)); + ssu_e_log(3, "ssu_external: unable to connect to " + "socket '%s' - %s", + path, strbuf); + close(fd); + return (-1); + } +#endif + return (fd); +} + +/* Change this version if you update the format of the request */ +#define SSU_EXTERNAL_VERSION 1 + +/* + * Perform an update-policy rule check against an external application + * over a socket. + * + * This currently only supports local: for unix domain datagram sockets. + * + * Note that by using a datagram socket and creating a new socket each + * time we avoid the need for locking and allow for parallel access to + * the authorization server. + */ +isc_boolean_t +dns_ssu_external_match(dns_name_t *identity, + dns_name_t *signer, dns_name_t *name, + isc_netaddr_t *tcpaddr, dns_rdatatype_t type, + const dst_key_t *key, isc_mem_t *mctx) +{ + char b_identity[DNS_NAME_FORMATSIZE]; + char b_signer[DNS_NAME_FORMATSIZE]; + char b_name[DNS_NAME_FORMATSIZE]; + char b_addr[ISC_NETADDR_FORMATSIZE]; + char b_type[DNS_RDATATYPE_FORMATSIZE]; + char b_key[DST_KEY_FORMATSIZE]; + isc_buffer_t *tkey_token; + int fd; + const char *sock_path; + size_t req_len; + isc_region_t token_region; + unsigned char *data; + isc_buffer_t buf; + isc_uint32_t token_len = 0; + isc_uint32_t reply; + ssize_t ret; + + /* The identity contains local:/path/to/socket */ + dns_name_format(identity, b_identity, sizeof(b_identity)); + + /* For now only local: is supported */ + if (strncmp(b_identity, "local:", 6) != 0) { + ssu_e_log(3, "ssu_external: invalid socket path '%s'", + b_identity); + return (ISC_FALSE); + } + sock_path = &b_identity[6]; + + fd = ux_socket_connect(sock_path); + if (fd == -1) + return (ISC_FALSE); + + tkey_token = dst_key_tkeytoken(key); + + /* Format the request elements */ + if (signer) + dns_name_format(signer, b_signer, sizeof(b_signer)); + else + b_signer[0] = 0; + + dns_name_format(name, b_name, sizeof(b_name)); + + if (tcpaddr) + isc_netaddr_format(tcpaddr, b_addr, sizeof(b_addr)); + else + b_addr[0] = 0; + + dns_rdatatype_format(type, b_type, sizeof(b_type)); + + if (key) + dst_key_format(key, b_key, sizeof(b_key)); + else + b_key[0] = 0; + + if (tkey_token) { + isc_buffer_region(tkey_token, &token_region); + token_len = token_region.length; + } + + /* Work out how big the request will be */ + req_len = sizeof(isc_uint32_t) + /* Format version */ + sizeof(isc_uint32_t) + /* Length */ + strlen(b_signer) + 1 + /* Signer */ + strlen(b_name) + 1 + /* Name */ + strlen(b_addr) + 1 + /* Address */ + strlen(b_type) + 1 + /* Type */ + strlen(b_key) + 1 + /* Key */ + sizeof(isc_uint32_t) + /* tkey_token length */ + token_len; /* tkey_token */ + + + /* format the buffer */ + data = isc_mem_allocate(mctx, req_len); + if (data == NULL) { + close(fd); + return (ISC_FALSE); + } + + isc_buffer_init(&buf, data, req_len); + isc_buffer_putuint32(&buf, SSU_EXTERNAL_VERSION); + isc_buffer_putuint32(&buf, req_len); + + /* Strings must be null-terminated */ + isc_buffer_putstr(&buf, b_signer); + isc_buffer_putuint8(&buf, 0); + isc_buffer_putstr(&buf, b_name); + isc_buffer_putuint8(&buf, 0); + isc_buffer_putstr(&buf, b_addr); + isc_buffer_putuint8(&buf, 0); + isc_buffer_putstr(&buf, b_type); + isc_buffer_putuint8(&buf, 0); + isc_buffer_putstr(&buf, b_key); + isc_buffer_putuint8(&buf, 0); + + isc_buffer_putuint32(&buf, token_len); + if (tkey_token && token_len != 0) + isc_buffer_putmem(&buf, token_region.base, token_len); + + ENSURE(isc_buffer_availablelength(&buf) == 0); + + /* Send the request */ + ret = write(fd, data, req_len); + isc_mem_free(mctx, data); + if (ret != (ssize_t) req_len) { + char strbuf[ISC_STRERRORSIZE]; + isc__strerror(errno, strbuf, sizeof(strbuf)); + ssu_e_log(3, "ssu_external: unable to send request - %s", + strbuf); + close(fd); + return (ISC_FALSE); + } + + /* Receive the reply */ + ret = read(fd, &reply, sizeof(isc_uint32_t)); + if (ret != (ssize_t) sizeof(isc_uint32_t)) { + char strbuf[ISC_STRERRORSIZE]; + isc__strerror(errno, strbuf, sizeof(strbuf)); + ssu_e_log(3, "ssu_external: unable to receive reply - %s", + strbuf); + close(fd); + return (ISC_FALSE); + } + + close(fd); + + reply = ntohl(reply); + + if (reply == 0) { + ssu_e_log(3, "ssu_external: denied external auth for '%s'", + b_name); + return (ISC_FALSE); + } else if (reply == 1) { + ssu_e_log(3, "ssu_external: allowed external auth for '%s'", + b_name); + return (ISC_TRUE); + } + + ssu_e_log(3, "ssu_external: invalid reply 0x%08x", reply); + + return (ISC_FALSE); +} diff --git a/lib/dns/tkey.c b/lib/dns/tkey.c index 16f425f8..a861ee3b 100644 --- a/lib/dns/tkey.c +++ b/lib/dns/tkey.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -16,7 +16,7 @@ */ /* - * $Id: tkey.c,v 1.96 2010/12/09 00:54:34 marka Exp $ + * $Id: tkey.c,v 1.100 2011-01-08 23:47:01 tbox Exp $ */ /*! \file */ #include <config.h> @@ -99,6 +99,7 @@ dns_tkeyctx_create(isc_mem_t *mctx, isc_entropy_t *ectx, dns_tkeyctx_t **tctxp) tctx->dhkey = NULL; tctx->domain = NULL; tctx->gsscred = NULL; + tctx->gssapi_keytab = NULL; *tctxp = tctx; return (ISC_R_SUCCESS); @@ -121,6 +122,9 @@ dns_tkeyctx_destroy(dns_tkeyctx_t **tctxp) { dns_name_free(tctx->domain, mctx); isc_mem_put(mctx, tctx->domain, sizeof(dns_name_t)); } + if (tctx->gssapi_keytab != NULL) { + isc_mem_free(mctx, tctx->gssapi_keytab); + } if (tctx->gsscred != NULL) dst_gssapi_releasecred(&tctx->gsscred); isc_entropy_detach(&tctx->ectx); @@ -430,8 +434,17 @@ process_gsstkey(dns_name_t *name, dns_rdata_tkey_t *tkeyin, isc_buffer_t *outtoken = NULL; gss_ctx_id_t gss_ctx = NULL; - if (tctx->gsscred == NULL) + /* + * You have to define either a gss credential (principal) to + * accept with tkey-gssapi-credential, or you have to + * configure a specific keytab (with tkey-gssapi-keytab) in + * order to use gsstkey + */ + if (tctx->gsscred == NULL && tctx->gssapi_keytab == NULL) { + tkey_log("process_gsstkey(): no tkey-gssapi-credential " + "or tkey-gssapi-keytab configured"); return (ISC_R_NOPERM); + } if (!dns_name_equal(&tkeyin->algorithm, DNS_TSIG_GSSAPI_NAME) && !dns_name_equal(&tkeyin->algorithm, DNS_TSIG_GSSAPIMS_NAME)) { @@ -454,7 +467,11 @@ process_gsstkey(dns_name_t *name, dns_rdata_tkey_t *tkeyin, dns_fixedname_init(&principal); - result = dst_gssapi_acceptctx(tctx->gsscred, &intoken, + /* + * Note that tctx->gsscred may be NULL if tctx->gssapi_keytab is set + */ + result = dst_gssapi_acceptctx(tctx->gsscred, tctx->gssapi_keytab, + &intoken, &outtoken, &gss_ctx, dns_fixedname_name(&principal), tctx->mctx); @@ -479,7 +496,8 @@ process_gsstkey(dns_name_t *name, dns_rdata_tkey_t *tkeyin, #endif isc_uint32_t expire; - RETERR(dst_key_fromgssapi(name, gss_ctx, ring->mctx, &dstkey)); + RETERR(dst_key_fromgssapi(name, gss_ctx, ring->mctx, + &dstkey, &intoken)); /* * Limit keys to 1 hour or the context's lifetime whichever * is smaller. @@ -984,7 +1002,8 @@ dns_tkey_builddhquery(dns_message_t *msg, dst_key_t *key, dns_name_t *name, isc_result_t dns_tkey_buildgssquery(dns_message_t *msg, dns_name_t *name, dns_name_t *gname, isc_buffer_t *intoken, isc_uint32_t lifetime, - gss_ctx_id_t *context, isc_boolean_t win2k) + gss_ctx_id_t *context, isc_boolean_t win2k, + isc_mem_t *mctx, char **err_message) { dns_rdata_tkey_t tkey; isc_result_t result; @@ -998,9 +1017,11 @@ dns_tkey_buildgssquery(dns_message_t *msg, dns_name_t *name, dns_name_t *gname, REQUIRE(name != NULL); REQUIRE(gname != NULL); REQUIRE(context != NULL); + REQUIRE(mctx != NULL); isc_buffer_init(&token, array, sizeof(array)); - result = dst_gssapi_initctx(gname, NULL, &token, context); + result = dst_gssapi_initctx(gname, NULL, &token, context, + mctx, err_message); if (result != DNS_R_CONTINUE && result != ISC_R_SUCCESS) return (result); @@ -1217,7 +1238,7 @@ isc_result_t dns_tkey_processgssresponse(dns_message_t *qmsg, dns_message_t *rmsg, dns_name_t *gname, gss_ctx_id_t *context, isc_buffer_t *outtoken, dns_tsigkey_t **outkey, - dns_tsig_keyring_t *ring) + dns_tsig_keyring_t *ring, char **err_message) { dns_rdata_t rtkeyrdata = DNS_RDATA_INIT, qtkeyrdata = DNS_RDATA_INIT; dns_name_t *tkeyname; @@ -1231,6 +1252,7 @@ dns_tkey_processgssresponse(dns_message_t *qmsg, dns_message_t *rmsg, REQUIRE(qmsg != NULL); REQUIRE(rmsg != NULL); REQUIRE(gname != NULL); + REQUIRE(ring != NULL); if (outkey != NULL) REQUIRE(*outkey == NULL); @@ -1267,10 +1289,11 @@ dns_tkey_processgssresponse(dns_message_t *qmsg, dns_message_t *rmsg, isc_buffer_init(outtoken, array, sizeof(array)); isc_buffer_init(&intoken, rtkey.key, rtkey.keylen); - RETERR(dst_gssapi_initctx(gname, &intoken, outtoken, context)); + RETERR(dst_gssapi_initctx(gname, &intoken, outtoken, context, + ring->mctx, err_message)); RETERR(dst_key_fromgssapi(dns_rootname, *context, rmsg->mctx, - &dstkey)); + &dstkey, NULL)); RETERR(dns_tsigkey_createfromkey(tkeyname, DNS_TSIG_GSSAPI_NAME, dstkey, ISC_FALSE, NULL, @@ -1348,7 +1371,7 @@ isc_result_t dns_tkey_gssnegotiate(dns_message_t *qmsg, dns_message_t *rmsg, dns_name_t *server, gss_ctx_id_t *context, dns_tsigkey_t **outkey, dns_tsig_keyring_t *ring, - isc_boolean_t win2k) + isc_boolean_t win2k, char **err_message) { dns_rdata_t rtkeyrdata = DNS_RDATA_INIT, qtkeyrdata = DNS_RDATA_INIT; dns_name_t *tkeyname; @@ -1392,12 +1415,13 @@ dns_tkey_gssnegotiate(dns_message_t *qmsg, dns_message_t *rmsg, isc_buffer_init(&intoken, rtkey.key, rtkey.keylen); isc_buffer_init(&outtoken, array, sizeof(array)); - result = dst_gssapi_initctx(server, &intoken, &outtoken, context); + result = dst_gssapi_initctx(server, &intoken, &outtoken, context, + ring->mctx, err_message); if (result != DNS_R_CONTINUE && result != ISC_R_SUCCESS) return (result); RETERR(dst_key_fromgssapi(dns_rootname, *context, rmsg->mctx, - &dstkey)); + &dstkey, NULL)); /* * XXXSRA This seems confused. If we got CONTINUE from initctx, diff --git a/lib/dns/tsig.c b/lib/dns/tsig.c index 117e0b8e..cec5222f 100644 --- a/lib/dns/tsig.c +++ b/lib/dns/tsig.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -16,7 +16,7 @@ */ /* - * $Id: tsig.c,v 1.143 2010/12/09 00:54:34 marka Exp $ + * $Id: tsig.c,v 1.147 2011-01-11 23:47:13 tbox Exp $ */ /*! \file */ #include <config.h> @@ -203,8 +203,10 @@ tsig_log(dns_tsigkey_t *key, int level, const char *fmt, ...) { else strcpy(namestr, "<null>"); - if (key != NULL && key->generated) + if (key != NULL && key->generated && key->creator) dns_name_format(key->creator, creatorstr, sizeof(creatorstr)); + else + strcpy(creatorstr, "<null>"); va_start(ap, fmt); vsnprintf(message, sizeof(message), fmt, ap); @@ -526,6 +528,184 @@ cleanup_ring(dns_tsig_keyring_t *ring) } } +static void +destroyring(dns_tsig_keyring_t *ring) { + dns_rbt_destroy(&ring->keys); + isc_rwlock_destroy(&ring->lock); + isc_mem_putanddetach(&ring->mctx, ring, sizeof(dns_tsig_keyring_t)); +} + +static unsigned int +dst_alg_fromname(dns_name_t *algorithm) { + if (dns_name_equal(algorithm, DNS_TSIG_HMACMD5_NAME)) { + return (DST_ALG_HMACMD5); + } else if (dns_name_equal(algorithm, DNS_TSIG_HMACSHA1_NAME)) { + return (DST_ALG_HMACSHA1); + } else if (dns_name_equal(algorithm, DNS_TSIG_HMACSHA224_NAME)) { + return (DST_ALG_HMACSHA224); + } else if (dns_name_equal(algorithm, DNS_TSIG_HMACSHA256_NAME)) { + return (DST_ALG_HMACSHA256); + } else if (dns_name_equal(algorithm, DNS_TSIG_HMACSHA384_NAME)) { + return (DST_ALG_HMACSHA384); + } else if (dns_name_equal(algorithm, DNS_TSIG_HMACSHA512_NAME)) { + return (DST_ALG_HMACSHA512); + } else if (dns_name_equal(algorithm, DNS_TSIG_GSSAPI_NAME)) { + return (DST_ALG_GSSAPI); + } else if (dns_name_equal(algorithm, DNS_TSIG_GSSAPIMS_NAME)) { + return (DST_ALG_GSSAPI); + } else + return (0); +} + +static isc_result_t +restore_key(dns_tsig_keyring_t *ring, isc_stdtime_t now, FILE *fp) { + dst_key_t *dstkey = NULL; + char namestr[1024]; + char creatorstr[1024]; + char algorithmstr[1024]; + char keystr[4096]; + unsigned int inception, expire; + int n; + isc_buffer_t b; + dns_name_t *name, *creator, *algorithm; + dns_fixedname_t fname, fcreator, falgorithm; + isc_result_t result; + unsigned int dstalg; + + n = fscanf(fp, "%1023s %1023s %u %u %1023s %4095s\n", namestr, + creatorstr, &inception, &expire, algorithmstr, keystr); + if (n == EOF) + return (ISC_R_NOMORE); + if (n != 6) + return (ISC_R_FAILURE); + + if (isc_serial_lt(expire, now)) + return (DNS_R_EXPIRED); + + dns_fixedname_init(&fname); + name = dns_fixedname_name(&fname); + isc_buffer_init(&b, namestr, strlen(namestr)); + isc_buffer_add(&b, strlen(namestr)); + result = dns_name_fromtext(name, &b, dns_rootname, 0, NULL); + if (result != ISC_R_SUCCESS) + return (result); + + dns_fixedname_init(&fcreator); + creator = dns_fixedname_name(&fcreator); + isc_buffer_init(&b, creatorstr, strlen(creatorstr)); + isc_buffer_add(&b, strlen(creatorstr)); + result = dns_name_fromtext(creator, &b, dns_rootname, 0, NULL); + if (result != ISC_R_SUCCESS) + return (result); + + dns_fixedname_init(&falgorithm); + algorithm = dns_fixedname_name(&falgorithm); + isc_buffer_init(&b, algorithmstr, strlen(algorithmstr)); + isc_buffer_add(&b, strlen(algorithmstr)); + result = dns_name_fromtext(algorithm, &b, dns_rootname, 0, NULL); + if (result != ISC_R_SUCCESS) + return (result); + + dstalg = dst_alg_fromname(algorithm); + if (dstalg == 0) + return (DNS_R_BADALG); + + result = dst_key_restore(name, dstalg, DNS_KEYOWNER_ENTITY, + DNS_KEYPROTO_DNSSEC, dns_rdataclass_in, + ring->mctx, keystr, &dstkey); + if (result != ISC_R_SUCCESS) + return (result); + + result = dns_tsigkey_createfromkey(name, algorithm, dstkey, + ISC_TRUE, creator, inception, + expire, ring->mctx, ring, NULL); + if (result != ISC_R_SUCCESS && dstkey != NULL) + dst_key_free(&dstkey); + return (result); +} + +static void +dump_key(dns_tsigkey_t *tkey, FILE *fp) +{ + char *buffer = NULL; + int length = 0; + char namestr[DNS_NAME_FORMATSIZE]; + char creatorstr[DNS_NAME_FORMATSIZE]; + char algorithmstr[DNS_NAME_FORMATSIZE]; + isc_result_t result; + + dns_name_format(&tkey->name, namestr, sizeof(namestr)); + dns_name_format(tkey->creator, creatorstr, sizeof(creatorstr)); + dns_name_format(tkey->algorithm, algorithmstr, sizeof(algorithmstr)); + result = dst_key_dump(tkey->key, tkey->mctx, &buffer, &length); + if (result == ISC_R_SUCCESS) + fprintf(fp, "%s %s %u %u %s %.*s\n", namestr, creatorstr, + tkey->inception, tkey->expire, algorithmstr, + length, buffer); + if (buffer != NULL) + isc_mem_put(tkey->mctx, buffer, length); +} + +isc_result_t +dns_tsigkeyring_dumpanddetach(dns_tsig_keyring_t **ringp, FILE *fp) { + isc_result_t result; + dns_rbtnodechain_t chain; + dns_name_t foundname; + dns_fixedname_t fixedorigin; + dns_name_t *origin; + isc_stdtime_t now; + dns_rbtnode_t *node; + dns_tsigkey_t *tkey; + dns_tsig_keyring_t *ring; + unsigned int references; + + REQUIRE(ringp != NULL && *ringp != NULL); + + ring = *ringp; + *ringp = NULL; + + RWLOCK(&ring->lock, isc_rwlocktype_write); + INSIST(ring->references > 0); + ring->references--; + references = ring->references; + RWUNLOCK(&ring->lock, isc_rwlocktype_write); + + if (references != 0) + return (DNS_R_CONTINUE); + + isc_stdtime_get(&now); + dns_name_init(&foundname, NULL); + dns_fixedname_init(&fixedorigin); + origin = dns_fixedname_name(&fixedorigin); + dns_rbtnodechain_init(&chain, ring->mctx); + result = dns_rbtnodechain_first(&chain, ring->keys, &foundname, + origin); + if (result != ISC_R_SUCCESS && result != DNS_R_NEWORIGIN) { + dns_rbtnodechain_invalidate(&chain); + goto destroy; + } + + for (;;) { + node = NULL; + dns_rbtnodechain_current(&chain, &foundname, origin, &node); + tkey = node->data; + if (tkey != NULL && tkey->generated && tkey->expire >= now) + dump_key(tkey, fp); + result = dns_rbtnodechain_next(&chain, &foundname, + origin); + if (result != ISC_R_SUCCESS && result != DNS_R_NEWORIGIN) { + dns_rbtnodechain_invalidate(&chain); + if (result == ISC_R_NOMORE) + result = ISC_R_SUCCESS; + goto destroy; + } + } + + destroy: + destroyring(ring); + return (result); +} + isc_result_t dns_tsigkey_create(dns_name_t *name, dns_name_t *algorithm, unsigned char *secret, int length, isc_boolean_t generated, @@ -1603,6 +1783,7 @@ dns_tsigkeyring_create(isc_mem_t *mctx, dns_tsig_keyring_t **ringp) { ring->maxgenerated = DNS_TSIG_MAXGENERATEDKEYS; ISC_LIST_INIT(ring->lru); isc_mem_attach(mctx, &ring->mctx); + ring->references = 1; *ringp = ring; return (ISC_R_SUCCESS); @@ -1622,8 +1803,23 @@ dns_tsigkeyring_add(dns_tsig_keyring_t *ring, dns_name_t *name, } void -dns_tsigkeyring_destroy(dns_tsig_keyring_t **ringp) { +dns_tsigkeyring_attach(dns_tsig_keyring_t *source, dns_tsig_keyring_t **target) +{ + REQUIRE(source != NULL); + REQUIRE(target != NULL && *target == NULL); + + RWLOCK(&source->lock, isc_rwlocktype_write); + INSIST(source->references > 0); + source->references++; + INSIST(source->references > 0); + *target = source; + RWUNLOCK(&source->lock, isc_rwlocktype_write); +} + +void +dns_tsigkeyring_detach(dns_tsig_keyring_t **ringp) { dns_tsig_keyring_t *ring; + unsigned int references; REQUIRE(ringp != NULL); REQUIRE(*ringp != NULL); @@ -1631,7 +1827,27 @@ dns_tsigkeyring_destroy(dns_tsig_keyring_t **ringp) { ring = *ringp; *ringp = NULL; - dns_rbt_destroy(&ring->keys); - isc_rwlock_destroy(&ring->lock); - isc_mem_putanddetach(&ring->mctx, ring, sizeof(dns_tsig_keyring_t)); + RWLOCK(&ring->lock, isc_rwlocktype_write); + INSIST(ring->references > 0); + ring->references--; + references = ring->references; + RWUNLOCK(&ring->lock, isc_rwlocktype_write); + + if (references == 0) + destroyring(ring); +} + +void +dns_keyring_restore(dns_tsig_keyring_t *ring, FILE *fp) { + isc_stdtime_t now; + isc_result_t result; + + isc_stdtime_get(&now); + do { + result = restore_key(ring, now, fp); + if (result == ISC_R_NOMORE) + return; + if (result == DNS_R_BADALG || result == DNS_R_EXPIRED) + result = ISC_R_SUCCESS; + } while (result == ISC_R_SUCCESS); } diff --git a/lib/dns/validator.c b/lib/dns/validator.c index 15cdcf9e..7895c7cc 100644 --- a/lib/dns/validator.c +++ b/lib/dns/validator.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: validator.c,v 1.196 2010/11/16 01:14:51 marka Exp $ */ +/* $Id: validator.c,v 1.197 2010-12-23 04:07:58 marka Exp $ */ #include <config.h> @@ -253,9 +253,17 @@ dlv_algorithm_supported(dns_validator_t *val) { dlv.algorithm)) continue; +#ifdef HAVE_OPENSSL_GOST + if (dlv.digest_type != DNS_DSDIGEST_SHA256 && + dlv.digest_type != DNS_DSDIGEST_SHA1 && + dlv.digest_type != DNS_DSDIGEST_GOST) + continue; +#else if (dlv.digest_type != DNS_DSDIGEST_SHA256 && dlv.digest_type != DNS_DSDIGEST_SHA1) continue; +#endif + return (ISC_TRUE); } @@ -2137,7 +2145,7 @@ dlv_validatezonekey(dns_validator_t *val) { dns_rdataset_t trdataset; isc_boolean_t supported_algorithm; isc_result_t result; - isc_uint8_t digest_type; + char digest_types[256]; validator_log(val, ISC_LOG_DEBUG(3), "dlv_validatezonekey"); @@ -2154,7 +2162,7 @@ dlv_validatezonekey(dns_validator_t *val) { * need to ignore DNS_DSDIGEST_SHA1 if a DNS_DSDIGEST_SHA256 * is present. */ - digest_type = DNS_DSDIGEST_SHA1; + memset(digest_types, 1, sizeof(digest_types)); for (result = dns_rdataset_first(&val->dlv); result == ISC_R_SUCCESS; result = dns_rdataset_next(&val->dlv)) { @@ -2170,7 +2178,7 @@ dlv_validatezonekey(dns_validator_t *val) { if (dlv.digest_type == DNS_DSDIGEST_SHA256 && dlv.length == ISC_SHA256_DIGESTLENGTH) { - digest_type = DNS_DSDIGEST_SHA256; + digest_types[DNS_DSDIGEST_SHA1] = 0; break; } } @@ -2188,7 +2196,7 @@ dlv_validatezonekey(dns_validator_t *val) { dlv.digest_type)) continue; - if (dlv.digest_type != digest_type) + if (digest_types[dlv.digest_type] == 0) continue; if (!dns_resolver_algorithm_supported(val->view->resolver, @@ -2271,7 +2279,7 @@ validatezonekey(dns_validator_t *val) { dst_key_t *dstkey; isc_boolean_t supported_algorithm; isc_boolean_t atsep = ISC_FALSE; - isc_uint8_t digest_type; + char digest_types[256]; /* * Caller must be holding the validator lock. @@ -2502,7 +2510,7 @@ validatezonekey(dns_validator_t *val) { * need to ignore DNS_DSDIGEST_SHA1 if a DNS_DSDIGEST_SHA256 * is present. */ - digest_type = DNS_DSDIGEST_SHA1; + memset(digest_types, 1, sizeof(digest_types)); for (result = dns_rdataset_first(val->dsset); result == ISC_R_SUCCESS; result = dns_rdataset_next(val->dsset)) { @@ -2518,7 +2526,7 @@ validatezonekey(dns_validator_t *val) { if (ds.digest_type == DNS_DSDIGEST_SHA256 && ds.length == ISC_SHA256_DIGESTLENGTH) { - digest_type = DNS_DSDIGEST_SHA256; + digest_types[DNS_DSDIGEST_SHA1] = 0; break; } } @@ -2536,7 +2544,7 @@ validatezonekey(dns_validator_t *val) { ds.digest_type)) continue; - if (ds.digest_type != digest_type) + if (digest_types[ds.digest_type] == 0) continue; if (!dns_resolver_algorithm_supported(val->view->resolver, diff --git a/lib/dns/view.c b/lib/dns/view.c index 40d8e424..24f925a0 100644 --- a/lib/dns/view.c +++ b/lib/dns/view.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,13 +15,15 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: view.c,v 1.172 2010/12/09 04:53:48 marka Exp $ */ +/* $Id: view.c,v 1.178 2011-01-13 09:53:04 marka Exp $ */ /*! \file */ #include <config.h> +#include <isc/file.h> #include <isc/hash.h> +#include <isc/print.h> #include <isc/sha2.h> #include <isc/stats.h> #include <isc/string.h> /* Required for HP/UX (and others?) */ @@ -51,6 +53,7 @@ #include <dns/request.h> #include <dns/resolver.h> #include <dns/result.h> +#include <dns/rpz.h> #include <dns/stats.h> #include <dns/tsig.h> #include <dns/zone.h> @@ -189,6 +192,7 @@ dns_view_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, view->maxudp = 0; view->v4_aaaa = dns_v4_aaaa_ok; view->v4_aaaa_acl = NULL; + ISC_LIST_INIT(view->rpz_zones); dns_fixedname_init(&view->dlv_fixed); view->managed_keys = NULL; #ifdef BIND9 @@ -234,7 +238,7 @@ dns_view_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, cleanup_dynkeys: #endif - dns_tsigkeyring_destroy(&view->dynamickeys); + dns_tsigkeyring_detach(&view->dynamickeys); cleanup_references: isc_refcount_destroy(&view->references); @@ -278,10 +282,41 @@ destroy(dns_view_t *view) { #endif if (view->peers != NULL) dns_peerlist_detach(&view->peers); - if (view->dynamickeys != NULL) - dns_tsigkeyring_destroy(&view->dynamickeys); + + if (view->dynamickeys != NULL) { + isc_result_t result; + char template[20]; + char keyfile[20]; + FILE *fp = NULL; + int n; + + n = snprintf(keyfile, sizeof(keyfile), "%s.tsigkeys", + view->name); + if (n > 0 && (size_t)n < sizeof(keyfile)) { + result = isc_file_mktemplate(keyfile, template, + sizeof(template)); + if (result == ISC_R_SUCCESS) + (void)isc_file_openuniqueprivate(template, &fp); + } + if (fp == NULL) + dns_tsigkeyring_detach(&view->dynamickeys); + else { + result = dns_tsigkeyring_dumpanddetach( + &view->dynamickeys, fp); + if (result == ISC_R_SUCCESS) { + if (fclose(fp) == 0) + result = isc_file_rename(template, + keyfile); + if (result != ISC_R_SUCCESS) + (void)remove(template); + } else { + (void)fclose(fp); + (void)remove(template); + } + } + } if (view->statickeys != NULL) - dns_tsigkeyring_destroy(&view->statickeys); + dns_tsigkeyring_detach(&view->statickeys); if (view->adb != NULL) dns_adb_detach(&view->adb); if (view->resolver != NULL) @@ -292,6 +327,10 @@ destroy(dns_view_t *view) { dns_acache_putdb(view->acache, view->cachedb); dns_acache_detach(&view->acache); } + dns_rpz_view_destroy(view); +#else + INSIST(view->acache == NULL); + INSIST(ISC_LIST_EMPTY(view->rpz_zones)); #endif if (view->requestmgr != NULL) dns_requestmgr_detach(&view->requestmgr); @@ -725,8 +764,46 @@ dns_view_setkeyring(dns_view_t *view, dns_tsig_keyring_t *ring) { REQUIRE(DNS_VIEW_VALID(view)); REQUIRE(ring != NULL); if (view->statickeys != NULL) - dns_tsigkeyring_destroy(&view->statickeys); - view->statickeys = ring; + dns_tsigkeyring_detach(&view->statickeys); + dns_tsigkeyring_attach(ring, &view->statickeys); +} + +void +dns_view_setdynamickeyring(dns_view_t *view, dns_tsig_keyring_t *ring) { + REQUIRE(DNS_VIEW_VALID(view)); + REQUIRE(ring != NULL); + if (view->dynamickeys != NULL) + dns_tsigkeyring_detach(&view->dynamickeys); + dns_tsigkeyring_attach(ring, &view->dynamickeys); +} + +void +dns_view_getdynamickeyring(dns_view_t *view, dns_tsig_keyring_t **ringp) { + REQUIRE(DNS_VIEW_VALID(view)); + REQUIRE(ringp != NULL && *ringp == NULL); + if (view->dynamickeys != NULL) + dns_tsigkeyring_attach(view->dynamickeys, ringp); +} + +void +dns_view_restorekeyring(dns_view_t *view) { + FILE *fp; + char keyfile[20]; + int n; + + REQUIRE(DNS_VIEW_VALID(view)); + + if (view->dynamickeys != NULL) { + n = snprintf(keyfile, sizeof(keyfile), "%s.tsigkeys", + view->name); + if (n > 0 && (size_t)n < sizeof(keyfile)) { + fp = fopen(keyfile, "r"); + if (fp != NULL) { + dns_keyring_restore(view->dynamickeys, fp); + (void)fclose(fp); + } + } + } } void @@ -790,17 +867,29 @@ isc_result_t dns_view_find(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, isc_stdtime_t now, unsigned int options, isc_boolean_t use_hints, dns_db_t **dbp, dns_dbnode_t **nodep, dns_name_t *foundname, - dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset) + dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset) { + return (dns_view_find2(view, name, type, now, options, use_hints, + ISC_FALSE, dbp, nodep, foundname, rdataset, + sigrdataset)); +} + +isc_result_t +dns_view_find2(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, + isc_stdtime_t now, unsigned int options, + isc_boolean_t use_hints, isc_boolean_t use_static_stub, + dns_db_t **dbp, dns_dbnode_t **nodep, dns_name_t *foundname, + dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset) { isc_result_t result; dns_db_t *db, *zdb; dns_dbnode_t *node, *znode; - isc_boolean_t is_cache; + isc_boolean_t is_cache, is_staticstub_zone; dns_rdataset_t zrdataset, zsigrdataset; dns_zone_t *zone; #ifndef BIND9 UNUSED(use_hints); + UNUSED(use_static_stub); #endif /* @@ -828,14 +917,23 @@ dns_view_find(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, zone = NULL; db = NULL; node = NULL; + is_staticstub_zone = ISC_FALSE; #ifdef BIND9 result = dns_zt_find(view->zonetable, name, 0, NULL, &zone); + if (zone != NULL && dns_zone_gettype(zone) == dns_zone_staticstub && + !use_static_stub) { + result = ISC_R_NOTFOUND; + } if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) { result = dns_zone_getdb(zone, &db); if (result != ISC_R_SUCCESS && view->cachedb != NULL) dns_db_attach(view->cachedb, &db); else if (result != ISC_R_SUCCESS) goto cleanup; + if (dns_zone_gettype(zone) == dns_zone_staticstub && + dns_name_equal(name, dns_zone_getorigin(zone))) { + is_staticstub_zone = ISC_TRUE; + } } else if (result == ISC_R_NOTFOUND && view->cachedb != NULL) dns_db_attach(view->cachedb, &db); #else @@ -855,8 +953,7 @@ dns_view_find(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, result = dns_db_find(db, name, NULL, type, options, now, &node, foundname, rdataset, sigrdataset); - if (result == DNS_R_DELEGATION || - result == ISC_R_NOTFOUND) { + if (result == DNS_R_DELEGATION || result == ISC_R_NOTFOUND) { if (dns_rdataset_isassociated(rdataset)) dns_rdataset_disassociate(rdataset); if (sigrdataset != NULL && @@ -866,10 +963,13 @@ dns_view_find(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, dns_db_detachnode(db, &node); if (!is_cache) { dns_db_detach(&db); - if (view->cachedb != NULL) { + if (view->cachedb != NULL && !is_staticstub_zone) { /* * Either the answer is in the cache, or we * don't know it. + * Note that if the result comes from a + * static-stub zone we stop the search here + * (see the function description in view.h). */ is_cache = ISC_TRUE; dns_db_attach(view->cachedb, &db); @@ -899,7 +999,7 @@ dns_view_find(dns_view_t *view, dns_name_t *name, dns_rdatatype_t type, */ result = ISC_R_NOTFOUND; } else if (result == DNS_R_GLUE) { - if (view->cachedb != NULL) { + if (view->cachedb != NULL && !is_staticstub_zone) { /* * We found an answer, but the cache may be better. * Remember what we've got and go look in the cache. @@ -1060,7 +1160,7 @@ dns_view_findzonecut2(dns_view_t *view, dns_name_t *name, dns_name_t *fname, { isc_result_t result; dns_db_t *db; - isc_boolean_t is_cache, use_zone, try_hints; + isc_boolean_t is_cache, use_zone, try_hints, is_staticstub_zone; dns_zone_t *zone; dns_name_t *zfname; dns_rdataset_t zrdataset, zsigrdataset; @@ -1072,6 +1172,7 @@ dns_view_findzonecut2(dns_view_t *view, dns_name_t *name, dns_name_t *fname, db = NULL; zone = NULL; use_zone = ISC_FALSE; + is_staticstub_zone = ISC_FALSE; try_hints = ISC_FALSE; zfname = NULL; @@ -1087,8 +1188,11 @@ dns_view_findzonecut2(dns_view_t *view, dns_name_t *name, dns_name_t *fname, */ #ifdef BIND9 result = dns_zt_find(view->zonetable, name, 0, NULL, &zone); - if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) + if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) { result = dns_zone_getdb(zone, &db); + if (dns_zone_gettype(zone) == dns_zone_staticstub) + is_staticstub_zone = ISC_TRUE; + } #else result = ISC_R_NOTFOUND; #endif @@ -1154,7 +1258,9 @@ dns_view_findzonecut2(dns_view_t *view, dns_name_t *name, dns_name_t *fname, fname, rdataset, sigrdataset); if (result == ISC_R_SUCCESS) { if (zfname != NULL && - !dns_name_issubdomain(fname, zfname)) { + (!dns_name_issubdomain(fname, zfname) || + (dns_zone_staticstub && + dns_name_equal(fname, zfname)))) { /* * We found a zonecut in the cache, but our * zone delegation is better. diff --git a/lib/dns/win32/libdns.def b/lib/dns/win32/libdns.def index 8febf329..2c32126d 100644 --- a/lib/dns/win32/libdns.def +++ b/lib/dns/win32/libdns.def @@ -124,6 +124,8 @@ dns_db_origin dns_db_overmem dns_db_printnode dns_db_register +dns_db_rpz_enabled +dns_db_rpz_findips dns_db_subtractrdataset dns_db_unregister dns_dbiterator_current @@ -360,6 +362,7 @@ dns_name_format dns_name_free dns_name_fromregion dns_name_fromstring +dns_name_fromstring2 dns_name_fromtext dns_name_fromwire dns_name_fullcompare @@ -603,6 +606,18 @@ dns_result_register dns_result_torcode dns_result_totext dns_rootns_create +dns_rpz_cidr_addip +dns_rpz_cidr_deleteip +dns_rpz_cidr_find +dns_rpz_cidr_free +dns_rpz_decode_cname +dns_rpz_enabled +dns_rpz_needed +dns_rpz_new_cidr +dns_rpz_set_need +dns_rpz_str2policy +dns_rpz_type2str +dns_rpz_view_destroy dns_rriterator_current dns_rriterator_destroy dns_rriterator_first @@ -629,6 +644,7 @@ dns_secproto_totext dns_soa_getminimum dns_soa_getserial dns_soa_setserial +dns_ssu_external_match dns_ssutable_addrule dns_ssutable_attach dns_ssutable_checkrules @@ -666,8 +682,10 @@ dns_tsigkey_detach dns_tsigkey_find dns_tsigkey_setdeleted dns_tsigkeyring_add +dns_tsigkeyring_attach dns_tsigkeyring_create -dns_tsigkeyring_destroy +dns_tsigkeyring_detach +dns_tsigkeyring_dumpanddetach dns_tsigrcode_fromtext dns_tsigrcode_totext dns_ttl_fromtext @@ -695,6 +713,7 @@ dns_view_flushcache2 dns_view_flushname dns_view_freeze dns_view_freezezones +dns_view_getdynamickeyring dns_view_getpeertsig dns_view_getresquerystats dns_view_getresstats @@ -705,9 +724,11 @@ dns_view_iscacheshared dns_view_issecuredomain dns_view_load dns_view_loadnew +dns_view_restorekeyring dns_view_setcache dns_view_setcache2 dns_view_setdstport +dns_view_setdynamickeyring dns_view_sethints dns_view_setkeyring dns_view_setnewzones @@ -811,6 +832,7 @@ dns_zone_setchecknames dns_zone_setcheckns dns_zone_setchecksrv dns_zone_setclass +dns_zone_setdb dns_zone_setdbtype dns_zone_setdialup dns_zone_setfile @@ -903,6 +925,7 @@ dst_key_buildfilename dst_key_class dst_key_compare dst_key_computesecret +dst_key_dump dst_key_flags dst_key_format dst_key_free @@ -924,6 +947,7 @@ dst_key_name dst_key_paramcompare dst_key_proto dst_key_pubcompare +dst_key_restore dst_key_secretsize dst_key_setbits dst_key_setflags diff --git a/lib/dns/win32/libdns.dsp b/lib/dns/win32/libdns.dsp index 47d55f1f..765ccc6d 100644 --- a/lib/dns/win32/libdns.dsp +++ b/lib/dns/win32/libdns.dsp @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "BIND9" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "libdns_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../../../openssl-0.9.8l/inc32/openssl/include" /I "./" /I "../../../" /I "include" /I "../include" /I "../../isc/win32" /I "../../isc/win32/include" /I "../../isc/include" /I "../../isc/noatomic/include" /I "../../../../openssl-0.9.8l/inc32" /I "../../../../libxml2-2.7.3/include" /D "NDEBUG" /D "BIND9" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBDNS_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "include" /I "../include" /I "../../isc/win32" /I "../../isc/win32/include" /I "../../isc/include" /I "../../isc/noatomic/include" /I "../../../../libxml2-2.7.3/include" /I "../../../../openssl-0.9.8l/inc32" /D "NDEBUG" /D "BIND9" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBDNS_EXPORTS" /YX /FD /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -338,6 +338,10 @@ SOURCE=..\include\dns\rootns.h # End Source File
# Begin Source File
+SOURCE=..\include\dns\rpz.h
+# End Source File
+# Begin Source File
+
SOURCE=..\include\dns\rriterator.h
# End Source File
# Begin Source File
@@ -630,6 +634,10 @@ SOURCE=..\rootns.c # End Source File
# Begin Source File
+SOURCE=..\rpz.c
+# End Source File
+# Begin Source File
+
SOURCE=..\rriterator.c
# End Source File
# Begin Source File
@@ -650,6 +658,10 @@ SOURCE=..\ssu.c # End Source File
# Begin Source File
+SOURCE=..\ssu_external.c
+# End Source File
+# Begin Source File
+
SOURCE=..\stats.c
# End Source File
# Begin Source File
@@ -758,6 +770,10 @@ SOURCE=..\openssldsa_link.c # End Source File
# Begin Source File
+SOURCE=..\opensslgost_link.c
+# End Source File
+# Begin Source File
+
SOURCE=..\opensslrsa_link.c
# End Source File
# End Group
diff --git a/lib/dns/win32/libdns.mak b/lib/dns/win32/libdns.mak index fd0994c7..404da4e2 100644 --- a/lib/dns/win32/libdns.mak +++ b/lib/dns/win32/libdns.mak @@ -163,6 +163,7 @@ CLEAN : -@erase "$(INTDIR)\openssl_link.obj"
-@erase "$(INTDIR)\openssldh_link.obj"
-@erase "$(INTDIR)\openssldsa_link.obj"
+ -@erase "$(INTDIR)\opensslgost_link.obj"
-@erase "$(INTDIR)\opensslrsa_link.obj"
-@erase "$(INTDIR)\order.obj"
-@erase "$(INTDIR)\peer.obj"
@@ -181,10 +182,12 @@ CLEAN : -@erase "$(INTDIR)\resolver.obj"
-@erase "$(INTDIR)\result.obj"
-@erase "$(INTDIR)\rootns.obj"
+ -@erase "$(INTDIR)\rpz.obj"
-@erase "$(INTDIR)\sdb.obj"
-@erase "$(INTDIR)\sdlz.obj"
-@erase "$(INTDIR)\soa.obj"
-@erase "$(INTDIR)\ssu.obj"
+ -@erase "$(INTDIR)\ssu_external.obj"
-@erase "$(INTDIR)\stats.obj"
-@erase "$(INTDIR)\tcpmsg.obj"
-@erase "$(INTDIR)\time.obj"
@@ -209,7 +212,7 @@ CLEAN : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../../../../../openssl-0.9.8l/inc32/openssl/include" /I "./" /I "../../../" /I "include" /I "../include" /I "../../isc/win32" /I "../../isc/win32/include" /I "../../isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../../openssl-0.9.8l/inc32" /I "../../../../libxml2-2.7.3/include" /D "NDEBUG" /D "BIND9" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBDNS_EXPORTS" /Fp"$(INTDIR)\libdns.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "include" /I "../include" /I "../../isc/win32" /I "../../isc/win32/include" /I "../../isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../../openssl-0.9.8l/inc32" /I "../../../../libxml2-2.7.3/include" /D "NDEBUG" /D "BIND9" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBDNS_EXPORTS" /Fp"$(INTDIR)\libdns.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
@@ -302,11 +305,13 @@ LINK32_OBJS= \ "$(INTDIR)\resolver.obj" \
"$(INTDIR)\result.obj" \
"$(INTDIR)\rootns.obj" \
+ "$(INTDIR)\rpz.obj" \
"$(INTDIR)\rriterator.obj" \
"$(INTDIR)\sdb.obj" \
"$(INTDIR)\sdlz.obj" \
"$(INTDIR)\soa.obj" \
"$(INTDIR)\ssu.obj" \
+ "$(INTDIR)\ssu_external.obj" \
"$(INTDIR)\stats.obj" \
"$(INTDIR)\tcpmsg.obj" \
"$(INTDIR)\time.obj" \
@@ -333,6 +338,7 @@ LINK32_OBJS= \ "$(INTDIR)\openssl_link.obj" \
"$(INTDIR)\openssldh_link.obj" \
"$(INTDIR)\openssldsa_link.obj" \
+ "$(INTDIR)\opensslgost_link.obj" \
"$(INTDIR)\opensslrsa_link.obj" \
"..\..\isc\win32\Release\libisc.lib"
@@ -453,6 +459,8 @@ CLEAN : -@erase "$(INTDIR)\openssldh_link.sbr"
-@erase "$(INTDIR)\openssldsa_link.obj"
-@erase "$(INTDIR)\openssldsa_link.sbr"
+ -@erase "$(INTDIR)\opensslgost_link.obj"
+ -@erase "$(INTDIR)\opensslgost_link.sbr"
-@erase "$(INTDIR)\opensslrsa_link.obj"
-@erase "$(INTDIR)\opensslrsa_link.sbr"
-@erase "$(INTDIR)\order.obj"
@@ -489,6 +497,8 @@ CLEAN : -@erase "$(INTDIR)\result.sbr"
-@erase "$(INTDIR)\rootns.obj"
-@erase "$(INTDIR)\rootns.sbr"
+ -@erase "$(INTDIR)\rpz.obj"
+ -@erase "$(INTDIR)\rpz.sbr"
-@erase "$(INTDIR)\rriterator.obj"
-@erase "$(INTDIR)\rriterator.sbr"
-@erase "$(INTDIR)\sdb.obj"
@@ -498,7 +508,9 @@ CLEAN : -@erase "$(INTDIR)\soa.obj"
-@erase "$(INTDIR)\soa.sbr"
-@erase "$(INTDIR)\ssu.obj"
+ -@erase "$(INTDIR)\ssu_external.obj"
-@erase "$(INTDIR)\ssu.sbr"
+ -@erase "$(INTDIR)\ssu_external.sbr"
-@erase "$(INTDIR)\stats.obj"
-@erase "$(INTDIR)\stats.sbr"
-@erase "$(INTDIR)\tcpmsg.obj"
@@ -629,11 +641,13 @@ BSC32_SBRS= \ "$(INTDIR)\resolver.sbr" \
"$(INTDIR)\result.sbr" \
"$(INTDIR)\rootns.sbr" \
+ "$(INTDIR)\rpz.sbr" \
"$(INTDIR)\rriterator.sbr" \
"$(INTDIR)\sdb.sbr" \
"$(INTDIR)\sdlz.sbr" \
"$(INTDIR)\soa.sbr" \
"$(INTDIR)\ssu.sbr" \
+ "$(INTDIR)\ssu_external.sbr" \
"$(INTDIR)\stats.sbr" \
"$(INTDIR)\tcpmsg.sbr" \
"$(INTDIR)\time.sbr" \
@@ -660,6 +674,7 @@ BSC32_SBRS= \ "$(INTDIR)\openssl_link.sbr" \
"$(INTDIR)\openssldh_link.sbr" \
"$(INTDIR)\openssldsa_link.sbr" \
+ "$(INTDIR)\opensslgost_link.sbr" \
"$(INTDIR)\opensslrsa_link.sbr"
"$(OUTDIR)\libdns.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
@@ -721,11 +736,13 @@ LINK32_OBJS= \ "$(INTDIR)\resolver.obj" \
"$(INTDIR)\result.obj" \
"$(INTDIR)\rootns.obj" \
+ "$(INTDIR)\rpz.obj" \
"$(INTDIR)\rriterator.obj" \
"$(INTDIR)\sdb.obj" \
"$(INTDIR)\sdlz.obj" \
"$(INTDIR)\soa.obj" \
"$(INTDIR)\ssu.obj" \
+ "$(INTDIR)\ssu_external.obj" \
"$(INTDIR)\stats.obj" \
"$(INTDIR)\tcpmsg.obj" \
"$(INTDIR)\time.obj" \
@@ -752,6 +769,7 @@ LINK32_OBJS= \ "$(INTDIR)\openssl_link.obj" \
"$(INTDIR)\openssldh_link.obj" \
"$(INTDIR)\openssldsa_link.obj" \
+ "$(INTDIR)\opensslgost_link.obj" \
"$(INTDIR)\opensslrsa_link.obj" \
"..\..\isc\win32\Debug\libisc.lib"
@@ -1660,6 +1678,24 @@ SOURCE=..\rootns.c !ENDIF
+SOURCE=..\rpz.c
+
+!IF "$(CFG)" == "libdns - Win32 Release"
+
+
+"$(INTDIR)\rpz.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "libdns - Win32 Debug"
+
+
+"$(INTDIR)\rpz.obj" "$(INTDIR)\rpz.sbr" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
SOURCE=..\rriterator.c
!IF "$(CFG)" == "libdns - Win32 Release"
@@ -1750,6 +1786,24 @@ SOURCE=..\ssu.c !ENDIF
+SOURCE=..\ssu_external.c
+
+!IF "$(CFG)" == "libdns - Win32 Release"
+
+
+"$(INTDIR)\ssu_external.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "libdns - Win32 Debug"
+
+
+"$(INTDIR)\ssu_external.obj" "$(INTDIR)\ssu_external.sbr" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
SOURCE=..\stats.c
!IF "$(CFG)" == "libdns - Win32 Release"
@@ -2216,6 +2270,24 @@ SOURCE=..\openssldsa_link.c !ENDIF
+SOURCE=..\opensslgost_link.c
+
+!IF "$(CFG)" == "libdns - Win32 Release"
+
+
+"$(INTDIR)\opensslgost_link.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "libdns - Win32 Debug"
+
+
+"$(INTDIR)\opensslgost_link.obj" "$(INTDIR)\opensslgost_link.sbr" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
SOURCE=..\opensslrsa_link.c
!IF "$(CFG)" == "libdns - Win32 Release"
diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 9ca32c01..9ee2e62a 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zone.c,v 1.577 2010/12/02 23:22:42 marka Exp $ */ +/* $Id: zone.c,v 1.582 2011-01-13 04:59:25 tbox Exp $ */ /*! \file */ @@ -322,6 +322,11 @@ struct dns_zone { * True if added by "rndc addzone" */ isc_boolean_t added; + + /*% + * whether a rpz radix was needed when last loaded + */ + isc_boolean_t rpz_zone; }; #define DNS_ZONE_FLAG(z,f) (ISC_TF(((z)->flags & (f)) != 0)) @@ -833,6 +838,7 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) { zone->nodes = 100; zone->privatetype = (dns_rdatatype_t)0xffffU; zone->added = ISC_FALSE; + zone->rpz_zone = ISC_FALSE; zone->magic = ZONE_MAGIC; @@ -1434,7 +1440,8 @@ zone_load(dns_zone_t *zone, unsigned int flags) { * "rndc reconfig", we are done. */ if (!isc_time_isepoch(&zone->loadtime) && - (flags & DNS_ZONELOADFLAG_NOSTAT) != 0) { + (flags & DNS_ZONELOADFLAG_NOSTAT) != 0 && + zone->rpz_zone == dns_rpz_needed()) { result = ISC_R_SUCCESS; goto cleanup; } @@ -1443,7 +1450,8 @@ zone_load(dns_zone_t *zone, unsigned int flags) { if (result == ISC_R_SUCCESS) { if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_LOADED) && !DNS_ZONE_FLAG(zone, DNS_ZONEFLG_HASINCLUDE) && - isc_time_compare(&filetime, &zone->loadtime) <= 0) { + isc_time_compare(&filetime, &zone->loadtime) <= 0 && + zone->rpz_zone == dns_rpz_needed()) { dns_zone_log(zone, ISC_LOG_DEBUG(1), "skipping load: master file " "older than last load"); @@ -1451,6 +1459,7 @@ zone_load(dns_zone_t *zone, unsigned int flags) { goto cleanup; } loadtime = filetime; + zone->rpz_zone = dns_rpz_needed(); } } @@ -1751,6 +1760,12 @@ zone_check_mx(dns_zone_t *zone, dns_db_t *db, dns_name_t *name, int level; /* + * "." means the services does not exist. + */ + if (dns_name_equal(name, dns_rootname)) + return (ISC_TRUE); + + /* * Outside of zone. */ if (!dns_name_issubdomain(name, &zone->origin)) { @@ -3412,6 +3427,7 @@ zone_postload(dns_zone_t *zone, dns_db_t *db, isc_time_t loadtime, */ switch (zone->type) { + case dns_zone_dlz: case dns_zone_master: case dns_zone_slave: case dns_zone_stub: @@ -4410,6 +4426,17 @@ dns_zone_getdb(dns_zone_t *zone, dns_db_t **dpb) { return (result); } +void +dns_zone_setdb(dns_zone_t *zone, dns_db_t *db) { + REQUIRE(DNS_ZONE_VALID(zone)); + REQUIRE(zone->type == dns_zone_staticstub); + + ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_write); + REQUIRE(zone->db == NULL); + dns_db_attach(db, &zone->db); + ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_write); +} + /* * Co-ordinates the starting of routine jobs. */ @@ -14172,3 +14199,16 @@ dns_zone_getadded(dns_zone_t *zone) { REQUIRE(DNS_ZONE_VALID(zone)); return (zone->added); } + +isc_result_t +dns_zone_dlzpostload(dns_zone_t *zone, dns_db_t *db) +{ + isc_time_t loadtime; + isc_result_t result; + TIME_NOW(&loadtime); + + LOCK_ZONE(zone); + result = zone_postload(zone, db, loadtime, ISC_R_SUCCESS); + UNLOCK_ZONE(zone); + return result; +} diff --git a/lib/export/dns/Makefile.in b/lib/export/dns/Makefile.in index c35f8507..15b0d3f3 100644 --- a/lib/export/dns/Makefile.in +++ b/lib/export/dns/Makefile.in @@ -12,7 +12,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.7 2010/06/09 23:50:58 tbox Exp $ +# $Id: Makefile.in,v 1.8 2010-12-23 04:07:59 marka Exp $ top_srcdir = @top_srcdir@ srcdir = @top_srcdir@/lib/dns @@ -44,7 +44,7 @@ LIBS = @LIBS@ # Alphabetically OPENSSLLINKOBJS = openssl_link.@O@ openssldh_link.@O@ openssldsa_link.@O@ \ - opensslrsa_link.@O@ + opensslgost_link.@O@ opensslrsa_link.@O@ DSTOBJS = @OPENSSLLINKOBJS@ \ dst_api.@O@ dst_lib.@O@ dst_parse.@O@ dst_result.@O@ \ @@ -71,8 +71,8 @@ OBJS= ${DNSOBJS} ${OTHEROBJS} ${DSTOBJS} ${PORTDNSOBJS} # Alphabetically -OPENSSLLINKSRCS = openssl_link.c openssldh_link.c \ - openssldsa_link.c opensslrsa_link.c +OPENSSLLINKSRCS = openssl_link.c openssldh_link.c openssldsa_link.c \ + opensslgost_link.c opensslrsa_link.c DSTSRCS = @OPENSSLLINKSRCS@ \ dst_api.c dst_lib.c dst_parse.c \ diff --git a/lib/isc/api b/lib/isc/api index 94575eb4..e6441e65 100644 --- a/lib/isc/api +++ b/lib/isc/api @@ -1,3 +1,3 @@ -LIBINTERFACE = 80 +LIBINTERFACE = 81 LIBREVISION = 0 LIBAGE = 0 diff --git a/lib/isc/include/isc/buffer.h b/lib/isc/include/isc/buffer.h index 2a02d88e..30a6e398 100644 --- a/lib/isc/include/isc/buffer.h +++ b/lib/isc/include/isc/buffer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2010 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: buffer.h,v 1.53 2008/09/25 04:02:39 tbox Exp $ */ +/* $Id: buffer.h,v 1.55 2010-12-20 23:47:21 tbox Exp $ */ #ifndef ISC_BUFFER_H #define ISC_BUFFER_H 1 diff --git a/lib/isc/include/isc/file.h b/lib/isc/include/isc/file.h index 68ae8ca8..be408254 100644 --- a/lib/isc/include/isc/file.h +++ b/lib/isc/include/isc/file.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: file.h,v 1.37 2009/08/28 03:13:08 each Exp $ */ +/* $Id: file.h,v 1.39 2011-01-11 23:47:14 tbox Exp $ */ #ifndef ISC_FILE_H #define ISC_FILE_H 1 @@ -100,6 +100,10 @@ isc_file_mktemplate(const char *path, char *buf, size_t buflen); isc_result_t isc_file_openunique(char *templet, FILE **fp); +isc_result_t +isc_file_openuniqueprivate(char *templet, FILE **fp); +isc_result_t +isc_file_openuniquemode(char *templet, int mode, FILE **fp); /*!< * \brief Create and open a file with a unique name based on 'templet'. * diff --git a/lib/isc/include/isc/platform.h.in b/lib/isc/include/isc/platform.h.in index 02b8d868..2491274a 100644 --- a/lib/isc/include/isc/platform.h.in +++ b/lib/isc/include/isc/platform.h.in @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: platform.h.in,v 1.55 2010/06/03 23:51:05 tbox Exp $ */ +/* $Id: platform.h.in,v 1.56 2010-12-18 01:56:23 each Exp $ */ #ifndef ISC_PLATFORM_H #define ISC_PLATFORM_H 1 @@ -220,6 +220,12 @@ @ISC_PLATFORM_GSSAPIHEADER@ /* + * Defined to <gssapi_krb5.h> or <gssapi/gssapi_krb5.h> for how to + * include the GSSAPI KRB5 header. + */ +@ISC_PLATFORM_GSSAPI_KRB5_HEADER@ + +/* * Defined to <krb5.h> or <krb5/krb5.h> for how to include * the KRB5 header. */ diff --git a/lib/isc/include/isc/task.h b/lib/isc/include/isc/task.h index d64eed5e..07dada40 100644 --- a/lib/isc/include/isc/task.h +++ b/lib/isc/include/isc/task.h @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: task.h,v 1.68 2010/12/04 22:27:29 marka Exp $ */ +/* $Id: task.h,v 1.69 2010-12-22 13:05:20 marka Exp $ */ #ifndef ISC_TASK_H #define ISC_TASK_H 1 @@ -125,6 +125,8 @@ typedef struct isc_taskmethods { unsigned int (*purgerange)(isc_task_t *task, void *sender, isc_eventtype_t first, isc_eventtype_t last, void *tag); + isc_result_t (*beginexclusive)(isc_task_t *task); + void (*endexclusive)(isc_task_t *task); } isc_taskmethods_t; /*% diff --git a/lib/isc/pthreads/mutex.c b/lib/isc/pthreads/mutex.c index b57d9eee..fa5a7013 100644 --- a/lib/isc/pthreads/mutex.c +++ b/lib/isc/pthreads/mutex.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2008, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: mutex.c,v 1.16 2008/04/04 23:47:01 tbox Exp $ */ +/* $Id: mutex.c,v 1.18 2011-01-04 23:47:14 tbox Exp $ */ /*! \file */ @@ -234,10 +234,13 @@ isc_mutex_init_errcheck(isc_mutex_t *mp) if (pthread_mutexattr_init(&attr) != 0) return (ISC_R_UNEXPECTED); - if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK) != 0) + if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK) != 0) { + pthread_mutexattr_destroy(&attr); return (ISC_R_UNEXPECTED); + } err = pthread_mutex_init(mp, &attr) != 0) + pthread_mutexattr_destroy(&attr); if (err == ENOMEM) return (ISC_R_NOMEMORY); return ((err == 0) ? ISC_R_SUCCESS : ISC_R_UNEXPECTED); diff --git a/lib/isc/task.c b/lib/isc/task.c index 49dca362..54a3051d 100644 --- a/lib/isc/task.c +++ b/lib/isc/task.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: task.c,v 1.114 2010/12/04 13:25:59 marka Exp $ */ +/* $Id: task.c,v 1.115 2010-12-22 05:19:01 marka Exp $ */ /*! \file * \author Principal Author: Bob Halley @@ -233,9 +233,7 @@ static struct isc__taskmethods { * The following are defined just for avoiding unused static functions. */ #ifndef BIND9 - void *purgeevent, *unsendrange, - *getname, *gettag, *getcurrenttime, *beginexclusive, - *endexclusive; + void *purgeevent, *unsendrange, *getname, *gettag, *getcurrenttime; #endif } taskmethods = { { @@ -249,14 +247,15 @@ static struct isc__taskmethods { isc__task_shutdown, isc__task_setname, isc__task_purge, - isc__task_purgerange + isc__task_purgerange, + isc__task_beginexclusive, + isc__task_endexclusive } #ifndef BIND9 , (void *)isc__task_purgeevent, (void *)isc__task_unsendrange, (void *)isc__task_getname, (void *)isc__task_gettag, - (void *)isc__task_getcurrenttime, (void *)isc__task_beginexclusive, - (void *)isc__task_endexclusive + (void *)isc__task_getcurrenttime #endif }; diff --git a/lib/isc/task_api.c b/lib/isc/task_api.c index 89065355..4e03db24 100644 --- a/lib/isc/task_api.c +++ b/lib/isc/task_api.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2010 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: task_api.c,v 1.5 2009/09/02 23:48:02 tbox Exp $ */ +/* $Id: task_api.c,v 1.7 2010-12-22 23:46:59 tbox Exp $ */ #include <config.h> @@ -187,6 +187,21 @@ isc_task_purge(isc_task_t *task, void *sender, isc_eventtype_t type, void *tag) return (task->methods->purgeevents(task, sender, type, tag)); } +isc_result_t +isc_task_beginexclusive(isc_task_t *task) { + REQUIRE(ISCAPI_TASK_VALID(task)); + + return (task->methods->beginexclusive(task)); +} + +void +isc_task_endexclusive(isc_task_t *task) { + REQUIRE(ISCAPI_TASK_VALID(task)); + + task->methods->endexclusive(task); +} + + /*% * This is necessary for libisc's internal timer implementation. Other * implementation might skip implementing this. diff --git a/lib/isc/unix/file.c b/lib/isc/unix/file.c index 4b1c58c7..25d856cc 100644 --- a/lib/isc/unix/file.c +++ b/lib/isc/unix/file.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -48,7 +48,7 @@ * SUCH DAMAGE. */ -/* $Id: file.c,v 1.55 2009/08/28 03:13:08 each Exp $ */ +/* $Id: file.c,v 1.57 2011-01-11 23:47:14 tbox Exp $ */ /*! \file */ @@ -243,16 +243,26 @@ isc_file_renameunique(const char *file, char *templet) { return (ISC_R_SUCCESS); } - isc_result_t isc_file_openunique(char *templet, FILE **fp) { + int mode = S_IWUSR|S_IRUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH; + return (isc_file_openuniquemode(templet, mode, fp)); +} + +isc_result_t +isc_file_openuniqueprivate(char *templet, FILE **fp) { + int mode = S_IWUSR|S_IRUSR; + return (isc_file_openuniquemode(templet, mode, fp)); +} + +isc_result_t +isc_file_openuniquemode(char *templet, int mode, FILE **fp) { int fd; FILE *f; isc_result_t result = ISC_R_SUCCESS; char *x; char *cp; isc_uint32_t which; - int mode; REQUIRE(templet != NULL); REQUIRE(fp != NULL && *fp == NULL); @@ -270,7 +280,6 @@ isc_file_openunique(char *templet, FILE **fp) { x = cp--; } - mode = S_IWUSR|S_IRUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH; while ((fd = open(templet, O_RDWR|O_CREAT|O_EXCL, mode)) == -1) { if (errno != EEXIST) diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 895d1a25..24eef9a0 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: socket.c,v 1.332 2010/12/03 22:05:19 each Exp $ */ +/* $Id: socket.c,v 1.333 2010-12-22 03:08:36 marka Exp $ */ /*! \file */ @@ -4995,10 +4995,17 @@ isc__socket_bind(isc_socket_t *sock0, isc_sockaddr_t *sockaddr, return (ISC_R_SUCCESS); } +/* + * Enable this only for specific OS versions, and only when they have repaired + * their problems with it. Until then, this is is broken and needs to be + * diabled by default. See RT22589 for details. + */ +#undef ENABLE_ACCEPTFILTER + ISC_SOCKETFUNC_SCOPE isc_result_t isc__socket_filter(isc_socket_t *sock0, const char *filter) { isc__socket_t *sock = (isc__socket_t *)sock0; -#ifdef SO_ACCEPTFILTER +#if defined(SO_ACCEPTFILTER) && defined(ENABLE_ACCEPTFILTER) char strbuf[ISC_STRERRORSIZE]; struct accept_filter_arg afa; #else @@ -5008,7 +5015,7 @@ isc__socket_filter(isc_socket_t *sock0, const char *filter) { REQUIRE(VALID_SOCKET(sock)); -#ifdef SO_ACCEPTFILTER +#if defined(SO_ACCEPTFILTER) && defined(ENABLE_ACCEPTFILTER) bzero(&afa, sizeof(afa)); strncpy(afa.af_name, filter, sizeof(afa.af_name)); if (setsockopt(sock->fd, SOL_SOCKET, SO_ACCEPTFILTER, diff --git a/lib/isc/win32/file.c b/lib/isc/win32/file.c index fabd5b6e..407788ac 100644 --- a/lib/isc/win32/file.c +++ b/lib/isc/win32/file.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007, 2009, 2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: file.c,v 1.35 2009/09/02 17:58:06 each Exp $ */ +/* $Id: file.c,v 1.39 2011-01-13 06:36:04 marka Exp $ */ #include <config.h> @@ -317,7 +317,19 @@ isc_file_renameunique(const char *file, char *templet) { } isc_result_t +isc_file_openuniqueprivate(char *templet, FILE **fp) { + int mode = _S_IREAD | _S_IWRITE; + return (isc_file_openuniquemode(templet, mode, fp)); +} + +isc_result_t isc_file_openunique(char *templet, FILE **fp) { + int mode = _S_IREAD | _S_IWRITE; + return (isc_file_openuniquemode(templet, mode, fp)); +} + +isc_result_t +isc_file_openuniquemode(char *templet, int mode, FILE **fp) { int fd; FILE *f; isc_result_t result = ISC_R_SUCCESS; @@ -333,6 +345,11 @@ isc_file_openunique(char *templet, FILE **fp) { if (fd == -1) result = isc__errno2result(errno); if (result == ISC_R_SUCCESS) { +#if 1 + UNUSED(mode); +#else + (void)fchmod(fd, mode); +#endif f = fdopen(fd, "w+"); if (f == NULL) { result = isc__errno2result(errno); diff --git a/lib/isc/win32/libisc.def b/lib/isc/win32/libisc.def index 1316ffe1..3ce0e3ac 100644 --- a/lib/isc/win32/libisc.def +++ b/lib/isc/win32/libisc.def @@ -219,6 +219,8 @@ isc_file_ischdiridempotent isc_file_iscurrentdir isc_file_mktemplate isc_file_openunique +isc_file_openuniquemode +isc_file_openuniqueprivate isc_file_progname isc_file_remove isc_file_rename @@ -382,6 +384,7 @@ isc_netaddr_fromin6 isc_netaddr_frompath isc_netaddr_fromsockaddr isc_netaddr_fromv4mapped +isc_netaddr_getzone isc_netaddr_ismulticast isc_netaddr_masktoprefixlen isc_netaddr_prefixok diff --git a/lib/isccc/win32/libisccc.dsp b/lib/isccc/win32/libisccc.dsp index e118b68f..b9118024 100644 --- a/lib/isccc/win32/libisccc.dsp +++ b/lib/isccc/win32/libisccc.dsp @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "libisccc_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../..../lib/dns/sec/openssl/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCC_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCC_EXPORTS" /YX /FD /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -70,7 +70,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "libisccc_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../..../lib/dns/sec/openssl/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCC_EXPORTS" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCC_EXPORTS" /FR /YX /FD /GZ /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
diff --git a/lib/isccc/win32/libisccc.mak b/lib/isccc/win32/libisccc.mak index 02e193b7..caa15c7c 100644 --- a/lib/isccc/win32/libisccc.mak +++ b/lib/isccc/win32/libisccc.mak @@ -143,7 +143,7 @@ CLEAN : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../..../lib/dns/sec/openssl/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCC_EXPORTS" /Fp"$(INTDIR)\libisccc.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCC_EXPORTS" /Fp"$(INTDIR)\libisccc.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\libisccc.bsc"
@@ -228,7 +228,7 @@ CLEAN : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../..../lib/dns/sec/openssl/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCC_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\libisccc.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "../../../../libxml2-2.7.3/include" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "_DEBUG" /D "WIN32" /D "__STDC__" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCC_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\libisccc.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\libisccc.bsc"
diff --git a/lib/isccfg/api b/lib/isccfg/api index 94575eb4..8fb91d63 100644 --- a/lib/isccfg/api +++ b/lib/isccfg/api @@ -1,3 +1,3 @@ -LIBINTERFACE = 80 +LIBINTERFACE = 81 LIBREVISION = 0 -LIBAGE = 0 +LIBAGE = 1 diff --git a/lib/isccfg/include/isccfg/grammar.h b/lib/isccfg/include/isccfg/grammar.h index 93ebe8de..afc95bc3 100644 --- a/lib/isccfg/include/isccfg/grammar.h +++ b/lib/isccfg/include/isccfg/grammar.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: grammar.h,v 1.22 2010/08/11 18:14:20 each Exp $ */ +/* $Id: grammar.h,v 1.24 2011-01-04 23:47:14 tbox Exp $ */ #ifndef ISCCFG_GRAMMAR_H #define ISCCFG_GRAMMAR_H 1 @@ -328,10 +328,16 @@ cfg_parse_rawport(cfg_parser_t *pctx, unsigned int flags, in_port_t *port); isc_result_t cfg_parse_sockaddr(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); +isc_result_t +cfg_parse_boolean(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); + void cfg_print_sockaddr(cfg_printer_t *pctx, const cfg_obj_t *obj); void +cfg_print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj); + +void cfg_doc_sockaddr(cfg_printer_t *pctx, const cfg_type_t *type); isc_result_t diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c index 260b615e..15bc3676 100644 --- a/lib/isccfg/namedconf.c +++ b/lib/isccfg/namedconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: namedconf.c,v 1.124 2010/12/08 02:46:17 marka Exp $ */ +/* $Id: namedconf.c,v 1.131 2011-01-13 01:59:28 marka Exp $ */ /*! \file */ @@ -313,7 +313,7 @@ doc_matchname(cfg_printer_t *pctx, const cfg_type_t *type) { static const char *matchtype_enums[] = { "name", "subdomain", "wildcard", "self", "selfsub", "selfwild", "krb5-self", "ms-self", "krb5-subdomain", "ms-subdomain", - "tcp-self", "6to4-self", "zonesub", NULL }; + "tcp-self", "6to4-self", "zonesub", "external", NULL }; static cfg_type_t cfg_type_matchtype = { "matchtype", parse_matchtype, cfg_print_ustring, @@ -593,7 +593,8 @@ static cfg_type_t cfg_type_forwardtype = { }; static const char *zonetype_enums[] = { - "master", "slave", "stub", "hint", "forward", "delegation-only", NULL }; + "master", "slave", "stub", "static-stub", "hint", "forward", + "delegation-only", NULL }; static cfg_type_t cfg_type_zonetype = { "zonetype", cfg_parse_enum, cfg_print_ustring, cfg_doc_enum, &cfg_rep_string, &zonetype_enums @@ -658,10 +659,60 @@ static cfg_type_t cfg_type_qstringornone = { }; /*% - * keyword hostname + * A boolean ("yes" or "no"), or the special keyword "auto". + * Used in the dnssec-validation option. */ +static void +print_auto(cfg_printer_t *pctx, const cfg_obj_t *obj) { + UNUSED(obj); + cfg_print_cstr(pctx, "auto"); +} + +static cfg_type_t cfg_type_auto = { + "auto", NULL, print_auto, NULL, &cfg_rep_void, NULL +}; + +static isc_result_t +parse_boolorauto(cfg_parser_t *pctx, const cfg_type_t *type, + cfg_obj_t **ret) +{ + isc_result_t result; + + CHECK(cfg_gettoken(pctx, CFG_LEXOPT_QSTRING)); + if (pctx->token.type == isc_tokentype_string && + strcasecmp(TOKEN_STRING(pctx), "auto") == 0) + return (cfg_create_obj(pctx, &cfg_type_auto, ret)); + cfg_ungettoken(pctx); + return (cfg_parse_boolean(pctx, type, ret)); + cleanup: + return (result); +} static void +print_boolorauto(cfg_printer_t *pctx, const cfg_obj_t *obj) { + if (obj->type->rep == &cfg_rep_void) + cfg_print_chars(pctx, "auto", 4); + else if (obj->value.boolean) + cfg_print_chars(pctx, "yes", 3); + else + cfg_print_chars(pctx, "no", 2); +} + +static void +doc_boolorauto(cfg_printer_t *pctx, const cfg_type_t *type) { + UNUSED(type); + cfg_print_cstr(pctx, "( yes | no | auto )"); +} + +static cfg_type_t cfg_type_boolorauto = { + "boolorauto", parse_boolorauto, print_boolorauto, + doc_boolorauto, NULL, NULL +}; + +/*% + * keyword hostname + */ +static void print_hostname(cfg_printer_t *pctx, const cfg_obj_t *obj) { UNUSED(obj); cfg_print_cstr(pctx, "hostname"); @@ -878,6 +929,7 @@ options_clauses[] = { { "tcp-listen-queue", &cfg_type_uint32, 0 }, { "tkey-dhkey", &cfg_type_tkey_dhkey, 0 }, { "tkey-gssapi-credential", &cfg_type_qstring, 0 }, + { "tkey-gssapi-keytab", &cfg_type_qstring, 0 }, { "tkey-domain", &cfg_type_qstring, 0 }, { "transfers-per-ns", &cfg_type_uint32, 0 }, { "transfers-in", &cfg_type_uint32, 0 }, @@ -891,7 +943,6 @@ options_clauses[] = { { NULL, NULL, 0 } }; - static cfg_type_t cfg_type_namelist = { "namelist", cfg_parse_bracketed_list, cfg_print_bracketed_list, cfg_doc_bracketed_list, &cfg_rep_list, &cfg_type_qstring }; @@ -962,6 +1013,120 @@ static cfg_type_t cfg_type_masterformat = { &cfg_rep_string, &masterformat_enums }; + + +/* + * response-policy { + * zone <string> [ policy (given|no-op|nxdomain|nodata|cname <domain> ) ]; + * }; + * + * this is a chimera of doc_optional_keyvalue() and cfg_doc_enum() + */ +static void +doc_rpz_policies(cfg_printer_t *pctx, const cfg_type_t *type) { + const keyword_type_t *kw; + const char * const *p; + + kw = type->of; + cfg_print_chars(pctx, "[ ", 2); + cfg_print_cstr(pctx, kw->name); + cfg_print_chars(pctx, " ", 1); + + cfg_print_chars(pctx, "( ", 2); + for (p = kw->type->of; *p != NULL; p++) { + cfg_print_cstr(pctx, *p); + if (p[1] != NULL) + cfg_print_chars(pctx, " | ", 3); + } +} + +/* + * print_qstring() from parser.c + */ +static void +print_rpz_cname(cfg_printer_t *pctx, const cfg_obj_t *obj) +{ + cfg_print_chars(pctx, "\"", 1); + cfg_print_ustring(pctx, obj); + cfg_print_chars(pctx, "\"", 1); +} + +static void +doc_rpz_cname(cfg_printer_t *pctx, const cfg_type_t *type) { + cfg_doc_terminal(pctx, type); + cfg_print_chars(pctx, " ) ]", 4); +} + +static isc_result_t +parse_rpz(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { + isc_result_t result; + cfg_obj_t *obj = NULL; + const cfg_tuplefielddef_t *fields = type->of; + + CHECK(cfg_create_tuple(pctx, type, &obj)); + CHECK(cfg_parse_obj(pctx, fields[0].type, &obj->value.tuple[0])); + CHECK(cfg_parse_obj(pctx, fields[1].type, &obj->value.tuple[1])); + /* + * parse cname domain only after "policy cname" + */ + if (cfg_obj_isvoid(obj->value.tuple[1]) || + strcasecmp("cname", cfg_obj_asstring(obj->value.tuple[1]))) { + CHECK(cfg_parse_void(pctx, NULL, &obj->value.tuple[2])); + } else { + CHECK(cfg_parse_obj(pctx, fields[2].type, &obj->value.tuple[2])); + } + + *ret = obj; + return (ISC_R_SUCCESS); + +cleanup: + CLEANUP_OBJ(obj); + return (result); +} + +static const char *rpz_policies[] = { + "given", "no-op", "nxdomain", "nodata", "cname", NULL +}; +static cfg_type_t cfg_type_rpz_policylist = { + "policies", cfg_parse_enum, cfg_print_ustring, cfg_doc_enum, + &cfg_rep_string, &rpz_policies +}; +static keyword_type_t rpz_policies_kw = { + "policy", &cfg_type_rpz_policylist +}; +static cfg_type_t cfg_type_rpz_policy = { + "optional_policy", parse_optional_keyvalue, print_keyvalue, + doc_rpz_policies, &cfg_rep_string, &rpz_policies_kw +}; +static cfg_type_t cfg_type_cname = { + "domain", cfg_parse_astring, print_rpz_cname, doc_rpz_cname, + &cfg_rep_string, NULL +}; +static cfg_tuplefielddef_t rpzone_fields[] = { + { "name", &cfg_type_astring, 0 }, + { "policy", &cfg_type_rpz_policy, 0 }, + { "cname", &cfg_type_cname, 0 }, + { NULL, NULL, 0 } +}; +static cfg_type_t cfg_type_rpzone = { + "rpzone", parse_rpz, cfg_print_tuple, cfg_doc_tuple, + &cfg_rep_tuple, rpzone_fields +}; +static cfg_clausedef_t rpz_clauses[] = { + { "zone", &cfg_type_rpzone, CFG_CLAUSEFLAG_MULTI }, + { NULL, NULL, 0 } +}; +static cfg_clausedef_t *rpz_clausesets[] = { + rpz_clauses, + NULL +}; +static cfg_type_t cfg_type_rpz = { + "rpz", cfg_parse_map, cfg_print_map, cfg_doc_map, + &cfg_rep_map, rpz_clausesets +}; + + + /*% * dnssec-lookaside */ @@ -1039,12 +1204,14 @@ view_clauses[] = { CFG_CLAUSEFLAG_MULTI }, { "disable-empty-zone", &cfg_type_astring, CFG_CLAUSEFLAG_MULTI }, { "dns64", &cfg_type_dns64, CFG_CLAUSEFLAG_MULTI }, + { "dns64-server", &cfg_type_astring, 0 }, + { "dns64-contact", &cfg_type_astring, 0 }, { "dnssec-accept-expired", &cfg_type_boolean, 0 }, { "dnssec-enable", &cfg_type_boolean, 0 }, { "dnssec-lookaside", &cfg_type_lookaside, CFG_CLAUSEFLAG_MULTI }, { "dnssec-must-be-secure", &cfg_type_mustbesecure, CFG_CLAUSEFLAG_MULTI }, - { "dnssec-validation", &cfg_type_boolean, 0 }, + { "dnssec-validation", &cfg_type_boolorauto, 0 }, { "dual-stack-servers", &cfg_type_nameportiplist, 0 }, { "edns-udp-size", &cfg_type_uint32, 0 }, { "empty-contact", &cfg_type_astring, 0 }, @@ -1093,6 +1260,7 @@ view_clauses[] = { { "filter-aaaa-on-v4", &cfg_type_v4_aaaa, CFG_CLAUSEFLAG_NOTCONFIGURED }, #endif + { "response-policy", &cfg_type_rpz, 0 }, { NULL, NULL, 0 } }; @@ -1233,6 +1401,8 @@ zone_only_clauses[] = { { "check-names", &cfg_type_checkmode, 0 }, { "ixfr-from-differences", &cfg_type_boolean, 0 }, { "auto-dnssec", &cfg_type_autodnssec, 0 }, + { "server-addresses", &cfg_type_bracketed_sockaddrlist, 0 }, + { "server-names", &cfg_type_namelist, 0 }, { NULL, NULL, 0 } }; diff --git a/lib/isccfg/parser.c b/lib/isccfg/parser.c index d443cd71..87ad391a 100644 --- a/lib/isccfg/parser.c +++ b/lib/isccfg/parser.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: parser.c,v 1.137 2010/11/16 05:38:31 marka Exp $ */ +/* $Id: parser.c,v 1.139 2011-01-04 23:47:14 tbox Exp $ */ /*! \file */ @@ -868,8 +868,8 @@ cfg_obj_asboolean(const cfg_obj_t *obj) { return (obj->value.boolean); } -static isc_result_t -parse_boolean(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) +isc_result_t +cfg_parse_boolean(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { isc_result_t result; isc_boolean_t value; @@ -908,8 +908,8 @@ parse_boolean(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) return (result); } -static void -print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj) { +void +cfg_print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj) { if (obj->value.boolean) cfg_print_chars(pctx, "yes", 3); else @@ -917,7 +917,7 @@ print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj) { } cfg_type_t cfg_type_boolean = { - "boolean", parse_boolean, print_boolean, cfg_doc_terminal, + "boolean", cfg_parse_boolean, cfg_print_boolean, cfg_doc_terminal, &cfg_rep_boolean, NULL }; diff --git a/lib/isccfg/win32/libisccfg.dsp b/lib/isccfg/win32/libisccfg.dsp index 967e1ac5..0671fa9a 100644 --- a/lib/isccfg/win32/libisccfg.dsp +++ b/lib/isccfg/win32/libisccfg.dsp @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "libisccfg_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../..../lib/dns/sec/openssl/include" /I "../../../../libxml2-2.7.3/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCFG_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../../libxml2-2.7.3/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCFG_EXPORTS" /YX /FD /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -70,7 +70,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "libisccfg_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../..../lib/dns/sec/openssl/include" /I "../../../../libxml2-2.7.3/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBISCCFG_EXPORTS" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../../libxml2-2.7.3/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBISCCFG_EXPORTS" /FR /YX /FD /GZ /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
diff --git a/lib/isccfg/win32/libisccfg.mak b/lib/isccfg/win32/libisccfg.mak index 1713bfd4..cf184dec 100644 --- a/lib/isccfg/win32/libisccfg.mak +++ b/lib/isccfg/win32/libisccfg.mak @@ -139,7 +139,7 @@ CLEAN : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../..../lib/dns/sec/openssl/include" /I "../../../../libxml2-2.7.3/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCFG_EXPORTS" /Fp"$(INTDIR)\libisccfg.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../../libxml2-2.7.3/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCFG_EXPORTS" /Fp"$(INTDIR)\libisccfg.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\libisccfg.bsc"
@@ -213,7 +213,7 @@ CLEAN : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../..../lib/dns/sec/openssl/include" /I "../../../../libxml2-2.7.3/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBISCCFG_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\libisccfg.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../../libxml2-2.7.3/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBISCCFG_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\libisccfg.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\libisccfg.bsc"
diff --git a/lib/lwres/win32/liblwres.dsp b/lib/lwres/win32/liblwres.dsp index 4d256945..613f4d92 100644 --- a/lib/lwres/win32/liblwres.dsp +++ b/lib/lwres/win32/liblwres.dsp @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "liblwres_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../lib/lwres/win32/include/lwres" /I "include" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../..../lib/dns/sec/openssl/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBLWRES_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "./" /I "../../../lib/lwres/win32/include/lwres" /I "include" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBLWRES_EXPORTS" /YX /FD /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -70,7 +70,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "liblwres_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../lib/lwres/win32/include/lwres" /I "include" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../..../lib/dns/sec/openssl/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBLWRES_EXPORTS" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../lib/lwres/win32/include/lwres" /I "include" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBLWRES_EXPORTS" /FR /YX /FD /GZ /c
# SUBTRACT CPP /X
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
diff --git a/lib/lwres/win32/liblwres.mak b/lib/lwres/win32/liblwres.mak index aade3fd7..eb385293 100644 --- a/lib/lwres/win32/liblwres.mak +++ b/lib/lwres/win32/liblwres.mak @@ -144,7 +144,7 @@ CLEAN : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../lib/lwres/win32/include/lwres" /I "include" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../..../lib/dns/sec/openssl/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBLWRES_EXPORTS" /Fp"$(INTDIR)\liblwres.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../lib/lwres/win32/include/lwres" /I "include" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBLWRES_EXPORTS" /Fp"$(INTDIR)\liblwres.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\liblwres.bsc"
@@ -253,7 +253,7 @@ CLEAN : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../lib/lwres/win32/include/lwres" /I "include" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /I "../..../lib/dns/sec/openssl/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBLWRES_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\liblwres.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../lib/lwres/win32/include/lwres" /I "include" /I "../include" /I "../../../" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../../../lib/isc/include" /I "../../../lib/isc/noatomic/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBLWRES_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\liblwres.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\liblwres.bsc"
diff --git a/lib/tests/t_api.c b/lib/tests/t_api.c index 9782830e..bf5451c1 100644 --- a/lib/tests/t_api.c +++ b/lib/tests/t_api.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: t_api.c,v 1.67 2010/06/08 23:50:24 tbox Exp $ */ +/* $Id: t_api.c,v 1.68 2010-12-21 04:20:23 marka Exp $ */ /*! \file */ @@ -243,15 +243,6 @@ main(int argc, char **argv) { sa.sa_flags = 0; sigfillset(&sa.sa_mask); -#ifdef SIGCHLD - /* - * This is mostly here for NetBSD's pthread implementation, until - * people catch up to the latest unproven-pthread package. - */ - sa.sa_handler = SIG_DFL; - (void)sigaction(SIGCHLD, &sa, NULL); -#endif - sa.sa_handler = t_sighandler; (void)sigaction(SIGINT, &sa, NULL); (void)sigaction(SIGALRM, &sa, NULL); @@ -1,4 +1,4 @@ -# $Id: version,v 1.52 2010/06/18 02:05:02 marka Exp $ +# $Id: version,v 1.53 2011-01-13 04:45:16 marka Exp $ # # This file must follow /bin/sh rules. It is imported directly via # configure. @@ -6,5 +6,5 @@ MAJORVER=9 MINORVER=8 PATCHVER=0 -RELEASETYPE=a +RELEASETYPE=b RELEASEVER=1 diff --git a/win32utils/updateopenssl.pl b/win32utils/updateopenssl.pl index a05963c8..63a70a81 100644 --- a/win32utils/updateopenssl.pl +++ b/win32utils/updateopenssl.pl @@ -14,7 +14,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: updateopenssl.pl,v 1.13 2010/05/18 06:47:46 tbox Exp $ +# $Id: updateopenssl.pl,v 1.14 2010-12-22 04:05:41 marka Exp $ # updateopenssl.pl # This script locates the latest version of OpenSSL in the grandparent @@ -27,7 +27,9 @@ $path = "..\\..\\"; # openssl directory @filelist = ("SetupLibs.bat", "../lib/dns/win32/libdns.mak", - "../lib/dns/win32/libdns.dsp"); + "../lib/dns/win32/libdns.dsp", + "../bin/named/win32/named.mak", + "../bin/named/win32/named.dsp"); # Locate the openssl directory $substr = getdirectory(); |
