diff options
author | Internet Software Consortium, Inc <@isc.org> | 2014-02-11 09:00:42 -0700 |
---|---|---|
committer | Internet Software Consortium, Inc <@isc.org> | 2014-02-11 09:00:42 -0700 |
commit | 8af21b710f34092dcd08abdc13e7971553b616d2 (patch) | |
tree | f88f42a2ea6576f512958360ee049636e18046b0 | |
parent | 892b23e1710e6770b12c3aa952eb2cdc9ab4bc1b (diff) | |
download | bind9-8af21b710f34092dcd08abdc13e7971553b616d2.tar.gz |
9.9.5rc1
205 files changed, 4479 insertions, 2898 deletions
@@ -1,3 +1,46 @@ + --- 9.9.5rc1 released --- + +3701. [func] named-checkconf can now obscure shared secrets + when printing by specifying '-x'. [RT #34465] + +3699. [bug] Improvements to statistics channel XSL stylesheet: + the stylesheet can now be cached by the browser; + section headers are omitted from the stats display + when there is no data in those sections to be + displayed; counters are now right-justified for + easier readability. (Only available with + configure --enable-newstats.) [RT #35117] + +3698. [cleanup] Replaced all uses of memcpy() with memmove(). + [RT #35120] + +3697. [bug] Handle "." as a search list element when IDN support + is enabled. [RT #35133] + +3696. [bug] dig failed to handle AXFR style IXFR responses which + span multiple messages. [RT #35137] + +3695. [bug] Address a possible race in dispatch.c. [RT #35107] + +3694. [bug] Warn when a key-directory is configured for a zone, + but does not exist or is not a directory. [RT #35108] + +3693. [security] memcpy was incorrectly called with overlapping + ranges resulting in malformed names being generated + on some platforms. This could cause INSIST failures + when serving NSEC3 signed zones. [RT #35120] + +3692. [bug] Two calls to dns_db_getoriginnode were fatal if there + was no data at the node. [RT #35080] + +3690. [bug] Iterative responses could be missed when the source + port for an upstream query was the same as the + listener port (53). [RT #34925] + +3689. [bug] Fixed a bug causing an insecure delegation from one + static-stub zone to another to fail with a broken + trust chain. [RT #35081] + --- 9.9.5b1 released --- 3688. [bug] loadnode could return a freed node on out of memory. @@ -1,4 +1,4 @@ -Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") +Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") Copyright (C) 1996-2003 Internet Software Consortium. Permission to use, copy, modify, and/or distribute this software for any diff --git a/Makefile.in b/Makefile.in index 5bde3dfd..2c5985f8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2002 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -90,5 +90,8 @@ FAQ: FAQ.xml LC_ALL=C ${W3M} -T text/html -dump -cols 72 >$@.tmp mv $@.tmp $@ +unit:: + sh ${top_srcdir}/unit/unittest.sh + clean:: rm -f FAQ.tmp @@ -63,6 +63,10 @@ BIND 9.9.5 - When re-signing a zone, the new "dnssec-signzone -Q" option drops signatures from keys that are still published but are no longer active. + - "named-checkconf -px" will print the contents of configuration + files with the shared secrets obscured, making it easier to + share configuration (e.g. when submitting a bug report) + without revealing private information. BIND 9.9.4 diff --git a/bin/check/named-checkconf.8 b/bin/check/named-checkconf.8 index 67a8f4a3..909184ef 100644 --- a/bin/check/named-checkconf.8 +++ b/bin/check/named-checkconf.8 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") +.\" Copyright (C) 2004, 2005, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") .\" Copyright (C) 2000-2002 Internet Software Consortium. .\" .\" Permission to use, copy, modify, and/or distribute this software for any @@ -33,7 +33,7 @@ named\-checkconf \- named configuration file syntax checking tool .SH "SYNOPSIS" .HP 16 -\fBnamed\-checkconf\fR [\fB\-h\fR] [\fB\-v\fR] [\fB\-j\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] {filename} [\fB\-p\fR] [\fB\-z\fR] +\fBnamed\-checkconf\fR [\fB\-h\fR] [\fB\-v\fR] [\fB\-j\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] {filename} [\fB\-p\fR] [\fB\-x\fR] [\fB\-z\fR] .SH "DESCRIPTION" .PP \fBnamed\-checkconf\fR @@ -84,6 +84,14 @@ Print out the and included files in canonical form if no errors were detected. .RE .PP +\-x +.RS 4 +When printing the configuration files in canonical form, obscure shared secrets by replacing them with strings of question marks ('?'). This allows the contents of +\fInamed.conf\fR +and related files to be shared \(em for example, when submitting bug reports \(em without compromising private data. This option cannot be used without +\fB\-p\fR. +.RE +.PP \-z .RS 4 Perform a test load of all master zones found in @@ -113,7 +121,7 @@ BIND 9 Administrator Reference Manual. .PP Internet Systems Consortium .SH "COPYRIGHT" -Copyright \(co 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") +Copyright \(co 2004, 2005, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") .br Copyright \(co 2000\-2002 Internet Software Consortium. .br diff --git a/bin/check/named-checkconf.c b/bin/check/named-checkconf.c index 6f52a662..fd3795a5 100644 --- a/bin/check/named-checkconf.c +++ b/bin/check/named-checkconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -482,10 +482,11 @@ main(int argc, char **argv) { isc_entropy_t *ectx = NULL; isc_boolean_t load_zones = ISC_FALSE; isc_boolean_t print = ISC_FALSE; + unsigned int flags = 0; isc_commandline_errprint = ISC_FALSE; - while ((c = isc_commandline_parse(argc, argv, "dhjt:pvz")) != EOF) { + while ((c = isc_commandline_parse(argc, argv, "dhjt:pvxz")) != EOF) { switch (c) { case 'd': debug++; @@ -512,6 +513,10 @@ main(int argc, char **argv) { printf(VERSION "\n"); exit(0); + case 'x': + flags |= CFG_PRINTER_XKEY; + break; + case 'z': load_zones = ISC_TRUE; docheckmx = ISC_FALSE; @@ -534,6 +539,11 @@ main(int argc, char **argv) { } } + if (((flags & CFG_PRINTER_XKEY) != 0) && !print) { + fprintf(stderr, "%s: -x cannot be used without -p\n", program); + exit(1); + } + if (isc_commandline_index + 1 < argc) usage(); if (argv[isc_commandline_index] != NULL) @@ -574,7 +584,7 @@ main(int argc, char **argv) { } if (print && exit_status == 0) - cfg_print(config, output, NULL); + cfg_printx(config, flags, output, NULL); cfg_obj_destroy(parser, &config); cfg_parser_destroy(&parser); diff --git a/bin/check/named-checkconf.docbook b/bin/check/named-checkconf.docbook index 9535e284..485dc42a 100644 --- a/bin/check/named-checkconf.docbook +++ b/bin/check/named-checkconf.docbook @@ -2,7 +2,7 @@ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [<!ENTITY mdash "—">]> <!-- - - Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004, 2005, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2002 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -36,6 +36,7 @@ <year>2005</year> <year>2007</year> <year>2009</year> + <year>2014</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> <copyright> @@ -60,6 +61,7 @@ <arg><option>-t <replaceable class="parameter">directory</replaceable></option></arg> <arg choice="req">filename</arg> <arg><option>-p</option></arg> + <arg><option>-x</option></arg> <arg><option>-z</option></arg> </cmdsynopsis> </refsynopsisdiv> @@ -130,6 +132,21 @@ </varlistentry> <varlistentry> + <term>-x</term> + <listitem> + <para> + When printing the configuration files in canonical + form, obscure shared secrets by replacing them with + strings of question marks ('?'). This allows the + contents of <filename>named.conf</filename> and related + files to be shared — for example, when submitting + bug reports — without compromising private data. + This option cannot be used without <option>-p</option>. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term>-z</term> <listitem> <para> diff --git a/bin/check/named-checkconf.html b/bin/check/named-checkconf.html index aa80c7cb..1c5ebc12 100644 --- a/bin/check/named-checkconf.html +++ b/bin/check/named-checkconf.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004, 2005, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") - Copyright (C) 2000-2002 Internet Software Consortium. - - Permission to use, copy, modify, and/or distribute this software for any @@ -29,10 +29,10 @@ </div> <div class="refsynopsisdiv"> <h2>Synopsis</h2> -<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 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">-x</code>] [<code class="option">-z</code>]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543396"></a><h2>DESCRIPTION</h2> +<a name="id2543403"></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 @@ -52,7 +52,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2543445"></a><h2>OPTIONS</h2> +<a name="id2543452"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-h</span></dt> <dd><p> @@ -74,6 +74,16 @@ Print out the <code class="filename">named.conf</code> and included files in canonical form if no errors were detected. </p></dd> +<dt><span class="term">-x</span></dt> +<dd><p> + When printing the configuration files in canonical + form, obscure shared secrets by replacing them with + strings of question marks ('?'). This allows the + contents of <code class="filename">named.conf</code> and related + files to be shared — for example, when submitting + bug reports — without compromising private data. + This option cannot be used without <code class="option">-p</code>. + </p></dd> <dt><span class="term">-z</span></dt> <dd><p> Perform a test load of all master zones found in @@ -91,21 +101,21 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2543569"></a><h2>RETURN VALUES</h2> +<a name="id2543596"></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="id2543580"></a><h2>SEE ALSO</h2> +<a name="id2543608"></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="id2543610"></a><h2>AUTHOR</h2> +<a name="id2543638"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/bin/confgen/ddns-confgen.c b/bin/confgen/ddns-confgen.c index d655145e..e2a86283 100644 --- a/bin/confgen/ddns-confgen.c +++ b/bin/confgen/ddns-confgen.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2011, 2014 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 @@ -101,7 +101,7 @@ main(int argc, char **argv) { result = isc_file_progname(*argv, program, sizeof(program)); if (result != ISC_R_SUCCESS) - memcpy(program, "ddns-confgen", 13); + memmove(program, "ddns-confgen", 13); progname = program; isc_commandline_errprint = ISC_FALSE; diff --git a/bin/confgen/rndc-confgen.c b/bin/confgen/rndc-confgen.c index e2ac0792..2f65f4b0 100644 --- a/bin/confgen/rndc-confgen.c +++ b/bin/confgen/rndc-confgen.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2011, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2011, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -120,7 +120,7 @@ main(int argc, char **argv) { result = isc_file_progname(*argv, program, sizeof(program)); if (result != ISC_R_SUCCESS) - memcpy(program, "rndc-confgen", 13); + memmove(program, "rndc-confgen", 13); progname = program; keyname = DEFAULT_KEYNAME; diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index b7d231fd..56d763c2 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -448,7 +448,7 @@ static isc_result_t append(const char *text, int len, char **p, char *end) { if (len > end - *p) return (ISC_R_NOSPACE); - memcpy(*p, text, len); + memmove(*p, text, len); *p += len; return (ISC_R_SUCCESS); } @@ -2330,6 +2330,7 @@ setup_lookup(dig_lookup_t *lookup) { query->rr_count = 0; query->msg_count = 0; query->byte_count = 0; + query->ixfr_axfr = ISC_FALSE; ISC_LIST_INIT(query->recvlist); ISC_LIST_INIT(query->lengthlist); query->sock = NULL; @@ -2982,6 +2983,9 @@ check_for_more_data(dig_query_t *query, dns_message_t *msg, isc_boolean_t ixfr = query->lookup->rdtype == dns_rdatatype_ixfr; isc_boolean_t axfr = query->lookup->rdtype == dns_rdatatype_axfr; + if (ixfr) + axfr = query->ixfr_axfr; + debug("check_for_more_data()"); /* @@ -3030,7 +3034,7 @@ check_for_more_data(dig_query_t *query, dns_message_t *msg, query->second_rr_rcvd = ISC_TRUE; query->second_rr_serial = 0; debug("got the second rr as nonsoa"); - axfr = ISC_TRUE; + axfr = query->ixfr_axfr = ISC_TRUE; goto next_rdata; } @@ -3941,7 +3945,7 @@ output_filter(isc_buffer_t *buffer, unsigned int used_org, fromlen = isc_buffer_usedlength(buffer) - used_org; if (fromlen >= MAXDLEN) return (ISC_R_SUCCESS); - memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen); + memmove(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen); end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; if (absolute && !end_with_dot) { fromlen++; @@ -3970,7 +3974,7 @@ output_filter(isc_buffer_t *buffer, unsigned int used_org, return (ISC_R_NOSPACE); isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org); - memcpy(isc_buffer_used(buffer), tmp1, tolen); + memmove(isc_buffer_used(buffer), tmp1, tolen); isc_buffer_add(buffer, (unsigned int)tolen); return (ISC_R_SUCCESS); @@ -3990,7 +3994,8 @@ append_textname(char *name, const char *origin, size_t namesize) { if (namelen + 1 + originlen >= namesize) return idn_buffer_overflow; - name[namelen++] = '.'; + if (*origin != '.') + name[namelen++] = '.'; (void)strcpy(name + namelen, origin); return idn_success; } diff --git a/bin/dig/include/dig/dig.h b/bin/dig/include/dig/dig.h index 00466391..0150d11d 100644 --- a/bin/dig/include/dig/dig.h +++ b/bin/dig/include/dig/dig.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -202,6 +202,7 @@ struct dig_query { isc_uint32_t second_rr_serial; isc_uint32_t msg_count; isc_uint32_t rr_count; + isc_boolean_t ixfr_axfr; char *servname; char *userarg; isc_bufferlist_t sendlist, diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c index fb347e3c..0a13d9fa 100644 --- a/bin/dnssec/dnssec-signzone.c +++ b/bin/dnssec/dnssec-signzone.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2014 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 @@ -730,7 +730,7 @@ hashlist_add(hashlist_t *l, const unsigned char *hash, size_t len) fatal("unable to grow hashlist: out of memory"); } memset(l->hashbuf + l->entries * l->length, 0, l->length); - memcpy(l->hashbuf + l->entries * l->length, hash, len); + memmove(l->hashbuf + l->entries * l->length, hash, len); l->entries++; } @@ -2668,7 +2668,7 @@ set_nsec3params(isc_boolean_t update_chain, isc_boolean_t set_salt, "Use -u to update it."); } else if (!set_salt) { salt_length = orig_saltlen; - memcpy(saltbuf, orig_salt, orig_saltlen); + memmove(saltbuf, orig_salt, orig_saltlen); salt = saltbuf; } diff --git a/bin/dnssec/dnssectool.c b/bin/dnssec/dnssectool.c index 5f5f7d88..74698e1b 100644 --- a/bin/dnssec/dnssectool.c +++ b/bin/dnssec/dnssectool.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009-2014 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 @@ -725,11 +725,11 @@ record_nsec3(const unsigned char *rawhash, const dns_rdata_nsec3_t *nsec3, element->next_length = nsec3->next_length; element->iterations = nsec3->iterations; cp = (unsigned char *)(element + 1); - memcpy(cp, nsec3->salt, nsec3->salt_length); + memmove(cp, nsec3->salt, nsec3->salt_length); cp += nsec3->salt_length; - memcpy(cp, rawhash, nsec3->next_length); + memmove(cp, rawhash, nsec3->next_length); cp += nsec3->next_length; - memcpy(cp, nsec3->next, nsec3->next_length); + memmove(cp, nsec3->next, nsec3->next_length); result = isc_heap_insert(chains, element); if (result != ISC_R_SUCCESS) { fprintf(stderr, "isc_heap_insert failed: %s\n", diff --git a/bin/named/bind9.ver3.xsl b/bin/named/bind9.ver3.xsl index 22e5c45f..699bcb48 100644 --- a/bin/named/bind9.ver3.xsl +++ b/bin/named/bind9.ver3.xsl @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - - Copyright (C) 2012, 2013 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2012-2014 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 @@ -20,60 +20,61 @@ <!-- %Id: bind9.xsl,v 1.21 2009/01/27 23:47:54 tbox Exp % --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0"> <xsl:output method="html" indent="yes" version="4.0"/> - <xsl:template match="statistics[@version="3.0"]"> + <xsl:template match="statistics[@version="3.3"]"> <html> <head> <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> <!-- Non Mozilla specific markup --> <script type="text/javascript" src="https://www.google.com/jsapi"/> <script type="text/javascript"> - + google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(loadGraphs); var graphs=[]; - - function drawChart(chart_title,target,data) { + + function drawChart(chart_title,target,style,data) { var data = google.visualization.arrayToDataTable(data); var options = { title: chart_title }; - - var chart = new google.visualization.BarChart(document.getElementById(target)); - chart.draw(data, options); + + var chart; + if (style == "barchart") { + chart = new google.visualization.BarChart(document.getElementById(target)); + chart.draw(data, options); + } else if (style == "piechart") { + chart = new google.visualization.PieChart(document.getElementById(target)); + chart.draw(data, options); + } } - + function loadGraphs(){ - //alert("here we are!"); var g; - - // Server Incoming query Types + while(g = graphs.shift()){ // alert("going for: " + g.target); if(g.data.length > 1){ - drawChart(g.title,g.target,g.data); + drawChart(g.title,g.target,g.style,g.data); } } } - - // Server Incoming Queries Types - graphs.push({ - 'title' : "Server Incoming Query Types", - 'target': 'chart_incoming_qtypes', - 'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type="qtype"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] - }); - - - // Server Incoming Requests - graphs.push({ - 'title' : "Server Incoming Requests", - 'target': 'chart_incoming_requests', - 'data': [['Requests','Counter'],<xsl:for-each select="server/counters[@type="opcode"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]}); - - - - + + // Server Incoming Query Types + graphs.push({ + 'title' : "Server Incoming Query Types", + 'target': 'chart_incoming_qtypes', + 'style': 'barchart', + 'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type="qtype"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] + }); + + // Server Incoming Requests by opcode + graphs.push({ + 'title' : "Server Incoming Requests by DNS Opcode", + 'target': 'chart_incoming_opcodes', + 'style': 'barchart', + 'data': [['Opcode','Counter'],<xsl:for-each select="server/counters[@type="opcode"]/counter[. > 0 or substring(@name,1,3) != 'RES']">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>]}); </script> </xsl:if> <style type="text/css"> @@ -83,15 +84,15 @@ color: #000000; font-size: 10pt; } - + .odd{ background-color: #f0f0f0; } - + .even{ background-color: #ffffff; } - + p.footer{ font-style:italic; color: grey; @@ -106,21 +107,101 @@ border: 1px solid grey; width: 500px; } - table.counters th { + text-align: right; + border: 1px solid grey; + width: 150px; + } + table.counters td { + text-align: right; + font-family: monospace; + } + table.counters tr:hover{ + background-color: #99ddff; + } + + table.info { + border: 1px solid grey; + width: 500px; + } + table.info th { text-align: center; border: 1px solid grey; - width: 120px; - } - table.counters td{ - text-align:center; - - } - - table.counters tr:hover{ + width: 150px; + } + table.info td { + text-align: center; + } + table.info tr:hover{ background-color: #99ddff; - } - + } + + table.tasks { + border: 1px solid grey; + width: 500px; + } + table.tasks th { + text-align: center; + border: 1px solid grey; + width: 150px; + } + table.tasks td { + text-align: right; + font-family: monospace; + } + table.tasks td:nth-child(2) { + text-align: center; + } + table.tasks td:nth-child(4) { + text-align: center; + } + table.tasks tr:hover{ + background-color: #99ddff; + } + + table.netstat { + border: 1px solid grey; + width: 500px; + } + table.netstat th { + text-align: center; + border: 1px solid grey; + width: 150px; + } + table.netstat td { + text-align: center; + } + table.netstat td:nth-child(4) { + text-align: right; + font-family: monospace; + } + table.netstat td:nth-child(7) { + text-align: left; + } + table.netstat tr:hover{ + background-color: #99ddff; + } + + table.mctx { + border: 1px solid grey; + width: 500px; + } + table.mctx th { + text-align: center; + border: 1px solid grey; + } + table.mctx td { + text-align: right; + font-family: monospace; + } + table.mctx td:nth-child(-n+2) { + text-align: left; + width: 100px; + } + table.mctx tr:hover{ + background-color: #99ddff; + } + .totals { background-color: rgb(1,169,206); color: #ffffff; @@ -160,20 +241,18 @@ width:500px; text-align:center; } - + h3 { color: #444444; font-size: 12pt; width:500px; text-align:center; - } h4 { color: rgb(1,169,206); font-size: 10pt; width:500px; text-align:center; - } .pie { @@ -190,7 +269,7 @@ </div> <hr/> <h2>Server Times</h2> - <table class="counters"> + <table class="info"> <tr> <th>Boot time:</th> <td> @@ -198,97 +277,142 @@ </td> </tr> <tr> - <th>Sample time:</th> + <th>Current time:</th> <td> <xsl:value-of select="server/current-time"/> </td> </tr> </table> <br/> - <h2>Incoming Requests</h2> - <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> - <!-- Non Mozilla specific markup --> - <div class="pie" id="chart_incoming_requests">[no incoming requests]</div> - </xsl:if> - <table class="counters"> - <xsl:for-each select="server/counters[@type="opcode"]/counter"> - <xsl:sort select="." data-type="number" order="descending"/> + <xsl:if test="server/counters[@type="opcode"]/counter[. > 0]"> + <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> + <h2>Incoming Requests by DNS Opcode</h2> + <!-- Non Mozilla specific markup --> + <div class="pie" id="chart_incoming_opcodes"> + [cannot display chart] + </div> + </xsl:if> + <table class="counters"> + <xsl:for-each select="server/counters[@type="opcode"]/counter[. > 0 or substring(@name,1,3) != 'RES']"> + <xsl:sort select="." data-type="number" order="descending"/> + <tr> + <th> + <xsl:value-of select="@name"/> + </th> + <td> + <xsl:value-of select="."/> + </td> + </tr> + </xsl:for-each> <tr> - <th> - <xsl:value-of select="@name"/> - </th> - <td> - <xsl:value-of select="."/> + <th class="totals">Total:</th> + <td class="totals"> + <xsl:value-of select="sum(server/counters[@type="opcode"]/counter)"/> </td> </tr> - </xsl:for-each> - <tr> - <th class="totals">Total:</th> - <td class="totals"> - <xsl:value-of select="sum(server/counters[@type="opcode"]/counter)"/> - </td> - </tr> - </table> - <br/> - <h3>Incoming Queries by Type</h3> - <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> - <!-- Non Mozilla specific markup --> - <div class="pie" id="chart_incoming_qtypes">[no incoming queries]</div> + </table> + <br/> </xsl:if> - <table class="counters"> - <xsl:for-each select="server/counters[@type="qtype"]/counter"> - <xsl:sort select="." data-type="number" order="descending"/> - <xsl:variable name="css-class"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class}"> - <th> - <xsl:value-of select="@name"/> - </th> - <td> - <xsl:value-of select="."/> + <xsl:if test="server/counters[@type="qtype"]/counter"> + <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> + <!-- Non Mozilla specific markup --> + <h3>Incoming Queries by Query Type</h3> + <div class="pie" id="chart_incoming_qtypes"> + [cannot display chart] + </div> + </xsl:if> + <table class="counters"> + <xsl:for-each select="server/counters[@type="qtype"]/counter"> + <xsl:sort select="." data-type="number" order="descending"/> + <xsl:variable name="css-class"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class}"> + <th> + <xsl:value-of select="@name"/> + </th> + <td> + <xsl:value-of select="."/> + </td> + </tr> + </xsl:for-each> + <tr> + <th class="totals">Total:</th> + <td class="totals"> + <xsl:value-of select="sum(server/counters[@type="qtype"]/counter)"/> </td> </tr> + </table> + <br/> + </xsl:if> + <xsl:if test="views/view[count(counters[@type="resqtype"]/counter) > 0]"> + <h2>Outgoing Queries per view</h2> + <xsl:for-each select="views/view[count(counters[@type="resqtype"]/counter) > 0]"> + <h3>View <xsl:value-of select="@name"/></h3> + <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> + <!-- Non Mozilla specific markup --> + <script type="text/javascript"> + graphs.push({ + 'title': "Outgoing Queries for view: <xsl:value-of select="@name"/>", + 'target': 'chart_outgoing_queries_view_<xsl:value-of select="@name"/>', + 'style': 'barchart', + 'data': [['Type','Counter'],<xsl:for-each select="counters[@type="resqtype"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] + }); + </script> + <xsl:variable name="target"> + <xsl:value-of select="@name"/> + </xsl:variable> + <div class="pie" id="chart_outgoing_queries_view_{$target}">[no data to display]</div> + </xsl:if> + <table class="counters"> + <xsl:for-each select="counters[@type="resqtype"]/counter"> + <xsl:sort select="." data-type="number" order="descending"/> + <xsl:variable name="css-class1"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class1}"> + <th> + <xsl:value-of select="@name"/> + </th> + <td> + <xsl:value-of select="."/> + </td> + </tr> + </xsl:for-each> + </table> + <br/> </xsl:for-each> - <tr> - <th class="totals">Total:</th> - <td class="totals"> - <xsl:value-of select="sum(server/counters[@type="qtype"]/counter)"/> - </td> - </tr> - </table> - <br/> - <h2>Outgoing Queries per view</h2> - <xsl:for-each select="views/view[count(counters[@type="resqtype"]/counter) > 0]"> - <h3>View <xsl:value-of select="@name"/></h3> + </xsl:if> + <xsl:if test="server/counters[@type="nsstat"]/counter[.>0]"> + <h2>Server Statistics</h2> <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> <!-- Non Mozilla specific markup --> <script type="text/javascript"> - graphs.push({ - 'title': "Outgoing queries for view: <xsl:value-of select="@name"/>", - 'target': 'chart_outgoing_queries_view_<xsl:value-of select="@name"/>', - 'data': [['Type','Counter'],<xsl:for-each select="counters[@type="resqtype"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] - }); - - </script> - <xsl:variable name="target"> - <xsl:value-of select="@name"/> - </xsl:variable> - <div class="pie" id="chart_outgoing_queries_view_{$target}"/> + graphs.push({ + 'title' : "Server Counters", + 'target': 'chart_server_nsstat_restype', + 'style': 'barchart', + 'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type="nsstat"]/counter[.>0]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] + }); + </script> + <div class="pie" id="chart_server_nsstat_restype">[no data to display]</div> </xsl:if> <table class="counters"> - <xsl:for-each select="counters[@type="resqtype"]/counter"> + <xsl:for-each select="server/counters[@type="nsstat"]/counter[.>0]"> <xsl:sort select="." data-type="number" order="descending"/> - <xsl:variable name="css-class1"> + <xsl:variable name="css-class2"> <xsl:choose> <xsl:when test="position() mod 2 = 0">even</xsl:when> <xsl:otherwise>odd</xsl:otherwise> </xsl:choose> </xsl:variable> - <tr class="{$css-class1}"> + <tr class="{$css-class2}"> <th> <xsl:value-of select="@name"/> </th> @@ -299,104 +423,53 @@ </xsl:for-each> </table> <br/> - </xsl:for-each> - <h2>Server Statistics</h2> - <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> - <!-- Non Mozilla specific markup --> - <script type="text/javascript"> - graphs.push({ - 'title' : "Server Counters", - 'target': 'chart_server_nsstat_restype', - 'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type="nsstat"]/counter[.>0]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] - }); - - </script> - <div class="pie" id="chart_server_nsstat_restype"/> </xsl:if> - <table class="counters"> - <xsl:for-each select="server/counters[@type="nsstat"]/counter[.>0]"> - <xsl:sort select="." data-type="number" order="descending"/> - <xsl:variable name="css-class2"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class2}"> - <th> - <xsl:value-of select="@name"/> - </th> - <td> - <xsl:value-of select="."/> - </td> - </tr> - </xsl:for-each> - </table> - <br/> - <h2>Zone Maintenance Statistics</h2> - <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> - <script type="text/javascript"> - graphs.push({ - 'title' : "Zone Maintenance Stats", - 'target': 'chart_server_zone_maint', - 'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type="zonestat"]/counter">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] - }); - - </script> - <!-- Non Mozilla specific markup --> - <div class="pie" id="chart_server_zone_maint"/> + <xsl:if test="server/counters[@type="zonestat"]/counter[.>0]"> + <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> + <h2>Zone Maintenance Statistics</h2> + <script type="text/javascript"> + graphs.push({ + 'title' : "Zone Maintenance Stats", + 'target': 'chart_server_zone_maint', + 'style': 'barchart', + 'data': [['Type','Counter'],<xsl:for-each select="server/counters[@type="zonestat"]/counter[.>0]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] + }); + </script> + <!-- Non Mozilla specific markup --> + <div class="pie" id="chart_server_zone_maint">[no data to display]</div> + </xsl:if> + <table class="counters"> + <xsl:for-each select="server/counters[@type="zonestat"]/counter"> + <xsl:sort select="." data-type="number" order="descending"/> + <xsl:variable name="css-class3"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class3}"> + <th> + <xsl:value-of select="@name"/> + </th> + <td> + <xsl:value-of select="."/> + </td> + </tr> + </xsl:for-each> + </table> </xsl:if> - <table class="counters"> - <xsl:for-each select="server/counters[@type="zonestat"]/counter"> - <xsl:sort select="." data-type="number" order="descending"/> - <xsl:variable name="css-class3"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class3}"> - <th> - <xsl:value-of select="@name"/> - </th> - <td> - <xsl:value-of select="."/> - </td> - </tr> - </xsl:for-each> - </table> - <h2>Resolver Statistics (Common)</h2> - <table class="counters"> - <xsl:for-each select="server/counters[@type="restat"]/counter"> - <xsl:sort select="." data-type="number" order="descending"/> - <xsl:variable name="css-class4"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class4}"> - <th> - <xsl:value-of select="@name"/> - </th> - <td> - <xsl:value-of select="."/> - </td> - </tr> - </xsl:for-each> - </table> - <xsl:for-each select="views/view"> - <h3>Resolver Statistics for View <xsl:value-of select="@name"/></h3> + <xsl:if test="server/counters[@type="resstat"]/counter[.>0]"> + <h2>Resolver Statistics (Common)</h2> <table class="counters"> - <xsl:for-each select="counters[@type="resstats"]/counter[.>0]"> + <xsl:for-each select="server/counters[@type="resstat"]/counter"> <xsl:sort select="." data-type="number" order="descending"/> - <xsl:variable name="css-class5"> + <xsl:variable name="css-class4"> <xsl:choose> <xsl:when test="position() mod 2 = 0">even</xsl:when> <xsl:otherwise>odd</xsl:otherwise> </xsl:choose> </xsl:variable> - <tr class="{$css-class5}"> + <tr class="{$css-class4}"> <th> <xsl:value-of select="@name"/> </th> @@ -406,330 +479,375 @@ </tr> </xsl:for-each> </table> + </xsl:if> + <xsl:for-each select="views/view"> + <xsl:if test="counters[@type="resstats"]/counter[.>0]"> + <h3>Resolver Statistics for View <xsl:value-of select="@name"/></h3> + <table class="counters"> + <xsl:for-each select="counters[@type="resstats"]/counter[.>0]"> + <xsl:sort select="." data-type="number" order="descending"/> + <xsl:variable name="css-class5"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class5}"> + <th> + <xsl:value-of select="@name"/> + </th> + <td> + <xsl:value-of select="."/> + </td> + </tr> + </xsl:for-each> + </table> + </xsl:if> </xsl:for-each> - <h3>Cache DB RRsets for View <xsl:value-of select="@name"/></h3> + <xsl:for-each select="views/view"> + <xsl:if test="cache/rrset"> + <h3>Cache DB RRsets for View <xsl:value-of select="@name"/></h3> + <table class="counters"> + <xsl:for-each select="cache/rrset"> + <xsl:variable name="css-class6"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class6}"> + <th> + <xsl:value-of select="name"/> + </th> + <td> + <xsl:value-of select="counter"/> + </td> + </tr> + </xsl:for-each> + </table> + <br/> + </xsl:if> + </xsl:for-each> + + <xsl:if test="server/counters[@type="sockstat"]/counter[.>0]"> + <h2>Socket I/O Statistics</h2> <table class="counters"> - <xsl:for-each select="cache/rrset"> - <xsl:variable name="css-class6"> + <xsl:for-each select="server/counters[@type="sockstat"]/counter[.>0]"> + <xsl:variable name="css-class7"> <xsl:choose> <xsl:when test="position() mod 2 = 0">even</xsl:when> <xsl:otherwise>odd</xsl:otherwise> </xsl:choose> </xsl:variable> - <tr class="{$css-class6}"> + <tr class="{$css-class7}"> <th> - <xsl:value-of select="name"/> + <xsl:value-of select="@name"/> </th> <td> - <xsl:value-of select="counter"/> + <xsl:value-of select="."/> </td> </tr> </xsl:for-each> </table> <br/> - </xsl:for-each> - <h2>Socket I/O Statistics</h2> - <table class="counters"> - <xsl:for-each select="server/counters[@type="sockstat"]/counter[.>0]"> - <xsl:variable name="css-class7"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> + </xsl:if> + <xsl:if test="views/view[zones/zone/counters[@type="rcode"]/counter >0]"> + <h2>Response Codes per view/zone</h2> + <xsl:for-each select="views/view[zones/zone/counters[@type="rcode"]/counter >0]"> + <h3>View <xsl:value-of select="@name"/></h3> + <xsl:variable name="thisview"> + <xsl:value-of select="@name"/> </xsl:variable> - <tr class="{$css-class7}"> - <th> - <xsl:value-of select="@name"/> - </th> - <td> - <xsl:value-of select="."/> - </td> - </tr> - </xsl:for-each> - </table> - <br/> - <br/> - <h2>Response Codes per view/zone</h2> - <xsl:for-each select="views/view[zones/zone/counters[@type="rcode"]/counter >0]"> - <h3>View <xsl:value-of select="@name"/></h3> - <xsl:variable name="thisview"> - <xsl:value-of select="@name"/> - </xsl:variable> - <xsl:for-each select="zones/zone"> - <xsl:if test="counters[@type="rcode"]/counter[. > 0]"> - <h4>Zone <xsl:value-of select="@name"/></h4> - <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> - <!-- Non Mozilla specific markup --> - <script type="text/javascript"> - graphs.push({ - 'title': "Response Codes for zone <xsl:value-of select="@name"/>", - 'target': 'chart_rescode_<xsl:value-of select="../../@name"/>_<xsl:value-of select="@name"/>', - 'data': [['Type','Counter'],<xsl:for-each select="counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] - }); - - </script> - <xsl:variable name="target"> - <xsl:value-of select="@name"/> - </xsl:variable> - <div class="pie" id="chart_rescode_{$thisview}_{$target}"/> + <xsl:for-each select="zones/zone"> + <xsl:if test="counters[@type="rcode"]/counter[. > 0]"> + <h4>Zone <xsl:value-of select="@name"/></h4> + <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> + <!-- Non Mozilla specific markup --> + <script type="text/javascript"> + graphs.push({ + 'title': "Response Codes for zone <xsl:value-of select="@name"/>", + 'target': 'chart_rescode_<xsl:value-of select="../../@name"/>_<xsl:value-of select="@name"/>', + 'style': 'barchart', + 'data': [['Type','Counter'],<xsl:for-each select="counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] + }); + + </script> + <xsl:variable name="target"> + <xsl:value-of select="@name"/> + </xsl:variable> + <div class="pie" id="chart_rescode_{$thisview}_{$target}">[no data to display]</div> + </xsl:if> + <table class="counters"> + <xsl:for-each select="counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]"> + <xsl:sort select="."/> + <xsl:variable name="css-class10"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class10}"> + <th> + <xsl:value-of select="@name"/> + </th> + <td> + <xsl:value-of select="."/> + </td> + </tr> + </xsl:for-each> + </table> </xsl:if> - <table class="counters"> - <xsl:for-each select="counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]"> - <xsl:sort select="."/> - <xsl:variable name="css-class10"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class10}"> - <th> - <xsl:value-of select="@name"/> - </th> - <td> - <xsl:value-of select="."/> - </td> - </tr> - </xsl:for-each> - </table> - </xsl:if> + </xsl:for-each> </xsl:for-each> - </xsl:for-each> - <h2>Received QTYPES per view/zone</h2> - <xsl:for-each select="views/view[zones/zone/counters[@type="qtype"]/counter >0]"> - <h3>View <xsl:value-of select="@name"/></h3> - <xsl:variable name="thisview2"> - <xsl:value-of select="@name"/> - </xsl:variable> - <xsl:for-each select="zones/zone"> - <xsl:if test="counters[@type="qtype"]/counter[count(.) > 0]"> - <h4>Zone <xsl:value-of select="@name"/></h4> - <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> - <!-- Non Mozilla specific markup --> - <script type="text/javascript"> - graphs.push({ - 'title': "Query Types for zone <xsl:value-of select="@name"/>", - 'target': 'chart_qtype_<xsl:value-of select="../../@name"/>_<xsl:value-of select="@name"/>', - 'data': [['Type','Counter'],<xsl:for-each select="counters[@type="qtype"]/counter[.>0 and @name != "QryAuthAns"]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] - }); - - </script> - <xsl:variable name="target"> - <xsl:value-of select="@name"/> - </xsl:variable> - <div class="pie" id="chart_qtype_{$thisview2}_{$target}"/> + </xsl:if> + <xsl:if test="views/view[zones/zone/counters[@type="qtype"]/counter >0]"> + <h2>Received QTYPES per view/zone</h2> + <xsl:for-each select="views/view[zones/zone/counters[@type="qtype"]/counter >0]"> + <h3>View <xsl:value-of select="@name"/></h3> + <xsl:variable name="thisview2"> + <xsl:value-of select="@name"/> + </xsl:variable> + <xsl:for-each select="zones/zone"> + <xsl:if test="counters[@type="qtype"]/counter[count(.) > 0]"> + <h4>Zone <xsl:value-of select="@name"/></h4> + <xsl:if test="system-property('xsl:vendor')!='Transformiix'"> + <!-- Non Mozilla specific markup --> + <script type="text/javascript"> + graphs.push({ + 'title': "Query Types for zone <xsl:value-of select="@name"/>", + 'target': 'chart_qtype_<xsl:value-of select="../../@name"/>_<xsl:value-of select="@name"/>', + 'style': 'barchart', + 'data': [['Type','Counter'],<xsl:for-each select="counters[@type="qtype"]/counter[.>0 and @name != "QryAuthAns"]">['<xsl:value-of select="@name"/>',<xsl:value-of select="."/>],</xsl:for-each>] + }); + + </script> + <xsl:variable name="target"> + <xsl:value-of select="@name"/> + </xsl:variable> + <div class="pie" id="chart_qtype_{$thisview2}_{$target}">[no data to display]</div> + </xsl:if> + <table class="counters"> + <xsl:for-each select="counters[@type="qtype"]/counter"> + <xsl:sort select="."/> + <xsl:variable name="css-class11"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class11}"> + <th> + <xsl:value-of select="@name"/> + </th> + <td> + <xsl:value-of select="."/> + </td> + </tr> + </xsl:for-each> + </table> </xsl:if> - <table class="counters"> - <xsl:for-each select="counters[@type="qtype"]/counter"> - <xsl:sort select="."/> - <xsl:variable name="css-class11"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class11}"> - <th> - <xsl:value-of select="@name"/> - </th> - <td> - <xsl:value-of select="."/> - </td> - </tr> - </xsl:for-each> - </table> - </xsl:if> + </xsl:for-each> </xsl:for-each> - </xsl:for-each> - <h2>Network Status</h2> - <table class="counters"> - <tr> - <th>ID</th> - <th>Name</th> - <th>Type</th> - <th>References</th> - <th>LocalAddress</th> - <th>PeerAddress</th> - <th>State</th> - </tr> - <xsl:for-each select="socketmgr/sockets/socket"> - <xsl:sort select="id"/> - <xsl:variable name="css-class12"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class12}"> - <td> - <xsl:value-of select="id"/> - </td> - <td> - <xsl:value-of select="name"/> - </td> - <td> - <xsl:value-of select="type"/> - </td> - <td> - <xsl:value-of select="references"/> - </td> - <td> - <xsl:value-of select="local-address"/> - </td> - <td> - <xsl:value-of select="peer-address"/> - </td> - <td> - <xsl:for-each select="states"> - <xsl:value-of select="."/> - </xsl:for-each> - </td> + </xsl:if> + <xsl:if test="socketmgr/sockets/socket"> + <h2>Network Status</h2> + <table class="netstat"> + <tr> + <th>ID</th> + <th>Name</th> + <th>Type</th> + <th>References</th> + <th>LocalAddress</th> + <th>PeerAddress</th> + <th>State</th> </tr> - </xsl:for-each> - </table> - <br/> - <h2>Task Manager Configuration</h2> - <table class="counters"> - <tr> - <th class="even">Thread-Model</th> - <td> - <xsl:value-of select="taskmgr/thread-model/type"/> - </td> - </tr> - <tr class="odd"> - <th>Worker Threads</th> - <td> - <xsl:value-of select="taskmgr/thread-model/worker-threads"/> - </td> - </tr> - <tr class="even"> - <th>Default Quantum</th> - <td> - <xsl:value-of select="taskmgr/thread-model/default-quantum"/> - </td> - </tr> - <tr class="odd"> - <th>Tasks Running</th> - <td> - <xsl:value-of select="taskmgr/thread-model/tasks-running"/> - </td> - </tr> - </table> - <br/> - <h2>Tasks</h2> - <table class="counters"> - <tr> - <th>ID</th> - <th>Name</th> - <th>References</th> - <th>State</th> - <th>Quantum</th> - </tr> - <xsl:for-each select="taskmgr/tasks/task"> - <xsl:sort select="name"/> - <xsl:variable name="css-class14"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class14}"> - <td> - <xsl:value-of select="id"/> - </td> - <td> - <xsl:value-of select="name"/> - </td> - <td> - <xsl:value-of select="references"/> - </td> - <td> - <xsl:value-of select="state"/> - </td> + <xsl:for-each select="socketmgr/sockets/socket"> + <xsl:sort select="id"/> + <xsl:variable name="css-class12"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class12}"> + <td> + <xsl:value-of select="id"/> + </td> + <td> + <xsl:value-of select="name"/> + </td> + <td> + <xsl:value-of select="type"/> + </td> + <td> + <xsl:value-of select="references"/> + </td> + <td> + <xsl:value-of select="local-address"/> + </td> + <td> + <xsl:value-of select="peer-address"/> + </td> + <td> + <xsl:for-each select="states"> + <xsl:value-of select="."/> + </xsl:for-each> + </td> + </tr> + </xsl:for-each> + </table> + <br/> + </xsl:if> + <xsl:if test="taskmgr/thread-model/type"> + <h2>Task Manager Configuration</h2> + <table class="counters"> + <tr> + <th class="even">Thread-Model</th> <td> - <xsl:value-of select="quantum"/> + <xsl:value-of select="taskmgr/thread-model/type"/> </td> </tr> - </xsl:for-each> - </table> - <br/> - <h2>Memory Usage Summary</h2> - <table class="counters"> - <xsl:for-each select="memory/summary/*"> - <xsl:variable name="css-class13"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class13}"> - <th> - <xsl:value-of select="name()"/> - </th> + <tr class="odd"> + <th>Worker Threads</th> <td> - <xsl:value-of select="."/> + <xsl:value-of select="taskmgr/thread-model/worker-threads"/> </td> </tr> - </xsl:for-each> - </table> - <br/> - <h2>Memory Contexts</h2> - <table class="counters"> - <tr> - <th>ID</th> - <th>Name</th> - <th>References</th> - <th>TotalUse</th> - <th>InUse</th> - <th>MaxUse</th> - <th>BlockSize</th> - <th>Pools</th> - <th>HiWater</th> - <th>LoWater</th> - </tr> - <xsl:for-each select="memory/contexts/context"> - <xsl:sort select="total" data-type="number" order="descending"/> - <xsl:variable name="css-class14"> - <xsl:choose> - <xsl:when test="position() mod 2 = 0">even</xsl:when> - <xsl:otherwise>odd</xsl:otherwise> - </xsl:choose> - </xsl:variable> - <tr class="{$css-class14}"> - <td> - <xsl:value-of select="id"/> - </td> - <td> - <xsl:value-of select="name"/> - </td> - <td> - <xsl:value-of select="references"/> - </td> - <td> - <xsl:value-of select="total"/> - </td> - <td> - <xsl:value-of select="inuse"/> - </td> - <td> - <xsl:value-of select="maxinuse"/> - </td> - <td> - <xsl:value-of select="blocksize"/> - </td> - <td> - <xsl:value-of select="pools"/> - </td> + <tr class="even"> + <th>Default Quantum</th> <td> - <xsl:value-of select="hiwater"/> + <xsl:value-of select="taskmgr/thread-model/default-quantum"/> </td> + </tr> + <tr class="odd"> + <th>Tasks Running</th> <td> - <xsl:value-of select="lowater"/> + <xsl:value-of select="taskmgr/thread-model/tasks-running"/> </td> </tr> - </xsl:for-each> - </table> + </table> + <br/> + </xsl:if> + <xsl:if test="taskmgr/tasks/task"> + <h2>Tasks</h2> + <table class="tasks"> + <tr> + <th>ID</th> + <th>Name</th> + <th>References</th> + <th>State</th> + <th>Quantum</th> + </tr> + <xsl:for-each select="taskmgr/tasks/task"> + <xsl:sort select="name"/> + <xsl:variable name="css-class14"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class14}"> + <td> + <xsl:value-of select="id"/> + </td> + <td> + <xsl:value-of select="name"/> + </td> + <td> + <xsl:value-of select="references"/> + </td> + <td> + <xsl:value-of select="state"/> + </td> + <td> + <xsl:value-of select="quantum"/> + </td> + </tr> + </xsl:for-each> + </table> + <br/> + </xsl:if> + <xsl:if test="memory/summary"> + <h2>Memory Usage Summary</h2> + <table class="counters"> + <xsl:for-each select="memory/summary/*"> + <xsl:variable name="css-class13"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class13}"> + <th> + <xsl:value-of select="name()"/> + </th> + <td> + <xsl:value-of select="."/> + </td> + </tr> + </xsl:for-each> + </table> + <br/> + </xsl:if> + <xsl:if test="memory/contexts/context"> + <h2>Memory Contexts</h2> + <table class="mctx"> + <tr> + <th>ID</th> + <th>Name</th> + <th>References</th> + <th>TotalUse</th> + <th>InUse</th> + <th>MaxUse</th> + <th>BlockSize</th> + <th>Pools</th> + <th>HiWater</th> + <th>LoWater</th> + </tr> + <xsl:for-each select="memory/contexts/context"> + <xsl:sort select="total" data-type="number" order="descending"/> + <xsl:variable name="css-class14"> + <xsl:choose> + <xsl:when test="position() mod 2 = 0">even</xsl:when> + <xsl:otherwise>odd</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr class="{$css-class14}"> + <td> + <xsl:value-of select="id"/> + </td> + <td> + <xsl:value-of select="name"/> + </td> + <td> + <xsl:value-of select="references"/> + </td> + <td> + <xsl:value-of select="total"/> + </td> + <td> + <xsl:value-of select="inuse"/> + </td> + <td> + <xsl:value-of select="maxinuse"/> + </td> + <td> + <xsl:value-of select="blocksize"/> + </td> + <td> + <xsl:value-of select="pools"/> + </td> + <td> + <xsl:value-of select="hiwater"/> + </td> + <td> + <xsl:value-of select="lowater"/> + </td> + </tr> + </xsl:for-each> + </table> + </xsl:if> <hr/> <p class="footer">Internet Systems Consortium Inc.<br/><a href="http://www.isc.org">http://www.isc.org</a></p> </body> diff --git a/bin/named/bind9.ver3.xsl.h b/bin/named/bind9.ver3.xsl.h index c55714a6..371e69c7 100644 --- a/bin/named/bind9.ver3.xsl.h +++ b/bin/named/bind9.ver3.xsl.h @@ -5,7 +5,7 @@ static char xslmsg[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<!--\n" - " - Copyright (C) 2006-2009 Internet Systems Consortium, Inc. (\"ISC\")\n" + " - Copyright (C) 2012-2014 Internet Systems Consortium, Inc. (\"ISC\")\n" " -\n" " - Permission to use, copy, modify, and/or distribute this software for any\n" " - purpose with or without fee is hereby granted, provided that the above\n" @@ -19,63 +19,67 @@ static char xslmsg[] = " - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n" " - PERFORMANCE OF THIS SOFTWARE.\n" "-->\n" + "\n" + "<!-- $Id$ -->\n" + "\n" "<!-- \045Id: bind9.xsl,v 1.21 2009/01/27 23:47:54 tbox Exp \045 -->\n" "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns=\"http://www.w3.org/1999/xhtml\" version=\"1.0\">\n" " <xsl:output method=\"html\" indent=\"yes\" version=\"4.0\"/>\n" - " <xsl:template match=\"statistics[@version="3.0"]\">\n" + " <xsl:template match=\"statistics[@version="3.3"]\">\n" " <html>\n" " <head>\n" " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n" " <!-- Non Mozilla specific markup -->\n" " <script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"/>\n" " <script type=\"text/javascript\">\n" - " \n" + "\n" " google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n" " google.setOnLoadCallback(loadGraphs);\n" "\n" " var graphs=[];\n" - " \n" - " function drawChart(chart_title,target,data) {\n" + "\n" + " function drawChart(chart_title,target,style,data) {\n" " var data = google.visualization.arrayToDataTable(data);\n" "\n" " var options = {\n" " title: chart_title\n" " };\n" - " \n" - " var chart = new google.visualization.BarChart(document.getElementById(target));\n" + "\n" + " var chart;\n" + " if (style == \"barchart\") {\n" + " chart = new google.visualization.BarChart(document.getElementById(target));\n" + " chart.draw(data, options);\n" + " } else if (style == \"piechart\") {\n" + " chart = new google.visualization.PieChart(document.getElementById(target));\n" " chart.draw(data, options);\n" " }\n" - " \n" + " }\n" + "\n" " function loadGraphs(){\n" - " //alert(\"here we are!\");\n" " var g;\n" - " \n" - " // Server Incoming query Types\n" + "\n" " while(g = graphs.shift()){\n" " // alert(\"going for: \" + g.target);\n" " if(g.data.length > 1){\n" - " drawChart(g.title,g.target,g.data);\n" + " drawChart(g.title,g.target,g.style,g.data);\n" " }\n" " }\n" " }\n" - " \n" - " // Server Incoming Queries Types \n" + "\n" + " // Server Incoming Query Types \n" " graphs.push({\n" " 'title' : \"Server Incoming Query Types\",\n" " 'target': 'chart_incoming_qtypes',\n" + " 'style': 'barchart',\n" " 'data': [['Type','Counter'],<xsl:for-each select=\"server/counters[@type="qtype"]/counter\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]\n" " });\n" "\n" - "\n" - " // Server Incoming Requests \n" + " // Server Incoming Requests by opcode\n" " graphs.push({\n" - " 'title' : \"Server Incoming Requests\",\n" - " 'target': 'chart_incoming_requests',\n" - " 'data': [['Requests','Counter'],<xsl:for-each select=\"server/counters[@type="opcode"]/counter\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]});\n" - " \n" - " \n" - " \n" - " \n" + " 'title' : \"Server Incoming Requests by DNS Opcode\",\n" + " 'target': 'chart_incoming_opcodes',\n" + " 'style': 'barchart',\n" + " 'data': [['Opcode','Counter'],<xsl:for-each select=\"server/counters[@type="opcode"]/counter[. > 0 or substring(@name,1,3) != 'RES']\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]});\n" " </script>\n" " </xsl:if>\n" " <style type=\"text/css\">\n" @@ -85,15 +89,15 @@ static char xslmsg[] = " color: #000000;\n" " font-size: 10pt;\n" " }\n" - " \n" + "\n" " .odd{\n" " background-color: #f0f0f0;\n" " }\n" - " \n" + "\n" " .even{\n" " background-color: #ffffff;\n" " }\n" - " \n" + "\n" " p.footer{\n" " font-style:italic;\n" " color: grey;\n" @@ -108,21 +112,101 @@ static char xslmsg[] = " border: 1px solid grey;\n" " width: 500px;\n" " }\n" - " \n" " table.counters th {\n" - " text-align: center;\n" + " text-align: right;\n" " border: 1px solid grey;\n" - " width: 120px;\n" + " width: 150px;\n" " }\n" - " table.counters td{\n" - " text-align:center;\n" - " \n" + " table.counters td {\n" + " text-align: right;\n" + " font-family: monospace;\n" " }\n" - " \n" " table.counters tr:hover{\n" " background-color: #99ddff;\n" " }\n" - " \n" + "\n" + " table.info {\n" + " border: 1px solid grey;\n" + " width: 500px;\n" + " }\n" + " table.info th {\n" + " text-align: center;\n" + " border: 1px solid grey;\n" + " width: 150px;\n" + " }\n" + " table.info td {\n" + " text-align: center;\n" + " }\n" + " table.info tr:hover{\n" + " background-color: #99ddff;\n" + " }\n" + "\n" + " table.tasks {\n" + " border: 1px solid grey;\n" + " width: 500px;\n" + " }\n" + " table.tasks th {\n" + " text-align: center;\n" + " border: 1px solid grey;\n" + " width: 150px;\n" + " }\n" + " table.tasks td {\n" + " text-align: right;\n" + " font-family: monospace;\n" + " }\n" + " table.tasks td:nth-child(2) {\n" + " text-align: center;\n" + " }\n" + " table.tasks td:nth-child(4) {\n" + " text-align: center;\n" + " }\n" + " table.tasks tr:hover{\n" + " background-color: #99ddff;\n" + " }\n" + "\n" + " table.netstat {\n" + " border: 1px solid grey;\n" + " width: 500px;\n" + " }\n" + " table.netstat th {\n" + " text-align: center;\n" + " border: 1px solid grey;\n" + " width: 150px;\n" + " }\n" + " table.netstat td {\n" + " text-align: center;\n" + " }\n" + " table.netstat td:nth-child(4) {\n" + " text-align: right;\n" + " font-family: monospace;\n" + " }\n" + " table.netstat td:nth-child(7) {\n" + " text-align: left;\n" + " }\n" + " table.netstat tr:hover{\n" + " background-color: #99ddff;\n" + " }\n" + "\n" + " table.mctx {\n" + " border: 1px solid grey;\n" + " width: 500px;\n" + " }\n" + " table.mctx th {\n" + " text-align: center;\n" + " border: 1px solid grey;\n" + " }\n" + " table.mctx td {\n" + " text-align: right;\n" + " font-family: monospace;\n" + " }\n" + " table.mctx td:nth-child(-n+2) {\n" + " text-align: left;\n" + " width: 100px;\n" + " }\n" + " table.mctx tr:hover{\n" + " background-color: #99ddff;\n" + " }\n" + "\n" " .totals {\n" " background-color: rgb(1,169,206);\n" " color: #ffffff;\n" @@ -162,20 +246,18 @@ static char xslmsg[] = " width:500px;\n" " text-align:center;\n" " }\n" - " \n" + "\n" " h3 {\n" " color: #444444;\n" " font-size: 12pt;\n" " width:500px;\n" " text-align:center;\n" - " \n" " }\n" " h4 {\n" " color: rgb(1,169,206);\n" " font-size: 10pt;\n" " width:500px;\n" " text-align:center;\n" - " \n" " }\n" "\n" " .pie {\n" @@ -192,7 +274,7 @@ static char xslmsg[] = " </div>\n" " <hr/>\n" " <h2>Server Times</h2>\n" - " <table class=\"counters\">\n" + " <table class=\"info\">\n" " <tr>\n" " <th>Boot time:</th>\n" " <td>\n" @@ -200,20 +282,23 @@ static char xslmsg[] = " </td>\n" " </tr>\n" " <tr>\n" - " <th>Sample time:</th>\n" + " <th>Current time:</th>\n" " <td>\n" " <xsl:value-of select=\"server/current-time\"/>\n" " </td>\n" " </tr>\n" " </table>\n" " <br/>\n" - " <h2>Incoming Requests</h2>\n" + " <xsl:if test=\"server/counters[@type="opcode"]/counter[. > 0]\">\n" " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n" + " <h2>Incoming Requests by DNS Opcode</h2>\n" " <!-- Non Mozilla specific markup -->\n" - " <div class=\"pie\" id=\"chart_incoming_requests\">[graph incoming requests]</div>\n" + " <div class=\"pie\" id=\"chart_incoming_opcodes\">\n" + " [cannot display chart]\n" + " </div>\n" " </xsl:if>\n" " <table class=\"counters\">\n" - " <xsl:for-each select=\"server/counters[@type="opcode"]/counter\">\n" + " <xsl:for-each select=\"server/counters[@type="opcode"]/counter[. > 0 or substring(@name,1,3) != 'RES']\">\n" " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n" " <tr>\n" " <th>\n" @@ -232,10 +317,14 @@ static char xslmsg[] = " </tr>\n" " </table>\n" " <br/>\n" - " <h3>Incoming Queries by Type</h3>\n" + " </xsl:if>\n" + " <xsl:if test=\"server/counters[@type="qtype"]/counter\">\n" " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n" " <!-- Non Mozilla specific markup -->\n" - " <div class=\"pie\" id=\"chart_incoming_qtypes\">[graph incoming qtypes]</div>\n" + " <h3>Incoming Queries by Query Type</h3>\n" + " <div class=\"pie\" id=\"chart_incoming_qtypes\">\n" + " [cannot display chart]\n" + " </div>\n" " </xsl:if>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"server/counters[@type="qtype"]/counter\">\n" @@ -263,6 +352,8 @@ static char xslmsg[] = " </tr>\n" " </table>\n" " <br/>\n" + " </xsl:if>\n" + " <xsl:if test=\"views/view[count(counters[@type="resqtype"]/counter) > 0]\">\n" " <h2>Outgoing Queries per view</h2>\n" " <xsl:for-each select=\"views/view[count(counters[@type="resqtype"]/counter) > 0]\">\n" " <h3>View <xsl:value-of select=\"@name\"/></h3>\n" @@ -270,16 +361,16 @@ static char xslmsg[] = " <!-- Non Mozilla specific markup -->\n" " <script type=\"text/javascript\">\n" " graphs.push({\n" - " 'title': \"Outgoing queries for view: <xsl:value-of select=\"@name\"/>\",\n" + " 'title': \"Outgoing Queries for view: <xsl:value-of select=\"@name\"/>\",\n" " 'target': 'chart_outgoing_queries_view_<xsl:value-of select=\"@name\"/>',\n" + " 'style': 'barchart',\n" " 'data': [['Type','Counter'],<xsl:for-each select=\"counters[@type="resqtype"]/counter\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]\n" " });\n" - " \n" " </script>\n" " <xsl:variable name=\"target\">\n" " <xsl:value-of select=\"@name\"/>\n" " </xsl:variable>\n" - " <div class=\"pie\" id=\"chart_outgoing_queries_view_{$target}\"/>\n" + " <div class=\"pie\" id=\"chart_outgoing_queries_view_{$target}\">[no data to display]</div>\n" " </xsl:if>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"counters[@type="resqtype"]/counter\">\n" @@ -302,18 +393,20 @@ static char xslmsg[] = " </table>\n" " <br/>\n" " </xsl:for-each>\n" + " </xsl:if>\n" + " <xsl:if test=\"server/counters[@type="nsstat"]/counter[.>0]\">\n" " <h2>Server Statistics</h2>\n" " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n" " <!-- Non Mozilla specific markup -->\n" " <script type=\"text/javascript\">\n" " graphs.push({\n" - " 'title' : \"Server Response Types\",\n" + " 'title' : \"Server Counters\",\n" " 'target': 'chart_server_nsstat_restype',\n" + " 'style': 'barchart',\n" " 'data': [['Type','Counter'],<xsl:for-each select=\"server/counters[@type="nsstat"]/counter[.>0]\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]\n" " });\n" - " \n" " </script>\n" - " <div class=\"pie\" id=\"chart_server_nsstat_restype\"/>\n" + " <div class=\"pie\" id=\"chart_server_nsstat_restype\">[no data to display]</div>\n" " </xsl:if>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"server/counters[@type="nsstat"]/counter[.>0]\">\n" @@ -335,18 +428,20 @@ static char xslmsg[] = " </xsl:for-each>\n" " </table>\n" " <br/>\n" - " <h2>Zone Maintenance Statistics</h2>\n" + " </xsl:if>\n" + " <xsl:if test=\"server/counters[@type="zonestat"]/counter[.>0]\">\n" " <xsl:if test=\"system-property('xsl:vendor')!='Transformiix'\">\n" + " <h2>Zone Maintenance Statistics</h2>\n" " <script type=\"text/javascript\">\n" " graphs.push({\n" " 'title' : \"Zone Maintenance Stats\",\n" " 'target': 'chart_server_zone_maint',\n" - " 'data': [['Type','Counter'],<xsl:for-each select=\"server/counters[@type="zonestat"]/counter\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]\n" + " 'style': 'barchart',\n" + " 'data': [['Type','Counter'],<xsl:for-each select=\"server/counters[@type="zonestat"]/counter[.>0]\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]\n" " });\n" - "\n" " </script>\n" " <!-- Non Mozilla specific markup -->\n" - " <div class=\"pie\" id=\"chart_server_zone_maint\"/>\n" + " <div class=\"pie\" id=\"chart_server_zone_maint\">[no data to display]</div>\n" " </xsl:if>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"server/counters[@type="zonestat"]/counter\">\n" @@ -367,9 +462,11 @@ static char xslmsg[] = " </tr>\n" " </xsl:for-each>\n" " </table>\n" + " </xsl:if>\n" + " <xsl:if test=\"server/counters[@type="resstat"]/counter[.>0]\">\n" " <h2>Resolver Statistics (Common)</h2>\n" " <table class=\"counters\">\n" - " <xsl:for-each select=\"server/counters[@type="restat"]/counter\">\n" + " <xsl:for-each select=\"server/counters[@type="resstat"]/counter\">\n" " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n" " <xsl:variable name=\"css-class4\">\n" " <xsl:choose>\n" @@ -387,7 +484,9 @@ static char xslmsg[] = " </tr>\n" " </xsl:for-each>\n" " </table>\n" + " </xsl:if>\n" " <xsl:for-each select=\"views/view\">\n" + " <xsl:if test=\"counters[@type="resstats"]/counter[.>0]\">\n" " <h3>Resolver Statistics for View <xsl:value-of select=\"@name\"/></h3>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"counters[@type="resstats"]/counter[.>0]\">\n" @@ -408,9 +507,12 @@ static char xslmsg[] = " </tr>\n" " </xsl:for-each>\n" " </table>\n" + " </xsl:if>\n" " </xsl:for-each>\n" - " <h3>Cache DB RRsets for View <xsl:value-of select=\"@name\"/></h3>\n" + "\n" " <xsl:for-each select=\"views/view\">\n" + " <xsl:if test=\"cache/rrset\">\n" + " <h3>Cache DB RRsets for View <xsl:value-of select=\"@name\"/></h3>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"cache/rrset\">\n" " <xsl:variable name=\"css-class6\">\n" @@ -430,7 +532,10 @@ static char xslmsg[] = " </xsl:for-each>\n" " </table>\n" " <br/>\n" + " </xsl:if>\n" " </xsl:for-each>\n" + "\n" + " <xsl:if test=\"server/counters[@type="sockstat"]/counter[.>0]\">\n" " <h2>Socket I/O Statistics</h2>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"server/counters[@type="sockstat"]/counter[.>0]\">\n" @@ -451,7 +556,8 @@ static char xslmsg[] = " </xsl:for-each>\n" " </table>\n" " <br/>\n" - " <br/>\n" + " </xsl:if>\n" + " <xsl:if test=\"views/view[zones/zone/counters[@type="rcode"]/counter >0]\">\n" " <h2>Response Codes per view/zone</h2>\n" " <xsl:for-each select=\"views/view[zones/zone/counters[@type="rcode"]/counter >0]\">\n" " <h3>View <xsl:value-of select=\"@name\"/></h3>\n" @@ -467,6 +573,7 @@ static char xslmsg[] = " graphs.push({\n" " 'title': \"Response Codes for zone <xsl:value-of select=\"@name\"/>\",\n" " 'target': 'chart_rescode_<xsl:value-of select=\"../../@name\"/>_<xsl:value-of select=\"@name\"/>',\n" + " 'style': 'barchart',\n" " 'data': [['Type','Counter'],<xsl:for-each select=\"counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]\n" " });\n" "\n" @@ -474,7 +581,7 @@ static char xslmsg[] = " <xsl:variable name=\"target\">\n" " <xsl:value-of select=\"@name\"/>\n" " </xsl:variable>\n" - " <div class=\"pie\" id=\"chart_rescode_{$thisview}_{$target}\"/>\n" + " <div class=\"pie\" id=\"chart_rescode_{$thisview}_{$target}\">[no data to display]</div>\n" " </xsl:if>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"counters[@type="rcode"]/counter[.>0 and @name != "QryAuthAns"]\">\n" @@ -498,6 +605,8 @@ static char xslmsg[] = " </xsl:if>\n" " </xsl:for-each>\n" " </xsl:for-each>\n" + " </xsl:if>\n" + " <xsl:if test=\"views/view[zones/zone/counters[@type="qtype"]/counter >0]\">\n" " <h2>Received QTYPES per view/zone</h2>\n" " <xsl:for-each select=\"views/view[zones/zone/counters[@type="qtype"]/counter >0]\">\n" " <h3>View <xsl:value-of select=\"@name\"/></h3>\n" @@ -513,6 +622,7 @@ static char xslmsg[] = " graphs.push({\n" " 'title': \"Query Types for zone <xsl:value-of select=\"@name\"/>\",\n" " 'target': 'chart_qtype_<xsl:value-of select=\"../../@name\"/>_<xsl:value-of select=\"@name\"/>',\n" + " 'style': 'barchart',\n" " 'data': [['Type','Counter'],<xsl:for-each select=\"counters[@type="qtype"]/counter[.>0 and @name != "QryAuthAns"]\">['<xsl:value-of select=\"@name\"/>',<xsl:value-of select=\".\"/>],</xsl:for-each>]\n" " });\n" "\n" @@ -520,7 +630,7 @@ static char xslmsg[] = " <xsl:variable name=\"target\">\n" " <xsl:value-of select=\"@name\"/>\n" " </xsl:variable>\n" - " <div class=\"pie\" id=\"chart_qtype_{$thisview2}_{$target}\"/>\n" + " <div class=\"pie\" id=\"chart_qtype_{$thisview2}_{$target}\">[no data to display]</div>\n" " </xsl:if>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"counters[@type="qtype"]/counter\">\n" @@ -544,8 +654,10 @@ static char xslmsg[] = " </xsl:if>\n" " </xsl:for-each>\n" " </xsl:for-each>\n" + " </xsl:if>\n" + " <xsl:if test=\"socketmgr/sockets/socket\">\n" " <h2>Network Status</h2>\n" - " <table class=\"counters\">\n" + " <table class=\"netstat\">\n" " <tr>\n" " <th>ID</th>\n" " <th>Name</th>\n" @@ -591,6 +703,8 @@ static char xslmsg[] = " </xsl:for-each>\n" " </table>\n" " <br/>\n" + " </xsl:if>\n" + " <xsl:if test=\"taskmgr/thread-model/type\">\n" " <h2>Task Manager Configuration</h2>\n" " <table class=\"counters\">\n" " <tr>\n" @@ -619,8 +733,10 @@ static char xslmsg[] = " </tr>\n" " </table>\n" " <br/>\n" + " </xsl:if>\n" + " <xsl:if test=\"taskmgr/tasks/task\">\n" " <h2>Tasks</h2>\n" - " <table class=\"counters\">\n" + " <table class=\"tasks\">\n" " <tr>\n" " <th>ID</th>\n" " <th>Name</th>\n" @@ -656,6 +772,8 @@ static char xslmsg[] = " </xsl:for-each>\n" " </table>\n" " <br/>\n" + " </xsl:if>\n" + " <xsl:if test=\"memory/summary\">\n" " <h2>Memory Usage Summary</h2>\n" " <table class=\"counters\">\n" " <xsl:for-each select=\"memory/summary/*\">\n" @@ -676,8 +794,10 @@ static char xslmsg[] = " </xsl:for-each>\n" " </table>\n" " <br/>\n" + " </xsl:if>\n" + " <xsl:if test=\"memory/contexts/context\">\n" " <h2>Memory Contexts</h2>\n" - " <table class=\"counters\">\n" + " <table class=\"mctx\">\n" " <tr>\n" " <th>ID</th>\n" " <th>Name</th>\n" @@ -732,6 +852,7 @@ static char xslmsg[] = " </tr>\n" " </xsl:for-each>\n" " </table>\n" + " </xsl:if>\n" " <hr/>\n" " <p class=\"footer\">Internet Systems Consortium Inc.<br/><a href=\"http://www.isc.org\">http://www.isc.org</a></p>\n" " </body>\n" diff --git a/bin/named/builtin.c b/bin/named/builtin.c index d6d7538a..e55e9542 100644 --- a/bin/named/builtin.c +++ b/bin/named/builtin.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -117,7 +117,7 @@ dns64_rdata(unsigned char *v, size_t start, unsigned char *rdata) { rdata[j++] = decimal[c]; } } - memcpy(&rdata[j], "\07in-addr\04arpa", 14); + memmove(&rdata[j], "\07in-addr\04arpa", 14); return (j + 14); } @@ -320,7 +320,7 @@ put_txt(dns_sdblookup_t *lookup, const char *text) { if (len > 255) len = 255; /* Silently truncate */ buf[0] = len; - memcpy(&buf[1], text, len); + memmove(&buf[1], text, len); return (dns_sdb_putrdata(lookup, dns_rdatatype_txt, 0, buf, len + 1)); } @@ -502,11 +502,11 @@ builtin_create(const char *zone, int argc, char **argv, isc_mem_put(ns_g_mctx, empty, sizeof (*empty)); } else { if (strcmp(argv[0], "empty") == 0) - memcpy(empty, &empty_builtin, - sizeof (empty_builtin)); + memmove(empty, &empty_builtin, + sizeof (empty_builtin)); else - memcpy(empty, &dns64_builtin, - sizeof (empty_builtin)); + memmove(empty, &dns64_builtin, + sizeof (empty_builtin)); empty->server = server; empty->contact = contact; *dbdata = empty; diff --git a/bin/named/config.c b/bin/named/config.c index 92cf7bf7..27827208 100644 --- a/bin/named/config.c +++ b/bin/named/config.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -573,7 +573,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, if (new == NULL) goto cleanup; if (listcount != 0) { - memcpy(new, lists, oldsize); + memmove(new, lists, oldsize); isc_mem_put(mctx, lists, oldsize); } lists = new; @@ -608,7 +608,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, if (new == NULL) goto cleanup; if (stackcount != 0) { - memcpy(new, stack, oldsize); + memmove(new, stack, oldsize); isc_mem_put(mctx, stack, oldsize); } stack = new; @@ -635,7 +635,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, if (new == NULL) goto cleanup; if (addrcount != 0) { - memcpy(new, addrs, oldsize); + memmove(new, addrs, oldsize); isc_mem_put(mctx, addrs, oldsize); } addrs = new; @@ -647,7 +647,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, if (new == NULL) goto cleanup; if (keycount != 0) { - memcpy(new, keys, oldsize); + memmove(new, keys, oldsize); isc_mem_put(mctx, keys, oldsize); } keys = new; @@ -695,7 +695,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, new = isc_mem_get(mctx, newsize); if (new == NULL) goto cleanup; - memcpy(new, addrs, newsize); + memmove(new, addrs, newsize); } else new = NULL; isc_mem_put(mctx, addrs, oldsize); @@ -708,7 +708,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list, new = isc_mem_get(mctx, newsize); if (new == NULL) goto cleanup; - memcpy(new, keys, newsize); + memmove(new, keys, newsize); } else new = NULL; isc_mem_put(mctx, keys, oldsize); diff --git a/bin/named/controlconf.c b/bin/named/controlconf.c index c46a6e15..509a113b 100644 --- a/bin/named/controlconf.c +++ b/bin/named/controlconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -367,7 +367,7 @@ control_recvmessage(isc_task_t *task, isc_event_t *event) { secret.rstart = isc_mem_get(listener->mctx, key->secret.length); if (secret.rstart == NULL) goto cleanup; - memcpy(secret.rstart, key->secret.base, key->secret.length); + memmove(secret.rstart, key->secret.base, key->secret.length); secret.rend = secret.rstart + key->secret.length; result = isccc_cc_fromwire(&ccregion, &request, &secret); if (result == ISC_R_SUCCESS) @@ -784,8 +784,8 @@ register_keys(const cfg_obj_t *control, const cfg_obj_t *keylist, free_controlkey(keyid, mctx); break; } - memcpy(keyid->secret.base, isc_buffer_base(&b), - keyid->secret.length); + memmove(keyid->secret.base, isc_buffer_base(&b), + keyid->secret.length); } } } @@ -864,8 +864,8 @@ get_rndckey(isc_mem_t *mctx, controlkeylist_t *keyids) { "out of memory", keyid->keyname); CHECK(ISC_R_NOMEMORY); } - memcpy(keyid->secret.base, isc_buffer_base(&b), - keyid->secret.length); + memmove(keyid->secret.base, isc_buffer_base(&b), + keyid->secret.length); ISC_LIST_APPEND(*keyids, keyid, link); keyid = NULL; result = ISC_R_SUCCESS; diff --git a/bin/named/lwaddr.c b/bin/named/lwaddr.c index ed7880ac..aecccce2 100644 --- a/bin/named/lwaddr.c +++ b/bin/named/lwaddr.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2008, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -41,11 +41,11 @@ lwaddr_netaddr_fromlwresaddr(isc_netaddr_t *na, lwres_addr_t *la) { if (la->family == LWRES_ADDRTYPE_V4) { struct in_addr ina; - memcpy(&ina.s_addr, la->address, 4); + memmove(&ina.s_addr, la->address, 4); isc_netaddr_fromin(na, &ina); } else { struct in6_addr ina6; - memcpy(&ina6.s6_addr, la->address, 16); + memmove(&ina6.s6_addr, la->address, 16); isc_netaddr_fromin6(na, &ina6); } return (ISC_R_SUCCESS); @@ -77,11 +77,11 @@ lwaddr_lwresaddr_fromnetaddr(lwres_addr_t *la, isc_netaddr_t *na) { if (na->family == AF_INET) { la->family = LWRES_ADDRTYPE_V4; la->length = 4; - memcpy(la->address, &na->type.in, 4); + memmove(la->address, &na->type.in, 4); } else { la->family = LWRES_ADDRTYPE_V6; la->length = 16; - memcpy(la->address, &na->type.in6, 16); + memmove(la->address, &na->type.in6, 16); } return (ISC_R_SUCCESS); } diff --git a/bin/named/lwdgnba.c b/bin/named/lwdgnba.c index dfc2ad65..2de5287d 100644 --- a/bin/named/lwdgnba.c +++ b/bin/named/lwdgnba.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2008, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -226,12 +226,12 @@ ns_lwdclient_processgnba(ns_lwdclient_t *client, lwres_buffer_t *b) { client->na.family = AF_INET; if (req->addr.length != 4) goto out; - memcpy(&client->na.type.in, req->addr.address, 4); + memmove(&client->na.type.in, req->addr.address, 4); } else if (req->addr.family == LWRES_ADDRTYPE_V6) { client->na.family = AF_INET6; if (req->addr.length != 16) goto out; - memcpy(&client->na.type.in6, req->addr.address, 16); + memmove(&client->na.type.in6, req->addr.address, 16); } else { goto out; } diff --git a/bin/named/lwdgrbn.c b/bin/named/lwdgrbn.c index bbb4fbc5..3e7b15bb 100644 --- a/bin/named/lwdgrbn.c +++ b/bin/named/lwdgrbn.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2013, 2014 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 @@ -124,8 +124,8 @@ iterate_node(lwres_grbnresponse_t *grbn, dns_db_t *db, dns_dbnode_t *node, lens = isc_mem_get(mctx, size * sizeof(*lens)); if (lens == NULL) goto out; - memcpy(rdatas, oldrdatas, used * sizeof(*rdatas)); - memcpy(lens, oldlens, used * sizeof(*lens)); + memmove(rdatas, oldrdatas, used * sizeof(*rdatas)); + memmove(lens, oldlens, used * sizeof(*lens)); isc_mem_put(mctx, oldrdatas, oldsize * sizeof(*oldrdatas)); isc_mem_put(mctx, oldlens, oldsize * sizeof(*oldlens)); @@ -158,8 +158,8 @@ iterate_node(lwres_grbnresponse_t *grbn, dns_db_t *db, dns_dbnode_t *node, newlens = isc_mem_get(mctx, used * sizeof(*lens)); if (newlens == NULL) goto out; - memcpy(newrdatas, rdatas, used * sizeof(*rdatas)); - memcpy(newlens, lens, used * sizeof(*lens)); + memmove(newrdatas, rdatas, used * sizeof(*rdatas)); + memmove(newlens, lens, used * sizeof(*lens)); isc_mem_put(mctx, rdatas, size * sizeof(*rdatas)); isc_mem_put(mctx, lens, size * sizeof(*lens)); grbn->rdatas = newrdatas; diff --git a/bin/named/named.conf.5 b/bin/named/named.conf.5 index 26edc4a6..0f5662c3 100644 --- a/bin/named/named.conf.5 +++ b/bin/named/named.conf.5 @@ -1,4 +1,4 @@ -.\" Copyright (C) 2004-2011, 2013 Internet Systems Consortium, Inc. ("ISC") +.\" Copyright (C) 2004-2011, 2013, 2014 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 @@ -323,7 +323,7 @@ options { zone\-statistics \fIboolean\fR; key\-directory \fIquoted_string\fR; managed\-keys\-directory \fIquoted_string\fR; - auto\-dnssec \fBallow\fR|\fBmaintain\fR|\fBcreate\fR|\fBoff\fR; + auto\-dnssec \fBallow\fR|\fBmaintain\fR|\fBoff\fR; try\-tcp\-refresh \fIboolean\fR; zero\-no\-soa\-ttl \fIboolean\fR; zero\-no\-soa\-ttl\-cache \fIboolean\fR; @@ -596,5 +596,5 @@ zone \fIstring\fR \fIoptional_class\fR { \fBrndc\fR(8), BIND 9 Administrator Reference Manual. .SH "COPYRIGHT" -Copyright \(co 2004\-2011, 2013 Internet Systems Consortium, Inc. ("ISC") +Copyright \(co 2004\-2011, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") .br diff --git a/bin/named/named.conf.docbook b/bin/named/named.conf.docbook index 35cd6276..b4d0c38e 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-2011, 2013 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011, 2013, 2014 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 @@ -45,6 +45,7 @@ <year>2010</year> <year>2011</year> <year>2013</year> + <year>2014</year> <holder>Internet Systems Consortium, Inc. ("ISC")</holder> </copyright> </docinfo> @@ -366,7 +367,7 @@ options { zone-statistics <replaceable>boolean</replaceable>; key-directory <replaceable>quoted_string</replaceable>; managed-keys-directory <replaceable>quoted_string</replaceable>; - auto-dnssec <constant>allow</constant>|<constant>maintain</constant>|<constant>create</constant>|<constant>off</constant>; + auto-dnssec <constant>allow</constant>|<constant>maintain</constant>|<constant>off</constant>; try-tcp-refresh <replaceable>boolean</replaceable>; zero-no-soa-ttl <replaceable>boolean</replaceable>; zero-no-soa-ttl-cache <replaceable>boolean</replaceable>; diff --git a/bin/named/named.conf.html b/bin/named/named.conf.html index b8b1247b..58474667 100644 --- a/bin/named/named.conf.html +++ b/bin/named/named.conf.html @@ -1,5 +1,5 @@ <!-- - - Copyright (C) 2004-2011, 2013 Internet Systems Consortium, Inc. ("ISC") + - Copyright (C) 2004-2011, 2013, 2014 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 @@ -31,7 +31,7 @@ <div class="cmdsynopsis"><p><code class="command">named.conf</code> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2543357"></a><h2>DESCRIPTION</h2> +<a name="id2543361"></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="id2543385"></a><h2>ACL</h2> +<a name="id2543388"></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="id2543401"></a><h2>KEY</h2> +<a name="id2543404"></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="id2543420"></a><h2>MASTERS</h2> +<a name="id2543424"></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="id2543466"></a><h2>SERVER</h2> +<a name="id2543469"></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="id2543534"></a><h2>TRUSTED-KEYS</h2> +<a name="id2543538"></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="id2543560"></a><h2>MANAGED-KEYS</h2> +<a name="id2543563"></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="id2543589"></a><h2>CONTROLS</h2> +<a name="id2543592"></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="id2543624"></a><h2>LOGGING</h2> +<a name="id2543627"></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="id2543662"></a><h2>LWRES</h2> +<a name="id2543666"></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="id2543704"></a><h2>OPTIONS</h2> +<a name="id2543707"></a><h2>OPTIONS</h2> <div class="literallayout"><p><br> options {<br> avoid-v4-udp-ports { <em class="replaceable"><code>port</code></em>; ... };<br> @@ -331,7 +331,7 @@ options {<br> zone-statistics <em class="replaceable"><code>boolean</code></em>;<br> key-directory <em class="replaceable"><code>quoted_string</code></em>;<br> managed-keys-directory <em class="replaceable"><code>quoted_string</code></em>;<br> - auto-dnssec <code class="constant">allow</code>|<code class="constant">maintain</code>|<code class="constant">create</code>|<code class="constant">off</code>;<br> + auto-dnssec <code class="constant">allow</code>|<code class="constant">maintain</code>|<code class="constant">off</code>;<br> try-tcp-refresh <em class="replaceable"><code>boolean</code></em>;<br> zero-no-soa-ttl <em class="replaceable"><code>boolean</code></em>;<br> zero-no-soa-ttl-cache <em class="replaceable"><code>boolean</code></em>;<br> diff --git a/bin/named/query.c b/bin/named/query.c index cf215755..c357f83e 100644 --- a/bin/named/query.c +++ b/bin/named/query.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -4983,12 +4983,12 @@ rdata_tonetaddr(const dns_rdata_t *rdata, isc_netaddr_t *netaddr) { switch (rdata->type) { case dns_rdatatype_a: INSIST(rdata->length == 4); - memcpy(&ina.s_addr, rdata->data, 4); + memmove(&ina.s_addr, rdata->data, 4); isc_netaddr_fromin(netaddr, &ina); return (ISC_R_SUCCESS); case dns_rdatatype_aaaa: INSIST(rdata->length == 16); - memcpy(in6a.s6_addr, rdata->data, 16); + memmove(in6a.s6_addr, rdata->data, 16); isc_netaddr_fromin6(netaddr, &in6a); return (ISC_R_SUCCESS); default: @@ -5261,8 +5261,7 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db, dns_fixedname_t fixed; dns_hash_t hash; dns_name_t name; - int order; - unsigned int count; + unsigned int skip = 0, labels; dns_rdata_nsec3_t nsec3; dns_rdata_t rdata = DNS_RDATA_INIT; isc_boolean_t optout; @@ -5277,6 +5276,7 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db, dns_name_init(&name, NULL); dns_name_clone(qname, &name); + labels = dns_name_countlabels(&name); dns_clientinfomethods_init(&cm, ns_client_sourceip); dns_clientinfo_init(&ci, client); @@ -5310,13 +5310,14 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db, dns_rdata_reset(&rdata); optout = ISC_TF((nsec3.flags & DNS_NSEC3FLAG_OPTOUT) != 0); if (found != NULL && optout && - dns_name_fullcompare(&name, dns_db_origin(db), &order, - &count) == dns_namereln_subdomain) { + dns_name_issubdomain(&name, dns_db_origin(db))) + { dns_rdataset_disassociate(rdataset); if (dns_rdataset_isassociated(sigrdataset)) dns_rdataset_disassociate(sigrdataset); - count = dns_name_countlabels(&name) - 1; - dns_name_getlabelsequence(&name, 1, count, &name); + skip++; + dns_name_getlabelsequence(qname, skip, labels - skip, + &name); ns_client_log(client, DNS_LOGCATEGORY_DNSSEC, NS_LOGMODULE_QUERY, ISC_LOG_DEBUG(3), "looking for closest provable encloser"); @@ -5334,7 +5335,11 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db, ns_client_log(client, DNS_LOGCATEGORY_DNSSEC, NS_LOGMODULE_QUERY, ISC_LOG_WARNING, "expected covering NSEC3, got an exact match"); - if (found != NULL) + if (found == qname) { + if (skip != 0U) + dns_name_getlabelsequence(qname, skip, labels - skip, + found); + } else if (found != NULL) dns_name_copy(&name, found, NULL); return; } diff --git a/bin/named/server.c b/bin/named/server.c index e6c6ca6d..057dac1b 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -8609,7 +8609,7 @@ ns_server_signing(ns_server_t *server, char *args, isc_buffer_t *text) { ptr = next_token(&args, " \t"); if (ptr == NULL) return (ISC_R_UNEXPECTEDEND); - memcpy(keystr, ptr, sizeof(keystr)); + memmove(keystr, ptr, sizeof(keystr)); } else if (strcasecmp(ptr, "-nsec3param") == 0) { const char *hashstr, *flagstr, *iterstr; char nbuf[512]; diff --git a/bin/named/statschannel.c b/bin/named/statschannel.c index 37e98a8e..8ec08d7b 100644 --- a/bin/named/statschannel.c +++ b/bin/named/statschannel.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2008-2014 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 @@ -27,6 +27,7 @@ #include <isc/print.h> #include <isc/socket.h> #include <isc/stats.h> +#include <isc/string.h> #include <isc/task.h> #include <dns/cache.h> @@ -1057,7 +1058,7 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) { ISC_XMLCHAR "type=\"text/xsl\" href=\"/bind9.ver3.xsl\"")); TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "statistics")); TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "version", - ISC_XMLCHAR "3.0")); + ISC_XMLCHAR "3.3")); /* Set common fields for statistics dump */ dumparg.type = statsformat_xml; @@ -1093,9 +1094,9 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) { if (dumparg.result != ISC_R_SUCCESS) goto error; } +else fprintf(stderr, "WTF WHERE'S RESQUERYRSTATS\n"); TRY0(xmlTextWriterEndElement(writer)); - /* <resstats> */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counters")); TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "type", ISC_XMLCHAR "resstats")); @@ -1109,7 +1110,7 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) { if (result != ISC_R_SUCCESS) goto error; } - TRY0(xmlTextWriterEndElement(writer)); /* </resstats> */ + TRY0(xmlTextWriterEndElement(writer)); cacherrstats = dns_db_getrrsetstats(view->cachedb); if (cacherrstats != NULL) { @@ -1156,7 +1157,7 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) { ISC_XMLCHAR "opcode")); dns_opcodestats_dump(server->opcodestats, opcodestat_dump, &dumparg, - 0); + ISC_STATSDUMP_VERBOSE); if (dumparg.result != ISC_R_SUCCESS) goto error; @@ -1370,10 +1371,10 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) { TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "server")); TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "boot-time")); TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR boottime)); - TRY0(xmlTextWriterEndElement(writer)); + TRY0(xmlTextWriterEndElement(writer)); /* boot-time */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "current-time")); TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR nowstr)); - TRY0(xmlTextWriterEndElement(writer)); + TRY0(xmlTextWriterEndElement(writer)); /* current-time */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "requests")); dumparg.result = ISC_R_SUCCESS; @@ -1461,7 +1462,8 @@ wrap_xmlfree(isc_buffer_t *buffer, void *arg) { } static isc_result_t -render_index(const char *url, const char *querystring, void *arg, +render_index(const char *url, isc_httpdurl_t *urlinfo, + const char *querystring, const char *headers, void *arg, unsigned int *retcode, const char **retmsg, const char **mimetype, isc_buffer_t *b, isc_httpdfree_t **freecb, void **freecb_args) @@ -1472,7 +1474,9 @@ render_index(const char *url, const char *querystring, void *arg, isc_result_t result; UNUSED(url); + UNUSED(urlinfo); UNUSED(querystring); + UNUSED(headers); result = generatexml(server, &msglen, &msg); @@ -1495,22 +1499,56 @@ render_index(const char *url, const char *querystring, void *arg, #endif /* HAVE_LIBXML2 */ static isc_result_t -render_xsl(const char *url, const char *querystring, void *args, - unsigned int *retcode, const char **retmsg, const char **mimetype, - isc_buffer_t *b, isc_httpdfree_t **freecb, - void **freecb_args) +render_xsl(const char *url, isc_httpdurl_t *urlinfo, + const char *querystring, const char *headers, + void *args, unsigned int *retcode, const char **retmsg, + const char **mimetype, isc_buffer_t *b, + isc_httpdfree_t **freecb, void **freecb_args) { + isc_result_t result; + UNUSED(url); UNUSED(querystring); UNUSED(args); + *freecb = NULL; + *freecb_args = NULL; + *mimetype = "text/xslt+xml"; + + if (urlinfo->isstatic) { + isc_time_t when; + char *p = strcasestr(headers, "If-Modified-Since: "); + + if (p != NULL) { + time_t t1, t2; + p += strlen("If-Modified-Since: "); + result = isc_time_parsehttptimestamp(p, &when); + if (result != ISC_R_SUCCESS) + goto send; + + result = isc_time_secondsastimet(&when, &t1); + if (result != ISC_R_SUCCESS) + goto send; + + result = isc_time_secondsastimet(&urlinfo->loadtime, + &t2); + if (result != ISC_R_SUCCESS) + goto send; + + if (t1 < t2) + goto send; + + *retcode = 304; + *retmsg = "Not modified"; + return (ISC_R_SUCCESS); + } + } + + send: *retcode = 200; *retmsg = "OK"; - *mimetype = "text/xslt+xml"; isc_buffer_reinit(b, xslmsg, strlen(xslmsg)); isc_buffer_add(b, strlen(xslmsg)); - *freecb = NULL; - *freecb_args = NULL; return (ISC_R_SUCCESS); } @@ -1647,11 +1685,11 @@ add_listener(ns_server_t *server, ns_statschannel_t **listenerp, #endif /* NEWSTATS */ #endif #ifdef NEWSTATS - isc_httpdmgr_addurl(listener->httpdmgr, "/bind9.ver3.xsl", render_xsl, - server); + isc_httpdmgr_addurl2(listener->httpdmgr, "/bind9.ver3.xsl", ISC_TRUE, + render_xsl, server); #else /* OLDSTATS */ - isc_httpdmgr_addurl(listener->httpdmgr, "/bind9.xsl", render_xsl, - server); + isc_httpdmgr_addurl2(listener->httpdmgr, "/bind9.xsl", ISC_TRUE, + render_xsl, server); #endif /* NEWSTATS */ *listenerp = listener; isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, diff --git a/bin/named/zoneconf.c b/bin/named/zoneconf.c index 7f36b143..3369c42d 100644 --- a/bin/named/zoneconf.c +++ b/bin/named/zoneconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -462,7 +462,7 @@ configure_staticstub_serveraddrs(const cfg_obj_t *zconfig, dns_zone_t *zone, if (rdata == NULL) return (ISC_R_NOMEMORY); region.base = (unsigned char *)(rdata + 1); - memcpy(region.base, &na.type, region.length); + memmove(region.base, &na.type, region.length); dns_rdata_init(rdata); dns_rdata_fromregion(rdata, dns_zone_getclass(zone), rdatalist->type, ®ion); @@ -490,7 +490,7 @@ configure_staticstub_serveraddrs(const cfg_obj_t *zconfig, dns_zone_t *zone, } region.length = sregion.length; region.base = (unsigned char *)(rdata + 1); - memcpy(region.base, sregion.base, region.length); + memmove(region.base, sregion.base, region.length); dns_rdata_init(rdata); dns_rdata_fromregion(rdata, dns_zone_getclass(zone), dns_rdatatype_ns, ®ion); @@ -554,7 +554,7 @@ configure_staticstub_servernames(const cfg_obj_t *zconfig, dns_zone_t *zone, return (ISC_R_NOMEMORY); region.length = sregion.length; region.base = (unsigned char *)(rdata + 1); - memcpy(region.base, sregion.base, region.length); + memmove(region.base, sregion.base, region.length); dns_rdata_init(rdata); dns_rdata_fromregion(rdata, dns_zone_getclass(zone), dns_rdatatype_ns, ®ion); diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index 0a5cc508..9923f891 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -840,13 +840,16 @@ setup_system(void) { if (servers == NULL) fatal("out of memory"); for (i = 0; i < ns_total; i++) { - if (lwconf->nameservers[i].family == LWRES_ADDRTYPE_V4) { + if (lwconf->nameservers[i].family == LWRES_ADDRTYPE_V4) + { struct in_addr in4; - memcpy(&in4, lwconf->nameservers[i].address, 4); + memmove(&in4, + lwconf->nameservers[i].address, 4); isc_sockaddr_fromin(&servers[i], &in4, dnsport); } else { struct in6_addr in6; - memcpy(&in6, lwconf->nameservers[i].address, 16); + memmove(&in6, + lwconf->nameservers[i].address, 16); isc_sockaddr_fromin6(&servers[i], &in6, dnsport); } @@ -2580,7 +2583,7 @@ start_gssrequest(dns_name_t *master) { if (userserver == NULL) get_address(namestr, dnsport, kserver); else - (void)memcpy(kserver, userserver, sizeof(isc_sockaddr_t)); + (void)memmove(kserver, userserver, sizeof(isc_sockaddr_t)); dns_fixedname_init(&fname); servname = dns_fixedname_name(&fname); diff --git a/bin/pkcs11/openssl-1.0.0k-patch b/bin/pkcs11/openssl-1.0.0l-patch index 7a6a1fa7..0d6aeefa 100644 --- a/bin/pkcs11/openssl-1.0.0k-patch +++ b/bin/pkcs11/openssl-1.0.0l-patch @@ -1,7 +1,7 @@ Index: openssl/Configure -diff -u openssl/Configure:1.9.2.1.2.1.4.1 openssl/Configure:1.11.2.1 ---- openssl/Configure:1.9.2.1.2.1.4.1 Tue May 14 15:37:45 2013 -+++ openssl/Configure Tue May 14 15:49:01 2013 +diff -u openssl/Configure:1.9.2.1.2.1.4.1.2.1 openssl/Configure:1.11.2.2 +--- openssl/Configure:1.9.2.1.2.1.4.1.2.1 Tue Jan 7 09:25:41 2014 ++++ openssl/Configure Tue Jan 7 09:28:47 2014 @@ -10,7 +10,7 @@ # see INSTALL for instructions. @@ -150,7 +150,7 @@ diff -u openssl/Makefile.org:1.5.2.1.2.1 openssl/Makefile.org:1.6 Index: openssl/README.pkcs11 diff -u /dev/null openssl/README.pkcs11:1.7.4.1 ---- /dev/null Fri Oct 4 14:35:09 2013 +--- /dev/null Tue Jan 7 11:13:25 2014 +++ openssl/README.pkcs11 Fri Oct 4 14:33:56 2013 @@ -0,0 +1,266 @@ +ISC modified @@ -610,7 +610,7 @@ diff -u openssl/crypto/engine/Makefile:1.8.2.1 openssl/crypto/engine/Makefile:1. tb_asnmth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h Index: openssl/crypto/engine/cryptoki.h diff -u /dev/null openssl/crypto/engine/cryptoki.h:1.4 ---- /dev/null Fri Oct 4 14:35:09 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/cryptoki.h Thu Dec 18 00:14:12 2008 @@ -0,0 +1,103 @@ +/* @@ -754,7 +754,7 @@ diff -u openssl/crypto/engine/engine.h:1.5.2.1 openssl/crypto/engine/engine.h:1. #endif Index: openssl/crypto/engine/hw_pk11.c diff -u /dev/null openssl/crypto/engine/hw_pk11.c:1.30.4.2 ---- /dev/null Fri Oct 4 14:35:09 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/hw_pk11.c Fri Oct 4 14:33:56 2013 @@ -0,0 +1,4116 @@ +/* @@ -4875,7 +4875,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11.c:1.30.4.2 +#endif /* OPENSSL_NO_HW */ Index: openssl/crypto/engine/hw_pk11_err.c diff -u /dev/null openssl/crypto/engine/hw_pk11_err.c:1.5 ---- /dev/null Fri Oct 4 14:35:09 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/hw_pk11_err.c Tue Jun 14 00:43:26 2011 @@ -0,0 +1,288 @@ +/* @@ -5168,7 +5168,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11_err.c:1.5 +} Index: openssl/crypto/engine/hw_pk11_err.h diff -u /dev/null openssl/crypto/engine/hw_pk11_err.h:1.12.4.1 ---- /dev/null Fri Oct 4 14:35:09 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/hw_pk11_err.h Fri Oct 4 14:33:56 2013 @@ -0,0 +1,440 @@ +/* @@ -5613,7 +5613,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11_err.h:1.12.4.1 +#endif /* HW_PK11_ERR_H */ Index: openssl/crypto/engine/hw_pk11_pub.c diff -u /dev/null openssl/crypto/engine/hw_pk11_pub.c:1.38.2.3 ---- /dev/null Fri Oct 4 14:35:09 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/hw_pk11_pub.c Fri Oct 4 14:33:56 2013 @@ -0,0 +1,3556 @@ +/* @@ -9174,7 +9174,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11_pub.c:1.38.2.3 +#endif /* OPENSSL_NO_HW */ Index: openssl/crypto/engine/hw_pk11ca.h diff -u /dev/null openssl/crypto/engine/hw_pk11ca.h:1.4 ---- /dev/null Fri Oct 4 14:35:10 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/hw_pk11ca.h Wed Jun 15 21:12:20 2011 @@ -0,0 +1,32 @@ +/* Redefine all pk11/PK11 external symbols to pk11ca/PK11CA */ @@ -9211,7 +9211,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11ca.h:1.4 +#define ENGINE_load_pk11 ENGINE_load_pk11ca Index: openssl/crypto/engine/hw_pk11so.c diff -u /dev/null openssl/crypto/engine/hw_pk11so.c:1.7.4.1 ---- /dev/null Fri Oct 4 14:35:10 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/hw_pk11so.c Fri Oct 4 14:33:56 2013 @@ -0,0 +1,1775 @@ +/* @@ -10991,7 +10991,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11so.c:1.7.4.1 +#endif /* OPENSSL_NO_HW */ Index: openssl/crypto/engine/hw_pk11so.h diff -u /dev/null openssl/crypto/engine/hw_pk11so.h:1.4 ---- /dev/null Fri Oct 4 14:35:10 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/hw_pk11so.h Wed Jun 15 21:12:20 2011 @@ -0,0 +1,32 @@ +/* Redefine all pk11/PK11 external symbols to pk11so/PK11SO */ @@ -11028,7 +11028,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11so.h:1.4 +#define ENGINE_load_pk11 ENGINE_load_pk11so Index: openssl/crypto/engine/hw_pk11so_pub.c diff -u /dev/null openssl/crypto/engine/hw_pk11so_pub.c:1.8.2.2 ---- /dev/null Fri Oct 4 14:35:10 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/hw_pk11so_pub.c Fri Oct 4 14:33:56 2013 @@ -0,0 +1,1642 @@ +/* @@ -12675,11 +12675,11 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11so_pub.c:1.8.2.2 +#endif /* OPENSSL_NO_HW */ Index: openssl/crypto/engine/pkcs11.h diff -u /dev/null openssl/crypto/engine/pkcs11.h:1.1.1.1 ---- /dev/null Fri Oct 4 14:35:10 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/pkcs11.h Wed Oct 24 23:27:09 2007 @@ -0,0 +1,299 @@ +/* pkcs11.h include file for PKCS #11. */ -+/* $Revision$ */ ++/* $Revision: 1.1.1.1 $ */ + +/* License to copy and use this software is granted provided that it is + * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface @@ -12979,11 +12979,11 @@ diff -u /dev/null openssl/crypto/engine/pkcs11.h:1.1.1.1 +#endif Index: openssl/crypto/engine/pkcs11f.h diff -u /dev/null openssl/crypto/engine/pkcs11f.h:1.1.1.1 ---- /dev/null Fri Oct 4 14:35:10 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/pkcs11f.h Wed Oct 24 23:27:09 2007 @@ -0,0 +1,912 @@ +/* pkcs11f.h include file for PKCS #11. */ -+/* $Revision$ */ ++/* $Revision: 1.1.1.1 $ */ + +/* License to copy and use this software is granted provided that it is + * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface @@ -13896,11 +13896,11 @@ diff -u /dev/null openssl/crypto/engine/pkcs11f.h:1.1.1.1 +#endif Index: openssl/crypto/engine/pkcs11t.h diff -u /dev/null openssl/crypto/engine/pkcs11t.h:1.2 ---- /dev/null Fri Oct 4 14:35:10 2013 +--- /dev/null Tue Jan 7 11:13:26 2014 +++ openssl/crypto/engine/pkcs11t.h Sat Aug 30 11:58:07 2008 @@ -0,0 +1,1885 @@ +/* pkcs11t.h include file for PKCS #11. */ -+/* $Revision$ */ ++/* $Revision: 1.2 $ */ + +/* License to copy and use this software is granted provided that it is + * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface diff --git a/bin/pkcs11/openssl-1.0.1e-patch b/bin/pkcs11/openssl-1.0.1f-patch index 3b8b29c3..f492a11a 100644 --- a/bin/pkcs11/openssl-1.0.1e-patch +++ b/bin/pkcs11/openssl-1.0.1f-patch @@ -1,7 +1,7 @@ Index: openssl/Configure -diff -u openssl/Configure:1.9.2.1.2.1.2.1.2.1 openssl/Configure:1.13 ---- openssl/Configure:1.9.2.1.2.1.2.1.2.1 Wed May 15 11:46:59 2013 -+++ openssl/Configure Wed May 15 11:57:36 2013 +diff -u openssl/Configure:1.9.2.1.2.1.2.1.2.1.2.1 openssl/Configure:1.14 +--- openssl/Configure:1.9.2.1.2.1.2.1.2.1.2.1 Tue Jan 7 09:44:50 2014 ++++ openssl/Configure Tue Jan 7 09:46:34 2014 @@ -10,7 +10,7 @@ # see INSTALL for instructions. @@ -135,9 +135,9 @@ diff -u openssl/Configure:1.9.2.1.2.1.2.1.2.1 openssl/Configure:1.13 s/^SHLIB_VERSION_HISTORY=.*/SHLIB_VERSION_HISTORY=$shlib_version_history/; s/^SHLIB_MAJOR=.*/SHLIB_MAJOR=$shlib_major/; Index: openssl/Makefile.org -diff -u openssl/Makefile.org:1.5.2.1.2.1.2.1.2.1 openssl/Makefile.org:1.8 ---- openssl/Makefile.org:1.5.2.1.2.1.2.1.2.1 Wed May 15 11:46:59 2013 -+++ openssl/Makefile.org Wed May 15 11:57:36 2013 +diff -u openssl/Makefile.org:1.5.2.1.2.1.2.1.2.1.2.1 openssl/Makefile.org:1.9 +--- openssl/Makefile.org:1.5.2.1.2.1.2.1.2.1.2.1 Tue Jan 7 09:44:51 2014 ++++ openssl/Makefile.org Tue Jan 7 09:46:34 2014 @@ -26,6 +26,9 @@ INSTALL_PREFIX= INSTALLTOP=/usr/local/ssl @@ -150,7 +150,7 @@ diff -u openssl/Makefile.org:1.5.2.1.2.1.2.1.2.1 openssl/Makefile.org:1.8 Index: openssl/README.pkcs11 diff -u /dev/null openssl/README.pkcs11:1.8 ---- /dev/null Fri Oct 4 14:27:29 2013 +--- /dev/null Tue Jan 7 11:14:50 2014 +++ openssl/README.pkcs11 Fri Oct 4 14:16:43 2013 @@ -0,0 +1,266 @@ +ISC modified @@ -611,7 +611,7 @@ diff -u openssl/crypto/engine/Makefile:1.8.2.1.4.1 openssl/crypto/engine/Makefil tb_asnmth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h Index: openssl/crypto/engine/cryptoki.h diff -u /dev/null openssl/crypto/engine/cryptoki.h:1.4 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/cryptoki.h Thu Dec 18 00:14:12 2008 @@ -0,0 +1,103 @@ +/* @@ -755,7 +755,7 @@ diff -u openssl/crypto/engine/engine.h:1.5.2.1.4.1 openssl/crypto/engine/engine. #endif Index: openssl/crypto/engine/hw_pk11.c diff -u /dev/null openssl/crypto/engine/hw_pk11.c:1.33 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/hw_pk11.c Fri Oct 4 14:07:41 2013 @@ -0,0 +1,4010 @@ +/* @@ -4770,7 +4770,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11.c:1.33 +#endif /* OPENSSL_NO_HW */ Index: openssl/crypto/engine/hw_pk11_err.c diff -u /dev/null openssl/crypto/engine/hw_pk11_err.c:1.5 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/hw_pk11_err.c Tue Jun 14 00:43:26 2011 @@ -0,0 +1,288 @@ +/* @@ -5063,7 +5063,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11_err.c:1.5 +} Index: openssl/crypto/engine/hw_pk11_err.h diff -u /dev/null openssl/crypto/engine/hw_pk11_err.h:1.13 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/hw_pk11_err.h Fri Oct 4 14:04:20 2013 @@ -0,0 +1,440 @@ +/* @@ -5508,7 +5508,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11_err.h:1.13 +#endif /* HW_PK11_ERR_H */ Index: openssl/crypto/engine/hw_pk11_pub.c diff -u /dev/null openssl/crypto/engine/hw_pk11_pub.c:1.42 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/hw_pk11_pub.c Fri Oct 4 14:27:06 2013 @@ -0,0 +1,3556 @@ +/* @@ -9069,7 +9069,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11_pub.c:1.42 +#endif /* OPENSSL_NO_HW */ Index: openssl/crypto/engine/hw_pk11ca.h diff -u /dev/null openssl/crypto/engine/hw_pk11ca.h:1.4 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/hw_pk11ca.h Wed Jun 15 21:12:20 2011 @@ -0,0 +1,32 @@ +/* Redefine all pk11/PK11 external symbols to pk11ca/PK11CA */ @@ -9106,7 +9106,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11ca.h:1.4 +#define ENGINE_load_pk11 ENGINE_load_pk11ca Index: openssl/crypto/engine/hw_pk11so.c diff -u /dev/null openssl/crypto/engine/hw_pk11so.c:1.8 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/hw_pk11so.c Fri Oct 4 14:05:16 2013 @@ -0,0 +1,1775 @@ +/* @@ -10886,7 +10886,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11so.c:1.8 +#endif /* OPENSSL_NO_HW */ Index: openssl/crypto/engine/hw_pk11so.h diff -u /dev/null openssl/crypto/engine/hw_pk11so.h:1.4 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/hw_pk11so.h Wed Jun 15 21:12:20 2011 @@ -0,0 +1,32 @@ +/* Redefine all pk11/PK11 external symbols to pk11so/PK11SO */ @@ -10923,7 +10923,7 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11so.h:1.4 +#define ENGINE_load_pk11 ENGINE_load_pk11so Index: openssl/crypto/engine/hw_pk11so_pub.c diff -u /dev/null openssl/crypto/engine/hw_pk11so_pub.c:1.10 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/hw_pk11so_pub.c Fri Oct 4 14:05:38 2013 @@ -0,0 +1,1642 @@ +/* @@ -12570,11 +12570,11 @@ diff -u /dev/null openssl/crypto/engine/hw_pk11so_pub.c:1.10 +#endif /* OPENSSL_NO_HW */ Index: openssl/crypto/engine/pkcs11.h diff -u /dev/null openssl/crypto/engine/pkcs11.h:1.1.1.1 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/pkcs11.h Wed Oct 24 23:27:09 2007 @@ -0,0 +1,299 @@ +/* pkcs11.h include file for PKCS #11. */ -+/* $Revision$ */ ++/* $Revision: 1.1.1.1 $ */ + +/* License to copy and use this software is granted provided that it is + * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface @@ -12874,11 +12874,11 @@ diff -u /dev/null openssl/crypto/engine/pkcs11.h:1.1.1.1 +#endif Index: openssl/crypto/engine/pkcs11f.h diff -u /dev/null openssl/crypto/engine/pkcs11f.h:1.1.1.1 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/pkcs11f.h Wed Oct 24 23:27:09 2007 @@ -0,0 +1,912 @@ +/* pkcs11f.h include file for PKCS #11. */ -+/* $Revision$ */ ++/* $Revision: 1.1.1.1 $ */ + +/* License to copy and use this software is granted provided that it is + * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface @@ -13791,11 +13791,11 @@ diff -u /dev/null openssl/crypto/engine/pkcs11f.h:1.1.1.1 +#endif Index: openssl/crypto/engine/pkcs11t.h diff -u /dev/null openssl/crypto/engine/pkcs11t.h:1.2 ---- /dev/null Fri Oct 4 14:27:30 2013 +--- /dev/null Tue Jan 7 11:14:51 2014 +++ openssl/crypto/engine/pkcs11t.h Sat Aug 30 11:58:07 2008 @@ -0,0 +1,1885 @@ +/* pkcs11t.h include file for PKCS #11. */ -+/* $Revision$ */ ++/* $Revision: 1.2 $ */ + +/* License to copy and use this software is granted provided that it is + * identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface diff --git a/bin/rndc/rndc.c b/bin/rndc/rndc.c index ba2c3f6d..33802db2 100644 --- a/bin/rndc/rndc.c +++ b/bin/rndc/rndc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -725,7 +725,7 @@ main(int argc, char **argv) { result = isc_file_progname(*argv, program, sizeof(program)); if (result != ISC_R_SUCCESS) - memcpy(program, "rndc", 5); + memmove(program, "rndc", 5); progname = program; admin_conffile = RNDC_CONFFILE; @@ -857,7 +857,7 @@ main(int argc, char **argv) { p = args; for (i = 0; i < argc; i++) { size_t len = strlen(argv[i]); - memcpy(p, argv[i], len); + memmove(p, argv[i], len); p += len; *p++ = ' '; } diff --git a/bin/tests/hash_test.c b/bin/tests/hash_test.c index 73d397b0..2b9165c6 100644 --- a/bin/tests/hash_test.c +++ b/bin/tests/hash_test.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -66,35 +66,35 @@ main(int argc, char **argv) { s = "abc"; isc_sha1_init(&sha1); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_sha1_update(&sha1, buffer, strlen(s)); isc_sha1_final(&sha1, digest); print_digest(s, "sha1", digest, ISC_SHA1_DIGESTLENGTH/4); s = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; isc_sha1_init(&sha1); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_sha1_update(&sha1, buffer, strlen(s)); isc_sha1_final(&sha1, digest); print_digest(s, "sha1", digest, ISC_SHA1_DIGESTLENGTH/4); s = "abc"; isc_sha224_init(&sha224); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_sha224_update(&sha224, buffer, strlen(s)); isc_sha224_final(digest, &sha224); print_digest(s, "sha224", digest, ISC_SHA224_DIGESTLENGTH/4); s = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; isc_sha224_init(&sha224); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_sha224_update(&sha224, buffer, strlen(s)); isc_sha224_final(digest, &sha224); print_digest(s, "sha224", digest, ISC_SHA224_DIGESTLENGTH/4); s = "abc"; isc_md5_init(&md5); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_md5_update(&md5, buffer, strlen(s)); isc_md5_final(&md5, digest); print_digest(s, "md5", digest, 4); @@ -105,7 +105,7 @@ main(int argc, char **argv) { s = "Hi There"; memset(key, 0x0b, 16); isc_hmacmd5_init(&hmacmd5, key, 16); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacmd5_update(&hmacmd5, buffer, strlen(s)); isc_hmacmd5_sign(&hmacmd5, digest); print_digest(s, "hmacmd5", digest, 4); @@ -113,7 +113,7 @@ main(int argc, char **argv) { s = "what do ya want for nothing?"; strcpy((char *)key, "Jefe"); isc_hmacmd5_init(&hmacmd5, key, 4); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacmd5_update(&hmacmd5, buffer, strlen(s)); isc_hmacmd5_sign(&hmacmd5, digest); print_digest(s, "hmacmd5", digest, 4); @@ -125,7 +125,7 @@ main(int argc, char **argv) { "\335\335\335\335\335\335\335\335\335\335"; memset(key, 0xaa, 16); isc_hmacmd5_init(&hmacmd5, key, 16); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacmd5_update(&hmacmd5, buffer, strlen(s)); isc_hmacmd5_sign(&hmacmd5, digest); print_digest(s, "hmacmd5", digest, 4); @@ -136,7 +136,7 @@ main(int argc, char **argv) { s = "Hi There"; memset(key, 0x0b, 20); isc_hmacsha1_init(&hmacsha1, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha1_update(&hmacsha1, buffer, strlen(s)); isc_hmacsha1_sign(&hmacsha1, digest, ISC_SHA1_DIGESTLENGTH); print_digest(s, "hmacsha1", digest, ISC_SHA1_DIGESTLENGTH/4); @@ -144,7 +144,7 @@ main(int argc, char **argv) { s = "what do ya want for nothing?"; strcpy((char *)key, "Jefe"); isc_hmacsha1_init(&hmacsha1, key, 4); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha1_update(&hmacsha1, buffer, strlen(s)); isc_hmacsha1_sign(&hmacsha1, digest, ISC_SHA1_DIGESTLENGTH); print_digest(s, "hmacsha1", digest, ISC_SHA1_DIGESTLENGTH/4); @@ -156,7 +156,7 @@ main(int argc, char **argv) { "\335\335\335\335\335\335\335\335\335\335"; memset(key, 0xaa, 20); isc_hmacsha1_init(&hmacsha1, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha1_update(&hmacsha1, buffer, strlen(s)); isc_hmacsha1_sign(&hmacsha1, digest, ISC_SHA1_DIGESTLENGTH); print_digest(s, "hmacsha1", digest, ISC_SHA1_DIGESTLENGTH/4); @@ -167,7 +167,7 @@ main(int argc, char **argv) { s = "Hi There"; memset(key, 0x0b, 20); isc_hmacsha224_init(&hmacsha224, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha224_update(&hmacsha224, buffer, strlen(s)); isc_hmacsha224_sign(&hmacsha224, digest, ISC_SHA224_DIGESTLENGTH); print_digest(s, "hmacsha224", digest, ISC_SHA224_DIGESTLENGTH/4); @@ -175,7 +175,7 @@ main(int argc, char **argv) { s = "what do ya want for nothing?"; strcpy((char *)key, "Jefe"); isc_hmacsha224_init(&hmacsha224, key, 4); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha224_update(&hmacsha224, buffer, strlen(s)); isc_hmacsha224_sign(&hmacsha224, digest, ISC_SHA224_DIGESTLENGTH); print_digest(s, "hmacsha224", digest, ISC_SHA224_DIGESTLENGTH/4); @@ -187,7 +187,7 @@ main(int argc, char **argv) { "\335\335\335\335\335\335\335\335\335\335"; memset(key, 0xaa, 20); isc_hmacsha224_init(&hmacsha224, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha224_update(&hmacsha224, buffer, strlen(s)); isc_hmacsha224_sign(&hmacsha224, digest, ISC_SHA224_DIGESTLENGTH); print_digest(s, "hmacsha224", digest, ISC_SHA224_DIGESTLENGTH/4); @@ -198,7 +198,7 @@ main(int argc, char **argv) { s = "Hi There"; memset(key, 0x0b, 20); isc_hmacsha256_init(&hmacsha256, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha256_update(&hmacsha256, buffer, strlen(s)); isc_hmacsha256_sign(&hmacsha256, digest, ISC_SHA256_DIGESTLENGTH); print_digest(s, "hmacsha256", digest, ISC_SHA256_DIGESTLENGTH/4); @@ -206,7 +206,7 @@ main(int argc, char **argv) { s = "what do ya want for nothing?"; strcpy((char *)key, "Jefe"); isc_hmacsha256_init(&hmacsha256, key, 4); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha256_update(&hmacsha256, buffer, strlen(s)); isc_hmacsha256_sign(&hmacsha256, digest, ISC_SHA256_DIGESTLENGTH); print_digest(s, "hmacsha256", digest, ISC_SHA256_DIGESTLENGTH/4); @@ -218,7 +218,7 @@ main(int argc, char **argv) { "\335\335\335\335\335\335\335\335\335\335"; memset(key, 0xaa, 20); isc_hmacsha256_init(&hmacsha256, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha256_update(&hmacsha256, buffer, strlen(s)); isc_hmacsha256_sign(&hmacsha256, digest, ISC_SHA256_DIGESTLENGTH); print_digest(s, "hmacsha256", digest, ISC_SHA256_DIGESTLENGTH/4); @@ -229,7 +229,7 @@ main(int argc, char **argv) { s = "Hi There"; memset(key, 0x0b, 20); isc_hmacsha384_init(&hmacsha384, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha384_update(&hmacsha384, buffer, strlen(s)); isc_hmacsha384_sign(&hmacsha384, digest, ISC_SHA384_DIGESTLENGTH); print_digest(s, "hmacsha384", digest, ISC_SHA384_DIGESTLENGTH/4); @@ -237,7 +237,7 @@ main(int argc, char **argv) { s = "what do ya want for nothing?"; strcpy((char *)key, "Jefe"); isc_hmacsha384_init(&hmacsha384, key, 4); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha384_update(&hmacsha384, buffer, strlen(s)); isc_hmacsha384_sign(&hmacsha384, digest, ISC_SHA384_DIGESTLENGTH); print_digest(s, "hmacsha384", digest, ISC_SHA384_DIGESTLENGTH/4); @@ -249,7 +249,7 @@ main(int argc, char **argv) { "\335\335\335\335\335\335\335\335\335\335"; memset(key, 0xaa, 20); isc_hmacsha384_init(&hmacsha384, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha384_update(&hmacsha384, buffer, strlen(s)); isc_hmacsha384_sign(&hmacsha384, digest, ISC_SHA384_DIGESTLENGTH); print_digest(s, "hmacsha384", digest, ISC_SHA384_DIGESTLENGTH/4); @@ -260,7 +260,7 @@ main(int argc, char **argv) { s = "Hi There"; memset(key, 0x0b, 20); isc_hmacsha512_init(&hmacsha512, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha512_update(&hmacsha512, buffer, strlen(s)); isc_hmacsha512_sign(&hmacsha512, digest, ISC_SHA512_DIGESTLENGTH); print_digest(s, "hmacsha512", digest, ISC_SHA512_DIGESTLENGTH/4); @@ -268,7 +268,7 @@ main(int argc, char **argv) { s = "what do ya want for nothing?"; strcpy((char *)key, "Jefe"); isc_hmacsha512_init(&hmacsha512, key, 4); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha512_update(&hmacsha512, buffer, strlen(s)); isc_hmacsha512_sign(&hmacsha512, digest, ISC_SHA512_DIGESTLENGTH); print_digest(s, "hmacsha512", digest, ISC_SHA512_DIGESTLENGTH/4); @@ -280,7 +280,7 @@ main(int argc, char **argv) { "\335\335\335\335\335\335\335\335\335\335"; memset(key, 0xaa, 20); isc_hmacsha512_init(&hmacsha512, key, 20); - memcpy(buffer, s, strlen(s)); + memmove(buffer, s, strlen(s)); isc_hmacsha512_update(&hmacsha512, buffer, strlen(s)); isc_hmacsha512_sign(&hmacsha512, digest, ISC_SHA512_DIGESTLENGTH); print_digest(s, "hmacsha512", digest, ISC_SHA512_DIGESTLENGTH/4); diff --git a/bin/tests/names/t_names.c b/bin/tests/names/t_names.c index 4b710e67..1982e5ec 100644 --- a/bin/tests/names/t_names.c +++ b/bin/tests/names/t_names.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -296,7 +296,7 @@ hname_to_tname(char *src, char *target, size_t len) { */ if (srclen >= len) return (1); - memcpy(target, src, srclen + 1); + memmove(target, src, srclen + 1); return (0); } diff --git a/bin/tests/rdata_test.c b/bin/tests/rdata_test.c index 51cc406a..21352905 100644 --- a/bin/tests/rdata_test.c +++ b/bin/tests/rdata_test.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2011, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1193,7 +1193,7 @@ main(int argc, char *argv[]) { dns_rdata_init(&last); region.base = malloc(region.length = rdata.length); if (region.base) { - memcpy(region.base, rdata.data, rdata.length); + memmove(region.base, rdata.data, rdata.length); dns_rdata_fromregion(&last, class, type, ®ion); lasttype = type; first = 0; diff --git a/bin/tests/system/checkconf/clean.sh b/bin/tests/system/checkconf/clean.sh index 94f09d9b..dde87131 100644 --- a/bin/tests/system/checkconf/clean.sh +++ b/bin/tests/system/checkconf/clean.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2011-2013 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,3 +17,4 @@ # $Id: clean.sh,v 1.2 2011/05/07 05:55:17 each Exp $ rm -f good.conf.in good.conf.out badzero.conf +rm -rf test.keydir diff --git a/bin/tests/system/checkconf/good.conf b/bin/tests/system/checkconf/good.conf index 5444fdde..defbab47 100644 --- a/bin/tests/system/checkconf/good.conf +++ b/bin/tests/system/checkconf/good.conf @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005, 2007, 2010-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2005, 2007, 2010-2014 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 @@ -104,3 +104,7 @@ view "second" { dnssec-validation auto; zone-statistics full; }; +key "mykey" { + algorithm "hmac-md5"; + secret "qwertyuiopasdfgh"; +}; diff --git a/bin/tests/system/checkconf/tests.sh b/bin/tests/system/checkconf/tests.sh index 2f945bf8..d47addee 100644 --- a/bin/tests/system/checkconf/tests.sh +++ b/bin/tests/system/checkconf/tests.sh @@ -1,4 +1,4 @@ -# Copyright (C) 2005, 2007, 2010-2013 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2005, 2007, 2010-2014 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 @@ -34,6 +34,16 @@ cmp good.conf.in good.conf.out || ret=1 if [ $ret != 0 ]; then echo "I:failed"; fi status=`expr $status + $ret` +echo "I: checking that named-checkconf -x removes secrets" +ret=0 +# ensure there is a secret and that it is not the check string. +grep 'secret "' good.conf.in > /dev/null || ret=1 +grep 'secret "????????????????"' good.conf.in > /dev/null 2>&1 && ret=1 +$CHECKCONF -p -x good.conf.in | grep -v '^good.conf.in:' > good.conf.out 2>&1 || ret=1 +grep 'secret "????????????????"' good.conf.out > /dev/null 2>&1 || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; fi +status=`expr $status + $ret` + for bad in bad*.conf do ret=0 @@ -120,5 +130,21 @@ n=`$CHECKCONF inline-bad.conf 2>&1 | grep "missing 'file' entry" | wc -l` if [ $ret != 0 ]; then echo "I:failed"; fi status=`expr $status + $ret` +echo "I: checking for missing key directory warning" +ret=0 +rm -rf test.keydir +n=`$CHECKCONF warn-keydir.conf 2>&1 | grep "'test.keydir' does not exist" | wc -l` +[ $n -eq 1 ] || ret=1 +touch test.keydir +n=`$CHECKCONF warn-keydir.conf 2>&1 | grep "'test.keydir' is not a directory" | wc -l` +[ $n -eq 1 ] || ret=1 +rm -f test.keydir +mkdir test.keydir +n=`$CHECKCONF warn-keydir.conf 2>&1 | grep "key-directory" | wc -l` +[ $n -eq 0 ] || ret=1 +rm -rf test.keydir +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/checkconf/warn-keydir.conf b/bin/tests/system/checkconf/warn-keydir.conf new file mode 100644 index 00000000..c537a3a2 --- /dev/null +++ b/bin/tests/system/checkconf/warn-keydir.conf @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2013 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. + */ + +/* + * key-directory defined but doesn't exist. + */ +options { + directory "."; +}; + +zone dummy { + type master; + file "xxxx"; + key-directory "test.keydir"; +}; diff --git a/bin/tests/system/dlvauto/tests.sh b/bin/tests/system/dlvauto/tests.sh index 25bb8e30..a6866980 100644 --- a/bin/tests/system/dlvauto/tests.sh +++ b/bin/tests/system/dlvauto/tests.sh @@ -1,4 +1,4 @@ -# Copyright (C) 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2011, 2012, 2014 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 @@ -31,7 +31,7 @@ then ret=0 $PERL $SYSTEMTESTTOP/stop.pl . ns2 || ret=1 sleep 1 - (cd ns2; $NAMED -f -d 100 -c named.conf >> named.run 2>&1 & ) + (cd ns2; $NAMED -g -d 100 -c named.conf >> named.run 2>&1 & ) sleep 2 $DIG $DIGOPTS soa . @10.53.0.2 > dig.out.ns2.test$n || ret=1 grep "status: NOERROR" dig.out.ns2.test$n > /dev/null || ret=1 diff --git a/bin/tests/system/dnssec/ns2/example.db.in b/bin/tests/system/dnssec/ns2/example.db.in index 7be10442..db66cc66 100644 --- a/bin/tests/system/dnssec/ns2/example.db.in +++ b/bin/tests/system/dnssec/ns2/example.db.in @@ -1,4 +1,4 @@ -; Copyright (C) 2004, 2007-2012 Internet Systems Consortium, Inc. ("ISC") +; Copyright (C) 2004, 2007-2013 Internet Systems Consortium, Inc. ("ISC") ; Copyright (C) 2000-2002 Internet Software Consortium. ; ; Permission to use, copy, modify, and/or distribute this software for any @@ -54,8 +54,8 @@ dname2 DNAME dname2-target foo.dname2-target TXT "testing dname" ; A secure subdomain -secure NS ns.secure -ns.secure A 10.53.0.3 +secure NS ns3.secure +ns3.secure A 10.53.0.3 ; An insecure subdomain insecure NS ns.insecure diff --git a/bin/tests/system/dnssec/ns2/insecure.secure.example.db b/bin/tests/system/dnssec/ns2/insecure.secure.example.db index f16a2cf8..b25af847 100644 --- a/bin/tests/system/dnssec/ns2/insecure.secure.example.db +++ b/bin/tests/system/dnssec/ns2/insecure.secure.example.db @@ -1,4 +1,4 @@ -; Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC") +; Copyright (C) 2004, 2007, 2013 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,8 +13,6 @@ ; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR ; PERFORMANCE OF THIS SOFTWARE. -; $Id: insecure.secure.example.db,v 1.9 2007/06/19 23:47:02 tbox Exp $ - $TTL 300 ; 5 minutes @ IN SOA mname1. . ( 2000042407 ; serial @@ -23,8 +21,8 @@ $TTL 300 ; 5 minutes 1814400 ; expire (3 weeks) 3600 ; minimum (1 hour) ) - NS ns -ns A 10.53.0.3 + NS ns2 +ns2 A 10.53.0.2 a A 10.0.0.1 b A 10.0.0.2 diff --git a/bin/tests/system/dnssec/ns3/secure.example.db.in b/bin/tests/system/dnssec/ns3/secure.example.db.in index c9de3e5b..0d2fa4f4 100644 --- a/bin/tests/system/dnssec/ns3/secure.example.db.in +++ b/bin/tests/system/dnssec/ns3/secure.example.db.in @@ -1,4 +1,4 @@ -; Copyright (C) 2004, 2007, 2008, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") +; Copyright (C) 2004, 2007, 2008, 2010, 2012, 2013 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,8 +13,6 @@ ; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR ; PERFORMANCE OF THIS SOFTWARE. -; $Id: secure.example.db.in,v 1.16 2010/07/15 01:17:45 jinmei Exp $ - $TTL 300 ; 5 minutes @ IN SOA mname1. . ( 2000042407 ; serial @@ -23,8 +21,8 @@ $TTL 300 ; 5 minutes 1814400 ; expire (3 weeks) 3600 ; minimum (1 hour) ) - NS ns -ns A 10.53.0.3 + NS ns3 +ns3 A 10.53.0.3 a A 10.0.0.1 b A 10.0.0.2 @@ -36,8 +34,8 @@ x CNAME a private NS ns.private ns.private A 10.53.0.2 -insecure NS ns.insecure -ns.insecure A 10.53.0.2 +insecure NS ns2.insecure +ns2.insecure A 10.53.0.2 nosoa NS ns.nosoa ns.nosoa A 10.53.0.7 diff --git a/bin/tests/system/dnssec/ns4/named4.conf b/bin/tests/system/dnssec/ns4/named4.conf new file mode 100644 index 00000000..1afde2d6 --- /dev/null +++ b/bin/tests/system/dnssec/ns4/named4.conf @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2013 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. + */ + +// 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; }; +}; + +key rndc_key { + secret "1234abcd8765"; + algorithm hmac-sha256; +}; + +controls { + inet 10.53.0.4 port 9953 allow { any; } keys { rndc_key; }; +}; + +key auth { + secret "1234abcd8765"; + algorithm hmac-sha256; +}; + +include "trusted.conf"; + +view rec { + match-recursive-only yes; + recursion yes; + acache-enable yes; + dnssec-validation yes; + dnssec-accept-expired yes; + + zone "." { + type hint; + file "../../common/root.hint"; + }; + + zone secure.example { + type static-stub; + server-addresses { 10.53.0.4; }; + }; + + zone insecure.secure.example { + type static-stub; + server-addresses { 10.53.0.4; }; + }; +}; + +view auth { + recursion no; + allow-recursion { none; }; + + zone secure.example { + type slave; + masters { 10.53.0.3; }; + }; + + zone insecure.secure.example { + type slave; + masters { 10.53.0.2; }; + }; +}; diff --git a/bin/tests/system/dnssec/tests.sh b/bin/tests/system/dnssec/tests.sh index f6499a43..4a012af3 100644 --- a/bin/tests/system/dnssec/tests.sh +++ b/bin/tests/system/dnssec/tests.sh @@ -2336,5 +2336,21 @@ n=`expr $n + 1` if test "$before" = "$after" ; then echo "I:failed"; ret=1; fi status=`expr $status + $ret` +cp ns4/named4.conf ns4/named.conf +$RNDC -c ../common/rndc.conf -s 10.53.0.4 -p 9953 reconfig 2>&1 | sed 's/^/I:ns4 /' +sleep 3 + +echo "I:check insecure delegation between static-stub zones ($n)" +ret=0 +$DIG $DIGOPTS ns insecure.secure.example \ + @10.53.0.4 > dig.out.ns4.1.test$n || ret=1 +grep "SERVFAIL" dig.out.ns4.1.test$n > /dev/null && ret=1 +$DIG $DIGOPTS ns secure.example \ + @10.53.0.4 > dig.out.ns4.2.test$n || ret=1 +grep "SERVFAIL" dig.out.ns4.2.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/ixfr/clean.sh b/bin/tests/system/ixfr/clean.sh index a4457453..ac5b8279 100644 --- a/bin/tests/system/ixfr/clean.sh +++ b/bin/tests/system/ixfr/clean.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2004, 2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007, 2011, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2001 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -22,3 +22,4 @@ rm -f ns3/*.jnl ns3/mytest.db ns3/subtest.db rm -f ns4/*.jnl ns4/*.db rm -f */named.memstats rm -f dig.out +rm -f ns3/large.db diff --git a/bin/tests/system/ixfr/ns3/named.conf b/bin/tests/system/ixfr/ns3/named.conf index c01ce546..52a5719f 100644 --- a/bin/tests/system/ixfr/ns3/named.conf +++ b/bin/tests/system/ixfr/ns3/named.conf @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2011, 2014 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,37 +17,41 @@ /* $Id: named.conf,v 1.3 2011/09/07 23:46:27 tbox Exp $ */ options { - query-source address 10.53.0.3; - notify-source 10.53.0.3; - transfer-source 10.53.0.3; + query-source address 10.53.0.3; + notify-source 10.53.0.3; + transfer-source 10.53.0.3; allow-transfer { any; }; - port 5300; - pid-file "named.pid"; - listen-on { 10.53.0.3; }; - listen-on-v6 { none; }; - recursion no; - notify yes; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.3; }; + listen-on-v6 { none; }; + recursion no; + notify yes; }; key rndc_key { - secret "1234abcd8765"; - algorithm hmac-md5; + secret "1234abcd8765"; + algorithm hmac-md5; }; controls { - inet 10.53.0.3 port 9953 allow { any; } keys { rndc_key; }; + inet 10.53.0.3 port 9953 allow { any; } keys { rndc_key; }; }; view "primary" { - ixfr-from-differences yes; + ixfr-from-differences yes; request-ixfr yes; - zone "test" IN { - type master; - file "mytest.db"; - }; + zone "test" IN { + type master; + file "mytest.db"; + }; zone "sub.test" IN { - type master; - file "subtest.db"; - request-ixfr no; - }; + type master; + file "subtest.db"; + request-ixfr no; + }; + zone "large" IN { + type master; + file "large.db"; + }; }; diff --git a/bin/tests/system/ixfr/setup.sh b/bin/tests/system/ixfr/setup.sh index 7e68ebcc..d8155c12 100644 --- a/bin/tests/system/ixfr/setup.sh +++ b/bin/tests/system/ixfr/setup.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2004, 2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007, 2011, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2001 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -45,3 +45,5 @@ EOF # Setup initial db files for ns3 cp ns3/mytest0.db ns3/mytest.db cp ns3/subtest0.db ns3/subtest.db +sh ../genzone.sh 3 > ns3/large.db +awk 'END { for (i = 0; i < 10000; i++) printf("record%d 10 IN TXT this is record %d\n", i, i) }' < /dev/null >> ns3/large.db diff --git a/bin/tests/system/ixfr/tests.sh b/bin/tests/system/ixfr/tests.sh index 4bccd763..c6049ad5 100644 --- a/bin/tests/system/ixfr/tests.sh +++ b/bin/tests/system/ixfr/tests.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (C) 2004, 2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004, 2007, 2011, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 2001 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -237,6 +237,17 @@ else echo "I: success: IXFR it was" fi +echo "I:testing DiG's handling of a multi message AXFR style IXFR response" +( +(sleep 10 && kill $$) 2>/dev/null & +sub=$! +$DIG ixfr=0 large -p 5300 @10.53.0.3 > dig.out +kill $sub +) +lines=`grep hostmaster.large dig.out | wc -l` +test ${lines:-0} -eq 2 || { echo "I:failed"; status=1; } +messages=`sed -n 's/^;;.*messages \([0-9]*\),.*/\1/p' dig.out` +test ${messages:-0} -gt 1 || { echo "I:failed"; status=1; } echo "I:exit status: $status" exit $status diff --git a/bin/tests/system/resolver/clean.sh b/bin/tests/system/resolver/clean.sh index c5bd75ed..108a49df 100644 --- a/bin/tests/system/resolver/clean.sh +++ b/bin/tests/system/resolver/clean.sh @@ -29,6 +29,6 @@ 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 ns6/to-be-removed.tld.db ns6/to-be-removed.tld.db.jnl -rm -f ns7/server.db ns7/server.db.jnl +rm -f ns7/server.db ns7/server.db.jnl ns7/named.conf rm -f random.data rm -f sample.out diff --git a/bin/tests/system/resolver/ns7/named.conf b/bin/tests/system/resolver/ns7/named1.conf index a41afd0e..a40a14a6 100644 --- a/bin/tests/system/resolver/ns7/named.conf +++ b/bin/tests/system/resolver/ns7/named1.conf @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2010, 2011, 2013 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,8 +14,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: named.conf,v 1.5 2011/07/28 03:18:17 each Exp $ */ - // NS4 controls { /* empty */ }; @@ -33,6 +31,15 @@ options { disable-empty-zone 20.172.in-addr.arpa; }; +key rndc_key { + secret "1234abcd8765"; + algorithm hmac-md5; +}; + +controls { + inet 10.53.0.7 port 9953 allow { any; } keys { rndc_key; }; +}; + zone "." { type hint; file "root.hint"; diff --git a/bin/tests/system/resolver/ns7/named2.conf b/bin/tests/system/resolver/ns7/named2.conf new file mode 100644 index 00000000..47622e32 --- /dev/null +++ b/bin/tests/system/resolver/ns7/named2.conf @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2013 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. + */ + +// NS4 + +controls { /* empty */ }; + +options { + query-source address 10.53.0.7 port 5300; + notify-source 10.53.0.7; + transfer-source 10.53.0.7; + port 5300; + pid-file "named.pid"; + listen-on { 10.53.0.7; }; + listen-on-v6 { none; }; + recursion yes; + empty-zones-enable yes; + disable-empty-zone 20.172.in-addr.arpa; +}; + +key rndc_key { + secret "1234abcd8765"; + algorithm hmac-md5; +}; + +controls { + inet 10.53.0.7 port 9953 allow { any; } keys { rndc_key; }; +}; + +zone "." { + type hint; + file "root.hint"; +}; diff --git a/bin/tests/system/resolver/setup.sh b/bin/tests/system/resolver/setup.sh index 5567d359..fc124f1d 100644 --- a/bin/tests/system/resolver/setup.sh +++ b/bin/tests/system/resolver/setup.sh @@ -1,6 +1,6 @@ #!/bin/sh -e # -# Copyright (C) 2010-2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2010-2013 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 @@ -21,4 +21,5 @@ cp ns4/tld1.db ns4/tld.db cp ns6/to-be-removed.tld.db.in ns6/to-be-removed.tld.db cp ns7/server.db.in ns7/server.db +cp ns7/named1.conf ns7/named.conf (cd ns6 && sh keygen.sh) diff --git a/bin/tests/system/resolver/tests.sh b/bin/tests/system/resolver/tests.sh index 9323f255..4dd98545 100755 --- a/bin/tests/system/resolver/tests.sh +++ b/bin/tests/system/resolver/tests.sh @@ -379,13 +379,27 @@ done [ $ret = 0 ] && ret=$foo; if [ $ret != 0 ]; then echo "I:failed"; status=1; fi -echo "I:check for improved error message with SOA mismatch" +n=`expr $n + 1` +echo "I:check for improved error message with SOA mismatch ($n)" ret=0 $DIG @10.53.0.1 -p 5300 www.sub.broken aaaa > dig.out.${n} || ret=1 grep "not subdomain of zone" ns1/named.run > /dev/null || ret=1 if [ $ret != 0 ]; then echo "I:failed"; fi status=`expr $status + $ret` -echo "I:exit status: $status" +#HERE <<< +cp ns7/named2.conf ns7/named.conf +$RNDC -c ../common/rndc.conf -s 10.53.0.7 -p 9953 reconfig 2>&1 | sed 's/^/I:ns7 /' +n=`expr $n + 1` +echo "I:check resolution on the listening port ($n)" +ret=0 +$DIG +tcp +tries=2 +time=5 mx example.net @10.53.0.7 -p 5300 > dig.ns7.out.${n} || ret=2 +grep "status: NOERROR" dig.ns7.out.${n} > /dev/null || ret=1 +grep "ANSWER: 1" dig.ns7.out.${n} > /dev/null || ret=1 +if [ $ret != 0 ]; then echo "I:failed"; ret=1; fi +status=`expr $status + $ret` +#HERE >>> + +echo "I:exit status: $status" exit $status @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1996-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -1229,6 +1229,7 @@ ISC_PLATFORM_NEEDVSNPRINTF LWRES_PLATFORM_NEEDSPRINTF ISC_PLATFORM_NEEDSPRINTF READLINE_LIB +ISC_PLATFORM_NEEDSTRCASESTR ISC_PLATFORM_NEEDSTRLCAT ISC_PLATFORM_NEEDSTRLCPY GENRANDOMLIB @@ -17614,6 +17615,14 @@ fi +ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr" +if test "x$ac_cv_func_strcasestr" = xyes; then : + ISC_PLATFORM_NEEDSTRCASESTR="#undef ISC_PLATFORM_NEEDSTRCASESTR" +else + ISC_PLATFORM_NEEDSTRCASESTR="#define ISC_PLATFORM_NEEDSTRCASESTR 1" +fi + + diff --git a/configure.in b/configure.in index a2679244..58782dda 100644 --- a/configure.in +++ b/configure.in @@ -1,4 +1,4 @@ -# Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1998-2003 Internet Software Consortium. # # Permission to use, copy, modify, and/or distribute this software for any @@ -2419,6 +2419,10 @@ AC_CHECK_FUNC(strlcat, [ISC_PLATFORM_NEEDSTRLCAT="#define ISC_PLATFORM_NEEDSTRLCAT 1"]) AC_SUBST(ISC_PLATFORM_NEEDSTRLCAT) +AC_CHECK_FUNC(strcasestr, + [ISC_PLATFORM_NEEDSTRCASESTR="#undef ISC_PLATFORM_NEEDSTRCASESTR"], + [ISC_PLATFORM_NEEDSTRCASESTR="#define ISC_PLATFORM_NEEDSTRCASESTR 1"]) +AC_SUBST(ISC_PLATFORM_NEEDSTRCASESTR) AC_SUBST(READLINE_LIB) AC_ARG_WITH(readline, diff --git a/doc/arm/Bv9ARM.pdf b/doc/arm/Bv9ARM.pdf index 139143b8..e8b38986 100644 --- a/doc/arm/Bv9ARM.pdf +++ b/doc/arm/Bv9ARM.pdf @@ -4211,18 +4211,13 @@ endobj /Filter /FlateDecode >> stream -xÚíÚKsÓ0 -vç°tÃg=UO^(W¬´õìå¹ðêÙâäèٛ׳ç¯gÇÍéìUõ|–ʼnA¨~ÄÏÕÉ©¨1ÿ«Jp¼©¿Å‡d½ª´QÜh¥Ò+Ÿªãêm½{Zº£<7^ºÂ•H‰®$ÄC‡r&p«¤º½’§ aZ…£E·Ù,[öu¹¾<ûÑ0éõo˜âýÑ!üû(¿™0RÅéöînÞ÷š¸>¯·ïp[SÃûmÝ¿ï+XµWHrR*„RE¦Ïª´ãÖ9HªäVU7_-¬½X¶Û«î¬aÖȉÐ_J“<š -¤á&‚ÕÄ -…P„Èô™2ÜI‰Ú#ôóª[ÆÍtú{Bi’GB!ÜD°f˜P¡Š™>Še8k}"¤¡†ù`ßšv -¤ˆá&ƒuÃÄ -…PÄÈô™ -R¨p[ÁËaT…B(TdúŒÊH.”I»I)vOJÝæ•·nÒô@šÒ|Ö„)M¸Ÿà‡Ÿ– -¡4‘é³&-¸ð"måî¹û|}=ï7
“vú$vÐ05`4/HñÂ
O|+Bñ"Óg^Òs&m,åî|¼GçÝâjÕ/vòuXiêGÃB,ÜZV¡ -™>Ã÷‘"m)åî±üå¦e«yËÞ!¿ß\G_&Q$*ÍùhQ(…{ -Þ‹*B‰"ÓgQBÇåϤM£LOé7ËV]Ì7
JM·ªƒÀJS? -¤`áÖ‚~6_*dVþú3Ösçeéñx0Û¡þíëw_ -ÑŽ+¿Í·µJø¸{°®V†Ç±¶ûuðRÓY¨ö_á¶(endstream +xÚíÚKsÓ0 +R¨p[ÁËaT…B(TdúŒÊH.”I»I)öOJÝæ•·nÒtOšÒ|Ö„)M¸Ÿà‡Ÿ– +¡4‘é³&-¸ð"måþ¹û|}=ï7
“vú$vÔ05`4/HñÂ
O|+Bñ"Óg^Òs&m,åþ|¼GçÝâjÕ/vòuXiêGÃB,ÜZV¡ +™>Ã÷‘"m)åþ±üå¦e«yËÞ !¿ß\G_&Q÷$*ÍùhQ(…{ +Þ‹*B‰"ÓgQBÇåϤM£LOé7ËV]Ì7
JM·ª£ÀJS? +¤`áÖ‚wð +…ÀÊ_`Æzî¼,}"þf7Ôݾnqû¥í¸ò»|‡W«„»ëjexkw±_/5…jÿùŶ)endstream endobj 1226 0 obj << /Type /Page @@ -12549,17 +12544,17 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 2625 0 obj << -/Length 2001 +/Length 2210 /Filter /FlateDecode >> stream -xÚ¥YÛrÛ6}×WèQž‰Ü ôÍuœÖmc»±3íL’š‚,¦éŠTç뻸Q¤ÉÎt2àvqö‚LÆþ‘±HjªÇ™æH`"ÆÅj„Ç÷ðí— ˜iMû¨ŸoG¯ß²l¬‘–TŽoç½µÂJ‘ñíìãägD(:%ðäòôÝù›éÙ¯çg¿Ÿ]]¾=™’Œ0>9½¾>¿|sñ÷É” -x -mW§X#J„Ž6+צ€ -ôyJ¨%0ø\]Ý:Xb5hj1we5³‹5©Õ‚ºˆu§§Ó5÷›õêÚÈôV&íÑ8°r¾iëPniŽªžmïî)a -IÈ:š’—sG¡ ò<þ1oüÚà‘…išùf‰R!Buì…D¥Š<làΖûócuø
±Ÿ;‹ØqóíaYeþDñ%S€¶Œf‘?_Ç/êG`k}ÓЊŠ+wÒíì¡" -5¦;SmcÓä÷±>Û¬Vù:dXwLÙ†ùVú<›dªOaåg§‡:ÂND9vBŽ–ýICöYª<êëF ÕI"õqå:TB»Áet¡ªw¶ðÅ•(XÛ˜MœŽ Õ]CvʹaÊ•HeÝ}¨©Ã¢ö¤rp’û,ä²iÑ–_]Ʋ -‰”±áåæ@ +xÚ¥Y[sÛ¶~÷¯Ð[å™Á…ÁórÆuœÖmcûÄêœÎ$y )Èb"‘ªHú’_ß]\(R‚dg:™‰p±»ØË·ˆ(üc£X™òt”¤‰)‹Gùê„ŽîáÛ/'ÌÑL<ѤOõóôäí{‘ŒR’J.GÓy—"T)6šÎ>&Œ“S`AÇWg.ÞMν8ÿýüúêýé„%LDã³››‹«w—NxLˆ)8»úóì»vsšòñÙ/·§_¦¿\L;ÍúÚ3*P¿O>}¡£â·JDªâÑ#L(aiÊG«“($Ž„ð+Ë“Û“ÿu{_ÍÖ 5%\H0g#ÆHÇ|`8%Rpaìq{qauöÇí5žvñžé¾ÁÒÈÏʺÖù¤.îËïU©?Ó˜*ø½±[EÚÛªQi¬€…1üåÕ;+)ug«¢,êf“5ÕÆ.}Ôs½9ej¬Ë\Û¥YÙfË€bL*Â¥”Ž}Hˆ¤Š Gðñý¹åQ!ü"Fx3GMÅÀ€AJ)Å$M7´gN½þø²í.ËFoJÝX5nŸëF¯j;9¯ÊºÚ4E»Úʈˆ$w|@;Æ£¨aV +QYf+=›äË«rŽ›‘´£"J
õÐ-%4Nìv>sžØ‘ùl‡ðù3¥ü¾¿Ué(aeé<V?—Mö䈑aQÞÛYSUË]©·§Éç²Z×E½›]‚‘DI1Š©$1W²Á yŒ>§ +I“0è±0™± +-þgmðøw¦çY»lˆæwN˜‚ªia®jôàœBõmA,eM ZJhÄ^ŽÆ©WÐ+æ¥ý[kpvÖh;3Žwž…c7ú©1ŽÄ`nó…%Êê€i™JHu:mÊYN¾éç€Z1…ˆK| cx¸Á0žæ®(gȬq$Ñ•Q£kfkÕż´>f +IÀœ”³×ÛŽÃäYúǬ¶¼!"s]×óvIB) = â…x¥òÌàÛ‚D¸óÙµÊýuÁÏGp]?—E^4OŒ1ÛÛa÷fKx2„ÚEõÖÚœÂ6òŠæâÚÔ¹ýÎÝuZhÊ ömúT¾ÑÞo:*”;Y슔’Ð4yA¤' +ˆä;¾JÔŽÈ›MQºfÓTT´uvïû´vµÊ6_M‘Â~*,ʃýƒL’¬Ó£:bOe¬ã0Zö¥Ð7NBmR_7P'™L+×Q´Ü* œÇ©âCõÎQLƒBSÌÙ@mŒI¬ºûÈN[7„\ITÒ]ŒêÊ1ÅJeF®ŽÛ 02hš7ŃA,$€†¡ô»Ý~+‹]‰‡ñÓa²¶Âô·X&‚DrÜ]U.æ¾:»,îÕæÌÅS±*–Ùfùì[o3s°ÍÀÁØâ0‰x!¶zTGbËS™ØzØË<ð4DÇEz¢€H>l$b0èPd(ó +I!&Æð…âÕ§:âAOe<ø´çAì@˜:.ÒDÃD°¡Èÿ/°ƒp_š7¹|Âå}¼‹zæGŠÂ1è™iÐüØæJèCîê¼í`¾Õ‡’3»µÖ¹7µ%0—*ø`W×Ë,wš™[«y½ÁæNÔÞݸJÆuºG+i endobj 2624 0 obj << /Type /Page @@ -12572,46 +12567,43 @@ endobj /D [2624 0 R /XYZ 56.6929 794.5015 null] >> endobj 2627 0 obj << -/D [2624 0 R /XYZ 56.6929 751.9599 null] +/D [2624 0 R /XYZ 56.6929 752.2879 null] >> endobj 2628 0 obj << -/D [2624 0 R /XYZ 56.6929 687.3022 null] +/D [2624 0 R /XYZ 56.6929 690.9973 null] >> endobj 894 0 obj << -/D [2624 0 R /XYZ 56.6929 647.2215 null] +/D [2624 0 R /XYZ 56.6929 653.2561 null] >> endobj 2629 0 obj << -/D [2624 0 R /XYZ 56.6929 613.7105 null] +/D [2624 0 R /XYZ 56.6929 620.7725 null] >> endobj 2630 0 obj << -/D [2624 0 R /XYZ 56.6929 577.6482 null] +/D [2624 0 R /XYZ 56.6929 585.7377 null] >> endobj 2631 0 obj << -/D [2624 0 R /XYZ 56.6929 510.0688 null] +/D [2624 0 R /XYZ 56.6929 521.5252 null] >> endobj 2632 0 obj << -/D [2624 0 R /XYZ 56.6929 448.376 null] +/D [2624 0 R /XYZ 56.6929 463.1995 null] >> endobj 2633 0 obj << -/D [2624 0 R /XYZ 56.6929 305.0531 null] +/D [2624 0 R /XYZ 56.6929 323.943 null] >> endobj 2623 0 obj << /Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F39 1178 0 R /F41 1238 0 R /F53 1333 0 R /F63 1385 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2636 0 obj << -/Length 1860 +/Length 1904 /Filter /FlateDecode >> stream -xÚÕYYsÛ6~ׯУ4S¢8IâQ±ÕÖmb»¶Òvšæ!›
‡¤âª¿¾‹ƒEQVâh:íxÆå»Ø%cø#ãP Ì$’#‰/³ßÃÚ÷#âh¼†ÈëR½ZŒ¾ýŽc‰¤OýñbÕá"†d¼ˆßMf××óËó‹ß¦xò -M=ñäÍìòíìµ»žJ:™}?¿z$ ” -,næë¢H‡ Ç=§ÛäÅc•TýðâCŒ`pÐ9ƒsp6XO…öŸÁȉ ½.*8ˆœ-Õ -Ògº8±’OƒB^—‡vvüÚž·£_äøã/8š:¤ç3O]WÊ@L'ʯÈ@]‡3PKÕÉ@ÝLÝÏA/È<‚hÄË2ÏÙ‰ãã¿“É -õ&®+µZ§VîÊ”¾0èÄ Ù¡ -óUgÃÒô®£_*r½~ïÙøCáºÁ¡rÚõ×u¹§TæúCy]¸®Ï¶ªw]%UB>
x§Ý±ãvîâ¾<tÅØ·^ -8E~s–-¸ &É’42Ö(ôDA)—Ÿ2isüu·"'wëÚÊ3M3¥OÑÆ鯳G7´® ë
ô¦Q«¼n -÷¾SÿQ-Øæ¬W$zgtkaÑ6Böz;ÙGÍh‡ÖÞ*´3ÁdÇIy”¦›)!D›Åˆ4Ö&i¢ÝðªËdYÃÞ™%•]HÕ'•VvúnccµŠÖiùQ½¦¦ú-NÓ<êZV¬ëG*#pª’4µ£;eÁ»c;Š*÷›»ße»lflQÖ£bOfóöÝfÀ%(dˆâH0`Iɶ];O`:ùÕ +xÚÕYKsÛ6¾ëWèHÍTž$xTl¥u›Ø©´&9Ð"d³¡H•¤âª¿¾‹)’¢ìÄÑtÚÑŒ‹}|XìK2Æð#c)f!!G1^®Gx|c߈£™ÖDÓ6ÕËÅèÅ+ŒCúÔ/V-^a)Éx¿÷foßÎ/Ï/~›L©ÀÞK4™ +Œ½7³Ëw³×¶ïí$¤ÞìûùÍdJB ¦é|ì]ÎÞÌϧg?ÌÏ~úýêr>ù¸øq4_4šµµ'˜iµþ½ÿˆÇ1ñã#J1~€ŒHÒñzÄC‚3V÷¤£›ÑÏ
ÃÖ¨™:„ Êýñˆ™†!À`p‚ç{È(‚¬¦Ò}À˜¦*‹Öªo/¡1FÂq›ëì†j@8m '4DŒ0Ú•¾¸W°.,ðŒÐ’^¾²=Õ½ëXæ™Vòn[DU’gvÔªm ªÜöÝÖîÕò“ŠaUÞÅÊöfyeÉÊZ&z¾Š¿ƒŽ½¤²$±ZEÛ´*¹FäÅ+ÞÆqX3âkóµþ/Tµ|¡ui@<ž2Ÿ")aM§„ PjÈÀ„•eÖÁ„2Ì/ä( +@"Iͦ–Ýõ|ñîúÒ:ô/@Ö›½~.]ÏßKÀc Bð3Ñh:5øQIRPðT«R1!ÒSÕ¶ÈJ+-ÊìSýe0ƒVYEÕÖš¥ƒ'±Ä½ªÂðÉGö ,_û«J-+×\;–àÅCRªatju;ðÜÌçvòìõÍÕ€C |ÀKø#ßÙ©-¤þÎ3Õ6üXØvmð Øõ:¾¼¸<·LB§F¼N²¤¬ÀóÂv]«•![:ÞDÙ6JÔ%¾DÔ÷ýGÝ„Á‹eˆÙ»ÅW×O#p‘UªÈ”[Ñ›]Y©µ[«³<+ó¢J¶ë½XØðܧŽ§ˆPðac9ÄRˆ«àg6P3x@v—.æè"ò—ÕŒºË“¯7IªŒ +0»×šóùÍÙõÅÛÅÅÕåW•êK_¿¼À§AscДæ¢É\¹Gp¯ÜeUô—ítÕ +L½_M endobj 2635 0 obj << /Type /Page @@ -12624,55 +12616,47 @@ endobj /D [2635 0 R /XYZ 85.0394 794.5015 null] >> endobj 2638 0 obj << -/D [2635 0 R /XYZ 85.0394 752.0628 null] +/D [2635 0 R /XYZ 85.0394 684.7381 null] >> endobj 2639 0 obj << -/D [2635 0 R /XYZ 85.0394 688.4621 null] +/D [2635 0 R /XYZ 85.0394 622.0142 null] >> endobj 2640 0 obj << -/D [2635 0 R /XYZ 85.0394 624.8614 null] +/D [2635 0 R /XYZ 85.0394 559.2902 null] >> endobj 898 0 obj << -/D [2635 0 R /XYZ 85.0394 585.5151 null] +/D [2635 0 R /XYZ 85.0394 520.5531 null] >> endobj 2641 0 obj << -/D [2635 0 R /XYZ 85.0394 552.3266 null] +/D [2635 0 R /XYZ 85.0394 487.6322 null] >> endobj 2642 0 obj << -/D [2635 0 R /XYZ 85.0394 516.5868 null] +/D [2635 0 R /XYZ 85.0394 452.16 null] >> endobj 2643 0 obj << -/D [2635 0 R /XYZ 85.0394 450.0643 null] +/D [2635 0 R /XYZ 85.0394 386.5142 null] >> endobj 2644 0 obj << -/D [2635 0 R /XYZ 85.0394 299.0276 null] +/D [2635 0 R /XYZ 85.0394 236.5364 null] >> endobj 2645 0 obj << -/D [2635 0 R /XYZ 85.0394 156.9811 null] +/D [2635 0 R /XYZ 85.0394 95.5488 null] >> endobj 2634 0 obj << -/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F39 1178 0 R /F41 1238 0 R /F53 1333 0 R >> +/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F41 1238 0 R /F39 1178 0 R /F53 1333 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2648 0 obj << -/Length 3019 +/Length 2943 /Filter /FlateDecode >> stream -xÚÝZY“ÛÆ~ß_Á7s«ÄÉÜGRyX˲#ÛÚ(Ñ&vÅö–—°IbM€Z+¿>=.@®¬J¥¢ƒÆLO÷×'HfþÈLH$
53e8˜ˆÙrw…gðì«+h‘hÑ¥úüîê_253ÈH*gwëÎZaÉìnõÃüsDº†%ðüöæÍ«//ÿòêå7ÿúëí«ëQ„’ùÍÛ·¯n¿xýýõ‚ -ô@ŒñüÍÍí?n¾õso¯
ß|õêÝõOw__½ºk8ërO0³lýzõÃOx¶‚C|}…3ZÌžà#bí®¸`HpÆâÌöêÝÕßš;OÝ«)ip¡‘ \‚\`W8fRd)B€FqXŠâVd”¤D©¬Èï‡ç”¸2rÖ]ìdËH”Ø’v¶T †[¾=ûÚ»Þä~ð>?TE¹÷7åº} -Ì
Ž²Gœc ŒØÕöÙ._-–›|ùË¿Ë}|¡Ë„æ _FýãášèyùpÈv~—l¿òƒü·¢F'Z²UØ ,˜<£€Õ„"•SÀÏ' -` +e¦·ŒD‰-»g—üYËï6yô¶ÌVÅþa 'G7úcº
c'·<[
ˆ.‡}¶õ7EÐ\Q7"êjT¨R)¤´TÓBíRµ¡rB]zHÖ¢ü‰ÇÁr›UÕ1#‘&”O3‰ŒÑÞvp -‹_ƒEÀ -/xáÚA¸ž"«RiÑ”ÌÍi^7í¶ÀGèò/þQn>:Ô5uñ>“ `©Ákj~©Þ)ᦀÒ[MúJ©NÌßçþ#õ‡E0>S>uˆÆ«§H䊧u²x’šÅö‡-bÀÐ\Låt’«HsÊU¿ŠUˆšzl¥‹ØÀÊxÛí)GÚQí -±b/£ Ðá¸é -An@»ED$˜A€ gºx]ª ˜D*‡“/Sý‚oÌp(,ô4k
U‚·>X AÔ -Eå÷]•y¹Ö‹,³c¢%c -i¨JûŽ4ÛÉ×ÈkðhÙÇý6ížØ)[wÕ¨Í,Ë}ïC'|¡•Ñ6"4kmÈÞŒÛá )N/3!†!Ñ“|̆ÜNI’Öcs‘
Á&†5%ÕJ"ëþr¾YÄE³ è”s&ËrU—1ŒÚ[>Ý´`äRJ{8¹/öÙáƒ×9Urˆä½ä·qJÚ±²Çbå‡m¿U ›a&ŽH9RLÐ.rG„ešê¥D1˜ªKE ¦QO•UžmH¦æ|mË^yîQÂn~@#oÈYJj;Å^ŽXÚ\KômçÞ0ܧƒpÅÖ qðv¯nxÛ †ñ2ÛûÁ}¤j;ÖPw¸„f½] = -×’Ñ4º#Òy~bÛc빈èSaÞ‹¤iJÃrSMiJw`wáÜe -Áêø3_,»Tã&ÚP9ýö¬‰BM_dÛÓdòvÁô4k
U‚·~²i?@àí1ç¿m2*çW.ÚÚÛÌ_b›S†¶©œÁä3;Œ9éß -¯ò:nÂVUéMoæüIý÷6{ÿ>óm+ûÁûðä¾iÛî¾qÛ„i&Í´ží»¬ožw÷=gnÁ|·iz(UìÊØb:.;C÷Áï«øäñPì²C»Pë¦?”Wuóøñxx,«¼BÓcÈ#P%Î ¯C5¼Hå·K!#)¹™ -Q õý$_‘(ÁWuªfÃûŒµ%&¶Ïe;2ö†ú98Õ²„ÉjSmcËŽBìÎäaÒ¡Äæá©Í*܃MvkZAî¦í”Úö‚Ë^H€|HðM>¨‘¸1}ÄÇ "/‹àÍ ífÏùð÷ÞúùÕû>•Ÿó©D;JœAv—jÙ
•Cö›²Rª)w’Ȇ,êìi¾"Q‚¯áïÀñ>c/-ýwm‡=î«!¸øÏ”4ñ…‘µíèðIܦl^}i…üëÝÏèìÂÏè¶Èô³ðÈ'ð(aJ\ˆGÐÅf´æc¥ð‚)Œ8Vì´ÝúIɨšü2;TÈŒT™ûß•OòÕ$ä§|¥ò_m’1çr¯ÉÜy]{ï>›0–ølÂhãu-Á}è7^×uÐË@˜‡Nº«å
^÷¤?ôº¶¾ë46Yôº½7S
y´Æ<ÑŸ@·B†‹OÍ~ª,Ü<ïóÿŸ†kcuƦí²C4n–‘ÈYey¾áê´":ÉÂ-Ì$6“œ5D§¬õbÅHsB—·ïlJz(êÜwQCÆÍpÛÕe.³qས¤„J´ùÔ=À°_É2ÅmûkÖbwº$û†Ÿ_t‡Ž CQ¥ÖNš@±HÙ ¢ŠDP×¾Ã>EiøüÛNU5€0kb&Ì€tÂA|o©‹*0`]²]¢.¦lFJÄ5&mìhìwÐ`ÁöÇË ôàYäòwÿFºý98¨œiMÓ8¤²ÀË22e'RžÚ¤ý ¨¤ ÞÿǺQ6endstream +xÚÝZ[sÛÆ~ׯà[¨s»÷K;}P9u©J¶ž&y€HPDB2AZq}ÏÞpã¤Ï´SkÆX,vÏžó+H&þÈDH$
5e8˜ˆÉ|s'ðìëhf‘hÖ¦úòþâo˜šd$•“ûek-°Ödr¿øaú%"]Âxz{usýÕìõ_®_û¯¿Þ^_Έ"”L¯îî®o¿zûþrFz Æxzsuû÷«ïüÜÝ¥¡Ó«¯¯ß]þtÿÍÅõ}ÍY›{‚™eëÃÅ?áÉñÍFÌh1y†Œˆ1t²¹à‚!Á‹3ë‹wß׶žºWSÒàB#A¹¹0¤Ói™¤"Å1RX©Zf”¤d©¬Ìf«þA¥DØ(9i/v´e$JlI[[*‚°Ò½-ïvÅv諒_å~p¨²Ç0¬›M¶ûäo²íÂò_‹=:ÒI8¸ÂizJ8
шl‘͇AÑŒì×H¦¿_R0ý¾?y˦\iÌšãûѼ~Tnן. !ÓA¹H¥‘ᚦM5,™šÊ‰æã‘h€ÙœØ2%¶ì#ÁpoËj>滪(·AËæ)0×;˜,âK`Ä®¶Í6ùb6_åó_þ]nãm&4³d$Ð?í.‰ž–»ló`JîIw£€Õˆ"•SÀÏG +`ˆQeÆ·ŒD‰-Ûg—üYwË®ò éu™-ŠícONŽnô#ÆtÆNny¶èÿ\vÛlíoŠ ¹qiµ¯†…J"ZŸ0÷6ÕˆP#•êÜã@²pe†<æ묪úŒ‰4¡|œ±H”`Œv¶#ÖÑ«.gïžòy±üÔ¢gæüµ6 ¼1‚§oómä[ÙÕ¬’òÅ« 1JùÛ[ûÐDXÖ?€¡ªBhi‘BÆUѦVEMåTQ$Ta¡BM8ÙcK¤¨6ãlE¢[mE@˜W6ÎwغËwËr.€q6}*«ýÌÚ‚¿õøgœOÁQå»bÿÉ?p^¦²¹†6Ó»²ªŠ‡u ´‡¨<Uæ-%Ẩ’ÈÃÃÁ––‡õÚiëØoQ*ñú#x‘/³ÃzCò*±<çA±wWŸY.ÁÈv‘†*zÇÔ²3N%"6u!@+—_—ólˆ{F BÔÖ–dMÚܺåN±kg&²k}w"BÄ„j¯¼ñI‘*ªÄÙT(½´G†ÀE¹÷›7¨}š…¢ç+µ€Ç“E +±n.¦ Üá¸îYÝîó_÷c¸%éZªéïi/Ô`m3ßeÏC{€pˆ¦íR" .AèX€J‹j*‘ÊAåMªëAãµ1a…!ƒ…g¦JðÖE¤‰Â`‡¹-Œˆ£E;¶hé<„LãéÆN”·º®ï/¦o ˜%N@ +fÎï‚Ä´©YgŒÙŒ¡¨ü¾‹2#×€±ƒyv¨BÌdL!
µi×fÛ` ùÒy ~- û°]ç±éûe‹Ãæ©´™y¹ÝçÛÐOëÇ¿V;B³Æ†ìÍ°
šâô<bÒ=ɇlÈí”´!iý¶0gÙlbXÍQR„!b°î.÷çÛ9A\Ô‚N9‘1s²,Wû2S{ëÁ§ë&Œ\biç/ÅÖ~Ôp:§ŠA¦ +9L @ÚglÚ7Š¼6Õ0òj*‡¼M +yIÉÍXpˆJ¨òGùŠD ¾º¨ÃPÙÞe¬)q0±Ý.Û—±7ÔÒÁ©Æ%LV«ò`Û[vlb_pn%“%–0OmVá¬ò°[Ýr7M¿Ôö±g\vB,àC‚oõAxã¦_µÆ "Ï‹àÍ íf/ùü÷¼õË«÷3|*?åS ÅPèŸøTÞ"Áu r°¾IÁœšªk$¬!ÅWœŒ2iŽ™êÿ`|ïpõÚÑ×v¨ã¾‚‹ÿLI_YÓŽŸÄýgÊúÕ×öG}È¿ÞþŒÎÎüŒnL¿‰|‰¦Ä™HÍQl‹`>TϘˆcźéùç¤Rª«˜lüp.9LnW>ÆT†1•ÊÂÛL5}GÆœ›½$Sçií½û`ÂX⃠£µ§µ¡7^{Z×;/azè®~c4xÚ£Ö{ßÓÚš®ÕÌdÑÓvÞLµâÒóchŒáZÙÈó2ØÏ•y›øraþSïØ›ÇÃ’?ŸÄ“l÷o›ŸYs…˜Ö4mGT /ËÈ”eœHyìMìoä$MðþBòÈendstream endobj 2647 0 obj << /Type /Page @@ -12685,29 +12669,23 @@ endobj /D [2647 0 R /XYZ 56.6929 794.5015 null] >> endobj 2646 0 obj << -/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F63 1385 0 R /F41 1238 0 R >> +/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F63 1385 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2652 0 obj << -/Length 2425 +/Length 2564 /Filter /FlateDecode >> stream -xÚÕYK“㶾ϯÐ!UÑTY0Þ³ópÖµ;;iWÙ>p$jÅ -EŽùØñäקŠÔPÔ&Î%¥° 4_Ý
±…›E¨ˆå,Š%Q”©ÙzAg_àÝÌË,‚Т/õnuñýˆf1‰5׳ն7—!Ô6[m~™_=<ÜÞß¼ÿùrÁ¿#—EéüãÕýç«nìá2æó«n—бРÄ$Êi:¿¿úx{sùÛêÇ‹ÛU§O_gF*óûÅ/¿ÑÙTÿñ‚5{%,Žùl!• J -Fò‹åÅß» {oí§c6ÊÅ¥ž-„$Fã–¢„*Øù"R1Ñ‚‹ÎRœY*H¡¥nôû;-z’ðÞ“£Ä¾Ü¤ÇÆ`ÌÀ {Å7zuR#ŠñÞrŒ¢ìr Ùõ.]ÿNÎi[VØóê’™yº.ísS»·Í.iÜëĽ÷î“4éÆ
$µ“Úd[|³M@Ѹ×O¯îys¿\Þ^;ѧֿìÍ,æuºOŠ&['ù%›ç¯n0ý½…¾Î -7ôœ'ÐÓ)`‡Úh´ ‰•âv‡°ñh,ë:{ÊS×C‹×®Öµg48MÆ8‘&âþ”~å\n“,ǧ—+"•”^ø»‘ù$‰
½Ù^’ª81›PDÇ:ÈRE7é6ióšÌë]lFÖ€ãbÅz‹d_Š²JO-AyPš¼ñHûˆE°9jÎøFOjÂ7‚”õzÄ7%\°àuóš¿õ°6SÆLkÖI¨6ðô!)ê¶|N×Ù±gbð -M‰Š¨ƒÉ«4Ošìë)øHIx$t>À¨\¤ïˆ.\¬ÐFB -f,¾¸±¤mJ˜ Ù©‡žü3ñ“¥ÏI4å{ë*{n0Ejþ©pƒMP°„–elØÕ€Kv`´ï@F± L=[:¹‘î˜ß²Mà6ݵÀmO›°GçЃϚ][»‘ºÈìÁ‚=è<Ýd7ó»¦VSÜžâó»²9è£É>Ý,Ö
,lß´‘¯h`Âf‡*ò(žoÊÔ·Šy<2óuÒÖ©KŠW×H}8X7^º- -eÄÄJLåœ#Õ´^AhD¯av¡ˆáúH1Ÿ]@!ÚŸ‰{,/•šÿä:ÄÇBéCídšrðý5¦Äµq{>®[ÙÓdj4¡Œëÿ$®‹‰¸® W].w.®k1âf«ø(7/DY,ÃÃè»î7Fxq.«8"œs5
ϾÔixvRžÍhö FØdCY½¾¨ŒàHn'•ë¤F´€TqKˆKõ®w. #Ò¬ºr¸)¢ŒÕ÷h¥‰‰º!5ÙImúŒ¬Xçí&u˜Èa£Gí€è‹ð•—êÃâK!,+ý[—U¸v—:c§!ÓOaR³!r’zÈwÕ¥Zví'OŒ‰{ÔÙ>Ë“*÷£ëÎf6ÙA -Ä -€!;ƒžÔ¶‚”ÅÖjŒú iW‚OR–âñ´bÔˆfCòÓDɇªò“Ú‘<—i±I+×~(ólýêÚwX塞¼ø›‘(V?¯°£|¢€3>ÜyÚ€Î$.®•þ‘Ù, -šeuürSmzr˜'Äf~å‘¢‰†‘‚tv6u݆ãï…L¿Š
®I³Þ!Y³ÿªã`U¥!‡ÿÓeÓhIœÀü—K -0hè1
øžÔàƒ”üËàñ¶ä<™vô7¥\'5¢ÝLt¹j·Þ!£Aþ/OÐ(Ôu†‹Væ=µsZÅÖ0ëÆdžHC5({A€/öIݤU_ȵÿòþþúÃç›[×;bbOš×>öðSæÕîàžôÎP呇Ep׎IsŸ,ã$ňÉ8…Ãå,ö¦p<ñ`;f5(ý#Ÿ§„<BGæÌ=W_ê48;)Î7z±vEëä’AhdÉâ(TÀ".y%ƒ³ž/ NÙÛÔÙ9)ÊÂÞ&õ²ø“ǘä/É«o¦€¯6Ýw£µ¹!ïàh¿˜*÷ÏYžž(§bˆQœ›³G#;S3ô¥&Ž*HÙ£úÇ(À5“S’ˆS5X'5¢Ù0p`)¼¨Öݺ`•÷²Km5n;¶€çÚ‡Ö8òe0ŒÁñ.ÀÏ÷Ygl?ÍòÍ:ñAŽ:’f~?-å†É,äöF¨«À¿ee‡É½§ËPÒÔw\ß^I[¾à‹¶»í”®¼Ág‹ BÝØø>˜°¯¦±QÕeœ8ÿRVY³Û».¾Ç»k×aTHwj!xä†ã›2¤Û†Qùÿx) ðLÉiêKö§N -WD7G¿ã0‚%¤™^¹“YzxM©‰bš
×^uñ¥Ü'ð¬2îöâø:ãÀ”Oi—ÕYŸšHá6ÔÄgRø¾Ô„å‚”ÃDÜcd#°ÂäÚÔÈâÇd#”ƒÕ;Û}“½ÂEn€kç:[¤:¼ Å#„¬R -;ýãíêóã½ûø§KPa~õáóírüBï Žøö9‹à ÎY›¶*‚ûz@ŠïÓp •¦‡{dÃô=\]Wy±—´#)„WÚ@êB¡ã(hP?%òôKVŸ0OPw`žåíûøêÃòÓÈÇŒ‚b\6¨<¥0-꽶ó‰x(3À€ ’cH4jìr›ªM8øCçÝûû7_ìwµ@Tí¥Ï Óî/±µ7ëǤÀµÞ.Ï´!\ëÁåú» -¨Ž³ðïöêóêoŸÏ[ô}Ñ°H=B–¯*ïýÙ_—E]VMÖîëÂJÍý<hKPÃm0y¹`”úó±Eàß/n©{ïá# -Å„EZŽØ;ç‘k
µg¹:¾º[û±?”îyôTÚYóOÿÙ|ø7"¤0§òXA‘°b”Âm3«®„!ÊðhD÷B2°endstream +xÚÕZKsã6¾ûWè°UKUEÞŽ[N&;㙵4Ij“h‰±V"’Šãüúm¼(R†¨Éf/[> +f2la¨Â=úgæ'ËŸ²:kýdͪ.žlpJEò¡tƒmP°‚–elØ•ß‚Kí¶`´¯@F Œ=[:¹‘ã®HÂÞ¾ +ÜfF·à¶™§ÎuØ£sèÁgíöÐøèz +fÆwž6 ó‰‹kå¿6‹‚fUŸ¾\WåßÛžœÉ´J®=R ºfê$t:;†Ç + +Rö¨~ˆñˆ +Éõ»OóEü*ŽÂ‘ +@ï_Å1Í‚k87mu×ã +Q)×ê¯ìÊ .RÄÀ¿oØëOËo?<\¶èÛâ`™{„,^ IÞû³¿©Ê¦ªÛâ°?÷ï@êæ"N‰;ÿò¿&ÿSŠÆ½›aÚ¥ÌæˆLOUL!¡hÑý?à±7endstream endobj 2651 0 obj << /Type /Page @@ -12720,79 +12698,77 @@ endobj /D [2651 0 R /XYZ 85.0394 794.5015 null] >> endobj 2654 0 obj << -/D [2651 0 R /XYZ 85.0394 312.4643 null] +/D [2651 0 R /XYZ 85.0394 225.6507 null] >> endobj 2655 0 obj << -/D [2651 0 R /XYZ 85.0394 250.7835 null] +/D [2651 0 R /XYZ 85.0394 155.4035 null] >> endobj 2656 0 obj << -/D [2651 0 R /XYZ 85.0394 189.1027 null] ->> endobj -902 0 obj << -/D [2651 0 R /XYZ 85.0394 151.0905 null] ->> endobj -2657 0 obj << -/D [2651 0 R /XYZ 85.0394 118.4878 null] ->> endobj -2658 0 obj << -/D [2651 0 R /XYZ 85.0394 83.3339 null] +/D [2651 0 R /XYZ 85.0394 85.1564 null] >> endobj 2650 0 obj << /Font << /F37 1042 0 R /F21 954 0 R /F63 1385 0 R /F22 977 0 R /F41 1238 0 R /F39 1178 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2661 0 obj << -/Length 2826 +2659 0 obj << +/Length 2707 /Filter /FlateDecode >> stream -xÚÝ]oÛÈñÝ¿B@*æ†ûÉ%PHl'ð5qÜÈéËMQ2a‰Ô‰¤÷×wö‹"©%•¢×—&-‡3³³ó½Æ³þãHÄ$žE1C<Ä|–nÏÂÙÞ½?Ã'pHAëíýÙëw4šÅ(DÌîWZ…RâÙýòëü-‰p~ûæãõÕy@hLÅüÍÝÝõíÕÍo𛇀(a8ÿøæöË›fíî<&ó7ï¯çßî9»¾oåéÊŒCª„ùãìë·p¶Ñ9%Ÿ}‡!ÂqLfÛ3Æ)âŒR·²9[œý£%Øy«?õê -ÄÿÞ -Øÿ‘€Ô‚v -:XVà°´à¶Ö½Z_õ<˜ûKý®xÚ -Eñ´|-–GÀž¾h„‡6'¡2O‰I)Ǻ‘¡- -É]•¨Z#消Ùq"Rom"Òp^@œWéAaëj¢û¹Mj>[Ãòr,Ž“–ë,”ë”ôÓÑHBë—âPHÁæ÷ªY.ÏF949UãlLý®“ZAÌ&¸M™,óbí^Z¬£Ý«E·{õ1 ÔyÑd•ýÐrû^îŸB²ª¡òêSµå˜†“Êl×í W§I±VE -¥P±Ô•u-«úµ¾Þ€©÷ÍR“@‰Ó}&æ±+«*ðV„†(Cáo$z*çªm+örgÍC jŸÆ -¨§šQ‹Fó
ˆ”(Œ>>ú ;–ˆ0æ"WåÜÆV"™+Mìó¡*7MmWwIý¨Ìn4ºP†2a2ºt±Æ£K‹¥£ËÒ]0’1§þŽ¿]ÂÑ´|-–GÀ~tˆMh_ÀE¦KlRË$Û–Å_*ûKIg@#b@¡ùcóHG4ÆcƒŒþIöàËP'ͯÔ'kmõZ¢}’*§SÛvÄS©c‚p,èéJò±‹—YàºbéY\²Üº4Uv“xôCéRxR
’´S•*ŒªLÚòº²E±× -…Õ)MÖ•º‚SñÒUÌÕ¾3?’èsØ…AkÅ1íL[ñò´.½[ _=,f-]ùŒ‘‘?KÊúr¿<iL'éTFÛ16˜/õ©è'Ëv~Ð/{óƒmZÿø™žOE°ûÇÌa°C›7v¥óF—0Zÿ½Y\
“¨+’ŒlXªÎü'îR Šµö}7©#t)1jBÈH«}}¼þx$ ¤ˆügJè(žQ -DpõE¼º~ûåýoðÏ¥ë¦ðÒ}þ-Ûøé™1ª„s6õ×¼J_ƒ—¢Ç¿v'£†1!èt´ëbG»KG»âdÑÜÞ?öÂD,dZ0‡ä¬îà-x_²KÛKÔ¾`¤.Õ1‹ŽoH‡PˆC7Rs•ø(Vå²»Pq33SP/’§Ì¬$Ë礨M@…zÏ-T~ùnc‘.ï¾Töïn,‚.6Ô»j—¥¹dKßµÅ*¶Ò5sPà‚1:˜ØûˆØµŠþPÁ€©!Uí·frÊlg €¢Ù>èÄÏÌn®’߬ì\QZÔfÁ¤|¦:Šö ô7årç6E‘pÔ*2¸7+³’[¢¹åÖvŠË˜…;±EöaÝ×î¢3ÿU»p6¶ÈÌç¦ÄîÜ
™þ»Æ:ŒU»]Ž{#‘ê®ô”7v°&¼ÑaioÜôF×Íôœ‘ Ër9$\]{kcQ<ëÃÄíWÿ¾s¤ÙÂ`ÉÁXyÖ¦À›Õ ˆïùÕp.Ñ^:®43
q:z¤±@)&O´ƒ4~ IŸgå¹wa”ÊI~ç˜ß`ÒÍ0t¹]~¿ªKñ}6T°
µë¤†ÍÓj¢\W#.ÁÈ¡ZWÊž+¡´ÍYAö#¯ÑØßtAM¦þ˳ó°½@ý¯ÿÞëðmLÝnË‘A!‰8‚…Jmyl%ö/ÃŽeÿ7 Beendstream +xÚÝZ[oÛÊ~÷¯‡Ê€¹á^¹Š‰í>çÄq#§=@’š¢$©Ë÷×wöF“ÔRJÑÓ—&\ígfgg¿¹ÐxÂ<㉘ij(fˆ‡˜ÏÒÝY8[ÃÚû3liGô©ÞÞŸ½~G£YŒbAÄì~Õã%Q(%žÝ/¿Ìß"ÌÐ9°ç·o>\_„ÆTÌßÜÝ]ß^Ýü¿yT@†óon?¿ùÍÌÝÇdþæýõâüÛý/g×÷>}qH•2œ}ùΖ ú/g!¢±ä³ïð#D8ŽÉlwÆ8EœQêf¶g‹³¿w{«úU¯
pˆÄc‚g°GÊ`±o#"#ÒYá<À!l±HvÙRm øTÀ$Ó4·° æ!éYUQÖ4”šÊ¼®
ô•ÈŒnŠ&«Š¬1¿–å.É3VäfTgÕSVY 1F1çÄIˆai ‹ç¢Ü×y=6;Å(’‚Α`‰˜ùÌ„AoÂÁ6DÆbôYh2ìñ£Žª·oü°on$ºQj¶Â_8aЇsxÅ#-‹U¾VùÖz VpqÊ,mÇwéáK9’‚sKºÌÚu°Íž²íϳ½>É6+Öy‘Eç¶|ÌvõM»8E‚ +6ºƒ²/Áº£Üy€{ +žÏB‡&€€þ<1+‹ºj¬¡\Ïp;3þòðêvl&,$Gl~Q8ß'àÐz©\™g³±ŒÞÞÜ^™QlK8à*h›¼´RWÕ9–óÒJ»Y\"3zWVf°+5Ef!Âîf€y±*«]b˜ª°ážZ5€\¸ˆb§>½»¬Í®½è†Ì“bÙÍqäb–+lTûç&ÓrbPà©|4Nοçͦl³’hå×í.+šúÂsŠÀ•‘°ç3yŠì£Ð9Ñ÷|»5üm+Úî7t_%íÖê +©HäQMÆHê.æ…›!'£ƒêk«,üly‘7y²µ‰@Ò$ã#0¸`Æ+åjðG›UyV££Ù9©úæd6´3“ðãñ¿OåR¨ÃøßQ)¹‹Å1–ÇE:"Ⱦá#Š‡"?×Ö¿o»
[khˆöÖŠùjtC6em3±€ÄpKgïHšì“‡,W|ÐÊ9Šeä₱ÂHy¬.rçê¤=®#Ê#²˜dãîEb¡Âì£mÚdÛmýGºmëü)CS^@Á‘CŸð‚>Õ´tT/Šû¼à¨ÈÎEú¼` ²ïâïìÿȸD8¢§¼ GuÄ•VÜæúbë«úsªßWS‚DÅÇõë¨< +ìE#$8””
•ÓxR´XJ9UŒ}QHî²ìDå1·é@Ì‘ZµHóp^…E³‰þë6¨]ø|
ƒ–«,¤ë”ÃÑD@¦âHÁæ÷ª°/ÏF99uë|Lýn6I£F̸m™,óbí-ÕÁîÕ¤Û½zš¼h³Ú¾h¥}/«GC¬ bqµé˜o’Úl×í`§›¤X«$…RÈXšÚw«ú¹¾Þ€É÷ÍT›™R§ÿLÌc_ÖuþàÍ$
Q†Â_HLIŽºŒ½Ü[÷PŠÚ§ñêÉfÔ¤1ã…Ç}"% +#þˆC
ϘC®Ò¹ÍD2—šØçC]nÛÆÎî“f£Ün]HŒ!¹"ÇÁ¥G4-ŽHCËÒ-ɘS¹?„ÕÂÑQå:¢Cí†À`Mè@»…nñÄöÕ`™d»²øKm)ÕÌÐèP(»ÀÍ<Æ¡àÁS-ŒáZp‹æWꕵöwQ•¤êº)]!âÉÑ1A8ôtŽ‘Ø!åC¸z˜£¦GþçZ\]}£Á]~(]ðNêQxv¦R)±1•IŸS›X×6öº“êYyÂ÷zTGœÏQiï»>é}£®ßûŽé×s¿½þ×WP'C0«!‹ +gF4í!€~¡l\ÔÖMR¤Š½tu^Pçë 5Ì©BÓŒöUþ”4–ô1{®Í¨W[Ç¡Þ=LÖYÚ/Knë‰pW"ÙòV€³î(—±Àñî×ËÅ+Œ»Ú¸lìV}ͨwq̦ú…GpØÆw)J‹¹iñÅè¦d»}ó<î&›íÕ™c‘7CV…}¥&oŽ)’ +X•éˆ<"GÆ”"ÂC‘ŸÚq«Ä%YF‹+ë"kãY+ÐÕ…É‘òŠU/ßÙÓ5÷5àçÿÒ7hÚ®¤ÅTž²kêˆ]•¶ëúÀ®qŸéˆ<"ûvBÄi8ù'Ùµë€X‚ÔE†Åþm鉙£2£ð¥Z7ˬª|ÑkÐ4>$(1BANRêÈ!9*}H;_aHzû}½bŽˆø¸^ŽÈ£× z„PŽ1À¦bù‡ó¶ÒýJ:7}K6ßGëæÚ:Ygf¸|I0ä¥4Y×êC¡ÂK—+kR»f~$/MÎqýEÇTtÝl%ËS´¾Gø2a0ëØèÌgŠüY.ЗÕò¤3äS4LblÔY$êU1–]ç`˜.:»´ùñ3ÕžB°ûMæ’0Ø¡ûÒÝF0ºû{³¸;&QGbpr( qýÔ_ +D`y¨âÕõÛÏï‡.¤Øëaß:ò÷9/|}"F•rΧþš×ék¸¥hó·Éêà$ÚÉXõgèq°ëMc#ÒPWœÌ˜»ÏŽ¬“ˆE‚ÕÊÑj5D:Š âµ.mÑø`H}HÇ,:ü*:.Bºê-¨àª¸æ¿B<ÌLA-$™™I–OIÑ(…Ýÿçr¾|¿µD—wŸkûw7–@§jÞgi®ZÙÒ÷©…b ;í¦Ê8Hmá1:êØo.€ÕÂ}=P0ÀTcªÉªé–2[¨AÑîtÈgf7ŠVéofö.-3a‚=SµDwúò…sïŠbá¸WdhoVf&·Ls+-lç–1›'ŒSöþ.úØÖí¢×óU»pilz1Ïu†Ý¹6Ã>îÓÕK+åe·K4õW3OÔŸºx>ì>ûü×Qóò'CL}““=q/§”²òBìßÞêþo21Îtendstream endobj -2660 0 obj << +2658 0 obj << /Type /Page -/Contents 2661 0 R -/Resources 2659 0 R +/Contents 2659 0 R +/Resources 2657 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 2666 0 R >> endobj +2660 0 obj << +/D [2658 0 R /XYZ 56.6929 794.5015 null] +>> endobj +902 0 obj << +/D [2658 0 R /XYZ 56.6929 769.5949 null] +>> endobj +2661 0 obj << +/D [2658 0 R /XYZ 56.6929 747.8192 null] +>> endobj 2662 0 obj << -/D [2660 0 R /XYZ 56.6929 794.5015 null] +/D [2658 0 R /XYZ 56.6929 711.7108 null] >> endobj 2663 0 obj << -/D [2660 0 R /XYZ 56.6929 748.7291 null] +/D [2658 0 R /XYZ 56.6929 643.9803 null] >> endobj 2664 0 obj << -/D [2660 0 R /XYZ 56.6929 660.3963 null] +/D [2658 0 R /XYZ 56.6929 558.2262 null] >> endobj 2665 0 obj << -/D [2660 0 R /XYZ 56.6929 549.6423 null] +/D [2658 0 R /XYZ 56.6929 450.5864 null] >> endobj -2659 0 obj << -/Font << /F37 1042 0 R /F21 954 0 R /F41 1238 0 R /F53 1333 0 R /F22 977 0 R /F63 1385 0 R >> +2657 0 obj << +/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F41 1238 0 R /F53 1333 0 R /F63 1385 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2669 0 obj << -/Length 2851 +/Length 2542 /Filter /FlateDecode >> stream -xÚÅ]oÛFòÝ¿‚@J»Ÿ\.îÉir‹Öõ56´´¶˜P¤*Rqüï;³³¤H‰’/p‚"€µ;;;;;;ßüãQ¦&ŠŒU‰f\GóÕ‹`íÝ8³i6Äz}söÿ¥‰lbS‘F7÷ZY²ŒG7‹ßã‹ëë·Wo.ÿw>šÅ¯“ó™f,þåâêöâg‚]Ÿ[_¼{û¦ÒʸB¼”ÅW¿¼}sþçÍOgooz~†<s&‘™¿Î~ÿ“E`ý§3–H›éè&,áÖŠhu¦´L´’²ƒ”gïÏþÓ¬úS2P"KR™šxN$Óüÿ9Vf^Ùô±j’4MO\ö1 †ÝŽ1©gð*f©å‰–Œ÷O$DÄybµøFœë$ÊDFkx¸”é -EìQm¢SÅ=&:ByÄøõ|–òøþŠøíþƒ Q)t8)“Âýñ„)k%a
Æþ¶;)xÀ—+½©áNÑðZåÙ´¿WʪÇ5\1cÀPIWðLß,‹uÌÄõº-êŠÆKãU^TåSX¿kUë6®iiÖÖôûúòê
í±X¸sÉâOçBÇ®¬×nŽÉ«
V9"<Ѧ;GÀ[Õç\‡}”"ê -OÜ®îðI<÷S<‚£D6>âp˜A©
à_ÕHʦƚJÞ,<:,ÎÛ-^ ÇàŸ‹K€!8§·x´9/1½ñtè§,Ú¶tSoíŸÕ!ŸHI -/€¼êFŽ#QEg tŽ ñPà5ndÂ¥1‡Qmä—¤‚€Ê¤cŽüÙnø¨W£N…p<T!2½™`&ÉTföÔÇë—O§zw…©VÛt9WëHŒ^§´}.φ•†ª8ÑR©M¸°òt¢ÕcùD«H´p]w¯½(6nr:„ÊÀ(¿†Ç¦YÖw£4KˆòæGìý¸'Æ -ý9‡tˆÏ—0Ì^¥8E±¯ÑÂ$d-ë7.š§‡,ÔÛBònź„ìfQ»¦ú¾%°« ÍM7ßrPù¬~WuvP†Õüs:ÖIá S¸r¿ !SeFÐ]ÿ`š øÃ'ÎE+Ö…?ÿšFCdC«¨'€·¤$Æ/§ÔÐ;ñà$¼ŒH„@7þT”îÁ…;n4[çùšnY -paäÁ#Pw¢#˜Åò¢<‡¶ú2óÿ‡#¢dàòÍ3‡ÉÛÂíTãìYw5ýweºUaµsÐwÈi”ˆ§N´Ò!o㮃L Ê×#æn»ìlþx–kô${û
žd"íBåc½ùè# ¯ºÕ -ƒAòúj¢çb@OLß:Õs‘}Ïå±(K"N]PðÅsCvŽã:ð²p-¤ÞŒaöãõ-\^0Cf}ÏxÂ3Ûe³j‚p°Òêeé*¾s^Úxk®ïŸBioÆð³,–{Ÿ|Kî×BÞdA„#JÍv¹E=S•ù½êñª©+w‡ðÖYAg'ûWRªGYåODñ.Z”ŒB€üáï4†PY…#ÇÀ%Xx‰z·.cÔa‚O>€G®0\pèUXÇ]E5Š›Ç›”Ø9pY2¥OóÕ!Mð5’¸ÐhÑ{Œ½wí¶ðI‚8’1‹Ä€³ßcr¶H“ŒÛýlH‚í¯K×’ýÃ|½ q)‰¥½O[Ÿ0`‰î] -TCN¦ÇŠ¡¬‚e§‹!0P&ø¨"š}3rð—ÌÔÄ2Üã#>§°Ô¡=ÔZ( ·êy•™Èe’ìJ*œeTtOiQ$rB@ÆVæèܵ$(KŸ `€L¬7NÒÍ-„<&Ä^CÅâˆ43qSP%Ç0nPo¿¨·
!ï Œe¸Á'„¾íÊ(š
ýa¾À|ãÚ¼ð…˜§àÃÙ¡6ì·‚}$=Yö¡Ïͺx¼¤øð†…o^R¥§¿æ¢ûæÏ|Ë%oOŸöEQ*³ ù;Bgu(‡
ó›%™1£Ã~sé÷òÝOPõ=´aò>ûƒÆ}.ÚäØWƒÃÿc2Á&ë£ð‹ÿ+Ëîÿê(ž‰é+K†A‹SxgžÚ}ÖµÌ 3ÁûßAŽ•endstream +xÚÅYÝoã6Ï_! '5—ŸúÀ=e»HѦ¹Û,ŠÍÄÚ•%¯%mvÿû›áŠdËÞÒ¢SäœÎüf8‡?e†q•ë(Í53\˜hµ½àÑŒ½½žfˆ–cª—·/Þ¨4ÊYžÈ$º½•1že"º]ÿ_Þܼ¾~uõßÅR¿d‹¥á<þùòúýåOÔw³Èe|ùöõ;øT¹J€Hh¤Kx|}ùóëW‹ßo¼x};ð3æYp…Ì|ºøõwõ/8Syf¢GøàL乌¶Ú(f´R¡§ºxwñ¯aÁѨ›:§m2f¤N¢%4r#’yMqÆ
H¾L•%ó|Дsš +T¨©å}ñ&Q#J!X–àÌ‘ìš}w¨
!9Ë´‰Æ;ñˆfø’ãݤa™Lû©l;[ÓaÝ7{j|êí¾´-}4~4ð÷â™ +¡™\Hq°¹T,Çã$"0 +“·ýTe×U³NäŽÕ"Ÿ¸*.)Š:´,5&ª Šà`t–z‚óPØää)À)`ïqL›à’ÂD/¤äŒYÂòÝÖóÑl=GÁ„°=6!r½¥ä)¤¹Yz`>ξ\25À&Z]2®Î’MaWÿ,kTž¨þæ4Kiˆß¹TçӬʥYÝLš•3¸”‡Ó^—{»êð>wu +3”ŠÆÛ'Yj†»I’e$Äxòö~Ø +4ƒ:°YW„×Æá¡1)—]R0–t(
+»¨¡ìòXV-N…hPÆ}}ŠŽíÆó²¶äΗá뇛÷-¾ð™©dg‚‰,éƲžáPVå&l²ÂÒwÖi¥¶^|wÚ8_†ŸMù° ì}vWYÂàr·ÜÈ)ûûÀøÝb_Rü{ +ôô¾Qω1.8Bp•C‘´H¶…¸óƒÕx#£8]…@™¦=t·Â–“Ñ3GY–{ yšÂ¤:>ùÚ"Àƒ!0|ãmLu.Õ$xž®SbiäÔÚY¾†´c¾f_Ð&Œ½³]_ºLAžH›%Kñ˜<| K GÉSfX|WÙŽü¾w{œü–x¿w¹kë²¼§;€!ÊTì
n `ÔXû€»>-§\©¯¦§õ– endobj 2668 0 obj << /Type /Page @@ -12805,24 +12781,23 @@ endobj /D [2668 0 R /XYZ 85.0394 794.5015 null] >> endobj 2667 0 obj << -/Font << /F37 1042 0 R /F22 977 0 R /F60 1366 0 R /F21 954 0 R /F63 1385 0 R /F53 1333 0 R /F61 1369 0 R /F41 1238 0 R >> +/Font << /F37 1042 0 R /F21 954 0 R /F63 1385 0 R /F22 977 0 R /F53 1333 0 R /F41 1238 0 R /F60 1366 0 R /F61 1369 0 R >> /XObject << /Im2 1355 0 R /Im3 1524 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2673 0 obj << -/Length 1917 +/Length 2389 /Filter /FlateDecode >> stream -xÚ½X[oÛ8~÷¯Ð£ŒÞ)bŸÜ6ÉxºÝÄY`f‹ŽµcKKJ›ýõ{(RŠdÉN."š<:<üÎå; 0ü‘@H$5ÕÒ LD°ÞOpðk·âefЬ+õn5¹ºa*ÐHK*ƒÕ¦£+B8ŠH°J~ß!ÂÑTàp9ÿxýa:£L3Î?¾^~Xü~R ‚qøq¾ü2¿ssŸ§š†óÛë‡éŸ«_&׫֞®Í3kÌß“ßÿÄA¦ÿ2ÁˆéH_áFDkì'\0$8cÍÌnò0ùg«°³Z¿:†”K@ƒƒeãH¤!Åa';5HQ2†T#e‘šýzzP©’„]eƒ-¡‘-igKE‘â0ìmyoù±tp—[ãÏæX¤yæ~dÕþÑÝ8Î7x¬Òæ‡d‹ŸN$Ì·´D¿ypŽdä
-ELŸWå^à Êý}E³Æ´™Ð -i¢».!i!¨)Ï©ˆÐbê5V¿uÐ’“Úy OQåÑœOg’†÷õÿ%ü'á¢Óðv€“DŠR I„(Ã#øЄÖV¦;®þŠH=qµØ³àC'º‡ôzgÅõ!%îÆen bQ.x}„Õ6-¦3&”OU7ÞO «¢t¿²Ü{V…IlEŽàÀ~©Õ’í^ühãW²ÒÓ%C~vöÝbùÁ´{$fÊ Æ¦T„f— ÈXøl(´~s]QQ¸ø‹ûaí²Ï£ÙçS"¼/™Ýs½³§f2ÍÜ3vMUVÇVÉÎÄ…±z‘Î¥F4ÒQÐ §ŠO‘'5Ôì•[~,wú!/(ÝÙ‰ù¦H -;ˆ„®ñ}XÜ.çw#uaë›R¢\X -žë<+Ý;÷Ž+L°’Å{S˜#pÑ?¼ÝúÏÀRE#îÓô˜%ë‘Q <(^èÕ´¡E6ˆ‹ÒÄÉYÎâ6¦—I«+užµZ)|>Ý$°&äò¶Ðȶ=>ÂaEyß›¼~í‰ÀSR=éÙÕ€0œO¦Š‡ç¡’qárçT©P5RªÅreÊ·0±º¾ÿ8 s.Ž¿lI+5bJ>E[B6ömÙVž5“ükv$ð‡Ä‚œ`Ê|a6]Ì‹–†Ì“%iöÔtV/~vñýØkæÙÍóq#êqê…ª,1`L3ã"ý´d@
€ö71òþÓòfqûå~n1_->-ß.öTÃ|…cK
UÕe¢ÍídDãI›¦'Ϭ©O•«6@"˜…vfgI -sÇH0W湬óýag¾¹ÕÒO&¦XÓÇ欙-ãtçÆOë <®°å|+锕¦«åðjˆÛœ‡W¾fÎÏpP6¸»Œöœ&ÆgSÚ ”úøÀ˜ˆÛFÞßñ§•Öî1Oöi–%À‘{·Þ›·=kòøcœUñn\"#Û'6Õx -!ØOU?NÏzîLX°¶ïÓ²Ž3úz@ÞKjŠ8i›Újé…M·-ûXàÆéVóÚׇ„Ùç‰_³ -Až¸_mwÝZbXé¼×¦( -C<âM@÷âb¤TÎŽRÀ¾dº{ÞÍân䃅'=Ê9"RG—™±+UÓF˜±•²»^™r}UŸAÙÜ QÂGªË´RCN‘ Æ¢¾«Ñå †ÛI³gÛJ(œðÜ—¨¤ŽÔ©¤çøxu¬2”‡ë&§†P}·àú²%ÔД~Š"L²¾-ãpubn–&´†!È#·IÞgí‡ëkÏwŸFx愱ïoÞO¡Þã`ÆFÒTK.£n±:Qh¿ 2âºêøÿVøuàê2|¶Þšõ_6,‡D–†ËÿÉ3sºlo§s»¯¾KKF•¡fáV†‡š[ô¡…ì³ÿË÷¦ê…ÍüËêçO÷ßs1„ë~f|È>¼À½iïÛË÷@(ù±L«ý¹O¶z6úé·&þðçÜ×ïÕ\!¸LŸ¹AG4co”=QxX—0¢ÚÒ¡íÿ(ªyBendstream +xÚµYÝsÛ¸÷_Á·R3ƒ æžœÆIu“8i¢\;sw´Ùl$R'’þøﻋiR¢ä^ÓŽgL\ì7v€xÀà‰Š”&Ð&ŽÆ“`µ½`Á-|{Á=ͼ#š©Þ,/^¿“:0‘QBËõ€W±4åÁ2ÿ5|ñ8š^_~¼z;›i¤ +/?¾º~»ø'¼'¨€„±ðãåõ·Ë4÷yfDxùþêëì÷åÏWË^Ÿ¡ÎœITæ‹_gAªÿ|Á"iÒ$x€qcD°½ˆ%±”ÝÌæâëÅß{†ƒ¯né”b‘FJ*€n‘d ÿOÄÊÔy"Ë‚9ç*’é9f´3?ì—Œ™ÍS%Æ$Á\%"J9—}.ŠL’ŒRª#¡Sè$È)ŠÒ5úØQš(Q1GB΢DŠ¸#ŧÙ\ñp ÿExu‘TE¢(£¢Ø$E<b±1’ˆcgì³ÜÄëÅVo+°(åχœQŠ
2 Á‰e %Ø.µ"•ËÙ\Æ*üP”3ÎÂöñY 6?/,P©·²Ì¶6÷TC2‰’DkOÕÖ¶&ÖÍ¥Á÷™`¡Ýc憥Ýüe ìiVÙ.»)6EóDï[»ºËÊ¢Þâ«›Š¦ó}µ£Q¶ÙÐ`_U
*~q‚ ã jì@OÂâ¾ØØ[§‘JC;“,|\Ù]C嵐2á³8[‘‘ñÐ\BjÈXx+oŠ2ÿ%LÀ?>á“|Ây—ÎàœÑc¬[N*ì*˜YèUËÊœµmºUÕœæ`±Ž5¶xek03†ò±·uÕîWßt¸)¶ESÏ@ Ô‘”›ð[¹F?tòÚ2kìæ ²€…¯`J'à—¢¦Å[›•žks—5ÝÈNxH(Ø,UÞæy;áÜžLpOR횢*‰gU‚ +Î:¡!ë8Óu´ 0K+rÜw§0áÃ-'²J`ÌMürÖÊTt¹]x–$ ÅÍ!Ò°*iö 飈DÄS"@Åpn®Ücz¿Â$ýüddÌ|··’,7<J”™QXÆǬ™ë¢Äƒ;!3\bßU[ñ<?›9-(«†f`7U˜ôz¼i`Ò%/,º±ô¾·MV”.m‘ÃÕ:Î6¶²¸-Îîh3Ð¥GtXEce"‘š4Vðì +ʽ2Ð$çϽíǺÖ\˜(MµqJr:
x¤A'(ÜJ8®Û‚O †ŽÈmªûC¿((4±QÁ€Õ‘¼ŽæXžÈÓØÒØXÞe©!ÈáŠ%îí¾vû_Êv{C‰Æ¨fáÀ>ÍQ;«®ÚrÞ5CªÓ¾é©œs~9rŽŽ´‚T9+²#š9rÖ\¡Æ"ÿKÿÜ´ÅÆ©Ö¯þ”MàîŒTg<ØQ9>ú)‡5›E:ìDs•îì|
âP;. C&°ƒÏª×SMè'Fýê«4j¬à‡*óʳ&£Ñz?ãPª·¤z"Ç)t¬&U?§@œR•E‰UoU·ÚÇl}ð-·ë¬Ýø<¸/ì¢ó£ðu 4‘ 9Hÿ_€d¢™?Qý‚S +×-á p8Çó[ +&ûO=„<4Zû/%4SK¼5^˜}³¸~K#CœÚýš»ÝT;(7?´\ª%:
·’?Ñê…ϽݺÎO\<%b
|"¿í&‹’ž=ÖmÓî{&›Õ–°å©†=̨ÊÑÿC»¤= +ÚÍ í»jsG5;]¼¿¾üðu¢˜0D±°Q.Ѓp¹+Tmè‰&0v¦–ÉÓÝ–¢5üXßUë§NÞø•˜V4r… +ž«ªlHÀ†ÖPu‚/ˆ€k»‡¶ô“×uØ$hªEÚÁå}™¯&,Ðý >z¢gÕŽ5Â,®›å'Û—„„ endobj 2672 0 obj << /Type /Page @@ -12835,141 +12810,144 @@ endobj /D [2672 0 R /XYZ 56.6929 794.5015 null] >> endobj 2675 0 obj << -/D [2672 0 R /XYZ 56.6929 548.7164 null] +/D [2672 0 R /XYZ 56.6929 404.0791 null] >> endobj 2676 0 obj << -/D [2672 0 R /XYZ 56.6929 398.5292 null] +/D [2672 0 R /XYZ 56.6929 253.9299 null] >> endobj 2677 0 obj << -/D [2672 0 R /XYZ 56.6929 275.4329 null] ->> endobj -2678 0 obj << -/D [2672 0 R /XYZ 56.6929 164.2918 null] ->> endobj -2679 0 obj << -/D [2672 0 R /XYZ 56.6929 84.6289 null] +/D [2672 0 R /XYZ 56.6929 130.862 null] >> endobj 2671 0 obj << -/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F63 1385 0 R /F53 1333 0 R /F60 1366 0 R /F39 1178 0 R /F41 1238 0 R /F48 1258 0 R >> -/XObject << /Im3 1524 0 R >> +/Font << /F37 1042 0 R /F22 977 0 R /F60 1366 0 R /F61 1369 0 R /F41 1238 0 R /F21 954 0 R /F63 1385 0 R /F53 1333 0 R /F39 1178 0 R /F48 1258 0 R >> +/XObject << /Im2 1355 0 R /Im3 1524 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2682 0 obj << -/Length 1512 +2680 0 obj << +/Length 1417 /Filter /FlateDecode >> stream -xÚXIsÛ6¾ëWè(Í„(‚s“c5µ'‘]KžéŒã,BŠtIÊ®:ýñ}Ø(ʦâLÚÑXÞò½"C?2a–„Ã8 Ç„—Û®aïã€8šÀ]ª³Åà—_Y<LPÑh¸Xux „… ÃEz7š\_OgçŒÊñèŽñèódv;ùd×®Ç M>Nçã€ð8â@D¸¦‹ðh6ù<=.¯nof“O×7³Åø~q9˜.ZåºÌ´fîîñ0;.±Dðá3L0"IB‡ÛAÈâ!c~%Ì¿·;»æh œ Ä{¡dHBĈAÂDEL
$Ú>°…ܪ4øZîªBæUV4Ú>h q™3 ÒëÀvðÖTñ$±H÷ð2ø~¡4¶£Îâße¡ìÈ°“¬°ßÍn+‹ 1R2•¹#^•ÕÖiv”pN*a¦FV•ù¾(ë¬~é¬g -$"B¾«Ò‘ŸŠ¢„ÄN#CU[w4ç—eY4ª].Wö+¿ëë/SïWïwù¶û‘‰ÐÀ+PŒ"ì̹ôüY˜8þµHËLOÄHîšr+›l)ó|o÷—NX£R»ð°ïA¨,‰÷¯/¢0¯ç*œŒ,Ö½ -meªìrSÚoºîÙÒN4€µ7Šc…ÖèLcÖ¯e@)¤%Ob".\´ºõî1{4)D5õvõ/L¢Ñb£4@„Ž¬ºËÒ|S»¦ärcG2M³&+;"óMU®:«+GÛeXƒÇô`©úÄh+il¢Co>d…¬œ>:dcÀ¡y^>gÅÚné¨41âÍr0Øi½@¡¾k¸)o+;·âùø˜g:Zš¨
öÄÇ3,Yß6aP«êIU–0«»\ëFVg*W§’îàfפå³ã§!Ôße%ë
8ƒ±dt¶·k©ZÉ]¶»RÝu²Õœzä²VÚC¤ÍB 4úšÆÖ( -ㇽÝHT‘Œ˜©¿ ñkídVGU -}'ÆÌÅúZä=ÁG9jSÊ`}`[3Èk3 H°%h6›×ÖïŒ@•& ÷šC²6£å±SO~¬<2”`9 ‚ÿu%d±
E38H=3©ÛT€,^gO¦FÀJë=ñ¾Ñc]vÑÞiD‚GìȦˆ¯—NË£\˜šÖA˜g…ò©°Î -SÈÅè9kÜ>\â!$¹þØ…²:l@žëÏ;ž¤Í©œ²ÔõÆÌ U -]Xž]ÌÎíéÄÉO·Y‘ÕM%.ݨ•µM‹Ï²Øɾ¤%‘@4Š|Ô÷šÐ˜!=±CÀ:dr»øíêæmÓ/ aªB¹~q¾à·Î•Ê¢.«&ÛuzÁCÏ«O óÝnä»ÝÎ
ø“=®çð¢³=÷×µ™ÌævÐ¥Ý5Yž5ûÿ¡yMàa@¡•ÿùÞµÃátëꉎ͎ -/½ž{/¹V?®2UŸä*^r½y“kEºÜ¦ê©iW-§/™>9ÌY[Ïc®½¦CâþÔSÐïçžÀmÚýçgúáO Ð’ qȦ㷠+xÚÅW[oÛ6~÷¯Ð£
T/¢.Nãv Z'‹]`@ÛÆ¢cu2•Ir3ï×ïð&K±Òۀ€EžëÇC`ø‘ å³, +’,Blö<ÀÚÛ q<¡g +û\ëÉ/oXd(‹i¬·=Y)ÂiJ‚uþq:¿½],/¯~Ÿ…”ãéš…ãéûùòÃü¥ÝÎ2:¿]¬f!áỈpÍãérþ~q^ß|¸[ÎßÝÞ]-׳ÏëëÉbÝ)×7€`¦5ûsòñ3r°ãz‚ËR<Á#’e4ØO"Îó”r²šüÖ ìšcá,E<¥ÉˆG( Açtàž¡˜Qf\²Z,¬åów«mø1ëù!Q”ÑÌ°ß½y
žÉðÌc–Ò{„QÅ)lÓܯFjq}qÑÿ+Žÿ€¸b:Ub/óp³“›?6•Ú~§ðGΗÿ®”|¾\«|óœV>Õ3’Ne“ +CþnWÎ + Ã(‹âF>~ ðÅÕòÒ+s1Ë÷…*š¶mU[ÒÜJ{ºÚHKz/ÔA”#î qŠh§X Ç2Hš°c +!ÏâˆÅ¶’>¬½¹‘ù,_®T+k%[«ÉêØ´rßØÉëJ5U݇ýéܱ(¦NNÄP’ʼn5ÊB‹¡\m@¾T‡Z‰ò±.T«÷ë
,F§‘Ù°®qõÀµ”a«Þˆ,£Û'J;êuøíÈm°“BÙïî°*´¾¹¸/ó¶ª÷cžÅÞ£ÜâQUMÑ<Ç”€AuG)$oÂÙ0òÆ£ˆ‰æ€€a_„Á‡ˆŒ fÇõ‚ƒŒ)°ÜË#(•D¾ +½wF³É³²ér±z}wu»¾ºYv»^L©—TÄ9£(ÎHâ42\.íÚ‹Ta+;rµµ_ñÍX˜ú¸ú¸‹ï‡ßTVz¥B’¢,M9×^>‹2'¿±a…éI:‡¶Ú‹¶Øˆ²<Úõ;¬•¹%ÜG¼GR¸ +#Ïe><Í ŠÌÝIB¹eíÝB…°&¤»”¼-½[ë‚NÔ¾N§ûi/šÖ¶„aÿúêyú{Éùá[-ŸIÀAã[=÷èçm/ÁJX¹´ü)í.MÂðtûÙÝnì»ÝÞ
ø/{\/áYg{é¯k3Y®ì Ï{h‹²h/½rGúi:ÒrâÎ¥ÿù|zïG biJOÛAÿ©÷
ñJiÃIBž«Þ½•Ïuÿ$Ö)Æendstream endobj -2681 0 obj << +2679 0 obj << /Type /Page -/Contents 2682 0 R -/Resources 2680 0 R +/Contents 2680 0 R +/Resources 2678 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 2666 0 R >> endobj +2681 0 obj << +/D [2679 0 R /XYZ 85.0394 794.5015 null] +>> endobj +2682 0 obj << +/D [2679 0 R /XYZ 85.0394 751.9132 null] +>> endobj 2683 0 obj << -/D [2681 0 R /XYZ 85.0394 794.5015 null] +/D [2679 0 R /XYZ 85.0394 674.8216 null] >> endobj 906 0 obj << -/D [2681 0 R /XYZ 85.0394 769.5949 null] +/D [2679 0 R /XYZ 85.0394 634.4081 null] >> endobj 2684 0 obj << -/D [2681 0 R /XYZ 85.0394 743.4733 null] +/D [2679 0 R /XYZ 85.0394 597.1931 null] >> endobj 2685 0 obj << -/D [2681 0 R /XYZ 85.0394 708.4545 null] +/D [2679 0 R /XYZ 85.0394 564.5425 null] >> endobj 2686 0 obj << -/D [2681 0 R /XYZ 85.0394 632.6354 null] +/D [2679 0 R /XYZ 85.0394 496.4842 null] >> endobj 2687 0 obj << -/D [2681 0 R /XYZ 85.0394 562.703 null] +/D [2679 0 R /XYZ 85.0394 434.3126 null] >> endobj 2688 0 obj << -/D [2681 0 R /XYZ 85.0394 376.8726 null] +/D [2679 0 R /XYZ 85.0394 259.4673 null] >> endobj 2689 0 obj << -/D [2681 0 R /XYZ 85.0394 303.9754 null] +/D [2679 0 R /XYZ 85.0394 194.3308 null] >> endobj 910 0 obj << -/D [2681 0 R /XYZ 85.0394 258.1694 null] +/D [2679 0 R /XYZ 85.0394 153.9173 null] >> endobj 2690 0 obj << -/D [2681 0 R /XYZ 85.0394 218.7009 null] +/D [2679 0 R /XYZ 85.0394 116.8171 null] >> endobj 2691 0 obj << -/D [2681 0 R /XYZ 85.0394 183.5674 null] ->> endobj -2692 0 obj << -/D [2681 0 R /XYZ 85.0394 107.7483 null] +/D [2679 0 R /XYZ 85.0394 84.0518 null] >> endobj -2680 0 obj << -/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F41 1238 0 R /F53 1333 0 R /F39 1178 0 R >> +2678 0 obj << +/Font << /F37 1042 0 R /F21 954 0 R /F39 1178 0 R /F22 977 0 R /F41 1238 0 R /F53 1333 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2695 0 obj << -/Length 4018 +2694 0 obj << +/Length 3962 /Filter /FlateDecode >> stream -xÚ¥Ùrã6òÝ_á·Ð•‡8x oÎx’Ì&3ñÆžÊî&y DÚbD*"eGIåß·Ý -‹5€`â`ݶypwÒlù`úù³©ùœÇª[7‡Ž:Û¼> -.Iº[X¾)©Íì¶í/°Êkn4u—Wõ“i-A -\gš½ˆõJeýÖåž|ì]ñE¹<ÜóqMüŒµqn€;27@p†tû|E6Ýns×ì·9ã,Aà—ä -pâšÅGhWÔcâž°æ··¬ëùÐo󢜨7ñÑo²ÛTÎ0×ÊÊ*BzO6ZI^غ›‰~)“E’:
[\Í1Y‡ZÇÙ„Ét£L–´½H¿Áhé¶f"4ûλ¹ -söÕòûÞò»#þ±]œ» -3=/ÆÌZšÂö^é$Œâ,û¿“TT‘qºøažŠ°™žR1ÑÎ!@˺é$†›uå½µ(´d¹?lÉÄZøý³$‘`螯«ûµ[Û–V&¡EòMãHÖ \¶)Ê
Ú¬Xï&¼Ânæ—y€¬&1ã(¨bé-ª6_nÊùâö€|çu›¯X÷˜Úê¾Î»;*‚Ù°ÖÌÃ/Áв -i¤-7¥¿3Ž±‘ïà$ŽvûŠ:ÂÄÆnK¿¥Å#Ë<Äïô‰ÎAš–5¯ê
Y[Ä/·ÏÍHT4$Ðß -þd‹—9>£8,mc$6rœ™àø€îÃeL˧+â$Ì´–½•¹«6³è ˜§„ÁþˆüŽ´3£Iâ
+>€žå/"òØ0~äØ®êA¾–ˆ±Âló®ý -c1iå"ýÓ'´½X$Â=prÕb& -轫y[t~3nm1È«‰—¡úz¼„s#ÿTA©º}”£_<÷P½d¾ŠüÂL -}vÉ+É`£+°J†Uü›ÓϦC± -¥ñšªÈzGÞ¾áelc$9œ„¾Ûf -êT¼±y*Œ¸æ¹/•g€ÏÃᘓߋK¥^Ä[¥’oGôð[ySì¢ÌÕ4Kç>H¥lõ8.×R±¼óµt)-?îõÉï2ïVëqÉøùƒúãŠòÿFg÷Ù"0»éa ÔW -ñvþ›ú°]–ûñg…þ‹Ã;—ô¯F®mø!êsß ÙOaogp„ˆUxêËoÈØð]pæ;íȯóÞý®SHY2Ùð=2Îi<‚6#…4—øu÷ýøSÜÿQ*T;endstream +xÚ¥]sÛ6òÝ¿Âo¥§C|$úæÆi›k“æbwzwi(‘¶8‘HU¤ìª½þ÷ÛÅ.øeÊñÌgL`,‹ý†Äyâ<6¡±Òž'V‡q$âóÕö,:¿ƒ±ïÏÏYøI‹á¬ooÎ^~§’sZ#ÍùÍí +kåùöLÇ*ŒµR²9»>ûg‡p0ê–βBD¡TFÎðBŠs!BÇrČ؆FIå˜q}¬ê]S6Ó£(&©Qç‰Ò¡FÏm-€Ñ2âNÐ&B k€Â‘¥ÅÜùYHUÕvyÖ¼ÿ¸È?ùÖU׺£Æ鳨ÇÝ͸{Äó½üˆíw–2 …N%‹{~\o³Õ7Ÿ>Ç*Ûß4Åj_´´lD° +å·\ÑÀÕ»k‚þÂú„Àý…Hƒâ÷CÑ´
fŒ9/~‹"Yú$(+þðÝ+H¡Ìx猺È&¥Øß{4©!2Ÿa$Ç7kwa‚l³©¸M„5õÁ5VźªÝ7ç©nø.ݤ8ÈòÜQ
˜8X·ïýÀƒÔ[Þ˜>ÖïóP¶k”p×ÙfÕH;R¯È˶¬îxëu1XŠgŒÆƒ<Ü!NŠ‚Kò
,åwmoÛ°=¸¬²ŠuÕfeõhZCd +z²z8D_”9 -Ñ` Ÿp¥
G»Þ¾»|ûššnž“%˜PߎȞŒ‘A"k{ýóå3”:éäd&èÁ¦òŠ¸ÈgîG + +ï…kj¼ (ûì]üèî‚Ð/IŸuõJ¥=êbO¾p—¼G^,w¼]ã}ÆÚz7À™›{`8CÚ}¶"›îÐÜÖûmÆ4Kø%¹œ¸fñZãõ˜¹'¬yÓÙ[Öõlh†·Y^LÔ›î±C²Û”Þð¥S&„ôžl´’¼°s7/üÜK&ñ¶¸š»djÝÅzþ’éD'.YB*ô,ýC ¥GÍL¨÷mçæJÜÌÛWwßwîþ°;º?¶‹sT +Óllx£O[(D «-n¼VÞü>öüiðê°'â«èB¨GZ÷‹‰p·ø°C»W0ú¢ZíÞD@?ÛÜÕ{0[êÞÖmcDÁ… +~x{ùjÁI“>:êÛ«ØQ‘ër…v\&-N‡© v]"¢YP°!Dnx8ü\¹¤€uKæš™ŒoL=BÎgHÝ^Ù<àêÔÞð¡ÜlhfUùœœºà,µÀµæÐí˜::ÒHSl +§#b#ÛÁN#ìö%9t„˜Ý†¾…£#M;H‡é3íƒ<-*^Õ&²¶H_æžzž‘¨hH ¿«÷s–¦¬š6F¿À´2!)[4«xš6Å+tÜg: +
ÖŽ +
."SÝf‡MKã”m`Ëéat§>ËÁâVC><ƒÎöÐRñ{Æi¬6àœî‹Ù|îW +z¸,5#ÄšV<):T¦KÀ»ä¸+šI§}/F_Ž3Æñdc\^TN ÷qî1
†é’s÷(8CåèiïÓÜ£T¨D÷oƒGE®2pŽÊ„6IõàÝgÀRÐ^…¯Å°dœ¹KKÄ—¡1pÖ2±.ðyL1¸ {U>ŽhSi§Ñˆ4ر…ðyÍ»/³¦0š6†ä¥vJ„C…ÃÁ^á#IüÒ0½t +ý†/MþqŠŸ"€ãØÒ˜/
–î)kê3»½Á€"°¯Øy6kH°æ
Œó³ÎSJuÚû?é6 ÚJÒqóÅ\ô§Â8±òYÁŸìßÀ}¤×ôTºÆHlä83Áñ߇˘—5VÄ&Lµ–s¿0“7zøwöG@äw$ÌL&‰4œø +³ÍÚæŒÅ¤“#ú§Ohwba„àä$ªÅÜ- ï4¦¿ŸŠ…Ç¿CXPAxîRãÐ(#z¦Í ˆ
eԕ»úWi¹\b¼ÎªKâwèoŒ+JÖX—fžÉX„25“€ŸÒ°®º<ÎQœ„Bybò¼Âµº…f(74)ϯìö„Ü]ˆ
vYÉ +_®±~d…o³+Våí±^Ø´6`}©aÁ¤H/Á®ë¸Ú¼èƒ]lƒ]¬U@ïMÅh×åì‹ç +b/Cõô.xˆîÍ5Žº§ +JÕÝ£}}ðÜ# zÉ|ù™™úí“W’!ÁFW`•
+ù›ÑgSƒ¡X€v¶Ôç’1´8ù†×°y*x`&¥÷‹Í¼{Œ’äQ~-mê£
¡ü{’ðŽJt¥¢yX)s³êÁ)Ü!È"š(Œ¤JÇ÷‡EGœ
Ž3}CNA¡»¨Õ0µFaÜ?5£œJ÷8ëËwêŽ`§G endobj -2694 0 obj << +2693 0 obj << /Type /Page -/Contents 2695 0 R -/Resources 2693 0 R +/Contents 2694 0 R +/Resources 2692 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 2666 0 R >> endobj +2695 0 obj << +/D [2693 0 R /XYZ 56.6929 794.5015 null] +>> endobj 2696 0 obj << -/D [2694 0 R /XYZ 56.6929 794.5015 null] +/D [2693 0 R /XYZ 56.6929 749.2922 null] >> endobj 2697 0 obj << -/D [2694 0 R /XYZ 56.6929 751.4437 null] +/D [2693 0 R /XYZ 56.6929 666.7399 null] >> endobj -2693 0 obj << -/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F41 1238 0 R /F53 1333 0 R >> +2692 0 obj << +/Font << /F37 1042 0 R /F21 954 0 R /F41 1238 0 R /F53 1333 0 R /F22 977 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2700 0 obj << -/Length 3328 +/Length 3285 /Filter /FlateDecode >> stream -xÚ¥ZÝsÛ6÷_¡·“g*Ÿ$poîÄͤsqÓØ™»¹¶”DÙ¼H¢*Rn¿þØJ”œÞ`±¿],Å'~|btƤU“ªL3®'‹Í›<ÂØ»+N4³@4K©¾¸zóƒ,&6³¹È'«d-“1cøäaùËôæãÇÛ»·ïÿu=šM¿Ï®gš±é‡›»Ï7ÿÀ¾×VLoÞÝÞëP2"ž;ºœMïî?|{s]¨éÃíõo?^Ý>D¶RÖ9“Ž§ß¯~ùM–p‚¯X&Ñ“?à…eÜZ1Ù\)-3¤=ë«û«Ÿã‚ɨŸ:& --M¦(Fd!Ę,´Ír)¤—ÅÃSåñæÅRn3&Œ€õͬC’Áj\e’åœHš]W7[Ȫº[,î›òÏzsØPo½¡î’fv˲£¾ý57Óê÷CÕvرT]ù…hæÕªA:|¯‰´öûêi9oö]µ…‹þˆ~xYÊÃz@›O%cît“™”™”JNfœgVkáÏÕV‹f»lÝJœMÿ]ù]4dó -Ÿ‡¶Zb«#’eÝ–ó5
£4\кÌïË`CÊuR=¯“`ˆA‡q}0ÆÔ±>˜ú`AÐõùíGl »ý¾ÖÛ®Ú?—k8¯°š$ÇRÉ9¢Ÿ2,D$l>}¿ÂÞ¯$ªïà•«~ç°®ûG½^cÿœÆÍfw -w×BOïço®—voñé™|ê’5ì]nÀ§ÚÎÁæ3ÍÛö»¦õñÌ-èÍßõ7à-ûHVÓªv#ØÑ -Ù‚…¯Á ÎøÚ¡o‰(QÉ9aqâ[ÝÖ~ÈðOÕâK‹TNXîéÝÖ( -‡Ó!ÜÇ•–5²Ik”‘ @¡Ìï´ï§ f ’Ls -ϯÕ5eu
ìñ¹‰×)7yŒkZÉã‹£ùZ®“Ö)ˆCçÙ¹±ü"ëuóÇè¹KG -w -×ãpq&Dq7µ–.g[zû8X/èåîžnÚÁããµ-x|rùŽ7CJ -ýF{p W»9{?Á«}¥ðn½)»öè* «×t“ÜT%eŠŽ "SrœUãMþï'õ"–1
™°4*³\©ñRÍR*,ïð‘òN¤BMû'‡ï…ñË®Ùw¿³ÄÎ - Wº‹<Eª¦&ÅXVp¥‡\ÝW˜(@VX:ÈueP´{‰þK^¿~ŽB‡Œ¼Ð Pé‹þ¼§)˜€4N+®¢DYŒ\"áÎQhC¤Î=ý'`Ýyáì8å«[Ç\|‚Ä}»ƒSlædî™\—ßx+W&S®ŒÇ^ÍMu&œbüB&<NCëœ{éˆG46eÛEfÆ1Õ³=!``G¢•®4#‡Ž°K…ª›Í§în>Üâ
Á#¿A@¿O[¬—èq³ÿÖbïýO7Ø9Ä^:Ÿ‚!2¬^ÂR´g8—ëŒ. -?¹?#kÛ&Ødéq‡Ð*õ™ÂhN+c‡®åÜT_g\äÅ7 ä¼2æœd£°AÙ3»_–¤*ºÌÙp³²ƒ”Ëwa9šŸÞ¡=/±øl,VùÒ¥¡hOi#:ãdî©çQ™ïŒûp#3ñj€M©Î»O¤òàµ.CTõÍs¤%/s©FØ8q ó!Þ|by6oñüѧá÷”¤Œ,—2³6øžðÔZ\è+Œ$“ßžD%r«ÛQà&Ǥåßß}¨$g®xN÷èDn^Ñ}BuA÷Ê׺u¸ªúoÊ'z9*U¨ËDª§¼T˜!½ÞÃ
Ó5ÀéŒÐžk_Îv_7ð†¯iÝ5¡_»!@'ŸOª“o=CØsWhacVs÷4èPð!æ¸ëëªÜŸ9¥^6“'y=¨ä¼0“åBÚWì ¡º`Š¾cVn{, +xÚ¥ZÝsÛ6÷_á·“gj–ø$qoîÅí¤sqs±3½¹¶”HE¼ˆ¤*RIœ¿þØJ”âÎ.–Àb?~»X™]§ðÇ®s•¤ÂÈëÌÈD¥L]¯š«ôúÌýtňçÖ3ÝÆ\?<]}ÿ£È®Mb4××Oëh<Ióœ]?•¿-îÞ¾½xõúß7·\¥‹’›[•¦‹7wïïþ‰´·7†/î~º„W.…&¦-ŸNïß¾º»Éäâéþ槟¯îŸ‚X±è,V¦?¯~û#½.á?_¥‰0¹ºþ/iÂŒá×Í•T"QROÙ^=^ý+,ͺOçT¡Dž¨œg3ºà|NÊ$ZpátñÃ31Õ‹²Z‡íð=|Ç¢ï¤eOívöƒ¶?ìÊb¨ˆ1Þ@ÚCAŒ‡¾êqí÷¯ÞÚA¶:$ôU["…ÖrÔý
ËÕŸ‡ªú)ÿ°©ÐMå—تö´H»ú>°>#µÀõˆÜuHÝ"ùC ãó÷4åƒ=ÒõIæ<‹±Ä(ÅÝaêÖz‚Yð)Þ#™‘à?oêÕ™WE_!ñéôÙçz»ÅѲB&ÐV &R±xÚrel.t’1““vo?̀Ʉ‹`€n7Ô‰ÓÁ§¶Õ,ÑFˆÙVÙv¢p°U׶ÕÊî› 6…Ò‰ÉólªÎ§MÝc¤5Å3œ"à¹C•®«}±Üíó¦jqTs18í°[ã3xŒ< (ãve…’¥ ‘ ²ÇsÍ)8˜ÎŒ×ùn^çR*o–¾ò;¢Ï€"‹N×íiÔš¥s`ËÛÑzúfÝÑ̨Ï~ÊJŠ €€À’u#–º +à¸B‰f"{¡6Ržs¯a^"ÕìØ…öš>šaÐ_êæеnˆ\ÐÁ¢BÅVžk +Uë +—<åS½ª¬ïwŽêý>™(ÞR€iT +Òkz~¬ž—Ö[%rBuÄ;¹£ ™4ˆyÉœ·Â˜$“ +Š„SHëq›ª¯p:^Ò}X©¬©ÖÇ5ŠXP¡Ìün§ýøùb`• È5'Ð%QWX/;·ÖßS•¾{ëÁ€!É«Õ¿ÔxŸ‚ï;¢Õôi±ì1“À\T‰Á•0Â+B¨Ô+ÂRã3Û÷æÐÓ2KâhªöZãÄ€õ±aÿ:”ÿFŒ5‹G5‹!¹áé°žýaµªfIaïݧÄBå
Œ–“Õþ÷2A†D3þ°v@WOâ].žœw4;icæ„ë¢ÞÎÖ ÷póƒ°ÙxiY6=µ„å{´¡v® +ϯÕ
UuMìñÙ„ë”ýxNjZÉá‹åùZ®£'ëø–lJn‘í¶ûÜϹra ”:ÔÜ›ÜAÁã O0¹MX%2ŒgçÇgGKÛ ª¸¬µ‘P¯‘b,ã“\-Çýà$†,ëJa¯ +CÃ~ÒíçìÚÔ}5EžÇÑoè30ð0`x‡”å¶h?âÐ盜ÐÚl4;×£eN³ç<Rëлhçj[–ÉÐT"@'„€¥W5úbi‹Õê +–smx&óDÚæþ·{µ*<õ’bþB!NÃèàœ}HFTš¢‚°‘àXꙑ°@zçÌ6Ï9ÓÀöØ%}×ÍèÅ›‡»7÷xCpHën@we‹Qþòûõßz¤>þr‡Ä)öâ¤OÔz*„Ì°~öKÑžþ\–B +û8’ÃÊ[ßUWÇ¿Ì2‰@ÊÄ74ç‰dæE0ʲlŠ¢°
¡(Š2éf‡E‹óVX +ŸØ¯²#L©Âýzˆ£Ó´»Â²æÆÊÕí+|·"Ú\ Kj»qŠ(çv\ûšÑâLÃïIƶkèO»Â«¯?´¡–<,SI¾y&b®ó0¸|&ÄííÈ#ù”J4“ò²kFˆ 4輊–‰“F©yîÖZ¾m_ÆêÕ2wñý\¹¾~<ã³
°¸ãÎà…`P „_GbU‡`–ä<Í"ÀP”„´KB3k›>0ÑÒó¡d`ë1„°œ’¹™†–K/p_ý¸(0®³ý nD¨<ÉGaƒb +u9@7¡’9ƒu +¬ÇÙgìOê۪؟9•[&QEϽ=’sÿõ&TbÿUmÆip¢ÿû?âÆÿüƒä òœÏÛJ“NÀ¼PVv–‰cÑÃÿÎÊþ?Qje¤endstream endobj 2699 0 obj << /Type /Page @@ -12982,30 +12960,34 @@ endobj /D [2699 0 R /XYZ 85.0394 794.5015 null] >> endobj 2702 0 obj << -/D [2699 0 R /XYZ 85.0394 569.8662 null] +/D [2699 0 R /XYZ 85.0394 507.1706 null] >> endobj 2698 0 obj << -/Font << /F37 1042 0 R /F22 977 0 R /F41 1238 0 R /F53 1333 0 R /F21 954 0 R >> +/Font << /F37 1042 0 R /F22 977 0 R /F21 954 0 R /F41 1238 0 R /F53 1333 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2705 0 obj << -/Length 2767 +/Length 2952 /Filter /FlateDecode >> stream -xÚÍZ[oܶ~÷¯Xà<œ5ey•¨—.’)Ò 'vЮä]Ùª•6+Ÿ_†R«¥uš¢80`Qä,9œË73¤Ø‚Â[¨ˆD Oq"‰¢L-ÖÛ3º¸‡±·gÌѬ<ѪKõÓÕÙ?‹x‘$âÑâê®3—&Tk¶¸Ú\/","ç0]~¸üüñõÅy,—WoÎWœK-/>~|óáõ»ßá]Q JJ—¿^|ø|ñû>ž'|yñöÍåùÍÕ/go®Z¶º¬3*O_ήoèb;ø匑hµx‚JX’ðÅöL*A”Â÷g—gÿi'ìŒÚŸ†D!•&ŠË„"*Œ‘˜1 Š%#"Rºg!y*#°ªØÜ×uSç÷Ã
3ÊIÄ)_tgÝRçÅIdtÙ[ýsØ¥\6¶¡–¿+µÌËMõT㧔âÐc¶¯óªÄîê;ß^^®®.ß½uÓTØÛ)v›´É6 rAõòê!wóãS-³/‡ü1-²²LµËÖùÊg±â¡”e2F¥¸ÝÃÝs^Záýð³ìŠ›+¢4X,µT« -IúB‘D‚Š‰Ý˜ ²uµÝ¦å¦ÈËŒŒÌÑé<J´Næ
£K5m-•áfŸ¥Åù¸ÆöÐ>˜"ŒÞcá”Kp’hñjg<Á/cš0Æûü–é6»ñ(#"Ä )y¢Àª=e4‹eÙß2P›ry¨@³k”8¡î•èNÇ9Ñ”I§ü ˆ•à4Rý}"ngo¶Ç -̳’¢$†‘ÈÈ:0¡àDĶqBÈðBéAB Ý— ‡|hÌ*!`Jnóüy*ȪmÞ@ý -ßÞ}À§ñ¼¼l²}™5ÆüûÁæ?lgŸ’|+:QÖt©f|ÂS… ñ»}B$ÊϲÛRøú„ˆë3Œ‰à‘³ñ®‡;1ãi—¬ë ÇÞ£ƒ˜Ÿ§0c˜‚Aã”S"#¨è^àbÞ)"ÂLíŠ>ÁþYŸÐ“Jæh·‡ÚiߢŜ‹˜€”¨ÿ¡”p•œ¨ïºT3⩾ßC.mRBF¬CJ1ݸËï-U€ù~q -¡ªÏüÕC6aš·öÜ…„Á”Wðu”Êäì1‡ì}ý`Zl‰²€.ç¡c‡žÕ:g7Æ5»$
ž)@Ï]µßºäAÚÓ"ÙõCºÇb1RÖŸ#i‹ýªìJǦȉ¾×#"©>…üÆ´Ž“v(±Ä„3‚Ç/sF£å§uåî¶}›—¦†2B0‡.¦× -Ðö¤ØaõaÌ ÿÓ§¼8R‘³6—IpP“I‚j‚'ü •}M×MñlŽ†èr›6Ö - Ë<hLObñÄêÒ¼Ùì»ûÃÿڌӴ,|SzºÏ³¾…„<Z«ø{®LϾYáŒM(|%¡"`ñ ÇùÆÌDR1á¼2Ê8a'7¦#;âš-Ÿö{K|ÉÝe
º=¥>(Ú¡ì«Q©ö9¥óï:+›´ÁSF ²êîN4ŽºÇ^uÿíÌÑSAR}}rgÒæßÅ$ìK53‹Õ<ìw©¦a¿¥²°ç Ë7YqßF¸ß4ÅM \cÀµ7£³7e? -ì`˜X&ØUok¼ 3™‡y”Ù6vŸ°QÁeúð”Ñ´\°g§J. -aXj9k9 -Óéêi¸¨f„š;‰ÙE=Q`ÑîþtD(É÷}×»"}¶¿«Mc}Ø£IØ{DèØfuÞgƵ0—
ø‚)Œ¦ ¡EDg¢É‚#rØ -3t4½î¢1„ߘ%ó‹z¢À¢=õ (aÓ½E/aÑzxßÚÓt8ݵ ßµ{öîŒÍLî)3¡ulp·EZþ‰ÍÙ]n¾`”Ÿs‡jFΞ -=¼~{: -x8dåóËz¢À²]I'’ÞÝÂÀQºÂvÜ@<- +xÚÍZ[oÛ¸~ϯðÛq€šË;¥Ç,Ú-ºèÝ&Å.̓b+‰P[r%9iί?ÛLI”œm÷àˆ(jLçòÍI²ÀðGB"™Òt¡RŽ&b±ÞáÅ=|{{FÍÊBªŸ¯Î~ú…©EŠRIåâê.+A8IÈâjs½ü‰Îa¼üpùùãë‹sÅ—WoÎW”r&—?¾ùðúÝŸð.0%ÆËß.>|¾xoû>ž§tyñöÍåùÍÕ¯go®:¶BÖ fš§¯g×7x±üz†K±x‚ŒHšÒÅgÌ÷lÏ.Ï~レŸÆDÁE‚år±b%0\`)B€H‰IFY'0JbóTZ`_òg»ð2Ûå¶Õäë:o‡ë'4…U`¹'±ÒQEx¡/ÖC0s¹Ï×Å_Ó¼V¼l²Ö¶²íÖ6ûMÖúïY}N’eîˆ+û¼uïW—ïÞ®šâ¾Ì7î§MQÞûs½ÀŸ~,àŠ +h¢RX‹““ +ü^Ž‚®D)&îwû¬¨µÝ!M +JÄ)(˜ÌŠ” +A
Ñ•ç §#â“*92›
†KæhÖÕn—•«ºê1¯ëbcįYé”Ûi¹é$ìQÚ§ˆiôÆÛ¥ë~,2Ë +Ù¥ &ž—U”]Ž8ر#©êÈ0 —D +îGùʼnΒ ‘w:PD!.`¨y? ¨füÄSé[Λ($•dóóz¢È¼áSŠ¤Pª?ïçÆ)àíååJ[´SWåô æ=P u
`#à…3ÿÌ¿ŠÇl›—í`(mwÏÚE"ŠN¨HJ¯¢ûÓŠž0,mR“ê“ *ÊX2¯¾jZ}•áf»™Ð Á vŠéüÜUdò>€®uÈêÍn•È¹Ë?Î…Xå¦zjìŠ1¶ŸÀ…›ÂHº«;Ûh_SÙ^§ýpà@û8ñÚû}í‡Cií¯,`Q‰0lîáÕ¤e$ÌÎ0ªÿ’ap°é èfÃSinê<Ûî,׶=´"¡ŒöX8ù)J“$‰ÇýU7â ~ I!´Ï¯H7#¹DŒ’'ŠÌÚSH“ÅûÓþñƒÚã>ˆ2¥ý©„R”`â±=*b†98
ÿœˆ»Ç‹íqÇÀ]E +9ØHÆ3¦àÑü¸’¸¶K‡4¥´"1F»6ù]vضöÅf)ÆÐ4QQÆb p óû¥¾.€µ#ÅÕ÷ÇuUÞŘd(Õé©“&¼»s9žƒú€Ÿ02Œ’ƒÎE›ìÑ÷Müv½Í]2¶™vb +ˆo¶ýT´nŠÎ”û‰®T +l(_o³¦¹9²<2@Û”5ÏnGá·g£”2ÒgøŸuýÐ<|Ö¹#ÞÎ yWÔ'`^ÑÈáÍîUdœ×Õ=–ÃH¤eQÄ„m; ®)#éAŠ˜Pü»pȇ¶È¨&÷è6ÏŸ§ò¬Ú-$ЯìÛ»ö©=¯(Û¼.óV›?øÁø‡ÝLàãI‚ %Qó>RMûDGƒÆö –B*?ËnGáwèL ÒgØ$ŒJg㡇0ªœ‡èïYH:ȱ÷è ú§Ú)ô7›‚Aã”S0Ä!T¿Ä)ؼSHDôÝÿÄ'ÈI¹ßxÚ§}ƒs.¢R*þ<ŠBÕ‰ú.¤šñOõãbé²6ChÄ:¤„Óµ»ÌñÞQE˜ï ,úÌ_Ew)µ}$´³à.f¸ "¼‚T:gW²÷õƒn‘¥•t™8{ëYs6…Ýk
HZ»§ +ãÏ’›b¿*#«J”.r亣D'§ÂXrÜæC@›pFcŠ•z™3jÅ?l·7W˾-ÌF´‚ÞtѽF€¦'³FºaÀú?}jÀ‹¥à9;aS>HÔ¬&ÓÔª žðKÛp +º€'[á„L(|Å¡" ªËqÈ÷d&³ ç¥Qª”œt^…GvD²|ª5ö–ö¥pO+kh4-¬)óAÑ|Ê¿¹;Šóï&/Û¬µ»Œ@eÔ4ŽºÇ^uÿåÌQoSA}{üäŽÞô¿‹IØgRŸÝ 1û!Õ4ìwTöí>¨ÃòM¾½Îo#ÜoÛíM$\cÀµ7£½7e?f +›~¢èÔ!̉oõä—‘²;,ØrÝÛ¢}>' +\ªpñTcpÉ6› \Ñ¢ùÎÄ2M™_@GYÁ0±L%ØUo c¼)Ñ™‡~”ù“mDì>%£‚K÷Ù]FÝrÁžœ*¹0„ažðYË +êA:¨8ÐÚnB ³e '‘ËU[XþÆŸ>DèãòýÁESñB—ßÁ~\ûâÂNcß27NA²è#‘‡'øà.·A«©†“g–úÞ.ñ°7KÃý„ß¹û+MÄÊš3³.¿õÉŸ¾[X¬Ã;[áû×CÞà¶Ã”D²¼_Û¬}o—.bGS7Z™6ßèuNÜyÄßv=Þêå +±d +ZAö~,=SZÎDñ1tB
 endobj 2704 0 obj << /Type /Page @@ -13018,29 +13000,21 @@ endobj /D [2704 0 R /XYZ 56.6929 794.5015 null] >> endobj 2707 0 obj << -/D [2704 0 R /XYZ 56.6929 161.4147 null] +/D [2704 0 R /XYZ 56.6929 107.2827 null] >> endobj 2703 0 obj << -/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F41 1238 0 R /F53 1333 0 R >> +/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F53 1333 0 R /F41 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2711 0 obj << -/Length 1990 +/Length 1792 /Filter /FlateDecode >> stream -xÚíY_s۸קÐL_¤9Æ‚_:ãØNê»ÄM#]§\h’8¡HE¤ìèÛßÒ$EËi›ÇŽgŒ¸øa±»Ø]@lJáM•$TDþ4Œ|")“Ód;¡Ó5|{7aŽÇk˜¼.×›åäò§‰L—«–"T)6]¦ŸgW?ÞÞßÜýkîqIgoÈÜ“”Î>\Ýÿ~õÇ>Î#>»zw»€®¯"˜Xhø:ûts=ÿ²üur»lÅéŠÌ¨0²|›|þB§)Hþë„)9}‚%,Šøt;ñ¥ Ò¢É'‹É?ZÀÎW;uLR("Gtà³1Ȉ‚«ƒ¿Î½ -zV -õUçг+lös¦f:)m›VfÏVе_Ë<Ý”UMô÷x»Ë5IÊ-~ˆqvRëZ§ S?P°BêxŠÎJ|°~j*ôÓøBOY½1›2Û`ŒDRr»»hÝ8M¸ªp€…œ°€0°ŸU-£Q0:[n4²ùѳŸp`(¤ÛÄ
„[›4>"±\:OûƒJªŸRìV€S¤Œ2‚v陲o—¿
‹ê°KãZ÷·ÌºfÞíõ^sìßÓrg…ëeÉ×"ÞêžGtç€ÜJ–œÁ°_ÜÎy}õáÖ9]¹Õ'–{yÍW|4Œ,3Ú'`¯ÖøÿÛ!«²Ú~‘3£Ú¬ÎÊ׺®ª›¹fÈ[éý#`àçÛd£“¯ÍŒ¸FF˜Ûøµùw;…›è¼<X"qKœ#ÃZ®Ž9sv¥ãN)Ç.Õ¨öÏ -vgÀdÔ“f8/ ñ7Ãm
ÝhOW5¬â,¯,¬t° -fâAQÞ€JKÝŒ•nªþžUµ[,FÐ^Ü•‚#X»¶Â¶9Š>e`êfTƒï;å″POmì¬˜Û j]ðÖȦT»d(»¡ËâJE–4¨&´¸•4Âçe±öª:ß*Öcgp?Ýæ†;fæÜ™öÓÛk$ ]øH9ÙŠ±qZj{¨Ü'”«UÇ^¹Öú¥5¸%O‚Sà\ -¥Y¹¶Z
P±±Ê#H› …çÍ®€Û±¦‚"à³mŒa(t2ʃ&”ÃèÍýbq{tæ8†Á¥H™ƒhÚ8ÏË'„°bUýÏ›øQ;ŒO‹»wí¿ÝþÛN‚{³ìˆäƒ³IL@v1ˆM[FB X`g½½{%ð6 „J¨<|å«ñjÆñx&Läj$‘7LfÉK]'—{ˆ-ù#üb5\t hxvù–édý^Äe @ðÞú‡ªIƒ6Jšä™ê¢ÎV.Ñ¥zòÚ¥N&h^_R•žóšjyÎ( -y¬žãýåþP\ÒË -r?$òU‡BpŸ˜œ“¢åŠÑÓ÷%ñM~êÈQaÒ‘mܨh ‹”Í.ÒS£k§âÛ¼LâÜ+‹ÜqnËT¿¨SNÈ_Ój‡ëŒ^.³£ßð\0¿Ã(I†`Û˜î -™.’O"Å„c°nq -‰L1Lë—P|Ç@~a2$¿Œ -³’Yu3z{¸Y,]™“=ìãý°ÊšB*Ùwu¹ÞÇ»M–¸<·Ó :xÕ…{†)\FÛ6/0É&.Öƒzju¨Ïåæe'×઎Õ|"ü ±šñŸ B‰Í+!0Jaj‘&ͦ –†åò}›~Nì*E»ÚÉø<ÄyøB팻(‹ÚJYæ®F¬³<«?àb‹cQî*0Þ e@.`‚‡ÓPA&£|,a0œK“Ï&ø™WIÇô¼oóæóÙ{À-HÑ=Ø‚„‘â÷”D›—¸½yÉ;}-Sn5AÃþ¥ANFûéÖòlí²\ÀB¥ð‡°__……³ù¦Åi8Ĭ^Å|¾H
ÁÔêÃ!ânÜ:!•ÞùÛ•ûz¸_*µÀÿl©ãÈ}ÆLæl -žJññÊMPZ6ê„2»`¡ŠÞþ¤p*ûŸJJ-&endstream +xÚíX_oÛ6÷§0°R%êe@š?]Ö&ËjØÐöA‘èX¨,¹¦œ4ß~G¥H²âvkæ‘<w?ÞÅÆ~l,¡<òÇaäA™'ëßÁÜ›s<³šiÖæz½_ðp‘(ð‚ñbÙ’% •’éÇÉÉÍÍùõÙå_Ó™'èä5™Î¥“«“ë'ïpìfy““7çsèú2ò‰…†/ “÷×g§ÓÏ‹ßGç‹F¶ÊŒr£Ë×ÑÇÏtœ‚æ¿(á‘ãèP¢ȯG¾àDøœ×#ùh>ú³ØšµK‡L ¸$Bzá€
|6d?$A¢
~™Î8t¡w›4®”9H1F"!<Ëò+²8K§*W5]æéªÔQßâõ&W$)×8qÒÆž§©SB=K’Oi-Ô6,ô#ì€ÆZ©™>¾ð¼–€™3Â¥éӧ܈6ÍvÊäD%¥mSm½Éºvvð´f"ÆuØAû¤€?°CêxŠÖN^o'œj64†™xȪÕС/o³`N¬5´leû™nŠœÑÉb¥p¶Ígv +úJš±U\‹p;`“ÆH,îþ|¢‚:ç™®9Eªa”tL =Ç„fM›Úª¯Žý[Z®ã¬p½,ùRÄkÕ1ãaü –C2ú¸<½>¹:w°+×jÏu?‹RtPÀYCðÿë.ÓYegÄÄØ6«²²@Æ;Ui¤ªz9òjµ½8]b›¬Tò¥^WÈkk`›‰¸Ý)ÜB·rg‰Äm±wk¹trÌ¥³;=nƒŽ½žƒÖ7 åþäÒQGGXát<‚„i<<×¾5tm=¥+XÆY®XáÄJX‰7EÖv*-U=Vº¥ê[¦+·YŒ +!ðŠ§’p+×jlë»èS®®G`ßœ_€zX)ãgÉÜeÁ=±F7)›-“¸@Ý
]Ÿ(åYRK5±Åí¤P|^w3]Å€ânÈSÛ)Ø67ÜA01÷δï/N‘€,è#åt*ÆÆY¨õN»)ÔkUÇ®]k1Dinɽè8H¡6K׶…êžTl¬ñÒ&já}³;àñNnà ¼É2Î0‚ÌÄò Žå0zv=ŸŸŸ"9Nk!Cx‚¤ÌE4mœç劰jéîô*¾WNÆûù団f·ç;…ÓàÚl;€ÃÞÝ$&"»ÄÆÍmò¡.1¥ŒYvqùJ¡~ÍC PQùœˆr¸LsL³6–(r Di¸Ì®ÇªJŽ·_ò{¸üŲ¯ +±ÒæYØ7/ŒÛlÍ7;ºÓ˜ŽÌ®«Áïgó…«o²Ûm¼í—AY]A%ÛÇMUÞmãÍ*K\‚Û(Pê;}ä¾É.•ëÏ1É*.îz…ÔrWížÍõgž\A|Ó-¯ù„ûAã5A¼€ôa!Ä/Jai‘&õ¡ TJá>Y\7¹gïÔ֡aJ0«ñc‘ç…ÏTÐxŒ²¨¬šeîªÃ*˳êñ¹°ÜT£|(ÐŽ?ýöé´BV‘ϔƜ‚%yÄj¥ÌÉY(úª7Ÿr÷uÿrž›endstream endobj 2710 0 obj << /Type /Page @@ -13053,82 +13027,92 @@ endobj /D [2710 0 R /XYZ 85.0394 794.5015 null] >> endobj 2713 0 obj << -/D [2710 0 R /XYZ 85.0394 516.9709 null] +/D [2710 0 R /XYZ 85.0394 462.0323 null] >> endobj 2714 0 obj << -/D [2710 0 R /XYZ 85.0394 351.7832 null] +/D [2710 0 R /XYZ 85.0394 288.682 null] >> endobj 2715 0 obj << -/D [2710 0 R /XYZ 85.0394 277.6094 null] +/D [2710 0 R /XYZ 85.0394 209.4795 null] >> endobj 914 0 obj << -/D [2710 0 R /XYZ 85.0394 227.2683 null] +/D [2710 0 R /XYZ 85.0394 155.6441 null] >> endobj 1341 0 obj << -/D [2710 0 R /XYZ 85.0394 194.5015 null] +/D [2710 0 R /XYZ 85.0394 121.3428 null] >> endobj 2716 0 obj << -/D [2710 0 R /XYZ 85.0394 159.1835 null] ->> endobj -2717 0 obj << -/D [2710 0 R /XYZ 85.0394 94.0431 null] +/D [2710 0 R /XYZ 85.0394 84.4903 null] >> endobj 2709 0 obj << -/Font << /F37 1042 0 R /F41 1238 0 R /F22 977 0 R /F21 954 0 R /F48 1258 0 R /F14 980 0 R /F39 1178 0 R /F53 1333 0 R >> +/Font << /F37 1042 0 R /F41 1238 0 R /F22 977 0 R /F21 954 0 R /F48 1258 0 R /F14 980 0 R /F39 1178 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2720 0 obj << -/Length 3136 +2719 0 obj << +/Length 3156 /Filter /FlateDecode >> stream -xÚÝZKsÛȾëWð¶T•9ž÷`rÓÚÎF[±ì¬äTª6>@$H¢Z”¢üútÏ/‚¤·vO) -3³Äj®g믄Ð$a³‡Õ¯ó 3äXÐù/wïß]/¸L¬œß|þüáîýí¿àYQ -Jçoî¾ÜüÝ}¾¶|~óÓ‡ûë¯?_}xhÅé‹Ì¨@Y~»úõ+@òŸ¯(6Q³x „YËg»+©QRˆ8R\Ý_ý£eØ›u¯Nª€QÂ…æ:àlƱJñ”%Zpá”ðþÃý»_n??Ü~ºÃ¯qïtz£3ø`¢•u´ûrµD¼GÄ9QL&@ŒD˪lö×,™WE
ê¢jÞl3S=eû´É«2<®ý5õ—2ݺ:Û?gûk#ç |[rÛ„‰p¨³UÖã|,4—´¥ƒ<Ó2³T`e 94y‘7¯‘i–{IÃ:OþƒžóU¶ò#yü†"üx{÷×…YJ”¢°îQwÈ!+²´Îjø*)’ùízBxEI"yþ”ÆITxŽBZ"=Wßœ|`/y³õÃeåG–Õn—–+?Xäe懫'ÜÀ¢Úûkê¤ÝvYÙÔo®‚ûÆ¿ð´Ïa0ÐùK½öa¶>À*û×Àní5b$(ÕC…x« -£‚ÂñÎI*ŒCÁ Ý}ÕÞ¥þòðÏ)³e“_³yU‚Ö%5ðf¹Ê˧ìTã^?ÀJeã„XÓBMAÎWù&oÒ@¦|S¦ÍÁÛ¥3I)æ·¥§ôÚªåaï)ÊÆÏ€ôu4vxìx¢åE–TG…âÎsb–D+Ge®&ØJ¬Ñ_œê(¾=¯þ®oev <ŒGÁq5‘‰©/-6ÕT¸ÖZ8oÃëß>Þ¼[||¯pEËæ/Û|¹õ3‡:4©¿Ô[oƒ¸¶{Ζþ¹ñÏñš¥‘EV:RéB$x›‚›h#U ;¦¥?l£D½ U»¢ñC|º{¸¿ýiQ7¯…c•ŒUàÆÖ„6qÁ¤øàÅþíÕMàgZú`ôÚ´Faü‡ºÿ~ýö“¡üð…7E1Xh$ºßƒÚ›º»c9Ëm -:)üÃîPÊÇ^ÀÎcly|
1Á_¾e¯ãÎ!7*mÍLKA0ÆïHáœØ£ñT_´=Ž>9¼ACUÀ9R¹ÈÄþVV/eøêjôõý\yì@˜šH¢•Ž1N\Hä6O ½Œ•úHìc½Â4Rþ›R¾9´™æpÄd$óUÖdûÏ30¼^ü¸ŸwŒštÙ„Ám @‰Ö|p4Äudºóö÷/>Oãtë¢ÞÃgÝ8¦Ütw“Cìu(Âäí2ª±À…&FJã˜}rxéþ1bÓ3%, LPú4\óD‹>UDkLjµ¥Âu^8ˆQ½ ÉHbU¤uuØ/³EºZí³ºKÈ„føŒó"¶T2@”2„+e†B~©(S})9%RjuRÊëÄ -†”ƒs—/{¶àŽYÝý!ˆl.Jמ>Oœà²oÂëêNî+
ðK ¨Oufg#•ÛÚŽ—„c4D̳KF¢‰%‰b4–üPvg¥à’UtÅ¢Úl ö8©f@cç•Ð§:„–Ê)áuÚ¾…lqõÄÁL¢!oS3ëÌD†ÇŸ0,±D)«‡Ÿ¯Ž“(Ã&ˆ9¯¶–jBoÌJÁ¬fÃU¿¸Ó±¡7-ôøš’ KªNë’pFý'ê22<þ¬¼æD€6§”9Ö€$ õ°×Þ¥w£Ï?Žç0èã9™ŒA°<³æ´b„Àˆ'þ<ÅD†Ûð -ÐòïUL8î„Ï~Œ&Î -q‘¾Ö1‹ãPèhÕåqDÄ&±l˜Èëp§úçßîÑç58ÅvÏÍ>e„܀bå‘€ò‡2x3ŠÒj¾H—nŠÏi‘¯ÚBŽÁîßr™a:†8è‘Ž:ÞjaašóÓ[-‚[{ -g;?±n‚¹î8ÆCÅŽBT•…HxÔ‹upŽqÙ$ŒŒÇÿÑ°/)õ +xÚZKsÛF¾ëWðªÊÏ{0{Sl'«ÔZöFJj«²9@$(¢L +JÑþú힀AÊ)§xÀ`Ðèiôôãëi²…›)M´åvf¬$Š25[î.èìžýxÁÍ"-†Tßß]¼ýA˜™%Vs=»[xe„f›Ý~›O˜!—À‚ξyÿîrÁefåüêóç7ï¯ÿ÷ŠPP:ÿxuóËÕ¿üÜçKËçW?~¸½üýw8C‘(Ë¿ýNg+ü§J„ÍÔìn(aÖòÙîB*A”"Îl/n/þÝ1<u¯Nª€QÂ…æ:àlƱJñD Ê-¸pJ¸}©êǦlÆŸ"1™3#$¼EíÔÒÌwB.bÓ Ö€…K²©‰T(Õ¾Z-/ôþÛâE{û¬3xIØJ\©›ú°_‹|µÚMãÉ“52Atòä¿GÎË ÎB‘L+H—uµ.ër[L°ÕŠ%ä˜í—WÙ~)^Nñ”†dœš1ÏæUžM±*ö…&œK6æø8Áq!4Ü®f‹ÎnàÇzßN0æ‚X´òã_»ÑËÄ©Î@cÃc™…½ÙÌpNŒPæk¼ˆ›eÙ´-:Ž‹!Kg‰‰hÌÂÓÆŠX®&>q"”Ðé§/ëÝ.¯yêz&3"Ñ‘`æà§Ú½øþÃí»Ÿ¯?ß]ºéÞê¡3ˆHÄJ&{ŸðT|¸œ(àÞl»¿dÙ¼Þ6¬¨š·›ÂêÇbŸ·e]…Ûµ¿æþRå»@ÉÈ9„>ñº
À¡)VÅ€ó±Ô\ZØ ¨ši™YÈF#8´å¶l_"Ó<,÷œ‡uý=•«bågÊø
Û0ñýõÍ{\4f)QŠòÔ‚‡b[äMÑÀWI‘ͯ×Â+J2É£ð§4.ˆÈ¢ÂKÒ +é©þâäƒÜð\¶?]Õ~&Ú†›Ü–Uá§ëGÜÀ¢Þûkî¤}8슪mÞ\.öáq_Âd ó—fƒîéž6XeÿؽFŒ„ô@uTˆÏ}Þ* —Á¦¢{;ÉUgÿóà #ÏŸòr›ßoÃm/ÿˆºÜ‡¹á·i#‡,lÏΪ¾1Ñùnw¨ÊeÞ¢) +£‚Âqä$FƒÆ©`Ðn\w£Ü_îÞ}öôà9U±lËK6¯+к¤Þ¬Veõà){ոװRÕ:!VÁô‚‰¢£)Èùª|(Û|‹7 SùPåíÁÛ¥3I)æו§ôÚªåaï)ªÖ?é›h0*ìðØÿ ðLËWmXR:ŒZÃxH¢•£2Wl%ÖvqÐÙªŽâKÐãöņVfåa< +Ž«‰DÄ‘8n¾}¨÷ °ÖÂy^ÿùñêÝâã{…+Z6Þ”ËrhŠ@“ûK³ñ6ˆk»ûbéï[ñ¯EY•#•.Dâ„·)D©+Ø1-íün%)—«a>äîöúÇEÓ¾l«l¬7·Æ ´‰f}ØÀ/ö‡¢iø¤£F¯MgôÆ¿k†ï7`?Ê_xµÝ&DgY8óCww,“€°Üä “¿Ùš@yÃØyŒ-÷/!&øËDîç€L•¶f¦ÄX°«oMýÃÅ€£‡Æ‰7hH¢ +8Gªø½œUý\…¯®G_?Ì•Ç„© !šþº‡_b#Hõ›•ûHìc½Â4Rý—Rþpè29<ÃyPÌWE[ìw>ÏÀô¦~öóþ¹cÔæË6LnY +B³‘ò¼ˆÕ„Œ ˆR†p(5ò—¦˜@ÝœúÔêL½”°Î ‹Ü¥<S+wï£y.ÿ +DÎÀ«Œ< Q;¤¨,“©!}<lÛò1²jÚ¼ZÍl„ghÿml¢ëæÛ÷tÞ¶uÙÝ…¶uRµË×C'¿þü$G¦t`2Ð…#éuQxÀ3i£”Í $9o£ª36©œ.§l؉š61PÁ‰6Æž—¯£š01PaˆV + §
+
Åÿ‰²;á«6r`P¹ùíbv"FâdŒ‘8F«Èêopß™ýë«bƒ‘½™*x)%Ô°(åÛ¢]¾Å`NPÞ)7JŽN²åê5cP1†HåŒáË«kx‘X4F3{^¸ŽjBºÄ8ƒÌ
EY"ÞIK°FòÉ“’„)ÔjT;0Î#væ"d˜éÒ#ýÖãçò<¦?˜8³õLe$ã6;Úú€bF²CÍt·ó€‹€Å°N
Å™XJ±FWò°1StvF +¨ÄmÆ¢ÌÏ%‚=ÎŒgp…|»ò#á:¬jpFBf"¼á•ÇzÀ‰ãrÝ?œHF +Ÿö®bÏúÓM˜¥; +QV"áQkrô1ÇÐlIÆn@4lS +FýÿFG÷°¢o]a±LwƒMþ¦ŠªØçaáØåÐ2T+Ïåâq*š¦™ì +¸?GPÌuÃæÀ»O?^ݼ¿p°Ñÿ)®ú*›Q“jcÔ ¿™ê”âYUÙ_*„òjÔ*+Š*m”í/a£« +ÝnbM* ïÏ¿¾jML:õ¡=ÕšŸ¡Ÿ†14¬ü_`ÞõmèíË×ümÀSÿã …^À·œ…³=ÿËX6fûüb[竉bL©Lž[0’ŒbJ +ij$Eð/BbÒÎð¿ù/…ý_&%vy2~¢%j—u +¿™}¼¥áχDzÿà<‰endstream endobj -2719 0 obj << +2718 0 obj << /Type /Page -/Contents 2720 0 R -/Resources 2718 0 R +/Contents 2719 0 R +/Resources 2717 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 2708 0 R >> endobj +2720 0 obj << +/D [2718 0 R /XYZ 56.6929 794.5015 null] +>> endobj 2721 0 obj << -/D [2719 0 R /XYZ 56.6929 794.5015 null] +/D [2718 0 R /XYZ 56.6929 749.4437 null] >> endobj 2722 0 obj << -/D [2719 0 R /XYZ 56.6929 752.1794 null] +/D [2718 0 R /XYZ 56.6929 680.7174 null] >> endobj 2723 0 obj << -/D [2719 0 R /XYZ 56.6929 569.247 null] +/D [2718 0 R /XYZ 56.6929 501.4297 null] >> endobj 2724 0 obj << -/D [2719 0 R /XYZ 56.6929 193.0777 null] +/D [2718 0 R /XYZ 56.6929 130.8593 null] >> endobj -2718 0 obj << -/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F63 1385 0 R /F53 1333 0 R /F41 1238 0 R /F48 1258 0 R >> +2717 0 obj << +/Font << /F37 1042 0 R /F21 954 0 R /F41 1238 0 R /F53 1333 0 R /F22 977 0 R /F63 1385 0 R /F48 1258 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2727 0 obj << -/Length 3371 +/Length 3076 /Filter /FlateDecode >> stream -xÚÝZßoã6~Ï_á·s€š‹èSÚÝ-¶wÝn7)îŠí>(¶œ¨kK©%'Mÿú›á”dËÞz8ôŠ 0E
Éáó}3¤ø,ƒ?>Ë5ˤS3ëÓ׳åö"›ÝÁ»¯/xYD¡ÅPêË›‹Ï_I;sÌaf7ëA_9ËòœÏnVïçWoß¾|óâõ¿.Bgó/ÙåBgÙüÛ«7?\ýƒêÞ^:1¿úúå5<ªÜ)âåL6÷æÅW—n¾¹xy“ÔªÌ3‰ºürñþC6[æß\dLº\Ïžà!cÜ91Û^(-™VRÆšÍÅõÅ÷©ÃÁ[ßtÊJçLef¶‚OÛ)c™†y/¬Ê˜Í³ÞN*Ÿ²S”B;íÊnWÔíºÜá|?eä …ÑÌj©`ý©Ku+Ësë‚Ðû‰n4sÖš °Üm;ÑÔ,7ZÿÞn«òiJÉ. }øp¸ˆÂ(&q³¡©Žš¤Ž-*Äp4ã˜T¹›ô]oR¿Ñºû’ -wÕcYS±Ý¡Ö›Õ—Ö»KžÏ›íA³mÑv±¯¶Ü=BÙª9éÍ\;¦2ÐjÁs–kž{^¯/2“Ôh,U-ý.›ú§,—|~·÷㖫Ц¡ß}Vv]?e®86˃…«zSÕå¢îꪾòC%46ˆ]sÓ«…íâ¸0¯¶jjzhÆXUí²ðš¯ÊÕP'³y±îJ˜ÑŽl#2òÌj°
gNkáu »1§YÖÊp?.¾KBû:êˆOIG”EE°rÙl6eW~†:6åó
Åü©ÚlHäv¤Ê]Y—»¢‹mžªîžJÈ㌲ñLjpÚ0RÑ…elÙr|0Æ2Á¹:"C©Ó ’¤PÂaÇÈ𗀑#©ó¦LRǶÇ”ÐÃŽùªì–¸îÚøu‡‚ž¿xs}ýò+ªüX>·TZ7;z Âô£¬˜¬˜(«±ªYU´q–]³U?e:kË2@XE£¹Ñ<à2
C, ÷Ðó8Àüµ‹‹Ö<tä"Ú®ÐoÐ6ŸùúͪrôsµÚVuÕ‚ûvdÀ‹~ŒS©—¡Ù·E½/60Î!¬GÆÐñ3‰†”T>7» -Hba“j-ð°¿ÝTË"(-Ýü¡ÜUÍ -a@ñù–T¹+ét¶¥RU#†:*àZý¥2,õß_þHåwïÚ²CÅ3CŠ †îC?Ëû¢¾+A›pð¸võÉô,ä;€ßbß5[˜Ývá3U‘¥ Ø *€Ô°«Ka‡!ku,é1 ©›{ÂPƒº-ê=Ð0¿ìþl#®½?±õì&å"’ ú‹Uݶårbçiا<íÓ0yè:íA(8ë9™Çmd‡…hPh lÕ<MŒ'¸Žº5»‰Ž¸`Àã ¶ìøŸèKY–‹l@©ÀÇód¼bÓ6´ien 4Èøx×N·÷3—öAîã -g±iŠ•÷ î‚àßAœùi&Í?Å€úÏA¤Z0Ź=oÍ$ulÎ1‘Â[é$Û3i¦‘B!)”‘B‰vÈ
‰ŠÁ#P¬'Ò¡,ÁÆDÊ9OA:¸¬R–QØéÒ*BrJT„Õ‘ŠðQ‘¯±¾K¬#Á¬ºÞ’±N¨£Bd|Éë#ëh€• ¾ÿ8…¶¸«WàÈÒÊA,8-ˆ!´r=h)0Ø}óT†tÆ×Äxߦ„ņx~ë¦áo·åªÀ@fºfªÛð*uéy ¸ða¼Û}7ÅãXì¢H•M¹ª—4궤žâHªhS"XmË3<(3×ó >C5ÖRiš53™á¿—JΓ,—xË·¡Îó w’lxÊÿú’BÍÓœ=}MÏžHM¦s-&s:3`rOLÆ7Sô•¤L¢/hÐÓÔú2f@_ø0¢/h”è^ÐÔTu¸xqOX‹©ÐìÅbJåLªO(
¥N³X’ ¬weù(b²l’=ÆËÿÿ˜ž&³³FíÉìȪÓd62ëõ¾}(}Œë¼÷»¥¿…á· Ÿ~ûš×çåPU7ý+*U¡#`Y¡”>‡šò„I1ÚEÚ!·k©Øs<´¤u¹%Œ°ètp¸PÞ†-e€õ.T{ÂÒ‡KHX·Åª¿)úÑ©T7»-A1>‘™V¡—ç)wKÖ’"š™OéùëŽ* AiYì[?K³«–^x–†_b(üÜìwµŸ< E7%5ëBW·A°}¿^Å^âÛÐK'}7A¹«é¡Aä…Ù„\®ëÊíC×Æœm -±± 7\Šü³ýŒÊþ(«†~ý%†ñ#60§Š>ÞÚÒCùsosqZœ>Rp±tï¿(áÎFÂƃ+'BÀ‹ñw ‘Ú5• -j¼ÞSnyxªè,³Yt‡Ífâž+ÃÏ=¢Ø“£ f„ž^Kcšù¦H§ÖøXï··Q¿&Ì3€6º-}äŒ# SÂX§x÷ØT«öè~2f¹ty…¡L}˜ïn›•ÇÖtÅŽpCþS‘C‡j‡Ðé/1¸Î`‚²gÝk(uÚ½’”'„®èÚ#ßâŠ9aåùa“Ôñ¸cßâP¶üO<ÄßUñÀ!¦Q¾:á†_¶c«'à -Dš>e<™ËOo uÆxQ -çð˾Ü=oš»‰íS•œG ß„ƒm@˜áÁ;sJFfúy*MaÖØø9]CYÉgpã ÿÍÄùy&©ã‰ŽWË*¦,×ã™öy¾ÅËhÿIk_éMAE0È€F(<óÇà¯b“Ûbùñ)|ƒE5˜|ÂbÞV›ª£+0Œ$†}”ñÛÁ>äŒbZh}x¾Ø6ãÜapBUu÷Í>úy=Œoîöx%s°Ù`1% “Ãb˜\ðèØK¤Ó°Dé ýðÞæûØw´$}xš +xÚåZmsã¶þî_¡o•g" Þˆé''w—¹´¹\Ïδ™ä>Ð"e³IG¤ì8¿¾»X +-¡µ=ïÐhuìÑi8h›™¥S—~\zr±»mþx/›Ý%Ï–m}ðXw}h«+w ¹t¡²XqeÉ`T+nÃ
áíær%˜ 6P NPª:ú]·ÍŒ¥—|y·wý–…¦¥ß}çW;å£)s ‚¢ß{¸j¶US®ºê®©š;o?vxÒå3hšëaXø\èæÕUmCítéÌŠª[çnäEYüt‚-óM_ÂŒvä›”é„1`Éç‰U*uc ¿êtI³•æ®_¼öM#^Å1¢-•ë¶~Ø–}ù^ªð(_žx0]>UÛ-™ÜN†rW6å.ïÃ3OUORö8#6I)@Q=å½_Æî4ˆ0žˆÔ¼"#«3 ¬p ØÿLÂN‘á“€4ÃÊSžwe´:öå>„H +º n~Þû¸ì®æ=Ý?z¢IÚ€$8üUÑt]¹ž‰<qÊcœúÉCÓ1A&pVKr-öÛzÈwÛ¿TÉ@pà«öi¦?‘B +©0¶v7ÓOàñ +ÎË·]KA+2(jãÓµŸqîg6ÆAæê +`>ºù¾…¼ªÊŽá`&ž°€cóXpP‰×íþ* ðù¶K0N±¨´°}Ï ç³,:¶:ꢄ +g[Eî3Ü%c¡Î|™I³—Pý>ˆT¥°‘âæ¼7£Õ±;¶ehGð©?‘2鉄H¤ {"‰¢J‘‚è3Í"ÛÌ0%RÎy,Ò!e¥4™èŠt¡=!9E*Bu "¼ATäÔÖÁ{‘u¤Ñˆu|Ó5Yëx uðv ÔÖQ + +ьͲÇÿþãi2;ëÔÌŽ¼:Of·^ﻇÒÕx°Î{m]¸†ßœ~†ð…:S„tb´ +jÉ—ß‚r÷Tá¸W"šÙLl¬ãSèú™ðŒ'‰D%ß蔿@Š/}ÜUœ%^„Yž#›öEÅIÚHSŒ}ᇱÕiÚˆVîU0®§Õz[æÍÇÓ$’ÙDkaþ§.¿¡ÓÊì¼£Õ±ƒ§bm’BàL=|í<m1šZEdñ (†ˆmŒ¸A»ëȯ0²ñ4ƪ¸9ç°L©Ž9G;B€„Q
eÆ5ĨŒ–¸_£˜ êâ>d<wèHœ–Ê°'ZÕ~fTûb<ø
¥™&ÂdL·ð¹IOÏàïAÉNÕš?wÈCÞy^tºñ6‘ŠÏ“)È5~e•½P¹N§`´r¯-Û¾Ú<ÿ}ctÖ™CÍväÍùšmâÎeGCXÒwßÞ¼}ó½?(».¿+üéÉÙïM¸Ha-Œ|añGVg?XÑ÷&ë¶ÙTw‡;#Í^è9Zw=ñîòƒ¾ã×XÒg}*ÇçBáMžòe*=@kÿ†KR~vŸ‘ìŽQ(Zúu–(ŒëG||Äœ2äøÐkGåcØ{§0«äÁ9 ·áð¥{÷E ·&6\ÙÔ¼h~7éù¼!)§‡7{Ú[ž*Z“Òaü™àô=ÃÏ=‚Ù“#?Ì +ÿ>9þíïp‡ïŒ¥I b>ñÎI0™ayº‚s8t%²Dá7Çcÿ6±)Yendstream endobj 2726 0 obj << /Type /Page @@ -13141,26 +13125,25 @@ endobj /D [2726 0 R /XYZ 85.0394 794.5015 null] >> endobj 2725 0 obj << -/Font << /F37 1042 0 R /F48 1258 0 R /F63 1385 0 R /F22 977 0 R /F21 954 0 R /F41 1238 0 R /F14 980 0 R >> +/Font << /F37 1042 0 R /F48 1258 0 R /F63 1385 0 R /F22 977 0 R /F21 954 0 R /F41 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2731 0 obj << -/Length 3032 +/Length 3112 /Filter /FlateDecode >> stream -xÚÕZK“Û6¾Ï¯Ð-šª&^qt<vv²Y—73[•-ÇJ¤FÜH¤"RžÌV~ü6žø’³É¶\®h|ý¡^$ð/xŠRIäBH†x‚ùbs¸IOÐöí
¶2+'´ -¥¾y¼yõŽŠ…D2%éâqŒ•¡$Ëðâ±ø¸üanaˆdùÃû»7·+Â2É–¯?|xûþîþGøæ D’,ÿöúý?^oê>ÜJ²|ýíÛ‡ÛOßݼ}ôÓ §ŒªæòËÍÇOÉ¢€™w“ *3¾x†a)ÉâpÃ8EœQêjö77÷ºë˜ Ï',c0D9eã†ÂH`B‚&&p†bÙ˜¡œ”2Tq>‹õí*;|\åûýo«M¾Ù•¿þÝÔå'Û Œñê]JƒÑp*„ÁÔ8Ÿ«òÙ#„Œx¤œ ”‘$µÒŸúÖ%ÚSÊáõRÕ(#AýÑRï`©ËnWª‚\¶åésyº…á–_µ¦M¯Þ–JxR”Ûü¼ï ˆMŸ¼.^5'# lÔšê®Qk‚9&ØÛÅ -c$97ºFÀWa&¥Ÿ’„ìmíV/×ËM¥DÊÂT(· -N“˜Ìë÷Rà ÄPÁ1Ax<ƒ=šp³s4IT -¬ÆñqÈú)EŒ‚e篎F&ÞpØLb+RµFOè-¦O8.'Hfpè˜>`1/ŽL$%u´ó•ùh,¾)[»ÆÊZT»¦‰„³Ø]»ó©V~¡9ÿqçüü©ñ~T›¿å¯`Ò:·ŽiÕÇŠuꢱCU[Ç{Þ•õÈ‚I*á_[1˜;cÔJír{PmšÃq_vîÜRNv -O½êw¨µîPŽ;t¹6/Ü¡†Œï[ÌXÇPù2B -ÇŸÁ'Ê«géÌ&`‡y: ¤fèÄIéþ”oʾÖ,E<K²yNh¨5Z¿Äˆ§Pi½¯MàW'D9‚zë¨}}~zÒ‘‚úÜ—ŸK{¬m|çç¤Õ˜ÊO9Ÿ·Z(5m5/YÓS™w‡ª™mŸ¡ AŒA¯ÙÉy©áìb?%œNˆxz¥W{V½Ä곶uëå>î«Mewês¾?ÏØ<U™Jz%®
¥flî¤,aN&N¯¨µ2C±-Š84VûgÙ2™¶MÍ®¤ ÐŒ½¬š÷vnwSŽ=§Òûu_å¨[‡*ß)•åXKßFLÛ#aH2qÍ ÔŒEœ”7‰âé±l<…:“™†ˆ%îÜËé! ‚ì9LéG¡Hâ„Mfò¦J’‘y3x©¡z¹<´&’dž¸l•v£ ðT}VQ‡*êõC)B—H¶¿©Pu÷þÁôîšb^ë¤Â¿jkkŽ@%·„ÖûR·‘‹—ÇÓÞy<‡%5U~*Î* -9×Ì»|·v—¾¯óbv›‡$Mîœ^!µPj’^ÊC²;•ÿœ5Ã’;ŒC22„‡$e½P°TEµ~Š¢PeêôŒ*èþV![¶çuÑòªÖá»Àa*èJuU8ž¢E‰N]ß7]é¨.÷AŒKg‹¦l¥©ìeT)óY7¤$£±·‰‹óšø¶ÜX3®ð¿>ÎæÙ•È3”š¾“2÷TywnÇ9Ldl^ªÏ(Ǿ±Ú»ª=îs<âæ -àÔ,ÍÑ«û÷#êI‚€>ì*Ó뉘ÛÖ×Þ‘:oѹùtÄéî`û£nšZe£Oöþpú²•¨\-etÄ¡Ô4ˆ½”ιÕ]q«â¾©‹˜YÕ—‹˜îñ‹˜Hùuñ¹¯Zk¥ÆZü—syªE[‹“ÉLþ¾Öí,Û½îöáM¹·‡MΦ·„½’+©Y 4³!VHpù¾Ö«šÚÜ‘©·.Sr5¿ÙÏí6ú -Üüìûà™B`’&ôw½Ûˆ©£•‚ƒ -ŽÙ¬9¼ÐÀñFa‚%Yd·µ´hº,ªÖ sPê–®Š6¾£áöš -ËÖºÜlí£ ÅS8À#vóóáí8#‰¶C]qC¨ùsŠÀ ›uÛ–›U©§>‚HHÏÍÜx¾o£.Ë¢5ÅÎVé+:ñ@Ùù†á&á„ ”w,¿xw‰Hë¯áÁv#ÃÀ(”º€-?;]ñ0¨Ú߬ÅóËÒŸöùh›‘å}go5Á-ÒLöÞ`-u÷®Äí¦ gIÁ¯¼¼‡RÓþç¥ô‚Úêi¥YhŠgU_q {œ#åßöËäåR§¦N3"ü5/wÐöøpÿ©ú¹|iM]Èk¼ØÚÞAczÙÊdyÖ!Ô¬_Ƣ대;^jQ—Ö©cŠª6#–œ%ši$Ñ÷é€èÇ»ìæ JD?R½ë¦Û¹GpÅ
,ÿeüø4µÖú0¶U—{xøxüëÛªy¬êò©éª¼;NŽ1u ¯ +xÚÕÛ’Û¶õ}¿BoÑÎD0®1}r¼vºiêI²Û™t\?P"¥eL‘Ê’²£N>¾WâENã>tvv‚8œ;HþÈB$(QT-¤âH`"›ý
^ìàÝ·7ÄÁ¬<Ð*†úæñæÅ& +©„&‹Çm´WŠpš’Åcþnù
"ÝÂxùÓÛ»W·+ÊSÅ—/øáõÛ»ûŸáY` +HÄdÐÔeñÉ#„œ¸bä\¢”†Søj*ὶYFÔÓ¾PSýð÷X½VMÌ6šÇüü± +{r½ª€¦è„¨å>û`’
Õ½ÜôSVŸì—ä˜\M¿ÐéÅN;&ý°ÏòÂã°GtÜ=Ùuù âV¹±o‡;6y) + äWn烕ø¦h¥“JÙ:¹Bæ$AúÆhåÚŸkmÆç?>y;{j‚¹L»ø
DZgÎÐzXãä=/ +Nšs²üÉY² –¬×ZK¶ÛE–¬'‚%ëoÉzMãpK6#o´cfmµ¯nŒaÁŠ1·VSÎO±³ÃØYñ×®˜=ºåŸJíùõêµ[d©®*»+Ó1"*{pk!öÈ~iŽV»#lvQá>°±~íÌ÷ý–•@Ûeϱ¯„áq—"R„)#W<ŠÀ*‰=Š×< +XŽnÀ|ŽG‘±Gû&ŒGI@}á;4oÖwè—Þw˜qmϾCo3Øß'¶D@%%H_U>Ï¡HŽ$KÓ/âO´UϹ®£À¼/ ÓŽÄ‚˜Ìý9Û—È †‹ŠÊidâYaEH`æŒì¾¶i^õ]BE`ÔºõŽ|}Œú$Uñ±p¾}ò=˜bZFŽ0ÁòŠ˜"¨Iy¨ž°.2x& n>„Zj/ý1¥BêYâÔº¾UBÙÏ¡\ì“÷PøäôBªçÌ|V¶>Œž£®m7¹ô6«Ž32Ç :Õ•2 fdî¡œ·SQ•"ÝÏšEë`†Xû²Ä "Yí—’%ž”ƒ4§ôJ{:†š–X€Ò¤o«cû4eÒ³XƒU°Žvëµø™™Ä´T˜„ê^©Ãc¨©x¨ í›Ç*ðÒæTE|4mDûX9VÇ3éˆËø‘Mzý°aÖU4¥óbPC9\Ôï)¬D_çƒbÊvåGiè¡áFi”®ô`/¦îÞ>Ø9];ÌjSHCÊWnÝÌÊn9¯«Â¼£g¾vgd¢·4¢KšÔrjÏ•ç.ùñšuÙ:kݾd_gù*^6¯’Uê6È•¨CM«d€ +*Ù=ÿ*9+†³Jä0®’=A•d\ºDN%õPó¯ÓoIí¥‹ž3}=0u5ü–Ù!]¶ÇuÞì³²6)»$qÚ#¸P(½Tëñ”":-1åêÛ¦+¼«ËB*ãKؼ)\ž©‹** ×)ºÍ·¥Ä>+ÎìÅR±q(fLá£ú£T\Óü3ÐŒâ; ۘʺc;ˆè +1‡ÓÃpöã“„¸¯dç]ÙªL'$À Ì£V ýk=
Q“ +é¢Rùã&Âw]÷k#ΰ•s˜*ëMuÌí“ð«ô´+K†É¸BA±.ëüÅ«¿Ž(§ˆ$‰/´4N«¼k/’‹[R]yîÖÛæÿ `Î< ^èÅý۱ˌÀqxÏñTúœÞb{«Û€1îˆz;1•øtÆé;®—»nšZמ;×-œnRêJRCÍ(°‡2¶î·îÂo´í2‹úÜvào»ôß…;–pUÙvá*:Ü]—Þõ¯jqŠTªþX¹êOضB¯Ã%´ëÎ:y¸âlòHˆL¦øJÖCMI€2Ñ-«JpyæVS7Åôå–ù™ßÝãvÛ{ÿ·ùÖ™+Að+4Áì]ÔÈ©¸ÊàH¥ |^"j(’þiŠ$£i_&öó
h±Ä·ažì×”1ϽºüŽÅ‡l'œÃ6c{[š•'aŒö}Äχׯ FRˆnkCh¼èˆB‚9‹5¯Û¶Ø¬ì÷c—ã` ,õ]pûá„ÆVEÞÚaç¦L[ŽB>PtáÅðœ¦(Ô‡åS1v}NÙÐzÙl»°ðUOvô¸úÛHpØ¡›Ö§S.‹í!ó12£ËûÎu2Á6’T±~§Ï9ð‹6¸ûvdÚµÀ%N®Ø`5cƒÊ0Ô–»•ñESnqõÙ-p»ÅòïLÕù^Ò”vÎøEøµ·uðîñáþ[;õ¡8µv.ön!œÜìE¸±«Ü¥¤ùÔÈάOcÙuJ£×¯Wt£:|na>ù€HÎ,ãl5=tÐèÇ'ßà†ËËLõÖM÷ä/*À7Àþi<ˆÚY'‹øã¦sïÿöúŸšŽU]욮̺xá¤ÂIpœ2!W>Ä;Í|‡ç€‚¶å…nžŽxë$…ú‚ûâÈ›¨¡8GŒ…6ôd•|NÅ&‹(¥PJ€î9I (.².Ž¤’¼'‹;+†cprÚ›„Š^ÏŒžš~b±ƒ¨B¢ÊßPâ~",¸2QÕµÛ™«sÌÈ3ÚrxJyy“ +…ÿ©ï¤>O•zóØ}dÊÀ)°Ñ áßÇŸþ endobj 2730 0 obj << /Type /Page @@ -13173,24 +13156,31 @@ endobj /D [2730 0 R /XYZ 56.6929 794.5015 null] >> endobj 2729 0 obj << -/Font << /F37 1042 0 R /F48 1258 0 R /F63 1385 0 R /F22 977 0 R /F41 1238 0 R /F21 954 0 R /F39 1178 0 R /F53 1333 0 R >> +/Font << /F37 1042 0 R /F48 1258 0 R /F21 954 0 R /F14 980 0 R /F22 977 0 R /F41 1238 0 R /F63 1385 0 R /F39 1178 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2735 0 obj << -/Length 3097 +/Length 3324 /Filter /FlateDecode >> stream -xÚÝZmoÛFþî_!T¬-¹/ä²ýä&ië"qr±‹;
p´D[D)R'RvÜ»ûï7³3K-¥MÒâ¾]„û2œyff©t–À_:³F$ªÐ³¼ÐÂ$©™-7gÉìæ~<K™fá‰!Õ÷7gßü òY!ŠLf³›»€—‰µéìfõ~~ñöíË«—¶&™/ž-L’Ì__\ýrñŠÆÞ>+äüâÇ—×ÐÕ¶Ð@”æH—%ówW/ž?ûpóóÙË›QœPä4Q(Ë?ÏÞHf+üç³D¨ÂšÙ#t‘…œmδQÂh¥üHsv}öבa0ë^©À(+Œ•yDR:Hhël–›BdJ*§ƒ›u{Ëí|Ùµ¿&‰|–Îï÷»r¨»–Æëžž}ù -^«Û¯˜à?ß}Ùù‚e™Èükb’«n¨ŽÔp»+—¿Uøx:}µ©Ë®éؤJòá}=)2¿©Q3]õq°tz;‘ˆL˜HfuwL´©ÔOTïãÐH…û]UÍÁŠ²u.¬L<l¦ò”…°6/˜è}„ÍäÀ—MÙ÷6€Ä63æ²qÀf -&´{@äÁA‡º)BïÛ¶nïÚu‘Ìß´ÍÓYïY Ö!Ç Æ„‚<:+ÌL»]}_·†ŸNñ¡.#àU¤pþzêªüâ'`,Ó˜ø£ö0{;" j†—¬½á -‡ñ2×sñ)'0E.¤“ù¬„TŸv‚‘ -eíë{T6Å{„ -’LÞÔFªS[‹æÖŒN– -Ÿ¦î{—aí -N5_Õý¶)Ÿ¸R\KFƒ¥¯\Ñø\-Î/[š« z»ì¦—e_ùW)(4¶œ×xÌÕ›G%‰ÊÐÀžÂ)ïkœÁñžŽ<-ôš°Ôå‚Õ6Ö%›fÛ1ÅSÅ©[„¨¯V¨¬Ó8’w -ªðs®×*:;é -ØÛÆHÃ…¸s˜Xàd8gƒ9÷¹::eœb'Àe`OVŠ$Q÷ûË«ôbÁ;Ymj(ëм×ܻꎽ£]²®^—íô9güššeÙ <…~«M‚DÅT™¿ÜüôæÝ—µxÙ˜·¾ž¿~ê‡jçú +xÚÝZmoÜ6þî_aèð²¤Hê¥ýä6i/Eâæjî€4ÀÉ»²W¨VÚ®´vÜ»ûï7ÃJÔ.ôpßß4ä¼=3C:—ð§Îs+¤.ÌyVa¥²ç«í™<¿‡¹ïϯYúEËpÕ77g_~§³óBi’žßÜ´r!ó\߬ß/.ß½{uõòõ?^,+߈K+åâíåÕß.ßÐØ»E²¸üþÕ5tM^X¤2\—ÊÅOW/¿}ñá懳W7ãqÂ#+©ñ,¿ž½ÿ Ï×pòΤÐEnÏ¡#…*Šä|{f¬ÖhíGš³ë³¿ŽƒY÷jLÆæÂ&&=_Z4¬‰J +iñe¦¡eªFA™<&(¿ +U®×¿um…Ü~ù]ªƒå&y"3Ø×M‹f4“BäyVð¢÷2VY–ò‚USö}„Œ¶"Oý½dêê1v- +T
-úð!BT\è$÷ÇéÚ»úþ°/‡ºk®5¨-r¡TOd?®:~’„‹Jªt.ýËõúÅR'rQÒÃIÙµ7uƒMU,†
õÕþ¡ÚS»î鹑/m[·÷h»0p³©_¨…òù2I`WkÁ~”…µ ³½Ý–-@@å‹ê×CMžFqO'½D…Ò“Hn_Ù4Ýã²—xnÖëŒë\‰DjëvNδAGÏ[ä-Ë€·aœ8Õlž cMÂtž¢{‘j½½‚4Ò¼ +µÓWÛz¹êšŽMª$>´QM‘ù·„€ÕI2Ë£Má°Æ|&W=ŸVŽ«ßuÕü¡ÓÊP˜Ÿ£Íg¤9®:ç<,XH7 g›ËóeÕTƒ‹Ý”+ª1WTA®(}ê ¦\Qq®¨ŽrESÈÅ-å#Ö Ê%Ô„uLÀ‰I;Ón_ßC†Ñ ¡#D|¨Ëx +ôoæ®Ê/>c©ÁòÉ«ÚÃìíˆ$(Þ²ö†?‚(@ËÌP^u‚D‰L‚µ}Ú ‚UŸp¿Ê%‚õ= +›Àâ=B +œ<R¯ ++SóiSWÚڼБвðÌ°ÃM߀IA&ct¶¨ÖµoB +ù˜Öb8Éœˆi€3¿îà«Š¦itÅÅZ?×e&‘IJ«<KÇ’´¾_²$–Á¡Íd€¡v„¡ Ñ)–a9ŒCÀ©%¤Ù:¨§!ôÌ +È©†UVðùl^CSZ±Òf0© ù’(”ëòÖÕ0Žò¾ fÝ®ëëûÑ^° ¸Ù3¹)}W‹ÕaOÝv ø¥~mâ,ÊmŽÕ¨k¡Ñ·u¿¡€3-XÂ,I»8ÊðƳIož.‰sææ|>O¬øL°†e0Ƽnèãë˜~å<‰&
ë<à;a š©Â¶L3Fa\öKO³½oxdO
çÂ3äȹ<ÉÓðUªJsRKEÜt9D˜‚²an¶§L±¥¥ à¦Îç–öŒI«LØ¢ðiê¡wÙVÏ®ÚÔ‹uÝïšò‰‹Ð!űd4¸¢ôe+Ÿ+¤ÕâuKsDoºÉ3 ˾ò¯R> ÐØq^ãI0Uo8¨J¢=…SÞ×8ƒcžff:÷š°Ôå‚Õé›’M³íxÅSŹ[„¨¯V¨¦Ó8:ï +âDIò¬ä’k^ÌS¯Q<ça·ëð®ƒuáÏ2Sƶ +“(úR€ñKA¸³Ñ"ïiDRÆP@ +¨eü'‰}ô¢KØLªÿA^&5 ·]Xêh8ÞÁàóqSÖcç©;ðhd.B¶Î²‘ÂnXvfö¶æFÍtÇeØtùƒˆÝ¤AñfUqä“ñÇP)Ç‚Ï¥Ã7‡ö°½u¬°t‹cPÉ×Hµlxq½ßëhi¹ÛA™@Ðh'j¡5¥VÒ;ñ‡›_x»â?ŸªÂ9Š@s¶Ïj¡…±©óèóñ›z“[ÞÔ[º©‡-ø{ri;ŒË¡¤‘ê£w žbcÁw9IË5@è¶l0;Lgr#åÍÓÎ +«íQýd‚ô;³»P´ä?qËè
äàIžœ\Œ|âc¿, (‡@Úñ‰*fØW°˜#“é£Ï$£¨9Á#QcGY¾m› 7,oÚÎÂpA”--.¸B¤*-Nîg)ä\px„ùƒ´ŒÞ %øùVÿ©™OÔÇ^êç&ÕQŸ?pßW#Œëª)¡? гúeÊHý¸d<’>GnüÄÛ{Mù¼{ªÎ‰ÍQïÀ'(Chc k¡TJ÷Ïo^¿}íŒèÿ»yýãÕu„Äœ¤Í_{Ç"6)ƒày\u'Œbð|,y`àBÏî¡^;"œ0áL¿)Ç+ׯŠê;ÜÂFK‰ðë´´étzòë1If-ØO&’Dæ¿ç?P_æ˜wÇ~î³).C’t•žM§©HR£§£Ö#í™@Ý’¿Ó´N”^b§Ÿˆ`¾´ +ÿ!Ù +“Ê£ö×Õø9×kéÎ_:@dïË{of«é«¢0tŸ€z™²ãc““ÞÖ,í÷ê½{ùæúÇOYÙäî— #-âÎ
`b‰=à\̹oÕÑÁ() ,vG¸ì)O„”#ê~óúê%½X0'ëm
eÝ endobj 2734 0 obj << /Type /Page @@ -13203,193 +13193,207 @@ endobj /D [2734 0 R /XYZ 85.0394 794.5015 null] >> endobj 2737 0 obj << -/D [2734 0 R /XYZ 85.0394 251.1652 null] +/D [2734 0 R /XYZ 85.0394 177.3318 null] >> endobj 2738 0 obj << -/D [2734 0 R /XYZ 85.0394 158.1355 null] ->> endobj -2739 0 obj << -/D [2734 0 R /XYZ 85.0394 85.6263 null] +/D [2734 0 R /XYZ 85.0394 85.432 null] >> endobj 2733 0 obj << -/Font << /F37 1042 0 R /F22 977 0 R /F53 1333 0 R /F41 1238 0 R /F21 954 0 R /F48 1258 0 R /F63 1385 0 R /F39 1178 0 R >> +/Font << /F37 1042 0 R /F48 1258 0 R /F63 1385 0 R /F22 977 0 R /F21 954 0 R /F53 1333 0 R /F41 1238 0 R /F39 1178 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2742 0 obj << -/Length 2931 +2741 0 obj << +/Length 2959 /Filter /FlateDecode >> stream -xÚ¥ËnãFò‡Ðɨ§ßlΞ<'qqfcä@K´MD"‘²cìÏoUW7_¢Æ,|P³ºX]]ï*Z,8ü‰…±Ìf2[¤™f†³XmOøâö¾;g‘–C¬÷7'o¿Ué"c™•vqs7 åwN,nÖ¿%ï™pìô›Þ~kÔ -!pb+dró@÷âÎEò`Ž¬Ä¸d<Óf±ì¤l5å¶Üäx˜4IG¹d¿j÷þÈ‚ yµÛ/U›ÿM붞ыÐ\Æêpe¼Ñú¨b2–¦ÆTGÊ$×mÞÛ¢j›pô¢Zmê¦ðÌ褬z»ËWE3á´-vÛ²Záù¹l¢8³8 R ÊÁË2ü¶\®êM]?Zéä|“ï¤.!4≈åUˆ€fÀ-ntÜú‡MS´Žjx¿c.œr î›}¾!¤U½Eʯöe¹ˆ‡àmøD—ûÇÇztßu»ŽIkÉ¥Î)’xZï@,‚'o¿&Ø×og_øæ›™WÞ¬é·@‘㢾£ßMYsÔ~©Ê¿Éýë©€!í×nç„è'R»d»_=à*CûÜ ³!¸}È«™Ó2Ôëhü3«V<ú…â{âYÁ® -¤äùs"Ú1=q9=ÙOv';JÉ÷ k°·&ÉP¢CC¸ø*œ”žHô€I(HJcëÒiªx„M16M¸¦Øhé‰kbé1#™TcF<ðMnC€5£ -æœ0¯ ®.ägÝêGé$â{s^hK3'¥¦L£˜d¬ëä°|w’>m¶{,·¥UãhIÚµ:hA¾a…ßœ~¨²#}à~†ÐSP¡%d4©¹‰PŠg¸ªöÛ[o—H‡êÍfB%â—H— =^¸¼››Ì6½B1n»ÁÙg%mA'Ù4ÃKIUþâ`bSú¨CUwDG¢ -$Ðm!KaÀ›:GqØðÑísÛD–Z=1è869[NE³Ì7÷õn³Ÿ£¡º9Zßúb~Q!)%qJ»{‰u.lôDýã‘yz -%“ëú§cÃé=’¯æ”/gþuNVûYFÕn^h³®h%“ï?ž/?~0aN–¨¾ÔdLÙÛöƒÔn€G;i‡Ñ÷,Åž¡9=6ÅŠøh Ü…DXwµÂpÐ…¡b -ÀNøÈBGv¿Ë·3¦1n`ªãͤ‡ÄA1°?ßépÞ}Ê¥´¥àmÐm¦š¤€¿½¼î ¸ƒZoiõû†©ÚLû -zìsèˆw]!~n -ªmâÁuQLõůg?ýx1ÝFÞÃ<4Ç(ñÓuOÄO7͹€ZŒ½þõ7;“° ‘°ØA¢\*G––óä¿Çþ{Aác5÷Q›wœüßÿÙÐÿχFìÿiaÜêÈÚÈÞB8~ÀzüˆCÞÿ¼hç^endstream +xÚ¥ÛRä¶ò¯˜ªó“0Z],YÞóIJlB*Ër¶*UIÌŒWfl2¶!ü}ºÕ’oãa7uŠ‡‘[íV«ïÝF,8ü‰…6̤2]$iÌ4z±ÚñÅ=ìýx$<Î2 -‡XïnŽÞ|PÉ"e©‘fqs7 e·V,nÖ¿Eìø›Ÿß|Ðj€,Yp ÖçË÷gììÓå‘•I¡Rzzuu~ùþâ×ã¥ÔÈ/5çÑÇÓË/§¿ìê8•Ñéç×Hìèü¦»Èð²‚+¼Å_G¿ýÁk¸óÏGœ©ÔêÅ3<p&ÒT.¶G±VLÇJÈæèúèÁÁ®{uVx‚3©Œœ‘ž!Xªµ‰O§Ì(©è¶_n~úô™¤"å@*|weVjëð.Ê&ß•yC¸~©›|[ÓÃYUÖÕ®)Ú'§ÆLÅFz:±d cÓ©‹Ðb;D‹³q’xìÊõŠªònŽâ2à.•éºÈe¶Í=a1¹FÊ´Ï–có’Ö3ø]Ê„î‡ïÐ +^üsyß¨J"d“÷Œö_ŠK•0!cí_¿”Õc]ÔSãQ‚%Ö(`C±8QfNÙ¸•`æü€%€ƒçö$œ!ŒDì Ã: ñþ"||ƒ÷ç×gŸ/®n.>]øÀp^•xÂdʃÄA$ Q59.fÄ»^Üá®ÚuìöTO¦7[š9[r¼¼Ç9z‰éO~wqùžŽK P¢u9@ïžò]Ç`³;6ª6´Ù6Ŧh^Ž…#dtó@÷âÎEôy`†¬Ä¸d<ù.IìÛêb[l2<Lꨆ£lÔ®šÖ™4+×~û¥l²¿iÝT3z1·1±¿2Þh}P1)KP ¡bT:ºn2pú¼ljô¼\mª:wÌÄQQôv—òzÂ)’mQ-ÿü\4A +œ œ,;ãƒã3ð³¿-–«jS•ÀO¬âèl“µ5R—ŽñDÄr*D@=à7:nÝæ®<ZGÕ¿ß1çO¹ ÛºÍ6„´ª¶HÙóÕ¼lá¼
ߢn!Jæë·Ý®eZÅä%gK· Á£7ßìû7³/üðÃÌ+oÖTô›£ÈqQÝÑï¦(ó9j_Êâï}rÿùFjû`Hûk!·sBôÛhÛ®p•¢ý?nÐÙÜ<dåÌi©fÊv4þU+žzýÂaÁ=ñ,oW +ñ`½&5×5ÐÄÝýøð/1 +‹È±›Ä.0JB<ì>TuC«çb³¡Õ³õÑöòÒÓð—èûôë@õ¾x +/d”…gÇö}ë5ûåÔ%&÷-)ï는 ³‰´=¢yîS5)ãR›©¥õ÷K‡J¨S¢L½„“zXÒŠ%w@øóC!cH³XƒD +4Ð)Ýlî>©`"1Éù‹HÁ$Ó¡c,ɸb(1
ÌPÊäŸKcLtŒ‹úÞ?‚ Tþª?»XÏœ® ЩÖJ&©üx*À*×î¦ +Z +;®„÷'ŒŠAø1Ãbi9Rë½ö½<T)j¾ >4Ôb¸A1
¯Ð +ý• +u¨êãÈá@Àquë‘|¼BzeÝä™pE¼;%¸0¬Q1®ûVÑyæÔ6>T}ƒˆùÄÙ(^JeögN+‚hÌß5 …»)
+ͲËpüà³¾2Ì.ˆ2±ÍÿE9Ù9ôR±|½×ŒóÔîÏ(bŽ¦yï&¸v³E(ó¹3„Pcx÷â(Y` RB)xà +Uº-dÉxk).¡.ºã¢y®B›ÈO:ŒMöÅ–UÁ,³Í}µƒÛlççèB¨nŽÖ·¾˜_”EJIœÒî^B=Q÷x`žž@Éd»þéÐð endobj -2741 0 obj << +2740 0 obj << /Type /Page -/Contents 2742 0 R -/Resources 2740 0 R +/Contents 2741 0 R +/Resources 2739 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2749 0 R +/Parent 2748 0 R +>> endobj +2742 0 obj << +/D [2740 0 R /XYZ 56.6929 794.5015 null] >> endobj 2743 0 obj << -/D [2741 0 R /XYZ 56.6929 794.5015 null] +/D [2740 0 R /XYZ 56.6929 752.1262 null] >> endobj 918 0 obj << -/D [2741 0 R /XYZ 56.6929 769.5949 null] +/D [2740 0 R /XYZ 56.6929 713.2318 null] >> endobj 2744 0 obj << -/D [2741 0 R /XYZ 56.6929 748.4709 null] +/D [2740 0 R /XYZ 56.6929 680.2418 null] >> endobj 2745 0 obj << -/D [2741 0 R /XYZ 56.6929 713.3233 null] +/D [2740 0 R /XYZ 56.6929 644.7005 null] >> endobj 2746 0 obj << -/D [2741 0 R /XYZ 56.6929 648.7414 null] +/D [2740 0 R /XYZ 56.6929 578.8284 null] >> endobj 2747 0 obj << -/D [2741 0 R /XYZ 56.6929 590.0462 null] ->> endobj -2748 0 obj << -/D [2741 0 R /XYZ 56.6929 95.4174 null] +/D [2740 0 R /XYZ 56.6929 518.8431 null] >> endobj -2740 0 obj << -/Font << /F37 1042 0 R /F53 1333 0 R /F21 954 0 R /F48 1258 0 R /F41 1238 0 R /F22 977 0 R >> +2739 0 obj << +/Font << /F37 1042 0 R /F53 1333 0 R /F21 954 0 R /F22 977 0 R /F48 1258 0 R /F41 1238 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2752 0 obj << -/Length 1730 +2751 0 obj << +/Length 1703 /Filter /FlateDecode >> stream -xÚ¥X[w›8~÷¯ðÉËâ³EE´=}ps«ÛæÒÄíéé倳‹!5¸n²Ûÿ¾# Ø¡Mrzx@æ&}3tèÁC‡‘ —þ0”>Ãd1ð†—°v8 –Çm˜Ü.׋éà釒ȀÃé¬#+"^Ñá4ýäŒOO÷÷&F.žó‚Œ\áyÎÑøøÝø
ÒNG’9ãÃýs˜2?€‰Fdôeúêéàù\JúB›¥%Ÿïí’Ý“ãÍ:ØŸ¶öv}¢×Æ~|úâ
SpíÕÀ#\Fb¸†‰G¨”l¸ø‚ásÞPòÁùàm+°³j¶öÅHðˆˆˆ…=AòiÇ Ê‰C!IÀ7¾¤j¯òÚÔò›ZŽ\Ê Hy™Äù¼¬êgÚCPãRJ¤lcË?êzärø«xq•+˜#˽±íG+Ìç„{&Mmô]µ8ý×ð÷Ê2ªÃè~ÕôªkUÕÝù}º™o7µš·‚§éRU•ªy}^•K;\ðg8üñxOŒIA7÷zç—å2«ç‹‘ëë#Ÿ/âÄ]¤¢×™J%K…–zÎNpp4ûÛç'ÕŸ__0ÿd¢Xv¸#óÍóW'æ7;¿áƒêc<ê€9¶3þr/^¯åÇõ‡õ1ÿñõêíóç°úécL¹\ -É+¤Ô·IfY¤IF RX¦u–ç(÷âUYp"qUYÐ 4wÜXe¹:—R“?{CXH<x(L(rÅEº% -ì(ÇGûè÷ùþÙªò{x™¹þv›¾;ëhN''Çý ÖM´ÂLå4°E™SÑfOMÅ.B.ìêmé7'⪼ã$QW5rbñÐT›¤¡S¨,[‘"O³…%åe‘ÝXƒ‰Àƒßc@©®T’iåÖ¬è«ñ¶Ù†L@$äCrpÒðN.âL6‚SÞ˜Ç}Ú|@Cét*zš½æ +xÚXYsÛ6~ׯÐø¥Ô4Dˆ‹G3yPlÙq±L&ÇMB[ŠtD*ŠÝæ¿w)J¦ãxÚÑÅbO|‹…èЃ†’x<à DzT“ùÀ^ÁÚÁ€Z·ar»\/.O÷y0ŒHä3x1íÈ +‰†tx‘~rƧ§“ã½Ã#—IÏyAF®ô<çh|ünüi§£ˆ9ãƒÉ9L™|`¢!}¹xõt_òŽ|E$R›¥%Ÿïí’Ý“ã}Í:˜\´öv}¢×Æ~|úâ
SpíÕÀ#< +åpÐ(bÃù@HN¤à¼¡äƒóÁÛV`gÕlí‹‘ä!‘!z‚ÄèRIÉ6¢$#âsÆ/“ã£Ó7tZЮӒ„¾”CWxDÐHöòºÎÊ¢¹>Äòo½«Õàâ +lÏUjÄs×F‘Q"/Ú£=ž”R‡˜êáì–ó9¯tmgN]Ú¯ÑÂè†u@o€%ë=PÑÑî¶4½ÑùDOg5Ë’®Ì—(šÂª¬òK+$UŸ=Æ7 gÅZIï!CÓáü¦½ ')-áj¹ˆu9ÖÄÐÑ”\!à +0ŽÐrXËíbÑŽ0øzòˆ†ŽªuôàV¼˜YtU³Ôq檨‘ži– +OÛ´\ô÷V¿š.Öé}ió¡;ðý†£Õv¼u`t½ÈtH,h8 å}$hÖô1¨ñáaÖ<(¼ªÇ‘²ðgˆ¡‘O„~ÛlØ’Y‰}ÚÎ_E¹*lÿ›ÇÚåï¶ Öa6ƒØv³¦kÛÁÉ?øÙ2nãݤ;JAcø:MÐïóÉÙnå÷ð1sý$<<xw6ÖѼ8<9¾Ä!¾ÀãkîYN}{)s*Ûê©©ØEèÑ¥]]_ý&)®øÀ7Nu]#'^šj‹4>Ü[‘"O³…%åU‘ÝZƒ‰Àƒï1 T×*É´òFkVôÝ‘¶Ù†ŒO"îG¿R‹€“wjgQsCpÊó8¢O›¯h(NEO³¢×8E2üÁkn¾Ær¨4"Šœs¥¶ì¨:ææÚk–ûê%ÁÃß’&›}H§ë4xmê;÷págœÎ³"«j endobj -2751 0 obj << +2750 0 obj << /Type /Page -/Contents 2752 0 R -/Resources 2750 0 R +/Contents 2751 0 R +/Resources 2749 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2749 0 R +/Parent 2748 0 R +>> endobj +2752 0 obj << +/D [2750 0 R /XYZ 85.0394 794.5015 null] >> endobj 2753 0 obj << -/D [2751 0 R /XYZ 85.0394 794.5015 null] +/D [2750 0 R /XYZ 85.0394 751.3734 null] >> endobj 2754 0 obj << -/D [2751 0 R /XYZ 85.0394 175.5261 null] ->> endobj -2755 0 obj << -/D [2751 0 R /XYZ 85.0394 84.5049 null] +/D [2750 0 R /XYZ 85.0394 109.3471 null] >> endobj -2750 0 obj << -/Font << /F37 1042 0 R /F53 1333 0 R /F41 1238 0 R /F22 977 0 R /F21 954 0 R /F48 1258 0 R /F39 1178 0 R >> +2749 0 obj << +/Font << /F37 1042 0 R /F53 1333 0 R /F21 954 0 R /F41 1238 0 R /F22 977 0 R /F48 1258 0 R >> /ProcSet [ /PDF /Text ] >> endobj -2758 0 obj << -/Length 2513 +2757 0 obj << +/Length 2475 /Filter /FlateDecode >> stream -xÚ¥ZYsÛF~ׯà#UNæ>jŸä#^¥6²×’«¶ÊñE‚"Ê$À å×oÏ €J¥üÀÑ ÙÓèã믇&ÿÈDH$
5e8˜ˆÉb{…'Oðìà 2³(4ëK½y¸úù¦&IåäaÕÓ¥ÖšL–_§o1èTàéç»wogo?ÞýòáýÝõŒ®øôæÓ§÷wïnÿw=£ƒ0Hb<ýíæîËÍüÞ§kC§7Þß_{øõêýC2«o:ÁÌÚôÇÕ×ox²„7øõ -#f´˜<Ãl0t²½â‚!Á‹;›«û«ÿ&…½§î«YWŒ(“4ãJ&„ #8C$eÎ7_þýñ³}§=×áÉŒJ$ŒVNî¶j‹}U´Þ÷/M[lÿÇÛºjê}[¶A
œÊã’=œ#Ì”LÎOcpé¾Z.f‹ºZ=•ý¦e1©½›o‹¼aÜÁ¤W8ÐâìùRåWö™_}/^ü¤Šý¼-ë ÜÖõ¦3»s–=E#¹p§Ü¿Tõ®)›ãˆ3‚”–l"À¹^8 H6C„p$zH"aÑip±ã$“ÇQèôÅ%8ôëlþ-®ýKÁ¹Ö -,
œl€Ošò¯àâÁqœ Í rIç"£“ 0HˆNåªÜü
•ë´úžQ.R‚ñNy•Râ5ÊwíÝAÞfôQ†Œß#}ûŒ¾3P¢Rv–²Çg^-ëíˆ/ þ”úX}sÑÜùr¹/šæõh/ª\¬÷uÝ.Ë}ÎN@1‘Ò%)=\TzhŠœ>Êí©ËTÝŒ -€§cñq'úîýýÛÏ·Ÿn?Þ¥/Õ1ª¡‡dˆbS* Aa‘L›)|íwŒéÓ!!lÚM”XÕûŒ „3¤0 7N&dŽ¦q“ -Ú -§jzÛ†“çá´Ç‚—~5GÏ“?Šª,ªðÍùÆ3Øû#|³ýçó¾lgWg -š]ï°wô -‰#ôC Ë$ÖÃÚy¶]‹ -9”KëK*å)BÁô=Vyy´™™ŒL…ùtYØ¿*—¬X¸du»«ùaÓú?õvëУªb㟤]¨±k2…ðA™EžÛ~IJ‚›MýœïìŒ -¬Rɯ—˜#À”rÈ ª”5|A·+{¬$žnkï\¿YlæµvüŸ§³lÐv«Ök‰3ÒÒ?x|ÉU‡‘Ö†…~†šñÕ*æŽë© êmþãPúÅÒ†DÒ˜ðη»MÄ -ŸµCáSã²(<°n€Â–̆Éø+”t}ϯ|{2ñ7+yÌQƒe&È7îp¶?ÈĽçþãÇ|ã.Ì`¹¬·ó²ê,@Yöê!æÕ1g†V×t\êü£ŠbK0Ú³YÓOš(ärfw1gâ¯A}£EÜèóFE™S£úooâÊ6ìpïig¦7‡Û'ÎJ·z¶C¦#ø™‚ÆÀÞhºhx92,MH˜bŠ*˜â·7_t±æ¬ü·ÍM\#‚ÉðŠ_B ·Å‘ÉŒcŠ0%ü¤ +xÚ¥Y[oÛÆ~÷¯Ð£TÛ½_Ð'7qs\4N;À’<Ðe‘HU¤âúüú3{I,÷°VËáììÌ7ßÌ®ÈÙ‰¤¡f¢G1™o.ðäž½» Af…f}©_ï/~þ©‰AFR9¹_öti„µ&“ûŗ鯈t *ðôÓíÛ7³7n{w}{9#†+>½úøñúöíÍ¿/gT`IŒ§ï¯n?_ýáç>^:½zw}wùíþ÷‹ëûdVßt‚™µé¯‹/ßðd;øý#f´˜<Á6:Ù\pÁàŒÅ™õÅÝÅŸIaï©{5ë +‚e’f|AÉ„d„ gƒ$£Ì9ãîúÚoêê»v?ðíyOà)F'¾«ó¯X`
ÿÈOþM;7›7õò±¬ÇÏ6›²ž7‹ÒÎ?ïÖ`¦·Q + cìãssûÖ¿m‚i‹MUWm·+ºfç§>•ËrwIôÔ—~ê}Qï‹ufDjD¥ŒêQøfƸ@šA +vfà©h¨ +,0ÄÔÜÒVÿ ^¬1Óœ‘ —tÎ3:!fZ +qP¹¬Öÿ@å*¾g”KØaü ¼N¨xòíY{· +‘«v»fÝfVfq©"ìíjmiBèDr%Ô ðJÔÓv +Ò˜0:†bмîšÇ6¾»„N>ßé¬g lÀ¡}wô¡aX@ùb—Ò—Š
øq—’¤¸ê/)92†è——ŒB™%™CÅÈpÉ·Ž +Çꚥ#@€HÉüsÙÍóÈUÒK`—.`ãÓ +Ìþ‘-ÚЬh&"·ÏM‹Ô/ôà4´XyìÉV0E Ý–óʺ櫈žV¶…µ#6rsñáþZwöhå¿v`ª;ÊN« ütZzuŸ
ðßqà©€žRRr&òq’ˆïD]½bmú —Ιƒûš°MHë]·ß"[ (`(ëK*å1[ÁIêyùdaƒÆȌ٠+ó©=³bZ;°báÀêf—Å~Ýù/óf³ñ¤s¨Wu¹öOÒ,äØ%™Bø ÍbÏÓþÄe×ëæ)_åž‘q6›.Wv‚eûÚ.YŸ@5cT‰!ƒ»˜Á +¶ûTÞ®‹yê¿àE_Õ{¶ª©Ž-GXËQ*œì™Hýw~DÂABEýéTPm.<–m¼D!£ü»j;ß\Û¶tÛ£s´À*•üz®>ƒ\¢ö†ÉŒ t³´ëúƒƒÄÓMã½ë'ËuñÐØ£ÿz|òI ÚèóZâ‰iá<<çò‹Ã׎}ˆšÓÕ*‚ÇUUõ6ÿµ¯ü`ac"i„ìãïb³]G +höGçð£:\Ù‘Un?mèì§E¨ý„›-‚¸[pÓt½î›q=}nö^ ]5ûuvwÆööòPJΟN…IÍ¥^ëmÍvñPÍØ‹<´R¨Qoõ9 +wÛ(à +¶…wO28…ÛdìÚ3§BªSéI9És’ÿsô!ùs@$:ÕÜmoÙ™æ¶/uº¹MRÎåá–M²¡ËµIï]²õM# +ÎÙ™h÷¤^ˆv”rÑžç¢mN2÷ŸƒhÑLIèN^´-IeŒF›ÙþodÝçP]ûõ*Ïp¶b*íɃ¿NY:ø÷ªëå—Ïñ䛎§îÆ¢×"ÞLWgCÐpÈzň+膱êÿÆ‘
>VHLÏ¿'õBð£”sÓêè+6êÌ’Q(³ä öAOgËö`É»*´@ØÕpëõ•½°öÃ=4绀f9êA|ÈÚñÅ„#ËÇ}ê\<óœRª^Y´0´ÞŒ
´(TIòrdzB§…\\¾¿†‚ãïY +~É°Y–%à¾iþµ}lˆŽŒ?HIWñüÈG°'¾’G”5Øžù’n!àÁfïÏ"2µÝ…ÿøQ¬ÝÅͦ¨êƒ(K¿~÷QcÎXᨦӱÊæËåx>eYªÄéÂëÿþúðK;·wäúD‚ÂÑÁË2e
'šc=üV}lûE}Î6endstream endobj -2757 0 obj << +2756 0 obj << /Type /Page -/Contents 2758 0 R -/Resources 2756 0 R +/Contents 2757 0 R +/Resources 2755 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2749 0 R +/Parent 2748 0 R +>> endobj +2758 0 obj << +/D [2756 0 R /XYZ 56.6929 794.5015 null] >> endobj 2759 0 obj << -/D [2757 0 R /XYZ 56.6929 794.5015 null] +/D [2756 0 R /XYZ 56.6929 752.1993 null] >> endobj 2760 0 obj << -/D [2757 0 R /XYZ 56.6929 751.8794 null] +/D [2756 0 R /XYZ 56.6929 689.9994 null] >> endobj 922 0 obj << -/D [2757 0 R /XYZ 56.6929 711.2251 null] +/D [2756 0 R /XYZ 56.6929 651.6264 null] >> endobj 2761 0 obj << -/D [2757 0 R /XYZ 56.6929 673.9044 null] +/D [2756 0 R /XYZ 56.6929 615.3075 null] >> endobj 2762 0 obj << -/D [2757 0 R /XYZ 56.6929 641.148 null] +/D [2756 0 R /XYZ 56.6929 583.553 null] >> endobj 2763 0 obj << -/D [2757 0 R /XYZ 56.6929 572.743 null] +/D [2756 0 R /XYZ 56.6929 518.4312 null] >> endobj 2764 0 obj << -/D [2757 0 R /XYZ 56.6929 498.2696 null] +/D [2756 0 R /XYZ 56.6929 447.241 null] >> endobj 2765 0 obj << -/D [2757 0 R /XYZ 56.6929 396.921 null] +/D [2756 0 R /XYZ 56.6929 349.1756 null] >> endobj -2756 0 obj << -/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F41 1238 0 R /F53 1333 0 R /F63 1385 0 R >> +2755 0 obj << +/Font << /F37 1042 0 R /F21 954 0 R /F22 977 0 R /F39 1178 0 R /F41 1238 0 R /F53 1333 0 R /F63 1385 0 R >> /ProcSet [ /PDF /Text ] >> endobj 2768 0 obj << -/Length 2085 +/Length 2199 /Filter /FlateDecode >> stream -xÚ¥XßoÛ6~Ï_áG˜Yþù˜®i—¡M³%t}P-9*‹®$7H±?~G‘”%™N"Š<“ǻᄏY`ø#%fš/RÍ‘ÀD,Ö»¼x€µwÄˬ‚Ðj,õúþâÕ[–.4Ò’ÊÅýf´—BX)²¸Ï?'—··W7o®ÿZ®¨ÀÉk´\ Œ“—7Ÿ.ß»¹Û¥¦É廫»åŠh!(Qlå$NÞ¼¹¹[ýúñæí»«›å—ûß/®îµÆªÌ¬Nß/>Á‹nðûFL+±x„ŒˆÖt±»à‚!Á3ÕÅÝÅÆ£Õþ§1Sp¡ \.V‚#¥‰Œ#,À -·OmW€TÒ$7Vk*IR›ÎMí{Í2/ÜDæìÏÇž"D&´wÀ«¼øñÊß«—˜M‚¨ÄÁYöžv×âû¡ü‘UEݹóa‹r]üb_ü¥{ýŠMv¨¼ÈØ¢vÑZÔ>ÝÉuѶîÖDI” --µ]à•ö¢B&ߊ§¯&ë7ÊÝLYïŠÜRYüS2è¹£ˆñ4Ø£Cžàîƒ:ÛùQ¯<<3÷Xo³&[w…µŽFo
/Ù¸§Ý°òskSwYY÷(±ïGãÃ¥JO}î€fØûÄÉ×½Ú"w3e
¸Èr7íl‹ƒ'Hð -ñ³Ê"^ÇÑT×›½EŒßÒ¸gOf›'÷bùR¿”ÎYëÎ4~åYÄC4aÂÉˈ×)¡^걬*·u³TÉÁk–ïql:ËRPiÉäÒ/eùÊ¡’QlK— Û—önŽ•ÄÇþiœ0ÙÑ„Ól´©R: -
<{†¤Ù®^yØÖ¥–<6e·º.j÷îŒUA]òÃK¸$décÅ&ú™™a±„í³¤ôO8öŸº1‡žìÔÓ1”gÖÂrlàˆ+EŠRI_ä.Œ´frL±€ÁãÏFðXê|R=Ô±lB Á ÍF/pœâây½‚PD¯I`Q>*gŠùØíÝÕÇ®äçb—£4äÙØ+S¢ç±;@‰'mÑÁÝÌcÝ—Sv¸™?-f…zëÿ†|€¾ -28Á—í}¤2ÀTæ§Mt‹8`%pïä -íõyèD¢
OÃìîêÊsùþî㋱f7ÿ¬à -ÄØ1Zèï:’î7 M»¢D€Ôëë›7î§Úë”ï {m;%ã‰äÏbã˪zí#󃋾ˆß¥m(å$랃¤Á Ì›ÅùõòÓýoÿ|Ñ×5ôâuáùð®ÿdâÉïWh4LÓ•‡cƒA8´ÿrðB -$=FsDñ -žçu;öŸ…^-¥ -ýè…N/n™ós N1í¤ ’D…`˪õèv `U8OŠ¾„]·Ãè[dè4R1t`èzðÛ” ãŒÌ7o"[2¨Ÿ¤ˆÎœ«Ü3‰šïÚ¾¸ë-)4ÿ*l÷ÏH?#»˜¶dÅÝ„&š:º-XÖ~ƒž©ù=Œ¬6_Î}ÀÅíWç|ð +xÚ¥YÛnÛH}÷Wè‘F¾³ùèLœl‰ã;À +IÅp°¿Õ7š¤ZÒ,Â&Yê®Ë©SU4Y`øGJ Ì2¾H3Ž&b±Þ]áÅ#¼{wE¼Ì*ÆR¯®^½eé"C™¤rñ°í¥VŠ,Š/ÉõÝÝÍí›÷-WTàä5Z®ÆÉÇëÛÏ×ܳ»eF“ëw7÷ËÉ„ D±‘“8yóæö~õû§Û·ïnn—_þ¸ºyÔ«N03:ý¸úò/ +°à+ŒX¦Äâ n0"YF»+.œ±ð¤¾º¿ú÷°áèýiÌ\($(—‹•V$;#/Áa£Œdjp%1‡)ã°ÕÞúêd#IBÊhfEöºíçÞ à3ÅÅb|â‘^A(¢ŸFRTλߗëêoŒiÙ-W,“I¿-Ýbw»¼)ÌHÖÛ¼iÊÚ½±šÚÕÓ¶l—D%¥³nâŠ1‚e0¯ÉweáÅÆj1Ž2–©ºêú²ñªltTÃ×}¥Ý‘lì©z9–0€æÜoØ6Å:r*¸Œ‡,S®’‡5à€)”@j@„xTQnòCÝ;xW»BøЄ=N$dÍRrLc©Ó`¤,˜Ú˜2$ÁjœÞmªº<B”àˆgJ×nŠ¨7Á”ÈW˜Lõ›bJð$7‘tú`ã¶.Ýc½qW§“)ò>wO]ôañX6e›÷UóèDBͶ‡~«ÛêWnA””%ïýž^H$z~ìb›!Á8™†¶{ÔTÒ¤ÐFk*IÒèÞ=Ú;´ý¬ŠÒ=ÈÿùwDÁd> +÷¤jö‡E¬T†L)™ÀôŒØ($b<
þèÆ0'8{`axÁ¬òpÍÝ(§Í×}i¼c€a½á%[w5ÖþpDŸWE‰¹q>Í2`Ú`¼©šqb¯Í'ßJwèÊÂ=©ÀE^¸Çη8D‚„H +1…âHè4ƒb¬Ð:…€·Ö}QµGHä)üúÌsš
BǪMË*E׎uûìh)Ë’§ªßºU¿aLB£ÇTÈœU‰'„Œ¦2]ï
Vü–Ú]-mžÝaʘ¥raZ÷ºõoÎbºL8¹Œu託zªêÚmÝ.UrðZÛ-‚uoø v™\ûWy±rxd„Aþš¦eÂó•±Íñ1ƒÌØ?K%{qá´Îaª”Ž’Þ g6$ªW¶uÅ„%OmÕ/¨ËÆÝ;gÕБüô®üEl–˜?s3¼ì!Gø,©üŽ„ýg§nôÁƒyôüRÇjš®CBŽ ¥HQ*éEÖ‚Á"crLÑÜ¥I¬.4Æc©3Ù¤,Ô§,(pí©)ë¬^Ôu¬WtÊš(æs׆Ëæ®ä§r—£4älî‚—)Éæ¹;@‰']Ù¿€Û.ôSc)³ÜÌΟ¶±ŒB§ˆ³†|€¾Z18Á7ì6S`zòcCSÆ+x''dðrÐ%KòºV•¹ð Ls³)ÄuS?ϪÏKßhz¼ÙË—LðÅÉ%cî/QUïÁµÂáGß@Ys=6ЄÁ ‹%”KèFÒ@ê7]¼ûps±ÃO$ÂJ¦®°š*Ú«T×ú)âSì!ÍÉ…RNM +©ÜëãÐ<RaÕxè6–H…m1Œ¾~sO=e;X©Ñ¡+
¦†}XOÅ á +vÚ<z”ÇïøÄKÍ*3.™eî.]¾Û×QJ'ˆ± ®ÍÉñÉEñ9®í ök6³Fëû•½††ÜÍ–óâ‡R„Þ1ãI«ë.Æš€Ú”†Zl‰ìK"GãBŒ2$EöézÈÀ“Ó¹÷ûæqÁ4©aîª&QJLS7ëê€4û€p¸Ž¸kŽù¸@œôof(.Dâ"r†Â•fÙèDÒ
OóìþæÆsýáþÓ¹dSÃîcüG‚†2æ…½°ÆŽ¤íédA”˜zýþöÿ|ä•*v0¹v=ä’öTòg¹ñU³ö©ùÑ¥_$ðÒ“rRwè‡AÙà¼7ñËõç‡}úó²CÞ70ˆ7¥§Ä{û½Äóßï0e趯/Óá0ûË0^ÁÎtDñB +©^M7Ž
OLæn͇¸b0žQîhq²‹#wJS?‚×Ñ$Œ]„oI:°¾Öõ?Ïs£÷]u4~JC¸Ð¥ +(ÓXã`2— +“ç¿)¿ì`› +ý¤ì…Ž
7Üù%§˜ŽÑI¢Bºåõ£†–t»‹¤°€Fœ§F_îÛaõ=²?©ÆGpt3ÄmÊІqFæ›·‘-
+¤ˆËœ«l¹DÍwí.îzBK-¶û¯I¿"»XfèÆ– QþÒMt[ð¬ùkÆLÍae´ùzêO! ¸ùûE>x€ìÿýg’—?ÁˆÊ”¢ñö–anª( JsˆbsÕSZ·4¢ûd¦bendstream endobj 2767 0 obj << /Type /Page /Contents 2768 0 R /Resources 2766 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2749 0 R +/Parent 2748 0 R >> endobj 2769 0 obj << /D [2767 0 R /XYZ 85.0394 794.5015 null] >> endobj 2770 0 obj << -/D [2767 0 R /XYZ 85.0394 497.7321 null] +/D [2767 0 R /XYZ 85.0394 465.3449 null] >> endobj 2771 0 obj << -/D [2767 0 R /XYZ 85.0394 355.5987 null] +/D [2767 0 R /XYZ 85.0394 333.447 null] >> endobj 2772 0 obj << -/D [2767 0 R /XYZ 85.0394 285.4875 null] +/D [2767 0 R /XYZ 85.0394 269.6416 null] >> endobj 926 0 obj << -/D [2767 0 R /XYZ 85.0394 241.6173 null] +/D [2767 0 R /XYZ 85.0394 230.1531 null] >> endobj 2773 0 obj << -/D [2767 0 R /XYZ 85.0394 202.8843 null] +/D [2767 0 R /XYZ 85.0394 193.3443 null] >> endobj 2774 0 obj << -/D [2767 0 R /XYZ 85.0394 168.7156 null] +/D [2767 0 R /XYZ 85.0394 161.0999 null] >> endobj 2775 0 obj << -/D [2767 0 R /XYZ 85.0394 95.6826 null] +/D [2767 0 R /XYZ 85.0394 94.3727 null] >> endobj 2766 0 obj << /Font << /F37 1042 0 R /F21 954 0 R /F63 1385 0 R /F22 977 0 R /F41 1238 0 R /F48 1258 0 R /F39 1178 0 R /F53 1333 0 R >> @@ -13418,7 +13422,7 @@ endobj /Contents 2778 0 R /Resources 2776 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2749 0 R +/Parent 2748 0 R >> endobj 2779 0 obj << /D [2777 0 R /XYZ 56.6929 794.5015 null] @@ -13453,7 +13457,7 @@ endobj /Contents 2786 0 R /Resources 2784 0 R /MediaBox [0 0 595.2756 841.8898] -/Parent 2749 0 R +/Parent 2748 0 R >> endobj 2787 0 obj << /D [2785 0 R /XYZ 85.0394 794.5015 null] @@ -13630,7 +13634,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 @@ -13653,7 +13657,7 @@ $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 2131 0 obj << /Type /Font @@ -13662,14 +13666,14 @@ endobj /FirstChar 67 /LastChar 85 /Widths 2825 0 R -/BaseFont /DTQKKM+URWPalladioL-Bold-Slant_167 +/BaseFont /BILQGW+URWPalladioL-Bold-Slant_167 /FontDescriptor 2129 0 R >> endobj 2129 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /DTQKKM+URWPalladioL-Bold-Slant_167 +/FontName /BILQGW+URWPalladioL-Bold-Slant_167 /ItalicAngle -9 /StemV 123 /XHeight 471 @@ -13693,7 +13697,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*¹ @@ -13711,7 +13715,7 @@ 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À'yžendstream endobj 2117 0 obj << /Type /Font @@ -13720,14 +13724,14 @@ endobj /FirstChar 66 /LastChar 78 /Widths 2826 0 R -/BaseFont /ONFMSU+URWPalladioL-BoldItal +/BaseFont /DTDQDT+URWPalladioL-BoldItal /FontDescriptor 2115 0 R >> endobj 2115 0 obj << /Ascent 728 /CapHeight 669 /Descent -256 -/FontName /ONFMSU+URWPalladioL-BoldItal +/FontName /DTDQDT+URWPalladioL-BoldItal /ItalicAngle -9.9 /StemV 114 /XHeight 469 @@ -13743,21 +13747,20 @@ endobj /Length1 771 /Length2 1151 /Length3 532 -/Length 1712 +/Length 1711 /Filter /FlateDecode >> stream -xÚíRkTSW‘ª¡¬òRIÕzX%2yj @ÄP4<å!1÷†Ü’ÜK/74€ˆ*©Ê²ˆ.yŠŠRaU¨”Zb¦€/Ò* -ŒÃ -ÁÐG ð«uÀ]Ø|!o…ǧÐ@0–nÀ‘T5¼‚é“$>iaQ*P SjXKÖP*4@Ž)˜00H£ë&od€upŒg“Âá -M<…Ã(4] éß”V„Däýû×N%#JDÒaÀþƒ=sþˆI“pDØL6›CÉýî”4™Ub‚¦.Ï(p\a CDF<`ä - É*§Lþ«°4pFÆ$úàVêäì‘îMb}ZP¦72VpƒË#[±Wú>ó'¢R‡ã0JLiлX…žÂ°VR¬71¥ßÖO÷Þ^“+®ê<fOÏXh>²µýü¶Sf?æp¯ŸËu¼ñ§(ø£ßœ·9Šw* ÿ†©x}ÔÓ¢l‹QÎÚÖãlqt£Wì—Ïz¨NLžq¹¬õíÁ÷¬‹Ó½þìùìnæyûº5÷9üJêHáÌš[7_=ÉMÛÔÑguøò*¡$•Y³ŽùçÝ¢«B±*ÌZ}y~âþg®¯ÔÖ;Ýi·ÍS™Ìî†Ùÿå6]¯êï p¤-¶Æ• -VË…³ú\)7›ý=ÌqÍMá²_gtÑæ÷»¥ù9%a±ÒèÑÇ*\”54þ¡ÕT[¸¾u}‹6 -ëuXejÓþ=°?»yLâ7òÜnýÂÓʥ܎k÷•ÿM¶ÞûÛ&ËžD±ÞF ý¸¿òÑ¿.µ˜p“%Á ½)g£ny_®m¸PâZ[03ÉÒ$‘T-išõÍ÷p]è7×I”8Ô»¬»õEÔç²]xã‹Ž}v¿ôú©$ÚÒ8rÄgQ®ýЖi»˜¢–}µ;^›bèô=iùqÞ²}PT6cí¾´ã5á5Ûµ†Ç‚9{ êqìʳÏ=5ý *Ë@Wø¦gËém´
WjNE‘/*S˜x|àÙ–VGOŒ3¹g?ÙÀóKL}ÝpdÝ¡jãîMßZ¹hNJС¿g@@M^’ûfëhO¨ÎÁYÜÔž`Eï3ßù±l9wÈYçé÷ÍÒ€jÝ…ŒZËà:«¢ŒlM¼w¡mÿ
j®ÔÖºÑ ·ÁËAŠT/«»Eæú½ô©;jiN7m—´Ã¯NV•Ä°r{Vòñ ÖŒU -QùRéiÍr›wfŽ=)q|†o>x-ŒßP¾ -¼]¹~´bÂÿnׄ.ÏõÊHaÇ/gVÈT²7 ò½)óUY}缬¦®ÒNåú`†×Ö3Ÿ¿ä~uÚÔ¸Ùf!„¾³U·o¿îz5,ÆQËÙ+ÐsŸëÈ·{?§p5•újZZ7¦ß_V:Øwt祬è,w½bÜKÅ%¯mãcê†ÚmËs….ÊÆzÓž‹•ÅŽÇh‚ñÒ¨|eÛíä-«‡eu
'v;ìàRgwÍ-hžµpçæŸÝ/Ë”W|½>à<??3朄×8ç{ÏÅEjJÎ99T$®>˜zOÜ–ý<ð‡ ÷ìCF—<‰=k.,x1¨î=ã[^,¾Ò)ºÕº‡VÛ¥iª.-Ø#›[ã²á½P§ÃíW„לüw··ó>k§.#^¾N8µÜí[CJ'¤Ûô(´eM„iÁB#z]Ú™yy¢Ò ®»FÔÉ
×Ëò~A£å
Ô‰¶ªýs8Ñy¬€¶Yøbݬû]ÿü»”jþÀØqKÒµž/G×îä¿´&±èIE±ª›7ϺñiVäáü*jm?û?\”ÿøŸ( ÔÀ -œÀ´ -<òo2©Œ‰endstream +xÚíRiTSבª¡¬2©¤j=,Œy5„„0
ó$1÷†Ü’ÜK/7”AÄJª²,b£KFQQ*¬*u@©%Váp""<ÂòY¤jUœzÁººJ¶¿Þzçü9ûÛßÙû;ßÙ4·Caà`%&G¥R ‡
È3›M¡ÑqXN $'`!à^ L«Ü€ÍòVy| +
bézIUÀ#>Iâ‘Æ…R9¡‚5d
…\
d˜ =ˆÔj°nòFXgÀx&1)€6À©JaMj’ JðßÀ6ým*Æ3HQÀcJ&"!Uë+)¬5Ù
&µü²¦ÖªÕkäšÉòSNý%/× jýïL“®%`H1ÆÑéÔø8)!ZÍô¬„«…MUÀÁYÉd¯|ƒ#Áˆ†"B¡J¹:žÂaš®„ôoJKæùû×N%#äJDêÓaÀþƒ=sþˆI“pDØL6›CÉýö”4™U`‚¦.ÏÈq\®§CDF<Í +Á: +-ŽÃ(15>¤Aoc%Bz +Ã:XA1ßÀ>[>Þ{j[mž¸ºë¨-=c¡ñð–Žs[O}˜Ã}>N×ð¦"á~uÜêø1rÌ¡t$ü+¤äõSO‰rLÙ2ÖÖ^G“½½rŸlÖÅpbòŒKåímïil¿k^lIoò|ð£ûÓ;™çlëWßãð«¨#E3koÞxù8/mcg¿ÙîKÈ}¨”’T~zõ8ú¿wŠ¯LÜÁª1sÍ¥ù‰ûž:¿2SÛn÷¤Ý²7 +åR›ëFßsØtr “ÂÙŸ¶Ø[&“ g/ôº]aVïûºcýZšÃ¥¿Ìì¦ÝŒïöH +rKCc$Q£ŽV:)j¨}Cj¨ÖpC[|«Æ½PhiX[à”ÖÐÅõ-á¤7í¡KIûuÉŽ™O’ž?ï{öÚ@m} Èv³r=>#ÆÓ{¿¦‡ç0½ƒMµ½ú™É-N®úâ.!òí³[eh×üÛ §eL +b×ó]nùÌÝ̥܎köVüKïùu³iw¢Xg%ˆ»ˆ~8Põð狆ýÜäàÀ„¾”3‘7=/Õ5ž¯r®+œ™dj®^Ò<ë˜ïæç¼Ðg®ƒ(Ñ T;ÍztÅ÷Ugsœxã‹Ž ½ô¼ðú¡4ÊÔ4rØkQžíÐæi;™÷#—g{ÿbs.¼.Eßå]wÂôý¼e{¡ÈÆÚ½iÇjÃk·iôsö4<äØTäœ}"jþNYŽƒzðO—ÓÛië/×="Š#žW¥0ñ8ÿ3m(ŽZŽggrÏ|´žç“˜úªÇïðºƒ5Ù»6>xtså¢íë)B»ÞA5]üiiÞë-£½!Z;GqsG‚½{Ôxûû~D0¸ùìAG»oìWKýZ©õçÿ3¶j-ƒë¨ŒÌf«ã<‹¬&hPK•¦Î…¹X.ÈS=Ì®&©ó·’'®¨©%Ý°-˜ zy¢º4š•gé]uÒËX=V%DeK%§ÔËfÜž9ö¸ÔÕòßtàj(¿±b'ä«2"~´rÂ÷N÷„6ßùòHQçO§WH•Ò× ²=)ó•Yz]×¼¬æ@†Ç–ÓeÎý┡i“Õ<|$úÆZÕ±íšó•Ðh{
gsŒ@Ç}v$¶³ÀæÝÜ¢0*õÔ°´~L·¯>´ÌÒdÇŬ¨÷Mw<¢]ËÄ¥¯¬ã¢ë‡:¬Ëq…NMŠ¦ÃîU%öF«ñ²ÈEûäÍaÃÒúÆã»ì¶sªrJºç¶ÌZ¸cÓ.–eÊ*¿Œ÷;Ç/ÈŒ>Ìë÷Ÿóûâb%çž*×H½+î
ÍyæÿÝ{Ð;¶A£KÇœ1>·¨úN{W”H†/w‰n¶í¦Õu«›kÊ +wKçÖ:'ÄáPÇeáUß]%¼OÚǩˈ¯N.wùZŸRÌ ê1<i]¡‡[± û5}MNíþÌü|QY@÷õ#ªäÆÎkåù?¡Q²FêD{õ¾9œ¨|–_û,|±ÀfÖ½®Ä}úMJ
p켸5éjïç£kwð_˜“Xô¤b†œXÕÛgÞð$+âPA5µn€ý7åÿþ' +(Ô°'0O£ü*ÊŒˆendstream endobj 1459 0 obj << /Type /Font @@ -13766,14 +13769,14 @@ endobj /FirstChar 60 /LastChar 62 /Widths 2828 0 R -/BaseFont /NFAKWB+CMMI10 +/BaseFont /EBCJZJ+CMMI10 /FontDescriptor 1457 0 R >> endobj 1457 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 -/FontName /NFAKWB+CMMI10 +/FontName /EBCJZJ+CMMI10 /ItalicAngle -14.04 /StemV 72 /XHeight 431 @@ -13793,21 +13796,15 @@ endobj /Length1 1199 /Length2 2269 /Length3 544 -/Length 3059 +/Length 3058 /Filter /FlateDecode >> stream -xÚíWi<Tm2e$"˃8daÌØMe[Oʘ93c†Y,Y#Š'[YÚ$KÙ*EeK´˜("4”%QŠ²DO½G=ÕûôöíýöþÞs>œû¾þ×õ¿®ë_÷‡£¦L êXR˜þ -“ÁÑÁ¢18À -ö粉$Æ6í ëÀ!Ñ0$!ÕÔ\!ü¥Z³@b2ð$ìãÀI,@`18Œ Î -^ZGÞ°£\1ë¥ff}[‚˜Ì”Š[?ïýb,Ô!¯XQ\%ì<Ö¯i*½0élOuÁ!îñšñ˜À„}y"[¯ÔÝý ±Õ[¤îÕœdU“„__ÿ5+Qø{ÉvHNÍ[y¯ÓƸæÛWôʨgy!ņ[õw„iw÷@¥½Ih¶Ò:²î,÷Å+ÙDÏ=*%1å%“-eo×jªaŸ«+Þ_lÙ×"*Áoj’‚Ôäóµež²mÉóV1xÃÍ–Vyh=bÞ™S¾§d)¾Ï+@„*Z*çwÚ¶g´«²/¹ÇÚ]$R'åö›_Ó>ÞódÂs½ãjµá+^Äuã* -éѶ•·×•”&Læ,šüqNØ!jR ÉŸ@åï}$›ª1m$Щ6Qœ~¿@öÎòf#›9ï‘¢þ[ûlO~ -L&G›µ¨èÚ}tçPVšÇ—ÌýíÙÊ3úÇåì2ÁqæÀ©T[º?¦Ã;#)1g'²&”èw8Þjß ðÝŽW¨M(ñžTÅ¡EeÏýþØg®ëᓼ£Ô%[£Úå]'L‹ÇŠO5Zívº[gY~œc°«~MN œ@¨M٘ݤ²s "Ü/4ÕB4ê·MáîZ©ÌébŽ½j§ÌŠÂ‹†Å¨’ËNñOLuc]ž[¾+^L¡Ì,Žìô/²Âu÷¦DÉ%V0$
€7zdÂ7â\Ø”µŸ:šé
Ü!ù¤êrq–/±*Õg¬µ–I¼zH!îF™ÄÙ#›yJ/íZÅYË' ³Îöó÷c|IxÝ#®æf×ÛzD·]n
Öé
wÌĨš
‹zÖ -â -ÂäažÚj?S»þ²†ÙYÝÁ™ 2©ƒã6¡ßé¹Ü?:¸¿9Äü檅ÙÖñkÞ½Áêw~åÂÄ•üugÌíórÅÍ}¶¤<:ŸùgS%rƒÂû·µ¦ROëÑ-LsºÛêíéù‡ÑÍÍéJB”°ÂŒž -rûX{ÐI`—ü•·ÛãPŽ™Ú–ÌÕÝG®ÚxõÆñeªÆ 5×ø·‚V›ŽxÞÜ‚ 8ÌÈsiÿØÞY¿¶÷
_˽ÜùFCrºÛŒýQe>ýŒ™Ebç Ê{$Al…·Æí…7¥Áhâ¡ÖÁÂeͬDÓAÛ×…Ÿ>Ø<M?žtµà0×ÿv`b†êßœ[íÐ,™é˜A#©ïJ=$Ø?cÖ=à7¦ØF—®ñèžâ¥¢?ÊHné=vC,€(D·©^²PÓ Ø{ß?Õ¬*B¶Û¼sãSUÅ´Ó6‡!¥püÊÌíê•[Kq‹ÊD
…á×
+Py -¼=<»ûyDÑ'Í'ÕI'Bû¥]¦ä]?>Õ/Ó9‘y$K=¼ /÷È\/³³äDÈ”òëtõÇçˆ'?ë:{Íù:‹–ˆºCxl¿ÊÙoÑ»ë‘à]WHK:·ëJ{¶i@ð¼½.ïc÷6¢Än¡vø‰e_Š_pàúN(f
¸¼Œt¹~òn#oå|iZŠrÒ.Uó Ãg]»F4/ÅWŽóQ6Rò»NF£äŠ9áÇÓ
¿?eŠ>¾d}GzíK¢_ôhÎ*ýî›\o•˜šì4Ïaí{Ó*¼(NQȃ./ã•3óˆ$£s©»*Ôšoú0lK/”Ï7&…;‹xÙ…y<C¶‰É=Sðߣ¾m½å¥+u¾ÙWEK¹ ”åånÞÑÜšw˜¦Ô™>]wGu’ûÃ3w§“1ïh/Ü’–¥¸ -z]×Ä6(w?.ÑŒî±Fņ6—Åôìqóÿà*–09Íùðèn^/+3}Ý%Ýt»œT¥0š~Dep/ -Hoý&ºØ3ý©EÒ ø,MVtunv´ãQçsI}ÕÞË\ÊG6¾+ŠÓÉ·0gÈg¿5(b¥HwˆV=N ¹žS
*\7[½6f‹«ÆˆU´µYãPŽyÒôþÁ`ŠK‰ OÊÔý†‚B®UŸPgÕ¢…|øÏ)NU2…Ò³ÞÒ´þb?y’ÛvˆÈÛ2n›|,¬R1àÔãº^ZŸz]‘¨Ùjd9wÕ†Ì2áZÂåt¡¾ÂNÌù ÿOð?A@¦ƒ$‡Lb!£X þ¡\ú7CþE\@œendstream +xÚíWi<”k2e$ûrYF˜Ån*ëØ:a;•1óÌƳX²Qœlei“,9ö"T¶D‹)E„F¥E©h£,Ñ©÷¡S½§·oï·÷÷>χ羯ÿuý¯ëúß×ýáÑPÅô¬ÈÌ@ÐŽÉàèah,àL
ä² DÆ6=7Êuäé +(WWW7_õÿÝÓÚš ÑêaLL=}SC +â™lÚÒ‡BŒ0?aîA4Rd³¡CY†@ù§¤¶“LcPQ"‹üÝ°“¸,¤ÓòIA±ßöT"F$8ˆIÚ´7¸~oëü+ÅH½g·ºŒ=f¿pUáét1¤`§³|H…¢aÑŒin#ȼÖo¥ÓJ”,EÛt“È3ë6äjI©dIA‡T…Wȳ›±kßAôM¡»²Èç¾´‰¾êðVµjÖGÃÜæ¦$!…)“°~Þ÷ù‹p˜¢rUI°Ë‹!m3Ù…Ä7.ôxW,쯇NÜ—/²õbÓíZ[}Eš^ÍIÕ´I]¶5J¸“bçÔ¿Tô©0Á¶ß¼¨¿TÙBY8Ã+1Új°=ìžnïY/DúÛÄvk#Òg¸Ï_É'yï©Rë,«,}ÓQþ èf£¶æ™¦òÝÅŽ}¢’ü¶!è@M¿|ÔXá-ïØ•2o‡3Úlµ`Ô'äŸ>åJþ˜ò‡üBX¸²e°jA]wf·:û¼g¼ý9yñÂ~‹ËºÇûOz¯wZ«1#|ч =¡`šó`Sñ掘AøÕjR¸âºä²ã_øZîD{'ªqÎÈÙ}°TQ²Úú†#ÝGwMË·íý,"5”:郮òñ˜MòìL~}×o3ü³b–€×ÆWkæf&˜ËÞ[«³o¾T:¬•@‰Ôøä¡ÚHíƒÄ”¢Ë*xkùg±“Åž¦üwn뢎¡ÌnQ‡ÚXÂ~¯w$¾7?ÑûÃØN³Ê#-ÿPЙ)ÇíðÎåMO²Ÿï™y–ù²‘¼3 :Kgjb¯ÿÕW<öHï~¾gDAskJ,îl„œþæÏÞ†Þ/-Îå•Z>EË_î}a7uíøõU²ã
vÕ7ו–%Lá,šþQ'ìóFΟDåï}(Ÿ¦5m,У1Y’q·PþÖÊvcÛ9ß‘â¡ëûìN~å_€5„›.Ö™Š°G~!Z]eº·Ü(ûÝï9IG+é¿WÉmÕ3—Ô]׻ؼºHMabñ +–øږƾ豜5}‰¶y¾jqõ9éÞ£ºw¦Õx1œâ°û½>&«gæaÉÆui;«4Ú¯ù1ìÊ*çÆ„[“#]D|ìC#¼žÂ»Äž*îÑܶÞêüÅÌ&ÿœK¢eÁÜBKPÆêBïh^ý{ôŒSfÜ ÊÓI“hëùà´äíéô{ês…äƒå©ã‚>W´1F-ª}ÊÇ´cûmñá%åqý{<?º‹%Σ+¸õÞÎ`eeHPAeØ禩DP
¢ªË;Apã{é+K8Y7/ªõÈJÐMyrþÁ‰DéÁÒÆ2_òõßžc(õ2+d„¢NUmëfŽ<–1 ê×OÌ'>¬¼nh<!f¦”0‘&iá²›,.¸±€Ý-¼ .ÞY¬ˆ%O¦¸*¤ýþîu¡ X‡\oÒ€}ë…‡uókúî\Ürr(aÚNt¢Êµø.`²—=3”VX,+ˆËÖ6eÅÖæåÄ:u©K¬õ]áZl3¶ñ}q‚^¥C1ça1+Uö†ø½"ããêÇñT÷:õ"éÙZ‰¸-îZ·¢ÖP%²'2-i¹ÉÓûGBÉ®¥‚~©Sw[N, +y¹×|FœÑx€òã>#;×ÈÉÎúVmH×ù‹ýøq^×!oË„]ʱˆjå û2÷Mšü¨ƒšMÅ¢æká•Ü5²Ê…ñׇU3„‹zäÐÿåÿ?Áÿ‰Yf(‘alè‡réßþ/~@¾endstream endobj 1448 0 obj << /Type /Font @@ -13816,14 +13813,14 @@ endobj /FirstChar 97 /LastChar 110 /Widths 2829 0 R -/BaseFont /YDHODG+NimbusSanL-ReguItal +/BaseFont /QYCQQR+NimbusSanL-ReguItal /FontDescriptor 1446 0 R >> endobj 1446 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /YDHODG+NimbusSanL-ReguItal +/FontName /QYCQQR+NimbusSanL-ReguItal /ItalicAngle -12 /StemV 88 /XHeight 523 @@ -13847,7 +13844,7 @@ xÚíxePœë¶& ¸Ú¸;Á‚[p—à4Ð85 îîîîNpwwww A‡½Ïœ{n¹¿æÞ_SÓUÝõ½ëYëYú®ª¯©È”T™DLl fkçê`afЪ«hÒ100þKò— ÀÈõŸÈ›¥£…@ýöಶµ³!oÿ׆ª _ -0™"±(ØBÞ\hÿïºÌü?×äÿÿ4ø¤½ÿ½æþ{þÓ%þïÞ秖t²¶V +0™"±(ØBÞ\hÿïºÌü?×äÿÿ4ø¤½ÿ½æþ{þÓ%þïÞ秖t²¶V ¤/k`T\§§‹íÝ@€]QZ~®w¥m§Wrðo™áSU ºî\ÌUêVn†]_ý"Ô”cÍp÷ó¹uXm.VÝÍQeýÂ'xâ_ç¿é¼)œs½q(ïìÐ<“j£pÛ0ê¡°ªóŽŽ©ã~ßÑô
ôw^Âuï2dF!R}v†E¥ó¶Ï$ÒV/s¡”ÁDÖùE¾ìŽêâÌMºÌ©œ}‹9YBb]™ºý^C÷§"mÇá
åPÛ{ö»XPð´Ó1ðegçB˜ú”žpDØj]Éy&W¢…>**g›çL·V醤¯‡¬oöÓŸz ƒ—•å4Lm¯`o¼.W¯9ú|Þʆ¿Ñv. ©Ô¼~íkLMÀWrôêk¦ÈiÂ~©ŒK©Kíw¢ÏŸŠŸÇ}½^ã¿æ²—BÔ«¸<_g-wªðÄ·ì ŸCRkÞµTå³u‘£»ÒéðŸðˆ«)unG%E="Ó)“%KÜ_½‹¹„È& %*9, …’Ö¶v£†íkEà8³»haøâ4-ï㊚*êFŠ+̈”®•„I÷\é˘eœÕss×·”¯ø•«ª•!´¦2cí7Ôaý¦"!šÿªáçÐ…tgšòî¹·þc|LDÉ\‰¤ÈäìýYX’sÈùƒÆwe•x¿µëSñ«ƒb+½:’3¥”ª¦åiC·IA(Om”9ž_-í•òÚÁ¶–— žþœã®°‘‹s§É»™x§J¢àÞ‰9²úŠ$cÙQ¥R›Æa†·îk5Árk(q€O^XÉ# Ö%o¯ÇRé«Ž*í÷ÛŒþØ©§TZ"žÓr‚¸ÌñÑ~÷FËO,£àBŽ¯ýÐ=ê±+¯×ïˆhÓ”‘ô2š$ÞæJ•œE¥œÉ˜®‡‰z<ÒX?w’¥n°@2øÛ,g7wå‘Nè3™ëýmäƒS ¯yèøN½¢Ø¯K>™G @@ -13885,7 +13882,7 @@ eïÏùѦÈ4Øk’ØÞ±Ô×äÖ¢HH ÝÞ+†¤fÝå¯Íc
–«<}³ö^ñâi“ó”RÇR×z.©ÙAeJo¿tW 1¶ ”7LãH¨žÿmÒtƒüûÔÏÅ.Û`–_Dgç3—Þ¨ÍÜ®®,=P:>ãËt—sÕuL*$Ýs¯¿i¡ÁyÂi®6#9š3}3ôŠ$ÍÜ<>UÇótôf¯œ'HF#ÖÕKw$©ÏbùBeáù([Ó85=¥†Š£üä ÖY9Îü`ÉÝ4Á’k;÷¶îæø`ȃ#vÔ5*r>c¢œ¥ö³hòwNkCÅ÷3çé.èÔS©Ã|©ÄõÂ0dAEóÄ\ÍH,vYíÉs_‚ÒÂé>˹fPwË&B;lû…f‹ñÝ6{¸ùíÄ¥¾ÿ ¼Çg\7›-jÿÔ°·†i~>ú™›Îuù6¢ÿå×r®›-i°ÿçÅhÏp4u{ýËXnÒEô¨Y†l<Þ«`[Mèø÷MgšŽ]‚½³¼_Kοywø¸Á÷A´J’T놰§—Nµ™DŽ;f£¿ØûüP2
y•Xm#±6jÅ;`ÔV_ÚAéÀi@g>GëÍÌSòK̶UÐó¤á¨-ReŽM‘Ž\ýè¦)›L¨³ï-šÝI†:»lŸ^>k²“ú¼œ¼Ågä<\F-U:üDˆ‡Úû³qEùÅQæü›¦UBw18„²¥àÉŒ–žyJßÊ ª²´Æõ÷>Ö눎í•Eâx¹èµäW<X1é‰þ¬'®†{¥#Óxјt¨LUÒÒŸ3”Ï´„6¹wrøxÍwÃò†¤k²Ä͔׋–è:NÓë¸OKî¤bôÊêFmH¤ã\Œ»Ð€&1nÒ^M<úJiÜC+W˜‡D- 'X,þr¢TßÛek)}sÊKI‡£à"ç¾›OzÕ¯ -c•|z{Ù†B ¨À‡·íA?̓9¨„&Þ¯žg¯ƒQÞl6…²t1£ Â[€DÕÙ°|$–,㞸. yj;ˆO<<¡u«"Vù!C‡ÛÆî7+cÌ.™ÔHý‡H¯F'®¯lšöÝ)I³…ÕŽ"î…µÄÛ¨¿wù££ÍŠ(É¥ØKhùŸaP{‹jáÁQ.’OHÔÃñ<ˆìŽ¥>Þ¤0á¸mïÜ„ÏuìTyÃ"›Æ£]C;žëkXÿ›¤ÿOðÿ±5è +c•|z{Ù†B ¨À‡·íA?̓9¨„&Þ¯žg¯ƒQÞl6…²t1£ Â[€DÕÙ°|$–,㞸. yj;ˆO<<¡u«"Vù!C‡ÛÆî7+cÌ.™ÔHý‡H¯F'®¯lšöÝ)I³…ÕŽ"î…µÄÛ¨¿wù££ÍŠ(É¥ØKhùŸaP{‹jáÁQ.’OHÔÃñ<ˆìŽ¥>Þ¤0á¸mïÜ„ÏuìTyÃ"›Æ£]C;žëkXÿ›¤ÿOðÿ±5è endobj 1385 0 obj << /Type /Font @@ -13894,14 +13891,14 @@ endobj /FirstChar 35 /LastChar 122 /Widths 2830 0 R -/BaseFont /HSBKPD+NimbusMonL-BoldObli +/BaseFont /YIUPMF+NimbusMonL-BoldObli /FontDescriptor 1383 0 R >> endobj 1383 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /HSBKPD+NimbusMonL-BoldObli +/FontName /YIUPMF+NimbusMonL-BoldObli /ItalicAngle -12 /StemV 103 /XHeight 439 @@ -13917,50 +13914,49 @@ endobj /Length1 1608 /Length2 7939 /Length3 532 -/Length 8790 +/Length 8789 /Filter /FlateDecode >> stream -xÚívgPTݶ-HPPÉIhrM‘œirNlèZº›,Q@¢ 9G%#A2HÎ9ƒäŒd âC¿{ιõ½óëÞóëÕÛU»j¯9çsÌ9æZµY´tyd K¨"ÂÍäåЀÙ[:£tÁj<²8pk&`a‘CBÁhÂAŒ†>B! - ³‚: -uû
€¡ - sDn³jÉ+þÅmFÿ΂ݺëÛHÂÊùwI|·0·^4æ€ ¡nèß¹,¡ -a%ð21% ]F‘Ñ5 ÿ¼ˆÕè˜÷Iï}¶ïGD³Obð²hÑ‹ëÒ@ÞÊ¡g7uî“;Ž?×U87zZÈálÍñЃ,Z/&ŽÖìG¬
"\þ|æy„I»†áž‡jKØ&Oø
6V´uÌs¯ï>jDâ~çðerÉö%e>w$ò¶J¨ˆ$k|X‰A\–³³Ëóõû9[GowWgó1Në:
Wz$>‹˜6!k˜¯S:”‰~‘g„e.0¦ãclKP«>»àÂÌ1yÕ’ ÀdÿS¡Õ¬çn9´éçï©|e>·'ëC‹›f§—ЛÙq€úYšµ«„8ë$fÚõSëÁ·RÞoÛ@*¾«Ê¹AÔguG…*|«eB‰;}ƒv©¢]ùßÖÒï6”‡yÛ}sx/Gj¢T«$Jñ£•H
âQ–®‹B~RlEÛ1w.ì*Çbr|¬½}$nÖ‡·Gs]> Ã?V1òx£+w¿³\õ9’e‡Ð†ŠØ¥ÍäÊv””7œœ¸äNÑ÷«/ùŠö.‹ú…&Ð)âá0äPùÝÚ…k¥èé¹éÛR§ö -^8³÷&sݱ|&éŸî#6cÕ¯‡‹úœ‚œEë=öÚÊÔïƒ.Œ}(pÚéc8hXÔêëeM±¸ÄÈpefI|š -8xÏŽo‚¹
Lœ¸ -R!ß1Âr<;Þâ$ûg2³£§Ä¯Cǥs‹©Ï¹å‹E#‡„2‰ó9[ª«eÖb äBñÇ›;qäë4‹¦y,'XÈ.ó¹^Ûû¾çm}l3S@+'éY“W[ZTç¤ay þR#ÁWeôùì¯w<Ààø!ËêHô‘ªÝ°a2Y'ŸxVc[ЃÖ̺«P‘|m÷L¨3X´•¢|FSp õ6!wˆ¥qiÍÖ)/)y4ž^ÉdÏ—“¦'»À+Oð+Wë³Ã/HŽõ°8³:̨%¾0€°nô™¦RºNSX)šÄ©wo¸Vá"n®¡U®uë.ýe‡°ƒ5†âÁ„v0äÓ=̲е”ž²ÔÂtwï‡tKy…‰ ö€À›Á²Ãí/hÆnfÔÛYÏß35|\Ã)͹b€½^s$QÛ<.'DÑ -(^‹òp߬h7š” ~Ý¢ñí‚…Ë.^,°‰ðzÈî§D€×û3ÊZú’|JRA.KÞ&[å/0õî¼2³–ÛOy«óCúÒB«e€öžt‹:¹ïäCA2µÅËV‘ÀP½'Ûz”êÅŒ~,ÁÑ’ØAkQè -Çö7=s`[šzþáÞ•MåME÷¿€uG–h‰+÷ÜKI•9º¶Z¶ý3h#`+]¥J¢æ·šõ¬¥¸¦4G‹Æä5ÍɦŸñ
¨/„~
2…°ëIš%ƒR*µÈ¹ï¥‚CSž[çm•&ê,œ^ˆ®ül™ò‰0¼3F£!âù2°gáȺÝYzñ‚Ä^˜X@°æ¨Í›#díQ¿¸ ˜ßÈ?'ty…Š,ÿˆbx_¸Âæ••ÌDC«½¬}F0j|{¯Õ\þ˜ßsžù¬—}8$QŒáinúAµ$o<½öR•eµ#"Uòe¥rÞ‰KÿñÃ=Û`GS"“H®bʘ#6W?³æ—å‰ÖÎ+ëíø ·¯ô–-ÝI{ˆQeY:BøÂb¢÷‘>:_/!€ÐéË@íáÞÑȬýu¢‡3èµ+òLn¯óqŠq`Uúmò'ÄaeG- -óŠW¯C鶰€®ô -„©ÊìiÝÇ.h™³
6'¢È6 -VÍŠ2Û71sz8o+VPÚ^M£õ‚¨‰J®ÆÕe/ýéœGÎ>Î -òÎqE„¹¯øç*+nû…Æ—²;OeŸöY:«*š“ïgœò'\Ý7"µkûl‡ÉqèËÑÌ'ð9‘Tgeix¿qVV^ÐÅnOiêlÄ&Àh1ÿ¥n† Šo-R’È!î±~x“ýè‘·ÞøyoÏõÏ4íÙ{¦Å\4X²‰¤÷•Ï´±ÝÈ/åµ½¸N%{’;4u)Ç!‹=íè¡ç"Â3¬¶Ðœš®`¬õ<xö¡Øà - 1±#-@ëÓóÄ<ì¾âæ©)[‰Ø“9QuC—̨é-ûFæÉ€?›ëþYû|96£àj’òÖåUNºnî…XÓ°‰Ä·ÏGÑÅk'uÁêFd×É>0¼f»åæ6ç-#vƒl|¯göÕšŽùí:qÄÔyN¿3-y„¨Å–UÇâ${Læ6¬ÆÚRøÉ™¼ó¥?"áZ¾þþË\øQ>È” §{õîû7l] -™mÜtW?e‡ÌŠØÇRXÝŸ¶«
qÐNøb%2t)( æß-Ö§9¢A¸‰Éš2žŠŸ±;Njf:¯ƒ9NÃïÊœT)š…ùïš=l“'v!V‚»ú7?êÑš\“Äk=ò†º¦ù^š-2~ë‰Uïs‘.»o¨ËªüaMfsÍ%W2b+¯ø¾ -(Ì°?ø6|Kú‘œ™µÁ86<6zlDÌ)®VésF¢¹¦GfôZ¸èøJü
P!HlÆ<¼H›8ºîeg©õ/¶D-¾ú‰¤÷ ã›UêYœqáÕ±ÇøË -*Ïp›Â¤AwÓ'v•ù7Vš4¶¨ž+jÙÚN9dB<o¬L©oÝÌ#%páÔn³òäAH41ס
tö. Zm½0ë¼r˜$‰®XrJJ&¼è
¢—Ë™¯`¾eM¹»3µ¤¯û_ê÷ðö}d½)(A=À_D‰ÔôÛòbN¿Ø}® ÆÿÄ5,¢Óc9A7!ô{•K*J^ŸÀ~™j'÷%UYÜ{ñ•Ý‡å]ä"Lžïxiå2¬Ž/ïb…U¸ƒjå×)4§"ò§ªÓ -?Uôü¬Ë÷ -žä²5Äõv!.[7$›\ÉÌù ö)%Ü-DÇ9øÓ\¯äͯø7F Oâ×ÏžÅÚÅ8i“£òÅf&\†
--â×6™…ÈXÓØø,ï¾ÆÇ„Ék}YÆð”êA±<‘‹?qâoYêLÁoȯü¸"‚˜‰œñµŠýVw$€ÇÞ5-M¶Ãú&š{ŸQ}2Ñ»5ãùáö¶xĽuéBÿ;¤»¥ªïÕ\rþhüæx¿Í?‚^iºÇ&‹ ÕCžËQµb\¸THüe%¤¼®QÕE²üO¥}¿:y´ÀJ ÛAHù åP¤-´á€[kNÔ/ˆ<Í©ÁEÁ‹zHÃ('¿8/ÖÈ><ï·NZN,±$íŽÝ\ë|.ʳ4 -Úu&IFlµPÈ‹˜<>ê¼çO}ö•>ݧ·ðgžF±;YuQTˆ §ÿæ‡ ¬ßôtD¤ûfP˜{s“cÞ·+J .>xi¾’²È¦{¹3Åš®Þ~—ÛãŒd@ãa‚äÄ·Ž„kï887Kp¥ôRXŠCãóÑ°áTîEQæü^w~@³ßG±¸½Kë3rÎN¡ÀK’jùÚ -}~ÏLcÄçt>í ÔN$c÷¬¤úœ ú=nÆ©ngþõžåÆIE^ÕÖŠ -!dÌFæö/¨˜õpŽI^ø©Ý©²‰µ([|«Fv/f»H/>_!üËê¹ocG¥%ÅÉs5“•ŽnÇ5¾Z‚ÏÝŸ¤±ðJ©ýšžÇÝ\UËúö¡
î[Ÿ2Êíß2û²Qx„úûs‘½¯Ø«PU XäxŠnO -IÇäœ÷îÍóÍè v ó4ýð
CihTðÞ²° ÇÒf%’2Ž -Oyâ|g܇;Òðh¬Ù#1|éôë6Ög²›œ·UëáÇ rk_‹öw€º«¹j!:/œ*¼È_Ô¦¶S+³(#>ûpKÕs%ìÛø“hj£ê·ßN -\O–ˆuõ–.½½h8¤Ëµ[%-n&í—o{Ø,OJ‹ä k ƒ$4Œsz!¼¢‡bÃ7Ú‡vçˆemÝÊ5Hcý™’W¤uÊTãO³‰³7 †³Ê;B¥È†“ŸÌõáõý"¡dËUŒtúÀóñ[í¹0!Ã<Ú—(U½›È>ä9íÁ;˜Ö€7¤ÊÞ:À¤Õ²y£7ÀÔÁT}I”C¶–‘Qîì¹È\·ÞWõ3›Ã½ZÆ™&ÝhÄlÊÞK\o`~~çt!•†ó(à'¤§tq Y†¶bëÑ4r3ÛDZëòa[ö_ó>(ÁÔE7 bO;8<0¹8Ô4;Õª>*ËVëu?+«h–H½~šq»x/·}$ãºÊá+¡V8|ýƒ!Ù‘`Ç©³Mò×ÎàåÇøQÝ'ï³eò^JYõžâ7:¯?¾kñs”ÛqWç®fa Š’Œý4>§ ÇZ'úy]Ü;_GdRÁú È•†bn¥æf§çƒ\Qù²1³7› -3ú·<Ȉ›h¥=¯`·C-ãZ*¾•‘Û3ØJ`+>…p˜;w cÁ¿ù\åµdf؆:îÉVÂÊ£QÏ -Ló¶Ú±{iC¤üD8þúñ7.4ß=£Nƒ~ØA·™Y¼ŸíQíì -;dÕÚÞùYÌú.ëÅ3¬m -Œ·Ò'OܧZM•ÈkÚEä»óÔAøV¿F+áÖØ\7H”ÕÁ¬–ÞÙ‹s± -A7µ¢¿ï?å151"yUF„I×íòÏfwÊ*Q;1WG¬ä‡üÖWG9 -dòú“¢Ï¡ã6–±hò¶þ|áç RÖ/?‚jïVÈttf=]«mîXCh-»E²`?|(“躃Øçw¹©”]“RÉÆè·¸¿½ú‚[O÷^Üä'^m[ñ™4]aÄ‘þÖ9ö5QºÄ”ÔbcÅ‘n"¾ÿ]½GF&<ç
¤3dRµ°%‘ ”Ê.ÓµÉÂÆWòQmw)‡GÒDa™e¹ÔÖlNA|¦Z–ýÒ½‹Lýƒ÷ÛE}b\ÝîL» &épƒ·gr[‹÷šßžz÷ìòdÈĺ‚íüë£-«‡Z‹ÎîpnöŒ´Ð|˨) 2xqô¦S=w¶Ã†ß
jIž6a›6Ä.OSy]ÆñþS§oa¶Ô«ˆÌ±â£Š51r»%ob2üpȈEÐ&â§ÜÈÕöIòÊp¤ì‚è¯ôV²íNæçiX¯Ô²»Íæá‡A$Ñe$D{òD¾Ÿû‡‡';,Ög¦•k\Ü Gái3¼q¸Qþ¥L -Xæ"¢Úbò3¸ý]ub7¾‚夨õù-ÅsÅK>ˆ<–!!’=j‰Á
bê÷](åÏi·t9ù -KÆ.Ha½+-Ε[åòÿÑÒñx Ciif|-is \‹¦ÿ€|6±m¦ÍñŠ =“1ä`K^!y9ÊÌßIjX÷žXHO~ûLýì«œÈF7v—")òï@µW™[zb™®ÕÚ4“*ý÷L´ªŽœ0–¯z$¹Š/‚„à{>UiO³ýE©²5êæ÷”t¦=Ä;î -€¯À4?œt€sTeù›!4J%h¹‰¸—ŽQÏ:µ¿yÓ´(kY¸³½M>X‹–
sôqÀirÐÀ³8!ÂùÕÏS€¤Sì$óÅ$R÷Ñ•amPÍ$?çÔg•ËŸ˜Vd[ƒ1ËiÇO°<Ø_¥¶%yÐœáZ.›eˆô¤Xþ*Iò{()õŠ_¼¾êW÷ºÛ£x}kã¾ããVÔ³Ö–I͵'EÜöGi‚õÂV;áåÏ¿Ø×6™+Ý$Éž {ýTö"1Ðœä5v-V$ÍlÂÞ¯«ª›bݦ´³ã)º§ÊoS6”hLGñ…îÇ,v%¹u©I~®]%¾)Ñ}ú‚¸2¸ âoJ°]^¯ÿRÓ HmØ;Âúž -8>Ô -²© -3ã½+ôÞÊ•÷aˆlª Ïn×–OBw:ëÌDöƒ^ቃ€¸Rn¹šd¢¯ÅÓò;SÓtd®ÌA~zM“èRVt}õÚ+'˜ †4~}µ÷°}³íÚš[T:áµ%|Å’Q"èXê³ÚÎÝ9"áòç0Tw³È‹d·¿Pô@åÉ@ÅìÓEâòxOæî¹Ã åÏIXUb_4²üQ
¨:ù©^\õ47ãÇU¸µ&²ðc
óŒA«`á0Ôýµ˜—™žÌ‘¥ˆß·%¢y†.Sz¾M²hàž·ãý°óg
#$SÿçÅOÁëÏàBø[yã¦5åž Šq(OÜâƒL#‘'Þ/ãØ«*ûü©¯ð5X1œæ)ol×Ós[2L&³d´/øÿ—ÁÿøÀ -#Ñ{0ÒŽàÿ +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 +œ6B†NšVµúz9S,nq2BÙYÒ_+Ÿ¦Þsà›`n'.@b%iî§ZüwœJ¯îsúð{^¥’¸úCHW—Z“èŒÁv,!ieí1«¥O˜–©í[oF‹£‡y‚öƒÛ¢Aùx@”SÜeMIƒZ| +úˆJý€•<.%sõJŽÅ?ANïÝy¯2}oÁ[+B”z1’áž ‚`Ïtf¶¢tÈwŒ°ÏŽ·xÀ©þ™Ììè)‰ë{çqéœÅâêsn¹ÁâÑÈ!áLâ|®Å–êjÙµXùPüðáæN…:ÍâŸiËÉ#V +.¡Þ&ä±.µÙ:á%%¯ÆƒÀ+Ùì£àrÒôdxå ~åj}vøñÅ +E“õî
÷*\ÔíÀ5´Êµ³nÝ¥¿ìv°¦Õ°“@<˜ÐÀÁæ„|º‡¹Uº–ÒSCö¡•Z„þîýÐni¯0q¡~‘ +5¿Õ¬g-Í=¥á`8Z4~ iN6ý”@}!ôk °)„COÊ,”úP¹EÞ}/šòÜ:o«4QßФháôBlågË”O„á1
QÏ—=GÖíÎ2‹$ö"Ä‚B5GmÞœ!kÊ€ÅÁFþ9¡Ë+TdùGô“Àû"6®ld&Zíeí{4BQãÛ£xæ +Çžó,g½Ã!‰âŒOòpÓª¥øℱ—ê¨,«é•¨’/+U²ðN\ú_øHîÙ;š2™´@r•zPÆœ±¹ú™5¿,Oì°v^=³ŽÐŽrûÊ`ÉØÒd±‡U”£'„/,&z‰â£óõ¾ÔáÌÚ_'z8ƒ^»‚!OUáö:§˜VeÞö¨|BVvÔ0ó+·–0ûÖÓ¶Ú,V¿š J,â^´S´+kNï¯s¥8¡ËÐ f´“[„wO¹¹Ržáè.ÁFFM„l-¿?®f$i½*Z§g´É-@$ˆð‰´…G©3ªV;eW„ôÆwœÃðÇkÝüÓï«Ï0¾B¸9lZàâèàø3x?Üßj¼¼ß· E=_a^ñêu(ýv +-gھ蟖¤§I„²kZKéä”ð +›û,¥ñº“ÛýÙU@žXÒÖrÝ}Â;´w`D.à™Œ«ž¥ÅÇ3\™»ølð…Ébñƒ¥‚U³¢ÌöMÌœÞÎÛJ”…¶WkÓhý j¢’«qµD¹Kz瑳³B|óG\Caî+þ¹*ÊÛ~¡ñ¥ÎGÙ§}–ΪJæÄäû§ W÷HíÚ>ÛÀaòœúò4ó üN$ÕYYšžÇï_œ••W+vqƒÛSš:± 0ZÌ©„›a‚â[‹”%sˆ{¬Þd?zä7~ÞÛsý3M{öži17ÍÖ‚\"éýGeã3mì7 +Kygm/®SÉçÍÄ\ÊqÈbO;z¸‰ð«-4'¤§€+k=ž~(6¸hLìÈÒúô<6»¯´yjÊ^"þxNLÝ°Ç%3jz˾‘e2 ÃÏfĺEÎ>_žÝ(¸š¤²uy•“®ƒ›{!Þ4l"ùíóQtñÚIÝE°ºÙu²¯‡Ån¹¹ÄùÂGˈÃÄ › +?y“w¾G$ÜË×ß™‹<Ê™2ãtÏ¢Þ}ÿ†@´yIGbc‚²Kê·HŸ|ëÖ
x°–Ñx½Ùþ2—€_M”+=‘Û~d˜„“•/tŸ†ò³vLFd*°Ä¾ù±b«&}¢¥çË/à¥2?‘©"B¾,|BÊ1û楛æŽÈkf}°¿Åø«þŒ„g“IÆÞyã8‚©.ͲmhïF`”ÜN‚”ƺʨjÊéž=wþ¼æuußÆ?ÀTÓˆ½~.%º·2¢_½¥’()“5”ôe-èÍÜhxlšŒS+é\d®ýÞ¢Ïd=ºñbfýFÇO¹!3‚"Ž±6÷'íjCœ´¾X‰Œ]Š*ÅÂBùwK‡õiŽ€hn"d²¦…Œ·âg쎓š™Îë`ÎÓp¦»²'UJfaþ»f[Ĉ]ˆ•á®þÍz´&—À$ñZ¼¡®i¾—fG‹LßÇzbÕû\dÊÅï격|X“Ý\sÉ•ŠØÊ+¾ÿfÜŸ|>„%ýHÎÌÚ`=6"æ’P«ô9#Ñ\Ó#3z-Rô|%ñ¨$¾Gc^¤‹M]÷²³Ôú{'¢_ýDÊû1éÍ*õ,θÈêÝþ²â³Gƒg¸LMa2B Æ»é»*+M[TÏ•´lm§2!ž7V¦Ôˆ·nŠæ‘’¸†pj7ŒÙ>ò"$›XêÐ:{—¶^˜u^9Ì’„‡DW¬9%%^ÑËå,W0ß²¦ÜÝ™ZÒ×ý/õ{øúÆ>²Ý” à/"ŽDkúmù0§_ì>WTxìÑéƹœ ‹› +zƒ½Ê-%¯Oà¸L5“‡û’ªV,î½øÊáÃz‡>ò&ïw¼´rY6Ç—ÆJwŽGƒ±Â*ÜA5ƒ +ëšSùSÕi…Ÿ*z~Öå{OrÛÎâ¿z»—’M®læ|Pû„î"‡ãüi®WêæˆOâ›Ð'ñëgÏbíbœŒÉQùb³ 3.ã…ñk›ÌBd¬ilüÖw_ãcÂŒ´¾,ã
Ž +¢&tG÷ü©Ï¾2¤ûôþÌÓ(v'«.Š +òôÿÑü0íû¾€Žˆtß +sožbrÌûvE ²ÁÅ/ÍWRÙu/w¦ØÒÕÛïòxœ‘h<LšøÖ‘píÇâa
®”Y +Kqh|>6œÊ³(æÀ’ßë. + a‰ñµoWkrŸÔgÔÅÖº›Ð˜wÜ6îÂÞN¾Ùö
i± XüÐ~ýÅ´á´ÙÞVóÞ³6÷³Ý>EŽ +‹^±Šî±nl#šñ‰65%,ç_°Oê”+µNý%Ùz¯>W7¶]•fzã}A}H›ÎÀSÝÀ~ƒQrNÉ)îs¬þr]Lf¸á“ +<á¼ØËûò
Aê)¡³k¯×ývuSøGlVªs#Nu¥¬·OŠE•?.j?øÿ©ÓwGä“øݺ23oªkvSÛë>Ñ=¶ Ðz¸^"èÁ8¡-òo*N¡žº3Xl‰eÓk‹þœ%¿_> +Ý‘o•~~æHj¦ä=ß‚§§Øç÷üÁ4fA|Nç“ž@íD2ÏJªÏ ªßãfœêvæ_ïùQÎ`œTäUí`Ø@–¶Y™i"Çø¡Ñ=¸M×g•Õ´1š:Uпƒfèò©ü¢hçˆ Šl`‡N¤·èç«s¼„klbhL˜:g6(皊…KQ}ÈÞ]Ÿjƒ+ÅÁ7„,IL$¥<³
Àãyª1ÕÓ¬^Ubó¥s¼=õ¤¯æ-_ãº"/·ÒøìX¸¶å¤)"<XŠxÜ*%Å•€,Kß‹?¯‘¬’ÿ„Ç#8,Gi§ñ +D¯°4Õ4øO‰h§ª‚Ã*÷)É›%ŠØb~ø-GÈs“I»øNà9-ŽSqÈÓºD
{Ú½S\pzùÃuyjD¡«†k!ÈÅ¡ùð4yªQemˆÿÉX‡Fiomß¿»jÑÄŒŸ*m—´Ã”8Fèc…ךÆàAÔÉÜî°’Z¼5è篫a¸”dñF~²á)ž!“F³ò±Ëâ7£gªØjB}X€‰/‘'™“š"ZtÍCöEqË’¼R7ö¿Õð®ÒÂö@.)¨F…t ‘½uŸ¬®%Qò«§µEp˜Çd€™ÑÛkï#ÝýFø‡‰0A³KE*3Æ€F ‚é®0BÖLqÄ`nÿ‚Š%P爉䅟Ú*›X‹²Å·jÔi÷b¶‹ôRáó"¿¬žû6vTZRœÌ°T3Séèv\ã«%øÜýI¯”Þ¯é¡ëæ®ZÖ·mpßú”Qn?ø&Å—Â#Ôߟ›ì}ÅÀ^í° ª"Á"çt{RH:†×¼woŽ¸ÏhFO°™§éç€oÊC£B÷~”… + sœçã¸!q?Oƒ¶•G¯îW̳ŒÔ)HænÉøoÌF–A£Êå{Ç‘æä8£jýäUu;W+Aà¢ïóÇ;X;{¥ð”ÇÎwÆ}x"
Æš=×N¿nc}&±Éy[µ~œ ¿öµh¨»š«¢³ñ©"Ì‹üEmÊ`;µ +Lj +â³ß +Ì Q=w¾?‰¦6ª~ûá¤àõd‰xW/aéÒÛ‹†Cú\»UÒâàfÒ~…¶‡Í +¤´HNú2HBÃ8—GÂ+zq(6|£}h`wŽXn‘ÉÖ\ƒd0ÖŸ9yEúQ§lõ8þ4»G“‘Èh(1›‚#Tšl8ùñ\^ß/Jö\¥H§¼¿Õž‹r2Σ}‰RÕ»Y€|áCžÓ|ƒi
xCªÝªÌZ-›Çð0ÜJLÕ—D9dkùåΞ‹üÀu!!‘}U?³9Ü«eŒiÒF̦ì½Äõ–çwNRi¸Ž~ÑqÂzÊ—eh)¶M#±M¤µ.?¶%aÿ5ßóÀ€L]t“ö´ƒÓÈÙ‹CM³Sꣲlµ^÷³²ÚfÉÔë'7±‹÷bqÛG2®K œ¾’j…Ã×?“ vœ:Û¤~í^~ŒÓ}ü>[6ï¥Ô‘Uïi!~£óú“á{±±?Gywuîj>S–µ¿ƒÆçò8CëD?¯‹{ÇéëˆLŠ"X?¹ÒPÌÔÜìô|/*_6fñfw +=ÂRŸó>ÍjóðÔv)Ùyÿ¹[G¼Ü5)…ðwÃä¼Ar«òqsV +…üЦ^o{<´p–…p¤(„¬Ý¡òž#% +o–›.%§ª¿ƒàêÕÎ*4Z®÷„&§xás=G‡ü<ṼǕoÜRŠÂò7ð|lä”güâ(l€Â(Ù‘(8Å|)ÿ¿wÆô/þQL™uG«ØâÐÏœÎÎ~N*{cÀt(û6HÝB=viˆÀ%ŒÐ/ÌÐà>^P䶊ŧ¡¯ÕrȈ=ÂÆé2¾ldÔD4“kêœÐw§3\Wd†@$B}vÓmwÝK&à#ýÁ?¡e6êœÿ¸¥*IÖÔ*Àií¨²Q„É¿åAFÜd@+íy‡íj¡×Ré¬üž±àV{ñ)„ÓÜy¸KþÍç*ï¬%3Ã6ÄÐqO®Vîz +Pdž·ÕŽÝKcì" ÂñקÃ߸Ð|÷”:
úaAÞffñ~þµGµ³+ìMk{çg1Û»tîO±¶)0ÞÊœ<vŸj5Uq"¯}h‘ïÎ[
ã^ýŒwXcsÝX YVW³Zxg/ÁÍ&YÜÔŠþ6¾ÿ„×ÔĈäUu&S·+0›Ý)§LI4îÄR°vò[_•(ÉëOJ¼‡ŽÛXÄbÉÛú󅟃HÙ¾üª½[!+ØÑ™õd¶¶¹c
¡µìÉŠaüð L²ëb_Àå¦RnMúY6F¿ÅýíÕ<úx*¸÷â&?ñiÛJÌ¤éŠ Žô·Î±¯‰Ò%§¤+Žpñýïê=Ú02á=o !“®…-‰NØ ží2_Ûš,l|%ÕvW”v¨q$M1‘]–OmÍöèÂg®eÝ/Ý»ÈÔß1x±]Ô'ÎÝíÎ<±úa’'0x{&¿µx¯ùí©wÏ.o†l¬AÁ +Øο>Ú²Ê.ÔZlvp‡k³g¤…æ[FMIÁ‹£÷0ê¹³ÕvœøæhPKò´ ûäx´!vyÚ³×eœï?uúfK¿ŠÈ+>ªX'·[ò&&ÇŒÈSm"~Ê\mŸ$¯GÊ-ˆýJo%ÛÞêdyž†õJ-»Û¼`~DÒ]FB´§Aäû¹xx²Ãò`}fZ%±ÆÈr™6³Á‡å_Êf +í&2PƒóuíIŸ[^|uÊàïíŽl«0x¦ŸøpÙ(ÈÅ%mé…ÆÃð½/¯±sqØo +ŠÉËQfþNÒúðÄCzòÛgêg_åD6ºq¸I“ª¸ÊFØ2ËvÖ¦™˜¤Pé¿g¦Uu䂱~Õ#ÉUz$¼ +ÇHÄ•vËÕ$«x-‘–ß™š¦#{eöòÓ`ÐhšDŸâ°º ë«×^9ÁB0¤ñ뫽‡í»˜m×ÖÜ¢Ò ¯-‘+ÖŒ!ÇBPŸÕvî¦è ·?§¡ºƒ¼E^$‡ý…’*O*n˜.—Çw2wÏ5N¨°xNÂø,†éõG#ËÕ€ª“ŸêÅUOr3~\Å[kÒ¸!9×0ϵ +CÝ_‹{™éÉYŠúð["šgì2eàß$‹îy;Þ;Ú +_ƒ
ÃižòÆv==·%!Ãd2KVûBàùü€ÿ' endobj 1369 0 obj << /Type /Font @@ -13969,14 +13965,14 @@ endobj /FirstChar 36 /LastChar 121 /Widths 2831 0 R -/BaseFont /NJLCSF+NimbusSanL-Bold +/BaseFont /IFSUVN+NimbusSanL-Bold /FontDescriptor 1367 0 R >> endobj 1367 0 obj << /Ascent 722 /CapHeight 722 /Descent -217 -/FontName /NJLCSF+NimbusSanL-Bold +/FontName /IFSUVN+NimbusSanL-Bold /ItalicAngle 0 /StemV 141 /XHeight 532 @@ -14000,7 +13996,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 @@ -14030,7 +14026,7 @@ 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 1366 0 obj << /Type /Font @@ -14039,14 +14035,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 2832 0 R -/BaseFont /RBGZYO+NimbusSanL-Regu +/BaseFont /GREUDF+NimbusSanL-Regu /FontDescriptor 1364 0 R >> endobj 1364 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /RBGZYO+NimbusSanL-Regu +/FontName /GREUDF+NimbusSanL-Regu /ItalicAngle 0 /StemV 85 /XHeight 523 @@ -14069,58 +14065,56 @@ stream xÚíueTœí’-îîNãîîNÐ ÁÝ¡±†Æàî‚[ ¸$¸Cp‚»{pw¸|ß™™3ëÜù53¿îº½V÷zŸÚU»ªž]o5
…ê' ™¥,ÈÑ•…ƒ•]ðè`ææ¢rTbQ·´vS1³Þ$)°¥©+ä(mêj)ж´ ×T×f`bbþ§å/€™×¿#ï‘.@kG ˜`KkS°…½¥‹Ë;Í;÷_·óÏ>ÿ©{S''{¯¿£A{ýG
@WK{+V$Î÷œæ®ï¹ŽHl
‹¼£ÀÁþ»…›Ó¿cî–à¿/ˆþ¯™ax/ÂÔähï°°´Bbûr}O ÿï©Ìú¿'òÿ‚Äÿ+ÿ¯Èû?÷_5úO/ñÿô}þWjY7{û¦ïð%xß2 €à¯=co -üµkœÝ,ÿ¯0S ½×ø¯ŽÚ–ÿ(ößøþ–w5}¿ GëwaX88YÙÿaºÈ=--T®æ6 -zôÙYÙÙ9 -G–f1–A‰°9áZm|vjeÅNÖž^X¥-‚¤a‘7°w+}÷ôqâ¡—vqžÈ• ) -šQk¥§”æLpÌž8;¿+é‰?ÝÁÂä‹Ì© 'üöîÇX»X•¢¢ï,TË‹¼v©°¢4)a½%ˆµT— é"ÕéHRDæÜa÷?}M»‚“‡ÝÚ ÖÃL—ÑÑR°¡Ïò5å7…ø^{E®êÄ~užvdR ÌÌU\.¬}¶`!Ø•[üˆÅ=%Ѹ3m4©$¢t¬»Ôñì_È ëB«{J‰ƒÏU—¦®NBÈzN¸œ -wôr®rl`¡©.Ê*Q\ÔâŸ7:’Y’µ›q:¾/-G›1Âèù#ëÀ•(¥jå 0©{ôšª_Ú’gÅ| -l»>ÏÊÂôóí›QöMóð6$H3–k Aãm5Šk‰t}1»ü–’¦ÈdcÂ’txv³~ -kÉ8y!®løÅ‘Ðdª$ÂvQH?"ËŠfìSN2óõ%0ºÖ÷fÜKF^N,G;¦‰K:ÄÇ’Çv¶/Á,¨*¶¥s‘ÆWùUD•M½p‰: -¦¢‘H†©~J'O=é“«=/èWñ³<]º&r©õ\a:áwÎúÒ§/„YÛP˜8áiFOýßÓ"`edi¸ÏpzOŽãªÏsekrýv~›D…0!4*^¼C;† M˺Æô¤ü~ᘹu¸±7`èó3^r9Æpáóvýˆ±'™Ósóõx+I'|²1¨®®Érò*?+”0½©ÈýñÛžYL¡ú¥}ѵÒȼjW.½dfÛHû ~“õ=~#ÆR•ãÄÃR{±ˆÀTèq£ÝáÚ
g *¯<© -OYS0Xµm¡„sˆÅ»ŠC&?ÐEƒUtÚ¾BiÑþrDm–0;{¼ADwm;€N5žz bÀLˆmª=° ÄÅÁiuѧ‡Ž£Ÿ=^r)ê¥Îý³w•M'ƒ"ÀÈû €™š>‰,(víkâüsÎ\æˆ<}z‘eCx±æœ®äyXé쳈 ->‘sB+)±°¦pšô(;¤v“–±eMÎE¢Ä~.¶áC¿zØ“2ûgÞëiIoÒ‹ÑÇ2Aò´{!±d:X\Âjá´…¦0ibb¬¯Â‡Îi8½ÝIç9m7™"A9;‘G勇¨Z?qq3:,´ŒwyÍ%ɱµø(M¸0l -GTtл¾ïGÃ9ˆ/¹MÈH£F±ŠËûÝaÎŒÄ7såL¤Q°=þæ—PfšÇŒªfdjœ_Œ“‹ÂYõ§iwV"œQ0XáRyöÑÞah!e5Ŷ'Ê^”¼ŠVȈæ¡Î=±L>ŽåÛËê
=_ϧHUáï+"W-6 „ƒÕc’)õ””ãˆWaÌiÝÝÃì}¤2©ëe§ctMÐsÛ#&Ix²Ñ ZªÚÚ™O¹¹JÍMç…e=WCŸ£T*bå4ÈËü_–3š)¹á'†8Ý„›HÖã\Ÿ$`}[ŸçÅ5Óyô©Ó¸7Ú¹4ÕÃýÙL;N5–œ§ã<G¢bŒPfÚQÁ§”`ÿðµÃó…a”x¬¡!²0HQ7ÜŸKEô–nŠS‡¦OƒÉ"n7™£8S£»xuìkeñ(¬ç{ŒÝ5{±ç.i÷?Ðd¾“دèñýÐ_nm×q€=ŠLîV5¥ò5æeh;ö|éõÙ¨ÏøÖ-¦½(£*LˆçÏ׋æø¦‡õv[=†q;æú߃}.~à¶Oš«Ek.}Áqá¦|e˜íK¢"ïÆï¾Ü§PWÛÅ¥þ‚滆p7§¡þØ4òbEÑ&Ç_JHïÀêýÖ¿¯
õ9GâO5‘Dz_úÞ.ÿr«ƒœþ§xäÜyåø_²/#XnÒ÷ ïW˜
ò¢æ”J?‡†™ßœ¼cNµÎ~lî͆MÉ=µ‹Ðn¿Lø9“VÈ\ - ª~º`Ù`}ô•×rÜj¥Ìg‰¾öB}Š,'E/¼‰AàkÆðæ!r9KŸ.¥Ü\~B˾£ÅO¥I# -2Ç—Ž.vŽBglI¯Ë—:€‹ËÑA -ŒlÌLC{ ¯ÚÆ1*4þ³u«Ha1½‚6CÞ¹å ê^$•>äN™-¡OsÃÀH«iËb³—¤õOþÑ:”ZÛ„ôeŠ%,0XÈîÛ™óMas*ý¹±K–%„]¨ë ò½&é@¾¯® -–»Ñ«¤ße+©Æv}%Dý!BÛórãÓAT^°üUé„脲ì@È7”ˆÙ~åGè]Ìd×Ä)ãÍ$ƆJ -ÝÑ+¸TÉ)©ÔýPí)ˆ¥æÒ
—–€¦Ä’ÛEÇØ:(«„>ÿ½ïÏÚªÎòžÛê×ÓÍ6qî'z¥-ǹMîÔ-E2Á×½:åR%¿¥?5袪*ôIü¼
Fµv¾PeH`_ ÈtðÞ• ÏX@+€ÜÐÚ"03|7Ú¢®ÒÁI”W?_éq0Õk¡¼}ñ؆ƒˆK]e_cgòð
ä1WêF) …‘ž¡hc¢ˆr;ºhíLÆkÜ“td20Õø±_ -üFùA³‹F-ªè+ú¡ÛïïÈPŒYº«Ã¾$m7 LŒQð(xsQ v²–DÚHϦƒû3Ø"Å·ôT¬Ò¸FAØ‘K4öFJïlJ,*¯¼F†§ Ççêk‘}¡nªE§}NOëG|1Š¸sÒb®hÓh½KÙÔ†Ì-%Û°1ë"m½ÚÒÁéçš2Ì·åTóËYÙ -ŒeaBÂYtLü,WæFOÄ̓ÊüÕ=e[¦™ÉÐ9 -dçSk3Ä7ìj¾s>—Íw¡l×h‹Oœ\L
4€wéد¶¯„˜‹¾+Zz ùv#Æ-}ÅúlWüê+îÐo€þöh˹}ä¨s!¬íÍJl|ê³Îìx{fYý*0#Os¬tmn"ð¬¨üN^ÆÖ0V£@›_ªë²=ƒXñ¹£uö¥N`Î%„ûS¯ ÎœE¦ý‡zBá•ü»qµ[<îqBýE¡%oDU±Sw¤˜ÀïE#-´Ÿ‘½
¼•Œë²9mpòbû¸ú[‡yím÷ôµ¶ðüÁ;> -Å8ÏJ;¯xð²r~ýI -Dƒ2=7´þ\}Åf{2vÍχ{¦óÚ!YDž©j 4íÐáÎÆ)JƒT’Ž4a ˆJÊ„ËãÇÖE0á/U -ÔÕbìÔkJ~,ZLøAÒ‚´*éjô»XåÖìþQh{5íAN<ø•|é1*¶—T‰þ¡©DM€ÚA2•qQ.©'÷ ø›§ÅðÉ>ļtÆH×8åŸäÔ€ŒN
-ÌC=Üa·Þ±û -zÄ}µ:á?Qãô‹ÙX£ŽS+83¦u6Dx@±[–èï‚[-^ˆâßëIÔ¸²z€Z«BP‡»‰EÍÍ»f䧓Hø#?ézߥMóÃœòÛ©Œ'oLH‹ð„ö)²^¹±à/˜²Ÿ‘¼F"xAà,e(ôk°.¼^¤Ÿd4Z&ª€&ŒÓîHgCGrZHÅ„o=ô¥’+nø› -(«ÅQl¼™½ezžmÒ*ÁRYòþA2óé»pŒþÌÑþS•òÓvëÁâqhtøð™ô -+{M%¡„÷É-ghѤí¸Ê~hT”«ïÛ¾¬¶ÓÙÀ, -ÉÂ‡È -à ¿v’d®oì@Ç;‡cM».VÍŸÓsd\«Püˆ -%ž‚qýJNþd=øˆ"áQß$ò7JQ‚¶KEK[†üPn#¦ÕÛ5¼Nž{î/M]²õ{oú³Š›‡M%3Ÿž~nEãFäü…Ÿ[cƒ¶º U»Mw~”–pM3’âJA©OlÍ?Yö -éi<ÆNÉßOê.s}Ëï°–<rnCœ ÍñÎçÌ`ñì¼rG7.ÔsG_í›#6¦ðêþz"D¨:mÔÀ~±ÑBsFš?'µŒÎÛîudÆz¸n.çÚIh¶4„–*=®—FåÓü@3ÛœõÆ kÆæ]tiÿÚ1êòÍ\…óùãj+3e¿ý“a -Œ²ñ¯„1*Ýê-§ˆu«¸²ÝñÑà¡õnËí}ÇXA×–¥ ȾJ[³W™Ðžúœg(DœYT¢¨¤%•Gvç[Žbª±³ú>|Í}vk´åÙeñ¹Ÿó\\Žã¹Wúö°? ‰§ºùâwDS~18¤”ÒÝÙ> -üà¿#pîpÄ—°¬–s…¶’¸ky¸Ê£³»šzÚ
]Zî$sŸpÿì¯vUý'tŽ¦c“è1B¤#ìÖ¬K¶Èö8̲©McÀG¬ò²èÆÙ=ÖD´fKßy2Ô ×l=kMuâ˪ÉYÔQûQi8ñr>Ãħû™†]ëóõšãâà&óP€;„rW¨z]t}Bã깬>GûÑ[qCÝsTE-f+Jy:#ȺÊ'a ¹ø1VŸ8Ê‘°èÙGPòµ!"Š‡Ýw§0Ãv¨3‰Ìäþ„Ã=÷ã[i<:}dÈÖ!9?›:ôrj775b“2î«Ò+(W{Sù§‡Ð…Äe¯=áz1O¦)?^t7Tª»RX:%äDèW…6O8c$IÁ±xýá³nÆ·|õTÕYCitJòº[èF8È!}—á²Ù´-(*–™ˆÇ†£ÉNIOK½ÏDÙS¡£X{ØqÌI`ghˆ‚·j.©¯sX÷ã—³”OIb»Ð\ÈtYfÚ²Cßh}m’¼™zwó=·>vÕö4Þ0ÔÈ<wfºCéŠßäïƦ¯™ñ?Ñ´a+&¹Z2*ø'ÏGrŠ\ÇØ—Ùž× }‹òq~ç¢[! -!øã -ó(]ÝLœäªõ…ðC!àá?’H{'1ƒÙ$‹ÌœÌXO7 Œ®ÙLûX¯E´ïà äã1÷ˆûYº‘Ý®ìŽj#7™¹!a|Jã×ã?‰pÃo;óLsÒÏû:_M.•uÀ²%bßyÉ<Yõ_ɲj–KDVÖ«„i0&|‹ûT‘þ¸â MŸ¨ #”(¨RæÖ®--“3?ÚŒµ.ò“Ÿ
Å*ù\;õr°ca¦ò””¬²7ÿý¡|ð,ûcé¬n Á"É·3Cu0üw|ÄÍÂG%¢p|ë_2—;\^µfEô¿Â¥uXÓŒñ·p3+MxKÅ>بY _ù¯Öe$gOÎë$Æ⻈3•MÏf™;oŠ-›‡D h¹¸êQ -j*c#$Š•ø¾}Aú¿bLˆªïLŒ¿¢wž³£ ÕŸ–½z§ZëŸÓœà"í!u½S“Š‹÷áÉÇ+ºzs»Ö÷’
®Ÿ .c=å¤H!‚Ȇ?&73Éìl–Aµ*¾ #]dàJ4ÂhÍOúá•]ápq3\zr˜Mj&šDØSø³XyöÃD HÙÞÑÚó:º
Çæe´‰`}1K-‡$\ÛÌÎr^I—z¨M$9ÑgP¶BC…
ʆË?ëz¦´ƒ™>,êÔnùŒÌ¿th^ôWàéìs¹ÖÇ°ŒÇ -!à÷'wM¦è–ÎèP½ðûkð&&ÐûQËØÙ¢÷¶§ }Qvf/S:K¦\o¿hŸ4‹ÚïˆP°¼Q¤sûb÷×–úõÙ<(¯sU8¶tËB{üKæØiFÆêÛÄ›±Ò)d¸:uò½ÁÖÓ5NócáÏ6ÍÁóSDôO§)•’WÙQjç×øÆu±U0~®ZrIÚ4*ÎÝü9ˆ¤š/kÁ[C¢Šç#¶ YíD½j„õ¥×8ª#J85¸LbE»ºå‡'›vÞ~]TžÑ•‰³²<IIwÛª“àsø*F Vx¨:χÓ5¼?¤
³·ÝI͆–3ÆCŒK·*6WÒÙ -½Â£Øé•ésûãA úIÕ#2»ÓŠ’„?eZF¨›íêp½µ¿hã—F‡<=éz梴|ÿi
™ -sÒ-çvŸš"ç«ñ¢q2À¢ªšäÁvƒ8¹„ÇW?ºI/4jûé-&;S>Øx«æZ—Eª6¼l9 ÐŽy:¸íV"ëow -÷8˜6Ö¯!u˜Ø¡±ž@}Y_¦ŒW$5bìüyá}{ÄaÇ`Œ9ñ¤õ"®2ç÷´(/³èD8ˆÿªÒUì»@ØÒ]Ú!nµy(ãûEÎõÈ -ÇJÏbì^*@vEÈXcæk3¤ÒWË3F„°0í;Æ·:™œd»Ïã°×²‹Š2Q¥"ÝW”ïê[b£î°)瘙{I³b-ÜükÈá¼J ûJ
WJÔ}U[j×ì«tž¦#¥y`ÌpžÒûïÈòYb4èP¢zçíûrú\7øBcäqRItb‡ŸëNÌC¡£þÏ èþÔ¾œJ²W)o5q?#ëÆ–íú¢
ùÞšÜ=”«@UZ—š(7‘ìŒçÛêß¾ag¨¢”–Fâ¶Çí–*âìÇ&f"bü ä×ÓÐI1ðÊb ¼É5(+pGhß¾¬Ã¡®ÿU«n4P®48•@š!LnÆÇnàxsÜ8®dŸAÆ7ÏË‘©
D¹Ó2…+oåqeSŸùð+û˜ˆüÓñV5¦‡K"„ž¶”%Æ<FÙ‰*(ùWpÌÝô·û²ÍúÕ`u)ð8š2¹UB÷ÚÅ*lïdInÙÝÜÐ4Ük”ôÀnòíššLœâpzæÍ ÅøL›9àÄ¡]`QÐ,8óô}ël™ñè
=ƒ¾ ?°ÞðxéVgS¿úÅ®ùE˜˜ÓmnÓÅ -úÆmGž4ñ8WÁHë0Ž
ºNãR¯´4o©ÙØ_Oéë|Ï‚ªôÓ‡rÙÇjÔO8˽²¿€…þ”Ë#”¶«µ‰$
ýX&3³Fn“±wmãÈØGœô4Uu‡°‚•ÛÔîi¯/eÆ«Ô4Âm’ÇÆÏãé#\Ã'ßÚup9‹;øôÈžb™Ž™0Ií¸³´ÏV>Gl0:?¾1 ±ZŸþ ;¶Ë¸ßb~ó¯E®âòðH›ê=!?öŠ§sƒò»|*þsMÔ;s&/€¥òñ£òè -€Ÿö’_ -°>:%tÝÿ’hàÜåA®(E,FKrùÁò#5>©²"E÷èó9»¼úÌ$ÖdfGp±&â/yT/öËsš½ öÊmS;+æñd„}Ñ%ã¯ø»Î¥Õ²ZTÎR:cí‘àÆ×e¼â•ŽËf_úy+§úŒ‚9Žr£Òþu!Îi¦’õ¸<¶“Ÿoö„b†™Ò ¦€Ò‚7ö?$¢˜`ôBï -j
•Ûœk3¦¼ï™F²žÚ2ð‘Ö¦Íú¦N†.!‘GÛt?×½U‰`Ùˆk«¾vØGnaq9G´—• o‹ÃC"¢¾.œ\ýaÃ4Ù œ¶X~8uSÝs›]`ÉDš£ºžoñð•À•Øº)<8–v\гcê¶ã¤’”àôzÛ.”¸¹;ù\ªÓE`BFP墬ý&MazÍY""”݈ú v¤(´ëïü8ùœâŒeë¶ Q*ÍÅ£þ³GIçRh¯¿×øO{Š— ·?:û }ƒôÁ~ÿéi²>¹}Íì̦¾A25_6…½ÄŠZ*ÑÑž4ÆGD -»¡Î¿FÍÓ8ø©oc¾°ü$¶<;¯ÍÔl"’±*³¨Ðf°„SÞuwÏ$ðÑ(Á‡Âé+8ï’ÛèTÍ•oÙUîák,„ÒU8‹ÝLboº¯Îr§ô‹D‹´<(Lêcv°\xš˜ncÅEÈÍk‰zh?Œï¥.Àí{Ê(·IipIw®M9FJÛQ¹rg"ˆP×ËgÝxO˜ËÚÛêp8…Ýk¸Û‡6
’K(Ãùœc4ê‰MñÉ´²¯ÞÒ¬“É*C-ëa‡’y™Y0DÊ#×iPZ³;ñhäî3¬é×ç’ø]&?"4ÞÕ<Ò×ùùg›¾ýš45É©Xÿ-ªße¶UNOàΨíÆå•õ…@bŽþ¦½DÛš¶D¿ñ91š¸M’úÓÌ>gÐ5ÕOZ'ÇÔÍ2gµî_uØE(lü
#È:=Ÿ~ô¹Vþê”ïô[ƒž×jE%zJéçÛX»8Ÿ7ZKØŸÎÀffך¢7«í×wÉp#–J R«‰»3øzˆúðþ`ÆÁŠºÀ:MHdk#Äp‡Dê«l¿’‡béð«P[FÐǹ!;@ò×eüJ£Fw8 qì5ØÕZË‘òÉ’;4þùÁ¾µ”{í.æê~؉³™KB ¤T¦yxÓY‚¸!e{®«E¼…[.ˆœ€±’9UÇW)\ÇÉSÜî”O6^OX8û멶Öt1¯›Cé‰4ƒbþ¡ÝwfÛLq®0ó#üu~ä„ ¡Èr°¶ñBwÕ\¥,K›1q¿0V®•¹ë_g_Œ³Þµq°û[2"iÝJ¨¤,¡ÙìêWgµÍ¹øÝU¬r•]ˆÉƈŽ§ËÜu¿2Î5öHÁfáÙüÕÏ¡^bÉj¯ðÁjÝÕ5tûñÎ2vljè¼üU€?~á4›‚eÀ¯ñ~.¬Ðfv–¤ÊO½“gß@Úé—W´/À…)‰Ã()r¼Îyr2’LƒžÕº’‰cEòšª«®à[±6 JfHïÌÎ$å
¤/íüWj3ÈÒW<íõå¥7b#ô}EÖgÂ=gRº‚JÅe×LÛƒ¬3
_ö6„J}᧘~[IûÜžQKxÍmJíB2)GMGìûñ{´ín~LSW2Ââ&?®/ßÁ}Ò-Ÿ1ÛØ«ÄüXÝÕm^©“•Ç“ŠNÄ(
>¶å_¨Ì• -5”0;vVʇ‰\Û=¥Ç‡ÐÅ»/8n¦”².ÜÔRzÚD"‰‘$é»$3mXiB%ˆ#öùÓnà„u²|#Á?¬8¨‚ßK¬Š-Íf¡k®XÓ“
2+ÀªtÙ¬c xJKÕUtêôÑL,qúòÑÏt/(d¹j¸ãyÿÏ÷Óáû$˜Ôq3-]ZëGœ|ø":R`/‘Û¨B¸,ÑU8 ÀknϾ8JÓáÜÔ†]iÅ&ÑÎ8ÚÈ>kÆCÒnÙéØD0¥O K|ö,ØKùPëcú¸ÿÓ~§¶´5%D5=¸ÍžgP7“l†r]™¬%¥®Ê!EŠ]âþŒçH(FŒÿµµH?pˆpî8‰(3žG goaô9Ë×òÛót
«Zø²&Œ¿,…Øç¼tÑöÐôD΀ qP(8XÝÚÓ‰‹½DÉO'69bA» -üFÓ}UZ6²ðlRÛ -ßB÷,øìõôàÞtKÊA ‚Uö…úØ€Ã7Ú—”‡¢ê¸då|%Qß´“¸6ÂqoÙãWí.Š,}U/)¤ÏÚÒ°=PjcaÌé}V_[ÎQ`9Ó¿‘ #Ù
Ú„é½Á6|-Iû}„ýþ—¶jl£¶%"åh/ã6s ï%F¯‹k/€¯¢‚BÔpÔÉ]¿O•Ø{I…O”æ‘»üéæ"ã¦8ÉðuÛœýOÌŸoÊ8ÛÑ·MðTt8JbD?ÌOÚ…Í(󸢔s%<…ÌlGåšžÚĸº¸1}˜ž¡uæØ" -ñ…‡òÐæbð½¶õŸÝjSÔüCàâäC*œ`E_™[‰ä,%R•X™«b¨!-áêS?ø
$´^GªíëvH¡²ûI\PM_ø)c#!#Î ¯¹ž=³6Ú°ú
?Ç`k}RƒÁŒfC©È¤“ïÌ{5ùµ<Eû»á°DçàÀÇóÊÍ›ï#üb
ë× É¸‰ç¼§˜ém.ÍEì g:†´ -Œ:n/wùªb:¾D‰§ƒ˜Þöª…%¼&z[C÷¼cÛ+Ô(Žö=7ÇöCtmÖ“OHÀbÞ0j],G6!µèik|GÐ÷é°ÚÊ~Øfóf~´ˆHn‚§§:vƒCÙ˜9žnͺ¬ÎO‰Ž’§&esþY¼ZµL†¾AE?íz¹¾è™AvX -;ñŸ*Êí"
þ:»,RñŵJ&¯‘JîWå¯ÔžøÙÉÇÈó<ƒ8 Ù!rÆ -äwÞ8!¼w§š–³à0an‡Æþ?ü ý‚ÿ'Ìí-MÁ® S°ÒÿZ ßendstream +üµkœÝ,ÿ¯0S ½×ø¯ŽÚ–ÿ(ößøþ–w5}¿ GëwaX88YÙÿaºÈ=--T®æ6 +Œ»ƒ]xöti–§ù$~Tݘ«´|L»AlF¥¨™GÚ1>g3Jë0z¼ìZ»›£jêF%Ïp¤ã\`„³;†@*÷‚@ê['4óôºxÜ6Œ¬šÂ?G´Éw·t}C¿ú;/`»wˆ™râi„ÜaPi£sˆÅô4¿ûD2mCÕî’Çu'åòšbYÊ>¤†à}Θ)ÏSsÐÔ¸äõoËñýªÈ]’Ú®¾Pbt“m‹ÛšE qUíÝ·E“çCb‹sþÞï€I|w¼LY¦ìAŒÚ/ýMek ÿ&»êæ%ëźܵ¿u;Ú0‘`[º,9ð ŸXQÍmœoßò»™›/Ëðb‹Æf–®~è@/ù—Í@Hm´ÍÝuÏŸ>²è=(ÐÞš¶W0Br¤}i3ÖDH‡S²À~@k +¶™f‚yø_eš×¼¥©Å[˲•X6”,¾ +!ø`€·§«Ssw–]<¦ŒiøCø®ë¿aacK ›‡&*ÔhRÏ»Ÿ«µ®GÖvzq‰1dìJfdÔkSÜ2ìXu'´9Æc¾HÁ(;,#}┸ZBœÃfÇÿ"‡0u·w诩yÄ\8)ZM–XÛíµ¿Ü‡œÛ¾*hÐ>ŸŸB„½êEÄžà=A¥#¿]÷}ˆº7€“
æoξ{ûIb+jæ„@‡)0ã\ÇséiÃû{‰Ê¸M9¬Z^¼‡é4(„Þ¥s§>âw¼Wg‘¨qg/â7‹ãKúÙyyZ€âL~alâTJ$T¿Éa ”bew…£K³Ë DØœp6>;µ²b'kO/¬ÎÒAÒ°Èػƕ¾{ú8ñPƒK»8OäJ…ͨµÒSÊ
s&8faOœ‰ß•ôÄŸîàaòEæ‡Ô„“ +~{÷c¬]¬JQÑÖw
ªe‰E^»Ô@XQˆ”°^ÄZªKt‘‚êô$)¢?sî°ûƒ¾¦]ÁÉÃî?HmPëa¦Ëèh)ØÐgùšò›B|¯½"Wub¿:O +»2)Pfæ*.—ÖŒ>[°ìÊ-~Äâž’ˆhÜ™6šTQ:V†]êxö/dÐu¡Õ½¥ƒÄÁ狪KSW'!d='\N€.u×gÆ/I:?¯~%nw¢çrÌ'¤ÞçMS}Þ®Û0a6Mhh5û&¨ô¸^àë!9u;êý›õÔ6¿,†šßzáé„ä%?>bTÐåûφc£LqØêÉØGºSïi,5{ÒGÛ!ä_MüxÞ«³ÎLUçLH,FŽÉ£…Ƚ[i.³Û lÌ/ÃëQM®5Ú~+còq(m+‘Én¹ ±Í]¾"¡Ó9Ò9…;z9W96°ÐTe•(.jqŠÏÉ,ÉÚMˆ8ß—–£ˆÍaôü‘uàJ”Rµò˜Ô=zMÕ/mɳb>¶ÝŸgå aúùöÍ(û¦ùGx¤Ëµ ñ¶ÅµDº¾˜]~Ë ISd²1aI:<;‡Y?…Œµdœ¼W¶
üâHh2Ua»(¤‘eE3ö)'™ùú’Ö
]ëû3î%#/'–£ÓÄ%âã@Éã;Û—`TÛÒ¹NHc
Œ«ü*"ˆÊ¦^8„D€$ŒÑñJ|Ùü’Në„»)°-9¯j³õM¼ZSÑH$ÃT?%“§žôÉÕžô«øYž.ÝF¹Ôz®0ð;g}éÓ¬m(Lœð4£§þïi°²²4Üg8½'ÇqÕç¹²59ˆ~;?ÈM ¢B˜?•/ޡĦe]czR~¿ð@ÌÜ:ÜØ 0ôù/¹c¸ðGy »~DŽ„Ø“ +‡,¦PýR¾èÚid^µŠ+—^2³m¤}P¿ÉúGŒŽžG¿‹‘…Fc©Êqâa©½XD`*ô‹¸Ñîð튆³•×žT…§¬),‰Ú¶Pƒ9Äâ]ÅÆ!“Ÿ?è¢Á*:m_¡´h9¢6K˜=Þ ¢»¶@§šO=P±`&Ä6ÕXââà´ºh‰ÎÓCÇÑÏ¿/¹õƒRçþٻʦ“A`ä}PÀLMŸD»ö5qþ‹¹g.sDž>½È²!¼XsNWò<,„töYDŸÈ¹G¡•”XXS8Mz”R»
„IËز&ç"Qb?Ûð¡_=ìI™ý3ïõ´¤7éÅèc™ @yÚˆ½X² +‹Í”ÜðCœîVBƒM$ëq®O°¾‚ÏÆóâšé<úÔiÜí\šêáþl¦§KÎÓñžŒ#Q 1F(3튨ÎàSJ°øÚáùÂ0J<ÖÐY¤¨îÏ¥"zK7Å©ŠCÓ§ÁÇd·›ÌQœ©Ñ]¼:öµ²xÖó=Æîš½Øs—´ûh2ßIìWôø~è/·¶ë8À‰ž E&w«šÒVùs2´{¾ôz†ÖlÔg|ë…‚SÞ”ÖQ&ÄóçëEóF|ÓÃz;ÈøsýïÁ>—?pÛ‰'ÍÕ¢5—¾à‰¸p S¾2Ìö%Q‘÷Gãw_îÓŠ¨«í‡âRAsƒ]C¸›ÓPly±¢h“ã/%¤w`õ~ëß׆úœ# ñ§šÖÀH"½/}o—ˆ9ŽÕANÿÓ<rî¼rü¯VaÙ—,7é{w„‡+L„yQóJ¥ŸCÃÌoNÞ±?§Zg?6÷fæäžZÈEh·_&üœI+ä .U?]°l°>úʉk9nµRf‹³D_ûÇ¡>E–“¢^ˆÄ ð5cx󹈥O—Rn.?¡eßÑâ§Ò¤€¡qm¸8¡S™Ø¹!>¿À# д°þ¨&¯¾>Œ¥±·P½qQµ^èº"‘ÉèbUwS†˜?"Þ¥"ë8mžlá-ô×±õååŽÉ3‰T;ߢ‡L¥ÎGºuaÙ
I(ǃ +ÖžCJ‘²—G„ÐM"&ï‰4<ë#`üDöY÷áW +i¬¨ŸKUì=\žýk\dóhYúÃÇo;gh+ÖR¯‘M^£ ÛaHi61›ƒ£P'&iÓjÎ:‚ÓU¬ªºKØ;uÅe˜R)`kG€î´nwÄýÜÍÜ\Àc>
¨2]/{¢¦¨øáÙE¡ãΊR üÑwm}RN¾žJÓ$ÃҲ8D<
6µêƒªg‰C4YÏÜ…ñü$mÁ]2]XT Æ…õŠÞÝäèø
¹pƒ|3Áo³4øÓþ9ïyã*(ö~ûÞûEÂ]:|›YU"ú+JºRôU7.æ +VSfgw-4ð‘ä +E„Üž‚›†¨÷QÀ§aˆYnk\Ï=:Ÿ,)õøöBºLßö
›‡ìb”Ð3†’(€&ä2±kvwr/F—Õ +aN‰×jêg!rÕ§(YBî5“lœ+”^ÆIQçJÁÜøÔ›x#êèXX“„”I¬®hÉ©‘aäBA*åqk½Ô3/ èi5—#nšpþ”O¸ §ÖiãOÄÒ‘‡sªA-\×.v!rÛݨ½É§ÕW(+íhRzÄM }qàú—3Q¢H-T:iüc\8¼¶I.è‚»gàž§=Æuƒ@¿a}îÜ4Ñ°.Ïy +g*ÿÈÕ=\ +°+,B4Úfð{5á#“Re_‘›S1Ù‡ú„iëÜ>|§¦6=«ªÌp9DuTà¸Ñ}b²ïT·-¸k¤èÔg‹AúÃ76ŒÇp§Þ¨ÿŒÞl<Œ¦7y>G–QØ…Æ£Ö&sÞK4ßD‘9Çâs¡uˆÿmùU&©‚t,Á—¥‰„b½±ªÆ\ÙHH%2ÓJƹÍ=O°î—áö¹¹2›~ ÎßíÌHß,+'Ï‘¦ÅT^ Ð΄lÒ~_EÞìá)•¬w¦Ð»2;òç1̪,G͉Ò#ý¹ºjfšÓº*9áµpm‡êÈ}ÎÓwtS(`‚žZ¶Õò¼_r²¨ª}døm fÔW’ e=]¬¸À½iÓ€x˜êÕûxžÍkúåýN’îær3àéUd:~£ü ÙE
£UôýPí÷÷@d(Æ,ÝÕa +_’¶›&Æ(x¼¹(;YK¢Œm ¤gÓÁýl‘â[z*Vi\£ l†È%{#¥w¶%Œ‚•W^#ÃÓ„ŠãsõµÈ¾P7Õ¢Ó>§Š§õ#¾EÜ9i1W´i´Þ¥ljÃæ–’mؘu‘Ö¶^méàôsMæÛrªy‰Öå¬lƲ0¡á¬:&~–«
s£'âæAeþ‚êž²-ÓÌÆdèÖ²ó©µâƒv5ß9ŸKæ»P¶k´Å'N.¦À»tìWÛWBÌEß-=Ј|»‡c‡–¾b}¶+~õwè7@ÿ +± + Ü)mÝ“Ä';©Ûp4OïugE…bœg¥W<xY9¿þ$¢A™žÚ®¾b³=»æçýVÓyí,"ÏT5švèpgã¥A*IGš0D%eÂe†ñcë"˜ð‰—*êj1vê5%?-&ü iAZ•t5ú]¬rkvÿ(´=Œšö 'üJ¾ôÛKªÀDÿ…ÐT¢&@í ™Æʸ¿(—ŽÔ“Ç{PüÍÓbødb^ºc¤kœòOrj@F§æ¡î°[ïØ}…@=â¾ZðŸ¨qúÅl¬QÇ©Ó:¢ +< Ø-KôwÁ-‹/Dñïõ¤Fj\ÙN=@U!¨Ã‡ÝÄÈ¢ææƒ]3òÓÉ +‹aÎ@ùíTÆ“7&¤EøBûY¯ÜXðLÙÏH^#¼ p–2úÀ5X— +^/ÒO2-U@“‡Æiw¤³¡#9-¤b·úRÉ7üM”Õâ(6ÞÌ^²ƒ=Ï6i•`©¿,yÿ ™ùô]8FfŒhÿ©Jùi»õà +؈¹5nÙ±òÉCd½Û/¾Â×aOE¨±_Ç–îÉÑüqÕŒë@†€«¸€æŽ½óX•EÅwy…‚Œ•½¦’PÂûä–3´hÒv\e?4*ÊÕ÷m_VÛél`…dáÃd +Ùú½7ýYE„Íæ’™‹OO?·¢q
#rþÂϱA[]P‡ªÝ¦;?J˸¦Iq¥ Ô'¶æŸ,
{ +h¯Vwž^Ä7Éß8åp©+ö`ûr`G.f9¶Ið¼kPÜÆ“ÙOMÖú–w]¬£´Ï
Xò¬w
¯2Ωìfvƒ^=$M†Ú:ô%›á¨LļKO†ðàx,ˆQê&:.`€ºÙ§ŠÊ™€õ#ªÞƒ½ŠEzd’f9ÁK09UDJ?ú»ûùF‡º¹‚áàzÖµŸ?ªLIF/u†ó&êà}âS;¢é^S@M~䋧©I¢
eÚl²¡˜Úˆ”pöžþÑDë‚ç"Ä€Ò}ri&„~à“”nª*À¯ó8G|°cf @tï:Úolÿª¸uƒ¯ ø†ï0w:\E-ó;áâ×÷OAçw-©)$æ"ÏFßñ²œ?—áI¹8Ö%-«f?Ž)¦[ž5å@MÛáÐ1CÐLæë‚8û
EÝÍ\J†Ô*,/y™?ɺdñŸ%–‘²›µ’“½+…ô4c§äï'u—¹Š¾åwXK9·!Næøçsf°xv^¹£ê¹£¯öÍÓxu="T6j`?ƒØh¡9#ÍŸ“ZNFçm÷:²@c=\7—sí$4[BK•×K£òi~ ™mÎzã„5có® º´Š¿m€uùf®Âùüqµ‡™²ßþÉ0FHÙ@
ƒøW‚nõ–SĺUÜNÙîøèðÐz·åö¾ã¬ kËRPd_¥Ù«LhO}Î3”"Î,ª +V˹BÛFIܵ<\åÑÙ]M=톮 -w’¹ŒO¸öW»ªþÖ:GÓ±Iô!ÒvkÖ%[d{fÙÔ¦1à#VyYtãìk"aZ³¥ï<ê„k¶žµ¦:q +‚eÕä,ê¨ý¨4œx9
ŸaâˆÓýLîÖõùzÍqqp“y(ÀB¹+T½.º>¡…qõ\VŸ£ýè8‹¡î9 +ª¢³¥Æ<d
]å“0Ð\ü«OåHØôì#(ùÚÅÃî»S˜Ša;Ô™DfrÂážûñ´N>2d뜟Mz¹?5ƒ››š1I÷U锂ƒ«½©ÆüÓCèBb‚²×žp½˜Î'Ó‡”¯º*Õ]),ò"ô«B›'œ1’¤àX¼þðY7ã[¾zªê¬¡´:%yÝ-t#ä¾ËpÙlÚ +ËÇLÄcÃÑd§¤§¥^g¢ì)ˆÐQ¬‹=ì8æ$°3´DÁ[5—Ô×9¬ûñËYÊ'‹$±]h.äº,3mÙ¡o´¾6IÞL½»ùž[;j{o˜jdž;3Ý!ÈtÅoòwãÓ×ÌøŸhÚ°“\™ü“ç#9E®cìËlÏ넾Eù8¿sÑ…üq…y”®n&NrÕúBø¡ððŠI¤½“˜Ál’EfNf¬§PF×l&È}¬×"Úwðòñ˜{Äý,]ÈnWvGµ‘›ÌÜ0>¥ñëqˆŸD¸aŠ·y¦9éç}¯Ö&—Ê:`ٱ%dž¬úƯ‰dY?5Ë¥@¢+ëUÂ4¾Å}ªH\ñ„¦OTJT)sk×– ‡É™ŸŠmÆZùÉÏ‚†b•¿ˆ|®z9ر0SùVJJVÙ›ÿþP>x„ý±tÖˆ7`‘äÛ™¡:þ;>âfá£Q8¾õ/™Ë®‰¯Z³"ú_áÒ:¬ÇiÆø[8™•&¼¥bì@Ô,Ð/ŠüWë2’³Æ'çucñ]Ä™Ê&g³Ì·NÅ–ÍC"P +´\\õ(€kúºEã(3Å!S)Ö‘“HWÊ°z3Ô!5•±’ÅJ|_‹¾ ý_1&DÕw&Æ_Ñ;ÏÙQЃêOË^½ÓVõÏiNp‘öºÞ‚©IÅÅÀûpÈäã]½¹]ë{É×O—±žrRH¤AdÓ›™dv6Ë ‚ZßV‘.2p%a´æ'ýðÊ®p¸¸.=9̦5M"ì)üY¬<ûa"¤lïÆhíy?݆cóβFÚÄ°¾˜¥–ÎC’®ƒífg9¯¤Ë=Ô&’œè3([¡¡ÂŽeÃåŸu=SÚÁLuj·|Fæ_:4/z‡+ðtö¹\ëcXFc…ðû“»&StKgt¨^øý5xèý¨eìlQÈ{ÛSо(;³—)%S®·_ +´ŽOšƒEíŒwD(HXÞ( +Ò¹}±ûkKýÇúl”×¹*[ +ºe¡‚=~ˆ%sì4#cõí +âÍXé2\:ùÞ`ëé'‡ù±ðg›æàù)"ú§Ó”JÉÎÖ«ì(µók|ãºØ*?W-¹$ +mgnþDRÍ—µà!QÅó‘ [Ьv"È^5ÂúÒŽëÕƒ¥Fœ\&±¢À]ÝŠŒòÓljM;o¿.*ÏèÊÄYYž¤¤»mÕIð9|#+<T‹ŠçÃéÞÒ†ÙÛî¤fCËã! Æ¥[›+él…€^áQìôʆô¹ýñ ý¤ê…™ÝiEI
Ÿ‰2-#ÔÍvu¸ÞÚƒ_´ñK£Cƒžt=sQZ¾ÿ4ƒ†L…9é–s»OM‘óÕxÑ8`QUMò`»Aœ\Âã«Ý¤5Žýô©l¼UsË"U^¶‡‹œƒŒGhÇ<Üv+‘õ·; +…c¥g±
ö / »"d¬±?óµRé«å#BX˜öã[L N²Ý‰çqØkÙEE™¨R‘î«Êwõ-±QwØ”sÌÌ=‰¤Y±–nþ€5äp^%}¥†+%꾪-µköÕ:OÓ‘Ò<0f8OéŽýwdù,1t(Q½ó…ö}9}®|¡1ò8©$:±ÃÏu'fŽ€¡ÐQˆçtj_N%Ù«‡”·š8Ÿ‘uãËv}ц|oMî‰ÊU *‚KM”›HvÆómõoß°3TQÊK#qÛãvKqöc 31þòëiè¤xe1‡Þä”
¸#4o_Öá‰P×ÿªU7(WœJ ÍŒ&7ãc7p¼9nW²Ï ã›çåÈÔ¢Üi™Â•·‹ò¸²) +ÈÏ|ø•}LDþéøN«ÓÃ%‘VBO[ʈc£ìD”ü+8ænúÛ}Ùfýj°ºxM™Ü*¡{íb¶w²$·ìnnhî5Jzà7ùvMM&Nq8=ófâN|¦ÍpâÐ.°(èœyú¾Œu¶Ìxô†žA_Xox¼t«³©À_ýb×ü"LÌé6·éb€ô5ai*”²xl‚g¸§vœí£›Ü¸$ô+\øìüxè¾ô-ž¡$³ÊÖðs;úº#[Âíй/ù¤ó-‚äÝ—mrÂ{(ËýôÙƒ5qòâ(¹?åNtæJüÞÓ#ºÇø=›³°GžLÇ·CøÐm5ƒÞé¢>»lvOûû,Œ[8ºV¡M‚×?ÇóEd¯Üýã¶#Ošx†Gœ+`¤uÇ]§q©WZš·Ôl쯧ôu¾gAUúéC¹ìc5ê'œå^Ù_ÀBÊåJÛÕÚDŽ†~,“™Y#·ÉØ»¶qdì#NzšªºCXAˆÊmj÷´×—2ãUjaŒ‹6Écãçñô‘®Öaˆ“oí‚:¸œÅ|zdO±LÇ‚L˜¤vÜYÚç+Ÿ#6ßXOÿ„ÛeÜo±
¿ùÆWŒ"Wqyx¤MõžŸ{ÅÓ¹ÁGù]>ÿ¹&ê9“‚ +ŒÀRùøQytÀOû@É/€¶6XºîI 4pîrŒ‹ W”"
#%¹ü`ù‘ŸT
Y‘¢{ôù]^}æk2³# +¸Xñ—<ªûå9Í^{e„¶©óx2¾è„q
†Wü]gÈÒjY +*g)‹±öHpãë2^ñÊÇe³/ýƼ•S}FÁG¹Qiÿºç4SÉz\ÛÉÏ7{B1ÃÌViPS@iÁûQL0z¡wµ‹†ÊmN†µSÞ÷L#YOmøHkSf}S'C—È£mºŸëÞªD°lĵU_;ì#·Öˆ°¸œ#ÚËJ·Åá!QßN.‡Æþ°ašlN[,?œº©î¹Í.°d"ÍQ]Ï·xøJàJl݃K;.èÙ1uÛqRIJpz=‰mJÜÜ|.Õé"°!#(‰rQÖ~ƒ&†°½æ,ÊnDýG;RÚõw~œ|ÎGqƲuÛ„(•æ‡âˆQÿÙ£¤s)´×ßkü‚§=ÅKÐÛ}‚¾Aú`¿ÿô4YŸÜ¾ƒfvfSß ™š/›Â^bE-•hƒhÏ@ã#
"…‰ÝPçߣæiüÔ·1_Ø
~[ž×fj6 ÉX•YTh3XÂ)ïÀº»g’x‹h”àCáôœwÉmtªæÊ·ìÖ*÷ð5Bé*œŽÅn&±7Ý×g¹Sz‹E"†EZ¦ +õ1;X.<ML·±â"äæµDH=´Æ÷R +àö=e”Û¤4¸¤;צ#¥í¨\¹À³@D¨ëå³n¼'Ìeímu8œÂî5ÜíC›IŠŽ%„á|Î1õĦødZÙWoiÖÉd•¡–õ°Cɼ̬"å‘ë4(-ŒÎÙx4r÷ÖôësIü. “‘ïjéëüü³Mß~MššäT¬ÿÕï2Û*§'pgÔöGãòÊÇúB 1GÓ^¢mM[¢ßøœMÜ&IýifŸ3èšê'“cêf™3Z÷¯:ì"6þ†džO?zÈ\+uÊwúAÏkµÎÆ¢=¥ô‚óm¬]œbÜ%ìOg`³³kMÑ›Õöë»d¸K%)ƒÕÄÝ|=D}x0ã`E]`Š&$²µb¸C"õU¶_ÉC±ŽtøU¨-#h‡ãÜ ùë2~¥Q£; +8öìjåHùdÉÿü`ßÚ Ê½vsu?lÄY‡Ì%!R*Ó<¼é,Aܲ=×Õ"ÞÂ-DNÀXIƒœªã«®Îãä)nwÊ'¯'¬NœˆýÖõT[kº˜×Í¡ôDšA1ÿÐî;³Œm¦8W˜ùƒþ:?rBÐÀPd9XÛx¡‹»‚j®R–¥Í˜¸_«‡×ÀÊÜõ¯³/ÆÙ +fg’òÒ—ö +;+åÖÃD®ížÒãÃèâÝœN7SJYnj)=m"‘ÄH’ô]’™6¬4¡Äûüi7pÂ:Y>‚‘àÖœ
TÁï%VÅ–f³ÐŒ5W¬éÉ™à?Uº‚lÖ1<¥¥ê*:uúh&–8}ùègº²Ü5Üñ<Ž„ç{éðý‰GL
j¸™–.õ#N>|)°Š—H†mT!Ü–è*œ„ˆGàŽ5·g_¥épnjî´b“hgmdŸµ@ã!i·ì¿Œtl"˜Ò'%>{ì¥|¨õ1}Üÿi¿S[Úš’¢šÜæÏ3¨›I6ù®LÖ’RWå"Å.qÆs$#ÆÿÚZ$È8D8wœD”Ï#³7Œ0úœ‡å‰Çkùíyº†U-|Y
Æ_–Bìs +^ºh{hz¢gÀ„¸(”¬níéÄÅ^¢ä§›± ] +¨î0Έ#œ™ŸQÅ8Û§¥Ï«œTMð
ÀɉI!®ƒé¦wîC|7# ƒ,á¤38Š¾ñ´.sßùMÚð÷œÒÓ8Ñ?úDÕ$‡È³+ê%M»H(ˆB(Šüö §Ö¯Ê)Çd‡…Cž;yêÙD>‰¥êÞR8ööElºœ•Ëü,¤†G¡í¤’²w6k©™ê÷†Üeµa$íÍé!iE²¹´ÍÓþdç`WÓgÌ‘G¯jMnóh*µŠÛ ɧ’ƒ!Gñ6ˆ#p
Ÿ£uóUTËk~£é¾*-Yx6©m€ºáP¤Î§]ñ#2
‚±G±p*PÍæIrkh+kVË@>ÚjÞ$Êt?~n
9U:AŒ“0% $Àr“ÀÎ]Ðc陶û3Ìî¶)Úro$YÕu:‚Ò«S m
«žŸiþCl»wi̪6±îÇlUúÅÄ!ýàí}©5ƒr% Ç‘ä<%RÆîê¹ k· EX˜Ë#“°5SH…o¡{|özzpoºÎ%å Á*ûB}lÀáíKÊCQuÜF²r¾’‰(‚oHÚÉ\ḷìñ«vE–¾ª—ÒgmiX‚(µ±0æô>«¯-ç(°œéßH‘ì†VmÂôÞ`¾–¤ý>BÈ~ÿK[5¶QÛ‘r´—q›9Ð÷#×EˆµÀWQA!j8ê‚ä®ß§J콤Â'JóÈ]þts‘qSœdx†ºmN†þ'æÏ7eœíèÛ&x*:œ%1¢f„'‚íÂf”y\QÊ9ˆžBf¶£ò +MOíNâ \]ܘ>LÏÐ:sl…ŒøÂŒCyhs1ø^ÛúÏnµ)jþ!pqò!ÎV°¢¯Ì€Dr–©Ê‡,ŽÌU1
Ô–põ©ˆ|‡†VZ¯£Õ‹öu;¤PÙý$.¨¦/ü”±‘gÐ×\ÏžYmXý†Ÿã +°µ>©Á`F³¡TdÒÉw潚üZž¢ýÝpX +¢spàãyåæŒÍ÷~±†õkdÜÄsÞSÌô6—æ"öV3CZ€Î þìý]ìX'EBàø
/Õ~>Ïgq"óÕ§t~U̶½5¢IáwSõDÕ£õaÐ8’#Øwyúªýˆê@†<y=ª‹Ž>ÛylF·—»|U1_¢ÄÓAÌVo{ÕÂÞ +™–D¾£DÐ#fjæK÷+a§µHCò; oœ^Œ»SMËYp˜0·Ccÿ~þ?Áÿæö–¦`Wƒ)Øéÿ endobj 1333 0 obj << /Type /Font @@ -14129,14 +14123,14 @@ endobj /FirstChar 34 /LastChar 122 /Widths 2833 0 R -/BaseFont /FTHQGV+NimbusMonL-ReguObli +/BaseFont /QCLRFJ+NimbusMonL-ReguObli /FontDescriptor 1331 0 R >> endobj 1331 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /FTHQGV+NimbusMonL-ReguObli +/FontName /QCLRFJ+NimbusMonL-ReguObli /ItalicAngle -12 /StemV 43 /XHeight 426 @@ -14156,76 +14150,74 @@ endobj /Filter /FlateDecode >> stream -xÚ¬µcx¦]Ó%ÛfçŠm›ÛöÛ¶mÛ¤c;éضmwœô×÷óÌÌ;Çóͯ™÷Çy箪½jUÚ{“+ªÐ›ÚÅíí\虘x -ŠZRò - þÞuû[T9Pƒæ¸‘WÅЯçøÅxqD¹ædªw^sÄM]SÏx
.¯‰¹í9I1X0ô®-ƒHG¹æê¢[UØ—DgŸ‡ãµËV«å0çÛ8æ£\¼ÝþZ¯a®¿fm×àaÀ5jî(!ò8þ -ƒþ¶¡^€èÍ{[„ïÃ÷ˆ’<ev99Iò¨"…6‘ -†9ŒÍÈÜ—Ñà£o©¸(J‘Ô«‡¢£Ú>áØÒû§Ÿæ¿òç‚F.“@mô¤…{ *üàYa^’>#‘»È^™éµ]M»ñ!O>Ú6:ì௽µ©ß¿Øüäi:.C³ªwtã~êËRþÚÐxùܳð›A£^ë€3w=¨ÄËM¶ï9Ïqºx+ïˆäš§(·%Ìß2U‘ÂÙ‚q·¸«H.¿ž°Mý¥Óæ[ÔÞ»V›éïx"æk“Ú«öþÕ—n:™C
-cšÈá7Ÿ¥íß)ß ÂëÜùšï‰–PdÊû<€‡2¨O»ðK4ÿDí€ó]ë&²A– -K0É¡R6uÙ ]Þ ½ÚIoï»f€^êØ‘é?rËÈÒhéN¿³MzK¾3üºí±å8?•…ð51"AAžiꘫL’æ2=Fæ–=éû&û-¯uuY#RæýÁ)„ã`î„ •H1KwJ,b#DÌÔ*S³=œ2èqvÚD‚„ŽQ§nî÷ßáB0$fúî‘UMpšà¯š¦tD6•“ÿ1ºµ…ðÇ9Ÿ’®„÷x¬Y \Â,áüº§Òç5qí' -!ªUÏš(6ŸN{=GÑZœbIPÔ×â·ß¼<O™-¸œÕÿ²r‘›ÄªAhøCÎ1HltÌÇâÚ6TŒ,XÇF¥Ên¾ýF6 -»Ý¬;öh_j%Ûº†@ßs ãµ×Y—K áÛ
¼ù[Äv—ªÞ`½¤ˆv¨Ñ7‡+}œ¡HŸÒ|v™ùËÛ¬Ð,!J<¶ÑSqÿ9f°Àï£î˜•]>hß#SlîLŸôq6q3H;îÉ¢–ÄÆUTt=¶kxR©MTIßý4#Ææ|Î*_ ̤QkJ„Á܉?Ø?DñÞ<Ý fKhÁßwl£1Š¸‰2O}zzqÀ¤&~”zÞr,R
p·Šœžq—<%@‹\Âß
‡ñªco‡?ÜÞ/ú×Ñljçù®ý„¨²ÒÅ¡s7X
Gä:ö£°çZe²\é9`¶õkò$4•D™—3¶ÑHb²ý2HôüQ\`„mÛhf*“sbóà'ý©ÌJ&?ý(d0îæmè…MùÐÁ¶å̯L³Ö.KÔgZj‹¸¿°äQc»ÊÎÚˆy\•°‡3À44ž•Æ‰×O8SÀÊ›ó‘Ëm¸4"Ñ6yøâÙí -vJ‘ß¿p鯛l›:d_gB÷áú Ó~»t -Fê^4½¾sŠ5%Bw/k~Ýw½ªˆ˜;ÿ\'’¶a†òñ͇ñ· .’µèN~T1”t?9¼lxffÌóÌÀ— ¶ÕAÐX-^ØðÙa–ë|“Så;(Ÿô¶JNm;~@‹°°a-ö{»Š+eü2·mÀ3yK¢<’æÞ`ê -Òõ涆‰Ÿ 1ÿª¥û<âÇh^ü„áÀ*dÄé~êX”+Voºñe¡âÔÖåқÔæÕ% -IðN-ú˜cÊu¿5“‰¶>¡ü•Ûˆ¢…[0tÛòÝí%÷ÚRçœÐÕEïñù[#û{Rñâ"+Q
¨Q˜JšzAgXʦݼ™Wú-cJyû(ƒ›K’êD½9Bº<¬ä¤’¹.Ÿk§EE˜¬Ûæà]¯@w×O.4~Z¢ÜFµÒEibK<kMâ;(¬Ð0‘P×’h#Ž;·Å›œuN9À)ƒÃð9˜t§˜¯*YPgb@É:óÏYpè?ž}3¡“ÑìÑQÊR¤'Ã9íû!ëÎ|óNU²¦[£2É0©„üà{¯ Ñ©#Öû<…Áü4Êþýùa©?ü¼Ú¾A·¸—KƱ¡i}l}‹M¦ú(vr«P"fôŠ*^ }YÞ£K®ðË™p&nä.—þ5FU‚ñF4žkò]a£µDb]6ÓìD#0Úõ+¹«ˆb{”^™R£Âj>7 @ÆÆ=óYZ[åTmWZ2JîQ2²Qeì£r›+®¦~"þ•»Íá i)ÃL3œºØj/:ïñÙÒòЧDx:sIßmšÝ?W\„¤˜0¼<ai-hT. ‡¿¯g’A–öŠ~Юo…7keEEÓ—’!LðU’û.µ|§1Ð9Ÿ?Z¾ê¶M®2_n4è 66å0¹H0ÌôoÈøa[ôcñåï˨¶Ë®JÏÛXµ2åwdíÞÔÄí}îîÕÓÜŒ¦µ -ã{õ{;ŒÛ±Ña"_Ç/„°KÛUàŠè¸Kh¶kj‡w•7ÛÁʤ§^JóÏjVJM¿Úí$å(žDЄ¨³ZÇÒéy>‰|GZ5÷tp4.\P,5¿ -.üRø#.c+g÷¯ð”ãlkÑ´Eò-P›æO&ûïÓ³ŽfsYÎ5‘²p™Â¯ë"Aå?©ëÊqf¯²¦+„ÓÿÄà -Á´2ߘŒk”¸CéÅTÐô‡²£‚:˜ó˜¿8 -{½1Odyh¥Ø€TùJ^:–Èæc6±×µB -íP¾æ~ê=‹âAzò˜3æµvtG4pE9#.‰PUº†Ü»zCçÇ}Æâ LP -L÷a.„º¤ƒ
ÒîBœn]×qÀ~æ‹yçÿ)‹'•üD#s‘&Ç>1˜`ðÀ/kY'c´¡èƳE ‘1K±ï{ø<Ùâé§}ô¹ø*i›µ#ÝRüÈ}bÃ1™$ýøsX?üU+·¦‚áæª2|Ų[°*}¿Ïþ5Ô®z`oA'å|³âÎP‘ -7Gjƒ}> >ˆ‘òø—´iÌè@6¤«ÛðkÐÚL¤…¢×úN<üŸYghi†ªKí[JA³†sl1œÎ£aÞWsö£ÛWT˶)À¢BT»[¸(µ–‰…ýHKŠru*'ì:¯½ˆ=d1lÃQ“–+»PÔQmÆÕQùDZ$!—è´9£l˜YñŸ]œ•dq…ÝL+½|q£7(Ÿ2ìd»²GàR"‹5—ãtí )ï]J)táê[ c2¨º.#ãý—åï`ì Óö°d+(sEK¸r¦›% ØÝÏ? g'×±j×ýtòišïÒ——ýß -iÉmYÁ5ñÑCÀÓLí¯Wù )É'³…BO š‘¨Li¨¬3Œë†*¼ õás3OzU¶Û”`…J#€©xÃ!Ç -LáCZ±ÿòLZå$’mÿ†ÏÓ×=O€–Pt®|ø:²ðj?âWˆõfm×?n®8!ùC·"ê5<SJ¯“²OfY -Rp>9,±4%¢£¼ÈoJLú¥N®yæ¡oSj› åÑúŒé남xM·qCoŽ¥K¹=¬ÝxmPE»‘–× vWÂILE³ùu³bÖ[â*°…ë9x÷wµÇØwá‘”}M’V2Cßçñ¾"ò÷ħʉåÖ]B>¦ÆeëækBz -ÊXû´0MßÎU»Èœ ˜‹8&ŒSÿùnärKx3{+ÞÛnàá -0ʬpÂt)ÿNðˤ—zÆŠ@̳k^=]©õnuœ§ü…¤eyÍ„j‰8ÙÂH¤i…”]LäKjOÔ”*Ó…kê†k[„Ÿ¿[@Z\;'“tÐÅaÅ[)a»8¦cm÷ˆÏt£Pp+MDL×bû|¨b1y¾#4&ƒ¯âw”qi+è!‡hæÖïxQ»Ðý"¾;e¹ƒO8Âz©Ñ¢æCq5®Í¥+ÔæôFŸ´ù~A×¹1×óbÄÆËüšN)«¶I;Rñ€”@xùL,ç(S=÷}¹‚Χ®–¸Ã1}Éqœ|¤å8»5‘þ·×úÚç¥!€ñ5®Y® -îJêÞ5t*¹D³ã9ŒþÁÔ)AV)ýK\Žd@æ0Æ[‚‰00¿ÔÛI”eIõ
Ž¹¥ ŒaØ&oäx¹—ö°ÌëÝñ‡þî…\¼%½š.²™{!µ£ 54\ß!µÆ?`wÒ¬E»œSѬ(› uѺ?^|êƒßvkižGäZ³6ž€Ï6Å*Öí…y hŽÈõ›\OôÜ`&;\ô(áü:Ç©Ýân´v(Døâô<i®ŠÄ²Ç_ïbÙÑ!dá*7b¬écñ™GŠÙÖÇŠ´Ùå›licÈÓ©ÄKVµõ/Jw -,J•zíÖï´YíRú˜W™ö<ooÑñ+L]rÃÄ3¿Ò°¿C\½±bc·ªd€ßúÌp¸àR‡;ž×Ç7I†s±=*/¾2»v8òžV|—ê½Wèz¡IqïâciŒæÔqœ÷-XùtZE•WÉü xA¸[p±Ç÷I켜…8 ƒÄð«Ofû’J½É4?¢°!Þš¢T7áD,XG’\…›¦© asY~ãˆÔ¨ò‘^b¬çOH݃7’¥âÿ„)Zs;šRMâ¬,Û…ÅÑÜÄ¡Q½ðØœI˜K?L.!Ç+Åîí¾ž7صª]äàðÀE>dˆaÖgÙÛ’ñFþ148¹¢ßŒÇ%‰»13#r¨MÔ°4â8‰ÜéTÃÛŽbbÅiïй$Üꢙo¦žRk¢l&ÃÆ«zëKB{¦k&×;ôÜ"di“ óGîÞÏèô•D§S5}¾ÒØ’Å*ØóNFoï@Š'}è/矓§¶Rf}b ‰hæBds@hé1 -7`Q'YBô¥Í]ľ²†kï×Zü{Ùïç‘á³’çÐgð!ã’ Nn¼–¬îTâžÇ6™!x~Áx¾¾†]¢ìñ$nR“ê -ÜQÍàæÃÁ«ñX±Ø%ZxNç¨ç”tºðà‡Um½_a°HR¶3Õ"Dd¯q½›$»!
º[êуA±Ë;]3Ž=ßcR|ëù’”ŸÆ_Ý™ö6æ-þÄ{–2¨2ÏRu6›ããžVX~V±üÖ -o»˜š=ªk¤íѳ€ú倥¨ûü -Åq\`Þ³,‡1ólw:)*Ü F Ï_ÁÓ+øªÑ"¡8cöFÀ5L¼{ÂrsH¦D"('²—çReLüƨ“sFòZ«ƒg[>¸´b‹¤wW,¼@•© tNlÔÄ{=ãÝ|üS/³Ì?!7vw¾¡Q@ØÒ¢lÎAµÅöö&N¼ÍÈ -o”ã©J<ÛíŸSš ¤i˜Ê§~Ĭu;àÍbg8³L¥w}²³,'2iiæýäzºk×Ûº„–~NûºõåßÚø±ÔuÊ«â€ÂŠŒ½NÄ·Ã,Ñ/YÔèO”Û’ïÆ19øC00eÁEc•æ¹v\¿MÛEÂÄk%À'½‰´ëžd6$kŽŸüHLب¥fà"°ÆèQŽºüqwÞ¨Âõ–ØßHªU-^?P‰1r;Õ0›,9ˆ¢ -#ÞqÔ¹¯WgŠ"=‘H;n&¾³ö–2Y‰BÙ³ç²)î?ÕçŸ}4‹Á]=F5úË—nÜŒîôwçá,tµ¯kΉœU¾k£ó‡s“VKZsÕ‘/d?‚ÛÛ;î:êzpµúíÀ´""BÛý`“ô†v℉eÌ"¦>‰~6„¥ï'YRVfåŒY½’Ÿ–óTîèæ‚tÚ«úåÞ, -R¥G”þSÂ[ñ¨E«ïäß:—’LO-í;¯®It• ñDR¬\$ò³Ï;•&ë÷ã€^j£nŒüî£?æ}8Î=dÐÉ…¥ç…„ -¬sÉ«t“J¿çî‰ñ&K"’Ý™¬ñ3b¡ùm)pògõÞ¨Ò@7ZðbùZëë3 $‡–}ÉR?Vô]×s³ëhœHª'H¯œhaVþ|£ -fi§b…¢ÃlùK§Í…ý`èñüªÅÆÒ?ÿà9;¤Kg±'¹ ‘[3£!<£n“7ó˛̆¬C<²ý|1&‚»ù£ßÛÝN|«‹ù¤qµñKµŠ§nÞÃlo,Á -§n
ªþØü‘¨n9Ñ羘cá*ý®Vó,CêpÍ›„H hÃ&.ö}EMÄ¢]زÊ:³š/5C¸À7‡‰å ”Ûñè™7º5¤:êÇÔ‡õ¥k¼Žjs‹f&1¬KÆZLsØv¬ÀqUµ¢RÌÎZñ5¨¤¦|ßCú£•Ø8ú¼Ÿ÷&d‰ç›š ¹¯õ2¥/Ô>)kYõà¸s†Öå¡©½LÐÝ(^øYv1«À,Út˜•IpÀéÌž8™?ÐÓø~!OÓ¤[gàUbw³´
úT:ÁhÊ˲sMZþ÷œ‰Òb–= ;[¥$´ËZÅ_WHÂA¯:LÊÚ¢9ÈGÑYì¥b›Ï -×
zeRhPzj#‚N ú˜yújtA‹Š‹¦§e’²É°‚ÄÙºèÄé‚;§g†•Dê¹S,ºQ€]>TÃ.X
»”ÄüU›B]8÷‰k÷¡²ìè HÛa¢Ùk^ì‘þ'í}ƒE%·š«Ïòâ[ÅRÅÙ,VQ…€Ãù®:Wì ò1x˜ÅÉ„ŽÌ:ÏÃŽ]é%·{²Èï<v»Ã¾A¦1¹²ð›È9Äîªl«ðËc¯{0;§°,ÆıÝò[sèñSü¬št pb‚¿ˆÛí”&æ¢Aã©Äõ-!_/‚BPfÌÃѯjcîͺ¥¼uß°ÓÀî‹çìÉö7«üÝ%DŸÒF -ÔÚ½#š4ikíóTFyžÖÎø AŠI½–ëÈÀJ7)‘Lkè„·~ÇÒB¸KØs3ì֤̾ÕB{6é=]óÎÙéyʵ üÂÑQû -÷§@_8èm¡çö? ¢Ç¦‘]ะ×É ^Â¥ÇWs®ŠN¼â óy‡è0Óà-\—¡`fo¹÷Þ¢³Ò&S -Šp׳Xxçý3SËŸ²Öî´©–´…Wë¦v¸þ¶_úÙ"d–üSe¡ýYêíÃI íB}¤ÈÜ`”¹ü.E÷§íÖì -‚HåéBÙ+~²¸Yé"ÑY^ºÈ‹]¶a{P!>h¬Wáæ,@a&##€)E+6R]¡L˜q“Ëó§G8ëBçŸsJйSjú -–%ˆß®5[/ty§åVëÚËè©2—f&,b0C”¼qbÜ*ÚÕæWÒ©=n7]7Çm2ÔÚ$Ú7/5^õÔ?S¶ý®„žÈòNòvÍOéC¥ÜC½‡:R×j1ÉK–pùÁÕ¸´î*ÓŠŒlÈ:á4Ñ¿„0L5‘ð3[j¶]Gp¾€Œ¤Jpïz t(23/L@öcEƒ¶‡Iüy{I6£4ýÃÒDò95‰ÌâaÅÞÖg¸ÆaWž‚i…^››J<Þ&ØÀ©¿ÎèugP:¦ì<}vSs¯j8 À+$f¸”~`ŸAN0ÍÎy¸ê=(UHyJ³þ|²õ™(À¹³o–X³Û§™E –:b¢Ó”u³ñTÃzÐ4}qƒü£ý -á_>ÃkØDG£c’§8²Ï1|° -‚XXÒ§ßz¤•tCo¡Æg$‚>½Q'µ/ÓÚ.÷#SŒ[âa¹ëÎsœa§½ØM Wå³l¦ækÌîØ5>=Ä)ËwôæJ9Wvg«ÞkËŽ2|–‡‚{‚µ='æà9§/[ÙÌT‚Dó†çʳŠ–žyÂϤF¯õÙ]eÿ¾Ød^"„þ J¶ÔÇ:ÅÄzê9âMÂh³#P7œ¢»£…ÀÙkšžò7(P‘ÅÈP€òaÒ•éÀ}ÝöëŠ,$ê&€×VÖ@b)]‚níòÔgê?Î.
X½VÖz°bŸžãÛøà3у¿[B!¬¸à‹0|ù¬°1¾Ì%Y¶RhÇæüÅõ¼LçÝbÍ”lsœRK'äîP÷ÕJò5äÐ:^¼lµþ¨æ/-"H:%§`#¾èµKv’cdò¦daYŠòTaØ ÃløK.»VµÖ"ÔÇ”Ýè ËF0QÃ7šÃ‘ájR°šðð:? -{ó×Zû0'æ^^TK‰)—&ž×aj ¨%ùìczÉ€a÷ô…¦‰^n¸¾‘³:òÉï&/_!•Æ½:0~¾î»ãÉ„G
su©“4ûºVÔn:-}5Ä}ŠRúãmïåªàªskŽÌÛd‰…(U¡\ÂzµMÄ©
ÑEÅnDµº“o,zŠþJH0ÿ\™Úkõ»mqWE)×¼ÈîÐÖ̺þâîoc黎[œI“QW$JÛJj¸ºÂ)'Ÿ%Õ)A3uñFéж۵ -õÇ*"Åô»ß8~¡¸à~†‹!‰zךb§Êg´‹æ¯}oÔý¢àÐæaiCÇn/‡‘?,ÊÊæm»Iƒ¬~©§à¯áâñZyó§ú™Š‡úx®ãª)§øÆRtpÄÌÌUÎz+ö$ÎÖÌÇOŠ¯ÏLªh’€¹eÒKÛ¡IâGhÒ˜åS” $¾5(D[ Vx±Ò/¡Ê‘…kTzÏJë À.Ç_N¸wKÍ:4bu‚jðtg¥+û”HåbÐÊhªôŠð%ªÔ™Á,–ĵ½A¼jŸŸr‚SÛ ôözF¼ëDÈNØ£ô¨1©þÁVG ÒÑœD¥ˆ}™’ˆFV†#s¹RI)p¿ÎwŽÂ/Pcé×ßט½<ŸjØtVmÇÈ¿®’RŠTC°p¢íßj]ºç²ç` ¾@ËÁÛƒ…Ô ð÷åΚó"v#ڬ͡F« -ø©,_ëgi%} -‡ÛÖ+·ž"-´é¨Zî.K–ع®ÓúÖàp¾W -%ø>U£{ü~èð¡É`8~}B¾-Z×=üé«XêBù ùùðž^Q@e¼tœ»|ìלPC -,ùÒ’j¯þ¹òÁ;çlñ{ªýö„—¯K»pNÀk)Óè²É ÷Y«2Ýœz¯9ó%Þ¥ì7þL³ {¿_…~¹9Lé>¦œaO*x¢¹Ô¨ÏL¿’ñÅWÄi¸žUÑ3l%Ø"pM|C³FvËØAØeˆÜѬ!^íüõñh¤^¢Ü( -¡/ÍÂaIú]€á?êù=à"»Ñ¾Èß
¬_ikS?ýsQÈù/ ¶2>ÀTá’¬s.ªÃää; v€)íÛ¢ñ“Ùqoh± -JO›ó0#‚ÆÙ±âIýÚÒ®®lÜŠ7£QâxÛ˜ËZeŽü&è?—Ž;þT4ù©Ü4Þû†ÚVyª»jÞqƒi1EY–ËÝ»&µ6BØ内êÝÒ1ñ!„c41ïýÖº
Ў锉WŠAkxg}¸ƒQ0w}+õ¤ì/ÙO)O
⊞t$màVg†CÊ\?/iÑwi5ô¶_W.ó®í$gÁušã´a•F&;ÂÌY… ÊðrÉ"ÌË–#¹<¯•”å,N1Ä«2n´Íõn³§ªG¯ˆ&‹a y‚sº‰ËÖíŠ -¬C@º6¥_ž¼6<K6ÆvÔ -v÷wÛ8Áß×ý¨iù1=ÕàË[cw<Iz7»„ÆËeÀ´°Ùf.Ý“Õ;jÇB†#ê¨
•ãL”2^ßw%éøh„¹›UùuºJ5=«6âA5{¨½]OøŬ]c2œ³>4®‚ŒÑêÈÁž˜iê;©Å¾sU±weÚëâQ«TqïëìñÖɱ?~ÜËô&Ø!骮¶¦¿®ˆ2™Q¿ôƒÊ²¦ˆêÝJ_®x¬[9Ÿˆï%ßÏÃÿXTUµês‰›$½H£7Š¯ -å+P¨7ùuW@Ùò9ÿƒÖ«œm®z5åqÔüGš{ÜEÈOÔæJä4걨ÇN3ôÊ{¢&¸GOo’G -MP()Ò$š×Ž·Ý/F†jÖÖ*¿L¼°DüÑJ,Æ@¨£¬!,Zf92X>À~Њz'0E–œSL<Šp¯”¯Cºå}ýšà]²ß¤`ŸðJß®¹‘JÄšTß(ÂT& -î€þT·bgJÂÿ\[!;‡Nµ`ÔhH:óƒËž$)úµJÐßù‘ëBXѸq•©eÝ÷ÛpÌc¹Û² -ñlF»ÄË´“î‰Yi RÔtõ«= :tIBd•Îͼz54fsÁ¯jÃ-0D¥êÙ›Ö½üpë¨Õ¥œ$2Í…Š¿uËÞðSëu€¬’.ï¨Ñ†6oîjŒ&r#ùÀ²(º) -34‹>úË—âl¸ê)8•C7ðÒƒ¤kUǸ¹€//É×`rHRôHåý5KÅMOÚ9ýà{/*ƒæ,¼HÂƶ‡©gþxvç’†"² -²¦!<]ƒ±Ë¿í‰HYFù•èŽ^KshšQ’b½Ž=GÕ-=²&‡æéï¹z¡ÉwZÕ–W¦$¥é,ÿŸ‹’óé¿ßým¨½™4Ý(‡.ÈVÞgØ â…#“¾™û½¬Æ±nùêNíæóuŽÁÃBØÕÕpÃDÉ«[5“+£H5?¼üÆ.ÙÆùT¨41ººí1Åú%ÎáØ¡*#å±?ªDúÐaó‰ú00wÛkÇNó ´ß9ÒÁ¡ÂC -ïåIÐ}¾ËûÈd–@OBrÎ"ˆÉã,#’Ë$OoÞ -w | »âÂöÛ´Týrˆ/ºËè8ˆÙãÐ8m-,ªŒ£ÛÃåéíZ{[„ðKšçß%[M" -ú"Aîû˜ƒs†#X}æÌ—¸~6³1*5Å-:X¦r½U\‹EˆföŸ -æåS=¼ÒÖP9û; ¶R>Eã¥4ä ñ¥DöLå«ß"ZìÆ .5à‘Î/è‡û"îØèMÄK²ea°gýç(E :¿µ#7‡ -kµ·¡¶Â 3íÇTIøᮿR´ xÞä¤~À2KY¸7§FtP‹õ*ZÌÃÀ“ï}Ô÷á…÷`âðER߶@¦Æø"ê^3H*ÍcéZG¥~?ŠîÖcÐw¥¶7αÎ_zkBâ½ÈþvÕ¼[Š"e'ä
±ï¡¯‚º&Õ‰ï¶/¾à~áãCºƒÑWÀÆÇŒ~¶ê E—ì v¥÷‡ß?Æ&*Ï“âsÀlÕHú”í,ôœà×›CâܗWJûmð3º^LrŠt›ì4?æ÷bÙ†Æ`’Ôi(„%|H%"JmŠŠÆ,6#9“w§Œ{ñŠŸ‚×ÂþÈÝ=óæüçس¹ÌÑÉB²$²î4ªÂ»ôöòƒçž+mÂá¨ÿ•%§:¿ÞܧþwLÑ9å¾HeV˜zcÎVN -îÛ7ü‡×û -²VÄÒ`.à›W—û·ëŒÓ²{9?Š/ÄB/‚@ñ9RW~ÑÀ¥ŽJûáÞ¹¨ÇÓoÚ1À³‹0zhIÊ$@¤¦>Z¸3W\pnŽóî|#~PWþó&¶ÞUõ§<”s‰,ÊØh>„ªÇ-WôÙjäkËom=8_ -¸ -Í6Ë<dÿvÐ7Äëx.#r ]ª’ÆP’}ÀÏ,˜z¤*†—ä&½ò-€MX=¶©¤'UÍs5rbƒú#&Š;~Xûª«´Û;sÇÉ'³zY#Ûf²‰t¤RW'u% 7ÙÅÀħ¸ÇòåOËÔ.ª‰™ë21ûZ©lT·B3KÈz_zcŸ{ÞHÅ&e‚ó¶ˆÆ{Á”ñE½¼»Üš‘ê‚FÚ±AGB¯Þ-åùçÂèmmz“åïáNQÅ¢6—3poÄõ0òb[×¾«ê´>N&=ëõšÀçøö^Ëê&×).• -4…)Ö
ºÐ1/ÀÞŸwuZFpd÷KñÛIÄàŸÊŽ¼°<Ý0’]ù{ÁO èp¦C×¥âHv¿ù7í¤š~JµbìIúzÇYŽí;7@VäÓñ»Í-åpª·~½‰*xÔPdlÕã£?•`ù8n‰’^;+SÄSÐáÐdJŸz“8(ö=XX–Á†h\.›Ãá+ÞŸ…xCÖž²JSæmÄ[ h}*;òbj»IÐ#ö\[¦Ü.?3ßø–ÀÕ,úIީПkó‹Húê,¹>0æÉ2Æ]IÓOÌ v]²H—Îy©JÞ$"ÿþz¢19¤ÍƒƒWÁˤyù@\Éö’‚Zö‡+‡M4ë4¤´èXù–ç´$êø?G;ŠáÖM÷£ûdŽEß‘R´5ÏRÒ»¾tµwÙØ~ó+ûýyVQBÂââ±ÆIz½ØŽ'4t™gOóIbJ¥‚œÍ ~¹Šôá—K¤²ÌÃî<ó;Õc–ÎŽ“–n÷…Ùn•am1®ö~`–`?“-Çë~-" £¤oåí£6•vtQŽ¿CêV‰>j†ŸÍkÖn§tAîp¶üálæUÔ ÀØPRtZ”kkDV‹9Ñl¿÷˜Ï…pÖþ£æ™i‘¬²UÑMñÁØ¥†jY ÜÔðBîšu¾rš#P®É9•8®TÎ…ž›v3˜p#œ;@í¿Äõÿà"ð
€GFG„Á#C¸þˆ;|Àendstream +xÚ¬µcx¦]Ó%Ûv®Ø¶Ù±m_±mÛ¶ÝI:¶“Ží¤cul»¿¾ŸgfÞ9žo~ͼ?Îã8wUíU«jÕÞ›‚DI•AÄÌÁ(á`ïÊÀÂÈÌP°²3qs‘w°—cu°5ü5rÀQPˆ9]ìÅ]¼ +`e°ðððÀQ +ôtý'— `fåâhkìõ7÷_0Gg«Ñps±²·ø/ô +ĬsÍXŸë%¹Nfß{SÊ*åP„3]lÎ0×Ï4dîÅäOŽHþ¦ ˜Ý(Í hõ%gç”)'ÏOTCã£#Ã}·‡øtù °|1NùøB:êÕ>Q´ËGÙS¶XÂçÌ}#ÒÜXœ‘,‘|[Õ#~WØw'Š„ªð£Ê#$n6ÎÞÁ)óýxCÉ]ûAÍæ”=$w?º>1$S®ÝdÎ ÖÙPN<3±ÌWêGâ¤Ý£âò +ã@]á~?ÅñïVìÁ¢ˆJM†³„‚ô_G)|æ¦jœ:ªSÛbÈ~,˜(£ÜÖº“£xõdñÔ¤3ÂW¢säbÖûº.Ÿ†Ç“Xœ¡f-TûnÝö†hRâ/2z}•wKª{?…†|ëþ÷(¦¤I{Ôħjäß{ôb²4ªR{È2Ý· 5ꮋ®¥o¼WÐÂÜöš¢ª +¡s,ÀñÙ燨×qZðoñS-Ýì…|7€°4\±uhò2â·t–û +C…Cmkj"úðÝãûò? ¤L›_LM‘>¨J£M&ÂÃ¥¹Ö›Bnv“EREŸÇæ«ÀZ§*ŒVXpÈqí$~Wóÿ˜\¶œÌÊòz¬©«TX¿Â4›÷T#x0E òÄ‚ùäNÕœjÛEƒ²¾ñâÈø¡Î¥7µ<t“[ß|šytl"†‹÷|ÊÍ6g"„¤jèŸe¿âûežU~¤ÍúƒŠö!8—q7¢rDìúøÁ‡~Y*ž÷3ó²ô½6"’E/ 3A~uâ„E9«X¾9y½L45˜>ZÇú~Vr—Ž!^Qê#®¨çS{„«;B¥9NG +Y'B +MüWVM¸òØšSöÏsˆÊQ;ôà#tîWôÕd°±ÌêÐãFþY[G5Ó»ÒÝÏtãâ_± ;!µK°æ¾3’ØmÐð¼]ˆÂ:c +Fú¼ªF&/0R=5;|¿ê°yöo1ð„-ÓkÕG#w©V·‡Â6
ùQ®ÇÊæ[Hd/w’#BG8MÌÉ=VÐácn¨¹)Ë4j†c¢ Û?áØ3fž¾òçƒG/’Am
eDz!*ýáY‘’áÞR¾£Q»ÈÞYuÝÍ» ¡O¾:¶ºà¯}uiß¾Øýh;/²kvôâ¿“ÈQýÜÔ¼ýܳôŸE£ùÕ gá2vP…——&âÐ{–ë|þVÑŽ@YaJX°e>(§*³ãay!^™Rq5i—öS·Ý¯¸£ïW]V€Ó±¸ŸmŽZŸúûW†Ùf.
´¬%h§ÿB¶N@—B£(ŸK×koZb±3ìó ÊÝâO±‚cõ®wíë¨F9j,¡dÇ*¹´ dÃÃ:ôgý½oZúi`Gg|e¶þȯ Ë eX:?æ˜ö•~#3úºéµã<;‘ƒð35&EAžmJ–á6;©Aæ‘;î'’#ÊoÛD]Ñ,À£’}¿wá<˜?&HA%VÅGŒÇÒ›Ü7³„ÊÒjE +~˜›ñÑ $¡ØAÔŸü;\F$Ìß<³kNÔÒ5‘~“Oç|ŒmýŠFøãR@E_Êw4Þ"X!ižøNqÝ[åûÄôë'ˆ +}ìD"`ž,èÛ˜AfU·oÚà·¨TÛ[³'œM£L²Î;òèeñ UU=O¤ÃZÞ4@Z3uò7ÈñyßÓªsÔÚR0’ö¥1¼7/‚¹R:ðw›@»Œbâ¬ßÞ>0éÀ©ßŠ‚ß˼n8—¨9KÚ$>NÎŒyJŸ¡ÀE/àoGÂù4°·#îoî–êi7uòý~ý€¨¶Öá÷0\‹@x:ò§tà^c¶Zí=`±óoö"´“BY7±ÕLf¶û2HöþQZd«‚mßha.—wf÷ û¡ÂF®0ó l8áîcä +…Mußɾå" Bû«CŽ¸ß¬Ìqq/سÖn%Œƒ´û°&è +ÉFl§?Xº„×Jf€^."+«^öyvðKÛú x¬/|äô0“Ëm¡Ù¹ê”_f[5·Î®?°UÄظ‰÷CÕ*a…Ç.ð™¢5I^Yko(mOq†!<]ÖÏÐÖFßôd„š@SÜuýÒ¸íÝ7$PâÀ¹ƒßZ<RÕîÜ7†vzC3¡,oÁbø§¾˜¢æ\o,fôüÇ7û5Ž_‡Ý7í¼»'h³P{Ê@sn½»éõ@‘åe¹}Ø£<WõÁO’XÁñö7ÇbUd¶äFÛqÊn—ú¯E‘¯ÊX*IÈÎØTØ„èûòÚÇÂ%N…Y~ÖÑþÀhYú„áÄ*bÂéyê\’/Ñh¾öc¥æÒÑãÖŸÇ”áÓ#MôI+þ˜gÎs[¸1—±9¥ú™×„¢[8|×úÍí%÷ÊJ÷ŒÐÍUÿᙨ‰ã=¹di‘¸Ô8L5]£°+<õóî Þì+Ö •‚C´áõ…fiMŽþ<!}>ÖÆHJré|·ï•ó’’*Lö‡]KÈ®wÛ'7/š +“OÆèïb”£»$„ß#´ï_åË^BYUÕò£bz•âÁ¾M«Ø)Er)àÆÀQ¨¾i—¯J×>¨F;.@.Œ +œ¹Ëì™J‘Œ?±¸Â0í ,×fƒš¥‚®Pú±•´a¨ Ž¦&¼/N"Þo,SÙžÚ©¶ Õ~2FN¥r¹#˜Íõm€o¬æCðfÓT…ÉPé¾IÁ~#ˆ)oÛå´\s=QÕ
â/=¤4{ PÎ`ÏYuJN•¼JÄ/à +%¦j ý–Ïy´c땘ï,ÅàŠ3ž“þc3c$a²…{s†¶Ïƒ¢Òë6ùßÜ@¤c™2Ù½’"Ód—§$ºNŒî%З¤K÷"#w>RdÝ<4O‹ñoÞªÏ'¯>{´C=ÑåØ?”>WFƒ{ ËÁúydlõ«0U})¸Úl‘pì)¬ýα˜žIÙ<°¤kñÊG!å
tˆ ?ÚmÈP¢Í8z‘—uw¡Ðêaî¦ß³)ïe¦Ž¸bQëÆvÄ‚VU2㓆ÔÔ k)|j6t¿ße.
ÙË"èŒQƒMWP[ÿ\òHÙõd<½C– Î!›ÉIÉuô
ê»Üƒ}cr$¼´`’“†¦PöX‰¾è—–X-Xü³5V~ºÞVâµF;«ó#ìGÍD¯€ÎàKêM
õ yû`ÊÂcð…º¿¸´6†çÏ®ß4õìÎfl?£i!e5¿bßg>Õ{û9A ® ”rÁ +Ù*¬×'5öƺiz®„‰Ýf ++Hê!±
®Ëö'Óä +ÄŠ§h÷„Ü{É=Âݶ¡øU^–ÀàžèUSœíê±¼ÛgéE¦oDs?X™W ß^®‹
B¾Óÿ…X÷Y(6ËCÊqZnÁëà¹Ïë-ú1ÿžæxñ˜²[ö©÷VŠ¨dm1i0½ûùPšÒNövHûs úat=§ +©gÖ<L®CRÁÐöŠn,ÆXcñµ;W«`S¶"Sÿ·ˆò¥“O‡˜E +eð5²v'úå„a(»¤Æ#r)†‰çðøË6-E£Í5øÊ÷5†ßý+f¨] ¾Â.ª…¥ábAðó³òþ7_†« ¡Å=ÚEÎ_k•-ó%AQIH„¦Æ.%í‚Dêä\n4[*37]ÈÉr4é*–›
V7m‡n¿‚òF#²À›ô,y*oö#¨“÷©$Î9f¬ÒÏRÒÙþ\ͪL0¥Ü¦Ò>6 1ðòê/6]³äv®µZ +_¸¨Àé«ì1ßRmþåEÆ„üPñsKªP=.¸#`@—ˆ>Qô›ð»Â¯_ƶ„íd¢ôN3×'M˜.ÆFrÔQ?žI$µ_«°úã¸åÓ1æOÊÊ;"ŽÀîÈ?²îwó:FÅ“|/{;þ¯º”ðE*´V÷$ ÷PŸ†¼ï'E›£u!¾$Hù+BŽ:´æô ˆŠ25íøµhÖ¦2Â1¿úO€¼ŸÙ§hémFƒjË[ÊÁsFó…ì±\.cá>—ócÛ—Ô+v©Àâ"Tû¸hõÖÉÅýLQH+VÊ +
jgìzï½È=dql£1ÓÖYkû^PÔ1¦\µU1…$:$a^טôNyãLl˜9‰“Ý\Uäñ’E=Ì«}üñc×(Ÿ²ä»r¿Á¥E—j/&è;»Rß»•Sé#4¶ÇeQõ\G'.*ÞÁ8@g`ÉWQ>æ‹—qåÍ6K±{ž0BÏMc×ûëжÜf¬¬¼ÑQر!kᣇ‚§›-9\: R‘Må‡C¶ Q›ÒRÛdšÔ$9WzC&Àç=²LƒzWuØ–`…IL €©
úÀ!Ç NãCZsüôJ^ã"–ë ÂçíïY @ËA(>S9|]|u
À+‹~³±ïL˜°Pš”ú®W‘€ +õ‘%ßÅÙ/»"
)´žTŽÑÙ^ì¿%.óR/ß2{ß¿)½†ÍŒÖúà
ýÆìuQ̼¶Ç¤±/×ÊWŸµÂÖ~¢®¨ªÓDGë»+é,®ªÕòºY9ç#yÔÊý²ûX£Ì9þMd4u_‹´ÜÁïy¢¿˜¢Ñ#é©jr¥m—Ÿ¹iŦ—劒*Ã!=C˯ëCÍ>*78ö<žã$`V!”¹äÞÜÁš¯Ä®x8ˆ"‡cÍúÆâB“ˆYíHu›ö(
Áz
¢ +ïà`íír⺰¹ò4r–ú¥ÍÃ_»øf¤¤ï§cžç¢&ô˜BoÂÕ¤7YÜ;ôXæëõsb‹W…«L9ž:=\Þ«jö¾2–œÐÍ¡§³T®n1‡VtÈÓ¾LÌCôŽÕì=Ë÷ù”°tT¥×ÕÖz…ñ$YZ<*4<†¯i¤&A&Ùõ.˜n•ÇDÿ,égüáHÄ|‡ñ¶™µ“EÙ:O¹™6§ª ŸHÚVW̨VˆSLĺð˜ÖH9%Ä®qdÄÍi²Ý¸faîxqvÅøw»…d%uó¢0ÉÝœÖ|U’vKãº6öøÌ@!wJE÷²t!Ämöˆ ûjVÓç[Brøj'Y×öÂNY +ˆƒ÷ÎÁõs½/’ÛÖ[0ø´ÊßxÃ/¢µÚô"ü(Nc&uyâEB:\>è³€v¿/èzw–>Œ¸¸ÙŸ3©å5¶é¿U@<!%^>ÓÁ£*8Ë•ÇN#ü^.¡èFj$eoq`Ì^r¦è8OoLe¾À´¿öùh `üLêEW*« +uóÁBˆ‹Ûª–õ›ãðü†Ké|^ŸØ$ÉÃö¬:ÿÊêÞYdäÌZõ[nðIZ¥ïƒ&ýMp‰£5ž×@ÄqÙ·dsá×mSY#Oô‡àáiÅÅžØ'u0övFä„ùžP( 1•}äG&ý&Ûrô€ÂŽXtc†BZsÔŒ¹h
Mvi1ž¡!„ÍcýI‚#Z«ÆOv5„±^0)ùû¼™T8
ÿLñ/÷ßÓª"cÉ\Uå»°8Z›8´ŠÂcçÞ +Î(ÒÚO¨²?1ÐDµò r8!´õ™D±h’ úÓM~ϟǽ²…ë†î~µôqÜEÌ Ã7)e§Ì£ÏâCÆ'C_{/[ߪÆ>O +ºíää +ŸNvYÞb¡‘±#Æ™uiÃØþáòD„Jº
õJÌ)±ùQ'óŽéE½•+lx—.U!’o4Pe†»> ½güÏ/ hß÷
VŽO~^ÔÌðåHàj!Ï_®!‰7¡†:£L[‘xs¡°öJƒu-{—mR” ãÜ>1]ÃdKFq¸7}æ@,¶¼-Ç¢ÎÀCþ¨Ù³GìAYJ§øÕöú(Í¥ãX¶2À{ÅõÚ¬Çú=A$ÓbPI²4¯‰x¾V„÷c½áÄUŒì‚ü¸Úº»H!õ +.ø@úo‰.Aµˆ¤l”é +ZC¾“üxŠ>èï‡P‡ˆ%<ý`TTþ<¸¹Ã¨ò~ROI¯Hµ•·?}ñ7lymþÕ‘¼%-€†|~‘@˜†l +û¬D¤AôùÙL—[€EfZæTVû=ÞžWðó‹OõtG6ódìøÒfÜ_J‡ÁöR*iÖƒ¶_Yx}|!.ü9l½~ÓËöžû–4)¾ÜS¿4ØX½½ïü1Xš¹•.Ä!O 8×û…m^üÞ£ql1. ü‘B&xdûÎ !<ÏH›?©³Kì›ÇAà’°ü‰‡3ÌXo²Â°2fËÔáê.•I¹Fÿqš.ÜJ’ŽŽý¨Ï;µä€Ø”ue½ãVX ä¯u¢èLJ{BÖ´Æ ±ˆèŒ×°ìÇíç&íò-MÁÏÌ b²á—“Udf»[{¯â…LˆÌCü¬¸"ƒƒ‹'‘‡x’cEµõ]G¶ò¦‘îiæs*Íd&„ç•ÝÖskÍ6ÓåøQsèNíË°k—ËìÉ_ßoQƒ.ßaÌ/ÁsœSè×òy® ëW žc.©h–C>½t>!
|x 4oÊ°úÀ׃Õ,o-LaºA7Í°Í7)äó3̆VfŽ$0T¸Ÿ9 +ÚŸ¸\@!#^dcÉqæ’ù-$õR‹ÛGÐÑ‚ÄOL!¢köæV¡Rî6æÎrMˆã'¨_dœjÜõŽ»¢'Š@z£æìôü,–NÌüua„¥¤|a¬hž~"^$6Â^°|ÒR4€†ž 0©Vb"óãÏ ž‹#A†L6G²»0…
Â3ê6ùD¿‰‚9È\Dá:ÄûR(¸ë?}=$7zOª ‘—?…!<تyë<Í÷Æ
Qš?ab{¹F +Mp.Þý©\B„$–AìÔ‡‡}Õ»X¤ ñé£×B?¢)ÚãŸ@´Æï 4pÒSËý +±5Á¿Z¶& +Æ<H)]Ì{Á}꺽0<aÔÔ.’mWâ#ªš,)=Îܘ’)nÞ ˆ=@öõÕ<jÔÜId¶QГörº+ž¸7rªXbD¡jºçÆœùaŽG¨¸Y/°kÀµl"%¢´™º:ô7“ˆucË©èÎi½ÔzZãß'W‚Qn&Z¡gßè!ÕÓ<¤Ý¯/Ú€àuÖXž·0‹f_6ÕaZÀv`M¨¹ª—1bvÕIü‚Jn.ðK5bø½ÏÿãΔ<élS+1ïµÁQ¶ì…Æ7õWv[¸!MEXZ3tŠ·`~¶ý¢fìZp‹.fõ»c2p&«7^ö#ô¾èÓÙÖ)xµ¸åí]££Áµnešc›JÛŠÜ|g³v$BÀ!W’Œ ¸U¯èÎViÝ +§vÉ×%’Hð«.3„ŠŽX.òï˜ÀlŽ²HñÍgÅ«ÊFýri4(}õÑH!çDCOÌ|Iuúà%%Î%³“r)¹X!’=t’¡“S£*b¼iV½è6À.?ªQ7¬¦}jRÁšm‘œÇäÖ•ÇpyNL0¤ÝñÜöè@³Î¾áµ’2רcíågE*ÉR™Ò\'›˜bàáÂw½v0Å8<'Ì÷’B'Ýg‚§ îŒÁÒ›=¹Bäw^ûÝ¿`³Ø<9øMä\5ö5ø•ÂñWÈ=˜XV’¸…yô„i 6-úDA8qN!ÍŸ$öÊ“ó1 ÔV¯çÁ¡(³h—µM±wæ=Ò>zoØMé`w%óäû›ÕR÷bO飅Žê>‘ÍZtuùª£F&¼O¿NAJȼWêÉïÁJƒ6‹¨ÌjéE¶~‚ÇÑAxH:ð0î֦̽×A{5ë?]ñ-|Ùë{É·"|ÆÑQÿŠ D™X<èkeà 8êª=§fÀ¦•[ä<wÐÍ$YÆeÀWw©Ž…Nƺä
÷}‡è4×ä+Z—¥dáh½óÙ¢·Ö!WŽt×…³\|çû3[ÇÍÊ´ú«ÃyÓ +6eœn&`±Òj¿ŠäzM’äÙõDè.TbaY˜‚ì!Ɖo36ðõ‘nFk„§‹pi›ÇýÄŠ»iÈt‹Ç®:Ó5º²0“¼/ºI´„SyÕïɤrJÝyúì¡áùU4¤éB,¯˜”éZö} +Y4=ÊB<7ïm覯üë÷¯Ji/¶Ov¾“…8·-’¿láöiEçh¤3Ókɹ[x)ŠcÝk™½¸CþÑy…Œ¨Ÿå3j¦§Õ5͈WÝç9XÁ,2n<ÓK{ (¶P2“ÀŸ^Ši’;VèìVúJ)'¬ð°<ô¸O±Ó_ì'Ñ«FX7Ó +4çv웞îãU:ûò¤]ªzrÔîtäÆ?+ÂÀ½ÀÚŸ“rñ\2V,†mg«@bøÂBòØÄ*†N½àgÓb~õÛ_æ<žo²,Bÿ§X``âN¿aÕ)`Ѧàt8hOÐ=Ð
‰CálC4ƒÌN©Éce)Aù1éËua‹¿nôDW“ôÁëªj!±”/À·vy²ôI¾å”®Ý‰¨hß[sÌÌóo|ð›êÃß.£VƒžóG½|VÚš\ä‘®X+¶J`sEsߧ¬Ðû´Ú0§Ø¥‚ÔÑ{8–À}µ‘~
;¶M”¬A?¨Èˆ +‘MËÂ)ÚJìyï’盾°+ÛAX•¡<UuÆEÁ°ý”Ï©S«³óõå0þ +èP…ÃR œüZþ¸»ÈÚ—F*þ/\<>c43‰0ÿB¯u!u•ŒA¿8ÊNÎØÙùªycPÏ¢/’ü䄆¬äÊfI˜vÐi}°´ù
1Úd„fÍ9~%Ù ’Ã"´ÕÅkƒR†à<Q9˜ñ&å÷ìôNJì +ü•Ä;÷´ìCc6g¨FÏ 6Z¸ñOÉ4nFíÌæ@Ÿ(’j½9ÌRi|ûÄ«ÎÙ 8-J_ŸW䛉n¤ÜLá J¯:³Úl
j])Tʸ—iÉd8r×KÕT˜²†÷A«—h,‰BuÖƒ}͹‹Sðé€mWõv¬Âë•h
+Úþö…G«I.&â´<¼Xh +¿ˆi_þ´° z`?ªÃÖRf|°¦ˆŸÆúµ~š^Ú¯x¸m)h³zã%ÚºH—ªíAéºl…Ý”ç68c`Gàw©XŠï[=Ƹç(àï–†ãß/ìת}ÅÙ+¹†¥!\ +ÒTÅË£A}f–ü™‚Ï$±*AËý¬zï„ži'ɉkê–8º[ÎÂ!w@ìfsñjàd€‡XH+ýèNY}aK:Pä +Š€øÞ à ÕƒöEñnhóJ×T—öД‡B!p±•ù¦—l“{^.¯Ð ±LíìØK˜Ê9ˆGxC‹€U¼VX–ììÆ©škð*û}¡óŽÌTÝF[|¨ÔõÙa—UÃÔÆöIœ¯ÁVÔæé„7½&$¡N‰pˆ®Ç}E÷År{UchX•è'Mí¶Ì—ä$,ŸëeÞ·ž1ÍK™•aFïá{, -ÓÀ‹*øg•ŸÚ6`F…LÎsîã$’tdÜÜØy”®Ç¢%šð¶1W´ËL
Ñ,uþ©löW' ¸nºó³«öÒpÓºåÓfŽ¶ª¿sKn?]j‚°ÏÓ¿¡gæGˆÀhfÙ{Ô¾ Ô‰í’MPŽEoødx€Q²t•y Q
”î§V¤óMÇL9‘5òh°À!eŸ•¶¸¶ù8¬«”{†ÔuQ°b‰¹BM‹sÙ²É “ÿÆÌ]ƒ ÎôvÍ&Ì‹Ï‘'½8«“’ã*I5«6i²Ëiw ®š@¯Œ!e$}‚s¾{‰ÏÑëŽ!!cPGÛD<À-€s_|ùbò´ùAðËQó‡ú-š"ñŽÓ&”Ø5‚µ3~‚Šz½òh!Îi‚é!ƒ³ÈÒ"s‡¹;o˜n¨Ë¼
8þßÆ”$'U© +v.Z[våe±àÞ¦§°†`G‡·^—‘žÄR…ÒǺOƒò^ØÔ bŽeõþ™ŠÄÀ.2¿AÏ»bÁ²¨¹zYÛbÛÙR8ÕohrZG’Äý2 +’k~ºk ´,x™-宬¬HÖìFÉÞ NžŒ„_ ð3¡¬yÀ=ΑYÄCç²(/ï?çïIþÝRˆ²¨è‹[_³r'Ÿ‰T™'´7”X‡€*ÿ|xÖrlŒIìèUFìžovñBW¨é±½5à+[™ƒã·¼Éú×»„&+åœÀ´±Ùg/<R4:ë&ŒCG"ëiŒTâM•3_ßw¥èùiExZÔt»ËŽ´Š<«7@µzi|ÜŽÄmÜb3]²?4¯ƒMÐê)ÀžX~j8«'Œ½sWst’g9èáѨVóìëî À–Ës<|ÚËò!Ø!í®©±¡–¸ªŒ6Õ¸ð‡Ê…²¡ŒîÛÊX©|¨_=›Lè£ØÏÇÿ\RS³îwŸ";Og0N¨ã/Tl0ýu[£HÕú¹ðλœ}¾f-õaÌâ{ºGüyèQÔïÊ‚´q¨Gγ*{b¦¸¿ŸÞ¤~+6C¡¤Ê:j]9Ýô¼w©Ûبþ4õ6Ä^
@+µ¡‰¶°l;âÌdýdRCúN'æ“DÀUzF9ù ʳ>XJ²éžÿõs.noÙa“’cÒ;c»öZ:ckJc£S… +Ò§ôSëÓ&áî`âìð2«oÜ“ýÛ²z6µÚÚ±]9̲MŒ¸#úSýª½©@Âs]¥`Þt:õ¢q“ÙtìwnÒä˜×j¡ +Ò¨tWj¶q,£Oí×Aò*úüßMî´tùó—ã´Q)VÅ1Íѽ»y§ÑÁL™¸Áì$Ó~ݯãvÔå\ƒóû ÝÓTùœJ̹`¿ÅŸ +ÛÎØ,kc4Üò9¨3~`"Q€p
¶¥Î6…y»L3ñ|hk$XÀMÁ=3Èš„ƒÆ8¯ó÷øúãÁWæ§ËH‘þ#9Lñ>Àü‹tú“ïüú†Çåħ٧=Gß™nÚ[ù²kcñ>þþci˜˜0±½ýÖ$dï4ï–7ƒIÉ=&ß’(LaË<ü;±!
O$caf%ïâõžvefÁþc›k?2H·Dâ"V•Áó§›#„M韤ãب—ý™Å¨A·”€JJmu`UßK±ýj”ùŠ÷Þ£Êä€ÛïÖ/ÊÞ?H_]x3áÂýsÞV +v£–%·;®ÄÙùÈ[Úãèß(v~݆¥À¹&=/{±¡MJ‡³ã™#ªCò¤›SOæÈ:I»ñ£WX{Ì5ö%{›ñp2‚D{j)Ë©‰ë8tT˜FËûU56…¸×¤à 6ž]¼Æ˜6sÃ2ôk£ªXÙ?"Wª¨T&ãUÖÒÊŽU&iÃÓØKwzK‘^:àra‚_Ò‡mJ¯Hd—&—q̪·Ïöz—7QÑÂÅ'ø ¡‘Ô”|w»Xõ©·>uC·Óè/™¾¨öƒ¦»Úéî–÷üoýËYtpqSù¡l¥®qõãõª9¿"Mq†ï³€xºôEÅŸK·š‚¸x÷O¢&Sƒ:À!ÏbÖñP|iÁSG³hlÌ0Ðl†˜/?Êg°‘ê§4F½ OÒ +¬5]“–Bþüd?Ã!Èa)±Ÿ UwW¬•×½é·@LôƒoÑ|p¨ôÞŒú˜Ë°Ôð¢‰OØžfŠ\ãà9]ËšJȪÈZ¾P„ðôùPŒ&†®_vǢ噗b;ú-aéÆÉJ
ºœÕ7ÈZœZ'ó¥ÂSïtj‹¬¯ÌÉÊ[3Ù?–¤2ßli|˜µ…Ü©†ÏÉWßg9D‘ÉÞÌŽüß×âÙ¶üô&‹÷‹òBø»&‚áa!ìëky`¢4¬[(TP¤[î_±K"b·q>ë†L/ozÍ°~ŠFp@8uªÉJ;EFn$Œ© +€^A%CÛåÜLrjùY¢žÜn\4ìZàT2'c6ê +½‡?„i¬yè-†ÇŹ(Tv–lè4Ä¢TÁÀô>\Jf>jϘøaøÀ1•Ü<m§afæ»'Nê8¹kðèRž;|(¦b.@nz#g[Á°½™nÙ¸œLz¤Zõ’Êáa+ÿ|ÿ)\ØÇKΰ‰b0ÕªcÓ,îó5Q5²Fg:Ë$nÅáÕÒõ΀Ð<‹OŠsº²ÝÙÿDÃO´0yw·„¥ÇÊ2ø½=
Ó{ú¾í‰±Áh%‡òRsÛUc"g×>ÈZô3MÃà^ÒË«gÔQ™¯£—k½5ÖCÍôòíyÇtÛÔ¨Ù`X¼’ã$’¦½$85Éi7ÍdWꙩ/ABI±Õ燷Ö\šÃbEPE «Î~øxâ;p6Ú5´£„ÂÄ|öÊ~Û`¶\3þ'q¤ÃsáÖZwüÈé.4v/'Áxjµ¾%Y3†
#óÇ6¬æìy|^Aj¯ä–Û4ÒÆÕˆÉé +V®ØäÊÕtßJ¿Ú™\z?K*¸6¥!ÑH³Á½Ù¥‹Lº|_‹MœMI¹$Ö›»Zƒ¼¡¹ ’uºKÅ“ž +·ìÛû'ãD¸Ø“²x};èþÓ–‡úŒ4D'P{”òeéø÷ÊÏÍùøëjˆ¬“q~½©ýë¼ñ<ZxàM>Ê€·ÅV¥V˜OëüÃwK,-èÄJ„¨Ôq®ÐÍ°î +sþo§ý™ +#¶cër!¡W= „´*¯g±+¡‘À#es_‹,2™ÊãœP+ÒpuMYÖP/ºÈ˜ü‰‰;°>Û[¼”ZDñ½"ºßoÅq™Ü +èEHÁU1u”mLz‘ìåÃh p;ÞAåO‚¼ïw2}íÞ–!F¦†Ÿ’)fmûì‚Àü M½ÿÌ{<ÇRÚÖ[…§—Ëu
Íc_Tž†t¾Ö“Þ©Û÷ŠUé„òPZÜ~›…–nX õCg› +ÌãR7ù†æ9`ŠÌy8”5bX%2Z}ššÖ<.Ÿ39‹o§œgéJ€’ÏÂá·‡GæõÙI°gÙ[ããÅ)d½ T¥1vÙÍÅï<wú¤ãïWÖLœš‚œ†ÇØâ3:Wª}ѪìpH¦Ü|œ@l¯÷ŸS8±åëz,††ý;x âMJšÎH#œxå8Ÿˆ„‘Þ¬ÝçÎQøù—ÈÞyK|8aç*Asabvª†ž˜L)"Ù÷¾¤B,ƒšqe>>þ$h(O®Ó=Æòè:ià·ãa(×ÆÞc1}œSBª=9›öÁï‰âòí§ÇØã®LYÛÃ%¸ö9¶Z³cçÔ%ו<7oø÷¯÷pn=¢+‚t³@wFQ´-Zå§;VIÿòÉòœ›¯ÀémÂYªíÎ)[HZe4;ä]æIÚ1Ô +ë¶ÓÍeÖåW[v»óœ¨ý³®èM6W(Js:L9þfzoÇÕÊåÄôq7ùX›§¥å;#=)GMjÓ§§°ó>7W7WB±Ú[·ùÿz¨w&"L>bq\½·„Ѫ~yQÕákÍ«.·úû˜¿W?¬>¥¢¡@#r’ô-”‹Ea]eãò£»JÅ™|šŒ3’ÞR£ˆÉ½ÕÐüJåñDáÃhºÂ’ð‹²wíª[*Øà©r‚kº4\¾`fÜ^î
?d:ÍûEËf™³¤‹M”ÖCÓ„osCü>Kñ•¹4ÉÀOõ62|3ÑÎyõž=¹»ú1¿¾^ž®´—Ÿ5x´ !'„ú÷On,‡ÒoÝy€ùbº…q²{m ̱ÓOkÏx†E+ÆÖÒ7ó!xìòŒF™³0¬·«H{¨˜þMû¾É^Ù^ÍIösìëôòC¨Ÿ/`u¨QwO¸øˆ”zŠãDÆFgÃî43ö¼š…¨{ÑÐ÷É`²lAoÄšCÅôìc #sˆƒ6>Êjv*AjNeMx‰@³ÓÆÅ£4ìæh7ÀP–gÂýÿµ3çÿL0 +Áiz“æÚæ†Á‰²ÍÕ²Ïm7ZÄUé×4(ê6•…zÌŒ¢PMpêÑýה¤ù†Ô(Y«»kªWÀî!`Ê£mbÄ¥„qgˆœíF2X3ó£æo_ÞdõÍd¥:»T˹’E€-ä{.1ëÉ +dÜp®ÈVã_¨¦1³å{?î:Wõß~Šœ©"LùQjƒÖ±:KY5bx„6ÚbÿÃÖëlƒx¢¥
~¥,£Y§Ê½I|çȨ!VÃ3µÓÂzG#•¦n4’£Ç¦ßÒù»oôu¶Ô~«Ó +7Ÿ+ó²Vï„(a=ÔÅ>\M!†rµmè÷È% +^&ÍËâJ€°—Ô²?\9¼h¢Y§!¥EÇÊ·<§ý#QÇÿ9ÚQ·nºÝ's,ÂøŽ”¢y–’Þõ¥«½ËÆð›_ÙïϳŠ5NÒë%Àv<¡¡ûÈ<{šOS*%älõËU¤¿\"•e†tçù›ß©s°tvܘ´t»Ç(Ìv«k‹qµ÷³ƒø™l9^÷k%}+oµ©´£‹rüR·JôQ3ül^{´v;¥r‡³°åg3¯¢Æ†’¢Ó¢\[#²Z̉ˆfû½Ç|(„›°ö5ÏL‹d•ŠîhŠÆ.5TËúé䦆zp׬ó•ÓrMΩÄq¥r.œðÜ´›‘À4€áÜjÿ%®ÿÿh endobj 1258 0 obj << /Type /Font @@ -14234,14 +14226,14 @@ endobj /FirstChar 34 /LastChar 125 /Widths 2834 0 R -/BaseFont /LQBWQK+NimbusMonL-Bold +/BaseFont /NSVSXZ+NimbusMonL-Bold /FontDescriptor 1256 0 R >> endobj 1256 0 obj << /Ascent 624 /CapHeight 552 /Descent -126 -/FontName /LQBWQK+NimbusMonL-Bold +/FontName /NSVSXZ+NimbusMonL-Bold /ItalicAngle 0 /StemV 101 /XHeight 439 @@ -14265,7 +14257,7 @@ xÚ¬¶eTœÝÖ%ŠCpw),¸www÷ wNpww÷ økd‡§¤u»€ìíÄŒ]€< `e°pssÃSDí<@–. -tøÇEp +tøÇEp ÐÖ¿¶qÒí2”"¥ŸjFy_ÎÉmBép0kìo)«”¼ÁM´}s‚»|¤ñ'w+ðǤxp@ö5Mý‹ÕŽÚ†^Wxrú5ñèñêÏðà@×5tÏ]NìJ^7(¤¯‘þŽ9‚:ê•Þá40éMˆ×—$šÞy”ø¶r/Jù+vroIÐé‚|‰òNR-{UZØW3‘|‰ÜÓ¹Ÿ«®”âÎ8|M„ãA½7SÖA“™°?‰î!®¨{üëlkh_zsg'•ÛKº7ÃìQ23†»V!‹¶88Szé-ŠÈZßʲÃìb“ÿ<Ìišð·uO[מʙåê;Õeâ*1žü =Æ:nâ(4n¼ë—jºÒQ•"/>Uöló½ˆtë% ˆ/÷€{`‰ÔÒE¨N»cj,Uoo–›U{Lê,þòÛ’`>8[œÂ—;1Œ"ŽÛd6k$T÷ó¤ï0ÃcÃ=ò8Àëø‡ël2ø©ÙB ÿ-NE>…°VQ?SÛ׊Û_ZßjcxÊSH£k‹_G–‘'²Âøøc±£~´½ Àë5ر3ìä=Í’ù9õC[¿êŽX? Cz!‹YÀGóµgàÝzŽD7 8’(GD¹‚Hñ%.fjM ýÈ#§:Ð YœƒNo‰ÓûFp=)I%ú&Ç.½Ù™£J©³k´ ¾< ý6K†#„Rcxü¸ @@ -14340,7 +14332,7 @@ M¡„£ÉãB¤&vIA{}ɨüØ?òXcçR&YØÜ„*3cµ,;S˜©fKnLXӌȊeL§KSü,‘Ó.ýï)•òýX©"pnüÁúþ î_æ7KbËͤ\Þâ?MÃòõ¬Î±Iž9ˆSïfâúó’Í¢qÖcU…D”R&ºP8ÐÌÉq‘púÛS¦™¾ì§Ó@K¹¥í2y4,ànzñ~†ŠùÝB‡âw¡8²X7Õ…VËƶê
ÿ/HñÛ‡8ž4ŸŒ[½‰;[ ]άT ¼HŠ¢oŒRUÚ÷q§X ‘ôö}‘÷S·‡¨õ`Yœød2¦ÐyÔ¾õ\¼Ã1?a#ò£uÄT!šÃZG=Q’›ü×Î]ÐÖc›9/±§dÒœ…i¬¬ õZ§¯‘6’4Lv+åÆËÈ/¾{Vsü¡æ;¥5Þ‹ÉÙ“÷°KqÐ@-Âú¥˜UJð¹;ÑÓn ïŽéU/"%ó<ÄÝ{ŸÉÖéFq+£¿
ªÎòêžëÍxì¯÷ŸQg›a+q%²½[ƒFe$™Mí%¸³År@]CÆ"pI“:%?0F»X¸_¥fÌN1¶Î®HŒ¹\Y2¾{Íï!"¹´èÊ6fB®“»Åõè¤ÑO0–0¿Hú^˜4WíagUv;Ö—FñIôüzçõYˆØýÂè`²ËÁ¬€óÈ5è”CPWžà¾2‰ssFHâzS汕˳ŒÍ¤ }<.ëÙiµD{ä\Ì£º9!özד!î0Š²÷V;Ö&Ké¯(MœV}îüøQècL“ÈÒÎ3ïAT‹ëêןÌ&Ê'g®çÅVÆ´FÚÞùÊy¢tc¬óºøÒ-yfgA‘zTz¼ì®øŽ-:y@ƒ¥±ÿ\¸"•?PVÏWÕE†È3Ê lDK\$UÔw¬>rß©Dè%<»ÕìÚW”åv\ÏÓŒ ø¿€§Jœ‹ê¸ -A}Ü[®L¼«#²GŽ_aâÍ¿KH¤ŸŸ‰‚h
¼ª»,_&½òîoy£pB7vKŽ£¬NhÄO1û_¦¾¶®rD™91Üð)ÍÞºsùTAÍöæ÷Ý¥éëc5?Í‚ÒÚ.îçþy;4Ûú/¡üà"€ps°óòñxeç…¤üŠóq:endstream +A}Ü[®L¼«#²GŽ_aâÍ¿KH¤ŸŸ‰‚h
¼ª»,_&½òîoy£pB7vKŽ£¬NhÄO1û_¦¾¶®rD™91Üð)ÍÞºsùTAÍöæ÷Ý¥éëc5?Í‚ÒÚ.îçþy;4Ûú/¡üà"€ps°óòñxeç…¤üªnqsendstream endobj 1238 0 obj << /Type /Font @@ -14349,14 +14341,14 @@ endobj /FirstChar 33 /LastChar 125 /Widths 2835 0 R -/BaseFont /CHWROA+NimbusMonL-Regu +/BaseFont /ZJYZZL+NimbusMonL-Regu /FontDescriptor 1236 0 R >> endobj 1236 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /CHWROA+NimbusMonL-Regu +/FontName /ZJYZZL+NimbusMonL-Regu /ItalicAngle 0 /StemV 41 /XHeight 426 @@ -14376,76 +14368,66 @@ endobj /Filter /FlateDecode >> stream -xÚ¬ºct¤]·.Ûv*I§cul'ÛFÅNÅFǶm۶͎í¤cwý¼ï·÷>cŸóëœý£jÜk^s^×Zë5FQ’)ª0›Ú%ìí@,ŒÌ< -…ü5Òß1‡PP[B¼ªùÕy{Ju¡glŸÏßüC(»ƒ¢ÈrÓÛFÁ÷jð§fÌÁpC`¶ -f†é”/–é„ÐaÆ)¹–ìÉT_ÄAÇDÆ@G’_²V
ú¿IÂ>^"òœ’£\žpÖk×Ñí HNZl¸Š”»Ào{ö«OŠ—©™}½ŽÈïqM gÀÁõ@‰Î -vÌó™\Ÿäsi‹ø'o0=ÆK‘ wnÕÉÙë)ÕiÞ8©dÆî¦uË͈âL8{8yŸì'!HÄ`9õ'žz6±VÁ‹ÃDp.µh4ÇÛÛ8ôÌÊv]ÊB‡ºŒŒžš¿ØKÕËËÃÙÏ£€_ë%ç=ùäÚâô%N¥¡[é¡Zß—”Ž8¸³OÊÖÚvAÔÊ -ųÎ:]Ní®¯jï‚?Ú1Ü¡}ú߬Eþ·ß™ã…°ä]x‰©9 -¾@£dJî'¾T¨× -z õÊøjØNE'·M¼¼²_ÉHËq zÎ9W±O´à¼¢\Y`Gà^ùa“ñóQýÕùÒ^mš¿RDÓyYÕãľ¤w§fküV¥_d•ôúÁï¡qUåM»n<%ò„é±D}^õ…ï9ÜÚ™/˜zšâ.Øè×)ú/…0×Ο·×rþ¦›§›Ü:;Òé:of\ÛsG§ys÷ÌäxQåç!X[EsèAm®¿NB(^WÄÌoÑÎÉ…qeQoP½'“ÀäŠÛ±vÅTäŠËÔ›Ê`Þ£>G}òxeVÈ#E²Á¯¶b@:4ÖëOØ,Û“œÖ˜ w÷Ý@)Æ óeîG£J
(På[ývÞ²zž¹<ú JŠÔÂYCµŸÐÝ^R°¼keMÒ]@KòB ™ŽtFò°…&eð -îïø`—÷¹K³†>E9‰ú¢%óeKšb¥6$O÷Àw¯sjºN«–'šuYv™ÁuC0=õOS‘GQ‰þ¯Âì{êMüqûÊ¿ûw^³4)pD^W¾i
22øQæBæeëðÄø8Ü+Î(ä€#x2dßë~r%³õç:9ÿ8¯%è5.Ý‹IáÊ9ƒnò)6Ý(€É7ÇÅåÑÚ:T÷ ¼$ÓjæÏI,n›Ýƒ0C5r¦Ð{Ûôù4uJS·1Q¾àIÞ[°šùq™B·ã§ThBŒ¢$¹*3„ -j)ÔˆÀ9”‰©P͸\‘<«Cz„ w$;48™un¤£Üó -yÍ: -Þäâ¨Mœj‚ñí*Ã;øí3ÈñÈmľÎV¤>û¢{Ž'ûh„³vÁ›¤ÊŒ=N(ßÔ™Þ‡RÆÇâ-ë-U¸Õ¡AÉ^³Ø1!>•…k;oI™&Z£Åó²A`þH¤Žš“´¹žÞù=&¬;îõ4vŸ ]Â÷žå·£Ë Z±ÔNnbáÓ1¦[^ÏÂëMᬯij
ç_ÓTô²È§šl`îSñö—›.²XˆGe(p¤.¿¡CžFêJ)ËÂÀ€z®Œæ×Ô9øè¹'ÆÂ-ÉÆÞGܶ•[|ÛþTÿÞl©5· BZ«àà"—䬩¹9£ÈµÿT*qq„ÏÏ4dG<éZS{Ëèœz2T$g€E‡úÅ3P&¶ãäQ,À‹é$‡(YÐF¥›Ýúg¾ÙþËœ;HGŸ€UÏ0/ˆF®A¶¢ºhÝÂüÏɬSŠ›?…ð.zì$ƒþ¾‰OøBw
F9.é»°{IÛÖ]µYÎÙÛö>….¹©i>Öª®¤Á¹º·t’ÞѱûªÜI
r<Xh[_lÒíÅU1î¤â(ÛŸŒÙÂp—)^ðC7¾è£½k¡ú»¥FÑ…ÝL”ŽˆÃSù8Ø'ȸŽô‹òôÝ´àvÛ\ûƒªH(dÎWs<eúJR˜)[ÈùÒ;.ŒÛ=õM"%Z -H;\æ¦oyd÷5/‚ZY¦ØßY‚x/ ÜI(ê_SVò÷O”ßmÛQ(±Ò´È{u½î}"ƒª7àú(˜"äa-/ÅGSkA˜M™É~¥S/D+âˆä5‘<šèaŒÒeÍž€RŠÕªµ«™£Ö½KxfÕ%S_olË+ÇééG~Žá^׎ÉñHž‹cCñ ûKÅ r„i/©ÁX¨Eå[-6áËM*µÖ‡ßQ‘ÒY3œœüÎ$c;¸™îÎôœóð!¢¸†„À×Ü—Ç+šž\[²7¸¹7ÚÆȈ€Cà[VZÉŽ6|íd›®y>vWL«Ýa%´§AX™ée‹ÇXço^´¡€KE-éÍBòŸ’Þ®ü1Ò^Þ€8ä„áU„4‡Ü46 -`YzY,lsÿtψSòé’üZQ”²8!Êó@¨`öžnBîàñÃ`N€¥Nw§©Ç!ô$ÕæõÎ%¢ˆ(ÙâÐκÒC$‚é‹Q -=öRþ÷y:×S¨‡ÎG~.Ílñõ¤1Õß«Øg½ ?o!==çxQWP8?®~|˜Üÿ¸¾x¿¾tW õ/ŸU®kdY¸Åã–„ ¯iHxºâñ¸l±˜“¾ž?b™qé®yx@cÏ·è£P(&—.!ÕGÑ‚¢™þ=Wc7Ü1WÏ28'ƒ;2[.ˆxý‘×µèÀw,ÔEh@¡3§>WYˆ}ðùaæNy´59ƒ‚Oà -Û#ñ=X6µÈøÌý/ùj¨5§äÕ‰X¦NëxþU¢lµÅ•¬A2fNyë BåK@z«1ÅÓÅ¿fÍÈnÿÙÒ©ê¹4mmÒmyŸ;þ-áu -¶ŠyŒØœX6$ XbLÖ¯Æë6SÅGó´»k%¾PjãdÉ\c_¼œMMâ›7IJÑ1è‡ÛÒŒÆîC¡oÖ)ëÆ -‰}
âx†Ü²t¼Væ–67Î5¥ðž)‹ôÇ“‚õ\æb—qå‘!̸øglnëNò4ü ˆ -/ôÄ@þåí‰e2bƆwU†ŽUöq`æïâðÅFŽÓ⊂™¼ná{™š¢5¿áPƒ -\ÅT»à^7–4N’’Ÿ»$$Tƒ-L3éΚ¹¼Ìè-h’T8 @½Okè#ÁMÁ[¯/³xO:"¨4áxüåäL—<kcèyÇÛb¢q¯ÐRÐŒñyn–yÍÕ4ë1qÑŽ{¦í¾1'.ämŽNèÇ!Êâhkjìšû?nP:±³4¸§†ÅÜ9´mºAº‰=¥“º,fÂêhIôNÖ»ïü'hä<Vk -Á³‰Ek-˜B©äöVZq*ÜO³«ișꓛê¬ïžŽð°Á©ôÄÄ;Òª_俽Qì˜ÎcNµ{pÝïbÔNÏ£….Öï³J–Þ†+–½º5©jµÊâ?ÁGtiÉBs¸¯vëÔm)«[™ïE»yŒãn6Ägî¹ÖªÐR“?Áµ7ßûx ãcå«B55Ö°0§¾ê cu Çð'} - -ä+N‰Ø5ÞNj4xÐ]›€¨áàݵmï+Zf;ˆ?Çåe³ÝöPà·oŸÒÃüµ—¢I¹ë¼“F<{½*-5 …)ôcÚ -#oÓÂíçç‚ - -8À#D=ÐÚ–'¼ËÆ€7aî^MXÛsänjã„h1B–¤ÖÑØÞt\§´äŠúã=/t2K(¦H÷±X
į̀W2ál“åÇ W÷íÀyŠ|¸`¡ïì¹Æî§È…çÁ™kÙYÔë:½ |â±ôÈìÓDáw
E)³*j³sý«‹ÛV]öŠSl|œf&EÔô5L‘VÑ
V ºZ™ÜŠ2Mù…%VÐ`ß¿1¹¦²¿‡T@@jLªPèȘ֨s*ô½§Ëâå®è -I³ÙêéœÆ–T©-˜Q§5߇[„þÚ@ÂÇŒçoT§÷sa‘‚‚Ÿ£;?®IÖB,$Êq®G¶qÞâ¯PIJ •£Æ»¨(¡àœ•SÕ`RHáRp”·Í/i¼™É6vÁ³ªÈ»ÚôÎvñoU;]äW¸éysQ†$Zk›oÀëãõO„ö¤Î£ýÁË2Uø˜>¼sUàtO?úp '@úÂÜdÛ¹KuŸCí½ìe½oÄÜóÏrž‹ëéEÓ3ŒžÈèÎ#$ûYjŒ²äØyÇúÚIÂOÁu)–8 Çúƒ}Ú
|þ84G'.«2c2´GÂdL¡ÌàŽ6(1¥²ò&µÂgùð‘ôrœP$A€+ÒádˆÐíçÁ¼_äÓôèä8\áä'wÇT`S^JkÊ_HÿΡÇÐïK”.±®:¤vìÓîÓcˆä"AŽ¥Øm¤.l¬È¤÷4³å)¸ -4=_A€ï CÎyëºnlT÷SIÆlBŽãÇD‰gÿ¸e‡Ýl‚È¢s›y|œRJ¥sáŸÆ%÷›oßú§gªDT+êg&Ÿ‡ -û -ÀáRLæÃ2–6çW0*¯bö"QÛ8Òœ3,´~~ý¨yܵ±®ƒ!èk÷}“IU?û -^ºö.ÕÊ;â˜<\éæjB† :æ‹ãk‡o™ùžËýta˜A=«(ÓÔ'ŸÔÐH•ÄN!z^“kðw¢ëKËŽÌ´«öߪ&ZÎØS³_ž!¡ÑÐ9†˜mx,by5À,Ù{Ô´9s†s_=ªŒBÑ3ú§ÉÅé7˜MgðRSÙ
aÅL4äÆÍœdä’¶î¡ÁZ’Ô§q½ ¸‚’6ˆõA3†Švbwq]o§æö§%¡×+DðXÚ2ˆPvêð7?³Í®=Dø"EL‰ÁÀ}§Û#WYççÕ"úCø(øºÕèa ,Ù`}Ta¼R›L΋ÜW’ï“9Ž˜oÖ”c/9ŠÈÀ°º·‹*£ÈpOˆjêû‹ª`=à^SVnæ¶ô@&2†4.Ê0h-5zPÖz.Îxúƒ)Ë+™ÆÁ·ÙÃ!îˆF°²VóöqÓA#õ:ãF½À=Ca祥…1‰d1xýº¿ìø2ï«9Œ)Cí$§øV„" Æ1‰F¢rnêOèó$9žíÞŠòZ
«>’qXøŒúÑú‡¶úIÛ¦Q!yˆ|¨(wàÌh"¾n£K²ñúB© -/5ˆÝï9éŠ1)ëM÷çY¤Ò\Þ5ö£yLU!?䡳ìšýõÀªi›Ž}Ìn‹‘f^;àQbù¸RÿBr Ï¿I-9:5Å·À2>ÁÐ3d±†Fˆc,<oäæ£Ocî1ü±St~»|Yù51DP!£í¶“°P
¾¢®tþkºô¡ßk˜8Á¦ÌØ$õc°ã9•Qæ3EåŠü±¹ÙÞ–q«¿tÔîÙÛCCY^"fLzJ -ÛnÊ÷Ù'Î{ü®ÒÿŒŒ®AiL–Xg…¸N -£2„‡Œ°±hdw,}ýåÒps9KuN4ÒÝœ°T×£bK؆F–i$Ÿ‹‹'p‘}¾Ÿt¥™´ðÞɨ"3±Ut¢¡úx²Ø&x4D K¬ZógÜVú‘xC¶‹]äÂØý9¦yóï³t¶Úxæ‘…HÞ#ü¡ æh -ø>_@[›cQƒY«]®Á²´%! -ÚÕìΨwtŠÓ?oAZdævò6I‡¼)’þ‰èRUÇÜ(Á@Ú”µ²âi·¦Ð£ñ ÛåºÛšÖ/ì¢ó&Å%é±ACF÷Àa¾šƒ;öùZjûâ×QBÙŒãωÎYIN«ä{Ïy|—hT®t²RML‡WK&q¨aMPjÍ–_ê›Í2ÖÝmYL¡£Ý§ÎŒrîgs7¨NãÚ‹+Aׇ²‚·`¨ëÞÊN óoé…%¦~aÝ–o¥~F¼».û#3{9D«Áä9;â´æÍôQ¤m£ÆgsHœ;“¯0C[µÐñû8Z¹Ô€î>¿œáƒ¨ÃY„Üá€ø¨e{MA\\ˆbi©O»‚›îöŽÁAø¡Ö3 -'ˆqqµi½á¢C°z³(†Jœ=ã€àˆœý]ÔÞ8§š¶±×†3`žbµ^0Ï »©uDA"e‰57"jÍLLÇXÝ'N-ëZnˆhK$%JrrÛ‹y¬ewyä¬ÏÖlv-‡åƒÑ‚ûvô¿L‡|ä‹N*<‹c)u4¢×é²=hIë&a‰ ét•ÎÉV¢z*ºìÃfÞaJž¿+uÍçWâèÚK}¤¦ -cþ1α¼ZÞÃbi÷cžç„Š¢c;Ï\ºFý‚I¤Ø-óÒF ¡Ù¡·ŒhÌ$‹™òjLjڹÕTãŸLàIHJ+øæö‡dPßÜlvÈåAÞñ GΓ[ãŽ`Ñ#&ûîR…j—ܬ'VuUÎÔ‡íëÌÒ†·r€"˜Ž†(¾WwPßSè¤u‚3ØRUê·€¥~²ýbæ³u«jJäþnÏ×íºÁëi¯™ê'‡¹IÀ&JIÔô0>e¾dÞ>#Ç<®å³Ü±éúÞv‘¹‚ΪçñæWêÕ‰½˜¥‹ÞÛd³ªÐçÄsFÞLÖ÷ÍÝ">nfhx¬ºqŠ~K~áåÔZçW -D9ÐÄ×ý«ÌNcü -4Æg÷ÎüôL¬¾¾Ò?Âlœá¶_±Ã؈õ†ëî$àÝ-:ÇDpBÝu£Cbî›#13º;Ï -*‡Kò·¶‡;¾-’"+ܦ˳-ý<ÎÈôXüöYëÁ’áJÁ‚¡$üé¥Ò.&>Ùe¸R¸¡3ŸÁÿ]u7üaÂõñ.R8‹zAµÓã~nTLûçpYTÓìª[7ÒøUÒð=|¹üº*ÚÂ_AŒ/–*CØ¿?CÞúh67÷
Wáïx,V[ýªŽ?RÆò^oH–èÈ;Ǩ=käàkáÕÊu3®ÉẇNbnN’²‹Y)êctž-yá¬JHÇd`‹“mó®úí}KÕ4¬½9«–øWù…YÚá•M3
|•Ð§DN¿"æµdYDé@ÖáÄúÑ¥õÇ*1öEÒ.úMµü–r± ÒüØ -Á4õ5’+Äó}†#‘.礋R‹ë -õS׸oïÖ‚•fx{ì—?]Ž{øjA}øé{v$õFBÇÃh¾/oF"U¹»ý´P‡SkwUŽçî0€8â…lù9|2öêlá˜,RºÆ,;?…Y¦y$…ä¯ ‰+aÍB•¨ì5šEÇ婳Ž÷õ¾Ióþ†n$ŸJ±šÿHbN±ãHÿ^Ù’Ÿ¨aêºV§hÞšW>#žµºra·‰áWvdyóEúC
‰ÙãÃ/c7>+΄É6¸ôªû,,V>'$úÒµeP¹…'›ð3f3 -J̺6I>ìß
$‘–HåÇ(ÃÈ;LØAB¿ªƒKéíqrm”ü¼Ëµ˜+ู؂۾Ó&§døäNÃ0I¿r!7%tj[®†ð¼¸‡¿¬e°¢zñ÷pöZù¹Üvi3l*.p.&€Ñ·Kóâd¹¨É -ÃŽ¿NõÆç*匶ölIUQ8(±J 8a•˜· 5«X~+Õøëam:Êœ·jP¤^Jœ§î‘¸ÃsÀÿ‰û‡FmA@ [r«@æ [¼¼'O24ö‰¨-ç¯Ô‰Qy"ð빟z¿–2¯\ÅC]õõtQŸ;G@ -ƒmÕR¯
Ö$õìÔÛ6Áò´K·8}bS5Û €UÞXÈs^ƒ=$Bÿ©†Þ‚€`õ©£X&ýµ§=²w3ØÔ]ö§ã^êÌNóÊ»Aøðc0ÎäÚ5¯uÈòtœ)
¼Ã؆Fê|ZEò‹Vjê¹Cç‚¡þË€y·rûÌÂqëBªUèü õÉK%©BIhs”¨ƒr¾‰Ÿc\už…L}dþlùÅ#œsþµÝ -Ûä¾xP1S'¢Ä”ÀÏ/m*5blð•šZh—E5Ú°ZÊ‚?7/ ö®Ê¼¢¾Ø‡ç]Ï|Ö;ŠÔBùúéíôý'rUS”ÂŒ,ù³Ç?»FöÌ’±ÛõÚ$Ämk¥kˆ"ƒVa+±<•šºa¶>Sû%äù‡¸’øVî™ÏáEü4¬:ÀðÊT?ëðÎhx®‘ÕÓéUDÂãÚ%†è( -Djà&$ >g÷5«d( -xáO¶S.eƒ›»NÄÑűn5wÔÖ‹IêÞ(ˆÂ8ãÞ×Àn†hºkͬ½P#éQ'ÕíîaT¿£þ$RyÉà–&S(v±8m`iʽ]rþù¦³<zlVlÉ—œÂ`5”ËR¼Ï>íJùQ5x9–Bgaàž}x’2ÍDÑÔ1 IÐÏ4—ÆÇûèr¶ -´¡é
LŠ.Ô»4,›æË…Ü)]Ã*Vi}¾I&È éà1ƒs¸g´YÄ1Rë}}ã$¬Ë¶Ò|>”OÙ‰@½)Ûá`LÓïËñyŒoãwk5±ÈVð…SŠËm‘í¬Í‡Ÿê)"q%Uæ#}VíÈ·ŽGØlxR×{häYÏøç%»Œk#’–ñ -°û€‚ß_7ÖˆýõƯ¤øÖe÷®eßêT\qÓýÖ®Épswþ -Ü$(Wgœî‘·xeµ§²Þ¢Q«:p¶ÐšaBš³·ØÄ ô¥7'‡ÎòÌ[H›†{±_‡*ºŸñ´í!NTúû[ìD_lïñ (bÂ/Ý}¤)mR¼™~pÁþØL®†PèK¶ M5”ð?Æ®*äQF2±g™#ªûغà>~‚;H°‹¨-ƒô9ü·—5ûÎG 9„õKƒ[Óc÷~@H"…°Î–E(Mõˆ@å4/”š0ù{oNcáKC¹¶un˜íÌ——*ÕˆÏh1+(¸Ôýd04—DËÓ`IRïÐðý„ã‚çNÝÝ45öH3‚-]º5û`EJd>¯3Ãæ BgÍR™n"éK`~[›J:4qð7v®`=RŽ}EñŽ:è¼süôŒÍ˜4¹nÏñÈôQr,É¢ï°ÍkÄêãÉÌ^Iö-ûØLƒÙ£1#iÕ³q{ÁðÅÔ#…·¦˜&#¹–æÆÌ0žpk+«£ -†é68û½3¿âØ
€ÙAehD¡–~ØioÔQbØFÈöyÍpR<‰˜ÈfÏâŒ&a›æ(z -YìT”ÄÐ_ïCŽÆ} _zA-nuò®Z˜ÄögúvXPô‹•5tºÁúOÌ]šÛæÞÄUhN'u6V‹3án[ }¶ŽMïm9¤‚Ü.QÒ(Æ‚Ølšõ3EȽ¹²FÕ7CÇ¡¥ŸµÂü‹›¸¡• Ò†Ô·X>ÅrV¤«´þœùÈ87‹Ðæ^’Ü#ž³Ä…*[Ã00Άºª\-zÂ0³•CÄx:M«»ÄãVNcÇICÃOgUÛ¼¬*¶@ÚU·ae’+b˜ÀèÌ¥¯é¶QñóP/Anžóu–ÇúeÙM"èzpJ™Ïò®"U‰
ñ+“ãé?§ÙÂf%%íl¿çkíæ¿„òLO^‰ªãÃFÒò’Âiú,ÞTõg1ª -l•"\\â„o8½²b¯‰{åIPwví ËQæH¶$ÜÉ´¦ÕL`e·©Ñ²ÂJ»ýT‚Ε^jr˜²:ª×»‹¾n -¼ë0åà®ÏØÿîZŸÜªc~;Qwµê4è©HšñqÇÔø°7ò=³ž‰’ç™òÆú˜“duˆ?.Õ+rÞ9kÃf6q§œaÞÎ^bÁ;ÐÞ“ªC=?JÅЕd›dg‡|ÜÔúˆËz@øeaªCšs5ú QoFÐéDú÷8È«âX²DÛíŽO@Ñ%
U÷Méd>kZ|èdü%Î0 ,cYÎ]o5ÊÓÓˆP|øTëZBŒåæxM~`Ôä×P -Ïoé†-«ûç²`¹
Y¶ñα‹èÞÛ°ëÙC¼aßèß7åv¸×^ -뜻%CÁÌ‚¬UÖ´‰Maü€¤Ï¹uñçó„áÜê :œð؃C»(|cºÉ&§ëéòɼ¯È8'Ùx被Šóp<]BÌý «›[¤„ -¡à£"Ð<‘gÏ[îD~^ººÓÂÙ?Zn\Æ$ÿMŒù–1Äœ)Á×Bň£EGâcQóh¨X*úêÊÊ_>(”ëw+ÇœðaÚ¨F~¶zñyþþ{‡>gS(êá9‡&IdÑX2)Fžb¡8ÚËp¤«PX,Gæ(xõš2œsPº% fajU‰ªh.,w¤Ñ« -cLÇý2 Ža® -LysN<q›Žé;u %ý¡xCߥi67k]ýÔ•ðÓ*‰I -Ñ\‚°îÙª
[ˆ|¾[4Ã_ÆvNy|ü(—æl²½Fï·ïÊ»i¤ºõ–l -]ë4PH§rüIbÕä-àIæ<Œf)$Ü=¼ð~WÝ>Rú?]œã|DuVò=Â+÷œõç°üdË,󴵋¨t}ïæBÖ 9Q’Ž¹¡¥PÖ•g$±»ÖùW7‡È0‰dÐs`Å/]N˜Cñh¿5÷‹$YlÄžìžvÌ6èëZü¾Žñ:á3~|±‰Q¤ãïÛ_6tºs´“WÛïµÈßFgùè`æ}
|5*¦ -…3© ¤0.aõÃ’ AÜÿJ&ªƒ0C|R*ü(ô¯[\eZ¢¬ ÏÑZ
àú½á´sÅ%¶_,sEjâ’ñƒ]]¹QÙÄäã¤Óoxé{×ùÒT¬¬>ÔDu±:eƒ„Ž¬‹C5áj¬QjCìé÷¤›ìÐ̆£Y•Ãé²{G·$7wA”_sïâPs±¢Sš˜=ÍêïxEJI7z˜³LYò>‚Ý'ò.ä?4û™36L®PæØi¸Êfá]YIÍuÅSÛÁý²n’YWºjRdúAùú†ÄMw¼NÆÒ`´Š&'"—cxŒ?¦¾©Žd[ºhxB{ü¼ãXæ}•£689®ªíV3*àV,´NÃIæ®ÎúÄ’Ÿ]ñ]Ì&ßkÏ—Ê!ØEø>µBGD“ÊÚ DÄ`ŽÀzë†ÿD9ÜD•^ãP¹¹¡ÒC`pÞ¸q¶SÏ/@j»_»;Æ),H¿¥ÌNeÊ„cwLˆ^ŒM\Ú‘/Q„Ýr½Î«D¦F¡CzmbÍ$cÁïW %—õÛà”\Ù’æ’.îrËäU+ôŠÖ½U©+A´5ŸJ¤Ï)ªãÿä;z_{®ðø– ©ŒJ !uêˆÉ3e|Yüê*¹ˆcËûõ);ß.†úðò#ãDhö€ö‹G¸èFyç;u=2_–\?c«î¤~‘ -ƒÅÊ~Ïz_úà)ë¨R÷Ãfæ4Vf™k+{Çc–®ŸSxéüýpŸÀ–éò¢Žú‘›B6Uß\•AM{ƒo—áŧÜùþ1÷¹ž ƒG‹KÕeºd´fÙà&ö÷-
¹÷ŸÞ
ŸLHÁ¹‰àTLq>ã3ïçÙuÐ3õ.°ó»ÏDkr%[’û V!
=?(F‹V>Då†TÜ'LÞ»tðþDì0åœjiJWù¦¯:•º?˜ákÅtð·Dt,e¹Cëàì8´~¶^Wìh÷ðá²›ó&pÀs–K‘v£yª¤}ÜYhÇû/q˜š\—1άÄ.5HLUcß|{¨8óŠò^ß4à`äô·ÅPß½Q5ãŽèz”=ûý¯`ôô«î½A$äÆô¥=ÿ7<‰†ÐZLLSXëNŠ}Db6¶Ð,èÿv;=›#˜‡Ãc“(í„FrEƒÎUA7Á¾ºñ°¤‘ïÁ¼ Ÿ³ËÔ
0 -·•—Vh/†¸MƒD:•ÄÇNñú°•:#Þþ>PLÇÒwðQ5GbÌñ
Ò禪ð@` Ìf(iVþÉOëµ6‘ -’Yý”:®”èAèÂûXqQ¾®ãÜþŸœß,è'ì-¦E“qàO¹)• ìG³VÍ4ºf,§œR¢X=ÒÄ"Æ
œVpÕŽà"ç¸Éü4¥^Ëdw3{ñ¾T ¨Œþ)þ1²ðùfäI>EÄ÷ó…>W¹;A©jæG’òÛB¿¶ä®.L)y{kÂ^×ö
,”K@[âŸdOÜŲÝ_tNÖm,b -É´C™Ñ.ïðÖJ®{Ò¦sŽyZÍÊ;±êÈÂìÄk´3ѤFÈZ‰FÝmp ÷:%•Ùd -Ü)„lk2'¨á"”Öë±âµ|syùͱÕu€\çÊZ'YýMªI‘_£ƒ~Æ)bfÓíÝt=–ÙáÅbSÅ#Uk.`« -S‚DÍ(»(ë%ªUÎ)7%g:F—°ÞÆ {¡ßk·1SÊ»„]« -G7üæôÆn}Ò{«óef‚‰@ƃÚZt'ˆD©Ñuèb
ÕËáÿkŸ,Ûš +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ÀÁõ@‰Î +vÌó_ŸäsýðKÞ`zŒ—6$Aïܪ“³ÖUªÔ¼qTÉŒ!ÝNë”›Å/˜4ú#pöpò>ÙMBˆÁrêM<õlb®‚‡é‹à\jÑhŽ!··qèš–í:—…u>5±“ª——‡³›G¿:×MÎ{òεÁéKœJC·Ò@µ¾/)qpgŸ”µí‚ ¨•Šgý´»Û]^ÕÞƒÛ1Ü ½û߬Dþµß™á…°ä]xŠ©9 +b¤H#øÕVh@û€€Æjý)ûƒe{’Ó +3 á"Å8a¶ÌýhC©Š‚¡|«ßÎ[ÖGÏ3“GDBI‘Z8«µ¯öºÛK +’wi¡´NºóoI^0Õ–ÎÈ!C6פ AÅjc›a˜LÁýäü>wiúÁЧ('Q_´d¶lAS¬Ôæ‡äaíøîyNM×iÙòD³."KÂ.38°n +ݱÍAïOÇ4å|cåžä½Ë™à˺_…¤Bcbœp%ÉU™xíŒ`#Ë}Cºûð¥H"¹ºå)çØÑYi#,ج¿ßÁ;QÝqç·Äjí(^&+
MÌøkRÐ,7÷u¾!+o¹-}iC¼HBbÛ*1'O. Íþ~6'jïý˜ñ+gt5û¢PVÔÿ¤˜¿T?ÚãÔR¨s(S¡šq¹"yV‡ôî@v¨„3ëÔHG¹çòšu´ÉÅQ›8Ô%âÛV†w>ðÛeã‘[‹}H}öA÷4OöÖgí +„7N•{œP¾©3¹¥Œ/Ä[Ö]ªpCƒ’½f±eB8|*ÿá´%Q0d’hyŽÏË9€œH7þ5'i}=½ó{LXwÜëaä6Aº„ï5Ëo7F—Aµbñ#¹‰…O[?ˆny=¯7…³¾ÏÆ_žMSÑÓ<Ÿj²¹O-ÄËOrlºÈ|!•¡ÀºüV„,y©+¥,ßê¹2š_Sûà£#üåž·${qÛF2<üm=àmûS}ü{/°¥ÖÌ:i‚ƒ‹\’³¦ææŒ"×îS©ÄÙM>?gЀñ¤kMí!,£sê-Ð@‘œm +ï™°H¯Ñq<)XÍe.vUÀŒ‹Ææ6¼j÷(OóÈŠ¨ð"AÏ@ä_ÞžX$#–alxUeh[fdþ.Þ_lÔæ8-®(˜ÙÉë¾—©)ZóÕŸ +Ôû´Þܼõz2‹÷¤#‚JÇ_N‚aºäYCÏ>\z…„–gĈÏs³Ìjd¨¦!X¸ˆÓwÜ2mö8Ùp!os´C?yTÿ@[Qc×Üÿq…ÒŽ¥Á=5(æΡm³× ÔIìÑ/Ôa1VGKj]Ø w´Ú}oä¿8A#çÁ°\SêœM,ZkyÀºHí(¨ ·³ÔŠSñçöš]MC~ÌTŸÜ¤Pg}÷p€‡€
J¥'Þ fØ‘Vý"‡øíbÇdsªÝë~£vz-t±~ŸU²ôn5\±ìÕµIýS«Uÿ >¢KóHšÃmµ[»nKYݼ øËÈ|(ÚÍs@w³™ >sϽ°V…–šü ®ÙÞÇ+×Xª‰‘†€9õUW«K8†?é
`(zšŒÜ›×Io_eîÁ‘Í>&p×$ÏoLòŠJß´/õý…›R-“ÃOÃÄ,Á‰ þØFáÒÓýâùu.ÍŽ©X€²£ÝF:ûL@¥å߸‰+¸CVçD§›î$2ܘ±¤‚Tô¦:‡4Oòü?ŒÙì7ØC*™VBÆò6VjóšÛ¾§
÷fÝÆ1÷ídž
¿ô|ÒÞÞ@OBG À§˜«T ˜Ã1=Úuø1&\ÛTĉº(Ð64Ï›§¼ì¥—¿ž6ÇnÚ4~ÆcÅÛ[zFbÆ’RJ»žƒ.¶¡ÖkŽãÃÞDþÈÉ+GâzƒîÔ¹m_C|øþ0/–Xµ³-`_1+Rå¬Ë¸ƒðžM*&`*ó|ÜTF-ò\<óãT¢ + + +à+N‰Ø5ÚNjÔÐY›€¨áàݵiï+Zf;ˆ?Çåe³ÙvWà·kŸÒÅüµ—¢I¹ë´“F4{½*-5 …)<m‰‘·iîúó…sA€fÌTljò‰¹^›]¿w›H.’îŠI†m¸_|óÚ»b \ÝÛè#Úžƒðž1Êê
×åã–μmœh³fË]Ú¸¤„ž¯\ÇišÒ}EK¶
õ»›õx}3sŵÈûÔM¿=i‹ƒ)»o)=26¢QžÉªËC†;ß5T]hQ€Ð^šŸmúà|‰Z›!ç˜8ºs±S°È¾J¬f?ÝëÞìoåCˆ€ßlOŒ‰¯¸1]§Uxœ<Šzæ᥀•áç=ˆÎmòò‰¿½PÓ1ú”¢>2x¤iÎ#§·5ž.‰©sVñº^ñ¼ëÓýªÀ›`õVÙÅ¢UR¸¼ûpœ“åæ41$ûFÐ8ªŸ8lV{v”ƒîÞw©³î~¯ìýý«&À꾃~èôÓEKå½ây
Dj”¹÷-vá'†H=~€Œøä“þܦð!UMÌÆ‚qzÝKs"œÏòçžNIZÇ&s™/í}‡•‚ðQE´¶åï¼1àE˜»×AÖö¹›€Ú8!ZŒ%©u4¶7×)-¹¢þxÏÌŠi#Ò},V{ 3ê™Lk0Ûd±À1èÙýåÇN@ˆ<E¾=\Ðwö\#·Sä‡ó ̵ì¬j‰um‚Þ>ñ€ÖXzdöi¢ð»†¢”YµÇÙ¹þÕ‚ÅmË.»ÎÅ)6>NSã"jú¦HËèËLnE™ƒ¦üÂKh°ï_ŽÆˆ\RÙßC* 5¦
T(´eLjÔ9úÞÓ…eñrWtA…¤ÙlõtŽcKª¿ÔL©ÓšïÃÍCm á‚cÆó7ªÓû:³HAÁÏÑ×$k!å8Õ#[;mñW¨$¥„ÊQã]T”PpÎÊ©j0)¤p)8H‹Ûä—4ÞÌd9ãYVä]mze;ûµª.ò+ÜôÖƼ9+C…ŒµÍ7ÈÀaÀõñú%B{PçÑó²ŒG>¦ï\8ÞÓ>\ùë +¾07ÙtîRÝçP{myZí2÷<ijœçâzxÒô£'2ºñÉþD–£,9tÞ±¾vR§ðSpCŠ%è²³O»¢‘χæhÇeUfL†öH)”éßѦ"¥2¦TVÞ¤Vx/>’^Ž³Š$pEÚŸºþ<˜÷|š‡+œüäî˜j +º.F5|EKÖ_kßU†Ä&“ó"÷•€äûdÎ…#æ›5åØK"20¬.Fí¢Jà(2\࢚z~"‚*X¸×”•›¹-=‰Œ!‹2ZK
…‹3…~`ÊòJ&qðmvpˆ;¢¬¬Õ¼}ÜtЈD½N¸Q/pÏÐ@Øy)diDÿD¡ +ÛIX¨_QW:ÿµ
]úÐÀï9Lœ`]fd„ú1ØñœÖʨó™¢r +EþØÜlgøÕ_:jûìe‚¡¡¬ +M
q‚8IoÜ•ªÅö›ÍL-Ô…`€ToÞ½*Pvz:N“x›ÝžÜ™3*IŸeÀ4µô +;S9Á%]9Ao¢ÁN©‡’p6/€ôJš6:7õ"élÈ2îqœÞ܃A«ñ)Û«Â!F—?+ÍõÙV³d$7ÁÌ&áýWW(Þg0 ÎÜ#Úž8¤;ßJì¯ý‰Ù¡L¹ŒÙOÝ5oYÖᘠ+AÒà}…a™5‚>ÂÃNFØX4²–€žÞri¸™½‹…:'é‹NÎXªËQ±lC#Ë4’w‰ùŸÈ>ßOºÒLZx¯dTH‘™‡Ø*:ÑP=<Ylc<¢„%Vù3nË
½H¼!›Å.raìþ“¼ù÷Y:›Îxf‘…H^#ü¡ æh +ø>@[›CQƒi«m®þ²´! +ÚÕìΨWtŠã?oAZdævò6I›¼)’þ‰èRUÛÌ(Á@Ú”µ²âa»¦Ð£ñ Ûå²ÛšÖ/ì¬ý&Å%é¾ACF÷êÏa¶šƒ;öùZjûâÛQBÙ„ãljÎYIN«ä…{Ïy|—hX®t²RML‡WK&q¨aEPjÍ–_ê›Í2ÒÙmYL¡£Ý§ÎŒrêgsÓ¯NãÚ‹+A׃²„7g¨ëÞÊN óké…%¦~aÝ–o¥~F¼».û#3{9D«Áä1;â´æÍôQôÃZÏú8w&_a†¶j¡ã÷q ´r©>Ý}~9ÃQ‡“¹ýñQËöš‚¸¸ÅÒRß +nº_Ø;úáW„ZÏ(œd ÆÅÕ>¤õ„‹ÁêÍ¢*qöŒ‚#röwQ;£œjÚÆ^kNÿyŠÕzÁ<S€\ìæ¬# +)¬¹YQkfb +<Æê> tjY×rCD[")Q’£#˜Øn]Ìcõ(ð(»CÈ=g}¶F`³k940ŒÜ§k¤ÿe:ä#_tRáYL©£½N‡íAKZ' KLH§£tvH¶ÐSÑe6óSò<ø]©k>¿2 GÇNê#u0UóQŽÅÕòK»/ó<'\`ÛyæÒ5êLZ íèÄn™çšz‹ˆÆL²˜)ÏvŒX¡[M5þÉž„¤´‚o®HõÌLg‡œQäzä<¸±5î6Ýc²±ï.U¨vÉM{bUWåL¼Ù¾Î,mxÙ*û+‚ikX‚â{uõ<„NZ'8ƒ,T¥~Xè%{2Ñ/f>[µª¦Dîïö|Ý¡±šöœ©.q´Ÿ›l¢”„AMãSæKæí3r,ÁãZ<Ë›¬ïám)œ+h¯zìÏa~¥^Ø‹Yºxà½M67 +}¾Q@<gäÍd}ßÜ-âãf††Çª§è·à^.@uz¥@”M|Ý°Ìì4ÒÊ +à™<=²!>°ë_Â!¡nÒ
q£^c7Nh?–Dbk]z‘Zøù·Íà[ÛX=mÅ›P
:žž‰ÍW½G°tC#<áß×VÂ'¦ŠÒyÞÄ1ò\ðÎòˆ¿ƒˆ§9&åŒÂT«âÞ°;¯oQ +Äd²’Ø[EÜ°¿ÈÇ`n—ÅædþǦiBŠFtù£¿
mŽ<{töJD|Ï;±Æ&G‚iþco§Àå²-çaA3©±W(æ‚2MYÕô(mò¤ œFã³{gþz&V__éa6ÎÇp›¯ØalĺÃuwðnæc"8¡n‡:Ñ!1w‡Í‘˜Ý¿g•Ã
ˆ%ù[ÛÃÞI‘nÓåÙ–~gdº/~û¬ugÉp¡`ÁPþôTiHŸì2\)ÜЙÍàÿ®ºþ0æ‡zx)œE½ Úéq;7,¦ýs¸ƒ,ª‡izÕéü*ið¾\~]•mî§Æ Æ
K•!ì†ß!ou4›¿›û‹†«ðw<«^UG‰/)cy¯$Ë‹>täCÔž•6rеð‚jåº)×ä;æC'17'IÙŬõ1:Ï–¼pV%¤»Ã +2°ÅѦyWýö¾¥jÖÎŒUËü«üÂ@¹,íðÊ&©¾JèS"§oóZ²,¢t +’úC¡ãa4Ÿ—7C‘ªÜ݃~Z¨‹ˆÃ©µ»*‡‚s·@qp![~_£Œ¿:[8&‹”ŽËNp€0ËtÃ"¤ü4q%¬i¨•F³høð¡<uÖñ¾î7iÞßÐäS)–óãIÌ)¶é¿Õ+[ò5L\Ö*ãÍZóÊgDسö@WÎìÖ1üÊ,o>HÁ81äј=Þü2¶ã³âL˜lƒK¯:ÏÂiåsB¢/]ûP6 +Q+ª''a¯¥¯óm@6úâçòg}»°4ï N–³š¬0ìHñëà´Po|®RÎhkÏ–T…£¿» ”àá€#V‰YR³ŠÅ·Rßx°îV&£Ìy«úEê¥Äyêî‰;|0üŸ¸Opˆ`Ôæ:5 × +dž°Åû€{ò$#ïˆÚrþ÷øúø +Ažˆ+‰o徑ù^ÄWòó +þ¤a;åR6¨¹;áD]ëVsGm½˜¤îý‚(Œ3î}
ìfˆ¦»ÖÔÊËÅ!’uÒPPÝöF5ñ;êO"•—ni2õˆbg+€ã–¦ÜÛ%çŸoÚˣǦÅ|É)–C¹,Å‹ñìSÑ.”Qƒ—#l )tæúnÙ‡')ó×LMšýLsi|¼n°Q!gZŠƒp2Äòf;|d·sJ5[èOú»·r• +¹0>“Q80ƒÁ˜jU¥9Ãüró5½C£öñ²·Ëä—A<Õ¦¡1RÁgó[¼X- ?¼§µebÑ×k^6*ÙJ¬(І¦7Ü1)ºPïNଛ/r§tªX¥õø&™ ¥ƒÆôÏážµÓfÇHöõŒ’°.ÛJó9øP>µe't§l†ƒì1M¾#,Çä1¾#ÜÕÄš#[ÀN).·E¶/°6~ª§ˆÄ•T1˜ôY¶#ß:a³áI]ï¡‘g=㟗ì26®HZÄ+ØÃîk +z|~ÝX!ö×½’F`à[m”Ý»”}«SqÁM÷]»&ÃÍÝùԛꚥ‘ü…@ÏHÈúûÓnê +c—™XúAÒœü.;
®¯˜›'·Œ©½C›ˆ^zºnõâ塳ýæzI‡• +RÐ%åØWÔ糖Î;ÇOÏØŒI“ëöL%Ç’,úÛ¼F¬>žÜÁ|á™ôaײÍ4˜m?3’V=·_L=Rx;`‚i<’kav`Äóè·¶²ú0 +pºs*Å"øVŸûå¦ä!¥`˜nƒ³ß+ó+ŽµÐ +çøx£ƒ®Ñãz#ú€½ãJÿy‘ÃEäºF•“Róª»ÿø†D¯11tü@Ct´Y$Á¼šGj™¯%?¼äX+å•?L¤ÔÛ˜‡Í”_´Ò#(?Êô\˜ã@¨nw"àYl™À<”w„ÙY)ª5avQÿÊ%éömŒ—êÆ5=–AâŒ*$$–-Ò{OcŒËüŒÖ3n¡÷j¦&•3ì£Ç€ÄY+÷U&‡Zg\'ãMnÿ@÷W¢4’:zvlAÚ”‘…‡’>é„Üo¦˜Vü_Ù¹šÇ};*ˆux’ÆC,(¨ƒ|ýÜñ¹Ú÷zw¹ +£fÍ6•9í]ØTÉ°bµ÷áú1K/š&‘9€‡e×¢hœj4Šß.Î[)Z +dCŽREm46¬8Ó¥N¸ «Ô6<É,ÆÐÍÉÎæi:ýx(¥Ët8ÐËn ÿ`’®! +¼ë0å ®ÏØ¿îZïܪc~[Q7µê4è©Hšñq‡Ôø°7ò=³ž‰’§™òÆú˜“duˆ?ÎÕ+r^9kæÖq槜a^NžbÁ:ÐÞ“ªC=>JÅЕd›dg‡¼]ÕúˆËz@øeaªCšs5z Q/FÐéDú÷8È«âX²D›íŽO@Ñ%
U÷Méd>kZ|èdü%ÎÐ?,cYÎMw5ÊÃÃP|øTëZBŒåæxM~`Ô•ä×P +Ïoé†-Ë»ç² ¹
Y¶ñα‹èÞÛ°ëÙC¼aŸèß7嶸מ +뜻%CAÌ‚¬UV´‰Maü€¤Ï¹uñçó„áÜêÀ:œð؃CÛ(|#ºÉ&ÇëéòɼÏÈ8GÙx被Š³p<BÌýÀ«›[¤Êñ+ÇÕ˳ž8b׈×[ÍT|¥#NùæQߧCW;Gˆ|SmÿFÞÖil±^õãþ™ef C¹‡¸·á¢y JòëL;˜L]¸îÙÙeÂAÚbˆPAIÛdðIÔPîÅ +×·³÷ŒAÿÞ]ÿ¹:#¥µIä +ÑÅÛ±åprkBÙûCzÆaÑÓ3ëÌ"!²2ö]3¾v{ÌÆY»G«Œs»Oå×náR¤C2¾&`ñNƒ§Eƒ“\ÙÍ9È&Bê.üŒ¶Ù· nRV'“BV’äýáú%h:¾.l¶CÑy%4KÉÂTÙfÝ4„T·:ùÔÖ4_'áULšj€žXËÜý¤öiûÃÆûêç”´c§=`²¨øqªe˜ßC´Ü¥îóÚlméòù +H¦Ö¼9Gž¸M‡ôº„þP¼¡ïÒ4Š›µ.¾êJøiˆG•Ä$…hÎX÷lÕ-DÞßÍ›á/c;§Ü?‚Ë¥9‡l®Ñ{ÄÆ»òni†n½$›B×:õÒ©~’Xv + w/¼ÞU·O§”~EÁÏAç8Q•|ðŒGÇ=gý9,?YÁ2Ë<må,*]ß»¹5HN”¤mf`!”uåIì¦uþÕÕ>2L"ôÄEñK‡æPüÚ÷AÍí"I1„'{†§³
úº¿¯c¼NøŒß_lbéøûö—
m„nĜɫí÷Zäo£‚³|t0ó>ú>S‹Â™ÔRú—°zaI¿ î%ÕA˜">©
•N~ú‚×-†®2-QVçh-‰úó
ýÞpܹâÛ/–¹"5vÎf—GWnT66þ8éô^úÞu¾4+k‹O +Òo)³S™2áØ¢c—¶FäKa·\®ó*‡©‘@èž›XsIÅXðûh‰ðeýÖ8%W6¤¹¤‹»Ü²yÕŠ½¢uoUêJP'mͧésŠêø?¹ÄÆŽÞמ+Ü¿eB*£HH:`rÀL]¿ºH.âØð~}Êη¡>¼üHÇ8š½D ýâ.ºQÞùÎ_]Ì—%×Ïت3©W$@2?d…°Õã¾Â`¾²ß³Þ׆>xÊ:ªÔý°™9•YæÒÊßÞñ˜¥ãë^:?Ü'°‡eIº¼¨-„~ä˦MÕ7W¥_ÓÞàÁ¥MxqÅß)w¾€Ì}®+È Á‘ÄâGu™.Y6¸D£‰ý}KCîý§WçRPn"8U+Sœ÷ÂøÌûyvÝôL½3ìüî3QÁš\É–ä>¨UHC{ϊѼ•€Q¹!÷Å“÷.¼?;L9§ZšÒE¾é«v¥Ž}03|˜6þ–ˆ¶9£,whœ-ÇËŸ×;?zøpÙÍ„y8àŽ9Ë¥H»Ñ<TÒ>HîÍÄû-q˜˜\—1άÄ.5HLUcß|{¨8óŒòZßÔç`äô³ÁPß½Q5åŽèz”=ûŒW0zúU÷Þ r còRˆžÿžDCh-&¦)¬u#Å>"1™k–ôÿ»žÍÌÃá±N”vD#¹¢Açª ›`_ÝxXÒÈwgÞ„ÏÙå솋ÛÈK+´CܦA"Ê +âc§x~XÃJo(¦cé;‚÷ÿ¨š#1âŽøé}SUx °f=”4+ÿ䎧õZ›…H +—€_úØî*Ý– ·£ý7<³Y6ªãvl¤ÎݱæŒú‹Ù¸™‡ÈÈc?m·Ò†h¡ˆÕ©Åç•¥RäÍ×”»L|âÊLwõø
Ρò°¤¼AçYKr¼Ï¹ÙÖJÑkW½b%òyQ·ŠTæ9æ‹Ló"$N¬½ôž‡9ȯòL¡åùö;û¿ZÆMú›¦Ýj{wAÆILTI¨£%èÔ&ëö…ôâÞ %§½(1ã:«/h•¶µôÕ9óUÖô”‘Í¡i¬rÝxUæ¸ÂÝPÂ#á61”#,*@Š
–üb±·Tx8ÙÄç{ëG79yçÐê°ÀCþ“væ$Põ`Ò匀V–ƒÿþu6®%…Ùqc†¬Ó:†wtÎì•NôwØÒPÄv©*û&<û'ývýЊâ¹!ÔA"OýMBð¼"ðÛQܸ…ÍK) z²>Ç'áØóô-oâŠÌ#°±ÛÓÀD/&Ësgk7/;ô^D÷‡ÞKÉÁ¤ ŸCH-²oS<ÛõCoõšÂÛw˜´øŒª"ØK–_Š"H‘¬ûVpÆsáõpa¡£_Ì×SÈÚua¯õ°Ü±l|ÚV±{+ wókÎ:¤6=s÷(HfUôRê¸zP¢[E ïcYÄEùºŽsûr~3§Ÿ°3ŸMÆ?å¦T‚°ÍZ5ÕèR˜±˜rL‰buO[ˆ`×w\ÁU·?‚‹œWà&ó+Дzu(“ Ø!ÌìÅûR% 2ú§8xdßÿó <ÌЃ|Šˆîç}®rw‚RÕ:Mp’òÛBÿÉ]˜RòöÖ„½®íX((gÿ¶Ä?ɸ‹e»¿èÚXÄ +ܯ*ù V}ÒD¦ÿôð¥ÎÈ +}ˆÒçq=G/¦8õ6ÙüÍ/]Z?ó{P>yêU•œµú}éË2&@žÊå:Þä®þ;TÆ +݂Ư9ÎÖïSftt7,-–‘hV©©<
®ÙÒ]+,àŒA‡Ø •;…ÔzEå]þ<Ïßý‹ÌɤC™Ñ6ïðÖR®{ÒºsŽyZÍÒ+±êÈÜôÄk´Ñ¤FÈZ‰!FÝmP€×:%•éd +Ü)„lk2'¨á"€”Öó±âµ|syùͱÕe€\ûÊJ;YýMªI‘_£ƒ~Æ1bfÓõÝd=–ÙþÅ|SÅ=UkΫ +S‚DÍ0 +G7ôæøÆnuÒ{«ýef‚‰@ÆÚJt'D©Ñeèb
ÕÓþÿkŸ,Ûš ÅGÕkX:gׂ še£¤xu®ôØ\CùqKå1¦g¡lø 7[Ù²Ì4Òÿ¹[PÞÿøç¥ÏFÔ´²ÿšûI#pŒ"ªºóöWwxN¥&ÿÊYGúéÆ„¾åoK?\aùt@½=¥¢D#UŠ&ÐmÂ΃:Kó#˜´ÏÙf`ÃN¯Ú¬5}=ÿúfy$V·‹Id”-é%#©¾¯{z²5…رF’oö¾!²’»÷ØIáMØïä†H}ØÝÖR´x`î/Æ]è›Òª^3±Í7é¶ûñâ¬Â^µñŠ ·(FLH³~å¶ÞÖ@Õ6Jäó¾xÌ0V?K£ÈÕJÑ}gy,‹¨†/ã©$þ¸Ì~“Æp\!#…þö/»-ñæ
–Ú3Uv+l•EM ´Dýý_O‰uò!÷¶:)
G‚·Ñ é91¬ÄdÐ~í@§q&±ÑŸ<¹¥ËŠ)üÁžjÄÆpîp ãO`6ÿÓaÌ€“Ê ‰bœ›³ƒø*Ln<rüME‰J¬#Å<ÝþŽð»Z–êÞ§é Ö/y³¤¥6f,¹yK@ðcõÏ’bÖ3Jca~Äï¬]+)T!¿hê (ò‹gÙ׺Ñ9QÀî/LÆ. |ºy‹ÔOIûè{£dç*ÇU6j—áÅ+”S•ÙÏ=¡ …–› öHL @@ -14460,7 +14442,7 @@ 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 1178 0 obj << /Type /Font @@ -14469,14 +14451,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 2836 0 R -/BaseFont /RZOXXD+URWPalladioL-Ital +/BaseFont /DATUIL+URWPalladioL-Ital /FontDescriptor 1176 0 R >> endobj 1176 0 obj << /Ascent 722 /CapHeight 693 /Descent -261 -/FontName /RZOXXD+URWPalladioL-Ital +/FontName /DATUIL+URWPalladioL-Ital /ItalicAngle -9.5 /StemV 78 /XHeight 482 @@ -14501,61 +14483,75 @@ xÚ¬¹eTœm“-Œ»kðÆÝ‚{pw×Æ¥qwwwBpwwwwn‚÷/Ïûž™9kÎùu¾ùÕ÷U»jW]µë®^½š’TI•QÄÌÁÄ\ÒÁÄÈ R ššÛ»˜Ó,œ¶ÿ> üfîajîøÄ -hjcÿOó9ÿ
™Û›ý÷úÿÊô¯ê™EÄÄÕ%éÿ½Ê¨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Ž -‡Ø -œQdÓžˆo¥j›*÷ú*yèõA®È›ŠØùÞ*9Ö¤û¸·ÂÃmÈŒ¿Åû×táú9ÂÌ¿×jŒîuÊOà7¬ä'½£[»÷HsHs¢4xÅÈé ývÞh÷»&N™3ï²,ä¯òàÞ¼«»PøÛÖ……Ì\!nÊ—Iž‘Ýù™,dsa‹™2,ÉÜïéÏé›_Ôn8Zr烹ªv{ˆW1óLN¡¦‹JD¼¥"eéUMäãëj“µB‹ND·ó›^ÖåÓܦÙv‰çxD‹ú)MènÁŒ;Õ×`xÞý¤ŒAhàI%ÜúáG`¦‡SØÉň,ø,^‡QXÒ<5µ[OtÂ×{ù…Žö„F×Ï+N•W¾¤Tær U Œ€´q^¾tÆ^?Ø|%uÂŽ¯B_µ÷Åás-™^±`Ö¹Ðü|ñ.ù½„õœÏ¡-eýËÅÌ…£×ïO©èOÕRÁ]k¯þ)¿ÒÃú çøbU'þ÷˜ÀÁ±CŽÊ|Øo‹VÀ,÷QYáŽeƒTÅ€4ù`hõhÃÌ"ÎÕ -¾•Qÿfí2FZ Ys“^É2ç1›èŒ}´x•oøLÅ~êú¼Sr6Ã,f“Å$ÖÁ~¸!’Åu£Ã¾¹fu[¨½$|8GŠ XP&k©:Ä0[gIJõ„ç)C‘
ŒÄ«é3TûÂü‘ë8‹(Ù‚.àu6s v>ñ±=ei™t„Ãcþ9 -ËžŸÜxªÄ®»~dÿ|°ƒÝ{ú볩P¤ˆC{TÃÂb ~3˜˜ Ô¶q-ÖTkþWBµRè1 -œ^Å}÷b"áŸÙ÷?'q
‰–Å/F?®ÊD¨%·ŽÐrm‡6ÓÃȈWw[ØÊ.K.¼€–X¸¢¶ei—ùy¦ ÚI‰sÁÙÛèFCëšË‰°Áº¬Âì§4{ô_ju5§qWb¡â:‚F®¹‘ -£MQùžÑéÄ›—\Jo£c
ÚSAЧÏñ`K¡ˆC%oÝ«ü°¢’N½`ž¾VDÚº‘´^álmÌb'OŠ žQS‚sxCþíº7pážÄ!Jà
wF‘›UíG7íoY{º³ÕãbžÕ\Û."{Š~ï!x¹Î+~SÆeT•±ZЯÆ7 -«ˆbÉ4‡\·L0<Vö†GÉ'e÷Ôß6ˆ'„)©oè–¿aŠC!*uȨÈ9ý$JÄêpêütÏröýr–™·j«œ'“°ˆâd§Í,=~è»EÔúò#¯ùI/r˜íÓúY«hu=}þú]%HÇ*»a4W(¾‹uó2§ÊÏ}5›z—”í»¹8NÒ7“;ðѨ -›ˆu61j&všQÌ/‚·bénx;Á8G̾ -Xþ®qp…rÆm`‘ /Iï¨ë‚‘;ýR¨•å)’Ô`m ^f©>¬OÛÎ3[~½›ÍÄŠ -x¯°&ù.±óh|-ö¤²K¶ÉÉ6
N¿È¿ð.·ÐøSýAH×ú¤ÅÌÞ°—‘,ŠeV®D’R¹ÏÎ_ƒ¢‡):?¨\)Ì/ -ásÆ#ûÝaØü¾C-(^Ÿ¼,•}3Ûð–VG¼:Žˆpöø
‡~fê"¡€«ËöDñqšû„\ãL={,Y6èsÓö&ÿRžéãÎvøüÆ’ ©—2[<Â]*ŽUÍö~Fº*Äe¤A¬ -‰&$_׉<%@v©Ç1‰4~å¢få¶_±Eû´½ó*`,ÇÂÍ“)‡D7^[#¨eNÄî]›Ä|ccÌ.g‰æRuõ~êP„¨öþ²øwâ¯Ú¬9ˆÆoDà{éøk JPÔ箫¾<àØ¡{ÒŽƒ£H ˆš9Û¾>,v§ßÚˆ37ïegiZØÃÎ’~92ïc¾q`¼„¹WËmÞ/ŸªÈ"Ëùtþù¡Î T¼
1¨3 -ŸáG®o4± ÖQÓo$øµì;ÑbV!ûykAžÔ^¶ª¡/©ƒÁ7ÙÈS÷ƒœÔdíMèSAˆ2xî^vΨÊXdºo{g@½ËZǃ¤ÃMp¦|€…¤}øí«š -¹˜%AÇ©OOûØ+VÄ‹~{HŠ¹l…¥mß,+?(òÖÜþòHaöjZ<Dgº¢(ˆSN÷jÖI€µž„*m÷5eÉ
ø;ë'{ª´äú\U·®¿nâ8¬÷Ó‘àfä -,"õRbzR_'Ï4\ÎG-M -ælSŒNà Ëù}ì3½ÿÚ»~¾-ÇÓ]–Í -ÑÙÜôW3>Çz¶P\üõº"kw5·D -(ÙüՅ'•±²ò±—gÊ1HðḶݜœò*ãN_RÓýÈõ´Ùž®Svt¤/wpõL;AÔÑ8—šåÄx{K³íeS”Áñ9UMe›ŽˆÍ×ßÉ¥al‘Âèi×N~¾Î3±ÙpYbdÕŽðéa/å…8•H þÐeý%‚BÒØdÎö¬/~.¯mŒ“Óø5ÝÑ„ßÓIÆk´í0ùX,ãHKKÙ©qä6ç¡•ø;~¿ÉoŠœç”÷-mzË9é‹.òÕºû+Ó·œª7ÆÔ¹D´!úÅA±´âë9œ¶a¤<Ïëá_í°Á‚L=€@°ù¶NM¹•íô™gFNó®äìS!à{ù²gâA}*ßZ¬¾"L;¡!&{SºGÚõvÿáIt˜h<Êo`Ð
W•˜÷¨º=áp¬
]3#"ŒBŸtª”‚¥‡˜QðëÿDŸ°Xüù§—K`!6ïH©/ôyþËZ»ùc¥ÏÇÖ™„ÚÝ"ØÑ6Ølšä–ãNdn>‘W¨f4Ý…ÊðB÷=Iâ¹²ÞDŠ¡éóñL—eMåu/÷r5ÒÄØù?¶ßíž;>#ØŸ#J¬ïíýwÅ\á0NJ]þî\wL‰ËW) á«jû콪:‚ÄŒq˾t/eÖ’Ÿn…‡þàObë·¶tóÅ@Ý—†v9p%Z§P4n¦khÛ%ý®äÇ=v±¯l8E45)ÂcŸfÕ‡³QùâïsÊ9
YbÜ„ƒlï^ë)ý—$ÕŽþ9%AÊf|(—À»‚††î^müu¹ƒŸŽC©¢p°°ð(3ïû{TªÓýᓘï,îÍÔ}»ŸÇ4¼ékv×
з5™\Å«ñNKå'®ÌhüMÁüúîVµü~¦@Œ1ÙYЯx¹éœI¶ä¹O¹˜ N‡6õqéà/ð¸7^–@€OÜslDåÓîjßËVS!V6U%áÇÔaDšò“£u»7Z3c‚8p€È3˜£Iº¾œˆ²#>‘¿ŒRýŠ˜–—œ-¤®ÐáZhOÑŒfuð4±wCóÀ:t²YÆ -àé nرn¢YoIêŸ<vIS Y°ÆÒŽ5Gæå0Mö½Aˆß„«ÿ/kZâüÂz×bAdð)9Å’6Îö‘Ðk¿Ý§Ä7#ÀjhD(ÅêùÒÓ|[Cªé¶w€áàrÏxéÈsCptE’÷$eŸ‘ƒcö2o¬ÝœSaTS¹/]v¶Ag`æÆ¡¦Á§GlÀ¢?væͶuŽ+¨Î_¸¤ k1¡v=œ°úš§¼›:ܵÍ2¯·^&,ˆ(:˜Kw²´.Ðf‚fr:=P]_ðµW2Vƒ4‹"úCñSðåÙⰬثõÏR ,{zvþÉ
ûÕ™€”{uuVœ¬už‡ìNŸûâˆl, -_…Q×G×züù²žxZ5„3&° S&áŠT›D«HÎÓMn@gl"º7÷qÔEÔÓÔ´´¥!e†j³7·_ßÛ* -«4èÑ?jú9‘`¸âQ[è)µF¬j,>.¡ÿžByù˜únŸ‚)L©uwŽ6 f -(ëI0r/*•6#ˆ,º¨YCYæɧàIfðcWζ{À`Œ" ίí+¸6¶qÔ…Æ*zcÑêZ ô, -keFüŸÒù -d§'¬ö
¬Âõ=¹»+¢Ûžß›-°6Ç´mQ@hbQîÀ@¾<˜õJšBHçJÑ#ëµmVi¸×0®*YEᜠ-ÒÇ™¼ïw±w9=rž„%É÷¿´á
…ˆÛaçE„Ì|ÔÝîÄOÜå!ƒî8$á[¢ôbIe©93«•ìƒUëÔ8Ÿà% !U ÒRÓAšx®PöÔ™JØkóÇ×ng"¼Ð+7tF|…;þí|PvùçÆg/CD?Aæ`CFF9€”’Ò󮋇ùã9#H…Kà{p”¦§ó×XzƒÐhÃƧ ×´;{ØÉ…OÅY“óç"÷ -ãÊÅF_ÕXƒÖw_¡ØKèJVDËXcïEhÛ‹Ô—–ÙR¡pŠÔ€V§éêÆÎ~'%œjeö¯´!ç˜ö: cf
f(æ’"äËèÁØ\ûÖôùiÁ<„îvÔÏ:¥•F²,ÎÒ$£ÞzvbsÓÚqÂQ V-/°í-2vŃäƒHì£
߬«&ÍÀµÓ©ê^; çÞÇóó~ì/ŒŸðþh¿ÂÞ Á†ž^tW÷´]þ¿À·Õw2tIW1‹*íàNk-ûÈȯÃîoÕ8çâ•<ÿfZÑÛu1¤u“&LÑßÂZ*4|Qdù ˆêó½ë½Sý0z'D%4•cŠHÆ#Gmqu ÜFu7â¨pq³ì~zS•>¦…¶˜¢¥‡EíØ^þ®Hj×-Þˆ-11e ±%ɾYö^‰Á†ÚÍÝïx௰éý"ûcÑ®žêön=F8^£GônW?&L1wñWþ“—¾Í؆ŸÏêÆ€#§R·¼ÚR룸þæ -EÚªVMo·Œ$yg@;”¦ñ4]„逵PØWJ]¥0îNÚ”}0ý?ÜwüÄ -"¯RÊ*×Qú(À4ö³)FO›’ ‚äêàþ(ÇÀN-ÅBÁÚc·}2«Õëé¢~ÒR¯ÛûÇDã]ÛÁ›75ÑâÛ?}’^¸Ã/T89B"j':up·ýÁÀËuŠwX¨ôN,[œZÕz¡jð^[éÐÒÊB¬ ?ùéˆ&µ_8èè¯\¿T~+¯þzF¹õ ã+¹6sÕétäïøë÷’ç6é¢MLqý/V‰{k˜ÖtáŽ
5Â3r;þªOé‹-ò°Yüeå‰4Š\uÔ®¾O½ÜlMÀ¢€rº%bABõ΢8ò1âGÝð+kLiyûƒ7õ;3»à%h#üï[)ÍápµÄsÙHObgÐô»ÑŽ¹?§Çe×ĵ{
ì«þ&ÄqKZÖ¦ ¿ðÒ;qÛª47·‘)<´2‰Ç-Ò¸6,éó}›‰Êá]Â?…®ù6Çœb„5ÂxÀž^èvíÙœþÉã…~È’Õ*Epב~솳ŸP§Í!ðœÚ
^*ŽÒ¹\ÝMÙàvu¸2ÈL].ÍàE´”NDJösö–êä*\Ðqeùšß±œ²ƒ¯êrýrxÍ!¸ï%ծΟÖòÄͱœ·qšZ%ªæé»V7äÌ¿%þ_ÿVš*Ý\„ÊÒ$ǬǙVaÖÃVáÙàYú#gXõÜ¿Œ²ÕÞ·èêµÁ),|d œ¢Û¶†ñ;îìSJh"¬t§?ßyiKYLÚ´pØŠG?'â{âÁ:ì&~&¨*Ir‰OŽŠÜô«þaÀäOÀÝ0ØÔ››Uñ@t°'Âÿ}û¨ÃšA0IùúL{—p.ðZ¦{xyYOÛ–©Äï´+ÜsHuOŒ¨ÎU
G£–@¬Èo`ñý"qà‘±îø•¢†>MÅ€žQg¯¦ün(Nß_äz[òô:ÕKœ²S—|vîc50ð>rá*˜RLZr§±æ¨F÷ÓËÅRè¯%ùdÏÌnw°GAš¤’€\êÌp½{ë;îÿ©£1ö§¤Z…(Œ£ŸâÓlXzøÓ£g®éË7âE–$M@òŠŒ!‘ø„~!Óm¡.YAuõdOÉP)$0+17`´¦>‹Sºšà`Ù|ÃùõZ+iÌ%‰Õ-ŽLf„1®Á]L?ç©Žý²ødµ§jÄaš›ý’«+}W¸½C…÷ .ìñHÖ¯b sú=l!î‚0Q%— ̤¥¥®.©Q0cÑ…2¡ùÄr*Û>ŸÙ8ðrõÜôÎGùÓ%'§Â5æ+)Éñ;wF$ö’/=Ô=†1Ñ¡*^À½”»ÑœäJû¢œ%uÅ,ºs+§ItO¸’ýôí^êÓqVÆ/õø˜¸èc è¬æ²ao¼¸=¦ªò^y#et…Ëõêj‡sKÆÝ{%&é³ ˜PÅFU1ÂäÿÈ8Lˇ™§”ÁW‚e¾Sî3_×ÐR…%«~Þ¶‡ªR¹¼0Ö¡|!GZ¬7™D¡ÂmlÉ« û¬ÅÚ›å'û!ªXÌƥЇŸ$Ûn¬ßi¶cNÖT{·dìD§Xw¿§ÄšU ~pÌßíÛ/“8 -—[«R^i52)úIí8Ž?œðí•(Hù%‚¶§q‹©[&H…U½3È’PǃjÞX¡(ìÁõJ[Ú(y4\9{1¯€kÒ‰X)×'Ùʱiüƒ²{æxŠH.ž?–… Ý®CÚS‹|¦iŸÎ+—^Pcª(¿œ($&:W§||RÏä|ó„Ñgx^ˆI4¿,]…ѧ <‘å ãÜ5u@܉܊4 -î~%³€8Áj·ÌÓ¥í©ªf‰¾„ö§Ï‰óçô$zƒ1Ž¤PP9*'+p9øx3T.Œh“öJ™¿Âõæbo¸ó¾4¯íò¯ý ~µbàÜÄÆÅëº -ÅïBú¦·bF3‘¿Rm«v—¾NhŽµŸSs-©®ØVû$ß±:ÆMÏÇa£é¬¥Òžwu¸`†>I2"m)pŸ†¬)LJ-sE¤wBÆ\ûàx¼uÁ ìàà)†ý®?w-þÄÛóS*‡Û×wün>òîº佇1©úìIn\@Áû‚#–ÊI£óþmü€Êå^MåQ5Û†ì+fÌÉ)sm%$¥®2AÁ*r¾¯i`ƒÿë÷/Éf×(’eŽpý -’EbŠøÒò÷³órrx¿Ùî…Ía"”æ$çÆ:O[½D—ÏMmî”ó¯åŽŒlº7›ßÔÁ¬„dp‰e=ãvÏA6ä“Ûc4ªÙ ž)ÊÏÓŒMëU—)Å#ãùp¥)~Ø߇gºte© wuÃ^-Ù†œ3m6vxÐ.ú»Cd&ÏÌ ]ˆ -%"뻵 4-ÎøYmº¬<ÄÕàÈVTøEʦl'‡U3ž,3îÔ€K6:á…Á ز0ÒöuXêçùpƒ$ó¶žÅûšR™=?ì¿3OZ0œ‡‹œ$%fÅ5•.," ÅÕIKfL&Ýd«ÒÛ¶ -Ò*Ñz>~|åÄ!á“;Tÿ¼°wc8 -Ÿ(*mBÊp‘77cq²¯„#eµˆ½eñ”æ¦KN84e -þ&mÕõ1Û™P·£SÓ<òÊVµ}÷Zê§@ÞMë€<€¬åË&ûqÝA_ÁXRz½–¬X;w3ª¹BË?#,d?¥®‹#{œhï1»D‰LÄшÔ]Lª0‹G€~8îK‹žo H]¤äë®ü²þ“’Bö¾w€Ö:8Y2Ÿo¸È£Ç}ÜÕV%$Á½ôK”t³15^@$N5k›¿W²àéîJXɺÝh‡ŒqÇ^èð^—ÛÁîHú¸5<ºL~_ÜOùoÝ#ãP÷C(oqZo~„Øq}·wy™søÈ -Îs!V •ãrMLñ<'šP¾ÔŸ@¸WYÒ‘wçÿò¾Òç–Ö–V.wÚº7qËw ¾y2obW}ËÐë£ ~W·Àg¸sbj„ȳBMtèi(\ùê“í&×ÙzzÁð4#C®x@åHCK‚[ÐÚ¤[Þ#Ç©rÖ{°“ÈÕ84S’cmáË“áôÚ¤È*§6MM*sËY$:_Îñ¤C“Ø“›Ó¬ªc¾ìi'õs1z³vØhæ:¬—µ¼ÙùÆLå†Ò–³i]¨W@†–M˶ڧ‰I܉U¡€G‡• -ª'>Ûf4C¸MvtrZnàyTÉZÕ$KËýaGåEìÝ¿krÀ‡~fµŽúî„ÙGé¦éåGa5ÜÓ1ƒÌZ[\
U¶…\Ðר·ü¥ÀæêÛ‚Rèmà>ñº4ëµ÷VyG~ü½m4ø0QÍÏ<5&6,Å*Ô" €öºàÏ`]M$¥¹¼$ûË«>Sîy -i¢§£ !㺲”ÐÙmPžY1áÈU—¬h…øƒß'p¿X²0«Åû×N¿”UVÀzÔvƒÜšýâ„å®ðÕæjæ–Ä9Þr`òٷ…Zî¢ôÃ5†Q¯„ÿÖež&Zç:€âÜ3ùO7î•r+B«(ô]gþÒ¦ÈÑH=Fˆezu±!DÓÆQfl³C%q§Kõ¯ÏÖZ®^®¹Nˆ;–¤ßÀ¨ZÕS¡…ÄñÎ_\‘닼‹óDo®Fø>¦R°ÝÍj‘~É÷¯[÷oìÄæòn?[Œá)m’@©—‘Œ1´bÖ9ÍÂn8-MŠÝšá_jÂåêÀ:BÝ{8J4 4q†ea: ý>F‘-¼ªø¬Oð…àŽóMA1bÒvBŽ0{«i~n"É(ãUeAqò`Z(سRl8ì|–½v:øŸ”‚'Š’^ÄÏlÇ7…·}¡…4íKœç:©ú,X…¥¡bt‡~Wî¥öÕcE«ÃÝS‹†=@å ´Ê×æåóÞ=hj3áRe*ý¸ -Cà ê8ÎÉ]Özá·}6ù\ø*ø1B%[3DŽG -ŸH¡ó5q¤Ã·i±‚”p³×S“š¡¬p£“
¿ EûÙc¡ó,ßlÁ5Á²È¬íŽÏl©-fͿ궘SOpø¼5Sy˃øú¶(û -.3Ÿ–§ï¢Uí,?H-ýÖÒzÆ¥¨>#uQ4ŸÕÃJE,°NN•SONãó‚©;0ãb°^‰Uåª<& ²Nåð I[•Æ«çº´ÉQì\ïåºÞïñ8+ìNH‰\¶¥S‰)½0@ÌJ,yßÙ?3FçÐi®“© -X%Ž…¾‡¸ÝëÄìk|ßâðmbØ|¶®¶LïÄì†Ùû¸ä¡›¿å4žUt§Í-Ú'ÏxñwÓƒhÜ£¬N¦ú€·$:–©<©?æÌ"7{•åQιv – YRÀ¯Téœ'Ob²)7_ùÖÊ$ùÐGDËky—Ý·¢ÉŠ†Ý¡í¸sx¸ìqŽ#cßê©Ê±•góf©õÏ)mé¼³_«´`—¦„j?ùÁ“³Û)„„)F'ÏÔJL%%›«Éw‚¦¤‰¡g¸
¢ÌªBé±¢W>"BYÉ:VS=e=X|ùÁ±¨Þw ö¼Ž”ò°=èäÚD¢z*•(J":“–ÝæÜ\ÒËâ¦òUàñ+º¡îîñ,XbAeL¼Ásg]ÔPŠûÕ!‘I´+SdDÞÀð®¼b–ŠÇêqüÆŽ·ß0º¯¬÷Y®M»®¡J±˜|‡à6RBÃðšÍØøæU÷¹¨E—9Òêÿ„l™– ÅÚÎÔƒ™GÝê™"âX[zq3H³Üé[‹ãq»©¦-ÚÞ,ÈŒ3:I{r¼â:Ü?#©+²÷%g² X6F~“K0'Òöé½0r=ŸËH“¢“éÞiŒúR7a´Böj»å¸’CêOm‹FE „m&V”'TKõœ - -¿*,‰Hç[`öR{w…ÝƸ5¹¾ŠÇŸÉz¼ÃWDgãX°+>BÃ]‹BámƒéIÜ_<©œ+V§UžÌGTÆ‚(ø‡Þv9N{ Óü -Óúš"ýSz×âת 2\Ö´ÝõØŽHhKÌ´¥sšùíio=¶ïÇ·‡¾Ü⪧–AL!¾ëøãt¾tblkMÀé¹7AÑ|e·šáfa$|”?²Å0ËvœÁ×°(Õ‚î)=í†þ ±T1ß<” î³ PÔÚƒÞzçäu™»Óƶ»]÷so›w~ª°äƒ]ÛG…,¡ñó!XúÆ‘ŽÝo-*d~}áóÖö2§Cv¿*ìiëÕÎøˆIXrg]é‡
³Yèîã`"ùÞW×·sÔ¿A^nÒÕùIÖÇZˆ‹ÕúMºpnc1à€ôC…M¯³ùmlU”Ø—XzìS;ÒÁ’½yXžMÈð›’]h|¹ ˆü¬a^6ÕévH£ÊšÈØDuöGÑwdp7™õñàéÖd“ó?¢Ñ>;ô¥:žu ôÍáS>3ÞÒ÷“ÉU·ák&½þ½e|‘ÝÛZuFÒ0
¬±üÕ¸¢ -iÑ$Œ.ÞoŠárò"~ÖùôÕ³zUF•=GÉÝ©‚~éRÜ×h4ÖÀeiâw±ÂžRü/dRÁŒTkÍ#wƒ0&§šžh,Gë±Ãñ°`¿pLsî'úm¯=±çɱe—~–¯#\‡zó,ªÊÃã•ì9»^Bü¹“ÿC=u°cDk þD8œ/'V¶4¥? a¶d»Ø\ñQmÓõ:F,ÇÇÔ²\ñÎ<šr9oâ\è‰ñÓb]Å»¦f;Uˆ#e2S> xV¥˜ÃŽˆ†ê§—jŠP™¸¡.!‘#È÷©voÔ`ÒSº’ûþž}°S -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Ù\ +hjcÿOó9ÿ
™Û›ý÷úÿÊô¯ê™•¿©*ˆ‰Ñÿ{•QÕöï|²rqÿ;Béï$€Ô<Íÿ+¦¼ƒÙþáuð +9êXÚ¨VTPãÐ럱Ë[iôVÊÔ4Ã÷Ñî¹|æø~øîh¬Ç–º7Íüò;¡/9m!úOªNnú£ fƒRäÌsÍï«%¹(.£½)eƒ’7¢™Nvg¸«GÚ +ð±(f°^Ouy=5uv0ˆº;²)$5beA|ãìDR]Ê'lcq‚·¬
q#ζó`Èznª*—äpzGHzl—Žü•ü¡ÙéçXì#œ!qµ¿Í:ƒèÄï”g'EñƒÖ×Zò³ +:Ì•#î8Õ|0x6>Xõ£èRoÂÑXä0ÎEäÖöj¿qè^Ÿ^vJußÌbõK.X) LÚðªSŒÂí¯&ãsÉ,êA0ªB_‰¤–¯ÒóFºÖÕ‚`¥¹òß+sUd˜1‘ÇvÇ\Ü7lIo¶Es°+’3ÜÃBŒ-C›«ÏÒÙþä^q%Õª\‚§¦˜©8c‘Òüø«ï:·×lã4ýrmÆl?fGŠO°ç‡'LýÖºù˜5²Õ°ª+ØÄ2âÛ +l‹²O¿k€uÒ¥²‚ß¡ú¾ÕPo¯ûR&?¼?H¡_xÑdVetÇFx–ü¦ÒbË”ã¯Ø›'Kœ„Nƒh
çs+È#¤>ÝÚZóÿàßóÝÅ—rùJ¿JžÅÖâÀC5׎@«©Î}ú~йPÃ.Ý?þ%ÿ·†Ø…|8V¸+.Äe«iÖtÀ•"¬}g_~ÆI;>aäHb/ÏŒ(o=!!r–M˜”ê>T_×$¼ f~®1Ôtȃ IØQïþ®Ô»JTdc8Cøc q^Wùì +çüˆ“!Ò£àÆ<y[¬‚-êš^ب8gïÄ~½^µæ:~¶¸K‚”ph3»
Œ]ί”…Fö;Çj¶Å.šF`¶×1½UÎ2Òþ’–q× Ë tÞV!c>öäô—Ií¾_F h[ÄyCˆ%‰Šù©„MË/ß9û}õͦC¢ØFñõBmÇÇ)ZÆkCeƒÝq<úêšFŠÖût¶G}’éáÊ7DtKÅpSÆsV!+%°¤'þ}n€þ-ò +Y¸_Þº‹’¶Vé0j’æ’w™ýˆ½Ý³˜ +DÄmXÆàÁ–â-fºêgsêÈžG‡æh5˜CPa}f'£³™²§ÛaÎ +Wá*os¦ ƒ¸È)†V²…úaKVk$×FhÌJÆ-‹ä=Á–¤†(ñFÝRe¼Î— ›6Α38î¦ãÎwò.X0m¢;h¾³µ‡“V\#ߥÑÄKþ!éWƈô +‚À@ŸCðPdUÒa"Üd+ŽBCÍ¥×£°œ•j$öuݵA2âIþЦÉßÇB•E3¢³’»Áp=â.Nêþ¡U_»iÛ¢ñ‰&^e=ìü:raó™”÷„ºCñ‡md-ÛÙ£MšOR\ºÏ1MGMe˜×ÅãNäè1¶ñ»Òu‘èËçOœuZ›°Y†ôRÚ|pµÖl
¦»V}ðuX²Kþ5‹S +:SRK"‚°óhy{ +îõUòÐëƒ\‘7±ò½U<r¬I÷qo…‡Û‹ ö®éÂõs.„™¯ÕÝ딟Ào2XÉOzG·6vï‘ææDiðŠ‘ÓAûí6¼ÑîvMœ2fÞeYÈ_åÁ½y/W)v¡ð·™¹BÜ”/“<#»ò3YÈæÂ3eX’¹ßÓ!žÓ7¿¨Ýp´ä"ÏsU1ìö¯b晜$B'Lÿ”ˆxKEÊÒ«š<ÈÇ×Õ&k…ˆnç7½¬Ë§¹M³íÏñˆõSšÐÝ‚wª¯Áð¼úIƒ>ÐÀ ’ +J¸õÂÀL§°“‹YðY¼£°¤yjj·:Ÿè„¯÷òí ® žVœ*¯|I©Ì1ä@ª@iã¼|錽~°ùJ8ê„_…¾jï‹Ãç"Z2½8bÁ¬s¡+ø
øâ]ò{ ë9ŸC[Êú—‹™G¯ßŸRÑŸª¥0ƒ»Ö^üS~¥‡õA,ÎñŪNýï1ƒc,†•$ø°ß0,€Yî9¢²ÂË©Ši"òÁÐêц™Eœ«|+£þÍÚ1dŒ´²æ&&½’eÎc6Ñûh!ñ*ßð™Š'ü†=Tõy§äl†YÌ&‹I¬=‚ýpC$‹ëF‡}1rÍê¶P{IøpŽ::± LÖRuˆa¶Î’”"ê 9ÎS†"‰WÓg¨ö…ù#×qQ²]Àëlæì|â!c{ÊÒ2é7:‡Æüs +3,‹_Œ~\•‰4PK8n¡äÚm¦'†‘¯î¶°•]–\x-±pEmËÒ:.óóLA´“炳·Ð†Ö59–5`ƒuY…ÙOiöè¿ÔêjNã®ÄBÅu:]s#F›¢ò=£Ó‰7/¹”ÞFÇ´§:‚ OŸãÁ–B‡JÞºW1øaE%zÁ<}ˆ´u#i½ÂÙÚ˜Å,NžA:<£¦çð†üÛuoàÂ=‰C:•ÀîŒ"7«ÚnÚß²ötg«ÇÅ<«¹¶]DöýÞCðrWü¦ŒË¨*cµ _oVÅ’i¹n™`x¬ì
’OÊî©¿mO*RRßÑ-Ãÿ†B"TêQ‘súI”ˆÕáÔùéžåìûå,3oÕ3V9O4&aÅÉN›YzüÐw‹¨õåG^ó“^Zå0
Ú§õ#²VÑêz.úüõ»JŽUvÂh®P|ëæeN•Ÿûj6õ.)Ûwsqœ<¤o&w†a£Q´éUâÈcË%õ[§ƒWZEáÝõç2[â³Êqd¥z÷¿&³äëº6{Çtø’_}ðÒ¾,6¬#¸ÖjMÉÍhk6|ýEJÜú +ùÖ6ëlbÔLì4£˜_#n+ÄÒÝðv‚qŽ˜}°ü]ãà +åŒÛÀ"A_&’ÞQ+Ö#?vþú¥P+ +ÊS2$©ÁÚþ¼ÌR}XŸ¶g<4¶üz7›‰ÿ¸!Öë®í(!\ø ãÅpÀÿiçžm.¢EÔ*®…ð^aMò]bçÑø*ZìIe–l““mœ~‘á]"n¡ñ§úƒ®õI‹™½a/#Yˬ\‰$¥rŸ¿E18St~P¹R˜_ÂçŒGþö»Ã:°ù}‡ZP¼>yY*ûf¶á-Žxu áìñýÌÔE"BW—í‰âã4÷ ¹Æ™zöX²mÐç¦íMþ¥<%ÒÇœí0ðø%AR/e¶x4„»T)ª,šíýŒtUˆËHƒ:YZÅ¥¡÷âîC©Ô(Â_åTˆ¢,¡Ýp¬cù¯½ÔÝkDµ=º–š +cž†äG¡¼ð<%lyAôPjº<TwåLH¾®yJ€ìRci8>üÊEÍÊm¿b‹öi{çU8ÀXŽ…›'S‰n¼¶GPËœˆÜ7º6‰ùÆƘ]ÎÍ¥8êêýÔ¡Qí[ýeñïÄ_1´6Xs߈À÷Òñ×” ¨Ï)\W}yÀ±C÷¤G‘5s¶}}XìN¿µgnÞËÎÒ´°‡-œ%1ürd0ÞÇ|ãÀx s¯–Û¼_>U‘E–óéüóCA©xbPg +Ú|÷xêQ"î^ì*µÓÁì[ƒt9Дz%r1K‚6Ž…S;žžö±W¬ˆýösÙ +JÛ¾YV~&Pä¹ýå‘ÂìÕ´xˆÎtEQ§œîÕ¬/’ +Zš +üz±±§yÌÙ¦†–óûØgz;þµwü|[Ž§»,›¢³¹é¯f|Žõm¡¸øëuEÖîjn‰.>P²ê˜«O*beåc/Ï”càÃqm/º99åUÆ œ¾¤¦û‘ëi³=]§ìèH_îàê)˜v‚¨£q.5ˉ+ðö–fÛ˦(ƒãsþ «$šÊ6›¯.¾“KÂØ0"5„ÑÓ®ü}gc³á²ÄÈ(«áÓÿÂ^Êq*‘ü¡ËúK…¤±7È8œíY_ü\^Û'§ñkZ»£ ¿§“Œ×hÛaò±X(Æ‘––²SâÈmÎC+% ñwü~“ß9Ï7(ï[Úô–sÒ;]ä ªu÷W¦o9UoŒ©rˆhCô‹ƒbiÅ×s8mÃHxž#Ö[ÿÚaƒ™z +ýÁŸÄ×omé拺/
íràJ´1N hÜ4L×жKú]É{ìb_ÙpŠhjR„Ç>ͪg£>òÅßç”s²Ä¹7ÙÞ½ÖSú/IªýsJ‚”ÍøP.=v
!
;ݽÚøër?9‡REá`a þàQfÞ÷÷¨T§ûÃ'1ßYÜ'š©ûv?%Ži.xÓ×ì® ok2¹Š#*Vã–ÊO\™Ñø›‚ùõÝjÿøýLc²³ %^ñrÓ9“lÉsŸr1œmê?âÒÁ_àqo8¼, +fÊP<ãö®•n|~š¸¯|b„'h®ÅI;èËL +}ºFÜâlóž¼Ò
Œz-FÞ÷ûðˆâ>µÙ^é°íJmD&k…L]úÀïˆÔÃgßF’“O“"‰fY·?೶~;¶ZÍK1énÑ X˜ED +ê‹#DgLÛ‰ST[…DZȡïeÿN”‚~§/ìàuÍ?°aŒñên#2ÎDÝl>•Ù ÖLÏ|¦ìõH§_*ßЩdªîL#•z8\
úÿø‘µx¼Ÿºwl{Êì-êc³Û’Å…Yybèaç;›?S_D¡ö')Àߣ²mÍKy¦Ì½xÇþ®˜|V X¹GÓ8ÏaŒ×©è¦Æ6áv/vE¡jB™l*â©¡l¤¸BŠs»ø¾icí9 +ã‰b›…GÊ¡•¯fÄò#¿ÿbÆ©ÒÒ4¯+.ë(¤Ã‰„¨*…Ã*©0iL¿—B*èÿ‡¦%êÚOEˆ£‰}uƒÄTÚ|ÃÞ`U™øKô=îÈX+…o$¡~ ò° +¢®®õøóe=ñ´jgL`A#¦L©.6‰ +V‘œ§›Ü€ÎØDtoî㨋¨§©iiKCÊÕf;nn¿¾·UVi†Q£Ôô'r"ÁpÅ£¶<ÐSj4XÕX}\Bÿ=…òò1õ'Ü4>S˜R/êîm@Í,PÖ“`ä^T*m8FYtQ³†²Ì“O=À“ÌàÇ®œm;÷€ÁE@œ_ÛWpmlã¨UôÆ¢Õµ@éYÖÊŒø?¥ó¿¯¡S>+iÞ”X=bz!qÄK b^A¬Êqb„¬A¼‰jb¦—0?8{
v Ÿ¦ÍÖ +[Hz¶…Œ;Ö¼Ð\¿WÆ0ÎQeq9IÎÉè5?°0x?Dveav +¥.åÞ÷{O³t'ÜËèȨW‚)Z0öàámn›Xƒ}´5Ò:cùæuãæ ä£sjJÇÍ +>6Âäý1˜žáô™œ"ÞíòcÕÌPŒ1nKùÄs~⧵Xâ}çÍ®ø‰¢˜ºQ&Ñ•ý˜ƒÊl ئt¬!\Mo‡úÇ õ^wü}±áDcÄÔÝݾ£áþuG©n\¾¸ÈÝ7Àcå¬U‚Y–ƒ¼eÅjx_ûÏgu¼¤jO‘œ+Ø#rtŒîPdºC¤Ö–ï%DT,fî€é‹¸ˆIØžÇÓɾ2•–Ž¨
‹Ô(@¹ˆÛëìøïy<ýÄKÑ;e«T +·Ã΋™ù&¨»Ý‰Ÿ¸ËCÝqH·DéÅ’ÊRsfV+Ù«Ö©q>ÁK@Bª@¥¥¦ƒ4ñ\¡ì©3•°×æ¯ÝÎD$x¡VnèŒø +wüÛù ìòÏÏ^†ˆ~‚ÌÁ†ŒŒr +—À÷à(MO篱ô¡Ñ†O®iwö°“Ÿ:‹³&çÏEîÆ3”‹¾ª±þ=î¾B±—Ð7<”¬ˆ–±Æދж©/,³¥Cá©NÓÕ
ŒýNJ8ÕÊì_;hCÎ1í't + ÆÌÌPÌ%Eȗу±¹ö¬éóÓ‚y5Üí¨ŸuJ+dY,œ¥IF½õì<Ä榵℣¬Z^`Û[0dìŠ?È‘ØG¾YWM,šk¦SÕ½vν!&ŽççýØ_)>àýÑþ~…½A‚
=½è®îi»ü1~ €o«ïdè’®b5TÚ-ÀÖZö‘‘_‡Ý;ÞªqÎÅ+yþÍ´¢·ÿê0bHë&M˜¢¿…µ.Thø¢È&òAÕç{×{§úaô2NˆJh*;Æ"‘ŒGŽÚâê@¸+ŒênÄQáâ8fÙýô4¦+}Mm1EK‹Ú±½ü]'þÔ>*®[¼)Z4b:cÊ@cK“}³ì½ƒ
µ›»ßñÀ_aÓûEöÆ¢]=ÕíÝzŒp¼FþéÝ®~L˜bîâ¯ü'#.}›±
?ŸÕG*N¥nyµ¥.ÖGqý=ÌŠ´UšÞnIò΀v$()LãiºÓk¡°¯”ºJ
`Ü´)9ú<`ú¸ïø‰D.^¥”U2®£6ôPZiìgSŒž6%É/ÔÁýQŽZŠ…‚µÇnûdV«×ÓEý¤¥^·÷‰Æ%º¶?‚7oj¢Å·ú$½p‡_¨pr„D ÔNtêànû‚€—7ëï.°PéX¶8µªõB-Ôྲྀӡ¥•…X~òÓMj¿pÐÑ_¹~©üV^ýõ40Œr[ëAÆWr!læªÓéÈßñ×ï%ÏmÒE›˜âú_¬÷Ö0?èÂ[j0&„gävüUŸÒ[äa³øËÊi¹ê¨\1|Ÿz¹Ùš"€EåtKÄ‚„êEq:äcĺáWÖ˜Òòöoê%vfvÁKÐ:Gøß
¶RšÃáj‰
沑žÄÎ éw£s/~NÿŽË®‰k÷:Ù-VýMˆã–´¬#L7@~á¥wâ¶;Tinn#Sxhd[¤q%lXÒçû6•Â»„ +3 5\'òmŽ9Å<k„ñ€<½ÐÿìÚ³9ý“Æý0%«3"TŠà®#ýØ
g?¡N›Cà?8µ¼T¥s¹º›²Áíêp1d™º\šÁ‹h)ˆ”ìçì-ÕÉ/T¸ ãÊò5¿c9e_ÕåúåðšCpßKª]?剛c9oã4µJTÍÓw%+¬nÈ™Kü¿þ%*8¬4Uº,¸>•¥IŽYŽ3¬‡Â³Á³ôGΰê¹e«½oÑÕkƒSXøÈ@97D·m
ãwÜÙ§”ÐDXéN +~¾óÒ–²˜´iá°Ž~NÄ÷Ä‚u.ØMüLP1T’䟹éWýÀ9ÈŸ€»`°©77«âè`O„ þûöQ‡5ƒ`’òõ™ö.á\àµL÷ðò²ž¶-,S5ˆßiW¸æêžQ«ŽF-X‘ßÀâûEâ"À#+bÝñ+E9:}>šŠ? +Q;G?
ħذôð§GÏ\Ó—oÄ‹,I6š€†eC"ñ ý.B¦ÛB]²‚êêÉž’¡RH`VboÀhM}§t5ÁÁ²ù†óëµVÒ˜K!ª[Z™Ìc\ƒ»˜~ÎSûeñÉjOÕˆÃ47û;$WWú®p{‡ +ï\Øã‘&¬_Å@æôzØBÝ)„a¢ZJ."˜IKK]]R£`Æ¢eBó‰åT¶}>³pàåê¹éò§KNN…kÌWR’ãwîŒHì)$_z¨{þc¢CU¼€{)w£9É•öE9KêŠYtçVN“èžp%ûè- Ú+¼Ô§ã¬Œ_ ëñ[1qÑÇ@ÑYÍeÃÞxq{LUå½òF2$Êè +—ëÕÔç–Œ»÷J LÒg0¡Šªb2„Éÿ‘q˜–3O)1‚¯Ë|§Üg¾®!¡¥ +KVý¼mU[¥rya¬CùBŽ´Xo2‰"B…!ÛØ’9VöY‹µ7':ÊOöC„U±˜ŒK¡?I¶ÝX¿Ó2lÇœ¬©önÉ>ZÙ‰N±î~O‰5+ª@ýà˜¿5Ú·_&q( +«zg:$ ŽÕ¼±BQ0؃땶´Q$òh¸röb^%Ö¤±R®O²•cÓøe÷Ìñ‘\<,+@º]! †´§ùLÓ>Vþ.½ 4Æ$TQ~9QHLt®N%øø¤žÉùæ[ ?†#Ïð¼Z“h~Yº +£ÿNx"5ÊAǹjꀸ¹?i +Çjø-Å~…Ÿaó¥èáE¨šnµéøôξÝ4I°åúnpÙ1v1¬«¨Ì©¼zp¡‘ð¨53c=2f2¾b¾J"«AÂ5…øœýÆ/Ü;D(#?iÎâ²u +/ÏÀ2ãë;‡êF·Ì€pmÞ‘¡L€AV\dÐË‘b@º:’]ì¹:Q©,¿e1’f—"4T9ˆ§>ý×+¨‘Ê…¦0B#G³íźـ£eƉ‘F+¨_ÁŠ\ÖH-ùŠ‘™è{3…UѳyÝ«h ‡”Vq¹Œm|´ÑÍñ][¾ÙÁrÜgò’ËECåÆmÒ饑ÅM<ÔÕ³ñ2²z!Fi\NBÄ'¿q+—ŸÏ¯û|À¥ÛŒÑdtZíj¾}}rÑY“H¥XçKÚ]yÆ ²»§Z±ÎG¯éóBCò™+ŸÉ‰M\™¿Zú*ñ¹™Á\ ŽÊk’¬ +"¥ÚV-ì2.'|Ðj?§æZR]±¬6öI¾cuŒ›žÃ$FÓYK¥=ïêpÁ}’dDÚ Rà>
XSŽ[æŠHï„Œ¹öÀñxë‚ØÁÁ;Sû]î 9Zü‰·ç§T¶¯ïøÝ|äÝ…uÉ{cRõܸٓ€‚÷G,•“FçýÛø•Ë#¼šÊ£j&*¶
ÙW̘“SæÚJHJ]e‚‚Uä|_Ó$Àÿ×ï_’Í®Q$!Êáú$‹Äñ¥åïgç5ääð~³Ý›ÃD(ÍIÎuž¶z‰.Ÿ›ÚÜ)!ç_Ë+Ùto6¿©ƒY +ÈàËzÆ힃lÈ'·ÇhT³A<5(R•Ÿ§›*Ö«.SŠGÆóáJSü°¿Ït/èÊRAïꆽZ²
9g&Úl<ìð ]ôw‡ÈLž™º(!JDÖw[khZœñ³ ÛtYyˆªÁ‘¨ð‹”MÙN«f6<YfÜ©—ltÂ/ +ƒ°ea6¤íë°ÔÏóáIæm=‹÷=þ4¥2{~Ø~gž´`839IJ$ÌŠk*]XD,Š«“–̘L0ºÉV¥·m¤U¢õ|ü<øʉCÂ'w¨þyaïÆp„>QTÚ„”á"onÆâd_ GÊ,j{Ëâ)ÍM—œph ËüMÚª‡k[c¶31 nG§¦yä ”#¬jûîµÔO¼›Ö=4x +Ü"÷€,ºïy ,½M +ÍÏi£ÁK¿ADÅ
"(æñÙËïOÓZp‰L3j2R¾Ç[çg\þÉÜFœçB¬@+Ç嚘ây$N4¡|©?p-®²>¤#ïÎÿå}¥Ï--\î´uoâ–ï@|ód ÞÄ®0ú–¡×GAü®nÏpçÄÔ‘g…šèÐÓP¸ZóÕ'ÛM '®³õô‚áiF†\[ñ€Ê‘†– · µI·¼GŽSå¬÷`'‘«qh¦$ÇÚÂ!–'Â;èµI‘U$NmššTæ–³Ht¾>œãI‡&±'7¦YUÇ|ÙÓ*N>êçbôf;í°ÑÌuX/3jy/²ó™Ê
¥-gÓºP¯€-›–mµO“¸«B5*TO|¶Íh†p›ìèä´ÜÀó¨’7 ´ªI––'úÃŽÊ‹Ø»×ä€ý:Íjõ!Ü ³ÒMÓËÂj¸§c™µ¶¸ªl¹ ¯QoùJÍÕ·¥ÐÛÀ}âuiÖ/j-îòŽüø{Ûh;ñ+`¢šŸykLlXŠU¨E. +ñ¿Oà~±daV‹÷
®~)«¬€õ¨í7¸5ûÅ Ë]á«ÍÕÌ-‰s¼åÀ†e³oµÜEé‡k£>^ ÿË*<M2´Îu +„º÷ +6p”hþ*hâËÂt@û!|Œ"[xUñYŸ4þàÁß1盂bĤí„aöVÓüÜD’ 4PÆ«Ê‚âäÁ´P°g¥Ø qØù,{ítð?)/N%¼ˆŸÙŽo +oûBiÚ—8ÏuRõY° +K[[CÅèý®ÜKí«ÇŠV‡»§
{€Êh•¯ÍËç½{ÐÔfÂ'¤ÊTúq†ÀAÕqœ“»¬õ†Coûlò¹ðUð5þb„J¶fˆþ +ó)f.Æš‰Íµ‘,T6ã>‘BækâH‡oÓb)áf¯§&5C
XáF'~A‹ö
²ÇBæY¾?Ø‚k‚e‘YÛŸÙR[Ì$šÕm1§ž,àðyk¦ò–ñ%ômQö\f>-NßE«ÚY~Zú¥õŒKQ}Fê¢h>«7†•ŠX`œ*§žœÆçSw`ÆÅ`½=ªÊUyL@dÊáA’¶*WÏui“£Ø'¸ÞË<t½ßã
pVعlK§Sza€˜•Xò.¾³~fŒÎ¡;Ò\7&…)R%°J}!p»×‰Ù× ø<¾Å5àÛÄ°ùl]m™Þ‰5Ø
³÷qÉC7Ë):i<«èN1š[´Nžñâï¦Ñ¸?FY#œ6LõoI +t,SyR0Ì™Enö*Ë?¢œsí +A,A²0¤€_©&Ò9OžÄ Ze3Rn¾ò•Iò¡ˆ–×ò.»oE)’
»CÛqæðpØãGƾ9ÔS•c+ÏæÍRëŸ'RÚÒyg¿ViÁ.M Õ~òƒ'g·S SŒNž©)”˜JJ6W“ï MICÏpD
˜U…ÒcE¯|D„²’u¬¦zÊz°øòƒcP½ïìy)åa{Ðɵ‰DõT*Q”Dt&-»Íÿ¸¹¤—ÅM7ä«ÁãWtCÝÝãY2°Ä‚:˘x%‚çκ¨¡÷«C";“hW¦Èˆ¼á]yÅ,9þÔãø)o¿at_Y)î³\›v]C•b1ùÁm¤„†;á5›±ñÍ«îsQ‹.r¤[Õÿ Ù2-A‹µ©3[-ŽºÕ3D0ı¶ôâff¹Ó·Çãv1RMZ´½Ygt’öäxÅt¸FRWdïKÎd°lŒü&&—.`N¤íÓ{a.äz>—‘&E'Ó½Óõ¥nÂh „ìÕ>vËq%‡ÔŸÚŠ@ ÛL¬(O¨–ê9 +»
pkr}?“õx‡+®ˆÎƱ`W|„†)º…ÂÛÓ“¸¿xR?8;W¬N«<™¨ŒPð½írœö@§ù¦!õ5Eú§ôþ®Å¯UAe¸¬i»ë±? Ж˜iKç4óÛÓÞ:{lßo}¹ÅUO-ƒ˜B|×;ðÆé|éÄØÖš€Óso‚¢ùÊn5ÃÍÂH&ø(d‹a0–í8‚¯aQªÝSzÚ
ýAb5¨b8¾y(ÜgA ¨µ½õÎÉë22w§mw»îçÞ{ß6ïüTaÉ»¶ +YB%âçC°ô#ºßZTÈüúÂçíeN‡ì~UØÓÖ«ñ“°&äκÒf³2Ð;ÜÇ/ÀDò½¯®o稃¼Ü¤«ó“¬µ«ô›&táÜÇbÀé‡ +›2^góÛت(±!.±ô"ZÙ§v¤ƒ%{%ò°<›á7%»ÐørA4ùYülªÓ3ìF•5‘±‰êì¢ïÈàn2ëãÁÓÉ&çD£}vèKu<ë@/è›Ã§"|f¼¥ï'“ªnÃ×Lzý{Ëø"»·µêŒ¤a@Xcù«pEÒ¢I]†=ßÃåäEü¬óé«gõªŒ*{Ž’»:R$üÒ¥¸¯Ñh¬;ËÒÄïb;„=¥,ø_0Ȥ:ƒ©ÖšGîaLN5=ÑXŽ†W?b‡ãaÁ~á˜æÜOôÛ_{bÏ“cË.ü,_G¸õæYT•‡Ç+Ù rv½„øs'ÿ#†zê`LjÖü‰p83^ O¬liJ4ÂlÉv±¹â£ZÛ¦ëuŒXŽ©e¹â/x4årÞĹÐã§[źŠ/vMÍvªGÊd¦|&@ñ¬J0‡[#ÕO/Õ&¡2[qC?6\B"GïRí:Þ¨ÿÀ¤§t%÷ý<û`§ +†ô†Diôc\2°> ›!-O––0LÓôuõF¤]Äí;ÿ2:º<O®©_¤¿°¾`1üñhá‹—gGHÉEV¡r-Õ@,£1,…²Úqn ôD’ž¤ñÂç°Ù>c7“áÖn–<àƒÎ_’‘ò›p<m¨@§Bê¹lµÆ¥•RBGDuæ˜Í¿Ü¥nÑEG¨M…ä>tý:g˜¢qɤ(²µ0£Š#ŸÈïß”ºXøT˜bâ„N>RŽ™*0dIœ]2ÇHƒûdhÉ/ÔÅãôŠpÓ¸Q +•iÊ_-ùÜž\œ¿mYÞŸâ…ž{¯ë=ÙÈ°ù€!Ø– ¢eħ‡AœˆÐ÷:
ä…ØÂó.¨6g¤ ‹,^>êÀïõ¹~ou¹Ï<Ønb—7¢EºEfB}dQ†Ç=Ë>7¡ ¤ä®>WE†¡KI³°Úóã‰<°²lÐÔŸâ´éCsªHH¬{l áùùäaçJܦXö"PùMê•%".qHdÆÊ%m~?à¶"ñnÚÕF¹Ö€~\álD¸yhæzf¢Ãz…´¿´x-Å)Îaм®“¦CÏ€‰Œ˜÷E ŸXìú +¬Jè0ÞÍ÷ù‘Ly_q•+ÒråE' +›ú +3Rȇ¢”ýÔCj?} ˆ.ôrnKʼCZ(ö3Rƒ)Y"ºY|®ÅÅÙŽöåæ¤&ð`Nê¬n¨S’Aew¼JB<Fô'Æ
sËEÀï‘'k?ÓhšA/àF¬ßnI¿ÉKbCJ§ÍÁ +QÀDÓðpù{ö Øåö¶Fgü»“l3T¸!-¨íj+ì&8Ëü`öô•$&D’]£Çj‰Û¿ü@ +«DïÛûïê8‹mÞp•´ÑQž”ÿoŠ\ªþÛºüvõÁ‰|8ã?sYÀ}IèÇd3ÇÓqÍ¿›øLØ5áöf¯§¹˜WË*Ioûu\ç(‡äT½åb·Ž¼ +¿ð¶8h¤±ÍËO\¹Y=J×ìjØ>=Ö{u}¢ˆÑkæ
y9ü4¥-²»²íÜþ"„ùT¢¡Ãä»K“ÿ½½Â{èðÝ´+¿œßñ. àÉäó‡¾+ÅZ¥Ìï>®Äά•~üÊåœý‡2X·„úÉÉ_÷âAÑNõ›
Oúd"ü¢»°mÊaųs'ödM¸©Ý¬ã÷íCÝcÁØêÜSŽd&žz¾ó‹¾‡òÉ)ÿªóó·r§Ÿ3ï>1çØ5ŽÅ*w_›nËí›°2ìtç‹þþërü¶I×dsmÕyT;ò’Ï&u)噸÷Î-v>"Ÿ¶W³>IfÒªÍG¶ŸÝ*qdßìÈço^Çû–Ÿ×;«û¹Ãîýs×çþÍ«É‘S9²ïáì]ªÁrÍúŸRÃ6—xZ·ÜÕÑ{øë¬ß‰RÅsk¿ûº½´Q4‰T›~¨r‡„ñºwRâiÏ6J³‹<œ¦_¶}ûêK®•·•(\£’sR‹Jòs‹²¹ endobj 1042 0 obj << /Type /Font @@ -14564,14 +14560,14 @@ endobj /FirstChar 35 /LastChar 90 /Widths 2837 0 R -/BaseFont /ACCOUF+URWPalladioL-Roma-Slant_167 +/BaseFont /QJSNCC+URWPalladioL-Roma-Slant_167 /FontDescriptor 1040 0 R >> endobj 1040 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /ACCOUF+URWPalladioL-Roma-Slant_167 +/FontName /QJSNCC+URWPalladioL-Roma-Slant_167 /ItalicAngle -9 /StemV 84 /XHeight 469 @@ -14587,18 +14583,20 @@ endobj /Length1 862 /Length2 1251 /Length3 532 -/Length 1861 +/Length 1860 /Filter /FlateDecode >> stream xÚíUkTgnõJÀ+Å€€¸ -æ2@ Š,Ë©É„’LP.(‚€`P¡r¨´RZ/ÀËÅÄŠ‚g¹iL@°rÕtÐc—þÜýµggþÌû<Ï÷~Ï<ïwÎgfâéCpb!Á°"@"HœÝ|d -å†pD€…óg‹";À‰£\&$ -DKg‹ÿ]Íæb#ƒa ÌÄõv#L‡äÐüš”ʸ/Îßùá#’Ö˶*u¯f‹]\—ëC=çe"*-Q^=!Ç)ô÷3Né¢W2Ý3¾š.Õ½x5½¸Â?;ÚLìñÁG%¥K×¼¶2eÈ"ž.üFiHkFývÛöÞémñm:çX*úáóMsƒÝÚ-½OZšn¶ë½ 9ðá&|ÔÀ“Γuñù7v2'nßwexâ….éæ -¶£vð44ûÈŽT(¬¼FœZï©”ÇôYóë=2š$OÓLSÍžË}*$3éq†1¿Ý -×ÄßMË,™ùÚC×lL¿>pG–|CIÊJØÛdìjÔöÈšójs›•»ô“ò õªK#uí¡}©Sߨ47—ǽ¨€Â -kóŒ÷<Žø¾açœ/>3–øeÍéCÏÊdÚÝ
z î®{½ÎY/‹´Ü;4Ò)n⫳Ò:Ή1~xܦ£ûÎÞ²G üt¾ûÚ+°—é¹¼ÖÈl<~=œ¢e*í²32ÿêà+ÆꊵÂR‹MÂÒK cI´þc`õÍÎ.ðj<óHnc’‘®—r-Æ‘ì«-[6JëõzjÏJe}:ÆšýÊìh=…‰´JÄeŸÑžÍÊÈôt÷òÿR#þHK~r GàsµºïEå³rä쎱-‰c~êÆ ùËÁ «)á¸6íRW™ª¡y|©ÑÑf¦PÓ©âìzCä¶ß¤û_<ÐÅ)JÉáDO¥û‡éËøÁß'¿ßXJø)ÆrhB¹µ/g&~ÄÍàd9ç¹Ò£Þ¡¦ÜØ„Øk?n—܉sD¥ÉíÊ5Oñ7ƒ:ï{@1ŽˆÏ>1fâ©¡ëQ!½â ˜ÈWs\·P²ºÃ&ÂrÿY¥˜È¨Ÿzf‚kz·îØ3ù±öåBï‘S;~RS,Åòïj°‚L×ønz“uðy]?ï“°¿éÎú«_EäÏVWyHûd—q4I~àÿþ—¡²Éˆõ×nɮɈ.ù„¼ÿV±-Uqìá¤òzÕ1qãMs)Iy›â›x&›P–ïwñGµGóŠÊâqusSOý|jÐ p!º§¨þ”6²Ÿ¹ŒW:LV•Ð>÷Ù÷k<UÄ>éôâï§Ho’º_hÔË%Få~ôêÔ©éR-ù›žÙíCƒzÒ9+K:¥fx_H·ßÝo¸c{îÂoûÖuã~Š¤{ï&gœåÇ:O¾Û²û5§àÙq˜TÙp1Ÿ´.à¾j•J}Ú(œv_X9F¬/J¿ð«û®"ejÊ|ä–‚¡ëM•»æ3Z|ZÚß0Ûü*ÉBõmVµ§éjã’¾…Ò*€¾m¸D]8ðI´½|À-BŸ0JcN|^œØØá90×%ÎmÌKÌu—]‰&g=)CJüå6:ø’ž˜ËÂî
p´Q[mc࿦9ëZ7s÷œÖP$sUŠÑì3нÛéR>ª+_¨cín½=ê:ätMKÌkÓüyAz¸9$öËÏÐœ±Ù„˜äfŽwn×7\—c´—ÄæàÛçñO¨g·z
ÚŽOåÐœ -š0øŠ'!1çM~ü&ú¨j$`mÄè/}úªúú£§;»Rüâ\MçÚ%©g”Sw¶wNìÊñxÌ8Ù·ŸîzF£N¦µ:¹"ŽÕÚ`ƒÆ÷ÄæxkôJ9…kƒzó*ÙèÿÃ÷ÿÿ
°«BEBÃpÿƒêþfendstream +æ2@ Š&X4-wDP¤2$H20I0@¹,P ‚A…ÊE ÒJi½ +& X¹ê +ºè±KîþÚ³3æ}žç{¿gž÷;ç33ñð&ÐÙHìŒÅÒ +Cb"܉a +WJ}áes®0›'¬d™bˆÏcÑ…Á| €6D²5u™à‰œyR˜íÁ³¸ +±`>Ìù3lý^ú;ÜÃ!ô€e€¬Pq—à¿Ç` ÒhÅ ØÛb?‚¶€5æß„, ŠÂBñÒÙÄâ[sxØÈ`X +³p½ÝË!)$¯:¹"ö³s·¿ÿ€¤õ¢RÝ«ÙìW›ÏcÇxSÏzš‹KG‹•WŽËñ¡ +ýÏY'uÑËné_N—è^¸’VTî—Om"öxã#Ódk^Y™2åáN|4¤5¡Ï|³m{ïô¶¸6³lãйƹÁní–^',M7Ûõž×x>ràqçÖÉÚ¸¼ë;Y·î¹0=ð"ç4sÇQ;hš}„àD(Vž#ô–»*åQ}öüz÷ô&éãTÓ³gÞåÒ™´XÃèßo†iâ癩eÏ|å®…k2f\¸-Oº®$eÆïm4v1j{hÍ}¹¹ÍÊMöQ0yÐzÕÅ‘ZƒöG>?W)¯Uš›ËbŸ—C¡5¹Æ{žD…W¿sΟCü¢úÔÁ§¥õríîz=Pw×Ý^§Ì…ZniWÉ•YY-÷ø ?<nÓÑ}{oéÃxÁ{:ß~åPƒËp‡œ_id´»FÑ2•uÙ™yà%suùZQ‰Å&QÉÅø±DZÿQ°êFgx_5žq8'–9ÉLÓË
¾š +•)Éó[ò‡®5Vì:Çlöny`wlÃlÓËDÕ7™U¦«‹ûJ*ƶábuÁÀ$ñö²×p}Â(5ñiQBCG¸ÇÀ\—$§!7!ÇM~9Šœù¸)ökµÑ)Ç÷D_uo€£ŒÚjnÿ=Õñh׺™;wáÔúBÙ˜‹jU´fŸîNç²QÝÖ…Zöî–[£Ž!Cô«Z’ ~›æO²CM áo^ºæŒÍ†DÄ$'=`¼»`»¾áºl£½$ßÖ4L}0»ÕsÐv|*›FÏo:Ì(GŸ3ùáë¨#ªÿµá£?÷µè«êꎜêìJöu1k—¦œVNmÜÙÞM8¾+ÛýóDßç—ÓýsrÕIå±ìŽz4î ¤'&ÛK£WÆ-XØ›[ÁyO‡ü>¸ÿ7øŸh€]Ý*FŠûËþZendstream endobj 980 0 obj << /Type /Font @@ -14607,14 +14605,14 @@ endobj /FirstChar 13 /LastChar 110 /Widths 2839 0 R -/BaseFont /LGYUJF+CMSY10 +/BaseFont /LSCUAM+CMSY10 /FontDescriptor 978 0 R >> endobj 978 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 -/FontName /LGYUJF+CMSY10 +/FontName /LSCUAM+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 @@ -14638,7 +14636,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Ó€ @@ -14741,7 +14739,7 @@ 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 977 0 obj << /Type /Font @@ -14750,14 +14748,14 @@ endobj /FirstChar 2 /LastChar 216 /Widths 2840 0 R -/BaseFont /BGPINQ+URWPalladioL-Roma +/BaseFont /JTEWKS+URWPalladioL-Roma /FontDescriptor 975 0 R >> endobj 975 0 obj << /Ascent 715 /CapHeight 680 /Descent -282 -/FontName /BGPINQ+URWPalladioL-Roma +/FontName /JTEWKS+URWPalladioL-Roma /ItalicAngle 0 /StemV 84 /XHeight 469 @@ -14780,7 +14778,7 @@ stream xÚ¬zceß³eÙU]¶ÕeÛ¶m[·lÛv—mÛ¶m³ËìrMÿþOoæÓÌûp"ÎÎ̽re®Ü;î8dD Ê´‚& CF&ìhjèl °1t6å"T75!15&db"däää„!#Ø{8Zš[8RüÅ ¤¦¦ù/Ë?!„Fÿáù»ÓÉÒÜŽüï‹«©
ÀÞÖÔÎù/ÄÿóFeSSBgSB3KSBayMI9qB -q9UBqS;SGCB#KcBKcS;'SJB3€#¡Í¿-v&–ÿ”æD÷KЉÐÐÉÞÔØòï6SwcSû\4„ö¦Ž¶–NNß -Í
íœÿöÀ@higlãbò¿v3À¿Ù;þFØþõýS +q9UBqS;SGCB#KcBKcS;'SJB3€#¡Í¿-v&–ÿ”æD÷KЉÐÐÉÞÔØòï6SwcSû\4„ö¦Ž¶–NNß -Í
íœÿöÀ@higlãbò¿v3À¿Ù;þFØþõýS fH{ð1Ycgl ñi0–Wä¯}Ã4¿ðtóE&Åt¶Z \&—Ešà’º››¹š#/(/25©â¾î‚C‡ã{»ò-o8J<îqæÔ§
- 㼑a1Š¯@x×"ÙÍÕƒHQzHÈÈH<àtáŒË{â,ȸ†ÍÊ·K3”’/Y”Ôty®žˆW"So¼¥¯Úh‰í}oSOw½MOY%9 @@ -14880,7 +14878,7 @@ _ÏfZYX/JÿŠPžUºÐ±;Äó™Ã¾¨5ÃÎ~¢M~;-5”äÖ$„€`3’’˜à0ßnpöã¤ÒE›ðÆúb89qÄZ¥| ž !µãmYgKà”‹ù÷ÿ•£B}ôçüÂÛZ
= U³W¯Û䉊ù¥tàC½^¦W QŒÝ›îl6;¹E& ˆÈš.®*·Kcî):+©†¸uó‘=t‹b'´á": EúPjAõ¶Õ ª±E@
ûõo`¦iqKQ`_`+§|,33yºGÖÿÚæa#^¸“¯™ÆÀ¤Çð—àBÝ®éãó8OÝòUÐÇ3&]¥§J°Æ$h
‹YH<(|í HhtÊcµ YjCorpôaá‘Ögnj/#;ÌèâCŠ7±]c¥£ÿ|I4aü½ï¯kÅ3|M&ïæ†Àh¿}®²L¸¿‚fµÝ¤TíR8g¤=Œë&í‰A¬ >ª¢Ûd÷C{z‰-6ð7Tœçܧž
p"ÿ²±(¯Ÿûº`h/áw»7¢»ªîÈ”
û½U6´‹°ÚS
+ÑT~¯Tç°Ç&µÖªñ˜ü¶×êI z{çNÊ€‘±6qZü(úX(ø¢ZyÁ´~´ãÅ¥ÙÛا°ÞÊ›H#æ -½¨©5¯O3þU¬–.œ)
@X±®Kàð`ç0’’A©2ã?Â’§¤1à*\Ü& Ï×ò•Es”òœ³e»`Ž-Ä_ø£½—†›}t`òC;]t:ü#?=*rež‡¾ZNžÿµ×Þ ÞÏ-aæ:-ƒ;ž""·È¶ êÝ'(ž¶b—PÝò$&¦‰É&ŸydÌG<‡#{BŸí’Tdõ/úYýþª·Áè`þÜ(JæsmjžãdàѦÞ#¶«âÝ]¹CÑdH€
Aþ–/“6óN#å +½¨©5¯O3þU¬–.œ)
@X±®Kàð`ç0’’A©2ã?Â’§¤1à*\Ü& Ï×ò•Es”òœ³e»`Ž-Ä_ø£½—†›}t`òC;]t:ü#?=*rež‡¾ZNžÿµ×Þ ÞÏ-aæ:-ƒ;ž""·È¶ êÝ'(ž¶b—PÝò$&¦‰É&ŸydÌG<‡#{BŸí’Tdõ/úYýþª·Áè`þÜ(JæsmjžãdàѦÞ#¶«âÝ]¹CÑdH€
Aþ–/“6óN#å endobj 954 0 obj << /Type /Font @@ -14889,14 +14887,14 @@ endobj /FirstChar 2 /LastChar 151 /Widths 2841 0 R -/BaseFont /ZHLVXX+URWPalladioL-Bold +/BaseFont /WIWHEG+URWPalladioL-Bold /FontDescriptor 952 0 R >> endobj 952 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 -/FontName /ZHLVXX+URWPalladioL-Bold +/FontName /WIWHEG+URWPalladioL-Bold /ItalicAngle 0 /StemV 123 /XHeight 471 @@ -15086,19 +15084,19 @@ endobj /Type /Pages /Count 6 /Parent 2846 0 R -/Kids [2660 0 R 2668 0 R 2672 0 R 2681 0 R 2694 0 R 2699 0 R] +/Kids [2658 0 R 2668 0 R 2672 0 R 2679 0 R 2693 0 R 2699 0 R] >> endobj 2708 0 obj << /Type /Pages /Count 6 /Parent 2847 0 R -/Kids [2704 0 R 2710 0 R 2719 0 R 2726 0 R 2730 0 R 2734 0 R] +/Kids [2704 0 R 2710 0 R 2718 0 R 2726 0 R 2730 0 R 2734 0 R] >> endobj -2749 0 obj << +2748 0 obj << /Type /Pages /Count 6 /Parent 2847 0 R -/Kids [2741 0 R 2751 0 R 2757 0 R 2767 0 R 2777 0 R 2785 0 R] +/Kids [2740 0 R 2750 0 R 2756 0 R 2767 0 R 2777 0 R 2785 0 R] >> endobj 2812 0 obj << /Type /Pages @@ -15140,7 +15138,7 @@ endobj /Type /Pages /Count 14 /Parent 2848 0 R -/Kids [2708 0 R 2749 0 R 2812 0 R] +/Kids [2708 0 R 2748 0 R 2812 0 R] >> endobj 2848 0 obj << /Type /Pages @@ -16843,7 +16841,7 @@ endobj /Count -4 >> endobj 2850 0 obj << -/Names [(Access_Control_Lists) 2124 0 R (Bv9ARM.ch01) 1250 0 R (Bv9ARM.ch02) 1294 0 R (Bv9ARM.ch03) 1312 0 R (Bv9ARM.ch04) 1360 0 R (Bv9ARM.ch05) 1544 0 R (Bv9ARM.ch06) 1556 0 R (Bv9ARM.ch07) 2123 0 R (Bv9ARM.ch08) 2148 0 R (Bv9ARM.ch09) 2163 0 R (Bv9ARM.ch10) 2424 0 R (Configuration_File_Grammar) 1579 0 R (DNSSEC) 1430 0 R (Doc-Start) 951 0 R (Setting_TTLs) 2049 0 R (acache) 1301 0 R (access_control) 1743 0 R (acl) 1587 0 R (address_match_lists) 1561 0 R (admin_tools) 1334 0 R (appendix.A) 754 0 R (appendix.B) 846 0 R (bibliography) 2171 0 R (bind9.library) 2380 0 R (boolean_options) 1375 0 R (builtin) 1817 0 R (chapter*.1) 985 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 350 0 R (chapter.6) 362 0 R (chapter.7) 710 0 R (chapter.8) 734 0 R (cite.RFC1033) 2299 0 R (cite.RFC1034) 2184 0 R (cite.RFC1035) 2186 0 R (cite.RFC1101) 2281 0 R (cite.RFC1123) 2283 0 R (cite.RFC1183) 2243 0 R (cite.RFC1464) 2321 0 R (cite.RFC1535) 2229 0 R (cite.RFC1536) 2231 0 R (cite.RFC1537) 2301 0 R (cite.RFC1591) 2285 0 R (cite.RFC1706) 2245 0 R (cite.RFC1712) 2341 0 R (cite.RFC1713) 2323 0 R (cite.RFC1794) 2325 0 R (cite.RFC1876) 2247 0 R (cite.RFC1912) 2303 0 R (cite.RFC1982) 2233 0 R (cite.RFC1995) 2191 0 R (cite.RFC1996) 2193 0 R (cite.RFC2010) 2305 0 R (cite.RFC2052) 2249 0 R (cite.RFC2065) 2353 0 R (cite.RFC2136) 2195 0 R (cite.RFC2137) 2355 0 R (cite.RFC2163) 2251 0 R (cite.RFC2168) 2253 0 R (cite.RFC2181) 2197 0 R (cite.RFC2219) 2307 0 R (cite.RFC2230) 2255 0 R (cite.RFC2240) 2327 0 R (cite.RFC2308) 2199 0 R (cite.RFC2317) 2287 0 R (cite.RFC2345) 2329 0 R (cite.RFC2352) 2331 0 R (cite.RFC2535) 2357 0 R (cite.RFC2536) 2257 0 R (cite.RFC2537) 2259 0 R (cite.RFC2538) 2261 0 R (cite.RFC2539) 2263 0 R (cite.RFC2540) 2265 0 R (cite.RFC2671) 2201 0 R (cite.RFC2672) 2203 0 R (cite.RFC2673) 2343 0 R (cite.RFC2782) 2267 0 R (cite.RFC2825) 2311 0 R (cite.RFC2826) 2289 0 R (cite.RFC2845) 2205 0 R (cite.RFC2874) 2345 0 R (cite.RFC2915) 2269 0 R (cite.RFC2929) 2291 0 R (cite.RFC2930) 2207 0 R (cite.RFC2931) 2209 0 R (cite.RFC3007) 2211 0 R (cite.RFC3008) 2359 0 R (cite.RFC3071) 2333 0 R (cite.RFC3090) 2361 0 R (cite.RFC3110) 2271 0 R (cite.RFC3123) 2273 0 R (cite.RFC3225) 2217 0 R (cite.RFC3258) 2335 0 R (cite.RFC3445) 2363 0 R (cite.RFC3490) 2313 0 R (cite.RFC3491) 2315 0 R (cite.RFC3492) 2317 0 R (cite.RFC3596) 2275 0 R (cite.RFC3597) 2277 0 R (cite.RFC3645) 2213 0 R (cite.RFC3655) 2365 0 R (cite.RFC3658) 2367 0 R (cite.RFC3755) 2369 0 R (cite.RFC3757) 2371 0 R (cite.RFC3833) 2219 0 R (cite.RFC3845) 2373 0 R (cite.RFC3901) 2337 0 R (cite.RFC4033) 2221 0 R (cite.RFC4034) 2223 0 R (cite.RFC4035) 2225 0 R (cite.RFC4074) 2235 0 R (cite.RFC974) 2188 0 R (cite.id2513574) 2378 0 R (clients-per-query) 2103 0 R (configuration_file_elements) 1557 0 R (controls_statement_definition_and_usage) 1342 0 R (diagnostic_tools) 1282 0 R (dnssec.dynamic.zones) 1449 0 R (dynamic_update) 1370 0 R (dynamic_update_policies) 1377 0 R (dynamic_update_security) 1753 0 R (empty) 1825 0 R (historical_dns_information) 2165 0 R (id2466570) 1251 0 R (id2466594) 1252 0 R (id2467484) 1253 0 R (id2467494) 1254 0 R (id2467734) 1264 0 R (id2467755) 1265 0 R (id2467789) 1266 0 R (id2467874) 1269 0 R (id2467966) 1262 0 R (id2470272) 1276 0 R (id2470295) 1279 0 R (id2470393) 1280 0 R (id2470414) 1281 0 R (id2470444) 1287 0 R (id2470480) 1288 0 R (id2470574) 1289 0 R (id2470609) 1295 0 R (id2470635) 1296 0 R (id2470716) 1297 0 R (id2470742) 1300 0 R (id2470753) 1306 0 R (id2470785) 1314 0 R (id2470801) 1315 0 R (id2470823) 1320 0 R (id2470840) 1321 0 R (id2471245) 1329 0 R (id2471251) 1330 0 R (id2472304) 1347 0 R (id2472315) 1348 0 R (id2472878) 1389 0 R (id2472897) 1395 0 R (id2473330) 1410 0 R (id2473347) 1411 0 R (id2473453) 1412 0 R (id2473472) 1413 0 R (id2473482) 1414 0 R (id2473518) 1420 0 R (id2473576) 1421 0 R (id2473625) 1423 0 R (id2473639) 1424 0 R (id2473688) 1429 0 R (id2473893) 1431 0 R (id2473972) 1436 0 R (id2474121) 1437 0 R (id2474548) 1450 0 R (id2474585) 1451 0 R (id2474758) 1456 0 R (id2474861) 1469 0 R (id2474967) 1470 0 R (id2474980) 1471 0 R (id2475081) 1472 0 R (id2475108) 1477 0 R (id2475117) 1478 0 R (id2475127) 1479 0 R (id2475140) 1480 0 R (id2475245) 1481 0 R (id2475255) 1482 0 R (id2475361) 1488 0 R (id2475383) 1490 0 R (id2475485) 1497 0 R (id2475650) 1502 0 R (id2475719) 1503 0 R (id2475836) 1508 0 R (id2475987) 1514 0 R (id2475995) 1515 0 R (id2476027) 1516 0 R (id2476064) 1517 0 R (id2476112) 1518 0 R (id2476142) 1523 0 R (id2476546) 1529 0 R (id2476728) 1530 0 R (id2476782) 1535 0 R (id2476844) 1537 0 R (id2476866) 1538 0 R (id2476899) 1545 0 R (id2477114) 1558 0 R (id2478008) 1570 0 R (id2478036) 1571 0 R (id2478310) 1572 0 R (id2478325) 1577 0 R (id2478423) 1578 0 R (id2478498) 1580 0 R (id2478902) 1586 0 R (id2478945) 1588 0 R (id2479092) 1594 0 R (id2479588) 1603 0 R (id2479605) 1604 0 R (id2479628) 1605 0 R (id2479652) 1606 0 R (id2479742) 1610 0 R (id2479868) 1615 0 R (id2479921) 1616 0 R (id2480617) 1627 0 R (id2481560) 1637 0 R (id2481690) 1643 0 R (id2482148) 1649 0 R (id2482290) 1650 0 R (id2482354) 1653 0 R (id2482397) 1654 0 R (id2482419) 1655 0 R (id2486036) 1704 0 R (id2488549) 1735 0 R (id2488676) 1737 0 R (id2489237) 1752 0 R (id2490386) 1771 0 R (id2490514) 1777 0 R (id2490936) 1786 0 R (id2491438) 1804 0 R (id2493310) 1843 0 R (id2493436) 1849 0 R (id2494139) 1859 0 R (id2495348) 1880 0 R (id2495587) 1892 0 R (id2495702) 1894 0 R (id2496144) 1899 0 R (id2497924) 1921 0 R (id2497931) 1922 0 R (id2497937) 1923 0 R (id2498608) 1934 0 R (id2498709) 1935 0 R (id2500878) 2004 0 R (id2501474) 2014 0 R (id2501492) 2015 0 R (id2501512) 2018 0 R (id2501749) 2024 0 R (id2502987) 2030 0 R (id2503115) 2037 0 R (id2503273) 2038 0 R (id2503568) 2040 0 R (id2503704) 2042 0 R (id2503722) 2047 0 R (id2504195) 2050 0 R (id2504320) 2052 0 R (id2504334) 2053 0 R (id2504446) 2059 0 R (id2504469) 2060 0 R (id2504485) 2061 0 R (id2504546) 2062 0 R (id2504615) 2067 0 R (id2504720) 2068 0 R (id2504864) 2069 0 R (id2505306) 2080 0 R (id2505673) 2089 0 R (id2505678) 2090 0 R (id2507379) 2097 0 R (id2507385) 2098 0 R (id2507762) 2100 0 R (id2507767) 2101 0 R (id2508852) 2108 0 R (id2508952) 2109 0 R (id2509293) 2118 0 R (id2509521) 2132 0 R (id2509670) 2133 0 R (id2509730) 2134 0 R (id2509810) 2149 0 R (id2509815) 2150 0 R (id2509963) 2151 0 R (id2509980) 2152 0 R (id2510042) 2164 0 R (id2510146) 2170 0 R (id2510470) 2175 0 R (id2510472) 2182 0 R (id2510481) 2187 0 R (id2510504) 2183 0 R (id2510528) 2185 0 R (id2510564) 2196 0 R (id2510590) 2198 0 R (id2510616) 2190 0 R (id2510641) 2192 0 R (id2510664) 2194 0 R (id2510720) 2200 0 R (id2510746) 2202 0 R (id2510773) 2204 0 R (id2510835) 2206 0 R (id2510865) 2208 0 R (id2510894) 2210 0 R (id2510921) 2212 0 R (id2510996) 2215 0 R (id2511003) 2216 0 R (id2511030) 2218 0 R (id2511066) 2220 0 R (id2511131) 2222 0 R (id2511196) 2224 0 R (id2511261) 2227 0 R (id2511270) 2228 0 R (id2511296) 2230 0 R (id2511364) 2232 0 R (id2511399) 2234 0 R (id2511440) 2241 0 R (id2511445) 2242 0 R (id2511502) 2244 0 R (id2511540) 2252 0 R (id2511575) 2246 0 R (id2511629) 2248 0 R (id2511736) 2250 0 R (id2511762) 2254 0 R (id2511787) 2256 0 R (id2511814) 2258 0 R (id2511841) 2260 0 R (id2511880) 2262 0 R (id2511910) 2264 0 R (id2511940) 2266 0 R (id2511982) 2268 0 R (id2512016) 2270 0 R (id2512042) 2272 0 R (id2512066) 2274 0 R (id2512123) 2276 0 R (id2512148) 2279 0 R (id2512155) 2280 0 R (id2512181) 2282 0 R (id2512203) 2284 0 R (id2512227) 2286 0 R (id2512273) 2288 0 R (id2512296) 2290 0 R (id2512346) 2297 0 R (id2512354) 2298 0 R (id2512377) 2300 0 R (id2512404) 2302 0 R (id2512430) 2304 0 R (id2512467) 2306 0 R (id2512507) 2309 0 R (id2512513) 2310 0 R (id2512545) 2312 0 R (id2512659) 2314 0 R (id2512694) 2316 0 R (id2512721) 2319 0 R (id2512739) 2320 0 R (id2512829) 2322 0 R (id2512855) 2324 0 R (id2512881) 2326 0 R (id2512904) 2328 0 R (id2512950) 2330 0 R (id2512973) 2332 0 R (id2513000) 2334 0 R (id2513026) 2336 0 R (id2513063) 2339 0 R (id2513069) 2340 0 R (id2513127) 2342 0 R (id2513154) 2344 0 R (id2513190) 2351 0 R (id2513202) 2352 0 R (id2513241) 2354 0 R (id2513268) 2356 0 R (id2513298) 2358 0 R (id2513323) 2360 0 R (id2513350) 2362 0 R (id2513386) 2364 0 R (id2513422) 2366 0 R (id2513449) 2368 0 R (id2513476) 2370 0 R (id2513521) 2372 0 R (id2513562) 2375 0 R (id2513572) 2377 0 R (id2513574) 2379 0 R (id2513730) 2385 0 R (id2513739) 2386 0 R (id2513764) 2387 0 R (id2513863) 2388 0 R (id2513940) 2393 0 R (id2513966) 2395 0 R (id2513975) 2396 0 R (id2514134) 2402 0 R (id2514187) 2403 0 R (id2514251) 2404 0 R (id2514266) 2409 0 R (id2514466) 2414 0 R (id2514530) 2415 0 R (incremental_zone_transfers) 1386 0 R (internet_drafts) 2374 0 R (ipv6addresses) 1539 0 R (journal) 1382 0 R (lwresd) 1546 0 R (man.arpaname) 2788 0 R (man.ddns-confgen) 2773 0 R (man.dig) 2425 0 R (man.dnssec-checkds) 2473 0 R (man.dnssec-coverage) 2485 0 R (man.dnssec-dsfromkey) 2500 0 R (man.dnssec-keyfromlabel) 2514 0 R (man.dnssec-keygen) 1463 0 R (man.dnssec-revoke) 2561 0 R (man.dnssec-settime) 1464 0 R (man.dnssec-signzone) 2589 0 R (man.dnssec-verify) 2618 0 R (man.genrandom) 2794 0 R (man.host) 2462 0 R (man.isc-hmac-fixup) 2805 0 R (man.named) 2657 0 R (man.named-checkconf) 2629 0 R (man.named-checkzone) 2641 0 R (man.named-journalprint) 2684 0 R (man.nsec3hash) 2817 0 R (man.nsupdate) 2690 0 R (man.rndc) 1341 0 R (man.rndc-confgen) 2761 0 R (man.rndc.conf) 2744 0 R (managed-keys) 1491 0 R (notify) 1361 0 R (options) 1672 0 R (page.1) 950 0 R (page.10) 1338 0 R (page.100) 1943 0 R (page.101) 1961 0 R (page.102) 1975 0 R (page.103) 1992 0 R (page.104) 2003 0 R (page.105) 2009 0 R (page.106) 2013 0 R (page.107) 2023 0 R (page.108) 2029 0 R (page.109) 2036 0 R (page.11) 1346 0 R (page.110) 2046 0 R (page.111) 2058 0 R (page.112) 2066 0 R (page.113) 2074 0 R (page.114) 2078 0 R (page.115) 2087 0 R (page.116) 2095 0 R (page.117) 2107 0 R (page.118) 2114 0 R (page.119) 2122 0 R (page.12) 1353 0 R (page.120) 2128 0 R (page.121) 2139 0 R (page.122) 2143 0 R (page.123) 2147 0 R (page.124) 2158 0 R (page.125) 2162 0 R (page.126) 2169 0 R (page.127) 2180 0 R (page.128) 2239 0 R (page.129) 2295 0 R (page.13) 1359 0 R (page.130) 2349 0 R (page.131) 2384 0 R (page.132) 2392 0 R (page.133) 2401 0 R (page.134) 2408 0 R (page.135) 2413 0 R (page.136) 2419 0 R (page.137) 2423 0 R (page.138) 2432 0 R (page.139) 2439 0 R (page.14) 1381 0 R (page.140) 2444 0 R (page.141) 2448 0 R (page.142) 2452 0 R (page.143) 2461 0 R (page.144) 2469 0 R (page.145) 2481 0 R (page.146) 2492 0 R (page.147) 2499 0 R (page.148) 2508 0 R (page.149) 2520 0 R (page.15) 1394 0 R (page.150) 2526 0 R (page.151) 2533 0 R (page.152) 2543 0 R (page.153) 2547 0 R (page.154) 2552 0 R (page.155) 2558 0 R (page.156) 2569 0 R (page.157) 2580 0 R (page.158) 2586 0 R (page.159) 2597 0 R (page.16) 1400 0 R (page.160) 2601 0 R (page.161) 2605 0 R (page.162) 2609 0 R (page.163) 2616 0 R (page.164) 2626 0 R (page.165) 2637 0 R (page.166) 2649 0 R (page.167) 2653 0 R (page.168) 2662 0 R (page.169) 2670 0 R (page.17) 1404 0 R (page.170) 2674 0 R (page.171) 2683 0 R (page.172) 2696 0 R (page.173) 2701 0 R (page.174) 2706 0 R (page.175) 2712 0 R (page.176) 2721 0 R (page.177) 2728 0 R (page.178) 2732 0 R (page.179) 2736 0 R (page.18) 1409 0 R (page.180) 2743 0 R (page.181) 2753 0 R (page.182) 2759 0 R (page.183) 2769 0 R (page.184) 2779 0 R (page.185) 2787 0 R (page.186) 2802 0 R (page.187) 2816 0 R (page.19) 1419 0 R (page.2) 974 0 R (page.20) 1428 0 R (page.21) 1435 0 R (page.22) 1441 0 R (page.23) 1445 0 R (page.24) 1455 0 R (page.25) 1468 0 R (page.26) 1476 0 R (page.27) 1486 0 R (page.28) 1495 0 R (page.29) 1501 0 R (page.3) 1275 0 R (page.30) 1507 0 R (page.31) 1513 0 R (page.32) 1522 0 R (page.33) 1528 0 R (page.34) 1534 0 R (page.35) 1543 0 R (page.36) 1550 0 R (page.37) 1555 0 R (page.38) 1565 0 R (page.39) 1569 0 R (page.4) 1286 0 R (page.40) 1576 0 R (page.41) 1585 0 R (page.42) 1593 0 R (page.43) 1602 0 R (page.44) 1614 0 R (page.45) 1620 0 R (page.46) 1626 0 R (page.47) 1632 0 R (page.48) 1636 0 R (page.49) 1642 0 R (page.5) 1293 0 R (page.50) 1648 0 R (page.51) 1659 0 R (page.52) 1663 0 R (page.53) 1667 0 R (page.54) 1671 0 R (page.55) 1677 0 R (page.56) 1681 0 R (page.57) 1687 0 R (page.58) 1692 0 R (page.59) 1697 0 R (page.6) 1305 0 R (page.60) 1703 0 R (page.61) 1710 0 R (page.62) 1720 0 R (page.63) 1724 0 R (page.64) 1728 0 R (page.65) 1732 0 R (page.66) 1742 0 R (page.67) 1749 0 R (page.68) 1757 0 R (page.69) 1762 0 R (page.7) 1311 0 R (page.70) 1766 0 R (page.71) 1770 0 R (page.72) 1776 0 R (page.73) 1785 0 R (page.74) 1790 0 R (page.75) 1798 0 R (page.76) 1803 0 R (page.77) 1810 0 R (page.78) 1815 0 R (page.79) 1823 0 R (page.8) 1319 0 R (page.80) 1830 0 R (page.81) 1834 0 R (page.82) 1838 0 R (page.83) 1842 0 R (page.84) 1848 0 R (page.85) 1854 0 R (page.86) 1858 0 R (page.87) 1863 0 R (page.88) 1867 0 R (page.89) 1872 0 R (page.9) 1328 0 R (page.90) 1877 0 R (page.91) 1890 0 R (page.92) 1898 0 R (page.93) 1903 0 R (page.94) 1907 0 R (page.95) 1911 0 R (page.96) 1915 0 R (page.97) 1920 0 R (page.98) 1928 0 R (page.99) 1932 0 R (page.i) 984 0 R (page.ii) 1039 0 R (page.iii) 1103 0 R (page.iv) 1166 0 R (page.v) 1228 0 R (pkcs11) 1496 0 R (proposed_standards) 1390 0 R (query_address) 1758 0 R (rfc5011.support) 1487 0 R (rfcs) 1271 0 R (rndc) 1598 0 R (root_delegation_only) 1939 0 R (rrset_ordering) 1324 0 R (sample_configuration) 1313 0 R (section*.10) 2308 0 R (section*.100) 2633 0 R (section*.101) 2638 0 R (section*.102) 2639 0 R (section*.103) 2640 0 R (section*.104) 2642 0 R (section*.105) 2643 0 R (section*.106) 2644 0 R (section*.107) 2645 0 R (section*.108) 2654 0 R (section*.109) 2655 0 R (section*.11) 2318 0 R (section*.110) 2656 0 R (section*.111) 2658 0 R (section*.112) 2663 0 R (section*.113) 2664 0 R (section*.114) 2665 0 R (section*.115) 2675 0 R (section*.116) 2676 0 R (section*.117) 2677 0 R (section*.118) 2678 0 R (section*.119) 2679 0 R (section*.12) 2338 0 R (section*.120) 2685 0 R (section*.121) 2686 0 R (section*.122) 2687 0 R (section*.123) 2688 0 R (section*.124) 2689 0 R (section*.125) 2691 0 R (section*.126) 2692 0 R (section*.127) 2697 0 R (section*.128) 2702 0 R (section*.129) 2707 0 R (section*.13) 2350 0 R (section*.130) 2713 0 R (section*.131) 2714 0 R (section*.132) 2715 0 R (section*.133) 2716 0 R (section*.134) 2717 0 R (section*.135) 2722 0 R (section*.136) 2723 0 R (section*.137) 2724 0 R (section*.138) 2737 0 R (section*.139) 2738 0 R (section*.14) 2376 0 R (section*.140) 2739 0 R (section*.141) 2745 0 R (section*.142) 2746 0 R (section*.143) 2747 0 R (section*.144) 2748 0 R (section*.145) 2754 0 R (section*.146) 2755 0 R (section*.147) 2760 0 R (section*.148) 2762 0 R (section*.149) 2763 0 R (section*.15) 2426 0 R (section*.150) 2764 0 R (section*.151) 2765 0 R (section*.152) 2770 0 R (section*.153) 2771 0 R (section*.154) 2772 0 R (section*.155) 2774 0 R (section*.156) 2775 0 R (section*.157) 2780 0 R (section*.158) 2781 0 R (section*.159) 2782 0 R (section*.16) 2427 0 R (section*.160) 2783 0 R (section*.161) 2789 0 R (section*.162) 2790 0 R (section*.163) 2791 0 R (section*.164) 2792 0 R (section*.165) 2793 0 R (section*.166) 2795 0 R (section*.167) 2796 0 R (section*.168) 2797 0 R (section*.169) 2798 0 R (section*.17) 2428 0 R (section*.170) 2803 0 R (section*.171) 2804 0 R (section*.172) 2806 0 R (section*.173) 2807 0 R (section*.174) 2808 0 R (section*.175) 2809 0 R (section*.176) 2810 0 R (section*.177) 2811 0 R (section*.178) 2818 0 R (section*.179) 2819 0 R (section*.18) 2433 0 R (section*.180) 2820 0 R (section*.181) 2821 0 R (section*.182) 2822 0 R (section*.183) 2823 0 R (section*.19) 2434 0 R (section*.2) 2174 0 R (section*.20) 2440 0 R (section*.21) 2453 0 R (section*.22) 2454 0 R (section*.23) 2455 0 R (section*.24) 2456 0 R (section*.25) 2457 0 R (section*.26) 2463 0 R (section*.27) 2464 0 R (section*.28) 2465 0 R (section*.29) 2470 0 R (section*.3) 2181 0 R (section*.30) 2471 0 R (section*.31) 2472 0 R (section*.32) 2474 0 R (section*.33) 2475 0 R (section*.34) 2476 0 R (section*.35) 2482 0 R (section*.36) 2483 0 R (section*.37) 2484 0 R (section*.38) 2486 0 R (section*.39) 2487 0 R (section*.4) 2189 0 R (section*.40) 2488 0 R (section*.41) 2493 0 R (section*.42) 2494 0 R (section*.43) 2495 0 R (section*.44) 2501 0 R (section*.45) 2502 0 R (section*.46) 2503 0 R (section*.47) 2504 0 R (section*.48) 2509 0 R (section*.49) 2510 0 R (section*.5) 2214 0 R (section*.50) 2511 0 R (section*.51) 2512 0 R (section*.52) 2513 0 R (section*.53) 2515 0 R (section*.54) 2516 0 R (section*.55) 2521 0 R (section*.56) 2522 0 R (section*.57) 2527 0 R (section*.58) 2528 0 R (section*.59) 2534 0 R (section*.6) 2226 0 R (section*.60) 2535 0 R (section*.61) 2536 0 R (section*.62) 2537 0 R (section*.63) 2538 0 R (section*.64) 2539 0 R (section*.65) 2548 0 R (section*.66) 2553 0 R (section*.67) 2554 0 R (section*.68) 2559 0 R (section*.69) 2560 0 R (section*.7) 2240 0 R (section*.70) 2562 0 R (section*.71) 2563 0 R (section*.72) 2564 0 R (section*.73) 2565 0 R (section*.74) 2570 0 R (section*.75) 2571 0 R (section*.76) 2572 0 R (section*.77) 2573 0 R (section*.78) 2574 0 R (section*.79) 2575 0 R (section*.8) 2278 0 R (section*.80) 2581 0 R (section*.81) 2582 0 R (section*.82) 2587 0 R (section*.83) 2588 0 R (section*.84) 2590 0 R (section*.85) 2591 0 R (section*.86) 2592 0 R (section*.87) 2593 0 R (section*.88) 2610 0 R (section*.89) 2611 0 R (section*.9) 2296 0 R (section*.90) 2617 0 R (section*.91) 2619 0 R (section*.92) 2620 0 R (section*.93) 2621 0 R (section*.94) 2622 0 R (section*.95) 2627 0 R (section*.96) 2628 0 R (section*.97) 2630 0 R (section*.98) 2631 0 R (section*.99) 2632 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) 338 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) 354 0 R (section.5.2) 358 0 R (section.6.1) 366 0 R (section.6.2) 394 0 R (section.6.3) 622 0 R (section.6.4) 678 0 R (section.7.1) 714 0 R (section.7.2) 718 0 R (section.7.3) 730 0 R (section.8.1) 738 0 R (section.8.2) 746 0 R (section.8.3) 750 0 R (section.A.1) 758 0 R (section.A.2) 766 0 R (section.A.3) 774 0 R (section.A.4) 790 0 R (section.B.1) 850 0 R (section.B.10) 886 0 R (section.B.11) 890 0 R (section.B.12) 894 0 R (section.B.13) 898 0 R (section.B.14) 902 0 R (section.B.15) 906 0 R (section.B.16) 910 0 R (section.B.17) 914 0 R (section.B.18) 918 0 R (section.B.19) 922 0 R (section.B.2) 854 0 R (section.B.20) 926 0 R (section.B.21) 930 0 R (section.B.22) 934 0 R (section.B.23) 938 0 R (section.B.24) 942 0 R (section.B.3) 858 0 R (section.B.4) 862 0 R (section.B.5) 866 0 R (section.B.6) 870 0 R (section.B.7) 874 0 R (section.B.8) 878 0 R (section.B.9) 882 0 R (server_resource_limits) 1779 0 R (server_statement_definition_and_usage) 1716 0 R (server_statement_grammar) 1868 0 R (statistics) 2079 0 R (statistics_counters) 2088 0 R (statschannels) 1879 0 R (statsfile) 1683 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) 306 0 R (subsection.4.11.3) 322 0 R (subsection.4.11.4) 326 0 R (subsection.4.11.5) 330 0 R (subsection.4.11.6) 334 0 R (subsection.4.12.1) 342 0 R (subsection.4.12.2) 346 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) 370 0 R (subsection.6.1.2) 382 0 R (subsection.6.2.1) 398 0 R (subsection.6.2.10) 434 0 R (subsection.6.2.11) 450 0 R (subsection.6.2.12) 454 0 R (subsection.6.2.13) 458 0 R (subsection.6.2.14) 462 0 R (subsection.6.2.15) 466 0 R (subsection.6.2.16) 470 0 R (subsection.6.2.17) 558 0 R (subsection.6.2.18) 562 0 R (subsection.6.2.19) 566 0 R (subsection.6.2.2) 402 0 R (subsection.6.2.20) 570 0 R (subsection.6.2.21) 574 0 R (subsection.6.2.22) 578 0 R (subsection.6.2.23) 582 0 R (subsection.6.2.24) 586 0 R (subsection.6.2.25) 590 0 R (subsection.6.2.26) 594 0 R (subsection.6.2.27) 598 0 R (subsection.6.2.28) 602 0 R (subsection.6.2.3) 406 0 R (subsection.6.2.4) 410 0 R (subsection.6.2.5) 414 0 R (subsection.6.2.6) 418 0 R (subsection.6.2.7) 422 0 R (subsection.6.2.8) 426 0 R (subsection.6.2.9) 430 0 R (subsection.6.3.1) 626 0 R (subsection.6.3.2) 638 0 R (subsection.6.3.3) 642 0 R (subsection.6.3.4) 646 0 R (subsection.6.3.5) 650 0 R (subsection.6.3.6) 670 0 R (subsection.6.3.7) 674 0 R (subsection.6.4.1) 686 0 R (subsection.7.2.1) 722 0 R (subsection.7.2.2) 726 0 R (subsection.8.1.1) 742 0 R (subsection.A.1.1) 762 0 R (subsection.A.2.1) 770 0 R (subsection.A.3.1) 778 0 R (subsection.A.3.2) 782 0 R (subsection.A.3.3) 786 0 R (subsection.A.4.1) 794 0 R (subsection.A.4.2) 798 0 R (subsection.A.4.3) 802 0 R (subsection.A.4.4) 806 0 R (subsection.A.4.5) 810 0 R (subsection.A.4.6) 814 0 R (subsection.A.4.7) 842 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.1.3) 302 0 R (subsubsection.4.11.2.1) 310 0 R (subsubsection.4.11.2.2) 314 0 R (subsubsection.4.11.2.3) 318 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 374 0 R (subsubsection.6.1.1.2) 378 0 R (subsubsection.6.1.2.1) 386 0 R (subsubsection.6.1.2.2) 390 0 R (subsubsection.6.2.10.1) 438 0 R (subsubsection.6.2.10.2) 442 0 R (subsubsection.6.2.10.3) 446 0 R (subsubsection.6.2.16.1) 474 0 R (subsubsection.6.2.16.10) 510 0 R (subsubsection.6.2.16.11) 514 0 R (subsubsection.6.2.16.12) 518 0 R (subsubsection.6.2.16.13) 522 0 R (subsubsection.6.2.16.14) 526 0 R (subsubsection.6.2.16.15) 530 0 R (subsubsection.6.2.16.16) 534 0 R (subsubsection.6.2.16.17) 538 0 R (subsubsection.6.2.16.18) 542 0 R (subsubsection.6.2.16.19) 546 0 R (subsubsection.6.2.16.2) 478 0 R (subsubsection.6.2.16.20) 550 0 R (subsubsection.6.2.16.21) 554 0 R (subsubsection.6.2.16.3) 482 0 R (subsubsection.6.2.16.4) 486 0 R (subsubsection.6.2.16.5) 490 0 R (subsubsection.6.2.16.6) 494 0 R (subsubsection.6.2.16.7) 498 0 R (subsubsection.6.2.16.8) 502 0 R (subsubsection.6.2.16.9) 506 0 R (subsubsection.6.2.28.1) 606 0 R (subsubsection.6.2.28.2) 610 0 R (subsubsection.6.2.28.3) 614 0 R (subsubsection.6.2.28.4) 618 0 R (subsubsection.6.3.1.1) 630 0 R (subsubsection.6.3.1.2) 634 0 R (subsubsection.6.3.5.1) 654 0 R (subsubsection.6.3.5.2) 658 0 R (subsubsection.6.3.5.3) 662 0 R (subsubsection.6.3.5.4) 666 0 R (subsubsection.6.4.0.1) 682 0 R (subsubsection.6.4.1.1) 690 0 R (subsubsection.6.4.1.2) 694 0 R (subsubsection.6.4.1.3) 698 0 R (subsubsection.6.4.1.4) 702 0 R (subsubsection.6.4.1.5) 706 0 R (subsubsection.A.4.6.1) 818 0 R (subsubsection.A.4.6.2) 822 0 R (subsubsection.A.4.6.3) 826 0 R (subsubsection.A.4.6.4) 830 0 R (subsubsection.A.4.6.5) 834 0 R (subsubsection.A.4.6.6) 838 0 R (table.1.1) 1255 0 R (table.1.2) 1263 0 R (table.3.1) 1322 0 R (table.3.2) 1349 0 R (table.6.1) 1559 0 R (table.6.10) 2019 0 R (table.6.11) 2025 0 R (table.6.12) 2031 0 R (table.6.13) 2039 0 R (table.6.14) 2041 0 R (table.6.15) 2048 0 R (table.6.16) 2051 0 R (table.6.17) 2054 0 R (table.6.18) 2070 0 R (table.6.19) 2081 0 R (table.6.2) 1581 0 R (table.6.20) 2091 0 R (table.6.21) 2099 0 R (table.6.22) 2102 0 R (table.6.23) 2110 0 R (table.6.3) 1589 0 R (table.6.4) 1628 0 R (table.6.5) 1644 0 R (table.6.6) 1705 0 R (table.6.7) 1805 0 R (table.6.8) 1924 0 R (table.6.9) 2005 0 R (the_category_phrase) 1622 0 R (the_sortlist_statement) 1792 0 R (topology) 1791 0 R (trusted-keys) 1891 0 R (tsig) 1405 0 R (tuning) 1806 0 R (types_of_resource_records_and_when_to_use_them) 1270 0 R (view_statement_grammar) 1826 0 R (zone_statement_grammar) 1738 0 R (zone_transfers) 1376 0 R (zonefile_format) 1819 0 R] +/Names [(Access_Control_Lists) 2124 0 R (Bv9ARM.ch01) 1250 0 R (Bv9ARM.ch02) 1294 0 R (Bv9ARM.ch03) 1312 0 R (Bv9ARM.ch04) 1360 0 R (Bv9ARM.ch05) 1544 0 R (Bv9ARM.ch06) 1556 0 R (Bv9ARM.ch07) 2123 0 R (Bv9ARM.ch08) 2148 0 R (Bv9ARM.ch09) 2163 0 R (Bv9ARM.ch10) 2424 0 R (Configuration_File_Grammar) 1579 0 R (DNSSEC) 1430 0 R (Doc-Start) 951 0 R (Setting_TTLs) 2049 0 R (acache) 1301 0 R (access_control) 1743 0 R (acl) 1587 0 R (address_match_lists) 1561 0 R (admin_tools) 1334 0 R (appendix.A) 754 0 R (appendix.B) 846 0 R (bibliography) 2171 0 R (bind9.library) 2380 0 R (boolean_options) 1375 0 R (builtin) 1817 0 R (chapter*.1) 985 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 350 0 R (chapter.6) 362 0 R (chapter.7) 710 0 R (chapter.8) 734 0 R (cite.RFC1033) 2299 0 R (cite.RFC1034) 2184 0 R (cite.RFC1035) 2186 0 R (cite.RFC1101) 2281 0 R (cite.RFC1123) 2283 0 R (cite.RFC1183) 2243 0 R (cite.RFC1464) 2321 0 R (cite.RFC1535) 2229 0 R (cite.RFC1536) 2231 0 R (cite.RFC1537) 2301 0 R (cite.RFC1591) 2285 0 R (cite.RFC1706) 2245 0 R (cite.RFC1712) 2341 0 R (cite.RFC1713) 2323 0 R (cite.RFC1794) 2325 0 R (cite.RFC1876) 2247 0 R (cite.RFC1912) 2303 0 R (cite.RFC1982) 2233 0 R (cite.RFC1995) 2191 0 R (cite.RFC1996) 2193 0 R (cite.RFC2010) 2305 0 R (cite.RFC2052) 2249 0 R (cite.RFC2065) 2353 0 R (cite.RFC2136) 2195 0 R (cite.RFC2137) 2355 0 R (cite.RFC2163) 2251 0 R (cite.RFC2168) 2253 0 R (cite.RFC2181) 2197 0 R (cite.RFC2219) 2307 0 R (cite.RFC2230) 2255 0 R (cite.RFC2240) 2327 0 R (cite.RFC2308) 2199 0 R (cite.RFC2317) 2287 0 R (cite.RFC2345) 2329 0 R (cite.RFC2352) 2331 0 R (cite.RFC2535) 2357 0 R (cite.RFC2536) 2257 0 R (cite.RFC2537) 2259 0 R (cite.RFC2538) 2261 0 R (cite.RFC2539) 2263 0 R (cite.RFC2540) 2265 0 R (cite.RFC2671) 2201 0 R (cite.RFC2672) 2203 0 R (cite.RFC2673) 2343 0 R (cite.RFC2782) 2267 0 R (cite.RFC2825) 2311 0 R (cite.RFC2826) 2289 0 R (cite.RFC2845) 2205 0 R (cite.RFC2874) 2345 0 R (cite.RFC2915) 2269 0 R (cite.RFC2929) 2291 0 R (cite.RFC2930) 2207 0 R (cite.RFC2931) 2209 0 R (cite.RFC3007) 2211 0 R (cite.RFC3008) 2359 0 R (cite.RFC3071) 2333 0 R (cite.RFC3090) 2361 0 R (cite.RFC3110) 2271 0 R (cite.RFC3123) 2273 0 R (cite.RFC3225) 2217 0 R (cite.RFC3258) 2335 0 R (cite.RFC3445) 2363 0 R (cite.RFC3490) 2313 0 R (cite.RFC3491) 2315 0 R (cite.RFC3492) 2317 0 R (cite.RFC3596) 2275 0 R (cite.RFC3597) 2277 0 R (cite.RFC3645) 2213 0 R (cite.RFC3655) 2365 0 R (cite.RFC3658) 2367 0 R (cite.RFC3755) 2369 0 R (cite.RFC3757) 2371 0 R (cite.RFC3833) 2219 0 R (cite.RFC3845) 2373 0 R (cite.RFC3901) 2337 0 R (cite.RFC4033) 2221 0 R (cite.RFC4034) 2223 0 R (cite.RFC4035) 2225 0 R (cite.RFC4074) 2235 0 R (cite.RFC974) 2188 0 R (cite.id2513574) 2378 0 R (clients-per-query) 2103 0 R (configuration_file_elements) 1557 0 R (controls_statement_definition_and_usage) 1342 0 R (diagnostic_tools) 1282 0 R (dnssec.dynamic.zones) 1449 0 R (dynamic_update) 1370 0 R (dynamic_update_policies) 1377 0 R (dynamic_update_security) 1753 0 R (empty) 1825 0 R (historical_dns_information) 2165 0 R (id2466570) 1251 0 R (id2466594) 1252 0 R (id2467484) 1253 0 R (id2467494) 1254 0 R (id2467734) 1264 0 R (id2467755) 1265 0 R (id2467789) 1266 0 R (id2467874) 1269 0 R (id2467966) 1262 0 R (id2470272) 1276 0 R (id2470295) 1279 0 R (id2470393) 1280 0 R (id2470414) 1281 0 R (id2470444) 1287 0 R (id2470480) 1288 0 R (id2470574) 1289 0 R (id2470609) 1295 0 R (id2470635) 1296 0 R (id2470716) 1297 0 R (id2470742) 1300 0 R (id2470753) 1306 0 R (id2470785) 1314 0 R (id2470801) 1315 0 R (id2470823) 1320 0 R (id2470840) 1321 0 R (id2471245) 1329 0 R (id2471251) 1330 0 R (id2472304) 1347 0 R (id2472315) 1348 0 R (id2472878) 1389 0 R (id2472897) 1395 0 R (id2473330) 1410 0 R (id2473347) 1411 0 R (id2473453) 1412 0 R (id2473472) 1413 0 R (id2473482) 1414 0 R (id2473518) 1420 0 R (id2473576) 1421 0 R (id2473625) 1423 0 R (id2473639) 1424 0 R (id2473688) 1429 0 R (id2473893) 1431 0 R (id2473972) 1436 0 R (id2474121) 1437 0 R (id2474548) 1450 0 R (id2474585) 1451 0 R (id2474758) 1456 0 R (id2474861) 1469 0 R (id2474967) 1470 0 R (id2474980) 1471 0 R (id2475081) 1472 0 R (id2475108) 1477 0 R (id2475117) 1478 0 R (id2475127) 1479 0 R (id2475140) 1480 0 R (id2475245) 1481 0 R (id2475255) 1482 0 R (id2475361) 1488 0 R (id2475383) 1490 0 R (id2475485) 1497 0 R (id2475650) 1502 0 R (id2475719) 1503 0 R (id2475836) 1508 0 R (id2475987) 1514 0 R (id2475995) 1515 0 R (id2476027) 1516 0 R (id2476064) 1517 0 R (id2476112) 1518 0 R (id2476142) 1523 0 R (id2476546) 1529 0 R (id2476728) 1530 0 R (id2476782) 1535 0 R (id2476844) 1537 0 R (id2476866) 1538 0 R (id2476899) 1545 0 R (id2477114) 1558 0 R (id2478008) 1570 0 R (id2478036) 1571 0 R (id2478310) 1572 0 R (id2478325) 1577 0 R (id2478423) 1578 0 R (id2478498) 1580 0 R (id2478902) 1586 0 R (id2478945) 1588 0 R (id2479092) 1594 0 R (id2479588) 1603 0 R (id2479605) 1604 0 R (id2479628) 1605 0 R (id2479652) 1606 0 R (id2479742) 1610 0 R (id2479868) 1615 0 R (id2479921) 1616 0 R (id2480617) 1627 0 R (id2481560) 1637 0 R (id2481690) 1643 0 R (id2482148) 1649 0 R (id2482290) 1650 0 R (id2482354) 1653 0 R (id2482397) 1654 0 R (id2482419) 1655 0 R (id2486036) 1704 0 R (id2488549) 1735 0 R (id2488676) 1737 0 R (id2489237) 1752 0 R (id2490386) 1771 0 R (id2490514) 1777 0 R (id2490936) 1786 0 R (id2491438) 1804 0 R (id2493310) 1843 0 R (id2493436) 1849 0 R (id2494139) 1859 0 R (id2495348) 1880 0 R (id2495587) 1892 0 R (id2495702) 1894 0 R (id2496144) 1899 0 R (id2497924) 1921 0 R (id2497931) 1922 0 R (id2497937) 1923 0 R (id2498608) 1934 0 R (id2498709) 1935 0 R (id2500878) 2004 0 R (id2501474) 2014 0 R (id2501492) 2015 0 R (id2501512) 2018 0 R (id2501749) 2024 0 R (id2502987) 2030 0 R (id2503115) 2037 0 R (id2503273) 2038 0 R (id2503568) 2040 0 R (id2503704) 2042 0 R (id2503722) 2047 0 R (id2504195) 2050 0 R (id2504320) 2052 0 R (id2504334) 2053 0 R (id2504446) 2059 0 R (id2504469) 2060 0 R (id2504485) 2061 0 R (id2504546) 2062 0 R (id2504615) 2067 0 R (id2504720) 2068 0 R (id2504864) 2069 0 R (id2505306) 2080 0 R (id2505673) 2089 0 R (id2505678) 2090 0 R (id2507379) 2097 0 R (id2507385) 2098 0 R (id2507762) 2100 0 R (id2507767) 2101 0 R (id2508852) 2108 0 R (id2508952) 2109 0 R (id2509293) 2118 0 R (id2509521) 2132 0 R (id2509670) 2133 0 R (id2509730) 2134 0 R (id2509810) 2149 0 R (id2509815) 2150 0 R (id2509963) 2151 0 R (id2509980) 2152 0 R (id2510042) 2164 0 R (id2510146) 2170 0 R (id2510470) 2175 0 R (id2510472) 2182 0 R (id2510481) 2187 0 R (id2510504) 2183 0 R (id2510528) 2185 0 R (id2510564) 2196 0 R (id2510590) 2198 0 R (id2510616) 2190 0 R (id2510641) 2192 0 R (id2510664) 2194 0 R (id2510720) 2200 0 R (id2510746) 2202 0 R (id2510773) 2204 0 R (id2510835) 2206 0 R (id2510865) 2208 0 R (id2510894) 2210 0 R (id2510921) 2212 0 R (id2510996) 2215 0 R (id2511003) 2216 0 R (id2511030) 2218 0 R (id2511066) 2220 0 R (id2511131) 2222 0 R (id2511196) 2224 0 R (id2511261) 2227 0 R (id2511270) 2228 0 R (id2511296) 2230 0 R (id2511364) 2232 0 R (id2511399) 2234 0 R (id2511440) 2241 0 R (id2511445) 2242 0 R (id2511502) 2244 0 R (id2511540) 2252 0 R (id2511575) 2246 0 R (id2511629) 2248 0 R (id2511736) 2250 0 R (id2511762) 2254 0 R (id2511787) 2256 0 R (id2511814) 2258 0 R (id2511841) 2260 0 R (id2511880) 2262 0 R (id2511910) 2264 0 R (id2511940) 2266 0 R (id2511982) 2268 0 R (id2512016) 2270 0 R (id2512042) 2272 0 R (id2512066) 2274 0 R (id2512123) 2276 0 R (id2512148) 2279 0 R (id2512155) 2280 0 R (id2512181) 2282 0 R (id2512203) 2284 0 R (id2512227) 2286 0 R (id2512273) 2288 0 R (id2512296) 2290 0 R (id2512346) 2297 0 R (id2512354) 2298 0 R (id2512377) 2300 0 R (id2512404) 2302 0 R (id2512430) 2304 0 R (id2512467) 2306 0 R (id2512507) 2309 0 R (id2512513) 2310 0 R (id2512545) 2312 0 R (id2512659) 2314 0 R (id2512694) 2316 0 R (id2512721) 2319 0 R (id2512739) 2320 0 R (id2512829) 2322 0 R (id2512855) 2324 0 R (id2512881) 2326 0 R (id2512904) 2328 0 R (id2512950) 2330 0 R (id2512973) 2332 0 R (id2513000) 2334 0 R (id2513026) 2336 0 R (id2513063) 2339 0 R (id2513069) 2340 0 R (id2513127) 2342 0 R (id2513154) 2344 0 R (id2513190) 2351 0 R (id2513202) 2352 0 R (id2513241) 2354 0 R (id2513268) 2356 0 R (id2513298) 2358 0 R (id2513323) 2360 0 R (id2513350) 2362 0 R (id2513386) 2364 0 R (id2513422) 2366 0 R (id2513449) 2368 0 R (id2513476) 2370 0 R (id2513521) 2372 0 R (id2513562) 2375 0 R (id2513572) 2377 0 R (id2513574) 2379 0 R (id2513730) 2385 0 R (id2513739) 2386 0 R (id2513764) 2387 0 R (id2513863) 2388 0 R (id2513940) 2393 0 R (id2513966) 2395 0 R (id2513975) 2396 0 R (id2514134) 2402 0 R (id2514187) 2403 0 R (id2514251) 2404 0 R (id2514266) 2409 0 R (id2514466) 2414 0 R (id2514530) 2415 0 R (incremental_zone_transfers) 1386 0 R (internet_drafts) 2374 0 R (ipv6addresses) 1539 0 R (journal) 1382 0 R (lwresd) 1546 0 R (man.arpaname) 2788 0 R (man.ddns-confgen) 2773 0 R (man.dig) 2425 0 R (man.dnssec-checkds) 2473 0 R (man.dnssec-coverage) 2485 0 R (man.dnssec-dsfromkey) 2500 0 R (man.dnssec-keyfromlabel) 2514 0 R (man.dnssec-keygen) 1463 0 R (man.dnssec-revoke) 2561 0 R (man.dnssec-settime) 1464 0 R (man.dnssec-signzone) 2589 0 R (man.dnssec-verify) 2618 0 R (man.genrandom) 2794 0 R (man.host) 2462 0 R (man.isc-hmac-fixup) 2805 0 R (man.named) 2661 0 R (man.named-checkconf) 2629 0 R (man.named-checkzone) 2641 0 R (man.named-journalprint) 2684 0 R (man.nsec3hash) 2817 0 R (man.nsupdate) 2690 0 R (man.rndc) 1341 0 R (man.rndc-confgen) 2761 0 R (man.rndc.conf) 2744 0 R (managed-keys) 1491 0 R (notify) 1361 0 R (options) 1672 0 R (page.1) 950 0 R (page.10) 1338 0 R (page.100) 1943 0 R (page.101) 1961 0 R (page.102) 1975 0 R (page.103) 1992 0 R (page.104) 2003 0 R (page.105) 2009 0 R (page.106) 2013 0 R (page.107) 2023 0 R (page.108) 2029 0 R (page.109) 2036 0 R (page.11) 1346 0 R (page.110) 2046 0 R (page.111) 2058 0 R (page.112) 2066 0 R (page.113) 2074 0 R (page.114) 2078 0 R (page.115) 2087 0 R (page.116) 2095 0 R (page.117) 2107 0 R (page.118) 2114 0 R (page.119) 2122 0 R (page.12) 1353 0 R (page.120) 2128 0 R (page.121) 2139 0 R (page.122) 2143 0 R (page.123) 2147 0 R (page.124) 2158 0 R (page.125) 2162 0 R (page.126) 2169 0 R (page.127) 2180 0 R (page.128) 2239 0 R (page.129) 2295 0 R (page.13) 1359 0 R (page.130) 2349 0 R (page.131) 2384 0 R (page.132) 2392 0 R (page.133) 2401 0 R (page.134) 2408 0 R (page.135) 2413 0 R (page.136) 2419 0 R (page.137) 2423 0 R (page.138) 2432 0 R (page.139) 2439 0 R (page.14) 1381 0 R (page.140) 2444 0 R (page.141) 2448 0 R (page.142) 2452 0 R (page.143) 2461 0 R (page.144) 2469 0 R (page.145) 2481 0 R (page.146) 2492 0 R (page.147) 2499 0 R (page.148) 2508 0 R (page.149) 2520 0 R (page.15) 1394 0 R (page.150) 2526 0 R (page.151) 2533 0 R (page.152) 2543 0 R (page.153) 2547 0 R (page.154) 2552 0 R (page.155) 2558 0 R (page.156) 2569 0 R (page.157) 2580 0 R (page.158) 2586 0 R (page.159) 2597 0 R (page.16) 1400 0 R (page.160) 2601 0 R (page.161) 2605 0 R (page.162) 2609 0 R (page.163) 2616 0 R (page.164) 2626 0 R (page.165) 2637 0 R (page.166) 2649 0 R (page.167) 2653 0 R (page.168) 2660 0 R (page.169) 2670 0 R (page.17) 1404 0 R (page.170) 2674 0 R (page.171) 2681 0 R (page.172) 2695 0 R (page.173) 2701 0 R (page.174) 2706 0 R (page.175) 2712 0 R (page.176) 2720 0 R (page.177) 2728 0 R (page.178) 2732 0 R (page.179) 2736 0 R (page.18) 1409 0 R (page.180) 2742 0 R (page.181) 2752 0 R (page.182) 2758 0 R (page.183) 2769 0 R (page.184) 2779 0 R (page.185) 2787 0 R (page.186) 2802 0 R (page.187) 2816 0 R (page.19) 1419 0 R (page.2) 974 0 R (page.20) 1428 0 R (page.21) 1435 0 R (page.22) 1441 0 R (page.23) 1445 0 R (page.24) 1455 0 R (page.25) 1468 0 R (page.26) 1476 0 R (page.27) 1486 0 R (page.28) 1495 0 R (page.29) 1501 0 R (page.3) 1275 0 R (page.30) 1507 0 R (page.31) 1513 0 R (page.32) 1522 0 R (page.33) 1528 0 R (page.34) 1534 0 R (page.35) 1543 0 R (page.36) 1550 0 R (page.37) 1555 0 R (page.38) 1565 0 R (page.39) 1569 0 R (page.4) 1286 0 R (page.40) 1576 0 R (page.41) 1585 0 R (page.42) 1593 0 R (page.43) 1602 0 R (page.44) 1614 0 R (page.45) 1620 0 R (page.46) 1626 0 R (page.47) 1632 0 R (page.48) 1636 0 R (page.49) 1642 0 R (page.5) 1293 0 R (page.50) 1648 0 R (page.51) 1659 0 R (page.52) 1663 0 R (page.53) 1667 0 R (page.54) 1671 0 R (page.55) 1677 0 R (page.56) 1681 0 R (page.57) 1687 0 R (page.58) 1692 0 R (page.59) 1697 0 R (page.6) 1305 0 R (page.60) 1703 0 R (page.61) 1710 0 R (page.62) 1720 0 R (page.63) 1724 0 R (page.64) 1728 0 R (page.65) 1732 0 R (page.66) 1742 0 R (page.67) 1749 0 R (page.68) 1757 0 R (page.69) 1762 0 R (page.7) 1311 0 R (page.70) 1766 0 R (page.71) 1770 0 R (page.72) 1776 0 R (page.73) 1785 0 R (page.74) 1790 0 R (page.75) 1798 0 R (page.76) 1803 0 R (page.77) 1810 0 R (page.78) 1815 0 R (page.79) 1823 0 R (page.8) 1319 0 R (page.80) 1830 0 R (page.81) 1834 0 R (page.82) 1838 0 R (page.83) 1842 0 R (page.84) 1848 0 R (page.85) 1854 0 R (page.86) 1858 0 R (page.87) 1863 0 R (page.88) 1867 0 R (page.89) 1872 0 R (page.9) 1328 0 R (page.90) 1877 0 R (page.91) 1890 0 R (page.92) 1898 0 R (page.93) 1903 0 R (page.94) 1907 0 R (page.95) 1911 0 R (page.96) 1915 0 R (page.97) 1920 0 R (page.98) 1928 0 R (page.99) 1932 0 R (page.i) 984 0 R (page.ii) 1039 0 R (page.iii) 1103 0 R (page.iv) 1166 0 R (page.v) 1228 0 R (pkcs11) 1496 0 R (proposed_standards) 1390 0 R (query_address) 1758 0 R (rfc5011.support) 1487 0 R (rfcs) 1271 0 R (rndc) 1598 0 R (root_delegation_only) 1939 0 R (rrset_ordering) 1324 0 R (sample_configuration) 1313 0 R (section*.10) 2308 0 R (section*.100) 2633 0 R (section*.101) 2638 0 R (section*.102) 2639 0 R (section*.103) 2640 0 R (section*.104) 2642 0 R (section*.105) 2643 0 R (section*.106) 2644 0 R (section*.107) 2645 0 R (section*.108) 2654 0 R (section*.109) 2655 0 R (section*.11) 2318 0 R (section*.110) 2656 0 R (section*.111) 2662 0 R (section*.112) 2663 0 R (section*.113) 2664 0 R (section*.114) 2665 0 R (section*.115) 2675 0 R (section*.116) 2676 0 R (section*.117) 2677 0 R (section*.118) 2682 0 R (section*.119) 2683 0 R (section*.12) 2338 0 R (section*.120) 2685 0 R (section*.121) 2686 0 R (section*.122) 2687 0 R (section*.123) 2688 0 R (section*.124) 2689 0 R (section*.125) 2691 0 R (section*.126) 2696 0 R (section*.127) 2697 0 R (section*.128) 2702 0 R (section*.129) 2707 0 R (section*.13) 2350 0 R (section*.130) 2713 0 R (section*.131) 2714 0 R (section*.132) 2715 0 R (section*.133) 2716 0 R (section*.134) 2721 0 R (section*.135) 2722 0 R (section*.136) 2723 0 R (section*.137) 2724 0 R (section*.138) 2737 0 R (section*.139) 2738 0 R (section*.14) 2376 0 R (section*.140) 2743 0 R (section*.141) 2745 0 R (section*.142) 2746 0 R (section*.143) 2747 0 R (section*.144) 2753 0 R (section*.145) 2754 0 R (section*.146) 2759 0 R (section*.147) 2760 0 R (section*.148) 2762 0 R (section*.149) 2763 0 R (section*.15) 2426 0 R (section*.150) 2764 0 R (section*.151) 2765 0 R (section*.152) 2770 0 R (section*.153) 2771 0 R (section*.154) 2772 0 R (section*.155) 2774 0 R (section*.156) 2775 0 R (section*.157) 2780 0 R (section*.158) 2781 0 R (section*.159) 2782 0 R (section*.16) 2427 0 R (section*.160) 2783 0 R (section*.161) 2789 0 R (section*.162) 2790 0 R (section*.163) 2791 0 R (section*.164) 2792 0 R (section*.165) 2793 0 R (section*.166) 2795 0 R (section*.167) 2796 0 R (section*.168) 2797 0 R (section*.169) 2798 0 R (section*.17) 2428 0 R (section*.170) 2803 0 R (section*.171) 2804 0 R (section*.172) 2806 0 R (section*.173) 2807 0 R (section*.174) 2808 0 R (section*.175) 2809 0 R (section*.176) 2810 0 R (section*.177) 2811 0 R (section*.178) 2818 0 R (section*.179) 2819 0 R (section*.18) 2433 0 R (section*.180) 2820 0 R (section*.181) 2821 0 R (section*.182) 2822 0 R (section*.183) 2823 0 R (section*.19) 2434 0 R (section*.2) 2174 0 R (section*.20) 2440 0 R (section*.21) 2453 0 R (section*.22) 2454 0 R (section*.23) 2455 0 R (section*.24) 2456 0 R (section*.25) 2457 0 R (section*.26) 2463 0 R (section*.27) 2464 0 R (section*.28) 2465 0 R (section*.29) 2470 0 R (section*.3) 2181 0 R (section*.30) 2471 0 R (section*.31) 2472 0 R (section*.32) 2474 0 R (section*.33) 2475 0 R (section*.34) 2476 0 R (section*.35) 2482 0 R (section*.36) 2483 0 R (section*.37) 2484 0 R (section*.38) 2486 0 R (section*.39) 2487 0 R (section*.4) 2189 0 R (section*.40) 2488 0 R (section*.41) 2493 0 R (section*.42) 2494 0 R (section*.43) 2495 0 R (section*.44) 2501 0 R (section*.45) 2502 0 R (section*.46) 2503 0 R (section*.47) 2504 0 R (section*.48) 2509 0 R (section*.49) 2510 0 R (section*.5) 2214 0 R (section*.50) 2511 0 R (section*.51) 2512 0 R (section*.52) 2513 0 R (section*.53) 2515 0 R (section*.54) 2516 0 R (section*.55) 2521 0 R (section*.56) 2522 0 R (section*.57) 2527 0 R (section*.58) 2528 0 R (section*.59) 2534 0 R (section*.6) 2226 0 R (section*.60) 2535 0 R (section*.61) 2536 0 R (section*.62) 2537 0 R (section*.63) 2538 0 R (section*.64) 2539 0 R (section*.65) 2548 0 R (section*.66) 2553 0 R (section*.67) 2554 0 R (section*.68) 2559 0 R (section*.69) 2560 0 R (section*.7) 2240 0 R (section*.70) 2562 0 R (section*.71) 2563 0 R (section*.72) 2564 0 R (section*.73) 2565 0 R (section*.74) 2570 0 R (section*.75) 2571 0 R (section*.76) 2572 0 R (section*.77) 2573 0 R (section*.78) 2574 0 R (section*.79) 2575 0 R (section*.8) 2278 0 R (section*.80) 2581 0 R (section*.81) 2582 0 R (section*.82) 2587 0 R (section*.83) 2588 0 R (section*.84) 2590 0 R (section*.85) 2591 0 R (section*.86) 2592 0 R (section*.87) 2593 0 R (section*.88) 2610 0 R (section*.89) 2611 0 R (section*.9) 2296 0 R (section*.90) 2617 0 R (section*.91) 2619 0 R (section*.92) 2620 0 R (section*.93) 2621 0 R (section*.94) 2622 0 R (section*.95) 2627 0 R (section*.96) 2628 0 R (section*.97) 2630 0 R (section*.98) 2631 0 R (section*.99) 2632 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) 338 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) 354 0 R (section.5.2) 358 0 R (section.6.1) 366 0 R (section.6.2) 394 0 R (section.6.3) 622 0 R (section.6.4) 678 0 R (section.7.1) 714 0 R (section.7.2) 718 0 R (section.7.3) 730 0 R (section.8.1) 738 0 R (section.8.2) 746 0 R (section.8.3) 750 0 R (section.A.1) 758 0 R (section.A.2) 766 0 R (section.A.3) 774 0 R (section.A.4) 790 0 R (section.B.1) 850 0 R (section.B.10) 886 0 R (section.B.11) 890 0 R (section.B.12) 894 0 R (section.B.13) 898 0 R (section.B.14) 902 0 R (section.B.15) 906 0 R (section.B.16) 910 0 R (section.B.17) 914 0 R (section.B.18) 918 0 R (section.B.19) 922 0 R (section.B.2) 854 0 R (section.B.20) 926 0 R (section.B.21) 930 0 R (section.B.22) 934 0 R (section.B.23) 938 0 R (section.B.24) 942 0 R (section.B.3) 858 0 R (section.B.4) 862 0 R (section.B.5) 866 0 R (section.B.6) 870 0 R (section.B.7) 874 0 R (section.B.8) 878 0 R (section.B.9) 882 0 R (server_resource_limits) 1779 0 R (server_statement_definition_and_usage) 1716 0 R (server_statement_grammar) 1868 0 R (statistics) 2079 0 R (statistics_counters) 2088 0 R (statschannels) 1879 0 R (statsfile) 1683 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) 306 0 R (subsection.4.11.3) 322 0 R (subsection.4.11.4) 326 0 R (subsection.4.11.5) 330 0 R (subsection.4.11.6) 334 0 R (subsection.4.12.1) 342 0 R (subsection.4.12.2) 346 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) 370 0 R (subsection.6.1.2) 382 0 R (subsection.6.2.1) 398 0 R (subsection.6.2.10) 434 0 R (subsection.6.2.11) 450 0 R (subsection.6.2.12) 454 0 R (subsection.6.2.13) 458 0 R (subsection.6.2.14) 462 0 R (subsection.6.2.15) 466 0 R (subsection.6.2.16) 470 0 R (subsection.6.2.17) 558 0 R (subsection.6.2.18) 562 0 R (subsection.6.2.19) 566 0 R (subsection.6.2.2) 402 0 R (subsection.6.2.20) 570 0 R (subsection.6.2.21) 574 0 R (subsection.6.2.22) 578 0 R (subsection.6.2.23) 582 0 R (subsection.6.2.24) 586 0 R (subsection.6.2.25) 590 0 R (subsection.6.2.26) 594 0 R (subsection.6.2.27) 598 0 R (subsection.6.2.28) 602 0 R (subsection.6.2.3) 406 0 R (subsection.6.2.4) 410 0 R (subsection.6.2.5) 414 0 R (subsection.6.2.6) 418 0 R (subsection.6.2.7) 422 0 R (subsection.6.2.8) 426 0 R (subsection.6.2.9) 430 0 R (subsection.6.3.1) 626 0 R (subsection.6.3.2) 638 0 R (subsection.6.3.3) 642 0 R (subsection.6.3.4) 646 0 R (subsection.6.3.5) 650 0 R (subsection.6.3.6) 670 0 R (subsection.6.3.7) 674 0 R (subsection.6.4.1) 686 0 R (subsection.7.2.1) 722 0 R (subsection.7.2.2) 726 0 R (subsection.8.1.1) 742 0 R (subsection.A.1.1) 762 0 R (subsection.A.2.1) 770 0 R (subsection.A.3.1) 778 0 R (subsection.A.3.2) 782 0 R (subsection.A.3.3) 786 0 R (subsection.A.4.1) 794 0 R (subsection.A.4.2) 798 0 R (subsection.A.4.3) 802 0 R (subsection.A.4.4) 806 0 R (subsection.A.4.5) 810 0 R (subsection.A.4.6) 814 0 R (subsection.A.4.7) 842 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.1.3) 302 0 R (subsubsection.4.11.2.1) 310 0 R (subsubsection.4.11.2.2) 314 0 R (subsubsection.4.11.2.3) 318 0 R (subsubsection.4.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 374 0 R (subsubsection.6.1.1.2) 378 0 R (subsubsection.6.1.2.1) 386 0 R (subsubsection.6.1.2.2) 390 0 R (subsubsection.6.2.10.1) 438 0 R (subsubsection.6.2.10.2) 442 0 R (subsubsection.6.2.10.3) 446 0 R (subsubsection.6.2.16.1) 474 0 R (subsubsection.6.2.16.10) 510 0 R (subsubsection.6.2.16.11) 514 0 R (subsubsection.6.2.16.12) 518 0 R (subsubsection.6.2.16.13) 522 0 R (subsubsection.6.2.16.14) 526 0 R (subsubsection.6.2.16.15) 530 0 R (subsubsection.6.2.16.16) 534 0 R (subsubsection.6.2.16.17) 538 0 R (subsubsection.6.2.16.18) 542 0 R (subsubsection.6.2.16.19) 546 0 R (subsubsection.6.2.16.2) 478 0 R (subsubsection.6.2.16.20) 550 0 R (subsubsection.6.2.16.21) 554 0 R (subsubsection.6.2.16.3) 482 0 R (subsubsection.6.2.16.4) 486 0 R (subsubsection.6.2.16.5) 490 0 R (subsubsection.6.2.16.6) 494 0 R (subsubsection.6.2.16.7) 498 0 R (subsubsection.6.2.16.8) 502 0 R (subsubsection.6.2.16.9) 506 0 R (subsubsection.6.2.28.1) 606 0 R (subsubsection.6.2.28.2) 610 0 R (subsubsection.6.2.28.3) 614 0 R (subsubsection.6.2.28.4) 618 0 R (subsubsection.6.3.1.1) 630 0 R (subsubsection.6.3.1.2) 634 0 R (subsubsection.6.3.5.1) 654 0 R (subsubsection.6.3.5.2) 658 0 R (subsubsection.6.3.5.3) 662 0 R (subsubsection.6.3.5.4) 666 0 R (subsubsection.6.4.0.1) 682 0 R (subsubsection.6.4.1.1) 690 0 R (subsubsection.6.4.1.2) 694 0 R (subsubsection.6.4.1.3) 698 0 R (subsubsection.6.4.1.4) 702 0 R (subsubsection.6.4.1.5) 706 0 R (subsubsection.A.4.6.1) 818 0 R (subsubsection.A.4.6.2) 822 0 R (subsubsection.A.4.6.3) 826 0 R (subsubsection.A.4.6.4) 830 0 R (subsubsection.A.4.6.5) 834 0 R (subsubsection.A.4.6.6) 838 0 R (table.1.1) 1255 0 R (table.1.2) 1263 0 R (table.3.1) 1322 0 R (table.3.2) 1349 0 R (table.6.1) 1559 0 R (table.6.10) 2019 0 R (table.6.11) 2025 0 R (table.6.12) 2031 0 R (table.6.13) 2039 0 R (table.6.14) 2041 0 R (table.6.15) 2048 0 R (table.6.16) 2051 0 R (table.6.17) 2054 0 R (table.6.18) 2070 0 R (table.6.19) 2081 0 R (table.6.2) 1581 0 R (table.6.20) 2091 0 R (table.6.21) 2099 0 R (table.6.22) 2102 0 R (table.6.23) 2110 0 R (table.6.3) 1589 0 R (table.6.4) 1628 0 R (table.6.5) 1644 0 R (table.6.6) 1705 0 R (table.6.7) 1805 0 R (table.6.8) 1924 0 R (table.6.9) 2005 0 R (the_category_phrase) 1622 0 R (the_sortlist_statement) 1792 0 R (topology) 1791 0 R (trusted-keys) 1891 0 R (tsig) 1405 0 R (tuning) 1806 0 R (types_of_resource_records_and_when_to_use_them) 1270 0 R (view_statement_grammar) 1826 0 R (zone_statement_grammar) 1738 0 R (zone_transfers) 1376 0 R (zonefile_format) 1819 0 R] /Limits [(Access_Control_Lists) (zonefile_format)] >> endobj 2851 0 obj << @@ -16862,7 +16860,7 @@ endobj >> endobj 2854 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() -/CreationDate (D:20131212011436Z) +/CreationDate (D:20140110170939Z) /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) >> endobj xref @@ -16874,943 +16872,943 @@ xref 0000000000 00000 f 0000000009 00000 n 0000349948 00000 n -0001232895 00000 n +0001233137 00000 n 0000000054 00000 n 0000000086 00000 n 0000350075 00000 n -0001232823 00000 n +0001233065 00000 n 0000000133 00000 n 0000000173 00000 n 0000350203 00000 n -0001232737 00000 n +0001232979 00000 n 0000000221 00000 n 0000000273 00000 n 0000350331 00000 n -0001232651 00000 n +0001232893 00000 n 0000000321 00000 n 0000000377 00000 n 0000354617 00000 n -0001232541 00000 n +0001232783 00000 n 0000000425 00000 n 0000000478 00000 n 0000354744 00000 n -0001232467 00000 n +0001232709 00000 n 0000000531 00000 n 0000000572 00000 n 0000354872 00000 n -0001232380 00000 n +0001232622 00000 n 0000000625 00000 n 0000000674 00000 n 0000354999 00000 n -0001232293 00000 n +0001232535 00000 n 0000000727 00000 n 0000000757 00000 n 0000359296 00000 n -0001232169 00000 n +0001232411 00000 n 0000000810 00000 n 0000000861 00000 n 0000359424 00000 n -0001232095 00000 n +0001232337 00000 n 0000000919 00000 n 0000000964 00000 n 0000359552 00000 n -0001232008 00000 n +0001232250 00000 n 0000001022 00000 n 0000001062 00000 n 0000359680 00000 n -0001231934 00000 n +0001232176 00000 n 0000001120 00000 n 0000001162 00000 n 0000362665 00000 n -0001231810 00000 n +0001232052 00000 n 0000001215 00000 n 0000001260 00000 n 0000362793 00000 n -0001231749 00000 n +0001231991 00000 n 0000001318 00000 n 0000001355 00000 n 0000362921 00000 n -0001231675 00000 n +0001231917 00000 n 0000001408 00000 n 0000001463 00000 n 0000365868 00000 n -0001231550 00000 n +0001231792 00000 n 0000001509 00000 n 0000001556 00000 n 0000365996 00000 n -0001231476 00000 n +0001231718 00000 n 0000001604 00000 n 0000001648 00000 n 0000366124 00000 n -0001231389 00000 n +0001231631 00000 n 0000001696 00000 n 0000001735 00000 n 0000366252 00000 n -0001231302 00000 n +0001231544 00000 n 0000001783 00000 n 0000001825 00000 n 0000366379 00000 n -0001231215 00000 n +0001231457 00000 n 0000001873 00000 n 0000001936 00000 n 0000367456 00000 n -0001231141 00000 n +0001231383 00000 n 0000001984 00000 n 0000002034 00000 n 0000369115 00000 n -0001231013 00000 n +0001231255 00000 n 0000002080 00000 n 0000002126 00000 n 0000369242 00000 n -0001230900 00000 n +0001231142 00000 n 0000002174 00000 n 0000002218 00000 n 0000369370 00000 n -0001230824 00000 n +0001231066 00000 n 0000002271 00000 n 0000002323 00000 n 0000369498 00000 n -0001230747 00000 n +0001230989 00000 n 0000002377 00000 n 0000002436 00000 n 0000371947 00000 n -0001230656 00000 n +0001230898 00000 n 0000002485 00000 n 0000002523 00000 n 0000375285 00000 n -0001230539 00000 n +0001230781 00000 n 0000002572 00000 n 0000002618 00000 n 0000375413 00000 n -0001230421 00000 n +0001230663 00000 n 0000002672 00000 n 0000002739 00000 n 0000375541 00000 n -0001230342 00000 n +0001230584 00000 n 0000002798 00000 n 0000002842 00000 n 0000375670 00000 n -0001230263 00000 n +0001230505 00000 n 0000002901 00000 n 0000002949 00000 n 0000382656 00000 n -0001230184 00000 n +0001230426 00000 n 0000003003 00000 n 0000003036 00000 n 0000388281 00000 n -0001230051 00000 n +0001230293 00000 n 0000003083 00000 n 0000003126 00000 n 0000388410 00000 n -0001229972 00000 n +0001230214 00000 n 0000003175 00000 n 0000003205 00000 n 0000388539 00000 n -0001229840 00000 n +0001230082 00000 n 0000003254 00000 n 0000003292 00000 n 0000393048 00000 n -0001229775 00000 n +0001230017 00000 n 0000003346 00000 n 0000003388 00000 n 0000393177 00000 n -0001229682 00000 n +0001229924 00000 n 0000003437 00000 n 0000003496 00000 n 0000393306 00000 n -0001229550 00000 n +0001229792 00000 n 0000003545 00000 n 0000003578 00000 n 0000397225 00000 n -0001229485 00000 n +0001229727 00000 n 0000003632 00000 n 0000003681 00000 n 0000400239 00000 n -0001229353 00000 n +0001229595 00000 n 0000003730 00000 n 0000003758 00000 n 0000403019 00000 n -0001229235 00000 n +0001229477 00000 n 0000003812 00000 n 0000003881 00000 n 0000403148 00000 n -0001229156 00000 n +0001229398 00000 n 0000003940 00000 n 0000003988 00000 n 0000403276 00000 n -0001229077 00000 n +0001229319 00000 n 0000004047 00000 n 0000004092 00000 n 0000403405 00000 n -0001228984 00000 n +0001229226 00000 n 0000004146 00000 n 0000004214 00000 n 0000403534 00000 n -0001228891 00000 n +0001229133 00000 n 0000004268 00000 n 0000004338 00000 n 0000407203 00000 n -0001228798 00000 n +0001229040 00000 n 0000004392 00000 n 0000004455 00000 n 0000407332 00000 n -0001228705 00000 n +0001228947 00000 n 0000004509 00000 n 0000004564 00000 n 0000407460 00000 n -0001228626 00000 n +0001228868 00000 n 0000004618 00000 n 0000004650 00000 n 0000407588 00000 n -0001228533 00000 n +0001228775 00000 n 0000004699 00000 n 0000004727 00000 n 0000411357 00000 n -0001228440 00000 n +0001228682 00000 n 0000004776 00000 n 0000004808 00000 n 0000411486 00000 n -0001228308 00000 n +0001228550 00000 n 0000004857 00000 n 0000004887 00000 n 0000411615 00000 n -0001228229 00000 n +0001228471 00000 n 0000004941 00000 n 0000004982 00000 n 0000415413 00000 n -0001228136 00000 n +0001228378 00000 n 0000005036 00000 n 0000005078 00000 n 0000415542 00000 n -0001228057 00000 n +0001228299 00000 n 0000005132 00000 n 0000005177 00000 n 0000420866 00000 n -0001227924 00000 n +0001228166 00000 n 0000005226 00000 n 0000005294 00000 n 0000420995 00000 n -0001227845 00000 n +0001228087 00000 n 0000005348 00000 n 0000005408 00000 n 0000421124 00000 n -0001227752 00000 n +0001227994 00000 n 0000005462 00000 n 0000005513 00000 n 0000425392 00000 n -0001227659 00000 n +0001227901 00000 n 0000005567 00000 n 0000005621 00000 n 0000428374 00000 n -0001227566 00000 n +0001227808 00000 n 0000005675 00000 n 0000005721 00000 n 0000428503 00000 n -0001227473 00000 n +0001227715 00000 n 0000005775 00000 n 0000005817 00000 n 0000428632 00000 n -0001227380 00000 n +0001227622 00000 n 0000005871 00000 n 0000005922 00000 n 0000428761 00000 n -0001227287 00000 n +0001227529 00000 n 0000005976 00000 n 0000006025 00000 n 0000431520 00000 n -0001227194 00000 n +0001227436 00000 n 0000006079 00000 n 0000006136 00000 n 0000431649 00000 n -0001227101 00000 n +0001227343 00000 n 0000006190 00000 n 0000006245 00000 n 0000431778 00000 n -0001227008 00000 n +0001227250 00000 n 0000006300 00000 n 0000006356 00000 n 0000431906 00000 n -0001226915 00000 n +0001227157 00000 n 0000006411 00000 n 0000006472 00000 n 0000432034 00000 n -0001226822 00000 n +0001227064 00000 n 0000006527 00000 n 0000006573 00000 n 0000432163 00000 n -0001226743 00000 n +0001226985 00000 n 0000006628 00000 n 0000006671 00000 n 0000436027 00000 n -0001226611 00000 n +0001226853 00000 n 0000006721 00000 n 0000006777 00000 n 0000436156 00000 n -0001226532 00000 n +0001226774 00000 n 0000006832 00000 n 0000006878 00000 n 0000436285 00000 n -0001226453 00000 n +0001226695 00000 n 0000006933 00000 n 0000006980 00000 n 0000439687 00000 n -0001226321 00000 n +0001226563 00000 n 0000007030 00000 n 0000007087 00000 n 0000439816 00000 n -0001226203 00000 n +0001226445 00000 n 0000007142 00000 n 0000007182 00000 n 0000442484 00000 n -0001226124 00000 n +0001226366 00000 n 0000007242 00000 n 0000007315 00000 n 0000442613 00000 n -0001226031 00000 n +0001226273 00000 n 0000007375 00000 n 0000007448 00000 n 0000445330 00000 n -0001225952 00000 n +0001226194 00000 n 0000007508 00000 n 0000007565 00000 n 0000447722 00000 n -0001225820 00000 n +0001226062 00000 n 0000007620 00000 n 0000007678 00000 n 0000447851 00000 n -0001225741 00000 n +0001225983 00000 n 0000007738 00000 n 0000007815 00000 n 0000447980 00000 n -0001225648 00000 n +0001225890 00000 n 0000007875 00000 n 0000007952 00000 n 0000448109 00000 n -0001225569 00000 n +0001225811 00000 n 0000008012 00000 n 0000008071 00000 n 0000448238 00000 n -0001225476 00000 n +0001225718 00000 n 0000008126 00000 n 0000008170 00000 n 0000450869 00000 n -0001225383 00000 n +0001225625 00000 n 0000008225 00000 n 0000008265 00000 n 0000453677 00000 n -0001225290 00000 n +0001225532 00000 n 0000008320 00000 n 0000008388 00000 n 0000453806 00000 n -0001225211 00000 n +0001225453 00000 n 0000008443 00000 n 0000008514 00000 n 0000457867 00000 n -0001225093 00000 n +0001225335 00000 n 0000008564 00000 n 0000008611 00000 n 0000457996 00000 n -0001225014 00000 n +0001225256 00000 n 0000008666 00000 n 0000008727 00000 n 0000458125 00000 n -0001224935 00000 n +0001225177 00000 n 0000008782 00000 n 0000008852 00000 n 0000460610 00000 n -0001224802 00000 n +0001225044 00000 n 0000008899 00000 n 0000008952 00000 n 0000460739 00000 n -0001224723 00000 n +0001224965 00000 n 0000009001 00000 n 0000009057 00000 n 0000460868 00000 n -0001224644 00000 n +0001224886 00000 n 0000009106 00000 n 0000009155 00000 n 0000465138 00000 n -0001224511 00000 n +0001224753 00000 n 0000009202 00000 n 0000009254 00000 n 0000465267 00000 n -0001224393 00000 n +0001224635 00000 n 0000009303 00000 n 0000009354 00000 n 0000473691 00000 n -0001224275 00000 n +0001224517 00000 n 0000009408 00000 n 0000009453 00000 n 0000473820 00000 n -0001224196 00000 n +0001224438 00000 n 0000009512 00000 n 0000009546 00000 n 0000473949 00000 n -0001224117 00000 n +0001224359 00000 n 0000009605 00000 n 0000009653 00000 n 0000474078 00000 n -0001223999 00000 n +0001224241 00000 n 0000009707 00000 n 0000009747 00000 n 0000476611 00000 n -0001223920 00000 n +0001224162 00000 n 0000009806 00000 n 0000009840 00000 n 0000476740 00000 n -0001223841 00000 n +0001224083 00000 n 0000009899 00000 n 0000009947 00000 n 0000476869 00000 n -0001223708 00000 n +0001223950 00000 n 0000009996 00000 n 0000010046 00000 n 0000480110 00000 n -0001223629 00000 n +0001223871 00000 n 0000010100 00000 n 0000010147 00000 n 0000480238 00000 n -0001223536 00000 n +0001223778 00000 n 0000010201 00000 n 0000010261 00000 n 0000485595 00000 n -0001223443 00000 n +0001223685 00000 n 0000010315 00000 n 0000010367 00000 n 0000485724 00000 n -0001223350 00000 n +0001223592 00000 n 0000010421 00000 n 0000010486 00000 n 0000489194 00000 n -0001223257 00000 n +0001223499 00000 n 0000010540 00000 n 0000010591 00000 n 0000489323 00000 n -0001223164 00000 n +0001223406 00000 n 0000010645 00000 n 0000010709 00000 n 0000489452 00000 n -0001223071 00000 n +0001223313 00000 n 0000010763 00000 n 0000010810 00000 n 0000489581 00000 n -0001222978 00000 n +0001223220 00000 n 0000010864 00000 n 0000010924 00000 n 0000489709 00000 n -0001222885 00000 n +0001223127 00000 n 0000010978 00000 n 0000011029 00000 n 0000493408 00000 n -0001222753 00000 n +0001222995 00000 n 0000011084 00000 n 0000011149 00000 n 0000493537 00000 n -0001222674 00000 n +0001222916 00000 n 0000011209 00000 n 0000011256 00000 n 0000500377 00000 n -0001222581 00000 n +0001222823 00000 n 0000011316 00000 n 0000011364 00000 n 0000507238 00000 n -0001222502 00000 n +0001222744 00000 n 0000011424 00000 n 0000011478 00000 n 0000513667 00000 n -0001222409 00000 n +0001222651 00000 n 0000011533 00000 n 0000011583 00000 n 0000513796 00000 n -0001222316 00000 n +0001222558 00000 n 0000011638 00000 n 0000011701 00000 n 0000513925 00000 n -0001222223 00000 n +0001222465 00000 n 0000011756 00000 n 0000011808 00000 n 0000514054 00000 n -0001222130 00000 n +0001222372 00000 n 0000011863 00000 n 0000011928 00000 n 0000514183 00000 n -0001222037 00000 n +0001222279 00000 n 0000011983 00000 n 0000012035 00000 n 0000520931 00000 n -0001221904 00000 n +0001222146 00000 n 0000012090 00000 n 0000012155 00000 n 0000541866 00000 n -0001221825 00000 n +0001222067 00000 n 0000012215 00000 n 0000012259 00000 n 0000567381 00000 n -0001221732 00000 n +0001221974 00000 n 0000012319 00000 n 0000012358 00000 n 0000567509 00000 n -0001221639 00000 n +0001221881 00000 n 0000012418 00000 n 0000012465 00000 n 0000570958 00000 n -0001221546 00000 n +0001221788 00000 n 0000012525 00000 n 0000012568 00000 n 0000575288 00000 n -0001221453 00000 n +0001221695 00000 n 0000012628 00000 n 0000012667 00000 n 0000579035 00000 n -0001221360 00000 n +0001221602 00000 n 0000012727 00000 n 0000012769 00000 n 0000581953 00000 n -0001221267 00000 n +0001221509 00000 n 0000012829 00000 n 0000012872 00000 n 0000589425 00000 n -0001221174 00000 n +0001221416 00000 n 0000012932 00000 n 0000012975 00000 n 0000593613 00000 n -0001221081 00000 n +0001221323 00000 n 0000013035 00000 n 0000013096 00000 n 0000593741 00000 n -0001220988 00000 n +0001221230 00000 n 0000013157 00000 n 0000013209 00000 n 0000597768 00000 n -0001220895 00000 n +0001221137 00000 n 0000013270 00000 n 0000013323 00000 n 0000601352 00000 n -0001220802 00000 n +0001221044 00000 n 0000013384 00000 n 0000013422 00000 n 0000601480 00000 n -0001220709 00000 n +0001220951 00000 n 0000013483 00000 n 0000013535 00000 n 0000604708 00000 n -0001220616 00000 n +0001220858 00000 n 0000013596 00000 n 0000013640 00000 n 0000608315 00000 n -0001220523 00000 n +0001220765 00000 n 0000013701 00000 n 0000013737 00000 n 0000616760 00000 n -0001220430 00000 n +0001220672 00000 n 0000013798 00000 n 0000013861 00000 n 0000620505 00000 n -0001220337 00000 n +0001220579 00000 n 0000013922 00000 n 0000013972 00000 n 0000627454 00000 n -0001220244 00000 n +0001220486 00000 n 0000014033 00000 n 0000014089 00000 n 0000632152 00000 n -0001220151 00000 n +0001220393 00000 n 0000014150 00000 n 0000014197 00000 n 0000636382 00000 n -0001220058 00000 n +0001220300 00000 n 0000014258 00000 n 0000014326 00000 n 0000643421 00000 n -0001219979 00000 n +0001220221 00000 n 0000014387 00000 n 0000014439 00000 n 0000652184 00000 n -0001219886 00000 n +0001220128 00000 n 0000014494 00000 n 0000014545 00000 n 0000656910 00000 n -0001219793 00000 n +0001220035 00000 n 0000014600 00000 n 0000014664 00000 n 0000662275 00000 n -0001219700 00000 n +0001219942 00000 n 0000014719 00000 n 0000014783 00000 n 0000662404 00000 n -0001219607 00000 n +0001219849 00000 n 0000014838 00000 n 0000014915 00000 n 0000666004 00000 n -0001219514 00000 n +0001219756 00000 n 0000014970 00000 n 0000015027 00000 n 0000666133 00000 n -0001219421 00000 n +0001219663 00000 n 0000015082 00000 n 0000015152 00000 n 0000666262 00000 n -0001219328 00000 n +0001219570 00000 n 0000015207 00000 n 0000015264 00000 n 0000666391 00000 n -0001219235 00000 n +0001219477 00000 n 0000015319 00000 n 0000015389 00000 n 0000670697 00000 n -0001219142 00000 n +0001219384 00000 n 0000015444 00000 n 0000015493 00000 n 0000670826 00000 n -0001219049 00000 n +0001219291 00000 n 0000015548 00000 n 0000015610 00000 n 0000673452 00000 n -0001218956 00000 n +0001219198 00000 n 0000015665 00000 n 0000015714 00000 n 0000681437 00000 n -0001218838 00000 n +0001219080 00000 n 0000015769 00000 n 0000015831 00000 n 0000681566 00000 n -0001218759 00000 n +0001219001 00000 n 0000015891 00000 n 0000015930 00000 n 0000688820 00000 n -0001218666 00000 n +0001218908 00000 n 0000015990 00000 n 0000016024 00000 n 0000688948 00000 n -0001218573 00000 n +0001218815 00000 n 0000016084 00000 n 0000016125 00000 n 0000710733 00000 n -0001218494 00000 n +0001218736 00000 n 0000016185 00000 n 0000016237 00000 n 0000721255 00000 n -0001218362 00000 n +0001218604 00000 n 0000016286 00000 n 0000016319 00000 n 0000721384 00000 n -0001218244 00000 n +0001218486 00000 n 0000016373 00000 n 0000016445 00000 n 0000721513 00000 n -0001218165 00000 n +0001218407 00000 n 0000016504 00000 n 0000016548 00000 n 0000732115 00000 n -0001218086 00000 n +0001218328 00000 n 0000016607 00000 n 0000016660 00000 n 0000732504 00000 n -0001217993 00000 n +0001218235 00000 n 0000016714 00000 n 0000016764 00000 n 0000736346 00000 n -0001217900 00000 n +0001218142 00000 n 0000016818 00000 n 0000016856 00000 n 0000736605 00000 n -0001217807 00000 n +0001218049 00000 n 0000016910 00000 n 0000016959 00000 n 0000739380 00000 n -0001217675 00000 n +0001217917 00000 n 0000017013 00000 n 0000017065 00000 n 0000739505 00000 n -0001217596 00000 n +0001217838 00000 n 0000017124 00000 n 0000017169 00000 n 0000739634 00000 n -0001217503 00000 n +0001217745 00000 n 0000017228 00000 n 0000017280 00000 n 0000739763 00000 n -0001217410 00000 n +0001217652 00000 n 0000017339 00000 n 0000017392 00000 n 0000742206 00000 n -0001217331 00000 n +0001217573 00000 n 0000017451 00000 n 0000017500 00000 n 0000742335 00000 n -0001217238 00000 n +0001217480 00000 n 0000017554 00000 n 0000017634 00000 n 0000746657 00000 n -0001217159 00000 n +0001217401 00000 n 0000017688 00000 n 0000017737 00000 n 0000750163 00000 n -0001217041 00000 n +0001217283 00000 n 0000017786 00000 n 0000017826 00000 n 0000750422 00000 n -0001216962 00000 n +0001217204 00000 n 0000017885 00000 n 0000017932 00000 n 0000753851 00000 n -0001216844 00000 n +0001217086 00000 n 0000017986 00000 n 0000018031 00000 n 0000753980 00000 n -0001216765 00000 n +0001217007 00000 n 0000018090 00000 n 0000018149 00000 n 0000757319 00000 n -0001216672 00000 n +0001216914 00000 n 0000018208 00000 n 0000018272 00000 n 0000757578 00000 n -0001216579 00000 n +0001216821 00000 n 0000018331 00000 n 0000018387 00000 n 0000761762 00000 n -0001216486 00000 n +0001216728 00000 n 0000018446 00000 n 0000018504 00000 n 0000763934 00000 n -0001216407 00000 n +0001216649 00000 n 0000018563 00000 n 0000018625 00000 n 0000765719 00000 n -0001216274 00000 n +0001216516 00000 n 0000018672 00000 n 0000018724 00000 n 0000765847 00000 n -0001216195 00000 n +0001216437 00000 n 0000018773 00000 n 0000018817 00000 n 0000769646 00000 n -0001216063 00000 n +0001216305 00000 n 0000018866 00000 n 0000018907 00000 n 0000769775 00000 n -0001215984 00000 n +0001216226 00000 n 0000018961 00000 n 0000019009 00000 n 0000769904 00000 n -0001215905 00000 n +0001216147 00000 n 0000019063 00000 n 0000019114 00000 n 0000770032 00000 n -0001215826 00000 n +0001216068 00000 n 0000019163 00000 n 0000019210 00000 n 0000774292 00000 n -0001215693 00000 n +0001215935 00000 n 0000019257 00000 n 0000019294 00000 n 0000774421 00000 n -0001215575 00000 n +0001215817 00000 n 0000019343 00000 n 0000019382 00000 n 0000774550 00000 n -0001215510 00000 n +0001215752 00000 n 0000019436 00000 n 0000019514 00000 n 0000774679 00000 n -0001215417 00000 n +0001215659 00000 n 0000019563 00000 n 0000019630 00000 n 0000774808 00000 n -0001215338 00000 n +0001215580 00000 n 0000019679 00000 n 0000019724 00000 n 0000778249 00000 n -0001215205 00000 n +0001215447 00000 n 0000019772 00000 n 0000019804 00000 n 0000778378 00000 n -0001215087 00000 n +0001215329 00000 n 0000019853 00000 n 0000019892 00000 n 0000778507 00000 n -0001215022 00000 n +0001215264 00000 n 0000019946 00000 n 0000020007 00000 n 0000782189 00000 n -0001214890 00000 n +0001215132 00000 n 0000020056 00000 n 0000020113 00000 n 0000782318 00000 n -0001214825 00000 n +0001215067 00000 n 0000020167 00000 n 0000020216 00000 n 0000782447 00000 n -0001214693 00000 n +0001214935 00000 n 0000020265 00000 n 0000020327 00000 n 0000782576 00000 n -0001214614 00000 n +0001214856 00000 n 0000020381 00000 n 0000020436 00000 n 0000807418 00000 n -0001214521 00000 n +0001214763 00000 n 0000020490 00000 n 0000020531 00000 n 0000807547 00000 n -0001214442 00000 n +0001214684 00000 n 0000020585 00000 n 0000020637 00000 n 0000807936 00000 n -0001214324 00000 n +0001214566 00000 n 0000020686 00000 n 0000020736 00000 n 0000810757 00000 n -0001214245 00000 n +0001214487 00000 n 0000020790 00000 n 0000020828 00000 n 0000810886 00000 n -0001214152 00000 n +0001214394 00000 n 0000020882 00000 n 0000020919 00000 n 0000811015 00000 n -0001214059 00000 n +0001214301 00000 n 0000020973 00000 n 0000021011 00000 n 0000811144 00000 n -0001213966 00000 n +0001214208 00000 n 0000021065 00000 n 0000021117 00000 n 0000814380 00000 n -0001213873 00000 n +0001214115 00000 n 0000021171 00000 n 0000021214 00000 n 0000814508 00000 n -0001213741 00000 n +0001213983 00000 n 0000021268 00000 n 0000021313 00000 n 0000814636 00000 n -0001213662 00000 n +0001213904 00000 n 0000021372 00000 n 0000021438 00000 n 0000817622 00000 n -0001213569 00000 n +0001213811 00000 n 0000021497 00000 n 0000021585 00000 n 0000817751 00000 n -0001213476 00000 n +0001213718 00000 n 0000021644 00000 n 0000021719 00000 n 0000817880 00000 n -0001213383 00000 n +0001213625 00000 n 0000021778 00000 n 0000021863 00000 n 0000820788 00000 n -0001213290 00000 n +0001213532 00000 n 0000021922 00000 n 0000022003 00000 n 0000823249 00000 n -0001213211 00000 n +0001213453 00000 n 0000022062 00000 n 0000022146 00000 n 0000823378 00000 n -0001213132 00000 n +0001213374 00000 n 0000022200 00000 n 0000022244 00000 n 0000826274 00000 n -0001213012 00000 n +0001213254 00000 n 0000022292 00000 n 0000022326 00000 n 0000826403 00000 n -0001212933 00000 n +0001213175 00000 n 0000022375 00000 n 0000022402 00000 n 0000848974 00000 n -0001212840 00000 n +0001213082 00000 n 0000022451 00000 n 0000022479 00000 n 0000852607 00000 n -0001212747 00000 n +0001212989 00000 n 0000022528 00000 n 0000022566 00000 n 0000855811 00000 n -0001212654 00000 n +0001212896 00000 n 0000022615 00000 n 0000022654 00000 n 0000862214 00000 n -0001212561 00000 n +0001212803 00000 n 0000022703 00000 n 0000022743 00000 n 0000864940 00000 n -0001212468 00000 n +0001212710 00000 n 0000022792 00000 n 0000022835 00000 n 0000875077 00000 n -0001212375 00000 n +0001212617 00000 n 0000022884 00000 n 0000022921 00000 n 0000888727 00000 n -0001212282 00000 n +0001212524 00000 n 0000022970 00000 n 0000023007 00000 n 0000892108 00000 n -0001212189 00000 n +0001212431 00000 n 0000023056 00000 n 0000023094 00000 n 0000898633 00000 n -0001212096 00000 n +0001212338 00000 n 0000023144 00000 n 0000023184 00000 n 0000916435 00000 n -0001212003 00000 n +0001212245 00000 n 0000023234 00000 n 0000023272 00000 n -0000919368 00000 n -0001211910 00000 n +0000919577 00000 n +0001212152 00000 n 0000023322 00000 n 0000023362 00000 n -0000922239 00000 n -0001211817 00000 n +0000922492 00000 n +0001212059 00000 n 0000023412 00000 n 0000023452 00000 n -0000929081 00000 n -0001211724 00000 n +0000932500 00000 n +0001211966 00000 n 0000023502 00000 n 0000023532 00000 n -0000940697 00000 n -0001211631 00000 n +0000940973 00000 n +0001211873 00000 n 0000023582 00000 n 0000023625 00000 n -0000941150 00000 n -0001211538 00000 n +0000941427 00000 n +0001211780 00000 n 0000023675 00000 n 0000023708 00000 n -0000955516 00000 n -0001211445 00000 n +0000955679 00000 n +0001211687 00000 n 0000023758 00000 n 0000023787 00000 n -0000973909 00000 n -0001211352 00000 n +0000974104 00000 n +0001211594 00000 n 0000023837 00000 n 0000023871 00000 n -0000979576 00000 n -0001211259 00000 n +0000979694 00000 n +0001211501 00000 n 0000023921 00000 n 0000023958 00000 n -0000982656 00000 n -0001211166 00000 n +0000982902 00000 n +0001211408 00000 n 0000024008 00000 n 0000024045 00000 n -0000988340 00000 n -0001211073 00000 n +0000988586 00000 n +0001211315 00000 n 0000024095 00000 n 0000024128 00000 n -0000988794 00000 n -0001210980 00000 n +0000989040 00000 n +0001211222 00000 n 0000024178 00000 n 0000024212 00000 n -0000991506 00000 n -0001210887 00000 n +0000991752 00000 n +0001211129 00000 n 0000024262 00000 n 0000024301 00000 n -0000993619 00000 n -0001210808 00000 n +0000993865 00000 n +0001211050 00000 n 0000024351 00000 n 0000024385 00000 n 0000024758 00000 n @@ -17819,10 +17817,10 @@ xref 0000024438 00000 n 0000289555 00000 n 0000289618 00000 n -0001204762 00000 n -0001178620 00000 n -0001204588 00000 n -0001205808 00000 n +0001205004 00000 n +0001178862 00000 n +0001204830 00000 n +0001206050 00000 n 0000026189 00000 n 0000026382 00000 n 0000026462 00000 n @@ -17842,12 +17840,12 @@ xref 0000290936 00000 n 0000289781 00000 n 0000291058 00000 n -0001177384 00000 n -0001150765 00000 n -0001177210 00000 n -0001150080 00000 n -0001147935 00000 n -0001149916 00000 n +0001177626 00000 n +0001151007 00000 n +0001177452 00000 n +0001150322 00000 n +0001148178 00000 n +0001150158 00000 n 0000302898 00000 n 0000294171 00000 n 0000291206 00000 n @@ -17907,9 +17905,9 @@ xref 0000306338 00000 n 0000302983 00000 n 0000316340 00000 n -0001147347 00000 n -0001129926 00000 n -0001147161 00000 n +0001147590 00000 n +0001130169 00000 n +0001147404 00000 n 0000306988 00000 n 0000307152 00000 n 0000307316 00000 n @@ -18043,9 +18041,9 @@ xref 0000335807 00000 n 0000335975 00000 n 0000336142 00000 n -0001129035 00000 n -0001107701 00000 n -0001128859 00000 n +0001129278 00000 n +0001107944 00000 n +0001129102 00000 n 0000336309 00000 n 0000336477 00000 n 0000336633 00000 n @@ -18103,9 +18101,9 @@ xref 0000345813 00000 n 0000345972 00000 n 0000346131 00000 n -0001106722 00000 n -0001086595 00000 n -0001106547 00000 n +0001106965 00000 n +0001086838 00000 n +0001106790 00000 n 0000346290 00000 n 0000346449 00000 n 0000346607 00000 n @@ -18113,7 +18111,7 @@ xref 0000346924 00000 n 0000347083 00000 n 0000347242 00000 n -0001205929 00000 n +0001206171 00000 n 0000350589 00000 n 0000349822 00000 n 0000347567 00000 n @@ -18123,9 +18121,9 @@ xref 0000350394 00000 n 0000350459 00000 n 0000350524 00000 n -0001085753 00000 n -0001067053 00000 n -0001085578 00000 n +0001085996 00000 n +0001067296 00000 n +0001085821 00000 n 0000355126 00000 n 0000353985 00000 n 0000350717 00000 n @@ -18174,7 +18172,7 @@ xref 0000366593 00000 n 0000367391 00000 n 0000367519 00000 n -0001206054 00000 n +0001206296 00000 n 0000369627 00000 n 0000368924 00000 n 0000367684 00000 n @@ -18198,9 +18196,9 @@ xref 0000375220 00000 n 0000375349 00000 n 0000375476 00000 n -0001066331 00000 n -0001052954 00000 n -0001066152 00000 n +0001066574 00000 n +0001053197 00000 n +0001066395 00000 n 0000375734 00000 n 0000380671 00000 n 0000380110 00000 n @@ -18208,7 +18206,7 @@ xref 0000380606 00000 n 0000380266 00000 n 0000380420 00000 n -0000955580 00000 n +0000955743 00000 n 0000485787 00000 n 0000382913 00000 n 0000382465 00000 n @@ -18221,7 +18219,7 @@ xref 0000383191 00000 n 0000383041 00000 n 0000383317 00000 n -0001206179 00000 n +0001206421 00000 n 0000386078 00000 n 0000388668 00000 n 0000385913 00000 n @@ -18231,12 +18229,12 @@ xref 0000388474 00000 n 0000387721 00000 n 0000387883 00000 n -0001052048 00000 n -0001042028 00000 n -0001051874 00000 n -0001041464 00000 n -0001032377 00000 n -0001041289 00000 n +0001052291 00000 n +0001042271 00000 n +0001052117 00000 n +0001041707 00000 n +0001032621 00000 n +0001041532 00000 n 0000388603 00000 n 0000388045 00000 n 0000387550 00000 n @@ -18250,9 +18248,9 @@ xref 0000388839 00000 n 0000392983 00000 n 0000393112 00000 n -0001031776 00000 n -0001019355 00000 n -0001031597 00000 n +0001032020 00000 n +0001019599 00000 n +0001031841 00000 n 0000393241 00000 n 0000392655 00000 n 0000392821 00000 n @@ -18282,7 +18280,7 @@ xref 0000403340 00000 n 0000403469 00000 n 0000403598 00000 n -0001206304 00000 n +0001206546 00000 n 0000407717 00000 n 0000406821 00000 n 0000403805 00000 n @@ -18313,9 +18311,9 @@ xref 0000420675 00000 n 0000418128 00000 n 0000420801 00000 n -0001019080 00000 n -0001015720 00000 n -0001018901 00000 n +0001019324 00000 n +0001015965 00000 n +0001019145 00000 n 0000420930 00000 n 0000421059 00000 n 0000421188 00000 n @@ -18324,12 +18322,12 @@ xref 0000421424 00000 n 0000425327 00000 n 0000425456 00000 n -0001015365 00000 n -0001013367 00000 n -0001015200 00000 n +0001015610 00000 n +0001013613 00000 n +0001015445 00000 n 0000424998 00000 n 0000425162 00000 n -0001206429 00000 n +0001206671 00000 n 0000875141 00000 n 0000892172 00000 n 0000428887 00000 n @@ -18376,7 +18374,7 @@ xref 0000442898 00000 n 0000445265 00000 n 0000445394 00000 n -0001206554 00000 n +0001206796 00000 n 0000448367 00000 n 0000447531 00000 n 0000445573 00000 n @@ -18418,7 +18416,7 @@ xref 0000461247 00000 n 0000461097 00000 n 0000461373 00000 n -0001206679 00000 n +0001206921 00000 n 0000465525 00000 n 0000464759 00000 n 0000461480 00000 n @@ -18464,8 +18462,8 @@ xref 0000485659 00000 n 0000485220 00000 n 0000485371 00000 n -0001206804 00000 n -0000994346 00000 n +0001207046 00000 n +0000994592 00000 n 0000489838 00000 n 0000488438 00000 n 0000485993 00000 n @@ -18505,7 +18503,7 @@ xref 0000504051 00000 n 0000507173 00000 n 0000507302 00000 n -0001206929 00000 n +0001207171 00000 n 0000510891 00000 n 0000510570 00000 n 0000507495 00000 n @@ -18540,7 +18538,7 @@ xref 0000518962 00000 n 0000520866 00000 n 0000520995 00000 n -0001207054 00000 n +0001207296 00000 n 0000524632 00000 n 0000524441 00000 n 0000521174 00000 n @@ -18573,7 +18571,7 @@ xref 0000545624 00000 n 0000545689 00000 n 0000545753 00000 n -0001207179 00000 n +0001207421 00000 n 0000550885 00000 n 0000549757 00000 n 0000545946 00000 n @@ -18612,7 +18610,7 @@ xref 0000570893 00000 n 0000571022 00000 n 0000570726 00000 n -0001207304 00000 n +0001207546 00000 n 0000575417 00000 n 0000574726 00000 n 0000571244 00000 n @@ -18648,7 +18646,7 @@ xref 0000593220 00000 n 0000593805 00000 n 0000593394 00000 n -0001207429 00000 n +0001207671 00000 n 0000597895 00000 n 0000597577 00000 n 0000593984 00000 n @@ -18685,7 +18683,7 @@ xref 0000616695 00000 n 0000616532 00000 n 0000616824 00000 n -0001207554 00000 n +0001207796 00000 n 0000746721 00000 n 0000620634 00000 n 0000620124 00000 n @@ -18717,7 +18715,7 @@ xref 0000632409 00000 n 0000636317 00000 n 0000636446 00000 n -0001207679 00000 n +0001207921 00000 n 0000640643 00000 n 0000640452 00000 n 0000636652 00000 n @@ -18753,7 +18751,7 @@ xref 0000661676 00000 n 0000661856 00000 n 0000662032 00000 n -0001207804 00000 n +0001208046 00000 n 0000666519 00000 n 0000665638 00000 n 0000662661 00000 n @@ -18783,7 +18781,7 @@ xref 0000677982 00000 n 0000676894 00000 n 0000678108 00000 n -0001207929 00000 n +0001208171 00000 n 0000681825 00000 n 0000681246 00000 n 0000678274 00000 n @@ -18806,7 +18804,7 @@ xref 0000688274 00000 n 0000688434 00000 n 0000688595 00000 n -0000994313 00000 n +0000994559 00000 n 0000695084 00000 n 0000692484 00000 n 0000689205 00000 n @@ -18855,7 +18853,7 @@ xref 0000704990 00000 n 0000705152 00000 n 0000705313 00000 n -0001208054 00000 n +0001208296 00000 n 0000710861 00000 n 0000709343 00000 n 0000705644 00000 n @@ -18899,7 +18897,7 @@ xref 0000728514 00000 n 0000728579 00000 n 0000728644 00000 n -0001208179 00000 n +0001208421 00000 n 0000732633 00000 n 0000731924 00000 n 0000728824 00000 n @@ -18950,7 +18948,7 @@ xref 0000750292 00000 n 0000750357 00000 n 0000749938 00000 n -0001208304 00000 n +0001208546 00000 n 0000754239 00000 n 0000753660 00000 n 0000750665 00000 n @@ -18970,7 +18968,7 @@ xref 0000757642 00000 n 0000757707 00000 n 0000757772 00000 n -0000994280 00000 n +0000994526 00000 n 0000762020 00000 n 0000761571 00000 n 0000757950 00000 n @@ -18982,9 +18980,9 @@ xref 0000763743 00000 n 0000762148 00000 n 0000763869 00000 n -0001013086 00000 n -0001005802 00000 n -0001012906 00000 n +0001013332 00000 n +0001006048 00000 n +0001013152 00000 n 0000763998 00000 n 0000765975 00000 n 0000765528 00000 n @@ -18996,13 +18994,13 @@ xref 0000769455 00000 n 0000766089 00000 n 0000769581 00000 n -0001005481 00000 n -0000996268 00000 n -0001005295 00000 n +0001005727 00000 n +0000996514 00000 n +0001005541 00000 n 0000769710 00000 n 0000769839 00000 n 0000769967 00000 n -0001208429 00000 n +0001208671 00000 n 0000771194 00000 n 0000771003 00000 n 0000770388 00000 n @@ -19043,7 +19041,7 @@ xref 0000781949 00000 n 0000782705 00000 n 0000782769 00000 n -0001208554 00000 n +0001208796 00000 n 0000789723 00000 n 0000785895 00000 n 0000782989 00000 n @@ -19264,7 +19262,7 @@ xref 0000814155 00000 n 0000814572 00000 n 0000814700 00000 n -0001208679 00000 n +0001208921 00000 n 0000818009 00000 n 0000817431 00000 n 0000814892 00000 n @@ -19302,7 +19300,7 @@ xref 0000830866 00000 n 0000830931 00000 n 0000830996 00000 n -0001208804 00000 n +0001209046 00000 n 0000834824 00000 n 0000834568 00000 n 0000831217 00000 n @@ -19344,7 +19342,7 @@ xref 0000852736 00000 n 0000852801 00000 n 0000852866 00000 n -0001208929 00000 n +0001209171 00000 n 0000856135 00000 n 0000855427 00000 n 0000853072 00000 n @@ -19396,7 +19394,7 @@ xref 0000872057 00000 n 0000872122 00000 n 0000872187 00000 n -0001209054 00000 n +0001209296 00000 n 0000875466 00000 n 0000874756 00000 n 0000872378 00000 n @@ -19443,7 +19441,7 @@ xref 0000892302 00000 n 0000892367 00000 n 0000892432 00000 n -0001209179 00000 n +0001209421 00000 n 0000895878 00000 n 0000895557 00000 n 0000892653 00000 n @@ -19479,7 +19477,7 @@ xref 0000913445 00000 n 0000913510 00000 n 0000913575 00000 n -0001209304 00000 n +0001209546 00000 n 0000916823 00000 n 0000916179 00000 n 0000913809 00000 n @@ -19490,245 +19488,245 @@ xref 0000916629 00000 n 0000916694 00000 n 0000916759 00000 n -0000919756 00000 n -0000919047 00000 n +0000919965 00000 n +0000919256 00000 n 0000916965 00000 n -0000919173 00000 n -0000919238 00000 n -0000919303 00000 n -0000919432 00000 n -0000919497 00000 n -0000919562 00000 n -0000919627 00000 n -0000919691 00000 n -0000922628 00000 n -0000921853 00000 n -0000919912 00000 n -0000921979 00000 n -0000922044 00000 n -0000922109 00000 n -0000922174 00000 n -0000922303 00000 n -0000922368 00000 n -0000922433 00000 n -0000922498 00000 n -0000922563 00000 n -0000926061 00000 n -0000925870 00000 n -0000922770 00000 n -0000925996 00000 n -0000929274 00000 n -0000928695 00000 n -0000926189 00000 n -0000928821 00000 n -0000928886 00000 n -0000928951 00000 n -0000929016 00000 n -0000929145 00000 n -0000929210 00000 n -0000932709 00000 n -0000932323 00000 n -0000929416 00000 n -0000932449 00000 n -0000932514 00000 n -0000932579 00000 n -0000932644 00000 n -0001209429 00000 n -0000935974 00000 n -0000935783 00000 n -0000932851 00000 n -0000935909 00000 n -0000938700 00000 n -0000938185 00000 n -0000936187 00000 n -0000938311 00000 n -0000938376 00000 n -0000938441 00000 n -0000938506 00000 n -0000938571 00000 n -0000938636 00000 n -0000941409 00000 n -0000940506 00000 n +0000919382 00000 n +0000919447 00000 n +0000919512 00000 n +0000919641 00000 n +0000919706 00000 n +0000919771 00000 n +0000919836 00000 n +0000919901 00000 n +0000922878 00000 n +0000922106 00000 n +0000920121 00000 n +0000922232 00000 n +0000922297 00000 n +0000922362 00000 n +0000922427 00000 n +0000922556 00000 n +0000922621 00000 n +0000922684 00000 n +0000922749 00000 n +0000922814 00000 n +0000926235 00000 n +0000926044 00000 n +0000923020 00000 n +0000926170 00000 n +0000929379 00000 n +0000928994 00000 n +0000926349 00000 n +0000929120 00000 n +0000929185 00000 n +0000929250 00000 n +0000929315 00000 n +0000932889 00000 n +0000932309 00000 n +0000929521 00000 n +0000932435 00000 n +0000932564 00000 n +0000932629 00000 n +0000932694 00000 n +0000932759 00000 n +0000932824 00000 n +0001209671 00000 n +0000935845 00000 n +0000935654 00000 n +0000933031 00000 n +0000935780 00000 n 0000938913 00000 n -0000940632 00000 n -0000940761 00000 n -0000940826 00000 n -0000940891 00000 n -0000940956 00000 n -0000941020 00000 n -0000941085 00000 n -0000941214 00000 n -0000941279 00000 n -0000941344 00000 n -0000945906 00000 n -0000945650 00000 n -0000941551 00000 n -0000945776 00000 n -0000945841 00000 n -0000949699 00000 n -0000949443 00000 n -0000946034 00000 n -0000949569 00000 n -0000949634 00000 n -0000952931 00000 n -0000952675 00000 n -0000949827 00000 n -0000952801 00000 n -0000952866 00000 n -0001209554 00000 n -0000955774 00000 n -0000955130 00000 n -0000953059 00000 n -0000955256 00000 n -0000955321 00000 n -0000955386 00000 n -0000955451 00000 n -0000955645 00000 n -0000955710 00000 n -0000959545 00000 n -0000959160 00000 n -0000955943 00000 n -0000959286 00000 n -0000959351 00000 n -0000959416 00000 n -0000959480 00000 n -0000963344 00000 n -0000963153 00000 n -0000959701 00000 n -0000963279 00000 n -0000966803 00000 n -0000966612 00000 n -0000963499 00000 n -0000966738 00000 n -0000970536 00000 n -0000970151 00000 n -0000966973 00000 n -0000970277 00000 n -0000970342 00000 n -0000970407 00000 n -0000970472 00000 n -0000974297 00000 n -0000973718 00000 n -0000970706 00000 n -0000973844 00000 n -0000973973 00000 n -0000974038 00000 n -0000974103 00000 n +0000938528 00000 n +0000936058 00000 n +0000938654 00000 n +0000938719 00000 n +0000938784 00000 n +0000938849 00000 n +0000941620 00000 n +0000940652 00000 n +0000939154 00000 n +0000940778 00000 n +0000940843 00000 n +0000940908 00000 n +0000941037 00000 n +0000941102 00000 n +0000941167 00000 n +0000941232 00000 n +0000941297 00000 n +0000941362 00000 n +0000941491 00000 n +0000941556 00000 n +0000946126 00000 n +0000945805 00000 n +0000941762 00000 n +0000945931 00000 n +0000945996 00000 n +0000946061 00000 n +0000949876 00000 n +0000949620 00000 n +0000946254 00000 n +0000949746 00000 n +0000949811 00000 n +0000953293 00000 n +0000953037 00000 n +0000950004 00000 n +0000953163 00000 n +0000953228 00000 n +0001209796 00000 n +0000955872 00000 n +0000955294 00000 n +0000953421 00000 n +0000955420 00000 n +0000955485 00000 n +0000955550 00000 n +0000955614 00000 n +0000955808 00000 n +0000959715 00000 n +0000959264 00000 n +0000956027 00000 n +0000959390 00000 n +0000959455 00000 n +0000959520 00000 n +0000959585 00000 n +0000959650 00000 n +0000963219 00000 n +0000963028 00000 n +0000959871 00000 n +0000963154 00000 n +0000966745 00000 n +0000966554 00000 n +0000963361 00000 n +0000966680 00000 n +0000970638 00000 n +0000970319 00000 n +0000966914 00000 n +0000970445 00000 n +0000970510 00000 n +0000970575 00000 n +0000974428 00000 n +0000973848 00000 n +0000970808 00000 n +0000973974 00000 n +0000974039 00000 n 0000974168 00000 n 0000974233 00000 n -0001209679 00000 n -0000976570 00000 n -0000976250 00000 n -0000974439 00000 n -0000976376 00000 n -0000976441 00000 n -0000976506 00000 n -0000979962 00000 n -0000979320 00000 n -0000976726 00000 n -0000979446 00000 n -0000979511 00000 n -0000979640 00000 n -0000979705 00000 n -0000979769 00000 n -0000979833 00000 n -0000979898 00000 n -0000982914 00000 n -0000982270 00000 n -0000980104 00000 n -0000982396 00000 n -0000982461 00000 n -0000982526 00000 n -0000982591 00000 n -0000982720 00000 n -0000982785 00000 n -0000982850 00000 n -0000986636 00000 n -0000986186 00000 n -0000983084 00000 n -0000986312 00000 n -0000986377 00000 n -0000986442 00000 n -0000986507 00000 n -0000986572 00000 n -0000989181 00000 n -0000988149 00000 n -0000986792 00000 n -0000988275 00000 n -0000988404 00000 n -0000988469 00000 n -0000988534 00000 n -0000988599 00000 n -0000988664 00000 n -0000988729 00000 n -0000988857 00000 n -0000988922 00000 n -0000988987 00000 n -0000989052 00000 n -0000989117 00000 n -0000992024 00000 n -0000991185 00000 n -0000989337 00000 n -0000991311 00000 n -0000991376 00000 n -0000991441 00000 n -0000991570 00000 n -0000991635 00000 n -0000991700 00000 n -0000991765 00000 n -0000991830 00000 n -0000991895 00000 n -0000991960 00000 n -0001209804 00000 n -0000994138 00000 n -0000993428 00000 n -0000992166 00000 n -0000993554 00000 n -0000993683 00000 n -0000993748 00000 n -0000993813 00000 n -0000993878 00000 n -0000993943 00000 n -0000994008 00000 n -0000994073 00000 n -0000994379 00000 n -0001005723 00000 n -0001013312 00000 n -0001015612 00000 n -0001015581 00000 n -0001019300 00000 n -0001032096 00000 n -0001041763 00000 n -0001052498 00000 n -0001066742 00000 n -0001086248 00000 n -0001107314 00000 n -0001129464 00000 n -0001147720 00000 n -0001150567 00000 n -0001150337 00000 n -0001177985 00000 n -0001205314 00000 n -0001209893 00000 n -0001210018 00000 n -0001210144 00000 n -0001210270 00000 n -0001210396 00000 n -0001210522 00000 n -0001210621 00000 n -0001210731 00000 n -0001233005 00000 n -0001258088 00000 n -0001258129 00000 n -0001258169 00000 n -0001258303 00000 n +0000974298 00000 n +0000974363 00000 n +0001209921 00000 n +0000976675 00000 n +0000976354 00000 n +0000974570 00000 n +0000976480 00000 n +0000976545 00000 n +0000976610 00000 n +0000980081 00000 n +0000979373 00000 n +0000976817 00000 n +0000979499 00000 n +0000979564 00000 n +0000979629 00000 n +0000979758 00000 n +0000979823 00000 n +0000979887 00000 n +0000979952 00000 n +0000980016 00000 n +0000983160 00000 n +0000982517 00000 n +0000980237 00000 n +0000982643 00000 n +0000982708 00000 n +0000982773 00000 n +0000982837 00000 n +0000982966 00000 n +0000983031 00000 n +0000983096 00000 n +0000986882 00000 n +0000986432 00000 n +0000983330 00000 n +0000986558 00000 n +0000986623 00000 n +0000986688 00000 n +0000986753 00000 n +0000986818 00000 n +0000989427 00000 n +0000988395 00000 n +0000987038 00000 n +0000988521 00000 n +0000988650 00000 n +0000988715 00000 n +0000988780 00000 n +0000988845 00000 n +0000988910 00000 n +0000988975 00000 n +0000989103 00000 n +0000989168 00000 n +0000989233 00000 n +0000989298 00000 n +0000989363 00000 n +0000992270 00000 n +0000991431 00000 n +0000989583 00000 n +0000991557 00000 n +0000991622 00000 n +0000991687 00000 n +0000991816 00000 n +0000991881 00000 n +0000991946 00000 n +0000992011 00000 n +0000992076 00000 n +0000992141 00000 n +0000992206 00000 n +0001210046 00000 n +0000994384 00000 n +0000993674 00000 n +0000992412 00000 n +0000993800 00000 n +0000993929 00000 n +0000993994 00000 n +0000994059 00000 n +0000994124 00000 n +0000994189 00000 n +0000994254 00000 n +0000994319 00000 n +0000994625 00000 n +0001005969 00000 n +0001013558 00000 n +0001015857 00000 n +0001015826 00000 n +0001019544 00000 n +0001032340 00000 n +0001042006 00000 n +0001052741 00000 n +0001066985 00000 n +0001086491 00000 n +0001107557 00000 n +0001129707 00000 n +0001147963 00000 n +0001150809 00000 n +0001150579 00000 n +0001178227 00000 n +0001205556 00000 n +0001210135 00000 n +0001210260 00000 n +0001210386 00000 n +0001210512 00000 n +0001210638 00000 n +0001210764 00000 n +0001210863 00000 n +0001210973 00000 n +0001233247 00000 n +0001258330 00000 n +0001258371 00000 n +0001258411 00000 n +0001258545 00000 n trailer << /Size 2855 /Root 2853 0 R /Info 2854 0 R -/ID [<38055C2328A3A5667FC85425EA8116AC> <38055C2328A3A5667FC85425EA8116AC>] +/ID [<DB6819CF1D7B70E7D9B9B8FCBDCACBFF> <DB6819CF1D7B70E7D9B9B8FCBDCACBFF>] >> startxref -1258561 +1258803 %%EOF diff --git a/doc/arm/man.arpaname.html b/doc/arm/man.arpaname.html index 87c9822a..8f823ab0 100644 --- a/doc/arm/man.arpaname.html +++ b/doc/arm/man.arpaname.html @@ -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="id2617623"></a><h2>DESCRIPTION</h2> +<a name="id2617724"></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="id2617638"></a><h2>SEE ALSO</h2> +<a name="id2617739"></a><h2>SEE ALSO</h2> <p> <em class="citetitle">BIND 9 Administrator Reference Manual</em>. </p> </div> <div class="refsect1" lang="en"> -<a name="id2617652"></a><h2>AUTHOR</h2> +<a name="id2659054"></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 9f966efc..ddaa199a 100644 --- a/doc/arm/man.ddns-confgen.html +++ b/doc/arm/man.ddns-confgen.html @@ -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="id2650617"></a><h2>DESCRIPTION</h2> +<a name="id2650650"></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="id2650705"></a><h2>OPTIONS</h2> +<a name="id2650738"></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="id2657186"></a><h2>SEE ALSO</h2> +<a name="id2658994"></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="id2657224"></a><h2>AUTHOR</h2> +<a name="id2659032"></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 1408e3cc..2052cb6b 100644 --- a/doc/arm/man.genrandom.html +++ b/doc/arm/man.genrandom.html @@ -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="id2617748"></a><h2>DESCRIPTION</h2> +<a name="id2659150"></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="id2658928"></a><h2>ARGUMENTS</h2> +<a name="id2659165"></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="id2659057"></a><h2>SEE ALSO</h2> +<a name="id2659294"></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="id2659083"></a><h2>AUTHOR</h2> +<a name="id2659321"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/doc/arm/man.isc-hmac-fixup.html b/doc/arm/man.isc-hmac-fixup.html index 810c1942..6b60d3b2 100644 --- a/doc/arm/man.isc-hmac-fixup.html +++ b/doc/arm/man.isc-hmac-fixup.html @@ -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="id2659478"></a><h2>DESCRIPTION</h2> +<a name="id2618278"></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="id2659506"></a><h2>SECURITY CONSIDERATIONS</h2> +<a name="id2660972"></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="id2659522"></a><h2>SEE ALSO</h2> +<a name="id2660988"></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="id2659539"></a><h2>AUTHOR</h2> +<a name="id2661005"></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 1a054692..ca13940f 100644 --- a/doc/arm/man.named-checkconf.html +++ b/doc/arm/man.named-checkconf.html @@ -47,10 +47,10 @@ </div> <div class="refsynopsisdiv"> <h2>Synopsis</h2> -<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 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">-x</code>] [<code class="option">-z</code>]</p></div> </div> <div class="refsect1" lang="en"> -<a name="id2633938"></a><h2>DESCRIPTION</h2> +<a name="id2633915"></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="id2634008"></a><h2>OPTIONS</h2> +<a name="id2633986"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-h</span></dt> <dd><p> @@ -92,6 +92,16 @@ Print out the <code class="filename">named.conf</code> and included files in canonical form if no errors were detected. </p></dd> +<dt><span class="term">-x</span></dt> +<dd><p> + When printing the configuration files in canonical + form, obscure shared secrets by replacing them with + strings of question marks ('?'). This allows the + contents of <code class="filename">named.conf</code> and related + files to be shared — for example, when submitting + bug reports — without compromising private data. + This option cannot be used without <code class="option">-p</code>. + </p></dd> <dt><span class="term">-z</span></dt> <dd><p> Perform a test load of all master zones found in @@ -109,21 +119,21 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2634211"></a><h2>RETURN VALUES</h2> +<a name="id2634210"></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="id2634225"></a><h2>SEE ALSO</h2> +<a name="id2634224"></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="id2634254"></a><h2>AUTHOR</h2> +<a name="id2634253"></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 864dad04..159f005a 100644 --- a/doc/arm/man.named-checkzone.html +++ b/doc/arm/man.named-checkzone.html @@ -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">-L <em class="replaceable"><code>serial</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">-T <em class="replaceable"><code>mode</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="id2637443"></a><h2>DESCRIPTION</h2> +<a name="id2637408"></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="id2670193"></a><h2>OPTIONS</h2> +<a name="id2637458"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-d</span></dt> <dd><p> @@ -288,14 +288,14 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2671033"></a><h2>RETURN VALUES</h2> +<a name="id2670998"></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="id2671047"></a><h2>SEE ALSO</h2> +<a name="id2671080"></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>, @@ -303,7 +303,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2671148"></a><h2>AUTHOR</h2> +<a name="id2671113"></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 f7fe072f..e391a407 100644 --- a/doc/arm/man.named-journalprint.html +++ b/doc/arm/man.named-journalprint.html @@ -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="id2614838"></a><h2>DESCRIPTION</h2> +<a name="id2614871"></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="id2614884"></a><h2>SEE ALSO</h2> +<a name="id2641882"></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="id2641812"></a><h2>AUTHOR</h2> +<a name="id2641913"></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 450a118f..dc9ebe4e 100644 --- a/doc/arm/man.named.html +++ b/doc/arm/man.named.html @@ -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>#listeners</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="id2641173"></a><h2>DESCRIPTION</h2> +<a name="id2640387"></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="id2641204"></a><h2>OPTIONS</h2> +<a name="id2641442"></a><h2>OPTIONS</h2> <div class="variablelist"><dl> <dt><span class="term">-4</span></dt> <dd><p> @@ -256,7 +256,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2666437"></a><h2>SIGNALS</h2> +<a name="id2666470"></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 @@ -277,7 +277,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2666487"></a><h2>CONFIGURATION</h2> +<a name="id2673074"></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 @@ -294,7 +294,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2673090"></a><h2>FILES</h2> +<a name="id2673123"></a><h2>FILES</h2> <div class="variablelist"><dl> <dt><span class="term"><code class="filename">/etc/named.conf</code></span></dt> <dd><p> @@ -307,7 +307,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2673133"></a><h2>SEE ALSO</h2> +<a name="id2673166"></a><h2>SEE ALSO</h2> <p><em class="citetitle">RFC 1033</em>, <em class="citetitle">RFC 1034</em>, <em class="citetitle">RFC 1035</em>, @@ -320,7 +320,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2673204"></a><h2>AUTHOR</h2> +<a name="id2673237"></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 d65d0fbd..9f6215c3 100644 --- a/doc/arm/man.nsec3hash.html +++ b/doc/arm/man.nsec3hash.html @@ -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="id2618282"></a><h2>DESCRIPTION</h2> +<a name="id2661050"></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="id2618297"></a><h2>ARGUMENTS</h2> +<a name="id2661065"></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="id2659660"></a><h2>SEE ALSO</h2> +<a name="id2661127"></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="id2659677"></a><h2>AUTHOR</h2> +<a name="id2661144"></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 4a1ad3c0..03c5f554 100644 --- a/doc/arm/man.nsupdate.html +++ b/doc/arm/man.nsupdate.html @@ -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="id2642071"></a><h2>DESCRIPTION</h2> +<a name="id2642172"></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="id2642610"></a><h2>INPUT FORMAT</h2> +<a name="id2642574"></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="id2674327"></a><h2>EXAMPLES</h2> +<a name="id2674292"></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="id2674377"></a><h2>FILES</h2> +<a name="id2674342"></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="id2674460"></a><h2>SEE ALSO</h2> +<a name="id2674425"></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="id2674518"></a><h2>BUGS</h2> +<a name="id2674483"></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 c490d072..d394e083 100644 --- a/doc/arm/man.rndc-confgen.html +++ b/doc/arm/man.rndc-confgen.html @@ -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="id2648657"></a><h2>DESCRIPTION</h2> +<a name="id2647597"></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="id2649952"></a><h2>OPTIONS</h2> +<a name="id2649916"></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="id2650338"></a><h2>EXAMPLES</h2> +<a name="id2650507"></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="id2659337"></a><h2>SEE ALSO</h2> +<a name="id2650564"></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="id2659376"></a><h2>AUTHOR</h2> +<a name="id2659545"></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 140f16ec..9dcb4516 100644 --- a/doc/arm/man.rndc.conf.html +++ b/doc/arm/man.rndc.conf.html @@ -50,7 +50,7 @@ <div class="cmdsynopsis"><p><code class="command">rndc.conf</code> </p></div> </div> <div class="refsect1" lang="en"> -<a name="id2615606"></a><h2>DESCRIPTION</h2> +<a name="id2644379"></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="id2645132"></a><h2>EXAMPLE</h2> +<a name="id2644551"></a><h2>EXAMPLE</h2> <pre class="programlisting"> options { default-server localhost; @@ -209,7 +209,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2646073"></a><h2>NAME SERVER CONFIGURATION</h2> +<a name="id2645014"></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="id2646099"></a><h2>SEE ALSO</h2> +<a name="id2645040"></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="id2646137"></a><h2>AUTHOR</h2> +<a name="id2645078"></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 307603a1..3a22cb1a 100644 --- a/doc/arm/man.rndc.html +++ b/doc/arm/man.rndc.html @@ -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="id2643909"></a><h2>DESCRIPTION</h2> +<a name="id2642850"></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="id2643959"></a><h2>OPTIONS</h2> +<a name="id2643856"></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> @@ -145,7 +145,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2644305"></a><h2>COMMANDS</h2> +<a name="id2644201"></a><h2>COMMANDS</h2> <p> A list of commands supported by <span><strong class="command">rndc</strong></span> can be seen by running <span><strong class="command">rndc</strong></span> without arguments. @@ -498,7 +498,7 @@ </dl></div> </div> <div class="refsect1" lang="en"> -<a name="id2677836"></a><h2>LIMITATIONS</h2> +<a name="id2677869"></a><h2>LIMITATIONS</h2> <p> There is currently no way to provide the shared secret for a <code class="option">key_id</code> without using the configuration file. @@ -508,7 +508,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2677854"></a><h2>SEE ALSO</h2> +<a name="id2677888"></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>, @@ -518,7 +518,7 @@ </p> </div> <div class="refsect1" lang="en"> -<a name="id2677910"></a><h2>AUTHOR</h2> +<a name="id2677943"></a><h2>AUTHOR</h2> <p><span class="corpauthor">Internet Systems Consortium</span> </p> </div> diff --git a/lib/bind9/api b/lib/bind9/api index 1a861f8b..0adc934e 100644 --- a/lib/bind9/api +++ b/lib/bind9/api @@ -5,5 +5,5 @@ # 9.9: 90-109 # 9.9-sub: 130-139 LIBINTERFACE = 90 -LIBREVISION = 8 +LIBREVISION = 9 LIBAGE = 0 diff --git a/lib/bind9/check.c b/lib/bind9/check.c index 61574e81..af1b87ae 100644 --- a/lib/bind9/check.c +++ b/lib/bind9/check.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -25,6 +25,7 @@ #include <isc/base64.h> #include <isc/buffer.h> +#include <isc/file.h> #include <isc/log.h> #include <isc/mem.h> #include <isc/netaddr.h> @@ -1145,7 +1146,7 @@ validate_masters(const cfg_obj_t *obj, const cfg_obj_t *config, void *ptr; DE_CONST(stack, ptr); - memcpy(new, stack, oldsize); + memmove(new, stack, oldsize); isc_mem_put(mctx, ptr, oldsize); } stack = new; @@ -1776,6 +1777,35 @@ check_zoneconf(const cfg_obj_t *zconfig, const cfg_obj_t *voptions, } /* + * Warn if key-directory doesn't exist + */ + obj = NULL; + tresult = cfg_map_get(zoptions, "key-directory", &obj); + if (tresult == ISC_R_SUCCESS) { + const char *dir = cfg_obj_asstring(obj); + tresult = isc_file_isdirectory(dir); + switch (tresult) { + case ISC_R_SUCCESS: + break; + case ISC_R_FILENOTFOUND: + cfg_obj_log(obj, logctx, ISC_LOG_WARNING, + "key-directory: '%s' does not exist", + dir); + break; + case ISC_R_INVALIDFILE: + cfg_obj_log(obj, logctx, ISC_LOG_WARNING, + "key-directory: '%s' is not a directory", + dir); + break; + default: + cfg_obj_log(obj, logctx, ISC_LOG_WARNING, + "key-directory: '%s' %s", + dir, isc_result_totext(tresult)); + result = tresult; + } + } + + /* * Check various options. */ tresult = check_options(zoptions, logctx, mctx, optlevel_zone); diff --git a/lib/dns/acl.c b/lib/dns/acl.c index 3221d30c..dbc6f9cb 100644 --- a/lib/dns/acl.c +++ b/lib/dns/acl.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -291,8 +291,8 @@ dns_acl_merge(dns_acl_t *dest, dns_acl_t *source, isc_boolean_t pos) return (ISC_R_NOMEMORY); /* Copy in the original elements */ - memcpy(newmem, dest->elements, - dest->length * sizeof(dns_aclelement_t)); + memmove(newmem, dest->elements, + dest->length * sizeof(dns_aclelement_t)); /* Release the memory for the old elements array */ isc_mem_put(dest->mctx, dest->elements, diff --git a/lib/dns/adb.c b/lib/dns/adb.c index ef7875dc..10d51bc4 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -852,12 +852,12 @@ import_rdataset(dns_adbname_t *adbname, dns_rdataset_t *rdataset, dns_rdataset_current(rdataset, &rdata); if (rdtype == dns_rdatatype_a) { INSIST(rdata.length == 4); - memcpy(&ina.s_addr, rdata.data, 4); + memmove(&ina.s_addr, rdata.data, 4); isc_sockaddr_fromin(&sockaddr, &ina, 0); hookhead = &adbname->v4; } else { INSIST(rdata.length == 16); - memcpy(in6a.s6_addr, rdata.data, 16); + memmove(in6a.s6_addr, rdata.data, 16); isc_sockaddr_fromin6(&sockaddr, &in6a, 0); hookhead = &adbname->v6; } diff --git a/lib/dns/api b/lib/dns/api index d43a04be..1bf8d3fa 100644 --- a/lib/dns/api +++ b/lib/dns/api @@ -5,5 +5,5 @@ # 9.9: 90-109 # 9.9-sub: 130-139 LIBINTERFACE = 102 -LIBREVISION = 0 +LIBREVISION = 1 LIBAGE = 2 diff --git a/lib/dns/diff.c b/lib/dns/diff.c index 20f8e3c0..4517dade 100644 --- a/lib/dns/diff.c +++ b/lib/dns/diff.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2011, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2011, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -79,7 +79,7 @@ dns_difftuple_create(isc_mem_t *mctx, datap = (unsigned char *)(t + 1); - memcpy(datap, name->ndata, name->length); + memmove(datap, name->ndata, name->length); dns_name_init(&t->name, NULL); dns_name_clone(name, &t->name); t->name.ndata = datap; @@ -87,7 +87,7 @@ dns_difftuple_create(isc_mem_t *mctx, t->ttl = ttl; - memcpy(datap, rdata->data, rdata->length); + memmove(datap, rdata->data, rdata->length); dns_rdata_init(&t->rdata); dns_rdata_clone(rdata, &t->rdata); t->rdata.data = datap; diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c index 5063914a..77010414 100644 --- a/lib/dns/dispatch.c +++ b/lib/dns/dispatch.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -706,8 +706,8 @@ destroy_disp_ok(dns_dispatch_t *disp) /* * Called when refcount reaches 0 (and safe to destroy). * - * The dispatcher must not be locked. - * The manager must be locked. + * The dispatcher must be locked. + * The manager must not be locked. */ static void destroy_disp(isc_task_t *task, isc_event_t *event) { @@ -832,6 +832,7 @@ socket_search(dns_qid_t *qid, isc_sockaddr_t *dest, in_port_t port, { dispsocket_t *dispsock; + REQUIRE(VALID_QID(qid)); REQUIRE(bucket < qid->qid_nbuckets); dispsock = ISC_LIST_HEAD(qid->sock_table[bucket]); @@ -1076,6 +1077,7 @@ entry_search(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id, { dns_dispentry_t *res; + REQUIRE(VALID_QID(qid)); REQUIRE(bucket < qid->qid_nbuckets); res = ISC_LIST_HEAD(qid->qid_table[bucket]); @@ -1428,8 +1430,8 @@ udp_recv(isc_event_t *ev_in, dns_dispatch_t *disp, dispsocket_t *dispsock) { } /* - * If both dispatches are bound to an address then fail as - * the addresses can't be equal (enforced by the IP stack). + * If each dispatch is bound to a different address + * then fail. * * Note under Linux a packet can be sent out via IPv4 socket * and the response be received via a IPv6 socket. @@ -1444,7 +1446,8 @@ udp_recv(isc_event_t *ev_in, dns_dispatch_t *disp, dispsocket_t *dispsock) { } isc_sockaddr_anyofpf(&a1, isc_sockaddr_pf(&resp->disp->local)); isc_sockaddr_anyofpf(&a2, isc_sockaddr_pf(&disp->local)); - if (!isc_sockaddr_eqaddr(&a1, &resp->disp->local) && + if (!isc_sockaddr_eqaddr(&disp->local, &resp->disp->local) && + !isc_sockaddr_eqaddr(&a1, &resp->disp->local) && !isc_sockaddr_eqaddr(&a2, &disp->local)) { free_buffer(disp, ev->region.base, ev->region.length); goto unlock; @@ -2647,8 +2650,7 @@ dispatch_allocate(dns_dispatchmgr_t *mgr, unsigned int maxrequests, * MUST be unlocked, and not used by anything. */ static void -dispatch_free(dns_dispatch_t **dispp) -{ +dispatch_free(dns_dispatch_t **dispp) { dns_dispatch_t *disp; dns_dispatchmgr_t *mgr; int i; @@ -3311,17 +3313,17 @@ dns_dispatch_addresponse2(dns_dispatch_t *disp, isc_sockaddr_t *dest, */ LOCK(&qid->lock); id = (dns_messageid_t)dispatch_random(DISP_ARC4CTX(disp)); - bucket = dns_hash(qid, dest, id, localport); ok = ISC_FALSE; - for (i = 0; i < 64; i++) { + i = 0; + do { + bucket = dns_hash(qid, dest, id, localport); if (entry_search(qid, dest, id, localport, bucket) == NULL) { ok = ISC_TRUE; break; } id += qid->qid_increment; id &= 0x0000ffff; - bucket = dns_hash(qid, dest, id, localport); - } + } while (i++ < 64); UNLOCK(&qid->lock); if (!ok) { @@ -3331,9 +3333,9 @@ dns_dispatch_addresponse2(dns_dispatch_t *disp, isc_sockaddr_t *dest, res = isc_mempool_get(disp->mgr->rpool); if (res == NULL) { - UNLOCK(&disp->lock); if (dispsocket != NULL) destroy_dispsocket(disp, &dispsocket); + UNLOCK(&disp->lock); return (ISC_R_NOMEMORY); } @@ -3708,7 +3710,7 @@ dns_dispatch_importrecv(dns_dispatch_t *disp, isc_event_t *event) { isc_event_free(ISC_EVENT_PTR(&newsevent)); return; } - memcpy(buf, sevent->region.base, sevent->n); + memmove(buf, sevent->region.base, sevent->n); newsevent->region.base = buf; newsevent->region.length = disp->mgr->buffersize; newsevent->n = sevent->n; diff --git a/lib/dns/dns64.c b/lib/dns/dns64.c index 78eff579..7d47c669 100644 --- a/lib/dns/dns64.c +++ b/lib/dns/dns64.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010, 2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2010, 2011, 2014 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 @@ -83,10 +83,10 @@ dns_dns64_create(isc_mem_t *mctx, isc_netaddr_t *prefix, if (new == NULL) return (ISC_R_NOMEMORY); memset(new->bits, 0, sizeof(new->bits)); - memcpy(new->bits, prefix->type.in6.s6_addr, prefixlen / 8); + memmove(new->bits, prefix->type.in6.s6_addr, prefixlen / 8); if (suffix != NULL) - memcpy(new->bits + nbytes, suffix->type.in6.s6_addr + nbytes, - 16 - nbytes); + memmove(new->bits + nbytes, suffix->type.in6.s6_addr + nbytes, + 16 - nbytes); new->clients = NULL; if (clients != NULL) dns_acl_attach(clients, &new->clients); @@ -155,7 +155,7 @@ dns_dns64_aaaafroma(const dns_dns64_t *dns64, const isc_netaddr_t *reqaddr, struct in_addr ina; isc_netaddr_t netaddr; - memcpy(&ina.s_addr, a, 4); + memmove(&ina.s_addr, a, 4); isc_netaddr_fromin(&netaddr, &ina); result = dns_acl_match(&netaddr, NULL, dns64->mapped, env, &match, NULL); @@ -168,7 +168,7 @@ dns_dns64_aaaafroma(const dns_dns64_t *dns64, const isc_netaddr_t *reqaddr, nbytes = dns64->prefixlen / 8; INSIST(nbytes <= 12); /* Copy prefix. */ - memcpy(aaaa, dns64->bits, nbytes); + memmove(aaaa, dns64->bits, nbytes); /* Bits 64-71 are zeros. draft-ietf-behave-address-format-04 */ if (nbytes == 8) aaaa[nbytes++] = 0; @@ -180,7 +180,7 @@ dns_dns64_aaaafroma(const dns_dns64_t *dns64, const isc_netaddr_t *reqaddr, aaaa[nbytes++] = 0; } /* Copy suffix. */ - memcpy(aaaa + nbytes, dns64->bits + nbytes, 16 - nbytes); + memmove(aaaa + nbytes, dns64->bits + nbytes, 16 - nbytes); return (ISC_R_SUCCESS); } @@ -268,7 +268,7 @@ dns_dns64_aaaaok(const dns_dns64_t *dns64, const isc_netaddr_t *reqaddr, if (aaaaok == NULL || !aaaaok[i]) { dns_rdataset_current(rdataset, &rdata); - memcpy(&in6.s6_addr, rdata.data, 16); + memmove(&in6.s6_addr, rdata.data, 16); isc_netaddr_fromin6(&netaddr, &in6); result = dns_acl_match(&netaddr, NULL, diff --git a/lib/dns/dnssec.c b/lib/dns/dnssec.c index 2a4ab4f6..d7addc68 100644 --- a/lib/dns/dnssec.c +++ b/lib/dns/dnssec.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -295,7 +295,7 @@ dns_dnssec_sign(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key, * Create an envelope for each rdata: <name|type|class|ttl>. */ isc_buffer_init(&envbuf, data, sizeof(data)); - memcpy(data, r.base, r.length); + memmove(data, r.base, r.length); isc_buffer_add(&envbuf, r.length); isc_buffer_putuint16(&envbuf, set->type); isc_buffer_putuint16(&envbuf, set->rdclass); @@ -501,10 +501,10 @@ dns_dnssec_verify3(dns_name_t *name, dns_rdataset_t *set, dst_key_t *key, if (labels - sig.labels > 0) { isc_buffer_putuint8(&envbuf, 1); isc_buffer_putuint8(&envbuf, '*'); - memcpy(data + 2, r.base, r.length); + memmove(data + 2, r.base, r.length); } else - memcpy(data, r.base, r.length); + memmove(data, r.base, r.length); isc_buffer_add(&envbuf, r.length); isc_buffer_putuint16(&envbuf, set->type); isc_buffer_putuint16(&envbuf, set->rdclass); @@ -1040,14 +1040,14 @@ dns_dnssec_verifymessage(isc_buffer_t *source, dns_message_t *msg, /* * Extract the header. */ - memcpy(header, source_r.base, DNS_MESSAGE_HEADERLEN); + memmove(header, source_r.base, DNS_MESSAGE_HEADERLEN); /* * Decrement the additional field counter. */ - memcpy(&addcount, &header[DNS_MESSAGE_HEADERLEN - 2], 2); + memmove(&addcount, &header[DNS_MESSAGE_HEADERLEN - 2], 2); addcount = htons((isc_uint16_t)(ntohs(addcount) - 1)); - memcpy(&header[DNS_MESSAGE_HEADERLEN - 2], &addcount, 2); + memmove(&header[DNS_MESSAGE_HEADERLEN - 2], &addcount, 2); /* * Digest the modified header. diff --git a/lib/dns/gssapi_link.c b/lib/dns/gssapi_link.c index fab12153..2927b676 100644 --- a/lib/dns/gssapi_link.c +++ b/lib/dns/gssapi_link.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -216,7 +216,7 @@ gssapi_verify(dst_context_t *dctx, const isc_region_t *sig) { buf = isc_mem_allocate(dst__memory_pool, sig->length); if (buf == NULL) return (ISC_R_FAILURE); - memcpy(buf, sig->base, sig->length); + memmove(buf, sig->base, sig->length); r.base = buf; r.length = sig->length; REGION_TO_GBUFFER(r, gsig); diff --git a/lib/dns/hmac_link.c b/lib/dns/hmac_link.c index 1f1a0ca6..d99c5fb0 100644 --- a/lib/dns/hmac_link.c +++ b/lib/dns/hmac_link.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2014 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 @@ -228,9 +228,8 @@ hmacmd5_fromdns(dst_key_t *key, isc_buffer_t *data) { isc_md5_update(&md5ctx, r.base, r.length); isc_md5_final(&md5ctx, hkey->key); keylen = ISC_MD5_DIGESTLENGTH; - } - else { - memcpy(hkey->key, r.base, r.length); + } else { + memmove(hkey->key, r.base, r.length); keylen = r.length; } @@ -505,9 +504,8 @@ hmacsha1_fromdns(dst_key_t *key, isc_buffer_t *data) { isc_sha1_update(&sha1ctx, r.base, r.length); isc_sha1_final(&sha1ctx, hkey->key); keylen = ISC_SHA1_DIGESTLENGTH; - } - else { - memcpy(hkey->key, r.base, r.length); + } else { + memmove(hkey->key, r.base, r.length); keylen = r.length; } @@ -784,9 +782,8 @@ hmacsha224_fromdns(dst_key_t *key, isc_buffer_t *data) { isc_sha224_update(&sha224ctx, r.base, r.length); isc_sha224_final(hkey->key, &sha224ctx); keylen = ISC_SHA224_DIGESTLENGTH; - } - else { - memcpy(hkey->key, r.base, r.length); + } else { + memmove(hkey->key, r.base, r.length); keylen = r.length; } @@ -1063,9 +1060,8 @@ hmacsha256_fromdns(dst_key_t *key, isc_buffer_t *data) { isc_sha256_update(&sha256ctx, r.base, r.length); isc_sha256_final(hkey->key, &sha256ctx); keylen = ISC_SHA256_DIGESTLENGTH; - } - else { - memcpy(hkey->key, r.base, r.length); + } else { + memmove(hkey->key, r.base, r.length); keylen = r.length; } @@ -1342,9 +1338,8 @@ hmacsha384_fromdns(dst_key_t *key, isc_buffer_t *data) { isc_sha384_update(&sha384ctx, r.base, r.length); isc_sha384_final(hkey->key, &sha384ctx); keylen = ISC_SHA384_DIGESTLENGTH; - } - else { - memcpy(hkey->key, r.base, r.length); + } else { + memmove(hkey->key, r.base, r.length); keylen = r.length; } @@ -1621,9 +1616,8 @@ hmacsha512_fromdns(dst_key_t *key, isc_buffer_t *data) { isc_sha512_update(&sha512ctx, r.base, r.length); isc_sha512_final(hkey->key, &sha512ctx); keylen = ISC_SHA512_DIGESTLENGTH; - } - else { - memcpy(hkey->key, r.base, r.length); + } else { + memmove(hkey->key, r.base, r.length); keylen = r.length; } diff --git a/lib/dns/journal.c b/lib/dns/journal.c index 47b64922..2d0b3f5f 100644 --- a/lib/dns/journal.c +++ b/lib/dns/journal.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2011, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2011, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -357,7 +357,7 @@ journal_pos_encode(journal_rawpos_t *raw, journal_pos_t *cooked) { static void journal_header_decode(journal_rawheader_t *raw, journal_header_t *cooked) { INSIST(sizeof(cooked->format) == sizeof(raw->h.format)); - memcpy(cooked->format, raw->h.format, sizeof(cooked->format)); + memmove(cooked->format, raw->h.format, sizeof(cooked->format)); journal_pos_decode(&raw->h.begin, &cooked->begin); journal_pos_decode(&raw->h.end, &cooked->end); cooked->index_size = decode_uint32(raw->h.index_size); @@ -371,7 +371,7 @@ journal_header_encode(journal_header_t *cooked, journal_rawheader_t *raw) { INSIST(sizeof(cooked->format) == sizeof(raw->h.format)); memset(raw->pad, 0, sizeof(raw->pad)); - memcpy(raw->h.format, cooked->format, sizeof(raw->h.format)); + memmove(raw->h.format, cooked->format, sizeof(raw->h.format)); journal_pos_encode(&raw->h.begin, &cooked->begin); journal_pos_encode(&raw->h.end, &cooked->end); encode_uint32(cooked->index_size, raw->h.index_size); @@ -528,7 +528,7 @@ journal_file_create(isc_mem_t *mctx, const char *filename) { return (ISC_R_NOMEMORY); } memset(mem, 0, size); - memcpy(mem, &rawheader, sizeof(rawheader)); + memmove(mem, &rawheader, sizeof(rawheader)); result = isc_stdio_write(mem, 1, (size_t) size, fp, NULL); if (result != ISC_R_SUCCESS) { diff --git a/lib/dns/keydata.c b/lib/dns/keydata.c index 822bd467..cb1ed38d 100644 --- a/lib/dns/keydata.c +++ b/lib/dns/keydata.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2014 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 @@ -51,7 +51,7 @@ dns_keydata_todnskey(dns_rdata_keydata_t *keydata, dnskey->data = isc_mem_allocate(mctx, dnskey->datalen); if (dnskey->data == NULL) return (ISC_R_NOMEMORY); - memcpy(dnskey->data, keydata->data, dnskey->datalen); + memmove(dnskey->data, keydata->data, dnskey->datalen); } return (ISC_R_SUCCESS); @@ -82,7 +82,7 @@ dns_keydata_fromdnskey(dns_rdata_keydata_t *keydata, keydata->data = isc_mem_allocate(mctx, keydata->datalen); if (keydata->data == NULL) return (ISC_R_NOMEMORY); - memcpy(keydata->data, dnskey->data, keydata->datalen); + memmove(keydata->data, dnskey->data, keydata->datalen); } return (ISC_R_SUCCESS); diff --git a/lib/dns/masterdump.c b/lib/dns/masterdump.c index 9d2f0a38..01f797cb 100644 --- a/lib/dns/masterdump.c +++ b/lib/dns/masterdump.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -247,7 +247,7 @@ indent(unsigned int *current, unsigned int to, int tabwidth, int n = t; if (n > N_TABS) n = N_TABS; - memcpy(p, tabs, n); + memmove(p, tabs, n); p += n; t -= n; } @@ -268,7 +268,7 @@ indent(unsigned int *current, unsigned int to, int tabwidth, int n = t; if (n > N_SPACES) n = N_SPACES; - memcpy(p, spaces, n); + memmove(p, spaces, n); p += n; t -= n; } @@ -358,7 +358,7 @@ str_totext(const char *source, isc_buffer_t *target) { if (l > region.length) return (ISC_R_NOSPACE); - memcpy(region.base, source, l); + memmove(region.base, source, l); isc_buffer_add(target, l); return (ISC_R_SUCCESS); } @@ -475,7 +475,7 @@ rdataset_totext(dns_rdataset_t *rdataset, isc_buffer_availableregion(target, &r); if (r.length < length) return (ISC_R_NOSPACE); - memcpy(r.base, ttlbuf, length); + memmove(r.base, ttlbuf, length); isc_buffer_add(target, length); column += length; diff --git a/lib/dns/message.c b/lib/dns/message.c index e58ec186..901c6b6d 100644 --- a/lib/dns/message.c +++ b/lib/dns/message.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1675,8 +1675,8 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, msg->saved.base = isc_mem_get(msg->mctx, msg->saved.length); if (msg->saved.base == NULL) return (ISC_R_NOMEMORY); - memcpy(msg->saved.base, isc_buffer_base(&origsource), - msg->saved.length); + memmove(msg->saved.base, isc_buffer_base(&origsource), + msg->saved.length); msg->free_saved = 1; } @@ -1748,7 +1748,7 @@ dns_message_renderchangebuffer(dns_message_t *msg, isc_buffer_t *buffer) { * Copy the contents from the old to the new buffer. */ isc_buffer_add(buffer, r.length); - memcpy(rn.base, r.base, r.length); + memmove(rn.base, r.base, r.length); msg->buffer = buffer; diff --git a/lib/dns/name.c b/lib/dns/name.c index 4fcabb11..fd768d0f 100644 --- a/lib/dns/name.c +++ b/lib/dns/name.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -971,8 +971,8 @@ dns_name_clone(const dns_name_t *source, dns_name_t *target) { DNS_NAMEATTR_DYNOFFSETS); if (target->offsets != NULL && source->labels > 0) { if (source->offsets != NULL) - memcpy(target->offsets, source->offsets, - source->labels); + memmove(target->offsets, source->offsets, + source->labels); else set_offsets(target, target->offsets, NULL); } @@ -1001,7 +1001,7 @@ dns_name_fromregion(dns_name_t *name, const isc_region_t *r) { len = (r->length < r2.length) ? r->length : r2.length; if (len > DNS_NAME_MAXWIRE) len = DNS_NAME_MAXWIRE; - memcpy(r2.base, r->base, len); + memmove(r2.base, r->base, len); name->ndata = r2.base; name->length = len; } else { @@ -1985,8 +1985,8 @@ dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, if (gf) { if (target->length - target->used < gp.length) return (ISC_R_NOSPACE); - (void)memcpy((unsigned char *)target->base + target->used, - gp.ndata, (size_t)gp.length); + (void)memmove((unsigned char *)target->base + target->used, + gp.ndata, (size_t)gp.length); isc_buffer_add(target, gp.length); go |= 0xc000; if (target->length - target->used < 2) @@ -1997,8 +1997,8 @@ dns_name_towire(const dns_name_t *name, dns_compress_t *cctx, } else { if (target->length - target->used < name->length) return (ISC_R_NOSPACE); - (void)memcpy((unsigned char *)target->base + target->used, - name->ndata, (size_t)name->length); + (void)memmove((unsigned char *)target->base + target->used, + name->ndata, (size_t)name->length); isc_buffer_add(target, name->length); dns_compress_add(cctx, name, name, offset); } @@ -2082,8 +2082,8 @@ dns_name_concatenate(dns_name_t *prefix, dns_name_t *suffix, dns_name_t *name, memmove(ndata + prefix_length, suffix->ndata, suffix->length); else - memcpy(ndata + prefix_length, suffix->ndata, - suffix->length); + memmove(ndata + prefix_length, suffix->ndata, + suffix->length); } /* @@ -2092,7 +2092,7 @@ dns_name_concatenate(dns_name_t *prefix, dns_name_t *suffix, dns_name_t *name, * copy anything. */ if (copy_prefix && (prefix != name || prefix->buffer != target)) - memcpy(ndata, prefix->ndata, prefix_length); + memmove(ndata, prefix->ndata, prefix_length); name->ndata = ndata; name->labels = labels; @@ -2166,7 +2166,7 @@ dns_name_dup(const dns_name_t *source, isc_mem_t *mctx, if (target->ndata == NULL) return (ISC_R_NOMEMORY); - memcpy(target->ndata, source->ndata, source->length); + memmove(target->ndata, source->ndata, source->length); target->length = source->length; target->labels = source->labels; @@ -2175,8 +2175,8 @@ dns_name_dup(const dns_name_t *source, isc_mem_t *mctx, target->attributes |= DNS_NAMEATTR_ABSOLUTE; if (target->offsets != NULL) { if (source->offsets != NULL) - memcpy(target->offsets, source->offsets, - source->labels); + memmove(target->offsets, source->offsets, + source->labels); else set_offsets(target, target->offsets, NULL); } @@ -2208,7 +2208,7 @@ dns_name_dupwithoffsets(dns_name_t *source, isc_mem_t *mctx, if (target->ndata == NULL) return (ISC_R_NOMEMORY); - memcpy(target->ndata, source->ndata, source->length); + memmove(target->ndata, source->ndata, source->length); target->length = source->length; target->labels = source->labels; @@ -2218,7 +2218,7 @@ dns_name_dupwithoffsets(dns_name_t *source, isc_mem_t *mctx, target->attributes |= DNS_NAMEATTR_ABSOLUTE; target->offsets = target->ndata + source->length; if (source->offsets != NULL) - memcpy(target->offsets, source->offsets, source->labels); + memmove(target->offsets, source->offsets, source->labels); else set_offsets(target, target->offsets, NULL); @@ -2398,7 +2398,7 @@ dns_name_tostring(dns_name_t *name, char **target, isc_mem_t *mctx) { isc_buffer_usedregion(&buf, ®); p = isc_mem_allocate(mctx, reg.length + 1); - memcpy(p, (char *) reg.base, (int) reg.length); + memmove(p, (char *) reg.base, (int) reg.length); p[reg.length] = '\0'; *target = p; @@ -2474,7 +2474,7 @@ dns_name_copy(dns_name_t *source, dns_name_t *dest, isc_buffer_t *target) { ndata = (unsigned char *)target->base + target->used; dest->ndata = target->base; - memcpy(ndata, source->ndata, source->length); + memmove(ndata, source->ndata, source->length); dest->ndata = ndata; dest->labels = source->labels; @@ -2486,7 +2486,7 @@ dns_name_copy(dns_name_t *source, dns_name_t *dest, isc_buffer_t *target) { if (dest->labels > 0 && dest->offsets != NULL) { if (source->offsets != NULL) - memcpy(dest->offsets, source->offsets, source->labels); + memmove(dest->offsets, source->offsets, source->labels); else set_offsets(dest, dest->offsets, NULL); } diff --git a/lib/dns/nsec.c b/lib/dns/nsec.c index 8821311f..5d1197d0 100644 --- a/lib/dns/nsec.c +++ b/lib/dns/nsec.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2011-2014 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 @@ -115,7 +115,7 @@ dns_nsec_buildrdata(dns_db_t *db, dns_dbversion_t *version, memset(buffer, 0, DNS_NSEC_BUFFERSIZE); dns_name_toregion(target, &r); - memcpy(buffer, r.base, r.length); + memmove(buffer, r.base, r.length); r.base = buffer; /* * Use the end of the space for a raw bitmap leaving enough diff --git a/lib/dns/nsec3.c b/lib/dns/nsec3.c index 2e25729c..3724118c 100644 --- a/lib/dns/nsec3.c +++ b/lib/dns/nsec3.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2008-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2006, 2008-2014 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 @@ -98,11 +98,11 @@ dns_nsec3_buildrdata(dns_db_t *db, dns_dbversion_t *version, *p++ = iterations; *p++ = (unsigned char)salt_length; - memcpy(p, salt, salt_length); + memmove(p, salt, salt_length); p += salt_length; *p++ = (unsigned char)hash_length; - memcpy(p, nexthash, hash_length); + memmove(p, nexthash, hash_length); p += hash_length; r.length = (unsigned int)(p - buffer); @@ -591,7 +591,7 @@ dns_nsec3_addnsec3(dns_db_t *db, dns_dbversion_t *version, flags = nsec3.flags; next_length = nsec3.next_length; INSIST(next_length <= sizeof(nexthash)); - memcpy(nexthash, nsec3.next, next_length); + memmove(nexthash, nsec3.next, next_length); dns_rdataset_disassociate(&rdataset); /* * If the NSEC3 is not for a unsecure delegation then @@ -688,7 +688,7 @@ dns_nsec3_addnsec3(dns_db_t *db, dns_dbversion_t *version, rdataset.ttl, &rdata, &tuple)); CHECK(do_one_tuple(&tuple, db, version, diff)); INSIST(old_length <= sizeof(nexthash)); - memcpy(nexthash, old_next, old_length); + memmove(nexthash, old_next, old_length); if (!CREATE(nsec3param->flags)) flags = nsec3.flags; dns_rdata_reset(&rdata); @@ -809,7 +809,7 @@ dns_nsec3_addnsec3(dns_db_t *db, dns_dbversion_t *version, &tuple)); CHECK(do_one_tuple(&tuple, db, version, diff)); INSIST(old_length <= sizeof(nexthash)); - memcpy(nexthash, old_next, old_length); + memmove(nexthash, old_next, old_length); if (!CREATE(nsec3param->flags)) flags = nsec3.flags; dns_rdata_reset(&rdata); @@ -958,7 +958,7 @@ dns_nsec3param_toprivate(dns_rdata_t *src, dns_rdata_t *target, REQUIRE(DNS_RDATA_INITIALIZED(target)); - memcpy(buf + 1, src->data, src->length); + memmove(buf + 1, src->data, src->length); buf[0] = 0; target->data = buf; target->length = src->length + 1; @@ -1097,7 +1097,7 @@ dns_nsec3param_deletechains(dns_db_t *db, dns_dbversion_t *ver, dns_rdata_reset(&rdata); dns_rdataset_current(&rdataset, &rdata); INSIST(rdata.length <= sizeof(buf)); - memcpy(buf, rdata.data, rdata.length); + memmove(buf, rdata.data, rdata.length); /* * Private NSEC3 record length >= 6. @@ -1361,7 +1361,7 @@ dns_nsec3_delnsec3(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name, if (result == ISC_R_SUCCESS) { next_length = nsec3.next_length; INSIST(next_length <= sizeof(nexthash)); - memcpy(nexthash, nsec3.next, next_length); + memmove(nexthash, nsec3.next, next_length); } dns_rdataset_disassociate(&rdataset); if (result == ISC_R_NOMORE) @@ -1464,7 +1464,7 @@ dns_nsec3_delnsec3(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name, if (result == ISC_R_SUCCESS) { next_length = nsec3.next_length; INSIST(next_length <= sizeof(nexthash)); - memcpy(nexthash, nsec3.next, next_length); + memmove(nexthash, nsec3.next, next_length); } dns_rdataset_disassociate(&rdataset); if (result == ISC_R_NOMORE) diff --git a/lib/dns/opensslecdsa_link.c b/lib/dns/opensslecdsa_link.c index 2a76c852..40081c2d 100644 --- a/lib/dns/opensslecdsa_link.c +++ b/lib/dns/opensslecdsa_link.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2012-2014 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 @@ -371,7 +371,7 @@ opensslecdsa_todns(const dst_key_t *key, isc_buffer_t *data) { cp = buf; if (!i2o_ECPublicKey(eckey, &cp)) DST_RET (dst__openssl_toresult(ISC_R_FAILURE)); - memcpy(r.base, buf + 1, len); + memmove(r.base, buf + 1, len); isc_buffer_add(data, len); ret = ISC_R_SUCCESS; @@ -414,7 +414,7 @@ opensslecdsa_fromdns(dst_key_t *key, isc_buffer_t *data) { return (dst__openssl_toresult(DST_R_OPENSSLFAILURE)); buf[0] = POINT_CONVERSION_UNCOMPRESSED; - memcpy(buf + 1, r.base, len); + memmove(buf + 1, r.base, len); cp = buf; if (o2i_ECPublicKey(&eckey, (const unsigned char **) &cp, diff --git a/lib/dns/opensslgost_link.c b/lib/dns/opensslgost_link.c index 74d86464..b0578661 100644 --- a/lib/dns/opensslgost_link.c +++ b/lib/dns/opensslgost_link.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2010-2014 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 @@ -253,7 +253,7 @@ opensslgost_todns(const dst_key_t *key, isc_buffer_t *data) { len = i2d_PUBKEY(pkey, &p); INSIST(len == sizeof(der)); INSIST(memcmp(gost_prefix, der, 37) == 0); - memcpy(r.base, der + 37, 64); + memmove(r.base, der + 37, 64); isc_buffer_add(data, 64); return (ISC_R_SUCCESS); @@ -272,8 +272,8 @@ opensslgost_fromdns(dst_key_t *key, isc_buffer_t *data) { if (r.length != 64) return (DST_R_INVALIDPUBLICKEY); - memcpy(der, gost_prefix, 37); - memcpy(der + 37, r.base, 64); + memmove(der, gost_prefix, 37); + memmove(der + 37, r.base, 64); isc_buffer_forward(data, 64); p = der; diff --git a/lib/dns/opensslrsa_link.c b/lib/dns/opensslrsa_link.c index d3454a5e..8421c640 100644 --- a/lib/dns/opensslrsa_link.c +++ b/lib/dns/opensslrsa_link.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -481,7 +481,7 @@ opensslrsa_sign(dst_context_t *dctx, isc_buffer_t *sig) { INSIST(prefixlen + digestlen <= sizeof(digest)); memmove(digest + prefixlen, digest, digestlen); - memcpy(digest, prefix, prefixlen); + memmove(digest, prefix, prefixlen); status = RSA_private_encrypt(digestlen + prefixlen, digest, r.base, rsa, RSA_PKCS1_PADDING); diff --git a/lib/dns/portlist.c b/lib/dns/portlist.c index 5bc89f48..754eef66 100644 --- a/lib/dns/portlist.c +++ b/lib/dns/portlist.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -80,7 +80,7 @@ dns_portlist_create(isc_mem_t *mctx, dns_portlist_t **portlistp) { portlist = isc_mem_get(mctx, sizeof(*portlist)); if (portlist == NULL) return (ISC_R_NOMEMORY); - result = isc_mutex_init(&portlist->lock); + result = isc_mutex_init(&portlist->lock); if (result != ISC_R_SUCCESS) { isc_mem_put(mctx, portlist, sizeof(*portlist)); return (result); @@ -111,7 +111,7 @@ find_port(dns_element_t *list, unsigned int len, in_port_t port) { for (;;) { if (list[xtry].port == port) return (&list[xtry]); - if (port > list[xtry].port) { + if (port > list[xtry].port) { if (xtry == max) break; min = xtry; @@ -164,8 +164,8 @@ dns_portlist_add(dns_portlist_t *portlist, int af, in_port_t port) { goto unlock; } if (portlist->list != NULL) { - memcpy(el, portlist->list, - portlist->allocated * sizeof(*el)); + memmove(el, portlist->list, + portlist->allocated * sizeof(*el)); isc_mem_put(portlist->mctx, portlist->list, portlist->allocated * sizeof(*el)); } @@ -215,7 +215,7 @@ isc_boolean_t dns_portlist_match(dns_portlist_t *portlist, int af, in_port_t port) { dns_element_t *el; isc_boolean_t result = ISC_FALSE; - + REQUIRE(DNS_VALID_PORTLIST(portlist)); REQUIRE(af == AF_INET || af == AF_INET6); LOCK(&portlist->lock); @@ -227,7 +227,7 @@ dns_portlist_match(dns_portlist_t *portlist, int af, in_port_t port) { if (af == AF_INET6 && (el->flags & DNS_PL_INET6) != 0) result = ISC_TRUE; } - } + } UNLOCK(&portlist->lock); return (result); } diff --git a/lib/dns/rbt.c b/lib/dns/rbt.c index 7381b4a3..d97fcce2 100644 --- a/lib/dns/rbt.c +++ b/lib/dns/rbt.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1479,8 +1479,8 @@ create_node(isc_mem_t *mctx, dns_name_t *name, dns_rbtnode_t **nodep) { OLDOFFSETLEN(node) = OFFSETLEN(node) = labels; ATTRS(node) = name->attributes; - memcpy(NAME(node), region.base, region.length); - memcpy(OFFSETS(node), name->offsets, labels); + memmove(NAME(node), region.base, region.length); + memmove(OFFSETS(node), name->offsets, labels); #if DNS_RBT_USEMAGIC node->magic = DNS_RBTNODE_MAGIC; @@ -1841,7 +1841,7 @@ dns_rbt_deletefromlevel(dns_rbtnode_t *delete, dns_rbtnode_t **rootp) { * information, which will be needed when linking up * delete to the successor's old location. */ - memcpy(tmp, successor, sizeof(dns_rbtnode_t)); + memmove(tmp, successor, sizeof(dns_rbtnode_t)); if (IS_ROOT(delete)) { *rootp = successor; diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index ebf04050..013bf34a 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1121,8 +1121,8 @@ newversion(dns_db_t *db, dns_dbversion_t **versionp) { version->hash = rbtdb->current_version->hash; version->salt_length = rbtdb->current_version->salt_length; - memcpy(version->salt, rbtdb->current_version->salt, - version->salt_length); + memmove(version->salt, rbtdb->current_version->salt, + version->salt_length); } else { version->flags = 0; version->iterations = 0; @@ -1706,8 +1706,11 @@ decrement_reference(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node, nodelock = &rbtdb->node_locks[bucket]; +#define KEEP_NODE(n, r) \ + ((n)->data != NULL || (n)->down != NULL || (n) == (r)->origin_node) + /* Handle easy and typical case first. */ - if (!node->dirty && (node->data != NULL || node->down != NULL)) { + if (!node->dirty && KEEP_NODE(node, rbtdb)) { dns_rbtnode_refdecrement(node, &nrefs); INSIST((int)nrefs >= 0); if (nrefs == 0) { @@ -1776,12 +1779,11 @@ decrement_reference(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node, isc_refcount_decrement(&nodelock->references, &refs); INSIST((int)refs >= 0); - /* - * XXXDCL should this only be done for cache zones? - */ - if (node->data != NULL || node->down != NULL) + if (KEEP_NODE(node, rbtdb)) goto restore_locks; +#undef KEEP_NODE + if (write_locked) { /* * We can now delete the node. @@ -2127,8 +2129,8 @@ setnsec3parameters(dns_db_t *db, rbtdb_version_t *version) { if (nsec3param.flags != 0) continue; - memcpy(version->salt, nsec3param.salt, - nsec3param.salt_length); + memmove(version->salt, nsec3param.salt, + nsec3param.salt_length); version->hash = nsec3param.hash; version->salt_length = nsec3param.salt_length; version->iterations = nsec3param.iterations; @@ -4626,12 +4628,12 @@ rpz_findips(dns_rpz_zone_t *rpz, dns_rpz_type_t rpz_type, switch (rdata.type) { case dns_rdatatype_a: INSIST(rdata.length == 4); - memcpy(&ina.s_addr, rdata.data, 4); + memmove(&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); + memmove(in6a.s6_addr, rdata.data, 16); isc_netaddr_fromin6(&netaddr, &in6a); break; default: @@ -7278,7 +7280,8 @@ getnsec3parameters(dns_db_t *db, dns_dbversion_t *version, dns_hash_t *hash, *hash = rbtversion->hash; if (salt != NULL && salt_length != NULL) { REQUIRE(*salt_length >= rbtversion->salt_length); - memcpy(salt, rbtversion->salt, rbtversion->salt_length); + memmove(salt, rbtversion->salt, + rbtversion->salt_length); } if (salt_length != NULL) *salt_length = rbtversion->salt_length; diff --git a/lib/dns/rcode.c b/lib/dns/rcode.c index 9dc80d50..69007f88 100644 --- a/lib/dns/rcode.c +++ b/lib/dns/rcode.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -194,7 +194,7 @@ str_totext(const char *source, isc_buffer_t *target) { if (l > region.length) return (ISC_R_NOSPACE); - memcpy(region.base, source, l); + memmove(region.base, source, l); isc_buffer_add(target, l); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c index f3ed6259..5bdd1255 100644 --- a/lib/dns/rdata.c +++ b/lib/dns/rdata.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -281,7 +281,7 @@ locator_pton(const char *src, unsigned char *dst) { } if (tp != endp) return (0); - memcpy(dst, tmp, NS_LOCATORSZ); + memmove(dst, tmp, NS_LOCATORSZ); return (1); } @@ -322,7 +322,7 @@ mem_maybedup(isc_mem_t *mctx, void *source, size_t length) { return (source); new = isc_mem_allocate(mctx, length); if (new != NULL) - memcpy(new, source, length); + memmove(new, source, length); return (new); } @@ -589,7 +589,7 @@ dns_rdata_towire(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_availableregion(target, &tr); if (tr.length < rdata->length) return (ISC_R_NOSPACE); - memcpy(tr.base, rdata->data, rdata->length); + memmove(tr.base, rdata->data, rdata->length); isc_buffer_add(target, rdata->length); return (ISC_R_SUCCESS); } @@ -1268,7 +1268,7 @@ txt_fromwire(isc_buffer_t *source, isc_buffer_t *target) { return (ISC_R_NOSPACE); if (tregion.base != sregion.base) - memcpy(tregion.base, sregion.base, n); + memmove(tregion.base, sregion.base, n); isc_buffer_forward(source, n); isc_buffer_add(target, n); return (ISC_R_SUCCESS); @@ -1418,7 +1418,7 @@ multitxt_fromwire(isc_buffer_t *source, isc_buffer_t *target) { return (ISC_R_NOSPACE); if (tregion.base != sregion.base) - memcpy(tregion.base, sregion.base, n); + memmove(tregion.base, sregion.base, n); isc_buffer_forward(source, n); isc_buffer_add(target, n); isc_buffer_activeregion(source, &sregion); @@ -1469,7 +1469,7 @@ str_totext(const char *source, isc_buffer_t *target) { if (l > region.length) return (ISC_R_NOSPACE); - memcpy(region.base, source, l); + memmove(region.base, source, l); isc_buffer_add(target, l); return (ISC_R_SUCCESS); } @@ -1595,7 +1595,7 @@ mem_tobuffer(isc_buffer_t *target, void *base, unsigned int length) { if (length > tr.length) return (ISC_R_NOSPACE); if (tr.base != base) - memcpy(tr.base, base, length); + memmove(tr.base, base, length); isc_buffer_add(target, length); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/ch_3/a_1.c b/lib/dns/rdata/ch_3/a_1.c index e3f98106..d25fcb50 100644 --- a/lib/dns/rdata/ch_3/a_1.c +++ b/lib/dns/rdata/ch_3/a_1.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2005, 2007, 2009, 2014 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 @@ -117,7 +117,7 @@ fromwire_ch_a(ARGS_FROMWIRE) { if (tregion.length < 2) return (ISC_R_NOSPACE); - memcpy(tregion.base, sregion.base, 2); + memmove(tregion.base, sregion.base, 2); isc_buffer_forward(source, 2); isc_buffer_add(target, 2); @@ -149,7 +149,7 @@ towire_ch_a(ARGS_TOWIRE) { if (tregion.length < 2) return (ISC_R_NOSPACE); - memcpy(tregion.base, sregion.base, 2); + memmove(tregion.base, sregion.base, 2); isc_buffer_add(target, 2); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/afsdb_18.c b/lib/dns/rdata/generic/afsdb_18.c index 279f86c6..af95fa12 100644 --- a/lib/dns/rdata/generic/afsdb_18.c +++ b/lib/dns/rdata/generic/afsdb_18.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2014 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 @@ -113,7 +113,7 @@ fromwire_afsdb(ARGS_FROMWIRE) { return (ISC_R_NOSPACE); if (sr.length < 2) return (ISC_R_UNEXPECTEDEND); - memcpy(tr.base, sr.base, 2); + memmove(tr.base, sr.base, 2); isc_buffer_forward(source, 2); isc_buffer_add(target, 2); return (dns_name_fromwire(&name, source, dctx, options, target)); @@ -134,7 +134,7 @@ towire_afsdb(ARGS_TOWIRE) { dns_rdata_toregion(rdata, &sr); if (tr.length < 2) return (ISC_R_NOSPACE); - memcpy(tr.base, sr.base, 2); + memmove(tr.base, sr.base, 2); isc_region_consume(&sr, 2); isc_buffer_add(target, 2); diff --git a/lib/dns/rdata/generic/eui48_108.c b/lib/dns/rdata/generic/eui48_108.c index 3e52fec0..b25a7b7e 100644 --- a/lib/dns/rdata/generic/eui48_108.c +++ b/lib/dns/rdata/generic/eui48_108.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2013, 2014 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 @@ -142,7 +142,7 @@ tostruct_eui48(ARGS_TOSTRUCT) { eui48->common.rdtype = rdata->type; ISC_LINK_INIT(&eui48->common, link); - memcpy(eui48->eui48, rdata->data, rdata->length); + memmove(eui48->eui48, rdata->data, rdata->length); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/eui64_109.c b/lib/dns/rdata/generic/eui64_109.c index 245994fd..33d2f637 100644 --- a/lib/dns/rdata/generic/eui64_109.c +++ b/lib/dns/rdata/generic/eui64_109.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2013, 2014 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 @@ -147,7 +147,7 @@ tostruct_eui64(ARGS_TOSTRUCT) { eui64->common.rdtype = rdata->type; ISC_LINK_INIT(&eui64->common, link); - memcpy(eui64->eui64, rdata->data, rdata->length); + memmove(eui64->eui64, rdata->data, rdata->length); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/ipseckey_45.c b/lib/dns/rdata/generic/ipseckey_45.c index 1d2508c4..230d0d1e 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, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2005, 2007, 2009, 2011, 2012, 2014 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 @@ -87,7 +87,7 @@ fromtext_ipseckey(ARGS_FROMTEXT) { isc_buffer_availableregion(target, ®ion); if (region.length < 4) return (ISC_R_NOSPACE); - memcpy(region.base, &addr, 4); + memmove(region.base, &addr, 4); isc_buffer_add(target, 4); break; @@ -97,7 +97,7 @@ fromtext_ipseckey(ARGS_FROMTEXT) { isc_buffer_availableregion(target, ®ion); if (region.length < 16) return (ISC_R_NOSPACE); - memcpy(region.base, addr6, 16); + memmove(region.base, addr6, 16); isc_buffer_add(target, 16); break; @@ -364,7 +364,7 @@ tostruct_ipseckey(ARGS_TOSTRUCT) { break; case 2: - memcpy(ipseckey->in6_addr.s6_addr, region.base, 16); + memmove(ipseckey->in6_addr.s6_addr, region.base, 16); isc_region_consume(®ion, 16); break; diff --git a/lib/dns/rdata/generic/l32_105.c b/lib/dns/rdata/generic/l32_105.c index 763ddb95..d191624e 100644 --- a/lib/dns/rdata/generic/l32_105.c +++ b/lib/dns/rdata/generic/l32_105.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2013, 2014 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 @@ -51,7 +51,7 @@ fromtext_l32(ARGS_FROMTEXT) { isc_buffer_availableregion(target, ®ion); if (region.length < 4) return (ISC_R_NOSPACE); - memcpy(region.base, &addr, 4); + memmove(region.base, &addr, 4); isc_buffer_add(target, 4); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/l64_106.c b/lib/dns/rdata/generic/l64_106.c index ff206633..d811d29a 100644 --- a/lib/dns/rdata/generic/l64_106.c +++ b/lib/dns/rdata/generic/l64_106.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2013, 2014 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 @@ -155,7 +155,7 @@ tostruct_l64(ARGS_TOSTRUCT) { dns_rdata_toregion(rdata, ®ion); l64->pref = uint16_fromregion(®ion); - memcpy(l64->l64, region.base, region.length); + memmove(l64->l64, region.base, region.length); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/nid_104.c b/lib/dns/rdata/generic/nid_104.c index c96b0bf9..39f16ed6 100644 --- a/lib/dns/rdata/generic/nid_104.c +++ b/lib/dns/rdata/generic/nid_104.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2013, 2014 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 @@ -155,7 +155,7 @@ tostruct_nid(ARGS_TOSTRUCT) { dns_rdata_toregion(rdata, ®ion); nid->pref = uint16_fromregion(®ion); - memcpy(nid->nid, region.base, region.length); + memmove(nid->nid, region.base, region.length); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/opt_41.c b/lib/dns/rdata/generic/opt_41.c index b64a6234..bd2adb5f 100644 --- a/lib/dns/rdata/generic/opt_41.c +++ b/lib/dns/rdata/generic/opt_41.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -162,7 +162,7 @@ fromwire_opt(ARGS_FROMWIRE) { isc_buffer_availableregion(target, &tregion); if (tregion.length < total) return (ISC_R_NOSPACE); - memcpy(tregion.base, sregion.base, total); + memmove(tregion.base, sregion.base, total); isc_buffer_forward(source, total); isc_buffer_add(target, total); diff --git a/lib/dns/rdata/generic/rt_21.c b/lib/dns/rdata/generic/rt_21.c index 8f71a2af..86fe2480 100644 --- a/lib/dns/rdata/generic/rt_21.c +++ b/lib/dns/rdata/generic/rt_21.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2014 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 @@ -109,7 +109,7 @@ fromwire_rt(ARGS_FROMWIRE) { return (ISC_R_NOSPACE); if (sregion.length < 2) return (ISC_R_UNEXPECTEDEND); - memcpy(tregion.base, sregion.base, 2); + memmove(tregion.base, sregion.base, 2); isc_buffer_forward(source, 2); isc_buffer_add(target, 2); return (dns_name_fromwire(&name, source, dctx, options, target)); @@ -130,7 +130,7 @@ towire_rt(ARGS_TOWIRE) { dns_rdata_toregion(rdata, ®ion); if (tr.length < 2) return (ISC_R_NOSPACE); - memcpy(tr.base, region.base, 2); + memmove(tr.base, region.base, 2); isc_region_consume(®ion, 2); isc_buffer_add(target, 2); diff --git a/lib/dns/rdata/generic/soa_6.c b/lib/dns/rdata/generic/soa_6.c index ac0a38f7..fe67d76f 100644 --- a/lib/dns/rdata/generic/soa_6.c +++ b/lib/dns/rdata/generic/soa_6.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007, 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007, 2009, 2011, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -186,7 +186,7 @@ fromwire_soa(ARGS_FROMWIRE) { if (tregion.length < 20) return (ISC_R_NOSPACE); - memcpy(tregion.base, sregion.base, 20); + memmove(tregion.base, sregion.base, 20); isc_buffer_forward(source, 20); isc_buffer_add(target, 20); @@ -224,7 +224,7 @@ towire_soa(ARGS_TOWIRE) { if (tregion.length < 20) return (ISC_R_NOSPACE); - memcpy(tregion.base, sregion.base, 20); + memmove(tregion.base, sregion.base, 20); isc_buffer_add(target, 20); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/spf_99.c b/lib/dns/rdata/generic/spf_99.c index 492e315d..c7cdfc9f 100644 --- a/lib/dns/rdata/generic/spf_99.c +++ b/lib/dns/rdata/generic/spf_99.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -103,7 +103,7 @@ towire_spf(ARGS_TOWIRE) { if (region.length < rdata->length) return (ISC_R_NOSPACE); - memcpy(region.base, rdata->data, rdata->length); + memmove(region.base, rdata->data, rdata->length); isc_buffer_add(target, rdata->length); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/txt_16.c b/lib/dns/rdata/generic/txt_16.c index e1bce6a0..76109251 100644 --- a/lib/dns/rdata/generic/txt_16.c +++ b/lib/dns/rdata/generic/txt_16.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007-2009, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007-2009, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -110,7 +110,7 @@ towire_txt(ARGS_TOWIRE) { if (region.length < rdata->length) return (ISC_R_NOSPACE); - memcpy(region.base, rdata->data, rdata->length); + memmove(region.base, rdata->data, rdata->length); isc_buffer_add(target, rdata->length); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/hs_4/a_1.c b/lib/dns/rdata/hs_4/a_1.c index 50ae25d5..5f8a8750 100644 --- a/lib/dns/rdata/hs_4/a_1.c +++ b/lib/dns/rdata/hs_4/a_1.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -48,7 +48,7 @@ fromtext_hs_a(ARGS_FROMTEXT) { isc_buffer_availableregion(target, ®ion); if (region.length < 4) return (ISC_R_NOSPACE); - memcpy(region.base, &addr, 4); + memmove(region.base, &addr, 4); isc_buffer_add(target, 4); return (ISC_R_SUCCESS); } @@ -87,7 +87,7 @@ fromwire_hs_a(ARGS_FROMWIRE) { if (tregion.length < 4) return (ISC_R_NOSPACE); - memcpy(tregion.base, sregion.base, 4); + memmove(tregion.base, sregion.base, 4); isc_buffer_forward(source, 4); isc_buffer_add(target, 4); return (ISC_R_SUCCESS); @@ -106,7 +106,7 @@ towire_hs_a(ARGS_TOWIRE) { isc_buffer_availableregion(target, ®ion); if (region.length < rdata->length) return (ISC_R_NOSPACE); - memcpy(region.base, rdata->data, rdata->length); + memmove(region.base, rdata->data, rdata->length); isc_buffer_add(target, 4); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/in_1/a6_38.c b/lib/dns/rdata/in_1/a6_38.c index 8619f8a2..b6ef6887 100644 --- a/lib/dns/rdata/in_1/a6_38.c +++ b/lib/dns/rdata/in_1/a6_38.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -122,7 +122,7 @@ totext_in_a6(ARGS_TOTEXT) { if (prefixlen != 128) { octets = prefixlen/8; memset(addr, 0, sizeof(addr)); - memcpy(&addr[octets], sr.base, 16 - octets); + memmove(&addr[octets], sr.base, 16 - octets); mask = 0xff >> (prefixlen % 8); addr[octets] &= mask; ar.base = addr; @@ -347,7 +347,7 @@ tostruct_in_a6(ARGS_TOSTRUCT) { if (a6->prefixlen != 128) { octets = 16 - a6->prefixlen / 8; INSIST(r.length >= octets); - memcpy(a6->in6_addr.s6_addr + 16 - octets, r.base, octets); + memmove(a6->in6_addr.s6_addr + 16 - octets, r.base, octets); isc_region_consume(&r, octets); } diff --git a/lib/dns/rdata/in_1/a_1.c b/lib/dns/rdata/in_1/a_1.c index 902932e0..fcdcaae0 100644 --- a/lib/dns/rdata/in_1/a_1.c +++ b/lib/dns/rdata/in_1/a_1.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -50,7 +50,7 @@ fromtext_in_a(ARGS_FROMTEXT) { isc_buffer_availableregion(target, ®ion); if (region.length < 4) return (ISC_R_NOSPACE); - memcpy(region.base, &addr, 4); + memmove(region.base, &addr, 4); isc_buffer_add(target, 4); return (ISC_R_SUCCESS); } @@ -89,7 +89,7 @@ fromwire_in_a(ARGS_FROMWIRE) { if (tregion.length < 4) return (ISC_R_NOSPACE); - memcpy(tregion.base, sregion.base, 4); + memmove(tregion.base, sregion.base, 4); isc_buffer_forward(source, 4); isc_buffer_add(target, 4); return (ISC_R_SUCCESS); @@ -108,7 +108,7 @@ towire_in_a(ARGS_TOWIRE) { isc_buffer_availableregion(target, ®ion); if (region.length < rdata->length) return (ISC_R_NOSPACE); - memcpy(region.base, rdata->data, rdata->length); + memmove(region.base, rdata->data, rdata->length); isc_buffer_add(target, 4); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/in_1/aaaa_28.c b/lib/dns/rdata/in_1/aaaa_28.c index 5aa59b2c..3f88c4db 100644 --- a/lib/dns/rdata/in_1/aaaa_28.c +++ b/lib/dns/rdata/in_1/aaaa_28.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -51,7 +51,7 @@ fromtext_in_aaaa(ARGS_FROMTEXT) { isc_buffer_availableregion(target, ®ion); if (region.length < 16) return (ISC_R_NOSPACE); - memcpy(region.base, addr, 16); + memmove(region.base, addr, 16); isc_buffer_add(target, 16); return (ISC_R_SUCCESS); } @@ -90,7 +90,7 @@ fromwire_in_aaaa(ARGS_FROMWIRE) { if (tregion.length < 16) return (ISC_R_NOSPACE); - memcpy(tregion.base, sregion.base, 16); + memmove(tregion.base, sregion.base, 16); isc_buffer_forward(source, 16); isc_buffer_add(target, 16); return (ISC_R_SUCCESS); @@ -109,7 +109,7 @@ towire_in_aaaa(ARGS_TOWIRE) { isc_buffer_availableregion(target, ®ion); if (region.length < rdata->length) return (ISC_R_NOSPACE); - memcpy(region.base, rdata->data, rdata->length); + memmove(region.base, rdata->data, rdata->length); isc_buffer_add(target, 16); return (ISC_R_SUCCESS); } @@ -165,7 +165,7 @@ tostruct_in_aaaa(ARGS_TOSTRUCT) { dns_rdata_toregion(rdata, &r); INSIST(r.length == 16); - memcpy(aaaa->in6_addr.s6_addr, r.base, 16); + memmove(aaaa->in6_addr.s6_addr, r.base, 16); return (ISC_R_SUCCESS); } diff --git a/lib/dns/rdata/in_1/apl_42.c b/lib/dns/rdata/in_1/apl_42.c index eb927b92..94133bae 100644 --- a/lib/dns/rdata/in_1/apl_42.c +++ b/lib/dns/rdata/in_1/apl_42.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -148,7 +148,7 @@ totext_in_apl(ARGS_TOTEXT) { INSIST(len <= 4); INSIST(prefix <= 32); memset(buf, 0, sizeof(buf)); - memcpy(buf, sr.base, len); + memmove(buf, sr.base, len); RETERR(inet_totext(AF_INET, &ir, target)); break; @@ -156,7 +156,7 @@ totext_in_apl(ARGS_TOTEXT) { INSIST(len <= 16); INSIST(prefix <= 128); memset(buf, 0, sizeof(buf)); - memcpy(buf, sr.base, len); + memmove(buf, sr.base, len); RETERR(inet_totext(AF_INET6, &ir, target)); break; diff --git a/lib/dns/rdata/in_1/wks_11.c b/lib/dns/rdata/in_1/wks_11.c index 12cd4a13..4587c813 100644 --- a/lib/dns/rdata/in_1/wks_11.c +++ b/lib/dns/rdata/in_1/wks_11.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007, 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007, 2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -98,7 +98,7 @@ fromtext_in_wks(ARGS_FROMTEXT) { RETTOK(DNS_R_BADDOTTEDQUAD); if (region.length < 4) return (ISC_R_NOSPACE); - memcpy(region.base, &addr, 4); + memmove(region.base, &addr, 4); isc_buffer_add(target, 4); /* @@ -222,7 +222,7 @@ fromwire_in_wks(ARGS_FROMWIRE) { if (tr.length < sr.length) return (ISC_R_NOSPACE); - memcpy(tr.base, sr.base, sr.length); + memmove(tr.base, sr.base, sr.length); isc_buffer_add(target, sr.length); isc_buffer_forward(source, sr.length); diff --git a/lib/dns/rdataslab.c b/lib/dns/rdataslab.c index c53c24c2..1c02b602 100644 --- a/lib/dns/rdataslab.c +++ b/lib/dns/rdataslab.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -318,7 +318,7 @@ dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx, *rawbuf++ |= (x[i].rdata.flags & DNS_RDATA_OFFLINE) ? DNS_RDATASLAB_OFFLINE : 0; } - memcpy(rawbuf, x[i].rdata.data, x[i].rdata.length); + memmove(rawbuf, x[i].rdata.data, x[i].rdata.length); rawbuf += x[i].rdata.length; } @@ -711,7 +711,7 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab, tstart = isc_mem_get(mctx, tlength); if (tstart == NULL) return (ISC_R_NOMEMORY); - memcpy(tstart, nslab, reservelen); + memmove(tstart, nslab, reservelen); tcurrent = tstart + reservelen; #if DNS_RDATASET_FIXED offsetbase = tcurrent; @@ -790,7 +790,7 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab, #if DNS_RDATASET_FIXED tcurrent += 2; /* fill in later */ #endif - memcpy(tcurrent, data, length); + memmove(tcurrent, data, length); tcurrent += length; oadded++; if (oadded < ocount) { @@ -817,7 +817,7 @@ dns_rdataslab_merge(unsigned char *oslab, unsigned char *nslab, #if DNS_RDATASET_FIXED tcurrent += 2; /* fill in later */ #endif - memcpy(tcurrent, data, length); + memmove(tcurrent, data, length); tcurrent += length; nadded++; if (nadded < ncount) { @@ -949,7 +949,7 @@ dns_rdataslab_subtract(unsigned char *mslab, unsigned char *sslab, tstart = isc_mem_get(mctx, tlength); if (tstart == NULL) return (ISC_R_NOMEMORY); - memcpy(tstart, mslab, reservelen); + memmove(tstart, mslab, reservelen); tcurrent = tstart + reservelen; #if DNS_RDATASET_FIXED offsetbase = tcurrent; @@ -1005,7 +1005,7 @@ dns_rdataslab_subtract(unsigned char *mslab, unsigned char *sslab, #if DNS_RDATASET_FIXED offsettable[order] = tcurrent - offsetbase; #endif - memcpy(tcurrent, mrdatabegin, length); + memmove(tcurrent, mrdatabegin, length); tcurrent += length; } dns_rdata_reset(&mrdata); diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 8aae371e..2e60cd84 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -3615,12 +3615,14 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type, */ if (dns_rdatatype_atparent(fctx->type)) findoptions |= DNS_DBFIND_NOEXACT; - result = dns_view_findzonecut(res->view, name, domain, - 0, findoptions, ISC_TRUE, + result = dns_view_findzonecut(res->view, fwdname, + domain, 0, findoptions, + ISC_TRUE, &fctx->nameservers, NULL); if (result != ISC_R_SUCCESS) goto cleanup_name; + result = dns_name_dup(domain, mctx, &fctx->domain); if (result != ISC_R_SUCCESS) { dns_rdataset_disassociate(&fctx->nameservers); @@ -5444,11 +5446,11 @@ is_answeraddress_allowed(dns_view_t *view, dns_name_t *name, dns_rdataset_current(rdataset, &rdata); if (rdataset->type == dns_rdatatype_a) { INSIST(rdata.length == sizeof(ina.s_addr)); - memcpy(&ina.s_addr, rdata.data, sizeof(ina.s_addr)); + memmove(&ina.s_addr, rdata.data, sizeof(ina.s_addr)); isc_netaddr_fromin(&netaddr, &ina); } else { INSIST(rdata.length == sizeof(in6a.s6_addr)); - memcpy(in6a.s6_addr, rdata.data, sizeof(in6a.s6_addr)); + memmove(in6a.s6_addr, rdata.data, sizeof(in6a.s6_addr)); isc_netaddr_fromin6(&netaddr, &in6a); } @@ -7312,9 +7314,12 @@ resquery_response(isc_task_t *task, isc_event_t *event) { * NXDOMAIN, NXRDATASET, or referral. */ result = noanswer_response(fctx, NULL, 0); - if (result == DNS_R_CHASEDSSERVERS) { - } else if (result == DNS_R_DELEGATION) { - force_referral: + switch (result) { + case ISC_R_SUCCESS: + case DNS_R_CHASEDSSERVERS: + break; + case DNS_R_DELEGATION: + force_referral: /* * We don't have the answer, but we know a better * place to look. @@ -7339,7 +7344,8 @@ resquery_response(isc_task_t *task, isc_event_t *event) { fctx->adberr = 0; result = ISC_R_SUCCESS; - } else if (result != ISC_R_SUCCESS) { + break; + default: /* * Something has gone wrong. */ @@ -8849,7 +8855,7 @@ dns_resolver_disable_algorithm(dns_resolver_t *resolver, dns_name_t *name, } memset(new, 0, len); if (algorithms != NULL) - memcpy(new, algorithms, *algorithms); + memmove(new, algorithms, *algorithms); new[len-1] |= mask; *new = len; node->data = new; diff --git a/lib/dns/rpz.c b/lib/dns/rpz.c index 2d689e7b..f617fe7b 100644 --- a/lib/dns/rpz.c +++ b/lib/dns/rpz.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2011-2014 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 @@ -1115,7 +1115,7 @@ dns_rpz_cidr_find(dns_rpz_cidr_t *cidr, const isc_netaddr_t *netaddr, * 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)); + memmove(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]); } diff --git a/lib/dns/rrl.c b/lib/dns/rrl.c index 96c55fef..02554e9a 100644 --- a/lib/dns/rrl.c +++ b/lib/dns/rrl.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2013, 2014 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 @@ -439,8 +439,8 @@ make_key(const dns_rrl_t *rrl, dns_rrl_key_t *key, break; case AF_INET6: key->s.ipv6 = ISC_TRUE; - memcpy(key->s.ip, &client_addr->type.sin6.sin6_addr, - sizeof(key->s.ip)); + memmove(key->s.ip, &client_addr->type.sin6.sin6_addr, + sizeof(key->s.ip)); for (i = 0; i < DNS_RRL_MAX_PREFIX/32; ++i) key->s.ip[i] &= rrl->ipv6_mask[i]; break; @@ -776,7 +776,7 @@ add_log_str(isc_buffer_t *lb, const char *str, unsigned int str_len) { return; str_len = region.length; } - memcpy(region.base, str, str_len); + memmove(region.base, str, str_len); isc_buffer_add(lb, str_len); } @@ -863,7 +863,7 @@ make_log_buf(dns_rrl_t *rrl, dns_rrl_entry_t *e, snprintf(strbuf, sizeof(strbuf), "/%d", rrl->ipv6_prefixlen); cidr.family = AF_INET6; memset(&cidr.type.in6, 0, sizeof(cidr.type.in6)); - memcpy(&cidr.type.in6, e->key.s.ip, sizeof(e->key.s.ip)); + memmove(&cidr.type.in6, e->key.s.ip, sizeof(e->key.s.ip)); } else { snprintf(strbuf, sizeof(strbuf), "/%d", rrl->ipv4_prefixlen); cidr.family = AF_INET; diff --git a/lib/dns/spnego.c b/lib/dns/spnego.c index b6c9e2a3..2da79f8b 100644 --- a/lib/dns/spnego.c +++ b/lib/dns/spnego.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2006-2014 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 @@ -463,7 +463,7 @@ code_NegTokenArg(OM_uint32 * minor_status, free(buf); return (GSS_S_FAILURE); } - memcpy(*outbuf, buf + buf_size - buf_len, buf_len); + memmove(*outbuf, buf + buf_size - buf_len, buf_len); *outbuf_size = buf_len; free(buf); @@ -856,7 +856,7 @@ der_get_octet_string(const unsigned char *p, size_t len, data->data = malloc(len); if (data->data == NULL) return (ENOMEM); - memcpy(data->data, p, len); + memmove(data->data, p, len); } else data->data = NULL; if (size) @@ -1217,7 +1217,7 @@ der_put_octet_string(unsigned char *p, size_t len, p -= data->length; len -= data->length; POST(len); - memcpy(p + 1, data->data, data->length); + memmove(p + 1, data->data, data->length); *size = data->length; return (0); } @@ -1397,7 +1397,7 @@ gssapi_mech_make_header(u_char *p, p += len_len; *p++ = 0x06; *p++ = mech->length; - memcpy(p, mech->elements, mech->length); + memmove(p, mech->elements, mech->length); p += mech->length; return (p); } @@ -1430,7 +1430,7 @@ gssapi_spnego_encapsulate(OM_uint32 * minor_status, gss_release_buffer(minor_status, output_token); return (GSS_S_FAILURE); } - memcpy(p, buf, buf_size); + memmove(p, buf, buf_size); return (GSS_S_COMPLETE); } diff --git a/lib/dns/ssu.c b/lib/dns/ssu.c index 49a777a6..7adb769c 100644 --- a/lib/dns/ssu.c +++ b/lib/dns/ssu.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2010, 2011, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2010, 2011, 2013, 2014 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 @@ -217,7 +217,7 @@ dns_ssutable_addrule(dns_ssutable_t *table, isc_boolean_t grant, result = ISC_R_NOMEMORY; goto failure; } - memcpy(rule->types, types, ntypes * sizeof(dns_rdatatype_t)); + memmove(rule->types, types, ntypes * sizeof(dns_rdatatype_t)); } else rule->types = NULL; diff --git a/lib/dns/tests/Makefile.in b/lib/dns/tests/Makefile.in index db474763..fb4452af 100644 --- a/lib/dns/tests/Makefile.in +++ b/lib/dns/tests/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2011, 2012 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2011-2013 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 @@ -37,17 +37,36 @@ DNSDEPLIBS = ../libdns.@A@ LIBS = @LIBS@ @ATFLIBS@ OBJS = dnstest.@O@ -SRCS = dnstest.c master_test.c dbiterator_test.c time_test.c \ - private_test.c update_test.c zonemgr_test.c zt_test.c \ - dbdiff_test.c dispatch_test.c nsec3_test.c \ - rdataset_test.c rdata_test.c +SRCS = db_test.c \ + dbdiff_test.c \ + dbiterator_test.c \ + dispatch_test.c \ + dnstest.c \ + master_test.c \ + nsec3_test.c \ + private_test.c \ + rdata_test.c \ + rdataset_test.c \ + time_test.c \ + update_test.c \ + zonemgr_test.c \ + zt_test.c SUBDIRS = -TARGETS = master_test@EXEEXT@ dbiterator_test@EXEEXT@ time_test@EXEEXT@ \ - private_test@EXEEXT@ update_test@EXEEXT@ zonemgr_test@EXEEXT@ \ - zt_test@EXEEXT@ dbversion_test@EXEEXT@ dbdiff_test@EXEEXT@ \ - dispatch_test@EXEEXT@ nsec3_test@EXEEXT@ \ - rdataset_test@EXEEXT@ rdata_test@EXEEXT@ +TARGETS = db_test@EXEEXT@ \ + dbdiff_test@EXEEXT@ \ + dbiterator_test@EXEEXT@ \ + dbversion_test@EXEEXT@ \ + dispatch_test@EXEEXT@ \ + master_test@EXEEXT@ \ + nsec3_test@EXEEXT@ \ + private_test@EXEEXT@ \ + rdata_test@EXEEXT@ \ + rdataset_test@EXEEXT@ \ + time_test@EXEEXT@ \ + update_test@EXEEXT@ \ + zonemgr_test@EXEEXT@ \ + zt_test@EXEEXT@ @BIND9_MAKE_RULES@ @@ -123,6 +142,11 @@ dispatch_test@EXEEXT@: dispatch_test.@O@ dnstest.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS} dispatch_test.@O@ dnstest.@O@ ${DNSLIBS} \ ${ISCLIBS} ${LIBS} +db_test@EXEEXT@: db_test.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS} + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \ + db_test.@O@ ${DNSLIBS} \ + ${ISCLIBS} ${LIBS} + unit:: sh ${top_srcdir}/unit/unittest.sh diff --git a/lib/dns/tests/db_test.c b/lib/dns/tests/db_test.c new file mode 100644 index 00000000..fc4b3c87 --- /dev/null +++ b/lib/dns/tests/db_test.c @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2013 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$ */ + +/*! \file */ + +#include <config.h> + +#include <atf-c.h> + +#include <unistd.h> +#include <stdlib.h> + +#include <dns/db.h> +#include <dns/dbiterator.h> +#include <dns/name.h> +#include <dns/journal.h> + +#include "dnstest.h" + +/* + * Helper functions + */ + +#define BUFLEN 255 +#define BIGBUFLEN (64 * 1024) +#define TEST_ORIGIN "test" + +/* + * Individual unit tests + */ + +ATF_TC(getoriginnode); +ATF_TC_HEAD(getoriginnode, tc) { + atf_tc_set_md_var(tc, "descr", + "test multiple calls to dns_db_getoriginnode"); +} +ATF_TC_BODY(getoriginnode, tc) { + dns_db_t *db = NULL; + dns_dbnode_t *node = NULL; + isc_mem_t *mctx = NULL; + isc_result_t result; + + result = isc_mem_create(0, 0, &mctx); + ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); + + result = isc_hash_create(mctx, NULL, 256); + ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); + + result = dns_db_create(mctx, "rbt", dns_rootname, dns_dbtype_zone, + dns_rdataclass_in, 0, NULL, &db); + ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); + + result = dns_db_getoriginnode(db, &node); + ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); + dns_db_detachnode(db, &node); + + result = dns_db_getoriginnode(db, &node); + ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); + dns_db_detachnode(db, &node); + + dns_db_detach(&db); + isc_mem_detach(&mctx); +} + +/* + * Main + */ +ATF_TP_ADD_TCS(tp) { + ATF_TP_ADD_TC(tp, getoriginnode); + return (atf_no_error()); +} diff --git a/lib/dns/time.c b/lib/dns/time.c index 0f245a24..d331ca3b 100644 --- a/lib/dns/time.c +++ b/lib/dns/time.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009-2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -98,7 +98,7 @@ dns_time64_totext(isc_int64_t t, isc_buffer_t *target) { if (l > region.length) return (ISC_R_NOSPACE); - memcpy(region.base, buf, l); + memmove(region.base, buf, l); isc_buffer_add(target, l); return (ISC_R_SUCCESS); } diff --git a/lib/dns/tkey.c b/lib/dns/tkey.c index 161c1880..11b4f49e 100644 --- a/lib/dns/tkey.c +++ b/lib/dns/tkey.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 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 @@ -152,7 +152,7 @@ add_rdata_to_list(dns_message_t *msg, dns_name_t *name, dns_rdata_t *rdata, dns_rdata_toregion(rdata, &r); RETERR(isc_buffer_allocate(msg->mctx, &tmprdatabuf, r.length)); isc_buffer_availableregion(tmprdatabuf, &newr); - memcpy(newr.base, r.base, r.length); + memmove(newr.base, r.base, r.length); dns_rdata_fromregion(newrdata, rdata->rdclass, rdata->type, &newr); dns_message_takebuffer(msg, &tmprdatabuf); @@ -252,12 +252,12 @@ compute_secret(isc_buffer_t *shared, isc_region_t *queryrandomness, if (r.length < sizeof(digests) || r.length < r2.length) return (ISC_R_NOSPACE); if (r2.length > sizeof(digests)) { - memcpy(r.base, r2.base, r2.length); + memmove(r.base, r2.base, r2.length); for (i = 0; i < sizeof(digests); i++) r.base[i] ^= digests[i]; isc_buffer_add(secret, r2.length); } else { - memcpy(r.base, digests, sizeof(digests)); + memmove(r.base, digests, sizeof(digests)); for (i = 0; i < r2.length; i++) r.base[i] ^= r2.base[i]; isc_buffer_add(secret, sizeof(digests)); @@ -534,7 +534,7 @@ process_gsstkey(dns_name_t *name, dns_rdata_tkey_t *tkeyin, goto failure; } tkeyout->keylen = isc_buffer_usedlength(outtoken); - memcpy(tkeyout->key, isc_buffer_base(outtoken), + memmove(tkeyout->key, isc_buffer_base(outtoken), isc_buffer_usedlength(outtoken)); isc_buffer_free(&outtoken); } else { @@ -544,7 +544,7 @@ process_gsstkey(dns_name_t *name, dns_rdata_tkey_t *tkeyin, goto failure; } tkeyout->keylen = tkeyin->keylen; - memcpy(tkeyout->key, tkeyin->key, tkeyin->keylen); + memmove(tkeyout->key, tkeyin->key, tkeyin->keylen); } tkeyout->error = dns_rcode_noerror; diff --git a/lib/dns/tsig.c b/lib/dns/tsig.c index c7768f4c..00ab570d 100644 --- a/lib/dns/tsig.c +++ b/lib/dns/tsig.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1370,21 +1370,21 @@ dns_tsig_verify(isc_buffer_t *source, dns_message_t *msg, * Extract the header. */ isc_buffer_usedregion(source, &r); - memcpy(header, r.base, DNS_MESSAGE_HEADERLEN); + memmove(header, r.base, DNS_MESSAGE_HEADERLEN); isc_region_consume(&r, DNS_MESSAGE_HEADERLEN); /* * Decrement the additional field counter. */ - memcpy(&addcount, &header[DNS_MESSAGE_HEADERLEN - 2], 2); + memmove(&addcount, &header[DNS_MESSAGE_HEADERLEN - 2], 2); addcount = htons((isc_uint16_t)(ntohs(addcount) - 1)); - memcpy(&header[DNS_MESSAGE_HEADERLEN - 2], &addcount, 2); + memmove(&header[DNS_MESSAGE_HEADERLEN - 2], &addcount, 2); /* * Put in the original id. */ id = htons(tsig.originalid); - memcpy(&header[0], &id, 2); + memmove(&header[0], &id, 2); /* * Digest the modified header. @@ -1609,16 +1609,16 @@ tsig_verify_tcp(isc_buffer_t *source, dns_message_t *msg) { * Extract the header. */ isc_buffer_usedregion(source, &r); - memcpy(header, r.base, DNS_MESSAGE_HEADERLEN); + memmove(header, r.base, DNS_MESSAGE_HEADERLEN); isc_region_consume(&r, DNS_MESSAGE_HEADERLEN); /* * Decrement the additional field counter if necessary. */ if (has_tsig) { - memcpy(&addcount, &header[DNS_MESSAGE_HEADERLEN - 2], 2); + memmove(&addcount, &header[DNS_MESSAGE_HEADERLEN - 2], 2); addcount = htons((isc_uint16_t)(ntohs(addcount) - 1)); - memcpy(&header[DNS_MESSAGE_HEADERLEN - 2], &addcount, 2); + memmove(&header[DNS_MESSAGE_HEADERLEN - 2], &addcount, 2); } /* @@ -1627,7 +1627,7 @@ tsig_verify_tcp(isc_buffer_t *source, dns_message_t *msg) { /* XXX Can TCP transfers be forwarded? How would that work? */ if (has_tsig) { id = htons(tsig.originalid); - memcpy(&header[0], &id, 2); + memmove(&header[0], &id, 2); } /* diff --git a/lib/dns/ttl.c b/lib/dns/ttl.c index d33f0b4d..c7948590 100644 --- a/lib/dns/ttl.c +++ b/lib/dns/ttl.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -68,7 +68,7 @@ ttlfmt(unsigned int t, const char *s, isc_boolean_t verbose, isc_buffer_availableregion(target, ®ion); if (len > region.length) return (ISC_R_NOSPACE); - memcpy(region.base, tmp, len); + memmove(region.base, tmp, len); isc_buffer_add(target, len); return (ISC_R_SUCCESS); diff --git a/lib/dns/zone.c b/lib/dns/zone.c index f4dd2a3d..01ff97b1 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -2517,7 +2517,7 @@ isspf(const dns_rdata_t *rdata) { INSIST(tl <= rdl); if (len > sizeof(buf) - i - 1) len = sizeof(buf) - i - 1; - memcpy(buf + i, data, len); + memmove(buf + i, data, len); i += len; data += tl; rdl -= tl; @@ -2874,7 +2874,7 @@ zone_addnsec3chain(dns_zone_t *zone, dns_rdata_nsec3param_t *nsec3param) { nsec3chain->nsec3param.iterations = nsec3param->iterations; nsec3chain->nsec3param.flags = nsec3param->flags; nsec3chain->nsec3param.salt_length = nsec3param->salt_length; - memcpy(nsec3chain->salt, nsec3param->salt, nsec3param->salt_length); + memmove(nsec3chain->salt, nsec3param->salt, nsec3param->salt_length); nsec3chain->nsec3param.salt = nsec3chain->salt; nsec3chain->seen_nsec = ISC_FALSE; nsec3chain->delete_nsec = ISC_FALSE; @@ -4979,7 +4979,7 @@ set_addrkeylist(unsigned int count, newaddrs = isc_mem_get(mctx, count * sizeof(*newaddrs)); if (newaddrs == NULL) return (ISC_R_NOMEMORY); - memcpy(newaddrs, addrs, count * sizeof(*newaddrs)); + memmove(newaddrs, addrs, count * sizeof(*newaddrs)); newnames = NULL; if (names != NULL) { diff --git a/lib/export/samples/nsprobe.c b/lib/export/samples/nsprobe.c index 1d7ed3b4..795b1ca4 100644 --- a/lib/export/samples/nsprobe.c +++ b/lib/export/samples/nsprobe.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009-2014 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 @@ -1101,7 +1101,7 @@ main(int argc, char *argv[]) { (long)res->ai_addrlen); exit(1); } - memcpy(&sa.type.sa, res->ai_addr, res->ai_addrlen); + memmove(&sa.type.sa, res->ai_addr, res->ai_addrlen); sa.length = res->ai_addrlen; freeaddrinfo(res); ISC_LINK_INIT(&sa, link); diff --git a/lib/export/samples/sample-request.c b/lib/export/samples/sample-request.c index 07baf395..8d36a2ce 100644 --- a/lib/export/samples/sample-request.c +++ b/lib/export/samples/sample-request.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012-2014 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 @@ -221,7 +221,7 @@ main(int argc, char *argv[]) { exit(1); } INSIST(res->ai_addrlen <= sizeof(sa.type)); - memcpy(&sa.type, res->ai_addr, res->ai_addrlen); + memmove(&sa.type, res->ai_addr, res->ai_addrlen); freeaddrinfo(res); sa.length = res->ai_addrlen; ISC_LINK_INIT(&sa, link); diff --git a/lib/export/samples/sample-update.c b/lib/export/samples/sample-update.c index 2c35baa6..758e02eb 100644 --- a/lib/export/samples/sample-update.c +++ b/lib/export/samples/sample-update.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2010, 2012-2014 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 @@ -188,7 +188,7 @@ main(int argc, char *argv[]) { exit(1); } INSIST(res->ai_addrlen <= sizeof(sa_auth.type)); - memcpy(&sa_auth.type, res->ai_addr, res->ai_addrlen); + memmove(&sa_auth.type, res->ai_addr, res->ai_addrlen); freeaddrinfo(res); sa_auth.length = res->ai_addrlen; ISC_LINK_INIT(&sa_auth, link); @@ -210,7 +210,7 @@ main(int argc, char *argv[]) { exit(1); } INSIST(res->ai_addrlen <= sizeof(sa_recursive.type)); - memcpy(&sa_recursive.type, res->ai_addr, res->ai_addrlen); + memmove(&sa_recursive.type, res->ai_addr, res->ai_addrlen); freeaddrinfo(res); sa_recursive.length = res->ai_addrlen; ISC_LINK_INIT(&sa_recursive, link); diff --git a/lib/export/samples/sample.c b/lib/export/samples/sample.c index b121a0db..7de9a8f1 100644 --- a/lib/export/samples/sample.c +++ b/lib/export/samples/sample.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012-2014 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 @@ -197,7 +197,7 @@ addserver(dns_client_t *client, const char *addrstr, const char *port, exit(1); } INSIST(res->ai_addrlen <= sizeof(sa.type)); - memcpy(&sa.type, res->ai_addr, res->ai_addrlen); + memmove(&sa.type, res->ai_addr, res->ai_addrlen); sa.length = res->ai_addrlen; freeaddrinfo(res); ISC_LINK_INIT(&sa, link); diff --git a/lib/irs/api b/lib/irs/api index 298e96a8..343e4aaf 100644 --- a/lib/irs/api +++ b/lib/irs/api @@ -5,5 +5,5 @@ # 9.9: 90-109 # 9.9-sub: 130-139 LIBINTERFACE = 90 -LIBREVISION = 1 +LIBREVISION = 2 LIBAGE = 0 diff --git a/lib/irs/getaddrinfo.c b/lib/irs/getaddrinfo.c index 1de540f2..24d35bf6 100644 --- a/lib/irs/getaddrinfo.c +++ b/lib/irs/getaddrinfo.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012-2014 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 @@ -409,7 +409,7 @@ getaddrinfo(const char *hostname, const char *servname, * Convert to a V4 mapped address. */ struct in6_addr *a6 = (struct in6_addr *)abuf; - memcpy(&a6->s6_addr[12], &a6->s6_addr[0], 4); + memmove(&a6->s6_addr[12], &a6->s6_addr[0], 4); memset(&a6->s6_addr[10], 0xff, 2); memset(&a6->s6_addr[0], 0, 10); goto inet6_addr; @@ -446,7 +446,7 @@ getaddrinfo(const char *hostname, const char *servname, ai_list = ai; ai->ai_socktype = socktype; SIN(ai->ai_addr)->sin_port = port; - memcpy((char *)ai->ai_addr + addroff, abuf, addrsize); + memmove((char *)ai->ai_addr + addroff, abuf, addrsize); if ((flags & AI_CANONNAME) != 0) { #ifdef IRS_HAVE_SIN6_SCOPE_ID if (ai->ai_family == AF_INET6) @@ -789,8 +789,8 @@ process_answer(isc_task_t *task, isc_event_t *event) { RUNTIME_CHECK(result == ISC_R_SUCCESS); SIN(ai->ai_addr)->sin_port = resstate->head->ai_port; - memcpy(&SIN(ai->ai_addr)->sin_addr, - &rdata_a.in_addr, 4); + memmove(&SIN(ai->ai_addr)->sin_addr, + &rdata_a.in_addr, 4); dns_rdata_freestruct(&rdata_a); break; case AF_INET6: @@ -800,8 +800,8 @@ process_answer(isc_task_t *task, isc_event_t *event) { RUNTIME_CHECK(result == ISC_R_SUCCESS); SIN6(ai->ai_addr)->sin6_port = resstate->head->ai_port; - memcpy(&SIN6(ai->ai_addr)->sin6_addr, - &rdata_aaaa.in6_addr, 16); + memmove(&SIN6(ai->ai_addr)->sin6_addr, + &rdata_aaaa.in6_addr, 16); dns_rdata_freestruct(&rdata_aaaa); break; } @@ -1130,7 +1130,7 @@ add_ipv4(const char *hostname, int flags, struct addrinfo **aip, *aip = ai; ai->ai_socktype = socktype; SIN(ai->ai_addr)->sin_port = port; - memcpy(&SIN(ai->ai_addr)->sin_addr, v4_loop, 4); + memmove(&SIN(ai->ai_addr)->sin_addr, v4_loop, 4); return (0); } @@ -1153,7 +1153,7 @@ add_ipv6(const char *hostname, int flags, struct addrinfo **aip, *aip = ai; ai->ai_socktype = socktype; SIN6(ai->ai_addr)->sin6_port = port; - memcpy(&SIN6(ai->ai_addr)->sin6_addr, v6_loop, 16); + memmove(&SIN6(ai->ai_addr)->sin6_addr, v6_loop, 16); return (0); } diff --git a/lib/irs/resconf.c b/lib/irs/resconf.c index 88bdac16..15a46baf 100644 --- a/lib/irs/resconf.c +++ b/lib/irs/resconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2011, 2012, 2014 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 @@ -224,7 +224,7 @@ add_server(isc_mem_t *mctx, const char *address_str, v4 = &((struct sockaddr_in *)res->ai_addr)->sin_addr; if (memcmp(v4, zeroaddress, 4) == 0) - memcpy(v4, loopaddress, 4); + memmove(v4, loopaddress, 4); } address = isc_mem_get(mctx, sizeof(*address)); @@ -238,7 +238,7 @@ add_server(isc_mem_t *mctx, const char *address_str, goto cleanup; } address->length = res->ai_addrlen; - memcpy(&address->type.ss, res->ai_addr, res->ai_addrlen); + memmove(&address->type.ss, res->ai_addr, res->ai_addrlen); ISC_LINK_INIT(address, link); ISC_LIST_APPEND(*nameservers, address, link); @@ -258,14 +258,14 @@ create_addr(const char *buffer, isc_netaddr_t *addr, int convert_zero) { unsigned char zeroaddress[] = {0, 0, 0, 0}; unsigned char loopaddress[] = {127, 0, 0, 1}; if (memcmp(&v4, zeroaddress, 4) == 0) - memcpy(&v4, loopaddress, 4); + memmove(&v4, loopaddress, 4); } addr->family = AF_INET; - memcpy(&addr->type.in, &v4, NS_INADDRSZ); + memmove(&addr->type.in, &v4, NS_INADDRSZ); addr->zone = 0; } else if (inet_pton(AF_INET6, buffer, &v6) == 1) { addr->family = AF_INET6; - memcpy(&addr->type.in6, &v6, NS_IN6ADDRSZ); + memmove(&addr->type.in6, &v6, NS_IN6ADDRSZ); addr->zone = 0; } else return (ISC_R_BADADDRESSFORM); /* Unrecognised format. */ diff --git a/lib/isc/api b/lib/isc/api index a161d8d0..07c646d6 100644 --- a/lib/isc/api +++ b/lib/isc/api @@ -4,6 +4,6 @@ # 9.8: 80-89, 120-129 # 9.9: 90-109 # 9.9-sub: 130-139 -LIBINTERFACE = 98 +LIBINTERFACE = 99 LIBREVISION = 0 -LIBAGE = 3 +LIBAGE = 4 diff --git a/lib/isc/base32.c b/lib/isc/base32.c index f595cf14..ad0b0da5 100644 --- a/lib/isc/base32.c +++ b/lib/isc/base32.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008, 2009, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2008, 2009, 2013, 2014 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 @@ -355,7 +355,7 @@ str_totext(const char *source, isc_buffer_t *target) { if (l > region.length) return (ISC_R_NOSPACE); - memcpy(region.base, source, l); + memmove(region.base, source, l); isc_buffer_add(target, l); return (ISC_R_SUCCESS); } @@ -367,7 +367,7 @@ mem_tobuffer(isc_buffer_t *target, void *base, unsigned int length) { isc_buffer_availableregion(target, &tr); if (length > tr.length) return (ISC_R_NOSPACE); - memcpy(tr.base, base, length); + memmove(tr.base, base, length); isc_buffer_add(target, length); return (ISC_R_SUCCESS); } diff --git a/lib/isc/base64.c b/lib/isc/base64.c index 00d00d4b..6b4cb1bf 100644 --- a/lib/isc/base64.c +++ b/lib/isc/base64.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -234,7 +234,7 @@ str_totext(const char *source, isc_buffer_t *target) { if (l > region.length) return (ISC_R_NOSPACE); - memcpy(region.base, source, l); + memmove(region.base, source, l); isc_buffer_add(target, l); return (ISC_R_SUCCESS); } @@ -246,7 +246,7 @@ mem_tobuffer(isc_buffer_t *target, void *base, unsigned int length) { isc_buffer_availableregion(target, &tr); if (length > tr.length) return (ISC_R_NOSPACE); - memcpy(tr.base, base, length); + memmove(tr.base, base, length); isc_buffer_add(target, length); return (ISC_R_SUCCESS); } diff --git a/lib/isc/buffer.c b/lib/isc/buffer.c index e37af159..2d15e248 100644 --- a/lib/isc/buffer.c +++ b/lib/isc/buffer.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -420,7 +420,7 @@ isc__buffer_putstr(isc_buffer_t *b, const char *source) { REQUIRE(l <= isc_buffer_availablelength(b)); cp = isc_buffer_used(b); - memcpy(cp, source, l); + memmove(cp, source, l); b->used += l; } @@ -439,7 +439,7 @@ isc_buffer_copyregion(isc_buffer_t *b, const isc_region_t *r) { available = isc_buffer_availablelength(b); if (r->length > available) return (ISC_R_NOSPACE); - memcpy(base, r->base, r->length); + memmove(base, r->base, r->length); b->used += r->length; return (ISC_R_SUCCESS); diff --git a/lib/isc/hash.c b/lib/isc/hash.c index fc4e4f33..f70e7943 100644 --- a/lib/isc/hash.c +++ b/lib/isc/hash.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -270,7 +270,7 @@ isc_hash_ctxinit(isc_hash_t *hctx) { else copylen = hctx->vectorlen - i; - memcpy(p, &pr, copylen); + memmove(p, &pr, copylen); } INSIST(p == (unsigned char *)hctx->rndvector + hctx->vectorlen); @@ -324,9 +324,9 @@ destroy(isc_hash_t **hctxp) { DESTROYLOCK(&hctx->lock); - memcpy(canary0, hctx + 1, sizeof(canary0)); + memmove(canary0, hctx + 1, sizeof(canary0)); memset(hctx, 0, sizeof(isc_hash_t)); - memcpy(canary1, hctx + 1, sizeof(canary1)); + memmove(canary1, hctx + 1, sizeof(canary1)); INSIST(memcmp(canary0, canary1, sizeof(canary0)) == 0); isc_mem_put(mctx, hctx, sizeof(isc_hash_t)); isc_mem_detach(&mctx); diff --git a/lib/isc/heap.c b/lib/isc/heap.c index 4edaface..9d4fd28a 100644 --- a/lib/isc/heap.c +++ b/lib/isc/heap.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2010-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2010-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1997-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -32,7 +32,7 @@ #include <isc/heap.h> #include <isc/magic.h> #include <isc/mem.h> -#include <isc/string.h> /* Required for memcpy. */ +#include <isc/string.h> /* Required for memmove. */ #include <isc/util.h> /*@{*/ @@ -132,7 +132,7 @@ resize(isc_heap_t *heap) { if (new_array == NULL) return (ISC_FALSE); if (heap->array != NULL) { - memcpy(new_array, heap->array, heap->size * sizeof(void *)); + memmove(new_array, heap->array, heap->size * sizeof(void *)); isc_mem_put(heap->mctx, heap->array, heap->size * sizeof(void *)); } diff --git a/lib/isc/hex.c b/lib/isc/hex.c index 60addf5c..00903c73 100644 --- a/lib/isc/hex.c +++ b/lib/isc/hex.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2008, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2008, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -183,7 +183,7 @@ str_totext(const char *source, isc_buffer_t *target) { if (l > region.length) return (ISC_R_NOSPACE); - memcpy(region.base, source, l); + memmove(region.base, source, l); isc_buffer_add(target, l); return (ISC_R_SUCCESS); } @@ -195,7 +195,7 @@ mem_tobuffer(isc_buffer_t *target, void *base, unsigned int length) { isc_buffer_availableregion(target, &tr); if (length > tr.length) return (ISC_R_NOSPACE); - memcpy(tr.base, base, length); + memmove(tr.base, base, length); isc_buffer_add(target, length); return (ISC_R_SUCCESS); } diff --git a/lib/isc/hmacmd5.c b/lib/isc/hmacmd5.c index 4c4046df..b26a336e 100644 --- a/lib/isc/hmacmd5.c +++ b/lib/isc/hmacmd5.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -83,7 +83,7 @@ isc_hmacmd5_init(isc_hmacmd5_t *ctx, const unsigned char *key, isc_md5_update(&md5ctx, key, len); isc_md5_final(&md5ctx, ctx->key); } else - memcpy(ctx->key, key, len); + memmove(ctx->key, key, len); isc_md5_init(&ctx->md5ctx); memset(ipad, IPAD, sizeof(ipad)); diff --git a/lib/isc/hmacsha.c b/lib/isc/hmacsha.c index 38709637..ac2b70c5 100644 --- a/lib/isc/hmacsha.c +++ b/lib/isc/hmacsha.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2007, 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2005-2007, 2009, 2011-2014 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 @@ -63,7 +63,7 @@ isc_hmacsha1_sign(isc_hmacsha1_t *ctx, unsigned char *digest, size_t len) { HMAC_Final(ctx, newdigest, NULL); HMAC_CTX_cleanup(ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } @@ -94,7 +94,7 @@ isc_hmacsha224_sign(isc_hmacsha224_t *ctx, unsigned char *digest, size_t len) { HMAC_Final(ctx, newdigest, NULL); HMAC_CTX_cleanup(ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } @@ -125,7 +125,7 @@ isc_hmacsha256_sign(isc_hmacsha256_t *ctx, unsigned char *digest, size_t len) { HMAC_Final(ctx, newdigest, NULL); HMAC_CTX_cleanup(ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } @@ -156,7 +156,7 @@ isc_hmacsha384_sign(isc_hmacsha384_t *ctx, unsigned char *digest, size_t len) { HMAC_Final(ctx, newdigest, NULL); HMAC_CTX_cleanup(ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } @@ -187,7 +187,7 @@ isc_hmacsha512_sign(isc_hmacsha512_t *ctx, unsigned char *digest, size_t len) { HMAC_Final(ctx, newdigest, NULL); HMAC_CTX_cleanup(ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } @@ -213,7 +213,7 @@ isc_hmacsha1_init(isc_hmacsha1_t *ctx, const unsigned char *key, isc_sha1_update(&sha1ctx, key, len); isc_sha1_final(&sha1ctx, ctx->key); } else - memcpy(ctx->key, key, len); + memmove(ctx->key, key, len); isc_sha1_init(&ctx->sha1ctx); memset(ipad, IPAD, sizeof(ipad)); @@ -260,7 +260,7 @@ isc_hmacsha1_sign(isc_hmacsha1_t *ctx, unsigned char *digest, size_t len) { isc_sha1_update(&ctx->sha1ctx, newdigest, ISC_SHA1_DIGESTLENGTH); isc_sha1_final(&ctx->sha1ctx, newdigest); isc_hmacsha1_invalidate(ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } @@ -281,7 +281,7 @@ isc_hmacsha224_init(isc_hmacsha224_t *ctx, const unsigned char *key, isc_sha224_update(&sha224ctx, key, len); isc_sha224_final(ctx->key, &sha224ctx); } else - memcpy(ctx->key, key, len); + memmove(ctx->key, key, len); isc_sha224_init(&ctx->sha224ctx); memset(ipad, IPAD, sizeof(ipad)); @@ -326,7 +326,7 @@ isc_hmacsha224_sign(isc_hmacsha224_t *ctx, unsigned char *digest, size_t len) { isc_sha224_update(&ctx->sha224ctx, opad, sizeof(opad)); isc_sha224_update(&ctx->sha224ctx, newdigest, ISC_SHA224_DIGESTLENGTH); isc_sha224_final(newdigest, &ctx->sha224ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } @@ -347,7 +347,7 @@ isc_hmacsha256_init(isc_hmacsha256_t *ctx, const unsigned char *key, isc_sha256_update(&sha256ctx, key, len); isc_sha256_final(ctx->key, &sha256ctx); } else - memcpy(ctx->key, key, len); + memmove(ctx->key, key, len); isc_sha256_init(&ctx->sha256ctx); memset(ipad, IPAD, sizeof(ipad)); @@ -392,7 +392,7 @@ isc_hmacsha256_sign(isc_hmacsha256_t *ctx, unsigned char *digest, size_t len) { isc_sha256_update(&ctx->sha256ctx, opad, sizeof(opad)); isc_sha256_update(&ctx->sha256ctx, newdigest, ISC_SHA256_DIGESTLENGTH); isc_sha256_final(newdigest, &ctx->sha256ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } @@ -413,7 +413,7 @@ isc_hmacsha384_init(isc_hmacsha384_t *ctx, const unsigned char *key, isc_sha384_update(&sha384ctx, key, len); isc_sha384_final(ctx->key, &sha384ctx); } else - memcpy(ctx->key, key, len); + memmove(ctx->key, key, len); isc_sha384_init(&ctx->sha384ctx); memset(ipad, IPAD, sizeof(ipad)); @@ -458,7 +458,7 @@ isc_hmacsha384_sign(isc_hmacsha384_t *ctx, unsigned char *digest, size_t len) { isc_sha384_update(&ctx->sha384ctx, opad, sizeof(opad)); isc_sha384_update(&ctx->sha384ctx, newdigest, ISC_SHA384_DIGESTLENGTH); isc_sha384_final(newdigest, &ctx->sha384ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } @@ -479,7 +479,7 @@ isc_hmacsha512_init(isc_hmacsha512_t *ctx, const unsigned char *key, isc_sha512_update(&sha512ctx, key, len); isc_sha512_final(ctx->key, &sha512ctx); } else - memcpy(ctx->key, key, len); + memmove(ctx->key, key, len); isc_sha512_init(&ctx->sha512ctx); memset(ipad, IPAD, sizeof(ipad)); @@ -524,7 +524,7 @@ isc_hmacsha512_sign(isc_hmacsha512_t *ctx, unsigned char *digest, size_t len) { isc_sha512_update(&ctx->sha512ctx, opad, sizeof(opad)); isc_sha512_update(&ctx->sha512ctx, newdigest, ISC_SHA512_DIGESTLENGTH); isc_sha512_final(newdigest, &ctx->sha512ctx); - memcpy(digest, newdigest, len); + memmove(digest, newdigest, len); memset(newdigest, 0, sizeof(newdigest)); } #endif /* !ISC_PLATFORM_OPENSSLHASH */ diff --git a/lib/isc/httpd.c b/lib/isc/httpd.c index 16a8c9fe..46dab296 100644 --- a/lib/isc/httpd.c +++ b/lib/isc/httpd.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2008, 2010-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2006-2008, 2010-2012, 2014 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 @@ -26,6 +26,7 @@ #include <isc/socket.h> #include <isc/string.h> #include <isc/task.h> +#include <isc/time.h> #include <isc/util.h> #include <string.h> @@ -58,20 +59,6 @@ #define HTTP_SENDGROW 1024 #define HTTP_SEND_MAXLEN 10240 -/*% - * HTTP urls. These are the URLs we manage, and the function to call to - * provide the data for it. We pass in the base url (so the same function - * can handle multiple requests), and a structure to fill in to return a - * result to the client. We also pass in a pointer to be filled in for - * the data cleanup function. - */ -struct isc_httpdurl { - char *url; - isc_httpdaction_t *action; - void *action_arg; - ISC_LINK(isc_httpdurl_t) link; -}; - #define HTTPD_CLOSE 0x0001 /* Got a Connection: close header */ #define HTTPD_FOUNDHOST 0x0002 /* Got a Host: header */ @@ -87,6 +74,7 @@ struct isc_httpd { */ char recvbuf[HTTP_RECVLEN]; /*%< receive buffer */ isc_uint32_t recvlen; /*%< length recv'd */ + char *headers; /*%< set in process_request() */ unsigned int method; char *url; char *querystring; @@ -217,20 +205,12 @@ static isc_result_t process_request(isc_httpd_t *, int); static void httpdmgr_destroy(isc_httpdmgr_t *); static isc_result_t grow_headerspace(isc_httpd_t *); static void reset_client(isc_httpd_t *httpd); -static isc_result_t render_404(const char *, const char *, - void *, - unsigned int *, const char **, - const char **, isc_buffer_t *, - isc_httpdfree_t **, void **); -static isc_result_t render_500(const char *, const char *, - void *, - unsigned int *, const char **, - const char **, isc_buffer_t *, - isc_httpdfree_t **, void **); + +static isc_httpdaction_t render_404; +static isc_httpdaction_t render_500; static void -destroy_client(isc_httpd_t **httpdp) -{ +destroy_client(isc_httpd_t **httpdp) { isc_httpd_t *httpd = *httpdp; isc_httpdmgr_t *httpdmgr = httpd->mgr; @@ -321,8 +301,7 @@ isc_httpdmgr_create(isc_mem_t *mctx, isc_socket_t *sock, isc_task_t *task, } static void -httpdmgr_destroy(isc_httpdmgr_t *httpdmgr) -{ +httpdmgr_destroy(isc_httpdmgr_t *httpdmgr) { isc_mem_t *mctx; isc_httpdurl_t *url; @@ -379,8 +358,7 @@ httpdmgr_destroy(isc_httpdmgr_t *httpdmgr) #define BUFLENOK(s) (httpd->recvbuf - (s) < HTTP_RECVLEN) static isc_result_t -process_request(isc_httpd_t *httpd, int length) -{ +process_request(isc_httpd_t *httpd, int length) { char *s; char *p; int delim; @@ -390,6 +368,7 @@ process_request(isc_httpd_t *httpd, int length) httpd->recvlen += length; httpd->recvbuf[httpd->recvlen] = 0; + httpd->headers = NULL; /* * If we don't find a blank line in our buffer, return that we need @@ -494,6 +473,8 @@ process_request(isc_httpd_t *httpd, int length) p = s + 1; s = p; + httpd->headers = s; + if (strstr(s, "Connection: close") != NULL) httpd->flags |= HTTPD_CLOSE; @@ -513,8 +494,7 @@ process_request(isc_httpd_t *httpd, int length) } static void -isc_httpd_accept(isc_task_t *task, isc_event_t *ev) -{ +isc_httpd_accept(isc_task_t *task, isc_event_t *ev) { isc_result_t result; isc_httpdmgr_t *httpdmgr = ev->ev_arg; isc_httpd_t *httpd; @@ -609,8 +589,8 @@ isc_httpd_accept(isc_task_t *task, isc_event_t *ev) } static isc_result_t -render_404(const char *url, const char *querystring, - void *arg, +render_404(const char *url, isc_httpdurl_t *urlinfo, + const char *querystring, const char *headers, void *arg, unsigned int *retcode, const char **retmsg, const char **mimetype, isc_buffer_t *b, isc_httpdfree_t **freecb, void **freecb_args) @@ -618,7 +598,9 @@ render_404(const char *url, const char *querystring, static char msg[] = "No such URL."; UNUSED(url); + UNUSED(urlinfo); UNUSED(querystring); + UNUSED(headers); UNUSED(arg); *retcode = 404; @@ -633,8 +615,8 @@ render_404(const char *url, const char *querystring, } static isc_result_t -render_500(const char *url, const char *querystring, - void *arg, +render_500(const char *url, isc_httpdurl_t *urlinfo, + const char *querystring, const char *headers, void *arg, unsigned int *retcode, const char **retmsg, const char **mimetype, isc_buffer_t *b, isc_httpdfree_t **freecb, void **freecb_args) @@ -642,7 +624,9 @@ render_500(const char *url, const char *querystring, static char msg[] = "Internal server failure."; UNUSED(url); + UNUSED(urlinfo); UNUSED(querystring); + UNUSED(headers); UNUSED(arg); *retcode = 500; @@ -657,8 +641,7 @@ render_500(const char *url, const char *querystring, } static void -isc_httpd_recvdone(isc_task_t *task, isc_event_t *ev) -{ +isc_httpd_recvdone(isc_task_t *task, isc_event_t *ev) { isc_region_t r; isc_result_t result; isc_httpd_t *httpd = ev->ev_arg; @@ -710,8 +693,9 @@ isc_httpd_recvdone(isc_task_t *task, isc_event_t *ev) url = ISC_LIST_NEXT(url, link); } if (url == NULL) - result = httpd->mgr->render_404(httpd->url, httpd->querystring, - NULL, + result = httpd->mgr->render_404(httpd->url, NULL, + httpd->querystring, + NULL, NULL, &httpd->retcode, &httpd->retmsg, &httpd->mimetype, @@ -719,14 +703,18 @@ isc_httpd_recvdone(isc_task_t *task, isc_event_t *ev) &httpd->freecb, &httpd->freecb_arg); else - result = url->action(httpd->url, httpd->querystring, + result = url->action(httpd->url, url, + httpd->querystring, + httpd->headers, url->action_arg, &httpd->retcode, &httpd->retmsg, &httpd->mimetype, &httpd->bodybuffer, &httpd->freecb, &httpd->freecb_arg); if (result != ISC_R_SUCCESS) { - result = httpd->mgr->render_500(httpd->url, httpd->querystring, - NULL, &httpd->retcode, + result = httpd->mgr->render_500(httpd->url, url, + httpd->querystring, + NULL, NULL, + &httpd->retcode, &httpd->retmsg, &httpd->mimetype, &httpd->bodybuffer, @@ -739,9 +727,19 @@ isc_httpd_recvdone(isc_task_t *task, isc_event_t *ev) isc_httpd_addheader(httpd, "Content-Type", httpd->mimetype); isc_httpd_addheader(httpd, "Date", datebuf); isc_httpd_addheader(httpd, "Expires", datebuf); - isc_httpd_addheader(httpd, "Last-Modified", datebuf); - isc_httpd_addheader(httpd, "Pragma: no-cache", NULL); - isc_httpd_addheader(httpd, "Cache-Control: no-cache", NULL); + + if (url != NULL && url->isstatic) { + char loadbuf[32]; + isc_time_formathttptimestamp(&url->loadtime, + loadbuf, sizeof(loadbuf)); + isc_httpd_addheader(httpd, "Last-Modified", loadbuf); + isc_httpd_addheader(httpd, "Cache-Control: public", NULL); + } else { + isc_httpd_addheader(httpd, "Last-Modified", datebuf); + isc_httpd_addheader(httpd, "Pragma: no-cache", NULL); + isc_httpd_addheader(httpd, "Cache-Control: no-cache", NULL); + } + isc_httpd_addheader(httpd, "Server: libisc", NULL); isc_httpd_addheaderuint(httpd, "Content-Length", isc_buffer_usedlength(&httpd->bodybuffer)); @@ -766,8 +764,7 @@ isc_httpd_recvdone(isc_task_t *task, isc_event_t *ev) } void -isc_httpdmgr_shutdown(isc_httpdmgr_t **httpdmgrp) -{ +isc_httpdmgr_shutdown(isc_httpdmgr_t **httpdmgrp) { isc_httpdmgr_t *httpdmgr; isc_httpd_t *httpd; httpdmgr = *httpdmgrp; @@ -794,8 +791,7 @@ isc_httpdmgr_shutdown(isc_httpdmgr_t **httpdmgrp) } static isc_result_t -grow_headerspace(isc_httpd_t *httpd) -{ +grow_headerspace(isc_httpd_t *httpd) { char *newspace; unsigned int newlen; isc_region_t r; @@ -816,8 +812,7 @@ grow_headerspace(isc_httpd_t *httpd) } isc_result_t -isc_httpd_response(isc_httpd_t *httpd) -{ +isc_httpd_response(isc_httpd_t *httpd) { isc_result_t result; unsigned int needlen; @@ -869,8 +864,7 @@ isc_httpd_addheader(isc_httpd_t *httpd, const char *name, } isc_result_t -isc_httpd_endheaders(isc_httpd_t *httpd) -{ +isc_httpd_endheaders(isc_httpd_t *httpd) { isc_result_t result; while (isc_buffer_availablelength(&httpd->headerbuffer) < 2) { @@ -912,8 +906,7 @@ isc_httpd_addheaderuint(isc_httpd_t *httpd, const char *name, int val) { } static void -isc_httpd_senddone(isc_task_t *task, isc_event_t *ev) -{ +isc_httpd_senddone(isc_task_t *task, isc_event_t *ev) { isc_httpd_t *httpd = ev->ev_arg; isc_region_t r; isc_socketevent_t *sev = (isc_socketevent_t *)ev; @@ -976,8 +969,7 @@ out: } static void -reset_client(isc_httpd_t *httpd) -{ +reset_client(isc_httpd_t *httpd) { /* * Catch errors here. We MUST be in RECV mode, and we MUST NOT have * any outstanding buffers. If we have buffers, we have a leak. @@ -988,6 +980,7 @@ reset_client(isc_httpd_t *httpd) httpd->recvbuf[0] = 0; httpd->recvlen = 0; + httpd->headers = NULL; httpd->method = ISC_HTTPD_METHODUNKNOWN; httpd->url = NULL; httpd->querystring = NULL; @@ -1002,6 +995,14 @@ isc_result_t isc_httpdmgr_addurl(isc_httpdmgr_t *httpdmgr, const char *url, isc_httpdaction_t *func, void *arg) { + return (isc_httpdmgr_addurl2(httpdmgr, url, ISC_FALSE, func, arg)); +} + +isc_result_t +isc_httpdmgr_addurl2(isc_httpdmgr_t *httpdmgr, const char *url, + isc_boolean_t isstatic, + isc_httpdaction_t *func, void *arg) +{ isc_httpdurl_t *item; if (url == NULL) { @@ -1021,6 +1022,9 @@ isc_httpdmgr_addurl(isc_httpdmgr_t *httpdmgr, const char *url, item->action = func; item->action_arg = arg; + item->isstatic = isstatic; + isc_time_now(&item->loadtime); + ISC_LINK_INIT(item, link); ISC_LIST_APPEND(httpdmgr->urls, item, link); diff --git a/lib/isc/include/isc/buffer.h b/lib/isc/include/isc/buffer.h index 72b85605..5aff01c2 100644 --- a/lib/isc/include/isc/buffer.h +++ b/lib/isc/include/isc/buffer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2010, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -787,7 +787,7 @@ ISC_LANG_ENDDECLS #define ISC__BUFFER_PUTMEM(_b, _base, _length) \ do { \ - memcpy(isc_buffer_used(_b), (_base), (_length)); \ + memmove(isc_buffer_used(_b), (_base), (_length)); \ (_b)->used += (_length); \ } while (0) @@ -797,7 +797,7 @@ ISC_LANG_ENDDECLS unsigned char *_cp; \ _length = strlen(_source); \ _cp = isc_buffer_used(_b); \ - memcpy(_cp, (_source), _length); \ + memmove(_cp, (_source), _length); \ (_b)->used += (_length); \ } while (0) diff --git a/lib/isc/include/isc/httpd.h b/lib/isc/include/isc/httpd.h index ba7f9001..06ce90f3 100644 --- a/lib/isc/include/isc/httpd.h +++ b/lib/isc/include/isc/httpd.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2006-2008, 2014 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 @@ -26,6 +26,23 @@ #include <isc/types.h> #include <isc/mutex.h> #include <isc/task.h> +#include <isc/time.h> + +/*% + * HTTP urls. These are the URLs we manage, and the function to call to + * provide the data for it. We pass in the base url (so the same function + * can handle multiple requests), and a structure to fill in to return a + * result to the client. We also pass in a pointer to be filled in for + * the data cleanup function. + */ +struct isc_httpdurl { + char *url; + isc_httpdaction_t *action; + void *action_arg; + isc_boolean_t isstatic; + isc_time_t loadtime; + ISC_LINK(isc_httpdurl_t) link; +}; #define HTTPD_EVENTCLASS ISC_EVENTCLASS(4300) #define HTTPD_SHUTDOWN (HTTPD_EVENTCLASS + 0x0001) @@ -50,6 +67,11 @@ isc_httpdmgr_addurl(isc_httpdmgr_t *httpdmgr, const char *url, isc_httpdaction_t *func, void *arg); isc_result_t +isc_httpdmgr_addurl2(isc_httpdmgr_t *httpdmgr, const char *url, + isc_boolean_t isstatic, + isc_httpdaction_t *func, void *arg); + +isc_result_t isc_httpd_response(isc_httpd_t *httpd); isc_result_t diff --git a/lib/isc/include/isc/platform.h.in b/lib/isc/include/isc/platform.h.in index 8c5bd1d8..07553e36 100644 --- a/lib/isc/include/isc/platform.h.in +++ b/lib/isc/include/isc/platform.h.in @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -199,6 +199,11 @@ */ @ISC_PLATFORM_NEEDMEMMOVE@ +/* + * Define if this system needs strcasestr. + */ +@ISC_PLATFORM_NEEDSTRCASESTR@ + /*** *** Miscellaneous. ***/ diff --git a/lib/isc/include/isc/radix.h b/lib/isc/include/isc/radix.h index 47512c72..1c1887f1 100644 --- a/lib/isc/include/isc/radix.h +++ b/lib/isc/include/isc/radix.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007, 2008, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2007, 2008, 2013, 2014 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 @@ -41,10 +41,10 @@ (pt).family = (na)->family; \ (pt).bitlen = (bits); \ if ((pt).family == AF_INET6) { \ - memcpy(&(pt).add.sin6, &(na)->type.in6, \ + memmove(&(pt).add.sin6, &(na)->type.in6, \ ((bits)+7)/8); \ } else \ - memcpy(&(pt).add.sin, &(na)->type.in, \ + memmove(&(pt).add.sin, &(na)->type.in, \ ((bits)+7)/8); \ } else { \ (pt).family = AF_UNSPEC; \ diff --git a/lib/isc/include/isc/string.h b/lib/isc/include/isc/string.h index b49fdbc3..585ef928 100644 --- a/lib/isc/include/isc/string.h +++ b/lib/isc/include/isc/string.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2014 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 @@ -226,6 +226,13 @@ isc_string_strlcat(char *dst, const char *src, size_t size); #define strlcat isc_string_strlcat #endif +char * +isc_string_strcasestr(const char *big, const char *little); + +#ifdef ISC_PLATFORM_NEEDSTRCASESTR +#define strcasestr isc_string_strcasestr +#endif + ISC_LANG_ENDDECLS #endif /* ISC_STRING_H */ diff --git a/lib/isc/include/isc/types.h b/lib/isc/include/isc/types.h index 8dbf67ed..a1edadd1 100644 --- a/lib/isc/include/isc/types.h +++ b/lib/isc/include/isc/types.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -103,7 +103,9 @@ typedef int (*isc_sockfdwatch_t)(isc_task_t *, isc_socket_t *, void *, int); /* The following cannot be listed alphabetically due to forward reference */ typedef isc_result_t (isc_httpdaction_t)(const char *url, + isc_httpdurl_t *urlinfo, const char *querystring, + const char *headers, void *arg, unsigned int *retcode, const char **retmsg, diff --git a/lib/isc/inet_pton.c b/lib/isc/inet_pton.c index ac4defde..4c60f825 100644 --- a/lib/isc/inet_pton.c +++ b/lib/isc/inet_pton.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1996-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -114,7 +114,7 @@ inet_pton4(const char *src, unsigned char *dst) { } if (octets < 4) return (0); - memcpy(dst, tmp, NS_INADDRSZ); + memmove(dst, tmp, NS_INADDRSZ); return (1); } @@ -210,6 +210,6 @@ inet_pton6(const char *src, unsigned char *dst) { } if (tp != endp) return (0); - memcpy(dst, tmp, NS_IN6ADDRSZ); + memmove(dst, tmp, NS_IN6ADDRSZ); return (1); } diff --git a/lib/isc/lex.c b/lib/isc/lex.c index a4bfcd1e..aa3a6c9f 100644 --- a/lib/isc/lex.c +++ b/lib/isc/lex.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -75,7 +75,7 @@ grow_data(isc_lex_t *lex, size_t *remainingp, char **currp, char **prevp) { new = isc_mem_get(lex->mctx, lex->max_token * 2 + 1); if (new == NULL) return (ISC_R_NOMEMORY); - memcpy(new, lex->data, lex->max_token + 1); + memmove(new, lex->data, lex->max_token + 1); *currp = new + (*currp - lex->data); if (*prevp != NULL) *prevp = new + (*prevp - lex->data); @@ -173,7 +173,7 @@ isc_lex_getspecials(isc_lex_t *lex, isc_lexspecials_t specials) { REQUIRE(VALID_LEX(lex)); - memcpy(specials, lex->specials, 256); + memmove(specials, lex->specials, 256); } void @@ -185,7 +185,7 @@ isc_lex_setspecials(isc_lex_t *lex, isc_lexspecials_t specials) { REQUIRE(VALID_LEX(lex)); - memcpy(lex->specials, specials, 256); + memmove(lex->specials, specials, 256); } static inline isc_result_t diff --git a/lib/isc/log.c b/lib/isc/log.c index d8262fb9..2cf584b4 100644 --- a/lib/isc/log.c +++ b/lib/isc/log.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1130,7 +1130,7 @@ sync_channellist(isc_logconfig_t *lcfg) { if (lcfg->channellist_count != 0) { bytes = lcfg->channellist_count * sizeof(ISC_LIST(isc_logchannellist_t)); - memcpy(lists, lcfg->channellists, bytes); + memmove(lists, lcfg->channellists, bytes); isc_mem_put(lctx->mctx, lcfg->channellists, bytes); } diff --git a/lib/isc/md5.c b/lib/isc/md5.c index 7c6419b2..5d212502 100644 --- a/lib/isc/md5.c +++ b/lib/isc/md5.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -217,11 +217,11 @@ isc_md5_update(isc_md5_t *ctx, const unsigned char *buf, unsigned int len) { t = 64 - (t & 0x3f); /* Space available in ctx->in (at least 1) */ if (t > len) { - memcpy((unsigned char *)ctx->in + 64 - t, buf, len); + memmove((unsigned char *)ctx->in + 64 - t, buf, len); return; } /* First chunk is an odd size */ - memcpy((unsigned char *)ctx->in + 64 - t, buf, t); + memmove((unsigned char *)ctx->in + 64 - t, buf, t); byteSwap(ctx->in, 16); transform(ctx->buf, ctx->in); buf += t; @@ -229,7 +229,7 @@ isc_md5_update(isc_md5_t *ctx, const unsigned char *buf, unsigned int len) { /* Process data in 64-byte chunks */ while (len >= 64) { - memcpy(ctx->in, buf, 64); + memmove(ctx->in, buf, 64); byteSwap(ctx->in, 16); transform(ctx->buf, ctx->in); buf += 64; @@ -237,7 +237,7 @@ isc_md5_update(isc_md5_t *ctx, const unsigned char *buf, unsigned int len) { } /* Handle any remaining bytes of data. */ - memcpy(ctx->in, buf, len); + memmove(ctx->in, buf, len); } /*! @@ -271,7 +271,7 @@ isc_md5_final(isc_md5_t *ctx, unsigned char *digest) { transform(ctx->buf, ctx->in); byteSwap(ctx->buf, 4); - memcpy(digest, ctx->buf, 16); + memmove(digest, ctx->buf, 16); memset(ctx, 0, sizeof(isc_md5_t)); /* In case it's sensitive */ } #endif diff --git a/lib/isc/mem.c b/lib/isc/mem.c index f2a3adba..f45a077e 100644 --- a/lib/isc/mem.c +++ b/lib/isc/mem.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2010, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010, 2012-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1997-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -553,9 +553,9 @@ more_basic_blocks(isc__mem_t *ctx) { return (ISC_FALSE); } if (ctx->basic_table_size != 0) { - memcpy(table, ctx->basic_table, - ctx->basic_table_size * - sizeof(unsigned char *)); + memmove(table, ctx->basic_table, + ctx->basic_table_size * + sizeof(unsigned char *)); (ctx->memfree)(ctx->arg, ctx->basic_table); } ctx->basic_table = table; @@ -1603,7 +1603,7 @@ isc___mem_reallocate(isc_mem_t *ctx0, void *ptr, size_t size FLARG) { oldsize -= ALIGNMENT_SIZE; } copysize = (oldsize > size) ? size : oldsize; - memcpy(new_ptr, ptr, copysize); + memmove(new_ptr, ptr, copysize); isc__mem_free(ctx0, ptr FLARG_PASS); } } else if (ptr != NULL) diff --git a/lib/isc/netaddr.c b/lib/isc/netaddr.c index 5cce1bc1..0940df17 100644 --- a/lib/isc/netaddr.c +++ b/lib/isc/netaddr.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2010-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2010-2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -340,7 +340,7 @@ isc_netaddr_fromsockaddr(isc_netaddr_t *t, const isc_sockaddr_t *s) { t->zone = 0; break; case AF_INET6: - memcpy(&t->type.in6, &s->type.sin6.sin6_addr, 16); + memmove(&t->type.in6, &s->type.sin6.sin6_addr, 16); #ifdef ISC_PLATFORM_HAVESCOPEID t->zone = s->type.sin6.sin6_scope_id; #else @@ -349,7 +349,7 @@ isc_netaddr_fromsockaddr(isc_netaddr_t *t, const isc_sockaddr_t *s) { break; #ifdef ISC_PLATFORM_HAVESYSUNH case AF_UNIX: - memcpy(t->type.un, s->type.sunix.sun_path, sizeof(t->type.un)); + memmove(t->type.un, s->type.sunix.sun_path, sizeof(t->type.un)); t->zone = 0; break; #endif @@ -429,6 +429,6 @@ isc_netaddr_fromv4mapped(isc_netaddr_t *t, const isc_netaddr_t *s) { memset(t, 0, sizeof(*t)); t->family = AF_INET; - memcpy(&t->type.in, (char *)&src->type.in6 + 12, 4); + memmove(&t->type.in, (char *)&src->type.in6 + 12, 4); return; } diff --git a/lib/isc/radix.c b/lib/isc/radix.c index 35088788..82090d1f 100644 --- a/lib/isc/radix.c +++ b/lib/isc/radix.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2007-2009, 2011-2014 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 @@ -62,11 +62,11 @@ _new_prefix(isc_mem_t *mctx, isc_prefix_t **target, int family, void *dest, if (family == AF_INET6) { prefix->bitlen = (bitlen >= 0) ? bitlen : 128; - memcpy(&prefix->add.sin6, dest, 16); + memmove(&prefix->add.sin6, dest, 16); } else { /* AF_UNSPEC is "any" or "none"--treat it as AF_INET */ prefix->bitlen = (bitlen >= 0) ? bitlen : 32; - memcpy(&prefix->add.sin, dest, 4); + memmove(&prefix->add.sin, dest, 4); } prefix->family = family; diff --git a/lib/isc/sha1.c b/lib/isc/sha1.c index cce96036..aca90b43 100644 --- a/lib/isc/sha1.c +++ b/lib/isc/sha1.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2011, 2012, 2014 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 @@ -209,7 +209,7 @@ transform(isc_uint32_t state[5], const unsigned char buffer[64]) { INSIST(state != NULL); block = &workspace; - (void)memcpy(block, buffer, 64); + (void)memmove(block, buffer, 64); /* Copy context->state[] to working vars */ a = state[0]; @@ -301,7 +301,7 @@ isc_sha1_update(isc_sha1_t *context, const unsigned char *data, context->count[1] += (len >> 29) + 1; j = (j >> 3) & 63; if ((j + len) > 63) { - (void)memcpy(&context->buffer[j], data, (i = 64 - j)); + (void)memmove(&context->buffer[j], data, (i = 64 - j)); transform(context->state, context->buffer); for (; i + 63 < len; i += 64) transform(context->state, &data[i]); @@ -310,7 +310,7 @@ isc_sha1_update(isc_sha1_t *context, const unsigned char *data, i = 0; } - (void)memcpy(&context->buffer[j], &data[i], len - i); + (void)memmove(&context->buffer[j], &data[i], len - i); } diff --git a/lib/isc/sha2.c b/lib/isc/sha2.c index db2e3496..5f3554fa 100644 --- a/lib/isc/sha2.c +++ b/lib/isc/sha2.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2007, 2009, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2005-2007, 2009, 2011, 2012, 2014 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 @@ -560,8 +560,8 @@ isc_sha224_init(isc_sha224_t *context) { if (context == (isc_sha256_t *)0) { return; } - memcpy(context->state, sha224_initial_hash_value, - ISC_SHA256_DIGESTLENGTH); + memmove(context->state, sha224_initial_hash_value, + ISC_SHA256_DIGESTLENGTH); memset(context->buffer, 0, ISC_SHA256_BLOCK_LENGTH); context->bitcount = 0; } @@ -580,7 +580,7 @@ void isc_sha224_final(isc_uint8_t digest[], isc_sha224_t *context) { isc_uint8_t sha256_digest[ISC_SHA256_DIGESTLENGTH]; isc_sha256_final(sha256_digest, (isc_sha256_t *)context); - memcpy(digest, sha256_digest, ISC_SHA224_DIGESTLENGTH); + memmove(digest, sha256_digest, ISC_SHA224_DIGESTLENGTH); memset(sha256_digest, 0, ISC_SHA256_DIGESTLENGTH); } @@ -590,7 +590,7 @@ isc_sha256_init(isc_sha256_t *context) { if (context == (isc_sha256_t *)0) { return; } - memcpy(context->state, sha256_initial_hash_value, + memmove(context->state, sha256_initial_hash_value, ISC_SHA256_DIGESTLENGTH); memset(context->buffer, 0, ISC_SHA256_BLOCK_LENGTH); context->bitcount = 0; @@ -803,7 +803,7 @@ isc_sha256_update(isc_sha256_t *context, const isc_uint8_t *data, size_t len) { if (len >= freespace) { /* Fill the buffer completely and process it */ - memcpy(&context->buffer[usedspace], data, freespace); + memmove(&context->buffer[usedspace], data, freespace); context->bitcount += freespace << 3; len -= freespace; data += freespace; @@ -811,7 +811,7 @@ isc_sha256_update(isc_sha256_t *context, const isc_uint8_t *data, size_t len) { (isc_uint32_t*)context->buffer); } else { /* The buffer is not yet full */ - memcpy(&context->buffer[usedspace], data, len); + memmove(&context->buffer[usedspace], data, len); context->bitcount += len << 3; /* Clean up: */ usedspace = freespace = 0; @@ -822,7 +822,7 @@ isc_sha256_update(isc_sha256_t *context, const isc_uint8_t *data, size_t len) { } while (len >= ISC_SHA256_BLOCK_LENGTH) { /* Process as many complete blocks as we can */ - memcpy(context->buffer, data, ISC_SHA256_BLOCK_LENGTH); + memmove(context->buffer, data, ISC_SHA256_BLOCK_LENGTH); isc_sha256_transform(context, (isc_uint32_t*)context->buffer); context->bitcount += ISC_SHA256_BLOCK_LENGTH << 3; len -= ISC_SHA256_BLOCK_LENGTH; @@ -830,7 +830,7 @@ isc_sha256_update(isc_sha256_t *context, const isc_uint8_t *data, size_t len) { } if (len > 0U) { /* There's left-overs, so save 'em */ - memcpy(context->buffer, data, len); + memmove(context->buffer, data, len); context->bitcount += len << 3; } /* Clean up: */ @@ -900,7 +900,7 @@ isc_sha256_final(isc_uint8_t digest[], isc_sha256_t *context) { } } #else - memcpy(d, context->state, ISC_SHA256_DIGESTLENGTH); + memmove(d, context->state, ISC_SHA256_DIGESTLENGTH); #endif } @@ -916,8 +916,8 @@ isc_sha512_init(isc_sha512_t *context) { if (context == (isc_sha512_t *)0) { return; } - memcpy(context->state, sha512_initial_hash_value, - ISC_SHA512_DIGESTLENGTH); + memmove(context->state, sha512_initial_hash_value, + ISC_SHA512_DIGESTLENGTH); memset(context->buffer, 0, ISC_SHA512_BLOCK_LENGTH); context->bitcount[0] = context->bitcount[1] = 0; } @@ -1122,7 +1122,7 @@ void isc_sha512_update(isc_sha512_t *context, const isc_uint8_t *data, size_t le if (len >= freespace) { /* Fill the buffer completely and process it */ - memcpy(&context->buffer[usedspace], data, freespace); + memmove(&context->buffer[usedspace], data, freespace); ADDINC128(context->bitcount, freespace << 3); len -= freespace; data += freespace; @@ -1130,7 +1130,7 @@ void isc_sha512_update(isc_sha512_t *context, const isc_uint8_t *data, size_t le (isc_uint64_t*)context->buffer); } else { /* The buffer is not yet full */ - memcpy(&context->buffer[usedspace], data, len); + memmove(&context->buffer[usedspace], data, len); ADDINC128(context->bitcount, len << 3); /* Clean up: */ usedspace = freespace = 0; @@ -1141,7 +1141,7 @@ void isc_sha512_update(isc_sha512_t *context, const isc_uint8_t *data, size_t le } while (len >= ISC_SHA512_BLOCK_LENGTH) { /* Process as many complete blocks as we can */ - memcpy(context->buffer, data, ISC_SHA512_BLOCK_LENGTH); + memmove(context->buffer, data, ISC_SHA512_BLOCK_LENGTH); isc_sha512_transform(context, (isc_uint64_t*)context->buffer); ADDINC128(context->bitcount, ISC_SHA512_BLOCK_LENGTH << 3); len -= ISC_SHA512_BLOCK_LENGTH; @@ -1149,7 +1149,7 @@ void isc_sha512_update(isc_sha512_t *context, const isc_uint8_t *data, size_t le } if (len > 0U) { /* There's left-overs, so save 'em */ - memcpy(context->buffer, data, len); + memmove(context->buffer, data, len); ADDINC128(context->bitcount, len << 3); } /* Clean up: */ @@ -1224,7 +1224,7 @@ void isc_sha512_final(isc_uint8_t digest[], isc_sha512_t *context) { } } #else - memcpy(d, context->state, ISC_SHA512_DIGESTLENGTH); + memmove(d, context->state, ISC_SHA512_DIGESTLENGTH); #endif } @@ -1239,8 +1239,8 @@ isc_sha384_init(isc_sha384_t *context) { if (context == (isc_sha384_t *)0) { return; } - memcpy(context->state, sha384_initial_hash_value, - ISC_SHA512_DIGESTLENGTH); + memmove(context->state, sha384_initial_hash_value, + ISC_SHA512_DIGESTLENGTH); memset(context->buffer, 0, ISC_SHA384_BLOCK_LENGTH); context->bitcount[0] = context->bitcount[1] = 0; } @@ -1277,7 +1277,7 @@ isc_sha384_final(isc_uint8_t digest[], isc_sha384_t *context) { } } #else - memcpy(d, context->state, ISC_SHA384_DIGESTLENGTH); + memmove(d, context->state, ISC_SHA384_DIGESTLENGTH); #endif } diff --git a/lib/isc/sockaddr.c b/lib/isc/sockaddr.c index 91a949b6..cee6d700 100644 --- a/lib/isc/sockaddr.c +++ b/lib/isc/sockaddr.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2010-2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2010-2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -332,7 +332,7 @@ isc_sockaddr_v6fromin(isc_sockaddr_t *sockaddr, const struct in_addr *ina, #endif sockaddr->type.sin6.sin6_addr.s6_addr[10] = 0xff; sockaddr->type.sin6.sin6_addr.s6_addr[11] = 0xff; - memcpy(&sockaddr->type.sin6.sin6_addr.s6_addr[12], ina, 4); + memmove(&sockaddr->type.sin6.sin6_addr.s6_addr[12], ina, 4); sockaddr->type.sin6.sin6_port = htons(port); sockaddr->length = sizeof(sockaddr->type.sin6); ISC_LINK_INIT(sockaddr, link); @@ -386,7 +386,7 @@ isc_sockaddr_fromnetaddr(isc_sockaddr_t *sockaddr, const isc_netaddr_t *na, #ifdef ISC_PLATFORM_HAVESALEN sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6); #endif - memcpy(&sockaddr->type.sin6.sin6_addr, &na->type.in6, 16); + memmove(&sockaddr->type.sin6.sin6_addr, &na->type.in6, 16); #ifdef ISC_PLATFORM_HAVESCOPEID sockaddr->type.sin6.sin6_scope_id = isc_netaddr_getzone(na); #endif diff --git a/lib/isc/stats.c b/lib/isc/stats.c index 8b624b2d..89e34b37 100644 --- a/lib/isc/stats.c +++ b/lib/isc/stats.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012, 2014 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 @@ -275,8 +275,8 @@ copy_counters(isc_stats_t *stats) { } #else UNUSED(i); - memcpy(stats->copiedcounters, stats->counters, - stats->ncounters * sizeof(isc_stat_t)); + memmove(stats->copiedcounters, stats->counters, + stats->ncounters * sizeof(isc_stat_t)); #endif #ifdef ISC_RWLOCK_USEATOMIC diff --git a/lib/isc/string.c b/lib/isc/string.c index cba517c5..aa49e32f 100644 --- a/lib/isc/string.c +++ b/lib/isc/string.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2011, 2012, 2014 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,38 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id$ */ +/* + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ /*! \file */ @@ -188,7 +219,7 @@ isc_string_regiondup(isc_mem_t *mctx, const isc_region_t *source) { target = (char *) isc_mem_allocate(mctx, source->length + 1); if (target != NULL) { - memcpy(source->base, target, source->length); + memmove(source->base, target, source->length); target[source->length] = '\0'; } @@ -269,3 +300,24 @@ isc_string_strlcat(char *dst, const char *src, size_t size) return(dlen + (s - src)); /* count does not include NUL */ } + +char * +isc_string_strcasestr(const char *str, const char *search) { + char c, sc, *s; + size_t len; + + if ((c = *search++) != 0) { + c = tolower((unsigned char) c); + len = strlen(search); + do { + do { + if ((sc = *str++) == 0) + return (NULL); + } while ((char) tolower((unsigned char) sc) != c); + } while (strncasecmp(str, search, len) != 0); + str--; + } + DE_CONST(str, s); + return (s); + +} diff --git a/lib/isc/tests/Makefile.in b/lib/isc/tests/Makefile.in index 66d0b152..a3121601 100644 --- a/lib/isc/tests/Makefile.in +++ b/lib/isc/tests/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2011-2013 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2011-2014 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 @@ -38,14 +38,16 @@ OBJS = isctest.@O@ SRCS = isctest.c taskpool_test.c socket_test.c hash_test.c \ lex_test.c \ sockaddr_test.c symtab_test.c task_test.c queue_test.c \ - parse_test.c pool_test.c regex_test.c safe_test.c + parse_test.c pool_test.c regex_test.c safe_test.c \ + time_test.c SUBDIRS = TARGETS = taskpool_test@EXEEXT@ socket_test@EXEEXT@ hash_test@EXEEXT@ \ lex_test@EXEEXT@ \ sockaddr_test@EXEEXT@ symtab_test@EXEEXT@ task_test@EXEEXT@ \ queue_test@EXEEXT@ parse_test@EXEEXT@ pool_test@EXEEXT@ \ - regex_test@EXEEXT@ safe_test@EXEEXT@ + regex_test@EXEEXT@ safe_test@EXEEXT@ \ + time_test@EXEEXT@ @BIND9_MAKE_RULES@ @@ -97,6 +99,10 @@ safe_test@EXEEXT@: safe_test.@O@ ${ISCDEPLIBS} ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \ safe_test.@O@ ${ISCLIBS} ${LIBS} +time_test@EXEEXT@: time_test.@O@ ${ISCDEPLIBS} + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \ + time_test.@O@ ${ISCLIBS} ${LIBS} + unit:: sh ${top_srcdir}/unit/unittest.sh diff --git a/lib/isc/tests/hash_test.c b/lib/isc/tests/hash_test.c index 836d7b67..84548081 100644 --- a/lib/isc/tests/hash_test.c +++ b/lib/isc/tests/hash_test.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2011, 2012, 2014 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 @@ -963,7 +963,7 @@ ATF_TC_BODY(isc_hmacsha1, tc) { hash_test_key_t *test_key = test_keys; while (testcase->input != NULL && testcase->result != NULL) { - memcpy(buffer, test_key->key, test_key->len); + memmove(buffer, test_key->key, test_key->len); isc_hmacsha1_init(&hmacsha1, buffer, test_key->len); isc_hmacsha1_update(&hmacsha1, (const isc_uint8_t *) testcase->input, @@ -1126,7 +1126,7 @@ ATF_TC_BODY(isc_hmacsha224, tc) { hash_test_key_t *test_key = test_keys; while (testcase->input != NULL && testcase->result != NULL) { - memcpy(buffer, test_key->key, test_key->len); + memmove(buffer, test_key->key, test_key->len); isc_hmacsha224_init(&hmacsha224, buffer, test_key->len); isc_hmacsha224_update(&hmacsha224, (const isc_uint8_t *) testcase->input, @@ -1289,7 +1289,7 @@ ATF_TC_BODY(isc_hmacsha256, tc) { hash_test_key_t *test_key = test_keys; while (testcase->input != NULL && testcase->result != NULL) { - memcpy(buffer, test_key->key, test_key->len); + memmove(buffer, test_key->key, test_key->len); isc_hmacsha256_init(&hmacsha256, buffer, test_key->len); isc_hmacsha256_update(&hmacsha256, (const isc_uint8_t *) testcase->input, @@ -1458,7 +1458,7 @@ ATF_TC_BODY(isc_hmacsha384, tc) { hash_test_key_t *test_key = test_keys; while (testcase->input != NULL && testcase->result != NULL) { - memcpy(buffer, test_key->key, test_key->len); + memmove(buffer, test_key->key, test_key->len); isc_hmacsha384_init(&hmacsha384, buffer, test_key->len); isc_hmacsha384_update(&hmacsha384, (const isc_uint8_t *) testcase->input, @@ -1627,7 +1627,7 @@ ATF_TC_BODY(isc_hmacsha512, tc) { hash_test_key_t *test_key = test_keys; while (testcase->input != NULL && testcase->result != NULL) { - memcpy(buffer, test_key->key, test_key->len); + memmove(buffer, test_key->key, test_key->len); isc_hmacsha512_init(&hmacsha512, buffer, test_key->len); isc_hmacsha512_update(&hmacsha512, (const isc_uint8_t *) testcase->input, @@ -1770,7 +1770,7 @@ ATF_TC_BODY(isc_hmacmd5, tc) { hash_test_key_t *test_key = test_keys; while (testcase->input != NULL && testcase->result != NULL) { - memcpy(buffer, test_key->key, test_key->len); + memmove(buffer, test_key->key, test_key->len); isc_hmacmd5_init(&hmacmd5, buffer, test_key->len); isc_hmacmd5_update(&hmacmd5, (const isc_uint8_t *) testcase->input, diff --git a/lib/isc/tests/time_test.c b/lib/isc/tests/time_test.c new file mode 100644 index 00000000..caddec2b --- /dev/null +++ b/lib/isc/tests/time_test.c @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2014 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. + */ + +#include <config.h> +#include <stdlib.h> + +#include <atf-c.h> + +#include <isc/time.h> +#include <isc/result.h> + +ATF_TC(isc_time_parsehttptimestamp); +ATF_TC_HEAD(isc_time_parsehttptimestamp, tc) { + atf_tc_set_md_var(tc, "descr", "parse http time stamp"); +} +ATF_TC_BODY(isc_time_parsehttptimestamp, tc) { + isc_result_t result; + isc_time_t t, x; + char buf[100]; + + setenv("TZ", "PST8PDT", 1); + result = isc_time_now(&t); + ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); + + isc_time_formathttptimestamp(&t, buf, sizeof(buf)); + result = isc_time_parsehttptimestamp(buf, &x); + ATF_REQUIRE_EQ(result, ISC_R_SUCCESS); + ATF_REQUIRE_EQ(isc_time_seconds(&t), isc_time_seconds(&x)); +} + +/* + * Main + */ +ATF_TP_ADD_TCS(tp) { + ATF_TP_ADD_TC(tp, isc_time_parsehttptimestamp); + return (atf_no_error()); +} + diff --git a/lib/isc/unix/file.c b/lib/isc/unix/file.c index d88ca29a..c6b9a29e 100644 --- a/lib/isc/unix/file.c +++ b/lib/isc/unix/file.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -489,7 +489,7 @@ isc_file_progname(const char *filename, char *buf, size_t buflen) { if (len > buflen) return (ISC_R_NOSPACE); - memcpy(buf, base, len); + memmove(buf, base, len); return (ISC_R_SUCCESS); } diff --git a/lib/isc/unix/ifiter_getifaddrs.c b/lib/isc/unix/ifiter_getifaddrs.c index 637450aa..cf1c0c18 100644 --- a/lib/isc/unix/ifiter_getifaddrs.c +++ b/lib/isc/unix/ifiter_getifaddrs.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -159,7 +159,7 @@ internal_current(isc_interfaceiter_t *iter) { namelen = sizeof(iter->current.name) - 1; memset(iter->current.name, 0, sizeof(iter->current.name)); - memcpy(iter->current.name, ifa->ifa_name, namelen); + memmove(iter->current.name, ifa->ifa_name, namelen); iter->current.flags = 0; diff --git a/lib/isc/unix/ifiter_ioctl.c b/lib/isc/unix/ifiter_ioctl.c index 38c34fd6..f0026c28 100644 --- a/lib/isc/unix/ifiter_ioctl.c +++ b/lib/isc/unix/ifiter_ioctl.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -398,7 +398,7 @@ isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp) { static void get_inaddr(isc_netaddr_t *dst, struct in_addr *src) { dst->family = AF_INET; - memcpy(&dst->type.in, src, sizeof(struct in_addr)); + memmove(&dst->type.in, src, sizeof(struct in_addr)); } static isc_result_t @@ -454,7 +454,7 @@ internal_current4(isc_interfaceiter_t *iter) { ifrp = (struct ifreq *)((char *) iter->ifc.ifc_req + iter->pos); memset(&ifreq, 0, sizeof(ifreq)); - memcpy(&ifreq, ifrp, sizeof(ifreq)); + memmove(&ifreq, ifrp, sizeof(ifreq)); family = ifreq.ifr_addr.sa_family; #if defined(ISC_PLATFORM_HAVEIPV6) @@ -469,7 +469,7 @@ internal_current4(isc_interfaceiter_t *iter) { INSIST(sizeof(ifreq.ifr_name) <= sizeof(iter->current.name)); memset(iter->current.name, 0, sizeof(iter->current.name)); - memcpy(iter->current.name, ifreq.ifr_name, sizeof(ifreq.ifr_name)); + memmove(iter->current.name, ifreq.ifr_name, sizeof(ifreq.ifr_name)); get_addr(family, &iter->current.address, (struct sockaddr *)&ifrp->ifr_addr, ifreq.ifr_name); @@ -524,8 +524,8 @@ internal_current4(isc_interfaceiter_t *iter) { #if !defined(ISC_PLATFORM_HAVEIF_LADDRREQ) && defined(SIOCGLIFADDR) memset(&lifreq, 0, sizeof(lifreq)); - memcpy(lifreq.lifr_name, iter->current.name, sizeof(lifreq.lifr_name)); - memcpy(&lifreq.lifr_addr, &iter->current.address.type.in6, + memmove(lifreq.lifr_name, iter->current.name, sizeof(lifreq.lifr_name)); + memmove(&lifreq.lifr_addr, &iter->current.address.type.in6, sizeof(iter->current.address.type.in6)); if (ioctl(iter->socket, SIOCGLIFADDR, &lifreq) < 0) { @@ -599,7 +599,7 @@ internal_current4(isc_interfaceiter_t *iter) { * Get the network mask. */ memset(&ifreq, 0, sizeof(ifreq)); - memcpy(&ifreq, ifrp, sizeof(ifreq)); + memmove(&ifreq, ifrp, sizeof(ifreq)); /* * Ignore the HP/UX warning about "integer overflow during * conversion. It comes from its own macro definition, @@ -637,7 +637,7 @@ internal_current6(isc_interfaceiter_t *iter) { ifrp = (struct LIFREQ *)((char *) iter->lifc.lifc_req + iter->pos6); memset(&lifreq, 0, sizeof(lifreq)); - memcpy(&lifreq, ifrp, sizeof(lifreq)); + memmove(&lifreq, ifrp, sizeof(lifreq)); family = lifreq.lifr_addr.ss_family; #ifdef ISC_PLATFORM_HAVEIPV6 @@ -652,7 +652,7 @@ internal_current6(isc_interfaceiter_t *iter) { INSIST(sizeof(lifreq.lifr_name) <= sizeof(iter->current.name)); memset(iter->current.name, 0, sizeof(iter->current.name)); - memcpy(iter->current.name, lifreq.lifr_name, sizeof(lifreq.lifr_name)); + memmove(iter->current.name, lifreq.lifr_name, sizeof(lifreq.lifr_name)); get_addr(family, &iter->current.address, (struct sockaddr *)&lifreq.lifr_addr, lifreq.lifr_name); @@ -739,7 +739,7 @@ internal_current6(isc_interfaceiter_t *iter) { * Get the network mask. Netmask already zeroed. */ memset(&lifreq, 0, sizeof(lifreq)); - memcpy(&lifreq, ifrp, sizeof(lifreq)); + memmove(&lifreq, ifrp, sizeof(lifreq)); #ifdef lifr_addrlen /* diff --git a/lib/isc/unix/ifiter_sysctl.c b/lib/isc/unix/ifiter_sysctl.c index 9d5bf6d9..102ecc1f 100644 --- a/lib/isc/unix/ifiter_sysctl.c +++ b/lib/isc/unix/ifiter_sysctl.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -37,7 +37,7 @@ sizeof(__uint64_t)) #else #define ROUNDUP(a) ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) \ - : sizeof(long)) + : sizeof(long)) #endif #define IFITER_MAGIC ISC_MAGIC('I', 'F', 'I', 'S') @@ -58,9 +58,9 @@ struct isc_interfaceiter { static int mib[6] = { CTL_NET, PF_ROUTE, - 0, + 0, 0, /* Any address family. */ - NET_RT_IFLIST, + NET_RT_IFLIST, 0 /* Flags. */ }; @@ -171,7 +171,7 @@ internal_current(isc_interfaceiter_t *iter) { namelen = sizeof(iter->current.name) - 1; memset(iter->current.name, 0, sizeof(iter->current.name)); - memcpy(iter->current.name, sdl->sdl_data, namelen); + memmove(iter->current.name, sdl->sdl_data, namelen); iter->current.flags = 0; diff --git a/lib/isc/unix/include/isc/time.h b/lib/isc/unix/include/isc/time.h index d81d854a..2a83f099 100644 --- a/lib/isc/unix/include/isc/time.h +++ b/lib/isc/unix/include/isc/time.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2009, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -315,6 +315,16 @@ isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len); * */ +isc_result_t +isc_time_parsehttptimestamp(char *input, isc_time_t *t); +/*%< + * Parse the time in 'input' into the isc_time_t pointed to by 't', + * expecting a format like "Mon, 30 Aug 2000 04:06:47 GMT" + * + * Requires: + *\li 'buf' and 't' are not NULL. + */ + void isc_time_formatISO8601(const isc_time_t *t, char *buf, unsigned int len); /*%< diff --git a/lib/isc/unix/interfaceiter.c b/lib/isc/unix/interfaceiter.c index af2b06d0..7272f718 100644 --- a/lib/isc/unix/interfaceiter.c +++ b/lib/isc/unix/interfaceiter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2008, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -79,14 +79,14 @@ get_addr(unsigned int family, isc_netaddr_t *dst, struct sockaddr *src, dst->family = family; switch (family) { case AF_INET: - memcpy(&dst->type.in, - &((struct sockaddr_in *) src)->sin_addr, - sizeof(struct in_addr)); + memmove(&dst->type.in, + &((struct sockaddr_in *) src)->sin_addr, + sizeof(struct in_addr)); break; case AF_INET6: sa6 = (struct sockaddr_in6 *)src; - memcpy(&dst->type.in6, &sa6->sin6_addr, - sizeof(struct in6_addr)); + memmove(&dst->type.in6, &sa6->sin6_addr, + sizeof(struct in6_addr)); #ifdef ISC_PLATFORM_HAVESCOPEID if (sa6->sin6_scope_id != 0) isc_netaddr_setzone(dst, sa6->sin6_scope_id); @@ -105,8 +105,8 @@ get_addr(unsigned int family, isc_netaddr_t *dst, struct sockaddr *src, if (IN6_IS_ADDR_LINKLOCAL(&sa6->sin6_addr)) { isc_uint16_t zone16; - memcpy(&zone16, &sa6->sin6_addr.s6_addr[2], - sizeof(zone16)); + memmove(&zone16, &sa6->sin6_addr.s6_addr[2], + sizeof(zone16)); zone16 = ntohs(zone16); if (zone16 != 0) { /* the zone ID is embedded */ @@ -252,7 +252,7 @@ isc_interfaceiter_current(isc_interfaceiter_t *iter, isc_interface_t *ifdata) { REQUIRE(iter->result == ISC_R_SUCCESS); - memcpy(ifdata, &iter->current, sizeof(*ifdata)); + memmove(ifdata, &iter->current, sizeof(*ifdata)); return (ISC_R_SUCCESS); } diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 4237af40..d1ac96f5 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -1261,8 +1261,8 @@ process_cmsg(isc__socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { && cmsgp->cmsg_type == IPV6_PKTINFO) { pktinfop = (struct in6_pktinfo *)CMSG_DATA(cmsgp); - memcpy(&dev->pktinfo, pktinfop, - sizeof(struct in6_pktinfo)); + memmove(&dev->pktinfo, pktinfop, + sizeof(struct in6_pktinfo)); dev->attributes |= ISC_SOCKEVENTATTR_PKTINFO; socket_log(sock, NULL, TRACE, isc_msgcat, ISC_MSGSET_SOCKET, @@ -1280,7 +1280,7 @@ process_cmsg(isc__socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { && cmsgp->cmsg_type == SCM_TIMESTAMP) { struct timeval tv; timevalp = CMSG_DATA(cmsgp); - memcpy(&tv, timevalp, sizeof(tv)); + memmove(&tv, timevalp, sizeof(tv)); dev->timestamp.seconds = tv.tv_sec; dev->timestamp.nanoseconds = tv.tv_usec * 1000; dev->attributes |= ISC_SOCKEVENTATTR_TIMESTAMP; @@ -1406,7 +1406,7 @@ build_msghdr_send(isc__socket_t *sock, isc_socketevent_t *dev, cmsgp->cmsg_type = IPV6_PKTINFO; cmsgp->cmsg_len = cmsg_len(sizeof(struct in6_pktinfo)); pktinfop = (struct in6_pktinfo *)CMSG_DATA(cmsgp); - memcpy(pktinfop, &dev->pktinfo, sizeof(struct in6_pktinfo)); + memmove(pktinfop, &dev->pktinfo, sizeof(struct in6_pktinfo)); #if defined(IPV6_USE_MIN_MTU) /* * Set IPV6_USE_MIN_MTU as a per packet option as FreeBSD @@ -1421,7 +1421,7 @@ build_msghdr_send(isc__socket_t *sock, isc_socketevent_t *dev, cmsgp->cmsg_level = IPPROTO_IPV6; cmsgp->cmsg_type = IPV6_USE_MIN_MTU; cmsgp->cmsg_len = cmsg_len(sizeof(use_min_mtu)); - memcpy(CMSG_DATA(cmsgp), &use_min_mtu, sizeof(use_min_mtu)); + memmove(CMSG_DATA(cmsgp), &use_min_mtu, sizeof(use_min_mtu)); #endif } #endif /* USE_CMSG && ISC_PLATFORM_HAVEIPV6 */ @@ -3863,10 +3863,10 @@ watcher(void *uap) { cc = ioctl(manager->devpoll_fd, DP_POLL, &dvp); #elif defined(USE_SELECT) LOCK(&manager->lock); - memcpy(manager->read_fds_copy, manager->read_fds, - manager->fd_bufsize); - memcpy(manager->write_fds_copy, manager->write_fds, - manager->fd_bufsize); + memmove(manager->read_fds_copy, manager->read_fds, + manager->fd_bufsize); + memmove(manager->write_fds_copy, manager->write_fds, + manager->fd_bufsize); maxfd = manager->maxfd + 1; UNLOCK(&manager->lock); @@ -5849,9 +5849,9 @@ isc__socketmgr_waitevents(isc_socketmgr_t *manager0, struct timeval *tvp, swait_private.nevents = ioctl(manager->devpoll_fd, DP_POLL, &dvp); n = swait_private.nevents; #elif defined(USE_SELECT) - memcpy(manager->read_fds_copy, manager->read_fds, manager->fd_bufsize); - memcpy(manager->write_fds_copy, manager->write_fds, - manager->fd_bufsize); + memmove(manager->read_fds_copy, manager->read_fds, manager->fd_bufsize); + memmove(manager->write_fds_copy, manager->write_fds, + manager->fd_bufsize); swait_private.readset = manager->read_fds_copy; swait_private.writeset = manager->write_fds_copy; diff --git a/lib/isc/unix/time.c b/lib/isc/unix/time.c index e820afb1..9039b06a 100644 --- a/lib/isc/unix/time.c +++ b/lib/isc/unix/time.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2011, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -23,6 +23,7 @@ #include <errno.h> #include <limits.h> +#include <stdlib.h> #include <syslog.h> #include <time.h> @@ -407,6 +408,49 @@ isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len) { INSIST(flen < len); } +static time_t +timetfromtm(struct tm *tm) { + time_t ret; + int i, yday = 0, leapday; + int mdays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 }; + + leapday = ((((tm->tm_year + 1900 ) % 4) == 0 && + ((tm->tm_year + 1900 ) % 100) != 0) || + ((tm->tm_year + 1900 ) % 400) == 0) ? 1 : 0; + mdays[1] += leapday; + + yday = tm->tm_mday - 1; + for (i = 1; i <= tm->tm_mon; i++) + yday += mdays[i - 1]; + ret = tm->tm_sec + + (60 * tm->tm_min) + + (3600 * tm->tm_hour) + + (86400 * (yday + + ((tm->tm_year - 70) * 365) + + ((tm->tm_year - 69) / 4) - + ((tm->tm_year - 1) / 100) + + ((tm->tm_year + 299) / 400))); + return (ret); +} + +isc_result_t +isc_time_parsehttptimestamp(char *buf, isc_time_t *t) { + struct tm t_tm; + time_t when; + char *p; + + REQUIRE(buf != NULL); + REQUIRE(t != NULL); + p = strptime(buf, "%a, %d %b %Y %H:%M:%S", &t_tm); + if (p == NULL) + return (ISC_R_UNEXPECTED); + when = timetfromtm(&t_tm); + if (when == -1) + return (ISC_R_UNEXPECTED); + isc_time_set(t, when, 0); + return (ISC_R_SUCCESS); +} + void isc_time_formatISO8601(const isc_time_t *t, char *buf, unsigned int len) { time_t now; diff --git a/lib/isc/win32/include/isc/platform.h.in b/lib/isc/win32/include/isc/platform.h.in index cb33d0e4..1abbbc01 100644 --- a/lib/isc/win32/include/isc/platform.h.in +++ b/lib/isc/win32/include/isc/platform.h.in @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -104,6 +104,12 @@ @ISC_PLATFORM_HAVECMPXCHG@ /* + * If the strcasestr() operation is not available on this platform, + * ISC_PLATFORM_NEEDSTRCASESTR will be defined. + */ +@ISC_PLATFORM_NEEDSTRCASESTR@ + +/* * Set up a macro for importing and exporting from the DLL */ diff --git a/lib/isc/win32/include/isc/time.h b/lib/isc/win32/include/isc/time.h index 7db1da38..fe842ab9 100644 --- a/lib/isc/win32/include/isc/time.h +++ b/lib/isc/win32/include/isc/time.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006-2009, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006-2009, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -224,6 +224,16 @@ isc_time_microdiff(const isc_time_t *t1, const isc_time_t *t2); * The difference of t1 - t2, or 0 if t1 <= t2. */ +isc_result_t +isc_time_parsehttptimestamp(char *input, isc_time_t *t); +/*%< + * Parse the time in 'input' into the isc_time_t pointed to by 't', + * expecting a format like "Mon, 30 Aug 2000 04:06:47 GMT" + * + * Requires: + *\li 'buf' and 't' are not NULL. + */ + isc_uint32_t isc_time_nanoseconds(const isc_time_t *t); /* @@ -269,6 +279,16 @@ isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len); * */ +isc_result_t +isc_time_parsehttptimestamp(char *input, isc_time_t *t); +/*%< + * Parse the time in 'input' into the isc_time_t pointed to by 't', + * expecting a format like "Mon, 30 Aug 2000 04:06:47 GMT" + * + * Requires: + *\li 'buf' and 't' are not NULL. + */ + void isc_time_formatISO8601(const isc_time_t *t, char *buf, unsigned int len); /*%< @@ -285,6 +305,36 @@ isc_time_formatISO8601(const isc_time_t *t, char *buf, unsigned int len); isc_uint32_t isc_time_seconds(const isc_time_t *t); +/*%< + * Return the number of seconds since the epoch stored in a time structure. + * + * Requires: + * + *\li 't' is a valid pointer. + */ + +isc_result_t +isc_time_secondsastimet(const isc_time_t *t, time_t *secondsp); +/*%< + * Ensure the number of seconds in an isc_time_t is representable by a time_t. + * + * Notes: + *\li The number of seconds stored in an isc_time_t might be larger + * than the number of seconds a time_t is able to handle. Since + * time_t is mostly opaque according to the ANSI/ISO standard + * (essentially, all you can be sure of is that it is an arithmetic type, + * not even necessarily integral), it can be tricky to ensure that + * the isc_time_t is in the range a time_t can handle. Use this + * function in place of isc_time_seconds() any time you need to set a + * time_t from an isc_time_t. + * + * Requires: + *\li 't' is a valid pointer. + * + * Returns: + *\li Success + *\li Out of range + */ ISC_LANG_ENDDECLS diff --git a/lib/isc/win32/interfaceiter.c b/lib/isc/win32/interfaceiter.c index c7a9cbb2..7d1dc1b9 100644 --- a/lib/isc/win32/interfaceiter.c +++ b/lib/isc/win32/interfaceiter.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2007-2009, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2007-2009, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -88,14 +88,14 @@ get_addr(unsigned int family, isc_netaddr_t *dst, struct sockaddr *src) { dst->family = family; switch (family) { case AF_INET: - memcpy(&dst->type.in, - &((struct sockaddr_in *) src)->sin_addr, - sizeof(struct in_addr)); + memmove(&dst->type.in, + &((struct sockaddr_in *) src)->sin_addr, + sizeof(struct in_addr)); break; case AF_INET6: - memcpy(&dst->type.in6, - &((struct sockaddr_in6 *) src)->sin6_addr, - sizeof(struct in6_addr)); + memmove(&dst->type.in6, + &((struct sockaddr_in6 *) src)->sin6_addr, + sizeof(struct in6_addr)); dst->zone = ((struct sockaddr_in6 *) src)->sin6_scope_id; break; default: @@ -425,7 +425,7 @@ internal_next(isc_interfaceiter_t *iter) { return (ISC_R_NOMORE); memset(&(iter->IFData), 0, sizeof(INTERFACE_INFO)); - memcpy(&(iter->IFData), iter->pos4, sizeof(INTERFACE_INFO)); + memmove(&(iter->IFData), iter->pos4, sizeof(INTERFACE_INFO)); iter->numIF++; return (ISC_R_SUCCESS); @@ -443,7 +443,7 @@ isc_result_t isc_interfaceiter_current(isc_interfaceiter_t *iter, isc_interface_t *ifdata) { REQUIRE(iter->result == ISC_R_SUCCESS); - memcpy(ifdata, &iter->current, sizeof(*ifdata)); + memmove(ifdata, &iter->current, sizeof(*ifdata)); return (ISC_R_SUCCESS); } diff --git a/lib/isc/win32/libisc.def.in b/lib/isc/win32/libisc.def.in index 56c4c254..f03fd879 100644 --- a/lib/isc/win32/libisc.def.in +++ b/lib/isc/win32/libisc.def.in @@ -302,6 +302,7 @@ isc_hmacsha512_sign isc_hmacsha512_update isc_hmacsha512_verify isc_httpdmgr_addurl +isc_httpdmgr_addurl2 isc_httpdmgr_create isc_httpdmgr_shutdown isc_interfaceiter_create @@ -546,6 +547,7 @@ isc_string_printf isc_string_printf_truncate isc_string_regiondup isc_string_separate +isc_string_strcasestr isc_string_strlcat isc_string_strlcpy isc_string_touint64 @@ -580,6 +582,8 @@ isc_time_microdiff isc_time_nanoseconds isc_time_now isc_time_nowplusinterval +isc_time_parsehttptimestamp +isc_time_secondsastimet isc_time_seconds isc_time_set isc_time_settoepoch diff --git a/lib/isc/win32/socket.c b/lib/isc/win32/socket.c index 40ba86a4..d1bee78c 100644 --- a/lib/isc/win32/socket.c +++ b/lib/isc/win32/socket.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -955,7 +955,7 @@ build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev, memset(msg, 0, sizeof(*msg)); - memcpy(&msg->to_addr, &dev->address.type, dev->address.length); + memmove(&msg->to_addr, &dev->address.type, dev->address.length); msg->to_addr_len = dev->address.length; buffer = ISC_LIST_HEAD(dev->bufferlist); @@ -977,7 +977,7 @@ build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev, "alloc_buffer %p %d %p %d", cpbuffer, sizeof(buflist_t), cpbuffer->buf, write_count); - memcpy(cpbuffer->buf,(dev->region.base + dev->n), write_count); + memmove(cpbuffer->buf,(dev->region.base + dev->n), write_count); cpbuffer->buflen = (unsigned int)write_count; ISC_LIST_ENQUEUE(lpo->bufferlist, cpbuffer, link); iov[0].buf = cpbuffer->buf; @@ -1017,7 +1017,7 @@ build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev, "alloc_buffer %p %d %p %d", cpbuffer, sizeof(buflist_t), cpbuffer->buf, write_count); - memcpy(cpbuffer->buf,(used.base + skip_count), uselen); + memmove(cpbuffer->buf,(used.base + skip_count), uselen); cpbuffer->buflen = uselen; iov[iovcount].buf = cpbuffer->buf; iov[iovcount].len = (u_long)(used.length - skip_count); @@ -1220,8 +1220,8 @@ fill_recv(isc_socket_t *sock, isc_socketevent_t *dev) { if (sock->type == isc_sockettype_udp) { dev->address.length = sock->recvbuf.from_addr_len; - memcpy(&dev->address.type, &sock->recvbuf.from_addr, - sock->recvbuf.from_addr_len); + memmove(&dev->address.type, &sock->recvbuf.from_addr, + sock->recvbuf.from_addr_len); if (isc_sockaddr_getport(&dev->address) == 0) { if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) { socket_log(__LINE__, sock, &dev->address, IOEVENT, @@ -1247,8 +1247,10 @@ fill_recv(isc_socket_t *sock, isc_socketevent_t *dev) { REQUIRE(ISC_BUFFER_VALID(buffer)); if (isc_buffer_availablelength(buffer) > 0) { isc_buffer_availableregion(buffer, &r); - copylen = min(r.length, sock->recvbuf.remaining); - memcpy(r.base, sock->recvbuf.consume_position, copylen); + copylen = min(r.length, + sock->recvbuf.remaining); + memmove(r.base, sock->recvbuf.consume_position, + copylen); sock->recvbuf.consume_position += copylen; sock->recvbuf.remaining -= copylen; isc_buffer_add(buffer, copylen); @@ -1258,7 +1260,8 @@ fill_recv(isc_socket_t *sock, isc_socketevent_t *dev) { } } else { // Single-buffer receive copylen = min(dev->region.length - dev->n, sock->recvbuf.remaining); - memcpy(dev->region.base + dev->n, sock->recvbuf.consume_position, copylen); + memmove(dev->region.base + dev->n, + sock->recvbuf.consume_position, copylen); sock->recvbuf.consume_position += copylen; sock->recvbuf.remaining -= copylen; dev->n += copylen; @@ -2061,7 +2064,7 @@ internal_accept(isc_socket_t *sock, IoCompletionInfo *lpo, int accept_errno) { sizeof(SOCKADDR_STORAGE) + 16, sizeof(SOCKADDR_STORAGE) + 16, (LPSOCKADDR *)&localaddr, &localaddr_len, (LPSOCKADDR *)&remoteaddr, &remoteaddr_len); - memcpy(&adev->address.type, remoteaddr, remoteaddr_len); + memmove(&adev->address.type, remoteaddr, remoteaddr_len); adev->address.length = remoteaddr_len; nsock->address = adev->address; nsock->pf = adev->address.type.sa.sa_family; diff --git a/lib/isc/win32/strptime.c b/lib/isc/win32/strptime.c new file mode 100644 index 00000000..10dcec1e --- /dev/null +++ b/lib/isc/win32/strptime.c @@ -0,0 +1,392 @@ +/*- + * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code was contributed to The NetBSD Foundation by Klaus Klein. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> + +/* + * We do not implement alternate representations. However, we always + * check whether a given modifier is allowed for a certain conversion. + */ +#define ALT_E 0x01 +#define ALT_O 0x02 +#define LEGAL_ALT(x) { if (alt_format & ~(x)) return (0); } + +#ifndef TM_YEAR_BASE +#define TM_YEAR_BASE 1900 +#endif + +static int conv_num(const char **, int *, int, int); + +static const char *day[7] = { + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", + "Friday", "Saturday" +}; +static const char *abday[7] = { + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" +}; +static const char *mon[12] = { + "January", "February", "March", "April", "May", "June", "July", + "August", "September", "October", "November", "December" +}; +static const char *abmon[12] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" +}; +static const char *am_pm[2] = { + "AM", "PM" +}; + +static char * +strptime(const char *buf, const char *fmt, struct tm *tm) { + char c; + const char *bp; + size_t len = 0; + int alt_format, i, split_year = 0; + + bp = buf; + + while ((c = *fmt) != '\0') { + /* Clear `alternate' modifier prior to new conversion. */ + alt_format = 0; + + /* Eat up white-space. */ + if (isspace(c)) { + while (isspace(*bp)) + bp++; + + fmt++; + continue; + } + + if ((c = *fmt++) != '%') + goto literal; + + +again: switch (c = *fmt++) { + case '%': /* "%%" is converted to "%". */ +literal: + if (c != *bp++) + return (0); + break; + + /* + * "Alternative" modifiers. Just set the appropriate flag + * and start over again. + */ + case 'E': /* "%E?" alternative conversion modifier. */ + LEGAL_ALT(0); + alt_format |= ALT_E; + goto again; + + case 'O': /* "%O?" alternative conversion modifier. */ + LEGAL_ALT(0); + alt_format |= ALT_O; + goto again; + + /* + * "Complex" conversion rules, implemented through recursion. + */ + case 'c': /* Date and time, using the locale's format. */ + LEGAL_ALT(ALT_E); + if (!(bp = strptime(bp, "%x %X", tm))) + return (0); + break; + + case 'D': /* The date as "%m/%d/%y". */ + LEGAL_ALT(0); + if (!(bp = strptime(bp, "%m/%d/%y", tm))) + return (0); + break; + + case 'R': /* The time as "%H:%M". */ + LEGAL_ALT(0); + if (!(bp = strptime(bp, "%H:%M", tm))) + return (0); + break; + + case 'r': /* The time in 12-hour clock representation. */ + LEGAL_ALT(0); + if (!(bp = strptime(bp, "%I:%M:%S %p", tm))) + return (0); + break; + + case 'T': /* The time as "%H:%M:%S". */ + LEGAL_ALT(0); + if (!(bp = strptime(bp, "%H:%M:%S", tm))) + return (0); + break; + + case 'X': /* The time, using the locale's format. */ + LEGAL_ALT(ALT_E); + if (!(bp = strptime(bp, "%H:%M:%S", tm))) + return (0); + break; + + case 'x': /* The date, using the locale's format. */ + LEGAL_ALT(ALT_E); + if (!(bp = strptime(bp, "%m/%d/%y", tm))) + return (0); + break; + + /* + * "Elementary" conversion rules. + */ + case 'A': /* The day of week, using the locale's form. */ + case 'a': + LEGAL_ALT(0); + for (i = 0; i < 7; i++) { + /* Full name. */ + len = strlen(day[i]); + if (strncasecmp(day[i], bp, len) == 0) + break; + + /* Abbreviated name. */ + len = strlen(abday[i]); + if (strncasecmp(abday[i], bp, len) == 0) + break; + } + + /* Nothing matched. */ + if (i == 7) + return (0); + + tm->tm_wday = i; + bp += len; + break; + + case 'B': /* The month, using the locale's form. */ + case 'b': + case 'h': + LEGAL_ALT(0); + for (i = 0; i < 12; i++) { + /* Full name. */ + len = strlen(mon[i]); + if (strncasecmp(mon[i], bp, len) == 0) + break; + + /* Abbreviated name. */ + len = strlen(abmon[i]); + if (strncasecmp(abmon[i], bp, len) == 0) + break; + } + + /* Nothing matched. */ + if (i == 12) + return (0); + + tm->tm_mon = i; + bp += len; + break; + + case 'C': /* The century number. */ + LEGAL_ALT(ALT_E); + if (!(conv_num(&bp, &i, 0, 99))) + return (0); + + if (split_year) { + tm->tm_year = (tm->tm_year % 100) + (i * 100); + } else { + tm->tm_year = i * 100; + split_year = 1; + } + break; + + case 'd': /* The day of month. */ + case 'e': + LEGAL_ALT(ALT_O); + if (!(conv_num(&bp, &tm->tm_mday, 1, 31))) + return (0); + break; + + case 'k': /* The hour (24-hour clock representation). */ + LEGAL_ALT(0); + /* FALLTHROUGH */ + case 'H': + LEGAL_ALT(ALT_O); + if (!(conv_num(&bp, &tm->tm_hour, 0, 23))) + return (0); + break; + + case 'l': /* The hour (12-hour clock representation). */ + LEGAL_ALT(0); + /* FALLTHROUGH */ + case 'I': + LEGAL_ALT(ALT_O); + if (!(conv_num(&bp, &tm->tm_hour, 1, 12))) + return (0); + if (tm->tm_hour == 12) + tm->tm_hour = 0; + break; + + case 'j': /* The day of year. */ + LEGAL_ALT(0); + if (!(conv_num(&bp, &i, 1, 366))) + return (0); + tm->tm_yday = i - 1; + break; + + case 'M': /* The minute. */ + LEGAL_ALT(ALT_O); + if (!(conv_num(&bp, &tm->tm_min, 0, 59))) + return (0); + break; + + case 'm': /* The month. */ + LEGAL_ALT(ALT_O); + if (!(conv_num(&bp, &i, 1, 12))) + return (0); + tm->tm_mon = i - 1; + break; + + case 'p': /* The locale's equivalent of AM/PM. */ + LEGAL_ALT(0); + /* AM? */ + if (strcasecmp(am_pm[0], bp) == 0) { + if (tm->tm_hour > 11) + return (0); + + bp += strlen(am_pm[0]); + break; + } + /* PM? */ + else if (strcasecmp(am_pm[1], bp) == 0) { + if (tm->tm_hour > 11) + return (0); + + tm->tm_hour += 12; + bp += strlen(am_pm[1]); + break; + } + + /* Nothing matched. */ + return (0); + + case 'S': /* The seconds. */ + LEGAL_ALT(ALT_O); + if (!(conv_num(&bp, &tm->tm_sec, 0, 61))) + return (0); + break; + + case 'U': /* The week of year, beginning on sunday. */ + case 'W': /* The week of year, beginning on monday. */ + LEGAL_ALT(ALT_O); + /* + * XXX This is bogus, as we can not assume any valid + * information present in the tm structure at this + * point to calculate a real value, so just check the + * range for now. + */ + if (!(conv_num(&bp, &i, 0, 53))) + return (0); + break; + + case 'w': /* The day of week, beginning on sunday. */ + LEGAL_ALT(ALT_O); + if (!(conv_num(&bp, &tm->tm_wday, 0, 6))) + return (0); + break; + + case 'Y': /* The year. */ + LEGAL_ALT(ALT_E); + if (!(conv_num(&bp, &i, 0, 9999))) + return (0); + + tm->tm_year = i - TM_YEAR_BASE; + break; + + case 'y': /* The year within 100 years of the epoch. */ + LEGAL_ALT(ALT_E | ALT_O); + if (!(conv_num(&bp, &i, 0, 99))) + return (0); + + if (split_year) { + tm->tm_year = ((tm->tm_year / 100) * 100) + i; + break; + } + split_year = 1; + if (i <= 68) + tm->tm_year = i + 2000 - TM_YEAR_BASE; + else + tm->tm_year = i + 1900 - TM_YEAR_BASE; + break; + + /* + * Miscellaneous conversions. + */ + case 'n': /* Any kind of white-space. */ + case 't': + LEGAL_ALT(0); + while (isspace(*bp)) + bp++; + break; + + + default: /* Unknown/unsupported conversion. */ + return (0); + } + + + } + + /* LINTED functional specification */ + return ((char *)bp); +} + +static int +conv_num(const char **buf, int *dest, int llim, int ulim) { + int result = 0; + + /* The limit also determines the number of valid digits. */ + int rulim = ulim; + + if (**buf < '0' || **buf > '9') + return (0); + + do { + result *= 10; + result += *(*buf)++ - '0'; + rulim /= 10; + } while ((result * 10 <= ulim) && + rulim && **buf >= '0' && **buf <= '9'); + + if (result < llim || result > ulim) + return (0); + + *dest = result; + return (1); +} diff --git a/lib/isc/win32/time.c b/lib/isc/win32/time.c index ff25c4d3..6c38e25a 100644 --- a/lib/isc/win32/time.c +++ b/lib/isc/win32/time.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006-2009, 2012-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1998-2001, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -91,8 +91,8 @@ isc_time_set(isc_time_t *t, unsigned int seconds, unsigned int nanoseconds) { SystemTimeToFileTime(&epoch, &temp); - i1.LowPart = t->absolute.dwLowDateTime; - i1.HighPart = t->absolute.dwHighDateTime; + i1.LowPart = temp.dwLowDateTime; + i1.HighPart = temp.dwHighDateTime; i1.QuadPart += (unsigned __int64)nanoseconds/100; i1.QuadPart += (unsigned __int64)seconds*10000000; @@ -243,6 +243,26 @@ isc_time_seconds(const isc_time_t *t) { return ((isc_uint32_t)i3); } +isc_result_t +isc_time_secondsastimet(const isc_time_t *t, time_t *secondsp) { + time_t seconds; + + REQUIRE(t != NULL); + + seconds = (time_t)isc_time_seconds(t); + + INSIST(sizeof(unsigned int) == sizeof(isc_uint32_t)); + INSIST(sizeof(time_t) >= sizeof(isc_uint32_t)); + + if (isc_time_seconds(t) > (~0U>>1) && seconds <= (time_t)(~0U>>1)) + return (ISC_R_RANGE); + + *secondsp = seconds; + + return (ISC_R_SUCCESS); +} + + isc_uint32_t isc_time_nanoseconds(const isc_time_t *t) { ULARGE_INTEGER i; @@ -298,6 +318,50 @@ isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len) { } } +static time_t +timetfromtm(struct tm *tm) { + time_t ret; + int i, yday = 0, leapday; + int mdays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 }; + + leapday = ((((tm->tm_year + 1900 ) % 4) == 0 && + ((tm->tm_year + 1900 ) % 100) != 0) || + ((tm->tm_year + 1900 ) % 400) == 0) ? 1 : 0; + mdays[1] += leapday; + + yday = tm->tm_mday - 1; + for (i = 1; i <= tm->tm_mon; i++) + yday += mdays[i - 1]; + ret = tm->tm_sec + + (60 * tm->tm_min) + + (3600 * tm->tm_hour) + + (86400 * (yday + + ((tm->tm_year - 70) * 365) + + ((tm->tm_year - 69) / 4) - + ((tm->tm_year - 1) / 100) + + ((tm->tm_year + 299) / 400))); + return (ret); +} + +#include "strptime.c" +isc_result_t +isc_time_parsehttptimestamp(char *buf, isc_time_t *t) { + struct tm t_tm; + time_t when; + char *p; + + REQUIRE(buf != NULL); + REQUIRE(t != NULL); + p = strptime(buf, "%a, %d %b %Y %H:%M:%S", &t_tm); + if (p == NULL) + return (ISC_R_UNEXPECTED); + when = timetfromtm(&t_tm); + if (when == -1) + return (ISC_R_UNEXPECTED); + isc_time_set(t, when, 0); + return (ISC_R_SUCCESS); +} + void isc_time_formatISO8601(const isc_time_t *t, char *buf, unsigned int len) { SYSTEMTIME st; diff --git a/lib/isccc/api b/lib/isccc/api index 51898234..864bdc90 100644 --- a/lib/isccc/api +++ b/lib/isccc/api @@ -5,5 +5,5 @@ # 9.9: 90-109 # 9.9-sub: 130-139 LIBINTERFACE = 90 -LIBREVISION = 5 +LIBREVISION = 6 LIBAGE = 0 diff --git a/lib/isccc/include/isccc/util.h b/lib/isccc/include/isccc/util.h index 2e36b6e3..4b8c7ad9 100644 --- a/lib/isccc/include/isccc/util.h +++ b/lib/isccc/include/isccc/util.h @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004-2007, 2014 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -52,37 +52,37 @@ #define GET16(v, w) \ do { \ v = (unsigned int)w[0] << 8; \ - v |= (unsigned int)w[1]; \ + v |= (unsigned int)w[1]; \ w += 2; \ } while (0) #define GET24(v, w) \ do { \ - v = (unsigned int)w[0] << 16; \ - v |= (unsigned int)w[1] << 8; \ - v |= (unsigned int)w[2]; \ + v = (unsigned int)w[0] << 16; \ + v |= (unsigned int)w[1] << 8; \ + v |= (unsigned int)w[2]; \ w += 3; \ } while (0) #define GET32(v, w) \ do { \ v = (unsigned int)w[0] << 24; \ - v |= (unsigned int)w[1] << 16; \ - v |= (unsigned int)w[2] << 8; \ - v |= (unsigned int)w[3]; \ + v |= (unsigned int)w[1] << 16; \ + v |= (unsigned int)w[2] << 8; \ + v |= (unsigned int)w[3]; \ w += 4; \ } while (0) #define GET64(v, w) \ do { \ v = (isc_uint64_t)w[0] << 56; \ - v |= (isc_uint64_t)w[1] << 48; \ - v |= (isc_uint64_t)w[2] << 40; \ - v |= (isc_uint64_t)w[3] << 32; \ - v |= (isc_uint64_t)w[4] << 24; \ - v |= (isc_uint64_t)w[5] << 16; \ - v |= (isc_uint64_t)w[6] << 8; \ - v |= (isc_uint64_t)w[7]; \ + v |= (isc_uint64_t)w[1] << 48; \ + v |= (isc_uint64_t)w[2] << 40; \ + v |= (isc_uint64_t)w[3] << 32; \ + v |= (isc_uint64_t)w[4] << 24; \ + v |= (isc_uint64_t)w[5] << 16; \ + v |= (isc_uint64_t)w[6] << 8; \ + v |= (isc_uint64_t)w[7]; \ w += 8; \ } while (0) @@ -91,7 +91,7 @@ GET8(v, w); \ if (v == 0) \ d = ISCCC_TRUE; \ - else { \ + else { \ d = ISCCC_FALSE; \ if (v == 255) \ GET16(v, w); \ @@ -101,7 +101,7 @@ #define GETC32(v, w) \ do { \ GET24(v, w); \ - if (v == 0xffffffu) \ + if (v == 0xffffffu) \ GET32(v, w); \ } while (0) @@ -109,7 +109,7 @@ #define GET_MEM(v, c, w) \ do { \ - memcpy(v, w, c); \ + memmove(v, w, c); \ w += c; \ } while (0) @@ -193,7 +193,7 @@ #define PUT_MEM(s, c, w) \ do { \ - memcpy(w, s, c); \ + memmove(w, s, c); \ w += c; \ } while (0) diff --git a/lib/isccc/sexpr.c b/lib/isccc/sexpr.c index e96536df..df11a930 100644 --- a/lib/isccc/sexpr.c +++ b/lib/isccc/sexpr.c @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 2004, 2005, 2007, 2014 Internet Systems Consortium, Inc. ("ISC") * Portions Copyright (C) 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -112,7 +112,7 @@ isccc_sexpr_frombinary(const isccc_region_t *region) } sexpr->value.as_region.rend = sexpr->value.as_region.rstart + region_size; - memcpy(sexpr->value.as_region.rstart, region->rstart, region_size); + memmove(sexpr->value.as_region.rstart, region->rstart, region_size); /* * NUL terminate. */ @@ -311,7 +311,7 @@ isccc_sexpr_tostring(isccc_sexpr_t *sexpr) REQUIRE(sexpr != NULL && (sexpr->type == ISCCC_SEXPRTYPE_STRING || sexpr->type == ISCCC_SEXPRTYPE_BINARY)); - + if (sexpr->type == ISCCC_SEXPRTYPE_BINARY) return ((char *)sexpr->value.as_region.rstart); return (sexpr->value.as_string); diff --git a/lib/isccfg/api b/lib/isccfg/api index a27437f4..7e580435 100644 --- a/lib/isccfg/api +++ b/lib/isccfg/api @@ -4,6 +4,6 @@ # 9.8: 80-89, 120-129 # 9.9: 90-109 # 9.9-sub: 130-139 -LIBINTERFACE = 90 -LIBREVISION = 7 -LIBAGE = 0 +LIBINTERFACE = 91 +LIBREVISION = 0 +LIBAGE = 1 diff --git a/lib/isccfg/include/isccfg/cfg.h b/lib/isccfg/include/isccfg/cfg.h index b21a3d86..a99c7637 100644 --- a/lib/isccfg/include/isccfg/cfg.h +++ b/lib/isccfg/include/isccfg/cfg.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2007, 2010, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2010, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -380,10 +380,20 @@ void cfg_print(const cfg_obj_t *obj, void (*f)(void *closure, const char *text, int textlen), void *closure); +void +cfg_printx(const cfg_obj_t *obj, unsigned int flags, + void (*f)(void *closure, const char *text, int textlen), + void *closure); + +#define CFG_PRINTER_XKEY 0x1 /* '?' out shared keys. */ + /*%< * Print the configuration object 'obj' by repeatedly calling the * function 'f', passing 'closure' and a region of text starting * at 'text' and comprising 'textlen' characters. + * + * If CFG_PRINTER_XKEY the contents of shared keys will be obscured + * by replacing them with question marks ('?') */ void diff --git a/lib/isccfg/include/isccfg/grammar.h b/lib/isccfg/include/isccfg/grammar.h index 2d7080c2..ee76ff29 100644 --- a/lib/isccfg/include/isccfg/grammar.h +++ b/lib/isccfg/include/isccfg/grammar.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2011, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -86,6 +86,7 @@ struct cfg_printer { void (*f)(void *closure, const char *text, int textlen); void *closure; int indent; + int flags; }; /*% A clause definition. */ @@ -266,6 +267,7 @@ LIBISCCFG_EXTERNAL_DATA extern cfg_type_t cfg_type_uint64; LIBISCCFG_EXTERNAL_DATA extern cfg_type_t cfg_type_qstring; LIBISCCFG_EXTERNAL_DATA extern cfg_type_t cfg_type_astring; LIBISCCFG_EXTERNAL_DATA extern cfg_type_t cfg_type_ustring; +LIBISCCFG_EXTERNAL_DATA extern cfg_type_t cfg_type_sstring; LIBISCCFG_EXTERNAL_DATA extern cfg_type_t cfg_type_sockaddr; LIBISCCFG_EXTERNAL_DATA extern cfg_type_t cfg_type_netaddr; LIBISCCFG_EXTERNAL_DATA extern cfg_type_t cfg_type_netaddr4; @@ -314,6 +316,9 @@ isc_result_t cfg_parse_astring(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); isc_result_t +cfg_parse_sstring(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); + +isc_result_t cfg_parse_rawaddr(cfg_parser_t *pctx, unsigned int flags, isc_netaddr_t *na); void diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c index be28ea71..f11e2938 100644 --- a/lib/isccfg/namedconf.c +++ b/lib/isccfg/namedconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -370,7 +370,7 @@ parse_updatepolicy(cfg_parser_t *pctx, const cfg_type_t *type, isc_mem_put(pctx->mctx, obj, sizeof(*obj)); return (ISC_R_NOMEMORY); } - memcpy(obj->value.string.base, "local", 5); + memmove(obj->value.string.base, "local", 5); obj->value.string.base[5] = '\0'; *ret = obj; return (ISC_R_SUCCESS); @@ -1709,7 +1709,7 @@ static cfg_type_t cfg_type_dynamically_loadable_zones_opts = { static cfg_clausedef_t key_clauses[] = { { "algorithm", &cfg_type_astring, 0 }, - { "secret", &cfg_type_astring, 0 }, + { "secret", &cfg_type_sstring, 0 }, { NULL, NULL, 0 } }; diff --git a/lib/isccfg/parser.c b/lib/isccfg/parser.c index de0fa31e..1708344e 100644 --- a/lib/isccfg/parser.c +++ b/lib/isccfg/parser.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -183,14 +183,22 @@ cfg_print(const cfg_obj_t *obj, void (*f)(void *closure, const char *text, int textlen), void *closure) { + cfg_printx(obj, 0, f, closure); +} + +void +cfg_printx(const cfg_obj_t *obj, unsigned int flags, + void (*f)(void *closure, const char *text, int textlen), + void *closure) +{ cfg_printer_t pctx; pctx.f = f; pctx.closure = closure; pctx.indent = 0; + pctx.flags = flags; obj->type->print(&pctx, obj); } - /* Tuples. */ isc_result_t @@ -702,7 +710,7 @@ create_string(cfg_parser_t *pctx, const char *contents, const cfg_type_t *type, isc_mem_put(pctx->mctx, obj, sizeof(*obj)); return (ISC_R_NOMEMORY); } - memcpy(obj->value.string.base, contents, len); + memmove(obj->value.string.base, contents, len); obj->value.string.base[len] = '\0'; *ret = obj; @@ -762,6 +770,22 @@ cfg_parse_astring(cfg_parser_t *pctx, const cfg_type_t *type, return (result); } +isc_result_t +cfg_parse_sstring(cfg_parser_t *pctx, const cfg_type_t *type, + cfg_obj_t **ret) +{ + isc_result_t result; + UNUSED(type); + + CHECK(cfg_getstringtoken(pctx)); + return (create_string(pctx, + TOKEN_STRING(pctx), + &cfg_type_sstring, + ret)); + cleanup: + return (result); +} + isc_boolean_t cfg_is_enum(const char *s, const char *const *enums) { const char * const *p; @@ -819,6 +843,18 @@ print_qstring(cfg_printer_t *pctx, const cfg_obj_t *obj) { } static void +print_sstring(cfg_printer_t *pctx, const cfg_obj_t *obj) { + cfg_print_chars(pctx, "\"", 1); + if ((pctx->flags & CFG_PRINTER_XKEY) != 0) { + unsigned int len = obj->value.string.length; + while (len-- > 0) + cfg_print_chars(pctx, "?", 1); + } else + cfg_print_ustring(pctx, obj); + cfg_print_chars(pctx, "\"", 1); +} + +static void free_string(cfg_parser_t *pctx, cfg_obj_t *obj) { isc_mem_put(pctx->mctx, obj->value.string.base, obj->value.string.length + 1); @@ -855,6 +891,15 @@ cfg_type_t cfg_type_astring = { }; /* + * Any string (quoted or unquoted); printed with quotes. + * If CFG_PRINTER_XKEY is set when printing the string will be '?' out. + */ +cfg_type_t cfg_type_sstring = { + "string", cfg_parse_sstring, print_sstring, cfg_doc_terminal, + &cfg_rep_string, NULL +}; + +/* * Booleans */ @@ -1631,7 +1676,7 @@ parse_token(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { goto cleanup; } obj->value.string.length = r.length; - memcpy(obj->value.string.base, r.base, r.length); + memmove(obj->value.string.base, r.base, r.length); obj->value.string.base[r.length] = '\0'; *ret = obj; return (result); @@ -2480,5 +2525,6 @@ cfg_print_grammar(const cfg_type_t *type, pctx.f = f; pctx.closure = closure; pctx.indent = 0; + pctx.flags = 0; cfg_doc_obj(&pctx, type); } diff --git a/lib/isccfg/win32/libisccfg.def b/lib/isccfg/win32/libisccfg.def index 98abbcf8..95cdcc78 100644 --- a/lib/isccfg/win32/libisccfg.def +++ b/lib/isccfg/win32/libisccfg.def @@ -42,6 +42,7 @@ cfg_parser_create cfg_parser_destroy cfg_parser_setcallback cfg_print +cfg_printx cfg_tuple_get ; Exported Data diff --git a/lib/lwres/api b/lib/lwres/api index 864bdc90..a27437f4 100644 --- a/lib/lwres/api +++ b/lib/lwres/api @@ -5,5 +5,5 @@ # 9.9: 90-109 # 9.9-sub: 130-139 LIBINTERFACE = 90 -LIBREVISION = 6 +LIBREVISION = 7 LIBAGE = 0 diff --git a/lib/lwres/context.c b/lib/lwres/context.c index e16bc0aa..0dc5199b 100644 --- a/lib/lwres/context.c +++ b/lib/lwres/context.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007-2009, 2012, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007-2009, 2012-2014 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 @@ -303,8 +303,8 @@ context_connect(lwres_context_t *ctx) { int domain; if (ctx->confdata.lwnext != 0) { - memcpy(&ctx->address, &ctx->confdata.lwservers[0], - sizeof(lwres_addr_t)); + memmove(&ctx->address, &ctx->confdata.lwservers[0], + sizeof(lwres_addr_t)); LWRES_LINK_INIT(&ctx->address, link); } else { /* The default is the IPv4 loopback address 127.0.0.1. */ @@ -318,16 +318,16 @@ context_connect(lwres_context_t *ctx) { } if (ctx->address.family == LWRES_ADDRTYPE_V4) { - memcpy(&sin.sin_addr, ctx->address.address, - sizeof(sin.sin_addr)); + memmove(&sin.sin_addr, ctx->address.address, + sizeof(sin.sin_addr)); sin.sin_port = htons(lwres_udp_port); sin.sin_family = AF_INET; sa = (struct sockaddr *)&sin; salen = sizeof(sin); domain = PF_INET; } else if (ctx->address.family == LWRES_ADDRTYPE_V6) { - memcpy(&sin6.sin6_addr, ctx->address.address, - sizeof(sin6.sin6_addr)); + memmove(&sin6.sin6_addr, ctx->address.address, + sizeof(sin6.sin6_addr)); sin6.sin6_port = htons(lwres_udp_port); sin6.sin6_family = AF_INET6; sa = (struct sockaddr *)&sin6; diff --git a/lib/lwres/getaddrinfo.c b/lib/lwres/getaddrinfo.c index 7d5f2fb0..1ebafd85 100644 --- a/lib/lwres/getaddrinfo.c +++ b/lib/lwres/getaddrinfo.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2001 Internet Software Consortium. * * This code is derived from software contributed to ISC by @@ -392,7 +392,7 @@ lwres_getaddrinfo(const char *hostname, const char *servname, * Convert to a V4 mapped address. */ struct in6_addr *a6 = (struct in6_addr *)abuf; - memcpy(&a6->s6_addr[12], &a6->s6_addr[0], 4); + memmove(&a6->s6_addr[12], &a6->s6_addr[0], 4); memset(&a6->s6_addr[10], 0xff, 2); memset(&a6->s6_addr[0], 0, 10); goto inet6_addr; @@ -427,7 +427,7 @@ lwres_getaddrinfo(const char *hostname, const char *servname, ai_list = ai; ai->ai_socktype = socktype; SIN(ai->ai_addr)->sin_port = port; - memcpy((char *)ai->ai_addr + addroff, abuf, addrsize); + memmove((char *)ai->ai_addr + addroff, abuf, addrsize); if (flags & AI_CANONNAME) { #if defined(LWRES_HAVE_SIN6_SCOPE_ID) if (ai->ai_family == AF_INET6) @@ -579,7 +579,7 @@ add_ipv4(const char *hostname, int flags, struct addrinfo **aip, *aip = ai; ai->ai_socktype = socktype; SIN(ai->ai_addr)->sin_port = port; - memcpy(&SIN(ai->ai_addr)->sin_addr, v4_loop, 4); + memmove(&SIN(ai->ai_addr)->sin_addr, v4_loop, 4); } else { lwres = lwres_getaddrsbyname(lwrctx, hostname, LWRES_ADDRTYPE_V4, &by); @@ -597,8 +597,8 @@ add_ipv4(const char *hostname, int flags, struct addrinfo **aip, *aip = ai; ai->ai_socktype = socktype; SIN(ai->ai_addr)->sin_port = port; - memcpy(&SIN(ai->ai_addr)->sin_addr, - addr->address, 4); + memmove(&SIN(ai->ai_addr)->sin_addr, + addr->address, 4); if (flags & AI_CANONNAME) { ai->ai_canonname = strdup(by->realname); if (ai->ai_canonname == NULL) @@ -643,7 +643,7 @@ add_ipv6(const char *hostname, int flags, struct addrinfo **aip, *aip = ai; ai->ai_socktype = socktype; SIN6(ai->ai_addr)->sin6_port = port; - memcpy(&SIN6(ai->ai_addr)->sin6_addr, v6_loop, 16); + memmove(&SIN6(ai->ai_addr)->sin6_addr, v6_loop, 16); } else { lwres = lwres_getaddrsbyname(lwrctx, hostname, LWRES_ADDRTYPE_V6, &by); @@ -661,8 +661,8 @@ add_ipv6(const char *hostname, int flags, struct addrinfo **aip, *aip = ai; ai->ai_socktype = socktype; SIN6(ai->ai_addr)->sin6_port = port; - memcpy(&SIN6(ai->ai_addr)->sin6_addr, - addr->address, 16); + memmove(&SIN6(ai->ai_addr)->sin6_addr, + addr->address, 16); if (flags & AI_CANONNAME) { ai->ai_canonname = strdup(by->realname); if (ai->ai_canonname == NULL) diff --git a/lib/lwres/gethost.c b/lib/lwres/gethost.c index 60d9d5ee..e36fc188 100644 --- a/lib/lwres/gethost.c +++ b/lib/lwres/gethost.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2013, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -331,7 +331,7 @@ copytobuf(struct hostent *he, struct hostent *hptr, char *buf, int buflen) { */ hptr->h_addr_list = ptr; for (i = 0; he->h_addr_list[i]; i++, ptr++) { - memcpy(cp, he->h_addr_list[i], n); + memmove(cp, he->h_addr_list[i], n); hptr->h_addr_list[i] = cp; cp += n; } diff --git a/lib/lwres/getipnode.c b/lib/lwres/getipnode.c index 300376ef..85c396df 100644 --- a/lib/lwres/getipnode.c +++ b/lib/lwres/getipnode.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2009, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2009, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -420,7 +420,7 @@ lwres_getipnodebyaddr(const void *src, size_t len, int af, int *error_num) { /* * Restore original address. */ - memcpy(he2->h_addr, src, len); + memmove(he2->h_addr, src, len); return (he2); } @@ -595,7 +595,7 @@ scan_interfaces6(int *have_v4, int *have_v6) { for (cp = buf; (*have_v4 == 0 || *have_v6 == 0) && cp < cplim; cp += cpsize) { - memcpy(&lifreq, cp, sizeof(lifreq)); + memmove(&lifreq, cp, sizeof(lifreq)); #ifdef LWRES_PLATFORM_HAVESALEN #ifdef FIX_ZERO_SA_LEN if (lifreq.lifr_addr.sa_len == 0) @@ -620,10 +620,10 @@ scan_interfaces6(int *have_v4, int *have_v6) { switch (lifreq.lifr_addr.ss_family) { case AF_INET: if (*have_v4 == 0) { - memcpy(&in4, - &((struct sockaddr_in *) - &lifreq.lifr_addr)->sin_addr, - sizeof(in4)); + memmove(&in4, + &((struct sockaddr_in *) + &lifreq.lifr_addr)->sin_addr, + sizeof(in4)); if (in4.s_addr == INADDR_ANY) break; n = ioctl(s, SIOCGLIFFLAGS, (char *)&lifreq); @@ -636,10 +636,10 @@ scan_interfaces6(int *have_v4, int *have_v6) { break; case AF_INET6: if (*have_v6 == 0) { - memcpy(&in6, - &((struct sockaddr_in6 *) - &lifreq.lifr_addr)->sin6_addr, - sizeof(in6)); + memmove(&in6, + &((struct sockaddr_in6 *) + &lifreq.lifr_addr)->sin6_addr, + sizeof(in6)); if (memcmp(&in6, &in6addr_any, sizeof(in6)) == 0) break; @@ -760,7 +760,7 @@ scan_interfaces(int *have_v4, int *have_v6) { for (cp = buf; (*have_v4 == 0 || *have_v6 == 0) && cp < cplim; cp += cpsize) { - memcpy(&u.ifreq, cp, sizeof(u.ifreq)); + memmove(&u.ifreq, cp, sizeof(u.ifreq)); #ifdef LWRES_PLATFORM_HAVESALEN #ifdef FIX_ZERO_SA_LEN if (u.ifreq.ifr_addr.sa_len == 0) @@ -775,7 +775,7 @@ scan_interfaces(int *have_v4, int *have_v6) { cpsize = sizeof(u.ifreq.ifr_name) + u.ifreq.ifr_addr.sa_len; #endif /* HAVE_MINIMUM_IFREQ */ if (cpsize > sizeof(u.ifreq) && cpsize <= sizeof(u)) - memcpy(&u.ifreq, cp, cpsize); + memmove(&u.ifreq, cp, cpsize); #elif defined SIOCGIFCONF_ADDR cpsize = sizeof(u.ifreq); #else @@ -787,10 +787,10 @@ scan_interfaces(int *have_v4, int *have_v6) { switch (u.ifreq.ifr_addr.sa_family) { case AF_INET: if (*have_v4 == 0) { - memcpy(&in4, - &((struct sockaddr_in *) - &u.ifreq.ifr_addr)->sin_addr, - sizeof(in4)); + memmove(&in4, + &((struct sockaddr_in *) + &u.ifreq.ifr_addr)->sin_addr, + sizeof(in4)); if (in4.s_addr == INADDR_ANY) break; n = ioctl(s, SIOCGIFFLAGS, (char *)&u.ifreq); @@ -803,10 +803,10 @@ scan_interfaces(int *have_v4, int *have_v6) { break; case AF_INET6: if (*have_v6 == 0) { - memcpy(&in6, - &((struct sockaddr_in6 *) - &u.ifreq.ifr_addr)->sin6_addr, - sizeof(in6)); + memmove(&in6, + &((struct sockaddr_in6 *) + &u.ifreq.ifr_addr)->sin6_addr, + sizeof(in6)); if (memcmp(&in6, &in6addr_any, sizeof(in6)) == 0) break; @@ -908,13 +908,13 @@ copyandmerge(struct hostent *he1, struct hostent *he2, int af, int *error_num) * Convert to mapped if required. */ if (af == AF_INET6 && he1->h_addrtype == AF_INET) { - memcpy(*npp, in6addr_mapped, - sizeof(in6addr_mapped)); - memcpy(*npp + sizeof(in6addr_mapped), *cpp, - INADDRSZ); + memmove(*npp, in6addr_mapped, + sizeof(in6addr_mapped)); + memmove(*npp + sizeof(in6addr_mapped), *cpp, + INADDRSZ); } else { - memcpy(*npp, *cpp, - (af == AF_INET) ? INADDRSZ : IN6ADDRSZ); + memmove(*npp, *cpp, + (af == AF_INET) ? INADDRSZ : IN6ADDRSZ); } cpp++; npp++; @@ -931,13 +931,13 @@ copyandmerge(struct hostent *he1, struct hostent *he2, int af, int *error_num) * Convert to mapped if required. */ if (af == AF_INET6 && he2->h_addrtype == AF_INET) { - memcpy(*npp, in6addr_mapped, - sizeof(in6addr_mapped)); - memcpy(*npp + sizeof(in6addr_mapped), *cpp, - INADDRSZ); + memmove(*npp, in6addr_mapped, + sizeof(in6addr_mapped)); + memmove(*npp + sizeof(in6addr_mapped), *cpp, + INADDRSZ); } else { - memcpy(*npp, *cpp, - (af == AF_INET) ? INADDRSZ : IN6ADDRSZ); + memmove(*npp, *cpp, + (af == AF_INET) ? INADDRSZ : IN6ADDRSZ); } cpp++; npp++; @@ -1060,7 +1060,7 @@ hostfromaddr(lwres_gnbaresponse_t *addr, int af, const void *src) { he->h_addr_list[0] = malloc(he->h_length); if (he->h_addr_list[0] == NULL) goto cleanup; - memcpy(he->h_addr_list[0], src, he->h_length); + memmove(he->h_addr_list[0], src, he->h_length); he->h_addr_list[1] = NULL; return (he); @@ -1140,7 +1140,7 @@ hostfromname(lwres_gabnresponse_t *name, int af) { he->h_addr_list[i] = malloc(he->h_length); if (he->h_addr_list[i] == NULL) goto cleanup; - memcpy(he->h_addr_list[i], addr->address, he->h_length); + memmove(he->h_addr_list[i], addr->address, he->h_length); addr = LWRES_LIST_NEXT(addr, link); i++; } diff --git a/lib/lwres/getrrset.c b/lib/lwres/getrrset.c index 16af741d..cd37abcd 100644 --- a/lib/lwres/getrrset.c +++ b/lib/lwres/getrrset.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -228,8 +228,8 @@ lwres_getrrsetbyname(const char *hostname, unsigned int rdclass, result = ERRSET_NOMEMORY; goto fail; } - memcpy(rrset->rri_rdatas[i].rdi_data, response->rdatas[i], - rrset->rri_rdatas[i].rdi_length); + memmove(rrset->rri_rdatas[i].rdi_data, response->rdatas[i], + rrset->rri_rdatas[i].rdi_length); } rrset->rri_nsigs = response->nsigs; rrset->rri_sigs = sane_calloc(rrset->rri_nsigs, @@ -246,8 +246,8 @@ lwres_getrrsetbyname(const char *hostname, unsigned int rdclass, result = ERRSET_NOMEMORY; goto fail; } - memcpy(rrset->rri_sigs[i].rdi_data, response->sigs[i], - rrset->rri_sigs[i].rdi_length); + memmove(rrset->rri_sigs[i].rdi_data, response->sigs[i], + rrset->rri_sigs[i].rdi_length); } lwres_grbnresponse_free(lwrctx, &response); diff --git a/lib/lwres/lwbuffer.c b/lib/lwres/lwbuffer.c index 49aaeb7b..787bc3c9 100644 --- a/lib/lwres/lwbuffer.c +++ b/lib/lwres/lwbuffer.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -23,7 +23,7 @@ * These functions provide bounds checked access to a region of memory * where data is being read or written. They are based on, and similar * to, the isc_buffer_ functions in the ISC library. - * + * * A buffer is a region of memory, together with a set of related * subregions. The used region and the available region are disjoint, and * their union is the buffer's region. The used region extends from the @@ -31,7 +31,7 @@ * region extends from one byte greater than the last used byte to the * end of the buffer's region. The size of the used region can be changed * using various buffer commands. Initially, the used region is empty. - * + * * The used region is further subdivided into two disjoint regions: the * consumed region and the remaining region. The union of these two * regions is the used region. The consumed region extends from the @@ -39,14 +39,14 @@ * any). The remaining region the current pointer to the end of the used * region. The size of the consumed region can be changed using various * buffer commands. Initially, the consumed region is empty. - * + * * The active region is an (optional) subregion of the remaining region. * It extends from the current offset to an offset in the remaining * region. Initially, the active region is empty. If the current offset * advances beyond the chosen offset, the active region will also be * empty. - * - * + * + * * \verbatim * /------------entire length---------------\\ * /----- used region -----\\/-- available --\\ @@ -54,54 +54,54 @@ * | consumed | remaining | | * +----------------------------------------+ * a b c d e - * + * * a == base of buffer. * b == current pointer. Can be anywhere between a and d. * c == active pointer. Meaningful between b and d. * d == used pointer. * e == length of buffer. - * + * * a-e == entire length of buffer. * a-d == used region. * a-b == consumed region. * b-d == remaining region. * b-c == optional active region. * \endverbatim - * + * * lwres_buffer_init() initializes the lwres_buffer_t *b and assocates it * with the memory region of size length bytes starting at location base. - * + * * lwres_buffer_invalidate() marks the buffer *b as invalid. Invalidating * a buffer after use is not required, but makes it possible to catch its * possible accidental use. - * + * * The functions lwres_buffer_add() and lwres_buffer_subtract() * respectively increase and decrease the used space in buffer *b by n * bytes. lwres_buffer_add() checks for buffer overflow and * lwres_buffer_subtract() checks for underflow. These functions do not * allocate or deallocate memory. They just change the value of used. - * + * * A buffer is re-initialised by lwres_buffer_clear(). The function sets * used , current and active to zero. - * + * * lwres_buffer_first() makes the consumed region of buffer *p empty by * setting current to zero (the start of the buffer). - * + * * lwres_buffer_forward() increases the consumed region of buffer *b by n * bytes, checking for overflow. Similarly, lwres_buffer_back() decreases * buffer b's consumed region by n bytes and checks for underflow. - * + * * lwres_buffer_getuint8() reads an unsigned 8-bit integer from *b and * returns it. lwres_buffer_putuint8() writes the unsigned 8-bit integer * val to buffer *b. - * + * * lwres_buffer_getuint16() and lwres_buffer_getuint32() are identical to * lwres_buffer_putuint8() except that they respectively read an unsigned * 16-bit or 32-bit integer in network byte order from b. Similarly, * lwres_buffer_putuint16() and lwres_buffer_putuint32() writes the * unsigned 16-bit or 32-bit integer val to buffer b, in network byte * order. - * + * * Arbitrary amounts of data are read or written from a lightweight * resolver buffer with lwres_buffer_getmem() and lwres_buffer_putmem() * respectively. lwres_buffer_putmem() copies length bytes of memory at @@ -339,7 +339,7 @@ lwres_buffer_putmem(lwres_buffer_t *b, const unsigned char *base, REQUIRE(b->used + length <= b->length); cp = (unsigned char *)b->base + b->used; - memcpy(cp, base, length); + memmove(cp, base, length); b->used += length; } @@ -357,5 +357,5 @@ lwres_buffer_getmem(lwres_buffer_t *b, unsigned char *base, cp += b->current; b->current += length; - memcpy(base, cp, length); + memmove(base, cp, length); } diff --git a/lib/lwres/lwconfig.c b/lib/lwres/lwconfig.c index e9a86710..62630238 100644 --- a/lib/lwres/lwconfig.c +++ b/lib/lwres/lwconfig.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2008, 2011, 2012 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2008, 2011, 2012, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -455,16 +455,16 @@ lwres_create_addr(const char *buffer, lwres_addr_t *addr, int convert_zero) { unsigned char zeroaddress[] = {0, 0, 0, 0}; unsigned char loopaddress[] = {127, 0, 0, 1}; if (memcmp(&v4, zeroaddress, 4) == 0) - memcpy(&v4, loopaddress, 4); + memmove(&v4, loopaddress, 4); } addr->family = LWRES_ADDRTYPE_V4; addr->length = NS_INADDRSZ; - memcpy((void *)addr->address, &v4, NS_INADDRSZ); + memmove((void *)addr->address, &v4, NS_INADDRSZ); } else if (lwres_net_pton(AF_INET6, buffer, &v6) == 1) { addr->family = LWRES_ADDRTYPE_V6; addr->length = NS_IN6ADDRSZ; - memcpy((void *)addr->address, &v6, NS_IN6ADDRSZ); + memmove((void *)addr->address, &v6, NS_IN6ADDRSZ); } else { return (LWRES_R_FAILURE); /* Unrecognised format. */ } diff --git a/lib/lwres/lwinetpton.c b/lib/lwres/lwinetpton.c index 65a8998c..efeb21b7 100644 --- a/lib/lwres/lwinetpton.c +++ b/lib/lwres/lwinetpton.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007, 2011-2013 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2011-2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1996-2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -116,7 +116,7 @@ inet_pton4(const char *src, unsigned char *dst) { } if (octets < 4) return (0); - memcpy(dst, tmp, NS_INADDRSZ); + memmove(dst, tmp, NS_INADDRSZ); return (1); } @@ -210,6 +210,6 @@ inet_pton6(const char *src, unsigned char *dst) { } if (tp != endp) return (0); - memcpy(dst, tmp, NS_IN6ADDRSZ); + memmove(dst, tmp, NS_IN6ADDRSZ); return (1); } diff --git a/lib/lwres/lwresutil.c b/lib/lwres/lwresutil.c index 3bf5660f..0d1e5aaf 100644 --- a/lib/lwres/lwresutil.c +++ b/lib/lwres/lwresutil.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2005, 2007, 2014 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -27,7 +27,7 @@ * given by *len. The buffer's current pointer is advanced to point at * the character following the string length, the encoded string, and * the trailing NULL character. - * + * * lwres_addr_parse() extracts an address from the buffer b. The * buffer's current pointer b->current is presumed to point at an * encoded address: the address preceded by a 32-bit protocol family @@ -36,10 +36,10 @@ * the address that was copied. b->current is advanced to point at the * next byte of available data in the buffer following the encoded * address. - * + * * lwres_getaddrsbyname() and lwres_getnamebyaddr() use the * lwres_gnbaresponse_t structure defined below: - * + * * \code * typedef struct { * lwres_uint32_t flags; @@ -54,45 +54,45 @@ * size_t baselen; * } lwres_gabnresponse_t; * \endcode - * + * * The contents of this structure are not manipulated directly but - * they are controlled through the \link lwres_gabn.c lwres_gabn*\endlink functions. - * + * they are controlled through the \link lwres_gabn.c lwres_gabn*\endlink functions. + * * The lightweight resolver uses lwres_getaddrsbyname() to perform * foward lookups. Hostname name is looked up using the resolver - * context ctx for memory allocation. addrtypes is a bitmask + * context ctx for memory allocation. addrtypes is a bitmask * indicating which type of addresses are to be looked up. Current * values for this bitmask are #LWRES_ADDRTYPE_V4 for IPv4 addresses * and #LWRES_ADDRTYPE_V6 for IPv6 addresses. Results of the lookup are * returned in *structp. - * - * lwres_getnamebyaddr() performs reverse lookups. Resolver context + * + * lwres_getnamebyaddr() performs reverse lookups. Resolver context * ctx is used for memory allocation. The address type is indicated by * addrtype: #LWRES_ADDRTYPE_V4 or #LWRES_ADDRTYPE_V6. The address to be - * looked up is given by addr and its length is addrlen bytes. The - * result of the function call is made available through *structp. - * + * looked up is given by addr and its length is addrlen bytes. The + * result of the function call is made available through *structp. + * * \section lwresutil_return Return Values - * + * * Successful calls to lwres_string_parse() and lwres_addr_parse() - * return #LWRES_R_SUCCESS. Both functions return #LWRES_R_FAILURE if - * the buffer is corrupt or #LWRES_R_UNEXPECTEDEND if the buffer has + * return #LWRES_R_SUCCESS. Both functions return #LWRES_R_FAILURE if + * the buffer is corrupt or #LWRES_R_UNEXPECTEDEND if the buffer has * less space than expected for the components of the encoded string * or address. - * + * * lwres_getaddrsbyname() returns #LWRES_R_SUCCESS on success and it * returns #LWRES_R_NOTFOUND if the hostname name could not be found. - * + * * #LWRES_R_SUCCESS is returned by a successful call to * lwres_getnamebyaddr(). - * + * * Both lwres_getaddrsbyname() and lwres_getnamebyaddr() return * #LWRES_R_NOMEMORY when memory allocation requests fail and * #LWRES_R_UNEXPECTEDEND if the buffers used for sending queries and - * receiving replies are too small. - * + * receiving replies are too small. + * * \section lwresutil_see See Also - * + * * lwbuffer.c, lwres_gabn.c */ @@ -390,7 +390,7 @@ lwres_getnamebyaddr(lwres_context_t *ctx, lwres_uint32_t addrtype, request.flags = 0; request.addr.family = addrtype; request.addr.length = addrlen; - memcpy(request.addr.address, addr, addrlen); + memmove(request.addr.address, addr, addrlen); pkt.pktflags = 0; pkt.serial = serial; pkt.result = 0; @@ -1 +1 @@ -SRCID=a51a5739 +SRCID=f7a59390 @@ -8,6 +8,6 @@ DESCRIPTION="(Extended Support Version)" MAJORVER=9 MINORVER=9 PATCHVER=5 -RELEASETYPE=b +RELEASETYPE=rc RELEASEVER=1 EXTENSIONS= diff --git a/win32utils/Configure b/win32utils/Configure index a2e6b68b..cf9e0b53 100644 --- a/win32utils/Configure +++ b/win32utils/Configure @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2013, 2014 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 @@ -332,6 +332,7 @@ my @substdefp = ("ISC_PLATFORM_HAVEATOMICSTORE", "ISC_PLATFORM_HAVECMPXCHG", "ISC_PLATFORM_HAVEXADD", "ISC_PLATFORM_HAVEXADDQ", + "ISC_PLATFORM_NEEDSTRCASESTR", "ISC_PLATFORM_OPENSSLHASH", "ISC_PLATFORM_USEBACKTRACE"); @@ -563,7 +564,7 @@ foreach (@ARGV) { } elsif (/^disable-(.*)$/i) { appargs($_); myenable($1, "no"); - } elsif (/^enable-(.$)$/i) { + } elsif (/^enable-(.*)$/i) { appargs($_); myenable($1, "yes"); } elsif (/^without-(.*)$/i) { @@ -1057,6 +1058,9 @@ if ($msc_ver >= 1700) { $configdefp{"ISC_PLATFORM_USEBACKTRACE"} = 1; } +# no version of MSVS supports strcasestr() yet +$configdefp{"ISC_PLATFORM_NEEDSTRCASESTR"} = 1; + # warn when cross compiling if ($cross_compile eq "yes") { diff --git a/win32utils/build.txt b/win32utils/build.txt index ff3208e7..b2fe812e 100644 --- a/win32utils/build.txt +++ b/win32utils/build.txt @@ -1,4 +1,4 @@ -Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC")
+Copyright (C) 2013, 2014 Internet Systems Consortium, Inc. ("ISC")
See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
BIND 9.10 for Win32 Source Build Instructions. 11-Jul-2013
@@ -41,15 +41,15 @@ Step 1: Download and build OpenSSL Download and untar the OpenSSL sources from http://www.openssl.org/.
Extract them at in the same directory in which you extracted the BIND 9
source: If BIND 9 is in \build\bind-9.10.0, for instance, OpenSSL should
- be in \build\openssl-1.0.1e (subject to version number changes).
+ be in \build\openssl-1.0.1f (subject to version number changes).
Note: Building OpenSSL requires that you install Perl as it uses it
during its build process. The following commands work as of
- openssl-1.0.1e, but you should check the OpenSSL distribution to see
+ openssl-1.0.1f, but you should check the OpenSSL distribution to see
if the build instructions in the INSTALL.W32 (or INSTALL.W64) file
have changed, in particular for the assembler options:
- cd openssl-1.0.1e
+ cd openssl-1.0.1f
perl Configure --prefix=c:/openssl enable-static-engine VC-WIN32
ms\do_ms
nmake /f ms\ntdll.mak
@@ -62,7 +62,7 @@ Step 1: Download and build OpenSSL If you wish to use PKCS #11 to control a cryptographic hardware
service module, please see "PKCS #11 (Cryptoki) support" in chapter 4
of the BIND 9 Administrator Reference Guide. You will need to apply
- the patch in bind9\bin\pkcs11\openssl-1.0.1e-patch (this can be done
+ the patch in bind9\bin\pkcs11\openssl-1.0.1f-patch (this can be done
using the Cygwin 'patch' utility) and add --pk11-libname and
--pk11-flavor to the Configure command above.
@@ -74,12 +74,12 @@ Step 2: Download and build LibXML2 Download and untar the libxml2 sources from ftp://xmlsoft.org/libxml2.
Extract them in the same directory in which you extracted the BIND 9
source: If BIND 9 is in \build\bind-9.10.0, for instance, libxml2 should
- be in \build\libxml2-2.7.7 (subject to version number changes).
+ be in \build\libxml2-2.9.1 (subject to version number changes).
Now build libxml2, and copy the resulting files into the include and lib
directories:
- cd libxml2-2.7.7\win32
+ cd libxml2-2.9.1\win32
cscript configure.js compiler=msvc vcmanifest=yes static=yes \
debug=no iconv=no
nmake /f Makefile.msvc libxml
|