summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorInternet Software Consortium, Inc <@isc.org>2008-10-21 18:49:41 -0600
committerInternet Software Consortium, Inc <@isc.org>2008-10-21 18:49:41 -0600
commit020439a3c89f1e6c80617c605edeb0427183a1df (patch)
tree8b709e1269019674d029d00793c37c9ca0245fe1
parent3ff4f2ccd1b62c92dfbb75ec0b24ea9e68ea2b71 (diff)
downloadbind9-020439a3c89f1e6c80617c605edeb0427183a1df.tar.gz
9.5.1b2
-rw-r--r--CHANGES181
-rw-r--r--FAQ105
-rw-r--r--FAQ.xml113
-rw-r--r--README18
-rw-r--r--bin/dig/dighost.c12
-rw-r--r--bin/named/bind9.xsl310
-rw-r--r--bin/named/bind9.xsl.h385
-rw-r--r--bin/named/config.c5
-rw-r--r--bin/named/controlconf.c6
-rwxr-xr-xbin/named/convertxsl.pl38
-rw-r--r--bin/named/interfacemgr.c45
-rw-r--r--bin/named/lwresd.c11
-rw-r--r--bin/named/main.c19
-rw-r--r--bin/named/named.823
-rw-r--r--bin/named/named.conf.57
-rw-r--r--bin/named/named.conf.docbook6
-rw-r--r--bin/named/named.conf.html33
-rw-r--r--bin/named/named.docbook33
-rw-r--r--bin/named/named.html45
-rw-r--r--bin/named/server.c94
-rw-r--r--bin/named/statschannel.c536
-rw-r--r--bin/named/xfrout.c5
-rw-r--r--bin/nsupdate/Makefile.in10
-rw-r--r--bin/nsupdate/nsupdate.1 (renamed from bin/nsupdate/nsupdate.8)8
-rw-r--r--bin/nsupdate/nsupdate.docbook7
-rw-r--r--bin/nsupdate/nsupdate.html16
-rw-r--r--bin/rndc/rndc.c28
-rw-r--r--bin/tests/dst/Makefile.in6
-rw-r--r--bin/tests/sig0_test.c6
-rw-r--r--bin/tests/sock_test.c6
-rw-r--r--bin/tests/system/acl/tests.sh36
-rwxr-xr-xbin/tests/system/ifconfig.sh6
-rw-r--r--bin/win32/BINDInstall/VersionInfo.cpp6
-rw-r--r--config.h.in8
-rwxr-xr-xconfigure365
-rw-r--r--configure.in75
-rw-r--r--doc/arm/Bv9ARM-book.xml39
-rw-r--r--doc/arm/Bv9ARM.ch02.html14
-rw-r--r--doc/arm/Bv9ARM.ch06.html110
-rw-r--r--doc/arm/Bv9ARM.ch07.html14
-rw-r--r--doc/arm/Bv9ARM.ch08.html18
-rw-r--r--doc/arm/Bv9ARM.ch09.html180
-rw-r--r--doc/arm/Bv9ARM.html46
-rwxr-xr-xdoc/arm/Bv9ARM.pdf13559
-rw-r--r--doc/arm/man.dig.html20
-rw-r--r--doc/arm/man.dnssec-keygen.html14
-rw-r--r--doc/arm/man.dnssec-signzone.html12
-rw-r--r--doc/arm/man.host.html10
-rw-r--r--doc/arm/man.named-checkconf.html12
-rw-r--r--doc/arm/man.named-checkzone.html12
-rw-r--r--doc/arm/man.named.html43
-rw-r--r--doc/arm/man.rndc-confgen.html12
-rw-r--r--doc/arm/man.rndc.conf.html12
-rw-r--r--doc/arm/man.rndc.html12
-rw-r--r--doc/misc/options1
-rw-r--r--doc/rfc/index3
-rw-r--r--doc/rfc/rfc4648.txt1011
-rw-r--r--doc/rfc/rfc5155.txt2915
-rw-r--r--lib/bind/api2
-rwxr-xr-xlib/bind/configure4
-rw-r--r--lib/bind/configure.in4
-rw-r--r--lib/bind/inet/inet_net_pton.c6
-rw-r--r--lib/bind9/api2
-rw-r--r--lib/bind9/check.c7
-rw-r--r--lib/dns/acl.c11
-rw-r--r--lib/dns/api4
-rw-r--r--lib/dns/dispatch.c216
-rw-r--r--lib/dns/gssapi_link.c4
-rw-r--r--lib/dns/iptable.c14
-rw-r--r--lib/dns/masterdump.c5
-rw-r--r--lib/dns/message.c5
-rw-r--r--lib/dns/rbtdb.c90
-rw-r--r--lib/dns/rdata/generic/nsec_47.c8
-rw-r--r--lib/dns/rdata/generic/nsec_47.h6
-rw-r--r--lib/dns/request.c6
-rw-r--r--lib/dns/resolver.c67
-rw-r--r--lib/dns/validator.c8
-rw-r--r--lib/dns/xfrin.c27
-rw-r--r--lib/isc/api2
-rw-r--r--lib/isc/httpd.c4
-rw-r--r--lib/isc/include/isc/httpd.h4
-rw-r--r--lib/isc/include/isc/msgs.h11
-rw-r--r--lib/isc/include/isc/resource.h14
-rw-r--r--lib/isc/include/isc/socket.h58
-rw-r--r--lib/isc/radix.c55
-rw-r--r--lib/isc/timer.c4
-rw-r--r--lib/isc/unix/resource.c56
-rw-r--r--lib/isc/unix/socket.c360
-rw-r--r--lib/isc/win32/errno2result.c39
-rw-r--r--lib/isc/win32/include/isc/mutex.h14
-rw-r--r--lib/isc/win32/libisc.def4
-rw-r--r--lib/isc/win32/libisc.dsp2
-rw-r--r--lib/isc/win32/net.c5
-rw-r--r--lib/isc/win32/resource.c9
-rw-r--r--lib/isc/win32/socket.c3117
-rw-r--r--lib/isc/win32/time.c21
-rw-r--r--lib/isccfg/aclconf.c16
-rw-r--r--lib/isccfg/api2
-rw-r--r--lib/isccfg/namedconf.c3
-rw-r--r--version4
100 files changed, 8054 insertions, 16928 deletions
diff --git a/CHANGES b/CHANGES
index f9e507fc..bc5a4f0a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,180 @@
+ --- 9.5.1b2 released ---
+
+2443. [bug] win32: UDP connect() would not generate an event,
+ and so connected UDP sockets would never clean up.
+ Fix this by doing an immediate WSAConnect() rather
+ than an io completion port type for UDP.
+
+2442. [bug] A lock could be destroyed twice. [RT# 18626]
+
+2441. [bug] isc_radix_insert() could copy radix tree nodes
+ incompletely. [RT #18573]
+
+2440. [bug] named-checkconf used an incorrect test to determine
+ if an ACL was set to none.
+
+2439. [bug] Potential NULL dereference in dns_acl_isanyornone().
+ [RT #18559]
+
+2438. [bug] Timeouts could be logged incorrectly under win32.
+ [RT #18617]
+
+2437. [bug] Sockets could be closed too early, leading to
+ inconsistent states in the socket module. [RT #18298]
+
+2436. [security] win32: UDP client handler can be shutdown. [RT #18576]
+
+2435. [bug] Fixed an ACL memory leak affecting win32.
+
+2434. [bug] Fixed a minor error-reporting bug in
+ lib/isc/win32/socket.c.
+
+2433. [tuning] Set initial timeout to 800ms.
+
+2432. [bug] More Windows socket handling improvements. Stop
+ using I/O events and use IO Completion Ports
+ throughout. Rewrite the receive path logic to make
+ it easier to support multiple simultaneous
+ requestrs in the future. Add stricter consistency
+ checking as a compile-time option (define
+ ISC_SOCKET_CONSISTENCY_CHECKS; defaults to off).
+
+2431. [bug] Acl processing could leak memory. [RT #18323]
+
+2430. [bug] win32: isc_interval_set() could round down to
+ zero if the input was less than NS_INTERVAL
+ nanoseconds. Round up instead. [RT #18549]
+
+2429. [doc] nsupdate should be in section 1 of the man pages.
+ [RT #18283]
+
+2428. [bug] dns_iptable_merge() mishandled merges of negative
+ tables. [RT #18409]
+
+2426. [bug] libbind: inet_net_pton() can sometimes return the
+ wrong value if excessively large netmasks are
+ supplied. [RT #18512]
+
+2425. [bug] named didn't detect unavailable query source addresses
+ at load time. [RT #18536]
+
+2424. [port] configure now probes for a working epoll
+ implementation. Allow the use of kqueue,
+ epoll and /dev/poll to be selected at compile
+ time. [RT #18277]
+
+2422. [bug] Handle the special return value of a empty node as
+ if it was a NXRRSET in the validator. [RT #18447]
+
+2421. [func] Add new command line option '-S' for named to specify
+ the max number of sockets. [RT #18493]
+ Use caution: this option may not work for some
+ operating systems without rebuilding named.
+
+2420. [bug] Windows socket handling cleanup. Let the io
+ completion event send out cancelled read/write
+ done events, which keeps us from writing to memeory
+ we no longer have ownership of. Add debugging
+ socket_log() function. Rework TCP socket handling
+ to not leak sockets.
+
+2419. [cleanup] Document that isc_socket_create() and isc_socket_open()
+ should not be used for isc_sockettype_fdwatch sockets.
+ [RT #18521]
+
+2418. [bug] AXFR request on a DLZ could trigger a REQUIRE failure
+ [RT #18430]
+
+2417. [bug] Connecting UDP sockets for outgoing queries could
+ unexpectedly fail with an 'address already in use'
+ error. [RT #18411]
+
+2416. [func] Log file descriptors that cause exceeding the
+ internal maximum. [RT #18460]
+
+2415. [bug] 'rndc dumpdb' could trigger various assertion failures
+ in rbtdb.c. [RT #18455]
+
+2414. [bug] A masterdump context held the database lock too long,
+ causing various troubles such as dead lock and
+ recursive lock acquisition. [RT #18311, #18456]
+
+2413. [bug] Fixed an unreachable code path in socket.c. [RT #18442]
+
+2412. [bug] win32: address a resourse leak. [RT #18374]
+
+2411. [bug] Allow using a larger number of sockets than FD_SETSIZE
+ for select(). To enable this, set ISC_SOCKET_MAXSOCKETS
+ at compilation time. [RT #18433]
+
+2410. [bug] Correctly delete m_versionInfo. [RT #18432]
+
+2409. [bug] Only log that we disabled EDNS processing if we were
+ subsequently successful. [RT #18029]
+
+2408. [bug] A duplicate TCP dispatch event could be sent, which
+ could then trigger an assertion failure in
+ resquery_response(). [RT #18275]
+
+2407. [port] hpux: test for sys/dyntune.h. [RT #18421]
+
+xxxx. [bug] Connecting UDP sockets for outgoing queries could
+ unexpectedly fail with an 'address already in use'
+ error.
+
+2405. [cleanup] The default value for dnssec-validation was changed to
+ "yes" in 9.5.0-P1 and all subsequent releases; this
+ was inadvertently omitted from CHANGES at the time.
+
+2404. [port] hpux: files unlimited support.
+
+2403. [bug] TSIG context leak. [RT #18341]
+
+2402. [port] Support Solaris 2.11 and over. [RT #18362]
+
+2401. [bug] Expect to get E[MN]FILE errno internal_accept()
+ (from accept() or fcntl() system calls). [RT #18358]
+
+2400. [bug] Log if kqueue()/epoll_create()/open(/dev/poll) fails.
+ [RT #18297]
+
+2398. [bug] Improve file descriptor management. New,
+ temporary, named.conf option reserved-sockets,
+ default 512. [RT #18344]
+
+2397. [bug] gssapi_functions bad declaration. [RT #18355]
+
+2396. [bug] Don't set SO_REUSEADDR for randomized ports.
+ [RT #18336]
+
+2395. [port] Avoid warning and no effect from "files unlimited"
+ on Linux when running as root. [RT #18335]
+
+2394. [bug] Default configuration options set the limit for
+ open files to 'unlimited' as described in the
+ documentation. [RT #18331]
+
+2393. [bug] nested acls containing keys could trigger an
+ assertion in acl.c. [RT #18166]
+
+2392. [bug] remove 'grep -q' from acl test script, some platforms
+ don't support it. [RT #18253]
+
+2391. [port] hpux: cover additional recvmsg() error codes.
+ [RT #18301]
+
+2390. [bug] dispatch.c could make a false warning on 'odd socket'.
+ [RT #18301].
+
+2389. [bug] Move the "working directory writable" check to after
+ the ns_os_changeuser() call. [RT #18326]
+
+2388. [bug] Avoid using tables for layout purposes in
+ statistics XSL [RT #18159].
+
+2386. [func] Add warning about too small 'open files' limit.
+ [RT #18269]
+
--- 9.5.1b1 released ---
2385. [bug] A condition variable in socket.c could leak in
@@ -65,7 +242,7 @@
2365. [bug] Fix a bug that caused dns_acl_isany() to return
spurious results. [RT #18000]
-2364. [bug] named could trigger a assertion when serving a
+2364. [bug] named could trigger an assertion when serving a
malformed signed zone. [RT #17828]
2363. [port] sunos: pre-set "lt_cv_sys_max_cmd_len=4096;".
@@ -833,7 +1010,7 @@
2111. [bug] Fix a number of errors reported by Coverity.
[RT #16507]
-2110. [bug] "minimal-response yes;" interacted badly with BIND 8
+2110. [bug] "minimal-responses yes;" interacted badly with BIND 8
priming queries. [RT #16491]
2109. [port] libbind: silence aix 5.3 compiler warnings. [RT #16502]
diff --git a/FAQ b/FAQ
index e6b2ff27..2c333bef 100644
--- a/FAQ
+++ b/FAQ
@@ -205,6 +205,8 @@ A: These indicate a malformed master zone. You can identify the exact
Q: I get error messages like "named.conf:99: unexpected end of input"
where 99 is the last line of named.conf.
+A: There are unbalanced quotes in named.conf.
+
A: Some text editors (notepad and wordpad) fail to put a line title
indication (e.g. CR/LF) on the last line of a text file. This can be
fixed by "adding" a blank line to the end of the file. Named expects to
@@ -375,7 +377,60 @@ A: When reloading a zone named my have multiple copies of the zone in
other errors in the master file as it still has an in-core copy of the
old contents.
-3. General Questions
+Q: I want to use IPv6 locally but I don't have a external IPv6 connection.
+ External lookups are slow.
+
+A: You can use server clauses to stop named making external lookups over
+ IPv6.
+
+ server fd81:ec6c:bd62::/48 { bogus no; }; // site ULA prefix
+ server ::/0 { bogus yes; };
+
+3. Operations Questions
+
+Q: How to change the nameservers for a zone?
+
+A: Step 1: Ensure all nameservers, new and old, are serving the same zone
+ content.
+
+ Step 2: Work out the maximum TTL of the NS RRset in the parent and
+ child zones. This is the time it will take caches to be clear of a
+ particular version of the NS RRset. If you are just removing
+ nameservers you can skip to Step 6.
+
+ Step 3: Add new nameservers to the NS RRset for the zone and wait until
+ all the servers for the zone are answering with this new NS RRset.
+
+ Step 4: Inform the parent zone of the new NS RRset then wait for all
+ the parent servers to be answering with the new NS RRset.
+
+ Step 5: Wait for cache to be clear of the old NS RRset. See Step 2 for
+ how long. If you are just adding nameservers you are done.
+
+ Step 6: Remove any old nameservers from the zones NS RRset and wait for
+ all the servers for the zone to be serving the new NS RRset.
+
+ Step 7: Inform the parent zone of the new NS RRset then wait for all
+ the parent servers to be answering with the new NS RRset.
+
+ Step 8: Wait for cache to be clear of the old NS RRset. See Step 2 for
+ how long.
+
+ Step 9: Turn off the old nameservers or remove the zone entry from the
+ configuration of the old nameservers.
+
+ Step 10: Increment the serial number and wait for the change to be
+ visible in all nameservers for the zone. This ensures that zone
+ transfers are still working after the old servers are decommissioned.
+
+ Note: the above procedure is designed to be transparent to dns clients.
+ Decommissioning the old servers too early will result in some clients
+ not being able to look up answers in the zone.
+
+ Note: while it is possible to run the addition and removal stages
+ together it is not recommended.
+
+4. General Questions
Q: I keep getting log messages like the following. Why?
@@ -396,8 +451,8 @@ A: Someone is trying to update your DNS data using the RFC2136 Dynamic
Update protocol. Windows 2000 machines have a habit of sending dynamic
update requests to DNS servers without being specifically configured to
do so. If the update requests are coming from a Windows 2000 machine,
- see http://support.microsoft.com/support/kb/articles/q246/8/04.asp for
- information about how to turn them off.
+ see <http://support.microsoft.com/support/kb/articles/q246/8/04.asp>
+ for information about how to turn them off.
Q: When I do a "dig . ns", many of the A records for the root servers are
missing. Why?
@@ -468,7 +523,7 @@ A: If the IN-ADDR.ARPA name covered refers to a internal address space you
are using then you have failed to follow RFC 1918 usage rules and are
leaking queries to the Internet. You should establish your own zones
for these addresses to prevent you querying the Internet's name servers
- for these addresses. Please see http://as112.net/ for details of the
+ for these addresses. Please see <http://as112.net/> for details of the
problems you are causing and the counter measures that have had to be
deployed.
@@ -541,9 +596,16 @@ A: No. The BIND 9 bug database is kept closed for a number of reasons.
that have been fixed post release. That is as close as we can get to
providing a bug database.
-4. Operating-System Specific Questions
+Q: Why do queries for NSEC3 records fail to return the NSEC3 record?
-4.1. HPUX
+A: NSEC3 records are strictly meta data and can only be returned in the
+ authority section. This is done so that signing the zone using NSEC3
+ records does not bring names into existance that do not exist in the
+ unsigned version of the zone.
+
+5. Operating-System Specific Questions
+
+5.1. HPUX
Q: I get the following error trying to configure BIND:
@@ -559,7 +621,7 @@ A: You have attempted to configure BIND with the bundled C compiler. This
./configure CC=<compiler> ...
-4.2. Linux
+5.2. Linux
Q: Why do I get the following errors:
@@ -569,7 +631,20 @@ Q: Why do I get the following errors:
A: This is the result of a Linux kernel bug.
- See: http://marc.theaimsgroup.com/?l=linux-netdev&m=113081708031466&w=2
+ See: <http://marc.theaimsgroup.com/?l=linux-netdev&m=113081708031466&w=
+ 2>
+
+Q: Why does named lock up when it attempts to connect over IPSEC tunnels?
+
+A: This is due to a kernel bug where the fact that a socket is marked
+ non-blocking is ignored. It is reported that setting xfrm_larval_drop
+ to 1 helps but this may have negative side effects. See: <https://
+ bugzilla.redhat.com/show_bug.cgi?id=427629> and <http://lkml.org/lkml/
+ 2007/12/4/260>.
+
+ xfrm_larval_drop can be set to 1 by the following procedure:
+
+ echo "1" > proc/sys/net/core/xfrm_larval_drop
Q: Why do I see 5 (or more) copies of named on Linux?
@@ -613,7 +688,7 @@ Q: I'm running BIND on Red Hat Enterprise Linux or Fedora Core -
A: Red Hat Security Enhanced Linux (SELinux) policy security protections :
Red Hat have adopted the National Security Agency's SELinux security
- policy ( see http://www.nsa.gov/selinux ) and recommendations for BIND
+ policy (see <http://www.nsa.gov/selinux>) and recommendations for BIND
security , which are more secure than running named in a chroot and
make use of the bind-chroot environment unnecessary .
@@ -716,7 +791,7 @@ A: This is usually due to "/proc/net/if_inet6" not being available in the
proc /proc proc defaults 0 0
proc /var/named/proc proc defaults 0 0
-4.3. Windows
+5.3. Windows
Q: Zone transfers from my BIND 9 master to my Windows 2000 slave fail.
Why?
@@ -742,7 +817,7 @@ A: This is the service manager saying that named exited. You need to
Directory "C:\windows\dns\etc";
};
-4.4. FreeBSD
+5.4. FreeBSD
Q: I have FreeBSD 4.x and "rndc-confgen -a" just sits there.
@@ -753,17 +828,17 @@ A: /dev/random is not configured. Use rndcontrol(8) to tell the kernel to
/etc/rc.conf
rand_irqs="3 14 15"
- See also http://people.freebsd.org/~dougb/randomness.html
+ See also <http://people.freebsd.org/~dougb/randomness.html>.
-4.5. Solaris
+5.5. Solaris
Q: How do I integrate BIND 9 and Solaris SMF
A: Sun has a blog entry describing how to do this.
- http://blogs.sun.com/roller/page/anay/Weblog?catname=%2FSolaris
+ <http://blogs.sun.com/roller/page/anay/Weblog?catname=%2FSolaris>
-4.6. Apple Mac OS X
+5.6. Apple Mac OS X
Q: How do I run BIND 9 on Apple Mac OS X?
diff --git a/FAQ.xml b/FAQ.xml
index 85f6eae9..af600533 100644
--- a/FAQ.xml
+++ b/FAQ.xml
@@ -17,7 +17,7 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: FAQ.xml,v 1.30.26.4 2008/06/04 02:51:13 tbox Exp $ -->
+<!-- $Id: FAQ.xml,v 1.30.26.6 2008/09/10 01:43:22 tbox Exp $ -->
<article class="faq">
<title>Frequently Asked Questions about BIND 9</title>
@@ -393,6 +393,11 @@ named-checkzone example.com tmp</programlisting>
</question>
<answer>
<para>
+ There are unbalanced quotes in named.conf.
+ </para>
+ </answer>
+ <answer>
+ <para>
Some text editors (notepad and wordpad) fail to put a line
title indication (e.g. CR/LF) on the last line of a
text file. This can be fixed by "adding" a blank line to
@@ -661,9 +666,98 @@ zone "list.dsbl.org" {
</para>
</answer>
</qandaentry>
+
+ <qandaentry>
+ <question>
+ <para>
+ I want to use IPv6 locally but I don't have a external IPv6
+ connection. External lookups are slow.
+ </para>
+ </question>
+ <answer>
+ <para>
+ You can use server clauses to stop named making external lookups
+ over IPv6.
+ </para>
+ <programlisting>
+server fd81:ec6c:bd62::/48 { bogus no; }; // site ULA prefix
+server ::/0 { bogus yes; };
+</programlisting>
+ </answer>
+ </qandaentry>
</qandadiv> <!-- Configuration and Setup Questions -->
+ <qandadiv><title>Operations Questions</title>
+
+ <qandaentry>
+ <question>
+ <para>
+ How to change the nameservers for a zone?
+ </para>
+ </question>
+ <answer>
+ <para>
+ Step 1: Ensure all nameservers, new and old, are serving the
+ same zone content.
+ </para>
+ <para>
+ Step 2: Work out the maximum TTL of the NS RRset in the parent and child
+ zones. This is the time it will take caches to be clear of a
+ particular version of the NS RRset.
+ If you are just removing nameservers you can skip to Step 6.
+ </para>
+ <para>
+ Step 3: Add new nameservers to the NS RRset for the zone and
+ wait until all the servers for the zone are answering with this
+ new NS RRset.
+ </para>
+ <para>
+ Step 4: Inform the parent zone of the new NS RRset then wait for all the
+ parent servers to be answering with the new NS RRset.
+ </para>
+ <para>
+ Step 5: Wait for cache to be clear of the old NS RRset.
+ See Step 2 for how long.
+ If you are just adding nameservers you are done.
+ </para>
+ <para>
+ Step 6: Remove any old nameservers from the zones NS RRset and
+ wait for all the servers for the zone to be serving the new NS RRset.
+ </para>
+ <para>
+ Step 7: Inform the parent zone of the new NS RRset then wait for all the
+ parent servers to be answering with the new NS RRset.
+ </para>
+ <para>
+ Step 8: Wait for cache to be clear of the old NS RRset.
+ See Step 2 for how long.
+ </para>
+ <para>
+ Step 9: Turn off the old nameservers or remove the zone entry from
+ the configuration of the old nameservers.
+ </para>
+ <para>
+ Step 10: Increment the serial number and wait for the change to
+ be visible in all nameservers for the zone. This ensures that
+ zone transfers are still working after the old servers are
+ decommissioned.
+ </para>
+ <para>
+ Note: the above procedure is designed to be transparent
+ to dns clients. Decommissioning the old servers too early
+ will result in some clients not being able to look up
+ answers in the zone.
+ </para>
+ <para>
+ Note: while it is possible to run the addition and removal
+ stages together it is not recommended.
+ </para>
+ </answer>
+ </qandaentry>
+
+ </qandadiv> <!-- Operations Questions -->
+
<qandadiv><title>General Questions</title>
<qandaentry>
@@ -962,6 +1056,23 @@ empty:
</answer>
</qandaentry>
+ <qandaentry>
+ <question>
+ <para>
+ Why do queries for NSEC3 records fail to return the NSEC3 record?
+ </para>
+ </question>
+ <answer>
+ <para>
+ NSEC3 records are strictly meta data and can only be
+ returned in the authority section. This is done so that
+ signing the zone using NSEC3 records does not bring names
+ into existance that do not exist in the unsigned version
+ of the zone.
+ </para>
+ </answer>
+ </qandaentry>
+
</qandadiv> <!-- General Questions -->
<qandadiv><title>Operating-System Specific Questions</title>
diff --git a/README b/README
index 07cd9741..703d864e 100644
--- a/README
+++ b/README
@@ -58,9 +58,6 @@ BIND 9.5.0
- Efficient LRU cache-cleaning mechanism.
- NSID support (RFC 5001).
- Please see the file KNOWN-DEFECTS for information about known
- problems in the 9.5.0 release.
-
BIND 9.4.0
BIND 9.4.0 has a number of new features over 9.3,
@@ -301,7 +298,7 @@ BIND 9.2.0
This does not apply to the use of TSIG, which does not
require OpenSSL.
- - The source distribution now builds on Windows NT/2000.
+ - The source distribution now builds on Windows.
See win32utils/readme1.txt and win32utils/win32-build.txt
for details.
@@ -350,11 +347,8 @@ BIND 9.2.0
--with-libtool does not work on AIX.
- --with-libtool does not work on SunOS 4. configure
- requires "printf" which is not available.
-
- A bug in the Windows 2000 DNS server can cause zone transfers
- from a BIND 9 server to a W2K server to fail. For details,
+ A bug in some versions of the Microsoft DNS server can cause zone
+ transfers from a BIND 9 server to a W2K server to fail. For details,
see the "Zone Transfers" section in doc/misc/migration.
For a detailed list of user-visible changes from
@@ -377,7 +371,11 @@ Building
OpenBSD 3.3 and up
Solaris 8, 9, 9 (x86), 10
Ubuntu 7.04, 7.10
- Windows NT/2000/XP/2003
+ Windows XP/2003/2008
+
+ NOTE: As of BIND 9.5.1, 9.4.3, and 9.3.6, older versions of
+ Windows, including Windows NT and Windows 2000, are no longer
+ supported.
We have recent reports from the user community that a supported
version of BIND will build and run on the following systems:
diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c
index 5419fc7a..b523b4ec 100644
--- a/bin/dig/dighost.c
+++ b/bin/dig/dighost.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dighost.c,v 1.304.12.5 2008/04/03 02:12:21 marka Exp $ */
+/* $Id: dighost.c,v 1.304.12.7 2008/07/23 23:31:17 marka Exp $ */
/*! \file
* \note
@@ -2236,14 +2236,15 @@ send_tcp_connect(dig_query_t *query) {
sockcount++;
debug("sockcount=%d", sockcount);
if (specified_source)
- result = isc_socket_bind(query->sock, &bind_address);
+ result = isc_socket_bind(query->sock, &bind_address,
+ ISC_SOCKET_REUSEADDRESS);
else {
if ((isc_sockaddr_pf(&query->sockaddr) == AF_INET) &&
have_ipv4)
isc_sockaddr_any(&bind_any);
else
isc_sockaddr_any6(&bind_any);
- result = isc_socket_bind(query->sock, &bind_any);
+ result = isc_socket_bind(query->sock, &bind_any, 0);
}
check_result(result, "isc_socket_bind");
bringup_timer(query, TCP_TIMEOUT);
@@ -2290,11 +2291,12 @@ send_udp(dig_query_t *query) {
sockcount++;
debug("sockcount=%d", sockcount);
if (specified_source) {
- result = isc_socket_bind(query->sock, &bind_address);
+ result = isc_socket_bind(query->sock, &bind_address,
+ ISC_SOCKET_REUSEADDRESS);
} else {
isc_sockaddr_anyofpf(&bind_any,
isc_sockaddr_pf(&query->sockaddr));
- result = isc_socket_bind(query->sock, &bind_any);
+ result = isc_socket_bind(query->sock, &bind_any, 0);
}
check_result(result, "isc_socket_bind");
diff --git a/bin/named/bind9.xsl b/bin/named/bind9.xsl
index cf921ae0..b12a68e6 100644
--- a/bin/named/bind9.xsl
+++ b/bin/named/bind9.xsl
@@ -15,7 +15,7 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: bind9.xsl,v 1.13.130.5 2008/06/24 00:09:10 jinmei Exp $ -->
+<!-- $Id: bind9.xsl,v 1.13.130.6 2008/07/17 23:50:58 jinmei Exp $ -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
@@ -60,7 +60,7 @@ td, th {
padding-left: 5px;
}
-.header {
+.header h1 {
background-color: teal;
color: #ffffff;
padding: 4px;
@@ -81,11 +81,53 @@ td, th {
padding: 4px;
font-weight: bold;
}
+
+div.statcounter h2 {
+ text-align: center;
+ font-size: large;
+ border: 1px solid #000000;
+ background-color: #8080ff;
+ color: #ffffff;
+}
+
+div.statcounter dl {
+ float: left;
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 0;
+ margin-right: 0;
+}
+
+div.statcounter dt {
+ width: 200px;
+ text-align: center;
+ font-weight: bold;
+ border: 0.5px solid #000000;
+ background-color: #8080ff;
+ color: #ffffff;
+}
+
+div.statcounter dd {
+ width: 200px;
+ text-align: right;
+ border: 0.5px solid #000000;
+ background-color: teal;
+ color: #ffffff;
+ margin-left: 0;
+ margin-right: 0;
+}
+
+div.statcounter br {
+ clear: left;
+}
</style>
<title>BIND 9 Statistics</title>
</head>
<body>
- <div class="header">Bind 9 Configuration and Statistics</div>
+ <div class="header">
+ <h1>Bind 9 Configuration and Statistics</h1>
+ </div>
+
<br/>
<table>
@@ -143,231 +185,53 @@ td, th {
<br/>
- <table>
- <tr class="rowh"><th colspan="10">Server Statistics</th></tr>
- <tr class="rowh">
- <!-- The ordering of the following items must be consistent
- with dns_nsstatscounter_xxx -->
- <th>Requestv4</th>
- <th>Requestv6</th>
- <th>ReqEdns0</th>
- <th>ReqBadEDNSVer</th>
- <th>ReqTSIG</th>
- <th>ReqSIG0</th>
- <th>ReqBadSIG</th>
- <th>ReqTCP</th>
- <th>AuthQryRej</th>
- <th>RecQryRej</th>
- </tr>
- <tr class="lrow">
- <td><xsl:value-of select="server/nsstats/Requestv4"/></td>
- <td><xsl:value-of select="server/nsstats/Requestv6"/></td>
- <td><xsl:value-of select="server/nsstats/ReqEdns0"/></td>
- <td><xsl:value-of select="server/nsstats/ReqBadEDNSVer"/></td>
- <td><xsl:value-of select="server/nsstats/ReqTSIG"/></td>
- <td><xsl:value-of select="server/nsstats/ReqSIG0"/></td>
- <td><xsl:value-of select="server/nsstats/ReqBadSIG"/></td>
- <td><xsl:value-of select="server/nsstats/ReqTCP"/></td>
- <td><xsl:value-of select="server/nsstats/AuthQryRej"/></td>
- <td><xsl:value-of select="server/nsstats/RecQryRej"/></td>
- </tr>
- <tr class="rowh">
- <th>XfrRej</th>
- <th>UpdateRej</th>
- <th>Response</th>
- <th>RespTruncated</th>
- <th>RespEDNS0</th>
- <th>RespTSIG</th>
- <th>RespSIG0</th>
- <th>QrySuccess</th>
- <th>QryAuthAns</th>
- <th>QryNoauthAns</th>
- </tr>
- <tr class="lrow">
- <td><xsl:value-of select="server/nsstats/XfrRej"/></td>
- <td><xsl:value-of select="server/nsstats/UpdateRej"/></td>
- <td><xsl:value-of select="server/nsstats/Response"/></td>
- <td><xsl:value-of select="server/nsstats/TruncatedResp"/></td>
- <td><xsl:value-of select="server/nsstats/RespEDNS0"/></td>
- <td><xsl:value-of select="server/nsstats/RespTSIG"/></td>
- <td><xsl:value-of select="server/nsstats/RespSIG0"/></td>
- <td><xsl:value-of select="server/nsstats/QrySuccess"/></td>
- <td><xsl:value-of select="server/nsstats/QryAuthAns"/></td>
- <td><xsl:value-of select="server/nsstats/QryNoauthAns"/></td>
- </tr>
- <tr class="rowh">
- <th>QryReferral</th>
- <th>QryNxrrset</th>
- <th>QrySERVFAIL</th>
- <th>QryFORMERR</th>
- <th>QryNXDOMAIN</th>
- <th>QryRecursion</th>
- <th>QryDuplicate</th>
- <th>QryDropped</th>
- <th>QryFailure</th>
- <th>XfrReqDone</th>
- </tr>
- <tr class="lrow">
- <td><xsl:value-of select="server/nsstats/QryReferral"/></td>
- <td><xsl:value-of select="server/nsstats/QryNxrrset"/></td>
- <td><xsl:value-of select="server/nsstats/QrySERVFAIL"/></td>
- <td><xsl:value-of select="server/nsstats/QryFORMERR"/></td>
- <td><xsl:value-of select="server/nsstats/QryNXDOMAIN"/></td>
- <td><xsl:value-of select="server/nsstats/QryRecursion"/></td>
- <td><xsl:value-of select="server/nsstats/QryDuplicate"/></td>
- <td><xsl:value-of select="server/nsstats/QryDropped"/></td>
- <td><xsl:value-of select="server/nsstats/QryFailure"/></td>
- <td><xsl:value-of select="server/nsstats/XfrReqDone"/></td>
- </tr>
- <tr class="rowh">
- <th>UpdateReqFwd</th>
- <th>UpdateRespFwd</th>
- <th>UpdateFwdFail</th>
- <th>UpdateDone</th>
- <th>UpdateFail</th>
- <th>UpdateBadPrereq</th>
- <th>RespMismatch</th>
- <th />
- <th />
- <th />
- </tr>
- <tr class="lrow">
- <td><xsl:value-of select="server/nsstats/UpdateReqFwd"/></td>
- <td><xsl:value-of select="server/nsstats/UpdateRespFwd"/></td>
- <td><xsl:value-of select="server/nsstats/UpdateFwdFail"/></td>
- <td><xsl:value-of select="server/nsstats/UpdateDone"/></td>
- <td><xsl:value-of select="server/nsstats/UpdateFail"/></td>
- <td><xsl:value-of select="server/nsstats/UpdateBadPrereq"/></td>
- <td><xsl:value-of select="server/resstats/Mismatch"/></td>
- <td />
- <td />
- <td />
- </tr>
- </table>
-
- <br/>
+ <div class="statcounter">
+ <h2>Server Statistics</h2>
+ <xsl:for-each select="server/nsstat">
+ <dl>
+ <dt><xsl:value-of select="name"/></dt>
+ <dd><xsl:value-of select="counter"/></dd>
+ </dl>
+ </xsl:for-each>
+ <br/>
+ </div>
- <table>
- <tr class="rowh"><th colspan="10">Zone Maintenance Statistics</th></tr>
- <tr class="rowh">
- <!-- The ordering of the following items must be consistent
- with dns_zonestatscounter_xxx -->
- <th>NotifyOutv4</th>
- <th>NotifyOutv6</th>
- <th>NotifyInv4</th>
- <th>NotifyInv6</th>
- <th>NotifyRej</th>
- <th>SOAOutv4</th>
- <th>SOAOutv6</th>
- <th>AXFRReqv4</th>
- <th>AXFRReqv6</th>
- <th>IXFRReqv4</th>
- </tr>
- <tr class="lrow">
- <td><xsl:value-of select="server/zonestats/NotifyOutv4"/></td>
- <td><xsl:value-of select="server/zonestats/NotifyOutv6"/></td>
- <td><xsl:value-of select="server/zonestats/NotifyInv4"/></td>
- <td><xsl:value-of select="server/zonestats/NotifyInv6"/></td>
- <td><xsl:value-of select="server/zonestats/NotifyRej"/></td>
- <td><xsl:value-of select="server/zonestats/SOAOutv4"/></td>
- <td><xsl:value-of select="server/zonestats/SOAOutv6"/></td>
- <td><xsl:value-of select="server/zonestats/AXFRReqv4"/></td>
- <td><xsl:value-of select="server/zonestats/AXFRReqv6"/></td>
- <td><xsl:value-of select="server/zonestats/IXFRReqv4"/></td>
- </tr>
- <tr class="rowh">
- <th>IXFRReqv6</th>
- <th>XfrSuccess</th>
- <th>XfrFail</th>
- <th/>
- <th/>
- <th/>
- <th/>
- <th/>
- <th/>
- <th/>
- </tr>
- <tr class="lrow">
- <td><xsl:value-of select="server/zonestats/IXFRReqv6"/></td>
- <td><xsl:value-of select="server/zonestats/XfrSuccess"/></td>
- <td><xsl:value-of select="server/zonestats/XfrFail"/></td>
- <td/>
- <td/>
- <td/>
- <td/>
- <td/>
- <td/>
- <td/>
- </tr>
- </table>
+ <div class="statcounter">
+ <h2>Zone Maintenance Statistics</h2>
+ <xsl:for-each select="server/zonestat">
+ <dl>
+ <dt><xsl:value-of select="name"/></dt>
+ <dd><xsl:value-of select="counter"/></dd>
+ </dl>
+ </xsl:for-each>
+ <br />
+ </div>
- <br/>
+ <div class="statcounter">
+ <h2>Resolver Statistics (Common)</h2>
+ <xsl:for-each select="server/resstat">
+ <dl>
+ <dt><xsl:value-of select="name"/></dt>
+ <dd><xsl:value-of select="counter"/></dd>
+ </dl>
+ </xsl:for-each>
+ <br />
+ </div>
<xsl:for-each select="views/view">
- <table>
- <tr class="rowh">
- <th colspan="10">Resolver Statistics for View <xsl:value-of select="name"/></th>
- </tr>
- <tr class="rowh">
- <!-- The ordering of the following items must be consistent
- with dns_resstatscounter_xxx -->
- <th>Queryv4</th>
- <th>Queryv6</th>
- <th>Responsev4</th>
- <th>Responsev6</th>
- <th>NXDOMAIN</th>
- <th>SERVFAIL</th>
- <th>FORMERR</th>
- <th>OtherError</th>
- <th>EDNS0Fail</th>
- <!-- this counter is not applicable to per-view stat,
- but keep it for generating the description table used in
- the statschannel.c.
- <th>Mismatch</th> -->
- <th>Truncated</th>
- </tr>
- <tr class="lrow">
- <td><xsl:value-of select="resstats/Queryv4"/></td>
- <td><xsl:value-of select="resstats/Queryv6"/></td>
- <td><xsl:value-of select="resstats/Responsev4"/></td>
- <td><xsl:value-of select="resstats/Responsev6"/></td>
- <td><xsl:value-of select="resstats/NXDOMAIN"/></td>
- <td><xsl:value-of select="resstats/SERVFAIL"/></td>
- <td><xsl:value-of select="resstats/FORMERR"/></td>
- <td><xsl:value-of select="resstats/OtherError"/></td>
- <td><xsl:value-of select="resstats/EDNS0Fail"/></td>
- <!-- <td><xsl:value-of select="resstats/Mismatch"/></td> -->
- <td><xsl:value-of select="resstats/Truncated"/></td>
- </tr>
- <tr class="rowh">
- <th>Lame</th>
- <th>Retry</th>
- <th>GlueFetchv4</th>
- <th>GlueFetchv6</th>
- <th>GlueFetchv4Fail</th>
- <th>GlueFetchv6Fail</th>
- <th>ValAttempt</th>
- <th>ValOk</th>
- <th>ValNegOk</th>
- <th>ValFail</th>
- </tr>
- <tr class="lrow">
- <td><xsl:value-of select="resstats/Lame"/></td>
- <td><xsl:value-of select="resstats/Retry"/></td>
- <td><xsl:value-of select="resstats/GlueFetchv4"/></td>
- <td><xsl:value-of select="resstats/GlueFetchv6"/></td>
- <td><xsl:value-of select="resstats/GlueFetchv4Fail"/></td>
- <td><xsl:value-of select="resstats/GlueFetchv6Fail"/></td>
- <td><xsl:value-of select="resstats/ValAttempt"/></td>
- <td><xsl:value-of select="resstats/ValOk"/></td>
- <td><xsl:value-of select="resstats/ValNegOk"/></td>
- <td><xsl:value-of select="resstats/ValFail"/></td>
- </tr>
- </table>
- <br/>
- </xsl:for-each>
+ <div class="statcounter">
+ <h2>Resolver Statistics for View <xsl:value-of select="name"/></h2>
+ <xsl:for-each select="resstat">
+ <dl>
+ <dt><xsl:value-of select="name"/></dt>
+ <dd><xsl:value-of select="counter"/></dd>
+ </dl>
+ </xsl:for-each>
+ <br />
+ </div>
+ </xsl:for-each>
- <br/>
+ <br />
<xsl:for-each select="views/view">
<table>
diff --git a/bin/named/bind9.xsl.h b/bin/named/bind9.xsl.h
index 42068ce4..cbdfa3a1 100644
--- a/bin/named/bind9.xsl.h
+++ b/bin/named/bind9.xsl.h
@@ -1,6 +1,6 @@
/*
- * Generated by convertxsl.pl 1.9.60.4 2008/04/03 10:51:01 marka Exp
- * From bind9.xsl 1.13.130.5 2008/06/24 00:09:10 jinmei Exp
+ * Generated by convertxsl.pl 1.9.60.5 2008/07/17 23:50:58 jinmei Exp
+ * From bind9.xsl 1.13.130.6 2008/07/17 23:50:58 jinmei Exp
*/
static char xslmsg[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
@@ -20,7 +20,7 @@ static char xslmsg[] =
" - PERFORMANCE OF THIS SOFTWARE.\n"
"-->\n"
"\n"
- "<!-- \045Id: bind9.xsl,v 1.13.130.5 2008/06/24 00:09:10 jinmei Exp \045 -->\n"
+ "<!-- \045Id: bind9.xsl,v 1.13.130.6 2008/07/17 23:50:58 jinmei Exp \045 -->\n"
"\n"
"<xsl:stylesheet version=\"1.0\"\n"
" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\n"
@@ -65,7 +65,7 @@ static char xslmsg[] =
" padding-left: 5px;\n"
"}\n"
"\n"
- ".header {\n"
+ ".header h1 {\n"
" background-color: teal;\n"
" color: #ffffff;\n"
" padding: 4px;\n"
@@ -86,11 +86,53 @@ static char xslmsg[] =
" padding: 4px;\n"
" font-weight: bold;\n"
"}\n"
+ "\n"
+ "div.statcounter h2 {\n"
+ " text-align: center;\n"
+ " font-size: large;\n"
+ " border: 1px solid #000000;\n"
+ " background-color: #8080ff;\n"
+ " color: #ffffff;\n"
+ "}\n"
+ "\n"
+ "div.statcounter dl {\n"
+ " float: left;\n"
+ " margin-top: 0;\n"
+ " margin-bottom: 0;\n"
+ " margin-left: 0;\n"
+ " margin-right: 0;\n"
+ "}\n"
+ "\n"
+ "div.statcounter dt {\n"
+ " width: 200px;\n"
+ " text-align: center;\n"
+ " font-weight: bold;\n"
+ " border: 0.5px solid #000000;\n"
+ " background-color: #8080ff;\n"
+ " color: #ffffff;\n"
+ "}\n"
+ "\n"
+ "div.statcounter dd {\n"
+ " width: 200px;\n"
+ " text-align: right;\n"
+ " border: 0.5px solid #000000;\n"
+ " background-color: teal;\n"
+ " color: #ffffff;\n"
+ " margin-left: 0;\n"
+ " margin-right: 0;\n"
+ "}\n"
+ "\n"
+ "div.statcounter br {\n"
+ " clear: left;\n"
+ "}\n"
" </style>\n"
" <title>BIND 9 Statistics</title>\n"
" </head>\n"
" <body>\n"
- " <div class=\"header\">Bind 9 Configuration and Statistics</div>\n"
+ " <div class=\"header\">\n"
+ " <h1>Bind 9 Configuration and Statistics</h1>\n"
+ " </div>\n"
+ "\n"
" <br/>\n"
"\n"
" <table>\n"
@@ -148,231 +190,53 @@ static char xslmsg[] =
"\n"
" <br/>\n"
"\n"
- " <table>\n"
- " <tr class=\"rowh\"><th colspan=\"10\">Server Statistics</th></tr>\n"
- " <tr class=\"rowh\">\n"
- " <!-- The ordering of the following items must be consistent\n"
- " with dns_nsstatscounter_xxx -->\n"
- " <th>Requestv4</th>\n"
- " <th>Requestv6</th>\n"
- " <th>ReqEdns0</th>\n"
- " <th>ReqBadEDNSVer</th>\n"
- " <th>ReqTSIG</th>\n"
- " <th>ReqSIG0</th>\n"
- " <th>ReqBadSIG</th>\n"
- " <th>ReqTCP</th>\n"
- " <th>AuthQryRej</th>\n"
- " <th>RecQryRej</th>\n"
- " </tr>\n"
- " <tr class=\"lrow\">\n"
- " <td><xsl:value-of select=\"server/nsstats/Requestv4\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/Requestv6\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/ReqEdns0\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/ReqBadEDNSVer\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/ReqTSIG\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/ReqSIG0\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/ReqBadSIG\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/ReqTCP\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/AuthQryRej\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/RecQryRej\"/></td>\n"
- " </tr>\n"
- " <tr class=\"rowh\">\n"
- " <th>XfrRej</th>\n"
- " <th>UpdateRej</th>\n"
- " <th>Response</th>\n"
- " <th>RespTruncated</th>\n"
- " <th>RespEDNS0</th>\n"
- " <th>RespTSIG</th>\n"
- " <th>RespSIG0</th>\n"
- " <th>QrySuccess</th>\n"
- " <th>QryAuthAns</th>\n"
- " <th>QryNoauthAns</th>\n"
- " </tr>\n"
- " <tr class=\"lrow\">\n"
- " <td><xsl:value-of select=\"server/nsstats/XfrRej\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/UpdateRej\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/Response\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/TruncatedResp\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/RespEDNS0\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/RespTSIG\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/RespSIG0\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QrySuccess\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QryAuthAns\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QryNoauthAns\"/></td>\n"
- " </tr>\n"
- " <tr class=\"rowh\">\n"
- " <th>QryReferral</th>\n"
- " <th>QryNxrrset</th>\n"
- " <th>QrySERVFAIL</th>\n"
- " <th>QryFORMERR</th>\n"
- " <th>QryNXDOMAIN</th>\n"
- " <th>QryRecursion</th>\n"
- " <th>QryDuplicate</th>\n"
- " <th>QryDropped</th>\n"
- " <th>QryFailure</th>\n"
- " <th>XfrReqDone</th>\n"
- " </tr>\n"
- " <tr class=\"lrow\">\n"
- " <td><xsl:value-of select=\"server/nsstats/QryReferral\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QryNxrrset\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QrySERVFAIL\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QryFORMERR\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QryNXDOMAIN\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QryRecursion\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QryDuplicate\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QryDropped\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/QryFailure\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/XfrReqDone\"/></td>\n"
- " </tr>\n"
- " <tr class=\"rowh\">\n"
- " <th>UpdateReqFwd</th>\n"
- " <th>UpdateRespFwd</th>\n"
- " <th>UpdateFwdFail</th>\n"
- " <th>UpdateDone</th>\n"
- " <th>UpdateFail</th>\n"
- " <th>UpdateBadPrereq</th>\n"
- " <th>RespMismatch</th>\n"
- " <th />\n"
- " <th />\n"
- " <th />\n"
- " </tr>\n"
- " <tr class=\"lrow\">\n"
- " <td><xsl:value-of select=\"server/nsstats/UpdateReqFwd\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/UpdateRespFwd\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/UpdateFwdFail\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/UpdateDone\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/UpdateFail\"/></td>\n"
- " <td><xsl:value-of select=\"server/nsstats/UpdateBadPrereq\"/></td>\n"
- " <td><xsl:value-of select=\"server/resstats/Mismatch\"/></td>\n"
- " <td />\n"
- " <td />\n"
- " <td />\n"
- " </tr>\n"
- " </table>\n"
- "\n"
+ " <div class=\"statcounter\">\n"
+ " <h2>Server Statistics</h2>\n"
+ " <xsl:for-each select=\"server/nsstat\">\n"
+ " <dl>\n"
+ " <dt><xsl:value-of select=\"name\"/></dt>\n"
+ " <dd><xsl:value-of select=\"counter\"/></dd>\n"
+ " </dl>\n"
+ " </xsl:for-each>\n"
" <br/>\n"
+ " </div>\n"
"\n"
- " <table>\n"
- " <tr class=\"rowh\"><th colspan=\"10\">Zone Maintenance Statistics</th></tr>\n"
- " <tr class=\"rowh\">\n"
- " <!-- The ordering of the following items must be consistent\n"
- " with dns_zonestatscounter_xxx -->\n"
- " <th>NotifyOutv4</th>\n"
- " <th>NotifyOutv6</th>\n"
- " <th>NotifyInv4</th>\n"
- " <th>NotifyInv6</th>\n"
- " <th>NotifyRej</th>\n"
- " <th>SOAOutv4</th>\n"
- " <th>SOAOutv6</th>\n"
- " <th>AXFRReqv4</th>\n"
- " <th>AXFRReqv6</th>\n"
- " <th>IXFRReqv4</th>\n"
- " </tr>\n"
- " <tr class=\"lrow\">\n"
- " <td><xsl:value-of select=\"server/zonestats/NotifyOutv4\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/NotifyOutv6\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/NotifyInv4\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/NotifyInv6\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/NotifyRej\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/SOAOutv4\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/SOAOutv6\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/AXFRReqv4\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/AXFRReqv6\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/IXFRReqv4\"/></td>\n"
- " </tr>\n"
- " <tr class=\"rowh\">\n"
- " <th>IXFRReqv6</th>\n"
- " <th>XfrSuccess</th>\n"
- " <th>XfrFail</th>\n"
- " <th/>\n"
- " <th/>\n"
- " <th/>\n"
- " <th/>\n"
- " <th/>\n"
- " <th/>\n"
- " <th/>\n"
- " </tr>\n"
- " <tr class=\"lrow\">\n"
- " <td><xsl:value-of select=\"server/zonestats/IXFRReqv6\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/XfrSuccess\"/></td>\n"
- " <td><xsl:value-of select=\"server/zonestats/XfrFail\"/></td>\n"
- " <td/>\n"
- " <td/>\n"
- " <td/>\n"
- " <td/>\n"
- " <td/>\n"
- " <td/>\n"
- " <td/>\n"
- " </tr>\n"
- " </table>\n"
+ " <div class=\"statcounter\">\n"
+ " <h2>Zone Maintenance Statistics</h2>\n"
+ " <xsl:for-each select=\"server/zonestat\">\n"
+ " <dl>\n"
+ " <dt><xsl:value-of select=\"name\"/></dt>\n"
+ " <dd><xsl:value-of select=\"counter\"/></dd>\n"
+ " </dl>\n"
+ " </xsl:for-each>\n"
+ " <br />\n"
+ " </div>\n"
"\n"
- " <br/>\n"
+ " <div class=\"statcounter\">\n"
+ " <h2>Resolver Statistics (Common)</h2>\n"
+ " <xsl:for-each select=\"server/resstat\">\n"
+ " <dl>\n"
+ " <dt><xsl:value-of select=\"name\"/></dt>\n"
+ " <dd><xsl:value-of select=\"counter\"/></dd>\n"
+ " </dl>\n"
+ " </xsl:for-each>\n"
+ " <br />\n"
+ " </div>\n"
"\n"
" <xsl:for-each select=\"views/view\">\n"
- " <table>\n"
- " <tr class=\"rowh\">\n"
- " <th colspan=\"10\">Resolver Statistics for View <xsl:value-of select=\"name\"/></th>\n"
- " </tr>\n"
- " <tr class=\"rowh\">\n"
- " <!-- The ordering of the following items must be consistent\n"
- " with dns_resstatscounter_xxx -->\n"
- " <th>Queryv4</th>\n"
- " <th>Queryv6</th>\n"
- " <th>Responsev4</th>\n"
- " <th>Responsev6</th>\n"
- " <th>NXDOMAIN</th>\n"
- " <th>SERVFAIL</th>\n"
- " <th>FORMERR</th>\n"
- " <th>OtherError</th>\n"
- " <th>EDNS0Fail</th>\n"
- " <!-- this counter is not applicable to per-view stat,\n"
- " but keep it for generating the description table used in\n"
- " the statschannel.c.\n"
- " <th>Mismatch</th> -->\n"
- " <th>Truncated</th>\n"
- " </tr>\n"
- " <tr class=\"lrow\">\n"
- " <td><xsl:value-of select=\"resstats/Queryv4\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/Queryv6\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/Responsev4\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/Responsev6\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/NXDOMAIN\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/SERVFAIL\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/FORMERR\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/OtherError\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/EDNS0Fail\"/></td>\n"
- " <!-- <td><xsl:value-of select=\"resstats/Mismatch\"/></td> -->\n"
- " <td><xsl:value-of select=\"resstats/Truncated\"/></td>\n"
- " </tr>\n"
- " <tr class=\"rowh\">\n"
- " <th>Lame</th>\n"
- " <th>Retry</th>\n"
- " <th>GlueFetchv4</th>\n"
- " <th>GlueFetchv6</th>\n"
- " <th>GlueFetchv4Fail</th>\n"
- " <th>GlueFetchv6Fail</th>\n"
- " <th>ValAttempt</th>\n"
- " <th>ValOk</th>\n"
- " <th>ValNegOk</th>\n"
- " <th>ValFail</th>\n"
- " </tr>\n"
- " <tr class=\"lrow\">\n"
- " <td><xsl:value-of select=\"resstats/Lame\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/Retry\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/GlueFetchv4\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/GlueFetchv6\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/GlueFetchv4Fail\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/GlueFetchv6Fail\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/ValAttempt\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/ValOk\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/ValNegOk\"/></td>\n"
- " <td><xsl:value-of select=\"resstats/ValFail\"/></td>\n"
- " </tr>\n"
- " </table>\n"
- " <br/>\n"
+ " <div class=\"statcounter\">\n"
+ " <h2>Resolver Statistics for View <xsl:value-of select=\"name\"/></h2>\n"
+ " <xsl:for-each select=\"resstat\">\n"
+ " <dl>\n"
+ " <dt><xsl:value-of select=\"name\"/></dt>\n"
+ " <dd><xsl:value-of select=\"counter\"/></dd>\n"
+ " </dl>\n"
+ " </xsl:for-each>\n"
+ " <br />\n"
+ " </div>\n"
" </xsl:for-each>\n"
"\n"
- " <br/>\n"
+ " <br />\n"
"\n"
" <xsl:for-each select=\"views/view\">\n"
" <table>\n"
@@ -620,78 +484,3 @@ static char xslmsg[] =
" </html>\n"
" </xsl:template>\n"
"</xsl:stylesheet>\n";
-#ifdef HAVE_LIBXML2
-static const char *nsstats_xmldesc[] = { "Requestv4",
- "Requestv6",
- "ReqEdns0",
- "ReqBadEDNSVer",
- "ReqTSIG",
- "ReqSIG0",
- "ReqBadSIG",
- "ReqTCP",
- "AuthQryRej",
- "RecQryRej",
- "XfrRej",
- "UpdateRej",
- "Response",
- "TruncatedResp",
- "RespEDNS0",
- "RespTSIG",
- "RespSIG0",
- "QrySuccess",
- "QryAuthAns",
- "QryNoauthAns",
- "QryReferral",
- "QryNxrrset",
- "QrySERVFAIL",
- "QryFORMERR",
- "QryNXDOMAIN",
- "QryRecursion",
- "QryDuplicate",
- "QryDropped",
- "QryFailure",
- "XfrReqDone",
- "UpdateReqFwd",
- "UpdateRespFwd",
- "UpdateFwdFail",
- "UpdateDone",
- "UpdateFail",
- "UpdateBadPrereq"
-};
-static const char *zonestats_xmldesc[] = { "NotifyOutv4",
- "NotifyOutv6",
- "NotifyInv4",
- "NotifyInv6",
- "NotifyRej",
- "SOAOutv4",
- "SOAOutv6",
- "AXFRReqv4",
- "AXFRReqv6",
- "IXFRReqv4",
- "IXFRReqv6",
- "XfrSuccess",
- "XfrFail"
-};
-static const char *resstats_xmldesc[] = { "Queryv4",
- "Queryv6",
- "Responsev4",
- "Responsev6",
- "NXDOMAIN",
- "SERVFAIL",
- "FORMERR",
- "OtherError",
- "EDNS0Fail",
- "Mismatch",
- "Truncated",
- "Lame",
- "Retry",
- "GlueFetchv4",
- "GlueFetchv6",
- "GlueFetchv4Fail",
- "GlueFetchv6Fail",
- "ValAttempt",
- "ValOk",
- "ValNegOk",
- "ValFail"
-};
-#endif
diff --git a/bin/named/config.c b/bin/named/config.c
index a1090cf8..478fdd84 100644
--- a/bin/named/config.c
+++ b/bin/named/config.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: config.c,v 1.82.38.5 2008/05/28 21:00:24 each Exp $ */
+/* $Id: config.c,v 1.82.38.7 2008/09/04 07:58:06 marka Exp $ */
/*! \file */
@@ -52,7 +52,7 @@ options {\n\
#ifndef WIN32
" coresize default;\n\
datasize default;\n\
- files default;\n\
+ files unlimited;\n\
stacksize default;\n"
#endif
" deallocate-on-exit true;\n\
@@ -100,6 +100,7 @@ options {\n\
edns-udp-size 4096;\n\
max-udp-size 4096;\n\
request-nsid false;\n\
+ reserved-sockets 512;\n\
\n\
/* view */\n\
allow-notify {none;};\n\
diff --git a/bin/named/controlconf.c b/bin/named/controlconf.c
index 05dca5d0..b9af98c8 100644
--- a/bin/named/controlconf.c
+++ b/bin/named/controlconf.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: controlconf.c,v 1.55.64.2 2008/01/17 23:46:35 tbox Exp $ */
+/* $Id: controlconf.c,v 1.55.64.4 2008/07/23 23:31:17 marka Exp $ */
/*! \file */
@@ -1149,8 +1149,8 @@ add_listener(ns_controls_t *cp, controllistener_t **listenerp,
isc_socket_setname(listener->sock, "control", NULL);
if (result == ISC_R_SUCCESS)
- result = isc_socket_bind(listener->sock,
- &listener->address);
+ result = isc_socket_bind(listener->sock, &listener->address,
+ ISC_SOCKET_REUSEADDRESS);
if (result == ISC_R_SUCCESS && type == isc_sockettype_unix) {
listener->perm = cfg_obj_asuint32(cfg_tuple_get(control,
diff --git a/bin/named/convertxsl.pl b/bin/named/convertxsl.pl
index 3ac071a9..722668eb 100755
--- a/bin/named/convertxsl.pl
+++ b/bin/named/convertxsl.pl
@@ -14,19 +14,18 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: convertxsl.pl,v 1.9.60.4 2008/04/03 10:51:01 marka Exp $
+# $Id: convertxsl.pl,v 1.9.60.5 2008/07/17 23:50:58 jinmei Exp $
use strict;
use warnings;
-my $rev = '$Id: convertxsl.pl,v 1.9.60.4 2008/04/03 10:51:01 marka Exp $';
+my $rev = '$Id: convertxsl.pl,v 1.9.60.5 2008/07/17 23:50:58 jinmei Exp $';
$rev =~ s/\$//g;
$rev =~ s/,v//g;
$rev =~ s/Id: //;
my $xsl = "unknown";
my $lines = '';
-my (@nsstatsdesc, @zonestatsdesc, @resstatsdesc);
while (<>) {
chomp;
@@ -34,13 +33,6 @@ while (<>) {
$xsl = $_ if (/<!-- .Id:.* -->/);
# convert Id string to a form not recognisable by cvs.
$_ =~ s/<!-- .Id:(.*). -->/<!-- \\045Id: $1\\045 -->/;
- if (/server\/nsstats\/(\w+)\"/) {
- push(@nsstatsdesc, $1);
- } elsif (/server\/zonestats\/(\w+)\"/) {
- push(@zonestatsdesc, $1);
- } elsif (/\"resstats\/(\w+)\"/) {
- push(@resstatsdesc, $1);
- }
s/[\ \t]+/ /g;
s/\>\ \</\>\</g;
s/\"/\\\"/g;
@@ -63,29 +55,3 @@ print 'static char xslmsg[] =',"\n";
print $lines;
print ';', "\n";
-
-print '#ifdef HAVE_LIBXML2', "\n";
-print "static const char *nsstats_xmldesc[] = {";
-while (my $desc = shift(@nsstatsdesc)) {
- print "\t\"$desc\"";
- print "," if (@nsstatsdesc);
- print "\n";
-}
-print "};\n";
-
-print "static const char *zonestats_xmldesc[] = {";
-while (my $desc = shift(@zonestatsdesc)) {
- print "\t\"$desc\"";
- print "," if (@zonestatsdesc);
- print "\n";
-}
-print "};\n";
-
-print "static const char *resstats_xmldesc[] = {";
-while (my $desc = shift(@resstatsdesc)) {
- print "\t\"$desc\"";
- print "," if (@resstatsdesc);
- print "\n";
-}
-print "};\n";
-print '#endif', "\n";
diff --git a/bin/named/interfacemgr.c b/bin/named/interfacemgr.c
index 47860214..ad7c160e 100644
--- a/bin/named/interfacemgr.c
+++ b/bin/named/interfacemgr.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2002 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: interfacemgr.c,v 1.90 2007/09/12 01:09:07 each Exp $ */
+/* $Id: interfacemgr.c,v 1.90.64.3 2008/07/23 23:31:17 marka Exp $ */
/*! \file */
@@ -90,7 +90,7 @@ ns_interfacemgr_create(isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
mgr->generation = 1;
mgr->listenon4 = NULL;
mgr->listenon6 = NULL;
-
+
ISC_LIST_INIT(mgr->interfaces);
ISC_LIST_INIT(mgr->listenon);
@@ -308,7 +308,8 @@ ns_interface_accepttcp(ns_interface_t *ifp) {
#ifndef ISC_ALLOW_MAPPED
isc_socket_ipv6only(ifp->tcpsocket, ISC_TRUE);
#endif
- result = isc_socket_bind(ifp->tcpsocket, &ifp->addr);
+ result = isc_socket_bind(ifp->tcpsocket, &ifp->addr,
+ ISC_SOCKET_REUSEADDRESS);
if (result != ISC_R_SUCCESS) {
isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_ERROR,
"binding TCP socket: %s",
@@ -323,7 +324,7 @@ ns_interface_accepttcp(ns_interface_t *ifp) {
goto tcp_listen_failure;
}
- /*
+ /*
* If/when there a multiple filters listen to the
* result.
*/
@@ -494,26 +495,26 @@ clearacl(isc_mem_t *mctx, dns_acl_t **aclp) {
static isc_boolean_t
listenon_is_ip6_any(ns_listenelt_t *elt) {
- REQUIRE(elt && elt->acl);
- return dns_acl_isany(elt->acl);
+ REQUIRE(elt && elt->acl);
+ return dns_acl_isany(elt->acl);
}
static isc_result_t
setup_locals(ns_interfacemgr_t *mgr, isc_interface_t *interface) {
isc_result_t result;
unsigned int prefixlen;
- isc_netaddr_t *netaddr;
+ isc_netaddr_t *netaddr;
+
+ netaddr = &interface->address;
- netaddr = &interface->address;
-
- /* First add localhost address */
+ /* First add localhost address */
prefixlen = (netaddr->family == AF_INET) ? 32 : 128;
- result = dns_iptable_addprefix(mgr->aclenv.localhost->iptable,
- netaddr, prefixlen, ISC_TRUE);
+ result = dns_iptable_addprefix(mgr->aclenv.localhost->iptable,
+ netaddr, prefixlen, ISC_TRUE);
if (result != ISC_R_SUCCESS)
return (result);
- /* Then add localnets prefix */
+ /* Then add localnets prefix */
result = isc_netaddr_masktoprefixlen(&interface->netmask,
&prefixlen);
@@ -528,11 +529,11 @@ setup_locals(ns_interfacemgr_t *mgr, isc_interface_t *interface) {
"localnets ACL: %s",
interface->name,
isc_result_totext(result));
- return (ISC_R_SUCCESS);
+ return (ISC_R_SUCCESS);
}
- result = dns_iptable_addprefix(mgr->aclenv.localnets->iptable,
- netaddr, prefixlen, ISC_TRUE);
+ result = dns_iptable_addprefix(mgr->aclenv.localnets->iptable,
+ netaddr, prefixlen, ISC_TRUE);
if (result != ISC_R_SUCCESS)
return (result);
@@ -542,7 +543,7 @@ setup_locals(ns_interfacemgr_t *mgr, isc_interface_t *interface) {
static void
setup_listenon(ns_interfacemgr_t *mgr, isc_interface_t *interface,
in_port_t port)
-{
+{
isc_sockaddr_t *addr;
isc_sockaddr_t *old;
@@ -556,7 +557,7 @@ setup_listenon(ns_interfacemgr_t *mgr, isc_interface_t *interface,
old != NULL;
old = ISC_LIST_NEXT(old, link))
if (isc_sockaddr_equal(addr, old))
- break;
+ break;
if (old != NULL)
isc_mem_put(mgr->mctx, addr, sizeof(*addr));
@@ -692,7 +693,7 @@ do_scan(ns_interfacemgr_t *mgr, ns_listenlist_t *ext_listen,
{
isc_interface_t interface;
ns_listenlist_t *ll;
- unsigned int family;
+ unsigned int family;
result = isc_interfaceiter_current(iter, &interface);
if (result != ISC_R_SUCCESS)
@@ -876,7 +877,7 @@ do_scan(ns_interfacemgr_t *mgr, ns_listenlist_t *ext_listen,
UNEXPECTED_ERROR(__FILE__, __LINE__,
"interface iteration failed: %s",
isc_result_totext(result));
- else
+ else
result = ISC_R_SUCCESS;
cleanup_iter:
isc_interfaceiter_destroy(&iter);
@@ -907,7 +908,7 @@ ns_interfacemgr_scan0(ns_interfacemgr_t *mgr, ns_listenlist_t *ext_listen,
/*
* Warn if we are not listening on any interface, unless
- * we're in lwresd-only mode, in which case that is to
+ * we're in lwresd-only mode, in which case that is to
* be expected.
*/
if (ext_listen == NULL &&
diff --git a/bin/named/lwresd.c b/bin/named/lwresd.c
index 1674438d..93409faa 100644
--- a/bin/named/lwresd.c
+++ b/bin/named/lwresd.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,9 +15,9 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: lwresd.c,v 1.55 2007/06/19 23:46:59 tbox Exp $ */
+/* $Id: lwresd.c,v 1.55.130.3 2008/07/23 23:31:17 marka Exp $ */
-/*! \file
+/*! \file
* \brief
* Main program for the Lightweight Resolver Daemon.
*
@@ -224,7 +224,7 @@ ns_lwresd_parseeresolvconf(isc_mem_t *mctx, cfg_parser_t *pctx,
for (i = 0; i < lwc->searchnxt; i++) {
CHECK(buffer_putstr(&b, "\t\t\""));
CHECK(buffer_putstr(&b, lwc->search[i]));
- CHECK(buffer_putstr(&b, "\";\n"));
+ CHECK(buffer_putstr(&b, "\";\n"));
}
CHECK(buffer_putstr(&b, "\t};\n"));
}
@@ -576,7 +576,8 @@ listener_bind(ns_lwreslistener_t *listener, isc_sockaddr_t *address) {
return (result);
}
- result = isc_socket_bind(sock, &listener->address);
+ result = isc_socket_bind(sock, &listener->address,
+ ISC_SOCKET_REUSEADDRESS);
if (result != ISC_R_SUCCESS) {
char socktext[ISC_SOCKADDR_FORMATSIZE];
isc_sockaddr_format(&listener->address, socktext,
diff --git a/bin/named/main.c b/bin/named/main.c
index cd6e9f74..6255a969 100644
--- a/bin/named/main.c
+++ b/bin/named/main.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: main.c,v 1.158.48.2 2008/04/03 23:46:30 tbox Exp $ */
+/* $Id: main.c,v 1.158.48.3 2008/08/21 00:01:02 jinmei Exp $ */
/*! \file */
@@ -85,6 +85,7 @@ static char program_name[ISC_DIR_NAMEMAX] = "named";
static char absolute_conffile[ISC_DIR_PATHMAX];
static char saved_command_line[512];
static char version[512];
+static unsigned int maxsocks = 0;
void
ns_main_earlywarning(const char *format, ...) {
@@ -356,7 +357,8 @@ parse_command_line(int argc, char *argv[]) {
isc_commandline_errprint = ISC_FALSE;
while ((ch = isc_commandline_parse(argc, argv,
- "46c:C:d:fgi:lm:n:N:p:P:st:u:vx:")) != -1) {
+ "46c:C:d:fgi:lm:n:N:p:P:"
+ "sS:t:u:vx:")) != -1) {
switch (ch) {
case '4':
if (disable4)
@@ -435,6 +437,10 @@ parse_command_line(int argc, char *argv[]) {
/* XXXRTH temporary syntax */
want_stats = ISC_TRUE;
break;
+ case 'S':
+ maxsocks = parse_int(isc_commandline_argument,
+ "max number of sockets");
+ break;
case 't':
/* XXXJAB should we make a copy? */
ns_g_chrootdir = isc_commandline_argument;
@@ -468,6 +474,7 @@ parse_command_line(int argc, char *argv[]) {
static isc_result_t
create_managers(void) {
isc_result_t result;
+ unsigned int socks;
#ifdef ISC_PLATFORM_USETHREADS
unsigned int cpus_detected;
#endif
@@ -499,13 +506,19 @@ create_managers(void) {
return (ISC_R_UNEXPECTED);
}
- result = isc_socketmgr_create(ns_g_mctx, &ns_g_socketmgr);
+ result = isc_socketmgr_create2(ns_g_mctx, &ns_g_socketmgr, maxsocks);
if (result != ISC_R_SUCCESS) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_socketmgr_create() failed: %s",
isc_result_totext(result));
return (ISC_R_UNEXPECTED);
}
+ result = isc_socketmgr_getmaxsockets(ns_g_socketmgr, &socks);
+ if (result == ISC_R_SUCCESS) {
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+ NS_LOGMODULE_SERVER,
+ ISC_LOG_INFO, "using up to %u sockets", socks);
+ }
result = isc_entropy_create(ns_g_mctx, &ns_g_entropy);
if (result != ISC_R_SUCCESS) {
diff --git a/bin/named/named.8 b/bin/named/named.8
index f524901b..fe430bdf 100644
--- a/bin/named/named.8
+++ b/bin/named/named.8
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
.\" Copyright (C) 2000, 2001, 2003 Internet Software Consortium.
.\"
.\" Permission to use, copy, modify, and distribute this software for any
@@ -13,7 +13,7 @@
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.\" $Id: named.8,v 1.34 2007/06/20 02:27:32 marka Exp $
+.\" $Id: named.8,v 1.34.130.1 2008/09/01 02:40:04 tbox Exp $
.\"
.hy 0
.ad l
@@ -33,7 +33,7 @@
named \- Internet domain name server
.SH "SYNOPSIS"
.HP 6
-\fBnamed\fR [\fB\-4\fR] [\fB\-6\fR] [\fB\-c\ \fR\fB\fIconfig\-file\fR\fR] [\fB\-d\ \fR\fB\fIdebug\-level\fR\fR] [\fB\-f\fR] [\fB\-g\fR] [\fB\-m\ \fR\fB\fIflag\fR\fR] [\fB\-n\ \fR\fB\fI#cpus\fR\fR] [\fB\-p\ \fR\fB\fIport\fR\fR] [\fB\-s\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-u\ \fR\fB\fIuser\fR\fR] [\fB\-v\fR] [\fB\-x\ \fR\fB\fIcache\-file\fR\fR]
+\fBnamed\fR [\fB\-4\fR] [\fB\-6\fR] [\fB\-c\ \fR\fB\fIconfig\-file\fR\fR] [\fB\-d\ \fR\fB\fIdebug\-level\fR\fR] [\fB\-f\fR] [\fB\-g\fR] [\fB\-m\ \fR\fB\fIflag\fR\fR] [\fB\-n\ \fR\fB\fI#cpus\fR\fR] [\fB\-p\ \fR\fB\fIport\fR\fR] [\fB\-s\fR] [\fB\-S\ \fR\fB\fI#max\-socks\fR\fR] [\fB\-t\ \fR\fB\fIdirectory\fR\fR] [\fB\-u\ \fR\fB\fIuser\fR\fR] [\fB\-v\fR] [\fB\-x\ \fR\fB\fIcache\-file\fR\fR]
.SH "DESCRIPTION"
.PP
\fBnamed\fR
@@ -131,6 +131,21 @@ This option is mainly of interest to BIND 9 developers and may be removed or cha
.RE
.RE
.PP
+\-S \fI#max\-socks\fR
+.RS 4
+Allow
+\fBnamed\fR
+to use up to
+\fI#max\-socks\fR
+sockets.
+.RS
+.B "Warning:"
+This option should be unnecessary for the vast majority of users. The use of this option could even be harmful because the specified value may exceed the limitation of the underlying system API. It is therefore set only when the default configuration causes exhaustion of file descriptors and the operational environment is known to support the specified number of sockets. Note also that the actual maximum number is normally a little fewer than the specified value because
+\fBnamed\fR
+reserves some file descriptors for its internal use.
+.RE
+.RE
+.PP
\-t \fIdirectory\fR
.RS 4
Chroot to
@@ -230,7 +245,7 @@ BIND 9 Administrator Reference Manual.
.PP
Internet Systems Consortium
.SH "COPYRIGHT"
-Copyright \(co 2004\-2007 Internet Systems Consortium, Inc. ("ISC")
+Copyright \(co 2004\-2008 Internet Systems Consortium, Inc. ("ISC")
.br
Copyright \(co 2000, 2001, 2003 Internet Software Consortium.
.br
diff --git a/bin/named/named.conf.5 b/bin/named/named.conf.5
index 0c00cc69..96dfd45d 100644
--- a/bin/named/named.conf.5
+++ b/bin/named/named.conf.5
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
@@ -12,7 +12,7 @@
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.\" $Id: named.conf.5,v 1.31 2007/10/21 22:15:32 marka Exp $
+.\" $Id: named.conf.5,v 1.31.38.1 2008/09/05 01:42:58 tbox Exp $
.\"
.hy 0
.ad l
@@ -174,6 +174,7 @@ options {
port \fIinteger\fR;
querylog \fIboolean\fR;
recursing\-file \fIquoted_string\fR;
+ reserved\-sockets \fIinteger\fR;
random\-device \fIquoted_string\fR;
recursive\-clients \fIinteger\fR;
serial\-query\-rate \fIinteger\fR;
@@ -535,5 +536,5 @@ zone \fIstring\fR \fIoptional_class\fR {
\fBrndc\fR(8),
BIND 9 Administrator Reference Manual.
.SH "COPYRIGHT"
-Copyright \(co 2004\-2007 Internet Systems Consortium, Inc. ("ISC")
+Copyright \(co 2004\-2008 Internet Systems Consortium, Inc. ("ISC")
.br
diff --git a/bin/named/named.conf.docbook b/bin/named/named.conf.docbook
index 6b6db6d0..dfccf104 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 "&#8212;">]>
<!--
- - Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ - Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
-
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted, provided that the above
@@ -17,7 +17,7 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: named.conf.docbook,v 1.34 2007/10/19 17:15:53 explorer Exp $ -->
+<!-- $Id: named.conf.docbook,v 1.34.38.2 2008/09/04 23:46:41 tbox Exp $ -->
<refentry>
<refentryinfo>
<date>Aug 13, 2004</date>
@@ -40,6 +40,7 @@
<year>2005</year>
<year>2006</year>
<year>2007</year>
+ <year>2008</year>
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
</copyright>
</docinfo>
@@ -201,6 +202,7 @@ options {
port <replaceable>integer</replaceable>;
querylog <replaceable>boolean</replaceable>;
recursing-file <replaceable>quoted_string</replaceable>;
+ reserved-sockets <replaceable>integer</replaceable>;
random-device <replaceable>quoted_string</replaceable>;
recursive-clients <replaceable>integer</replaceable>;
serial-query-rate <replaceable>integer</replaceable>;
diff --git a/bin/named/named.conf.html b/bin/named/named.conf.html
index 8741278c..f3d40eee 100644
--- a/bin/named/named.conf.html
+++ b/bin/named/named.conf.html
@@ -1,5 +1,5 @@
<!--
- - Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ - Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
-
- Permission to use, copy, modify, and distribute this software for any
- purpose with or without fee is hereby granted, provided that the above
@@ -13,7 +13,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: named.conf.html,v 1.40 2007/10/21 22:15:32 marka Exp $ -->
+<!-- $Id: named.conf.html,v 1.40.38.1 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -31,7 +31,7 @@
<div class="cmdsynopsis"><p><code class="command">named.conf</code> </p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2542042"></a><h2>DESCRIPTION</h2>
+<a name="id2543342"></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="id2543367"></a><h2>ACL</h2>
+<a name="id2543370"></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="id2543383"></a><h2>KEY</h2>
+<a name="id2543386"></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="id2543402"></a><h2>MASTERS</h2>
+<a name="id2543405"></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="id2543448"></a><h2>SERVER</h2>
+<a name="id2543451"></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="id2543516"></a><h2>TRUSTED-KEYS</h2>
+<a name="id2543520"></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="id2543542"></a><h2>CONTROLS</h2>
+<a name="id2543545"></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>
@@ -117,7 +117,7 @@ controls {<br>
</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2543577"></a><h2>LOGGING</h2>
+<a name="id2543580"></a><h2>LOGGING</h2>
<div class="literallayout"><p><br>
logging {<br>
channel <em class="replaceable"><code>string</code></em> {<br>
@@ -135,7 +135,7 @@ logging {<br>
</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2543616"></a><h2>LWRES</h2>
+<a name="id2543619"></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>
@@ -148,7 +148,7 @@ lwres {<br>
</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2543657"></a><h2>OPTIONS</h2>
+<a name="id2543660"></a><h2>OPTIONS</h2>
<div class="literallayout"><p><br>
options {<br>
avoid-v4-udp-ports { <em class="replaceable"><code>port</code></em>; ... };<br>
@@ -172,6 +172,7 @@ options {<br>
port <em class="replaceable"><code>integer</code></em>;<br>
querylog <em class="replaceable"><code>boolean</code></em>;<br>
recursing-file <em class="replaceable"><code>quoted_string</code></em>;<br>
+ reserved-sockets <em class="replaceable"><code>integer</code></em>;<br>
random-device <em class="replaceable"><code>quoted_string</code></em>;<br>
recursive-clients <em class="replaceable"><code>integer</code></em>;<br>
serial-query-rate <em class="replaceable"><code>integer</code></em>;<br>
@@ -321,7 +322,7 @@ options {<br>
</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2544428"></a><h2>VIEW</h2>
+<a name="id2544435"></a><h2>VIEW</h2>
<div class="literallayout"><p><br>
view <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br>
match-clients { <em class="replaceable"><code>address_match_element</code></em>; ... };<br>
@@ -469,7 +470,7 @@ view <em class="replaceable"><code>string</code></em> <em class="replaceable"><c
</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2545090"></a><h2>ZONE</h2>
+<a name="id2545096"></a><h2>ZONE</h2>
<div class="literallayout"><p><br>
zone <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>optional_class</code></em> {<br>
type ( master | slave | stub | hint |<br>
@@ -557,12 +558,12 @@ zone <em class="replaceable"><code>string</code></em> <em class="replaceable"><c
</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2545384"></a><h2>FILES</h2>
+<a name="id2545390"></a><h2>FILES</h2>
<p><code class="filename">/etc/named.conf</code>
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2545396"></a><h2>SEE ALSO</h2>
+<a name="id2545402"></a><h2>SEE ALSO</h2>
<p><span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
<span class="citerefentry"><span class="refentrytitle">named-checkconf</span>(8)</span>,
<span class="citerefentry"><span class="refentrytitle">rndc</span>(8)</span>,
diff --git a/bin/named/named.docbook b/bin/named/named.docbook
index a60d1496..b60aa582 100644
--- a/bin/named/named.docbook
+++ b/bin/named/named.docbook
@@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY mdash "&#8212;">]>
<!--
- - Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ - Copyright (C) 2004-2008 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
@@ -18,7 +18,7 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: named.docbook,v 1.19 2007/06/19 06:58:03 marka Exp $ -->
+<!-- $Id: named.docbook,v 1.19.130.2 2008/08/21 23:46:48 tbox Exp $ -->
<refentry id="man.named">
<refentryinfo>
<date>June 30, 2000</date>
@@ -41,6 +41,7 @@
<year>2005</year>
<year>2006</year>
<year>2007</year>
+ <year>2008</year>
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
</copyright>
<copyright>
@@ -64,6 +65,7 @@
<arg><option>-n <replaceable class="parameter">#cpus</replaceable></option></arg>
<arg><option>-p <replaceable class="parameter">port</replaceable></option></arg>
<arg><option>-s</option></arg>
+ <arg><option>-S <replaceable class="parameter">#max-socks</replaceable></option></arg>
<arg><option>-t <replaceable class="parameter">directory</replaceable></option></arg>
<arg><option>-u <replaceable class="parameter">user</replaceable></option></arg>
<arg><option>-v</option></arg>
@@ -215,6 +217,33 @@
</varlistentry>
<varlistentry>
+ <term>-S <replaceable class="parameter">#max-socks</replaceable></term>
+ <listitem>
+ <para>
+ Allow <command>named</command> to use up to
+ <replaceable class="parameter">#max-socks</replaceable> sockets.
+ </para>
+ <warning>
+ <para>
+ This option should be unnecessary for the vast majority
+ of users.
+ The use of this option could even be harmful because the
+ specified value may exceed the limitation of the
+ underlying system API.
+ It is therefore set only when the default configuration
+ causes exhaustion of file descriptors and the
+ operational environment is known to support the
+ specified number of sockets.
+ Note also that the actual maximum number is normally a little
+ fewer than the specified value because
+ <command>named</command> reserves some file descriptors
+ for its internal use.
+ </para>
+ </warning>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>-t <replaceable class="parameter">directory</replaceable></term>
<listitem>
<para>Chroot
diff --git a/bin/named/named.html b/bin/named/named.html
index cb89a6a0..831e6666 100644
--- a/bin/named/named.html
+++ b/bin/named/named.html
@@ -1,5 +1,5 @@
<!--
- - Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ - Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
- Copyright (C) 2000, 2001, 2003 Internet Software Consortium.
-
- Permission to use, copy, modify, and distribute this software for any
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: named.html,v 1.26 2007/06/20 02:27:32 marka Exp $ -->
+<!-- $Id: named.html,v 1.26.130.1 2008/09/01 02:40:04 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -29,10 +29,10 @@
</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
-<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">-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">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>] [<code class="option">-v</code>] [<code class="option">-x <em class="replaceable"><code>cache-file</code></em></code>]</p></div>
+<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">-f</code>] [<code class="option">-g</code>] [<code class="option">-m <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-n <em class="replaceable"><code>#cpus</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-s</code>] [<code class="option">-S <em class="replaceable"><code>#max-socks</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>] [<code class="option">-v</code>] [<code class="option">-x <em class="replaceable"><code>cache-file</code></em></code>]</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2543452"></a><h2>DESCRIPTION</h2>
+<a name="id2543464"></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
@@ -47,7 +47,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2543477"></a><h2>OPTIONS</h2>
+<a name="id2543489"></a><h2>OPTIONS</h2>
<div class="variablelist"><dl>
<dt><span class="term">-4</span></dt>
<dd><p>
@@ -126,6 +126,31 @@
</p>
</div>
</dd>
+<dt><span class="term">-S <em class="replaceable"><code>#max-socks</code></em></span></dt>
+<dd>
+<p>
+ Allow <span><strong class="command">named</strong></span> to use up to
+ <em class="replaceable"><code>#max-socks</code></em> sockets.
+ </p>
+<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Warning</h3>
+<p>
+ This option should be unnecessary for the vast majority
+ of users.
+ The use of this option could even be harmful because the
+ specified value may exceed the limitation of the
+ underlying system API.
+ It is therefore set only when the default configuration
+ causes exhaustion of file descriptors and the
+ operational environment is known to support the
+ specified number of sockets.
+ Note also that the actual maximum number is normally a little
+ fewer than the specified value because
+ <span><strong class="command">named</strong></span> reserves some file descriptors
+ for its internal use.
+ </p>
+</div>
+</dd>
<dt><span class="term">-t <em class="replaceable"><code>directory</code></em></span></dt>
<dd>
<p>Chroot
@@ -191,7 +216,7 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2543864"></a><h2>SIGNALS</h2>
+<a name="id2543911"></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
@@ -212,7 +237,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2543912"></a><h2>CONFIGURATION</h2>
+<a name="id2543959"></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
@@ -221,7 +246,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2543929"></a><h2>FILES</h2>
+<a name="id2543976"></a><h2>FILES</h2>
<div class="variablelist"><dl>
<dt><span class="term"><code class="filename">/etc/named.conf</code></span></dt>
<dd><p>
@@ -234,7 +259,7 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2543969"></a><h2>SEE ALSO</h2>
+<a name="id2544016"></a><h2>SEE ALSO</h2>
<p><em class="citetitle">RFC 1033</em>,
<em class="citetitle">RFC 1034</em>,
<em class="citetitle">RFC 1035</em>,
@@ -247,7 +272,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2544039"></a><h2>AUTHOR</h2>
+<a name="id2544086"></a><h2>AUTHOR</h2>
<p><span class="corpauthor">Internet Systems Consortium</span>
</p>
</div>
diff --git a/bin/named/server.c b/bin/named/server.c
index ef21da86..50ef34fb 100644
--- a/bin/named/server.c
+++ b/bin/named/server.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: server.c,v 1.495.10.15 2008/06/24 00:09:10 jinmei Exp $ */
+/* $Id: server.c,v 1.495.10.19 2008/09/04 23:46:41 tbox Exp $ */
/*! \file */
@@ -36,6 +36,7 @@
#include <isc/portset.h>
#include <isc/print.h>
#include <isc/resource.h>
+#include <isc/socket.h>
#include <isc/stdio.h>
#include <isc/string.h>
#include <isc/task.h>
@@ -2883,29 +2884,32 @@ static isc_result_t
load_configuration(const char *filename, ns_server_t *server,
isc_boolean_t first_time)
{
- isc_result_t result;
- isc_interval_t interval;
- cfg_parser_t *parser = NULL;
+ cfg_aclconfctx_t aclconfctx;
cfg_obj_t *config;
- const cfg_obj_t *options;
- const cfg_obj_t *views;
+ cfg_parser_t *parser = NULL;
+ const cfg_listelt_t *element;
+ const cfg_obj_t *builtin_views;
+ const cfg_obj_t *maps[3];
const cfg_obj_t *obj;
+ const cfg_obj_t *options;
const cfg_obj_t *usev4ports, *avoidv4ports, *usev6ports, *avoidv6ports;
- const cfg_obj_t *maps[3];
- const cfg_obj_t *builtin_views;
- const cfg_listelt_t *element;
+ const cfg_obj_t *views;
dns_view_t *view = NULL;
dns_view_t *view_next;
- dns_viewlist_t viewlist;
dns_viewlist_t tmpviewlist;
- cfg_aclconfctx_t aclconfctx;
- isc_uint32_t interface_interval;
- isc_uint32_t heartbeat_interval;
- isc_uint32_t udpsize;
+ dns_viewlist_t viewlist;
in_port_t listen_port, udpport_low, udpport_high;
+ int i;
+ isc_interval_t interval;
isc_portset_t *v4portset = NULL;
isc_portset_t *v6portset = NULL;
- int i;
+ isc_resourcevalue_t nfiles;
+ isc_result_t result;
+ isc_uint32_t heartbeat_interval;
+ isc_uint32_t interface_interval;
+ isc_uint32_t reserved;
+ isc_uint32_t udpsize;
+ unsigned int maxsocks;
cfg_aclconfctx_init(&aclconfctx);
ISC_LIST_INIT(viewlist);
@@ -2965,15 +2969,6 @@ load_configuration(const char *filename, ns_server_t *server,
CHECK(result);
/*
- * Check that the working directory is writable.
- */
- if (access(".", W_OK) != 0) {
- isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
- NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
- "the working directory is not writable");
- }
-
- /*
* Check the validity of the configuration.
*/
CHECK(bind9_check_namedconf(config, ns_g_lctx, ns_g_mctx));
@@ -2995,6 +2990,48 @@ load_configuration(const char *filename, ns_server_t *server,
set_limits(maps);
/*
+ * Check if max number of open sockets that the system allows is
+ * sufficiently large. Failing this condition is not necessarily fatal,
+ * but may cause subsequent runtime failures for a busy recursive
+ * server.
+ */
+ result = isc_socketmgr_getmaxsockets(ns_g_socketmgr, &maxsocks);
+ if (result != ISC_R_SUCCESS)
+ maxsocks = 0;
+ result = isc_resource_getcurlimit(isc_resource_openfiles, &nfiles);
+ if (result == ISC_R_SUCCESS && (isc_resourcevalue_t)maxsocks > nfiles) {
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+ NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
+ "max open files (%" ISC_PRINT_QUADFORMAT "u)"
+ " is smaller than max sockets (%u)",
+ nfiles, maxsocks);
+ }
+
+ /*
+ * Set the number of socket reserved for TCP, stdio etc.
+ */
+ obj = NULL;
+ result = ns_config_get(maps, "reserved-sockets", &obj);
+ INSIST(result == ISC_R_SUCCESS);
+ reserved = cfg_obj_asuint32(obj);
+ if (maxsocks != 0) {
+ if (maxsocks < 128U) /* Prevent underflow. */
+ reserved = 0;
+ else if (reserved > maxsocks - 128U) /* Minimum UDP space. */
+ reserved = maxsocks - 128;
+ }
+ /* Minimum TCP/stdio space. */
+ if (reserved < 128U)
+ reserved = 128;
+ if (reserved + 128U > maxsocks && maxsocks != 0) {
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+ NS_LOGMODULE_SERVER, ISC_LOG_WARNING,
+ "less than 128 UDP sockets available after "
+ "applying 'reserved-sockets' and 'maxsockets'");
+ }
+ isc__socketmgr_setreserved(ns_g_socketmgr, reserved);
+
+ /*
* Configure various server options.
*/
configure_server_quota(maps, "transfers-out", &server->xfroutquota);
@@ -3387,6 +3424,15 @@ load_configuration(const char *filename, ns_server_t *server,
ns_os_changeuser();
/*
+ * Check that the working directory is writable.
+ */
+ if (access(".", W_OK) != 0) {
+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+ NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
+ "the working directory is not writable");
+ }
+
+ /*
* Configure the logging system.
*
* Do this after changing UID to make sure that any log
diff --git a/bin/named/statschannel.c b/bin/named/statschannel.c
index e5b7c338..fab41c0f 100644
--- a/bin/named/statschannel.c
+++ b/bin/named/statschannel.c
@@ -14,7 +14,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: statschannel.c,v 1.2.2.9 2008/04/09 22:53:06 tbox Exp $ */
+/* $Id: statschannel.c,v 1.2.2.13 2008/08/08 05:10:34 marka Exp $ */
/*! \file */
@@ -65,12 +65,309 @@ typedef struct
stats_dumparg {
statsformat_t type;
void *arg; /* type dependent argument */
+ const char *category; /* used for general statistics */
const char **desc; /* used for general statistics */
int ncounters; /* used for general statistics */
} stats_dumparg_t;
static isc_once_t once = ISC_ONCE_INIT;
+/*%
+ * Statistics descriptions. These could be statistically initialized at
+ * compile time, but we configure them run time in the init_desc() function
+ * below so that they'll be less susceptible to counter name changes.
+ */
+static const char *nsstats_desc[dns_nsstatscounter_max];
+static const char *resstats_desc[dns_resstatscounter_max];
+static const char *zonestats_desc[dns_zonestatscounter_max];
+#ifdef HAVE_LIBXML2
+static const char *nsstats_xmldesc[dns_nsstatscounter_max];
+static const char *resstats_xmldesc[dns_resstatscounter_max];
+static const char *zonestats_xmldesc[dns_zonestatscounter_max];
+#else
+#define nsstats_xmldesc NULL
+#define resstats_xmldesc NULL
+#define zonestats_xmldesc NULL
+#endif /* HAVE_LIBXML2 */
+
+static inline void
+set_desc(int counter, int maxcounter, const char *fdesc, const char **fdescs,
+ const char *xdesc, const char **xdescs)
+{
+ REQUIRE(counter < maxcounter);
+ REQUIRE(fdescs[counter] == NULL);
+#ifdef HAVE_LIBXML2
+ REQUIRE(xdescs[counter] == NULL);
+#endif
+
+ fdescs[counter] = fdesc;
+#ifdef HAVE_LIBXML2
+ xdescs[counter] = xdesc;
+#else
+ UNUSED(xdesc);
+ UNUSED(xdescs);
+#endif
+}
+
+static void
+init_desc(void) {
+ int i;
+
+ /* Initialize name server statistics */
+ memset(nsstats_desc, 0,
+ dns_nsstatscounter_max * sizeof(nsstats_desc[0]));
+#ifdef HAVE_LIBXML2
+ memset(nsstats_xmldesc, 0,
+ dns_nsstatscounter_max * sizeof(nsstats_xmldesc[0]));
+#endif
+ set_desc(dns_nsstatscounter_requestv4, dns_nsstatscounter_max,
+ "IPv4 requests received", nsstats_desc,
+ "Requestv4", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_requestv6, dns_nsstatscounter_max,
+ "IPv6 requests received", nsstats_desc,
+ "Requestv6", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_edns0in, dns_nsstatscounter_max,
+ "requests with EDNS(0) received", nsstats_desc,
+ "ReqEdns0", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_badednsver, dns_nsstatscounter_max,
+ "requests with unsupported EDNS version received",
+ nsstats_desc,
+ "ReqBadEDNSVer", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_tsigin, dns_nsstatscounter_max,
+ "requests with TSIG received", nsstats_desc,
+ "ReqTSIG", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_sig0in, dns_nsstatscounter_max,
+ "requests with SIG(0) received", nsstats_desc,
+ "ReqSIG0", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_invalidsig, dns_nsstatscounter_max,
+ "requests with invalid signature", nsstats_desc,
+ "ReqBadSIG", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_tcp, dns_nsstatscounter_max,
+ "TCP requests received", nsstats_desc,
+ "ReqTCP", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_authrej, dns_nsstatscounter_max,
+ "auth queries rejected", nsstats_desc,
+ "AuthQryRej", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_recurserej, dns_nsstatscounter_max,
+ "recursive queries rejected", nsstats_desc,
+ "RecQryRej", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_xfrrej, dns_nsstatscounter_max,
+ "transfer requests rejected", nsstats_desc,
+ "XfrRej", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_updaterej, dns_nsstatscounter_max,
+ "update requests rejected", nsstats_desc,
+ "UpdateRej", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_response, dns_nsstatscounter_max,
+ "responses sent", nsstats_desc,
+ "Response", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_truncatedresp, dns_nsstatscounter_max,
+ "truncated responses sent", nsstats_desc,
+ "TruncatedResp", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_edns0out, dns_nsstatscounter_max,
+ "responses with EDNS(0) sent", nsstats_desc,
+ "RespEDNS0", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_tsigout, dns_nsstatscounter_max,
+ "responses with TSIG sent", nsstats_desc,
+ "RespTSIG", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_sig0out, dns_nsstatscounter_max,
+ "responses with SIG(0) sent", nsstats_desc,
+ "RespSIG0", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_success, dns_nsstatscounter_max,
+ "queries resulted in successful answer", nsstats_desc,
+ "QrySuccess", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_authans, dns_nsstatscounter_max,
+ "queries resulted in authoritative answer", nsstats_desc,
+ "QryAuthAns", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_nonauthans, dns_nsstatscounter_max,
+ "queries resulted in non authoritative answer", nsstats_desc,
+ "QryNoauthAns", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_referral, dns_nsstatscounter_max,
+ "queries resulted in referral answer", nsstats_desc,
+ "QryReferral", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_nxrrset, dns_nsstatscounter_max,
+ "queries resulted in nxrrset", nsstats_desc,
+ "QryNxrrset", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_servfail, dns_nsstatscounter_max,
+ "queries resulted in SERVFAIL", nsstats_desc,
+ "QrySERVFAIL", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_formerr, dns_nsstatscounter_max,
+ "queries resulted in FORMERR", nsstats_desc,
+ "QryFORMERR", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_nxdomain, dns_nsstatscounter_max,
+ "queries resulted in NXDOMAIN", nsstats_desc,
+ "QryNXDOMAIN", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_recursion, dns_nsstatscounter_max,
+ "queries caused recursion", nsstats_desc,
+ "QryRecursion", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_duplicate, dns_nsstatscounter_max,
+ "duplicate queries received", nsstats_desc,
+ "QryDuplicate", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_dropped, dns_nsstatscounter_max,
+ "queries dropped", nsstats_desc,
+ "QryDropped", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_failure, dns_nsstatscounter_max,
+ "other query failures", nsstats_desc,
+ "QryFailure", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_xfrdone, dns_nsstatscounter_max,
+ "requested transfers completed", nsstats_desc,
+ "XfrReqDone", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_updatereqfwd, dns_nsstatscounter_max,
+ "update requests forwarded", nsstats_desc,
+ "UpdateReqFwd", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_updaterespfwd, dns_nsstatscounter_max,
+ "update responses forwarded", nsstats_desc,
+ "UpdateRespFwd", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_updatefwdfail, dns_nsstatscounter_max,
+ "update forward failed", nsstats_desc,
+ "UpdateFwdFail", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_updatedone, dns_nsstatscounter_max,
+ "updates completed", nsstats_desc,
+ "UpdateDone", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_updatefail, dns_nsstatscounter_max,
+ "updates failed", nsstats_desc,
+ "UpdateFail", nsstats_xmldesc);
+ set_desc(dns_nsstatscounter_updatebadprereq, dns_nsstatscounter_max,
+ "updates rejected due to prerequisite failure", nsstats_desc,
+ "UpdateBadPrereq", nsstats_xmldesc);
+
+ /* Initialize resolver statistics */
+ memset(resstats_desc, 0,
+ dns_resstatscounter_max * sizeof(resstats_desc[0]));
+#ifdef HAVE_LIBXML2
+ memset(resstats_xmldesc, 0,
+ dns_resstatscounter_max * sizeof(resstats_xmldesc[0]));
+#endif
+ set_desc(dns_resstatscounter_queryv4, dns_resstatscounter_max,
+ "IPv4 queries sent", resstats_desc,
+ "Queryv4", resstats_xmldesc);
+ set_desc(dns_resstatscounter_queryv6, dns_resstatscounter_max,
+ "IPv6 queries sent", resstats_desc,
+ "Queryv6", resstats_xmldesc);
+ set_desc(dns_resstatscounter_responsev4, dns_resstatscounter_max,
+ "IPv4 responses received", resstats_desc,
+ "Responsev4", resstats_xmldesc);
+ set_desc(dns_resstatscounter_responsev6, dns_resstatscounter_max,
+ "IPv6 responses received", resstats_desc,
+ "Responsev6", resstats_xmldesc);
+ set_desc(dns_resstatscounter_nxdomain, dns_resstatscounter_max,
+ "NXDOMAIN received", resstats_desc,
+ "NXDOMAIN", resstats_xmldesc);
+ set_desc(dns_resstatscounter_servfail, dns_resstatscounter_max,
+ "SERVFAIL received", resstats_desc,
+ "SERVFAIL", resstats_xmldesc);
+ set_desc(dns_resstatscounter_formerr, dns_resstatscounter_max,
+ "FORMERR received", resstats_desc,
+ "FORMERR", resstats_xmldesc);
+ set_desc(dns_resstatscounter_othererror, dns_resstatscounter_max,
+ "other errors received", resstats_desc,
+ "OtherError", resstats_xmldesc);
+ set_desc(dns_resstatscounter_edns0fail, dns_resstatscounter_max,
+ "EDNS(0) query failures", resstats_desc,
+ "EDNS0Fail", resstats_xmldesc);
+ set_desc(dns_resstatscounter_mismatch, dns_resstatscounter_max,
+ "mismatch responses received", resstats_desc,
+ "Mismatch", resstats_xmldesc);
+ set_desc(dns_resstatscounter_truncated, dns_resstatscounter_max,
+ "truncated responses received", resstats_desc,
+ "Truncated", resstats_xmldesc);
+ set_desc(dns_resstatscounter_lame, dns_resstatscounter_max,
+ "lame delegations received", resstats_desc,
+ "Lame", resstats_xmldesc);
+ set_desc(dns_resstatscounter_retry, dns_resstatscounter_max,
+ "query retries", resstats_desc,
+ "Retry", resstats_xmldesc);
+ set_desc(dns_resstatscounter_gluefetchv4, dns_resstatscounter_max,
+ "IPv4 NS address fetches", resstats_desc,
+ "GlueFetchv4", resstats_xmldesc);
+ set_desc(dns_resstatscounter_gluefetchv6, dns_resstatscounter_max,
+ "IPv6 NS address fetches", resstats_desc,
+ "GlueFetchv6", resstats_xmldesc);
+ set_desc(dns_resstatscounter_gluefetchv4fail, dns_resstatscounter_max,
+ "IPv4 NS address fetch failed", resstats_desc,
+ "GlueFetchv4Fail", resstats_xmldesc);
+ set_desc(dns_resstatscounter_gluefetchv6fail, dns_resstatscounter_max,
+ "IPv6 NS address fetch failed", resstats_desc,
+ "GlueFetchv6Fail", resstats_xmldesc);
+ set_desc(dns_resstatscounter_val, dns_resstatscounter_max,
+ "DNSSEC validation attempted", resstats_desc,
+ "ValAttempt", resstats_xmldesc);
+ set_desc(dns_resstatscounter_valsuccess, dns_resstatscounter_max,
+ "DNSSEC validation succeeded", resstats_desc,
+ "ValOk", resstats_xmldesc);
+ set_desc(dns_resstatscounter_valnegsuccess, dns_resstatscounter_max,
+ "DNSSEC NX validation succeeded", resstats_desc,
+ "ValNegOk", resstats_xmldesc);
+ set_desc(dns_resstatscounter_valfail, dns_resstatscounter_max,
+ "DNSSEC validation failed", resstats_desc,
+ "ValFail", resstats_xmldesc);
+
+ /* Initialize zone statistics */
+ memset(zonestats_desc, 0,
+ dns_zonestatscounter_max * sizeof(zonestats_desc[0]));
+#ifdef HAVE_LIBXML2
+ memset(zonestats_xmldesc, 0,
+ dns_zonestatscounter_max * sizeof(zonestats_xmldesc[0]));
+#endif
+ set_desc(dns_zonestatscounter_notifyoutv4, dns_zonestatscounter_max,
+ "IPv4 notifies sent", zonestats_desc,
+ "NotifyOutv4", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_notifyoutv6, dns_zonestatscounter_max,
+ "IPv6 notifies sent", zonestats_desc,
+ "NotifyOutv6", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_notifyinv4, dns_zonestatscounter_max,
+ "IPv4 notifies received", zonestats_desc,
+ "NotifyInv4", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_notifyinv6, dns_zonestatscounter_max,
+ "IPv6 notifies received", zonestats_desc,
+ "NotifyInv6", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_notifyrej, dns_zonestatscounter_max,
+ "notifies rejected", zonestats_desc,
+ "NotifyRej", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_soaoutv4, dns_zonestatscounter_max,
+ "IPv4 SOA queries sent", zonestats_desc,
+ "SOAOutv4", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_soaoutv6, dns_zonestatscounter_max,
+ "IPv6 SOA queries sent", zonestats_desc,
+ "SOAOutv6", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_axfrreqv4, dns_zonestatscounter_max,
+ "IPv4 AXFR requested", zonestats_desc,
+ "AXFRReqv4", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_axfrreqv6, dns_zonestatscounter_max,
+ "IPv6 AXFR requested", zonestats_desc,
+ "AXFRReqv6", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_ixfrreqv4, dns_zonestatscounter_max,
+ "IPv4 IXFR requested", zonestats_desc,
+ "IXFRReqv4", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_ixfrreqv6, dns_zonestatscounter_max,
+ "IPv6 IXFR requested", zonestats_desc,
+ "IXFRReqv6", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_xfrsuccess, dns_zonestatscounter_max,
+ "transfer requests succeeded", zonestats_desc,
+ "XfrSuccess", zonestats_xmldesc);
+ set_desc(dns_zonestatscounter_xfrfail, dns_zonestatscounter_max,
+ "transfer requests failed", zonestats_desc,
+ "XfrFail", zonestats_xmldesc);
+
+ /* Sanity check */
+ for (i = 0; i < dns_nsstatscounter_max; i++)
+ INSIST(nsstats_desc[i] != NULL);
+ for (i = 0; i < dns_resstatscounter_max; i++)
+ INSIST(resstats_desc[i] != NULL);
+ for (i = 0; i < dns_zonestatscounter_max; i++)
+ INSIST(zonestats_desc[i] != NULL);
+#ifdef HAVE_LIBXML2
+ for (i = 0; i < dns_nsstatscounter_max; i++)
+ INSIST(nsstats_xmldesc[i] != NULL);
+ for (i = 0; i < dns_resstatscounter_max; i++)
+ INSIST(resstats_xmldesc[i] != NULL);
+ for (i = 0; i < dns_zonestatscounter_max; i++)
+ INSIST(zonestats_xmldesc[i] != NULL);
+#endif
+}
+
+/*%
+ * Dump callback functions.
+ */
static void
generalstat_dump(dns_statscounter_t counter, isc_uint64_t val, void *arg) {
stats_dumparg_t *dumparg = arg;
@@ -91,12 +388,27 @@ generalstat_dump(dns_statscounter_t counter, isc_uint64_t val, void *arg) {
#ifdef HAVE_LIBXML2
writer = dumparg->arg;
- xmlTextWriterStartElement(writer, ISC_XMLCHAR
- dumparg->desc[counter]);
+ if (dumparg->category != NULL) {
+ xmlTextWriterStartElement(writer,
+ ISC_XMLCHAR
+ dumparg->category);
+ xmlTextWriterStartElement(writer, ISC_XMLCHAR "name");
+ xmlTextWriterWriteString(writer, ISC_XMLCHAR
+ dumparg->desc[counter]);
+ xmlTextWriterEndElement(writer); /* name */
+
+ xmlTextWriterStartElement(writer, ISC_XMLCHAR
+ "counter");
+ } else {
+ xmlTextWriterStartElement(writer, ISC_XMLCHAR
+ dumparg->desc[counter]);
+ }
xmlTextWriterWriteFormatString(writer,
"%" ISC_PRINT_QUADFORMAT "u",
val);
- xmlTextWriterEndElement(writer);
+ xmlTextWriterEndElement(writer); /* counter */
+ if (dumparg->category != NULL)
+ xmlTextWriterEndElement(writer); /* category */
#endif
break;
}
@@ -279,6 +591,7 @@ zone_xmlrender(dns_zone_t *zone, void *arg) {
dumparg.type = statsformat_xml;
dumparg.arg = writer;
+ dumparg.category = NULL;
dumparg.desc = nsstats_xmldesc;
dumparg.ncounters = dns_nsstatscounter_max;
@@ -352,13 +665,11 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) {
}
if (view->resstats != NULL) {
- xmlTextWriterStartElement(writer,
- ISC_XMLCHAR "resstats");
dumparg.ncounters = dns_resstatscounter_max;
- dumparg.desc = resstats_xmldesc; /* auto-generated */
+ dumparg.category = "resstat";
+ dumparg.desc = resstats_xmldesc;
dns_generalstats_dump(view->resstats, generalstat_dump,
&dumparg, DNS_STATSDUMP_VERBOSE);
- xmlTextWriterEndElement(writer); /* resstats */
}
cachestats = dns_db_getrrsetstats(view->cachedb);
@@ -402,26 +713,27 @@ generatexml(ns_server_t *server, int *buflen, xmlChar **buf) {
&dumparg, 0);
xmlTextWriterEndElement(writer); /* queries-in */
- TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "nsstats"));
- dumparg.desc = nsstats_xmldesc; /* auto-generated in bind9.xsl.h */
+ dumparg.category = "nsstat";
+ dumparg.desc = nsstats_xmldesc;
dumparg.ncounters = dns_nsstatscounter_max;
dns_generalstats_dump(server->nsstats, generalstat_dump, &dumparg,
DNS_STATSDUMP_VERBOSE);
- xmlTextWriterEndElement(writer); /* nsstats */
- TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "zonestats"));
- dumparg.desc = zonestats_xmldesc; /* auto-generated in bind9.xsl.h */
+ dumparg.category = "zonestat";
+ dumparg.desc = zonestats_xmldesc;
dumparg.ncounters = dns_zonestatscounter_max;
dns_generalstats_dump(server->zonestats, generalstat_dump, &dumparg,
DNS_STATSDUMP_VERBOSE);
- xmlTextWriterEndElement(writer); /* zonestats */
- xmlTextWriterStartElement(writer, ISC_XMLCHAR "resstats");
+ /*
+ * Most of the common resolver statistics entries are 0, so we don't
+ * use the verbose dump here.
+ */
+ dumparg.category = "resstat";
dumparg.ncounters = dns_resstatscounter_max;
dumparg.desc = resstats_xmldesc;
dns_generalstats_dump(server->resolverstats, generalstat_dump,
- &dumparg, DNS_STATSDUMP_VERBOSE);
- xmlTextWriterEndElement(writer); /* resstats */
+ &dumparg, 0);
xmlTextWriterEndElement(writer); /* server */
@@ -607,7 +919,7 @@ add_listener(ns_server_t *server, ns_statschannel_t **listenerp,
isc_socket_ipv6only(sock, ISC_TRUE);
#endif
- result = isc_socket_bind(sock, addr);
+ result = isc_socket_bind(sock, addr, ISC_SOCKET_REUSEADDRESS);
if (result != ISC_R_SUCCESS)
goto cleanup;
@@ -705,6 +1017,8 @@ ns_statschannels_configure(ns_server_t *server, const cfg_obj_t *config,
const cfg_listelt_t *element, *element2;
char socktext[ISC_SOCKADDR_FORMATSIZE];
+ RUNTIME_CHECK(isc_once_do(&once, init_desc) == ISC_R_SUCCESS);
+
ISC_LIST_INIT(new_listeners);
/*
@@ -827,191 +1141,6 @@ ns_statschannels_shutdown(ns_server_t *server) {
}
}
-/*%
- * Statistics descriptions. These could be statistically initialized at
- * compile time, but we configure them run time in the init_desc() function
- * below so that they'll be less susceptible to counter name changes.
- * Note that bind9.xsl must still be updated consistently with the counter
- * numbering.
- */
-static const char *nsstats_desc[dns_nsstatscounter_max];
-static const char *resstats_desc[dns_resstatscounter_max];
-static const char *zonestats_desc[dns_zonestatscounter_max];
-
-static inline void
-set_desc(int counter, int maxcounter, const char *desc, const char **descs) {
- REQUIRE(counter < maxcounter);
- REQUIRE(descs[counter] == NULL);
-
- descs[counter] = desc;
-}
-
-static void
-init_desc() {
- int i;
-
- /* Initialize name server statistics */
- memset(nsstats_desc, 0,
- dns_nsstatscounter_max * sizeof(nsstats_desc[0]));
- set_desc(dns_nsstatscounter_requestv4, dns_nsstatscounter_max,
- "IPv4 requests received", nsstats_desc);
- set_desc(dns_nsstatscounter_requestv6, dns_nsstatscounter_max,
- "IPv6 requests received", nsstats_desc);
- set_desc(dns_nsstatscounter_edns0in, dns_nsstatscounter_max,
- "requests with EDNS(0) received", nsstats_desc);
- set_desc(dns_nsstatscounter_badednsver, dns_nsstatscounter_max,
- "requests with unsupported EDNS version received",
- nsstats_desc);
- set_desc(dns_nsstatscounter_tsigin, dns_nsstatscounter_max,
- "requests with TSIG received", nsstats_desc);
- set_desc(dns_nsstatscounter_sig0in, dns_nsstatscounter_max,
- "requests with SIG(0) received", nsstats_desc);
- set_desc(dns_nsstatscounter_invalidsig, dns_nsstatscounter_max,
- "requests with invalid signature", nsstats_desc);
- set_desc(dns_nsstatscounter_tcp, dns_nsstatscounter_max,
- "TCP requests received", nsstats_desc);
- set_desc(dns_nsstatscounter_authrej, dns_nsstatscounter_max,
- "auth queries rejected", nsstats_desc);
- set_desc(dns_nsstatscounter_recurserej, dns_nsstatscounter_max,
- "recursive queries rejected", nsstats_desc);
- set_desc(dns_nsstatscounter_xfrrej, dns_nsstatscounter_max,
- "transfer requests rejected", nsstats_desc);
- set_desc(dns_nsstatscounter_updaterej, dns_nsstatscounter_max,
- "update requests rejected", nsstats_desc);
- set_desc(dns_nsstatscounter_response, dns_nsstatscounter_max,
- "responses sent", nsstats_desc);
- set_desc(dns_nsstatscounter_truncatedresp, dns_nsstatscounter_max,
- "truncated responses sent", nsstats_desc);
- set_desc(dns_nsstatscounter_edns0out, dns_nsstatscounter_max,
- "responses with EDNS(0) sent", nsstats_desc);
- set_desc(dns_nsstatscounter_tsigout, dns_nsstatscounter_max,
- "responses with TSIG sent", nsstats_desc);
- set_desc(dns_nsstatscounter_sig0out, dns_nsstatscounter_max,
- "responses with SIG(0) sent", nsstats_desc);
- set_desc(dns_nsstatscounter_success, dns_nsstatscounter_max,
- "queries resulted in successful answer", nsstats_desc);
- set_desc(dns_nsstatscounter_authans, dns_nsstatscounter_max,
- "queries resulted in authoritative answer", nsstats_desc);
- set_desc(dns_nsstatscounter_nonauthans, dns_nsstatscounter_max,
- "queries resulted in non authoritative answer", nsstats_desc);
- set_desc(dns_nsstatscounter_referral, dns_nsstatscounter_max,
- "queries resulted in referral answer", nsstats_desc);
- set_desc(dns_nsstatscounter_nxrrset, dns_nsstatscounter_max,
- "queries resulted in nxrrset", nsstats_desc);
- set_desc(dns_nsstatscounter_servfail, dns_nsstatscounter_max,
- "queries resulted in SERVFAIL", nsstats_desc);
- set_desc(dns_nsstatscounter_formerr, dns_nsstatscounter_max,
- "queries resulted in FORMERR", nsstats_desc);
- set_desc(dns_nsstatscounter_nxdomain, dns_nsstatscounter_max,
- "queries resulted in NXDOMAIN", nsstats_desc);
- set_desc(dns_nsstatscounter_recursion, dns_nsstatscounter_max,
- "queries caused recursion", nsstats_desc);
- set_desc(dns_nsstatscounter_duplicate, dns_nsstatscounter_max,
- "duplicate queries received", nsstats_desc);
- set_desc(dns_nsstatscounter_dropped, dns_nsstatscounter_max,
- "queries dropped", nsstats_desc);
- set_desc(dns_nsstatscounter_failure, dns_nsstatscounter_max,
- "other query failures", nsstats_desc);
- set_desc(dns_nsstatscounter_xfrdone, dns_nsstatscounter_max,
- "requested transfers completed", nsstats_desc);
- set_desc(dns_nsstatscounter_updatereqfwd, dns_nsstatscounter_max,
- "update requests forwarded", nsstats_desc);
- set_desc(dns_nsstatscounter_updaterespfwd, dns_nsstatscounter_max,
- "update responses forwarded", nsstats_desc);
- set_desc(dns_nsstatscounter_updatefwdfail, dns_nsstatscounter_max,
- "update forward failed", nsstats_desc);
- set_desc(dns_nsstatscounter_updatedone, dns_nsstatscounter_max,
- "updates completed", nsstats_desc);
- set_desc(dns_nsstatscounter_updatefail, dns_nsstatscounter_max,
- "updates failed", nsstats_desc);
- set_desc(dns_nsstatscounter_updatebadprereq, dns_nsstatscounter_max,
- "updates rejected due to prerequisite failure", nsstats_desc);
-
- /* Initialize resolver statistics */
- memset(resstats_desc, 0,
- dns_resstatscounter_max * sizeof(resstats_desc[0]));
- set_desc(dns_resstatscounter_queryv4, dns_resstatscounter_max,
- "IPv4 queries sent", resstats_desc);
- set_desc(dns_resstatscounter_queryv6, dns_resstatscounter_max,
- "IPv6 queries sent", resstats_desc);
- set_desc(dns_resstatscounter_responsev4, dns_resstatscounter_max,
- "IPv4 responses received", resstats_desc);
- set_desc(dns_resstatscounter_responsev6, dns_resstatscounter_max,
- "IPv6 responses received", resstats_desc);
- set_desc(dns_resstatscounter_nxdomain, dns_resstatscounter_max,
- "NXDOMAIN received", resstats_desc);
- set_desc(dns_resstatscounter_servfail, dns_resstatscounter_max,
- "SERVFAIL received", resstats_desc);
- set_desc(dns_resstatscounter_formerr, dns_resstatscounter_max,
- "FORMERR received", resstats_desc);
- set_desc(dns_resstatscounter_othererror, dns_resstatscounter_max,
- "other errors received", resstats_desc);
- set_desc(dns_resstatscounter_edns0fail, dns_resstatscounter_max,
- "EDNS(0) query failures", resstats_desc);
- set_desc(dns_resstatscounter_mismatch, dns_resstatscounter_max,
- "mismatch responses received", resstats_desc);
- set_desc(dns_resstatscounter_truncated, dns_resstatscounter_max,
- "truncated responses received", resstats_desc);
- set_desc(dns_resstatscounter_lame, dns_resstatscounter_max,
- "lame delegations received", resstats_desc);
- set_desc(dns_resstatscounter_retry, dns_resstatscounter_max,
- "query retries", resstats_desc);
- set_desc(dns_resstatscounter_gluefetchv4, dns_resstatscounter_max,
- "IPv4 NS address fetches", resstats_desc);
- set_desc(dns_resstatscounter_gluefetchv6, dns_resstatscounter_max,
- "IPv6 NS address fetches", resstats_desc);
- set_desc(dns_resstatscounter_gluefetchv4fail, dns_resstatscounter_max,
- "IPv4 NS address fetch failed", resstats_desc);
- set_desc(dns_resstatscounter_gluefetchv6fail, dns_resstatscounter_max,
- "IPv6 NS address fetch failed", resstats_desc);
- set_desc(dns_resstatscounter_val, dns_resstatscounter_max,
- "DNSSEC validation attempted", resstats_desc);
- set_desc(dns_resstatscounter_valsuccess, dns_resstatscounter_max,
- "DNSSEC validation succeeded", resstats_desc);
- set_desc(dns_resstatscounter_valnegsuccess, dns_resstatscounter_max,
- "DNSSEC NX validation succeeded", resstats_desc);
- set_desc(dns_resstatscounter_valfail, dns_resstatscounter_max,
- "DNSSEC validation failed", resstats_desc);
-
- /* Initialize zone statistics */
- memset(zonestats_desc, 0,
- dns_zonestatscounter_max * sizeof(zonestats_desc[0]));
- set_desc(dns_zonestatscounter_notifyoutv4, dns_zonestatscounter_max,
- "IPv4 notifies sent", zonestats_desc);
- set_desc(dns_zonestatscounter_notifyoutv6, dns_zonestatscounter_max,
- "IPv6 notifies sent", zonestats_desc);
- set_desc(dns_zonestatscounter_notifyinv4, dns_zonestatscounter_max,
- "IPv4 notifies received", zonestats_desc);
- set_desc(dns_zonestatscounter_notifyinv6, dns_zonestatscounter_max,
- "IPv6 notifies received", zonestats_desc);
- set_desc(dns_zonestatscounter_notifyrej, dns_zonestatscounter_max,
- "notifies rejected", zonestats_desc);
- set_desc(dns_zonestatscounter_soaoutv4, dns_zonestatscounter_max,
- "IPv4 SOA queries sent", zonestats_desc);
- set_desc(dns_zonestatscounter_soaoutv6, dns_zonestatscounter_max,
- "IPv6 SOA queries sent", zonestats_desc);
- set_desc(dns_zonestatscounter_axfrreqv4, dns_zonestatscounter_max,
- "IPv4 AXFR requested", zonestats_desc);
- set_desc(dns_zonestatscounter_axfrreqv6, dns_zonestatscounter_max,
- "IPv6 AXFR requested", zonestats_desc);
- set_desc(dns_zonestatscounter_ixfrreqv4, dns_zonestatscounter_max,
- "IPv4 IXFR requested", zonestats_desc);
- set_desc(dns_zonestatscounter_ixfrreqv6, dns_zonestatscounter_max,
- "IPv6 IXFR requested", zonestats_desc);
- set_desc(dns_zonestatscounter_xfrsuccess, dns_zonestatscounter_max,
- "transfer requests succeeded", zonestats_desc);
- set_desc(dns_zonestatscounter_xfrfail, dns_zonestatscounter_max,
- "transfer requests failed", zonestats_desc);
-
- /* Sanity check */
- for (i = 0; i < dns_nsstatscounter_max; i++)
- INSIST(nsstats_desc[i] != NULL);
- for (i = 0; i < dns_resstatscounter_max; i++)
- INSIST(resstats_desc[i] != NULL);
- for (i = 0; i < dns_zonestatscounter_max; i++)
- INSIST(zonestats_desc[i] != NULL);
-}
-
isc_result_t
ns_stats_dump(ns_server_t *server, FILE *fp) {
isc_stdtime_t now;
@@ -1025,6 +1154,7 @@ ns_stats_dump(ns_server_t *server, FILE *fp) {
/* Set common fields */
dumparg.type = statsformat_file;
dumparg.arg = fp;
+ dumparg.category = NULL; /* unused */
isc_stdtime_get(&now);
fprintf(fp, "+++ Statistics Dump +++ (%lu)\n", (unsigned long)now);
diff --git a/bin/named/xfrout.c b/bin/named/xfrout.c
index fb531cc7..c31dd9bd 100644
--- a/bin/named/xfrout.c
+++ b/bin/named/xfrout.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: xfrout.c,v 1.126.128.2 2008/04/03 06:20:33 tbox Exp $ */
+/* $Id: xfrout.c,v 1.126.128.3 2008/08/15 19:38:27 jinmei Exp $ */
#include <config.h>
@@ -1333,7 +1333,8 @@ xfrout_ctx_create(isc_mem_t *mctx, ns_client_t *client, unsigned int id,
xfr->zone = NULL;
xfr->db = NULL;
xfr->ver = NULL;
- dns_zone_attach(zone, &xfr->zone);
+ if (zone != NULL) /* zone will be NULL if it's DLZ */
+ dns_zone_attach(zone, &xfr->zone);
dns_db_attach(db, &xfr->db);
dns_db_attachversion(db, ver, &xfr->ver);
xfr->end_of_stream = ISC_FALSE;
diff --git a/bin/nsupdate/Makefile.in b/bin/nsupdate/Makefile.in
index aa55fb49..d66c506d 100644
--- a/bin/nsupdate/Makefile.in
+++ b/bin/nsupdate/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2006, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2006-2008 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2000-2002 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
@@ -13,7 +13,7 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: Makefile.in,v 1.27 2007/06/19 23:46:59 tbox Exp $
+# $Id: Makefile.in,v 1.27.128.2 2008/08/29 23:46:52 tbox Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -55,7 +55,7 @@ UOBJS =
SRCS = nsupdate.c
-MANPAGES = nsupdate.8
+MANPAGES = nsupdate.1
HTMLPAGES = nsupdate.html
@@ -76,8 +76,8 @@ clean distclean::
installdirs:
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${bindir}
- $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8
+ $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man1
install:: nsupdate@EXEEXT@ installdirs
${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} nsupdate@EXEEXT@ ${DESTDIR}${bindir}
- ${INSTALL_DATA} ${srcdir}/nsupdate.8 ${DESTDIR}${mandir}/man8
+ ${INSTALL_DATA} ${srcdir}/nsupdate.1 ${DESTDIR}${mandir}/man1
diff --git a/bin/nsupdate/nsupdate.8 b/bin/nsupdate/nsupdate.1
index 1fd2aada..1e5cce38 100644
--- a/bin/nsupdate/nsupdate.8
+++ b/bin/nsupdate/nsupdate.1
@@ -1,4 +1,4 @@
-.\" Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+.\" Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
.\" Copyright (C) 2000-2003 Internet Software Consortium.
.\"
.\" Permission to use, copy, modify, and distribute this software for any
@@ -13,7 +13,7 @@
.\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
-.\" $Id: nsupdate.8,v 1.45 2007/09/16 08:02:41 marka Exp $
+.\" $Id: nsupdate.1,v 1.1.2.2 2008/09/01 02:40:04 tbox Exp $
.\"
.hy 0
.ad l
@@ -24,7 +24,7 @@
.\" Manual: BIND9
.\" Source: BIND9
.\"
-.TH "NSUPDATE" "8" "Jun 30, 2000" "BIND9" "BIND9"
+.TH "NSUPDATE" "1" "Jun 30, 2000" "BIND9" "BIND9"
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
@@ -352,7 +352,7 @@ base\-64 encoding of HMAC\-MD5 key created by
.PP
The TSIG key is redundantly stored in two separate files. This is a consequence of nsupdate using the DST library for its cryptographic operations, and may change in future releases.
.SH "COPYRIGHT"
-Copyright \(co 2004\-2007 Internet Systems Consortium, Inc. ("ISC")
+Copyright \(co 2004\-2008 Internet Systems Consortium, Inc. ("ISC")
.br
Copyright \(co 2000\-2003 Internet Software Consortium.
.br
diff --git a/bin/nsupdate/nsupdate.docbook b/bin/nsupdate/nsupdate.docbook
index bbb71fa9..a6a61953 100644
--- a/bin/nsupdate/nsupdate.docbook
+++ b/bin/nsupdate/nsupdate.docbook
@@ -2,7 +2,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY mdash "&#8212;">]>
<!--
- - Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ - Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
- Copyright (C) 2000-2003 Internet Software Consortium.
-
- Permission to use, copy, modify, and/or distribute this software for any
@@ -18,14 +18,14 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: nsupdate.docbook,v 1.29 2007/09/15 14:46:03 marka Exp $ -->
+<!-- $Id: nsupdate.docbook,v 1.29.56.2 2008/08/29 23:46:52 tbox Exp $ -->
<refentry>
<refentryinfo>
<date>Jun 30, 2000</date>
</refentryinfo>
<refmeta>
<refentrytitle>nsupdate</refentrytitle>
- <manvolnum>8</manvolnum>
+ <manvolnum>1</manvolnum>
<refmiscinfo>BIND9</refmiscinfo>
</refmeta>
<refnamediv>
@@ -39,6 +39,7 @@
<year>2005</year>
<year>2006</year>
<year>2007</year>
+ <year>2008</year>
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
</copyright>
<copyright>
diff --git a/bin/nsupdate/nsupdate.html b/bin/nsupdate/nsupdate.html
index 70173e27..5c74bb72 100644
--- a/bin/nsupdate/nsupdate.html
+++ b/bin/nsupdate/nsupdate.html
@@ -1,5 +1,5 @@
<!--
- - Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ - Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
- Copyright (C) 2000-2003 Internet Software Consortium.
-
- Permission to use, copy, modify, and distribute this software for any
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: nsupdate.html,v 1.37 2007/09/16 08:02:41 marka Exp $ -->
+<!-- $Id: nsupdate.html,v 1.37.56.1 2008/09/01 02:40:04 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -32,7 +32,7 @@
<div class="cmdsynopsis"><p><code class="command">nsupdate</code> [<code class="option">-d</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="id2543426"></a><h2>DESCRIPTION</h2>
+<a name="id2543429"></a><h2>DESCRIPTION</h2>
<p><span><strong class="command">nsupdate</strong></span>
is used to submit Dynamic DNS Update requests as defined in RFC2136
to a name server.
@@ -164,7 +164,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2543674"></a><h2>INPUT FORMAT</h2>
+<a name="id2543677"></a><h2>INPUT FORMAT</h2>
<p><span><strong class="command">nsupdate</strong></span>
reads input from
<em class="parameter"><code>filename</code></em>
@@ -413,7 +413,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2544677"></a><h2>EXAMPLES</h2>
+<a name="id2544475"></a><h2>EXAMPLES</h2>
<p>
The examples below show how
<span><strong class="command">nsupdate</strong></span>
@@ -467,7 +467,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2544721"></a><h2>FILES</h2>
+<a name="id2544519"></a><h2>FILES</h2>
<div class="variablelist"><dl>
<dt><span class="term"><code class="constant">/etc/resolv.conf</code></span></dt>
<dd><p>
@@ -486,7 +486,7 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2544790"></a><h2>SEE ALSO</h2>
+<a name="id2542131"></a><h2>SEE ALSO</h2>
<p><span class="citerefentry"><span class="refentrytitle">RFC2136</span></span>,
<span class="citerefentry"><span class="refentrytitle">RFC3007</span></span>,
<span class="citerefentry"><span class="refentrytitle">RFC2104</span></span>,
@@ -499,7 +499,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2544860"></a><h2>BUGS</h2>
+<a name="id2544864"></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/bin/rndc/rndc.c b/bin/rndc/rndc.c
index 2d4d33c2..19ca9a80 100644
--- a/bin/rndc/rndc.c
+++ b/bin/rndc/rndc.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: rndc.c,v 1.118 2007/06/18 23:47:25 tbox Exp $ */
+/* $Id: rndc.c,v 1.118.128.3 2008/07/23 23:31:17 marka Exp $ */
/*! \file */
@@ -93,7 +93,7 @@ static void
usage(int status) {
fprintf(stderr, "\
Usage: %s [-c config] [-s server] [-p port]\n\
- [-k key-file ] [-y key] [-V] command\n\
+ [-k key-file ] [-y key] [-V] command\n\
\n\
command is one of the following:\n\
\n\
@@ -106,10 +106,10 @@ command is one of the following:\n\
Retransfer a single zone without checking serial number.\n\
freeze Suspend updates to all dynamic zones.\n\
freeze zone [class [view]]\n\
- Suspend updates to a dynamic zone.\n\
+ Suspend updates to a dynamic zone.\n\
thaw Enable updates to all dynamic zones and reload them.\n\
thaw zone [class [view]]\n\
- Enable updates to a frozen dynamic zone and reload it.\n\
+ Enable updates to a frozen dynamic zone and reload it.\n\
notify zone [class [view]]\n\
Resend NOTIFY messages for the zone.\n\
reconfig Reload configuration file and new zones only.\n\
@@ -152,7 +152,7 @@ get_addresses(const char *host, in_port_t port) {
result = isc_sockaddr_frompath(&serveraddrs[nserveraddrs],
host);
if (result == ISC_R_SUCCESS)
- nserveraddrs++;
+ nserveraddrs++;
} else {
count = SERVERADDRS - nserveraddrs;
result = bind9_getaddresses(host, port,
@@ -400,10 +400,10 @@ rndc_startconnect(isc_sockaddr_t *addr, isc_task_t *task) {
DO("create socket", isc_socket_create(socketmgr, pf, type, &sock));
switch (isc_sockaddr_pf(addr)) {
case AF_INET:
- DO("bind socket", isc_socket_bind(sock, &local4));
+ DO("bind socket", isc_socket_bind(sock, &local4, 0));
break;
case AF_INET6:
- DO("bind socket", isc_socket_bind(sock, &local6));
+ DO("bind socket", isc_socket_bind(sock, &local6, 0));
break;
default:
break;
@@ -485,7 +485,7 @@ parse_config(isc_mem_t *mctx, isc_log_t *log, const char *keyname,
(void)cfg_map_get(config, "server", &servers);
if (servers != NULL) {
for (elt = cfg_list_first(servers);
- elt != NULL;
+ elt != NULL;
elt = cfg_list_next(elt))
{
const char *name;
@@ -521,7 +521,7 @@ parse_config(isc_mem_t *mctx, isc_log_t *log, const char *keyname,
else {
DO("get config key list", cfg_map_get(config, "key", &keys));
for (elt = cfg_list_first(keys);
- elt != NULL;
+ elt != NULL;
elt = cfg_list_next(elt))
{
key = cfg_listelt_value(elt);
@@ -599,7 +599,7 @@ parse_config(isc_mem_t *mctx, isc_log_t *log, const char *keyname,
get_addresses(name, (in_port_t) myport);
else
fprintf(stderr, "too many address: "
- "%s: dropped\n", name);
+ "%s: dropped\n", name);
continue;
}
sa = *cfg_obj_assockaddr(address);
@@ -741,7 +741,7 @@ main(int argc, char **argv) {
case 'y':
keyname = isc_commandline_argument;
break;
-
+
case '?':
if (isc_commandline_option != '?') {
fprintf(stderr, "%s: invalid argument -%c\n",
@@ -754,7 +754,7 @@ main(int argc, char **argv) {
default:
fprintf(stderr, "%s: unhandled option -%c\n",
program, isc_commandline_option);
- exit(1);
+ exit(1);
}
}
@@ -780,7 +780,7 @@ main(int argc, char **argv) {
logdest.file.maximum_size = 0;
DO("creating log channel",
isc_log_createchannel(logconfig, "stderr",
- ISC_LOG_TOFILEDESC, ISC_LOG_INFO, &logdest,
+ ISC_LOG_TOFILEDESC, ISC_LOG_INFO, &logdest,
ISC_LOG_PRINTTAG|ISC_LOG_PRINTLEVEL));
DO("enabling log channel", isc_log_usechannel(logconfig, "stderr",
NULL, NULL));
diff --git a/bin/tests/dst/Makefile.in b/bin/tests/dst/Makefile.in
index eeedec48..965e22e6 100644
--- a/bin/tests/dst/Makefile.in
+++ b/bin/tests/dst/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (C) 2004, 2006, 2007 Internet Systems Consortium, Inc. ("ISC")
+# Copyright (C) 2004, 2006-2008 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1999-2002 Internet Software Consortium.
#
# Permission to use, copy, modify, and/or distribute this software for any
@@ -13,7 +13,7 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: Makefile.in,v 1.44 2007/06/19 23:47:00 tbox Exp $
+# $Id: Makefile.in,v 1.44.128.2 2008/08/22 23:46:32 tbox Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -54,7 +54,7 @@ t_dst@EXEEXT@: t_dst.@O@ ${DEPLIBS} ${TLIB}
t_dst.@O@ ${TLIB} ${LIBS}
gsstest@EXEEXT@: gsstest.@O@ ${DEPLIBS}
- ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} -o $@ \
+ ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
gsstest.@O@ ${LIBS}
test: t_dst@EXEEXT@
diff --git a/bin/tests/sig0_test.c b/bin/tests/sig0_test.c
index 8f5c17ef..6025a506 100644
--- a/bin/tests/sig0_test.c
+++ b/bin/tests/sig0_test.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000, 2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: sig0_test.c,v 1.15 2007/06/19 23:46:59 tbox Exp $ */
+/* $Id: sig0_test.c,v 1.15.128.2 2008/07/22 23:46:34 tbox Exp $ */
#include <config.h>
@@ -189,7 +189,7 @@ buildquery(void) {
isc_buffer_usedregion(&qbuffer, &r);
isc_sockaddr_any(&sa);
- result = isc_socket_bind(s, &sa);
+ result = isc_socket_bind(s, &sa, 0);
CHECK("isc_socket_bind", result);
result = isc_socket_sendto(s, &r, task1, senddone, NULL, &address,
NULL);
diff --git a/bin/tests/sock_test.c b/bin/tests/sock_test.c
index ba6beb3e..5539511e 100644
--- a/bin/tests/sock_test.c
+++ b/bin/tests/sock_test.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1998-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: sock_test.c,v 1.52 2007/06/19 23:46:59 tbox Exp $ */
+/* $Id: sock_test.c,v 1.52.128.3 2008/07/23 23:31:17 marka Exp $ */
#include <config.h>
@@ -321,7 +321,7 @@ main(int argc, char *argv[]) {
}
RUNTIME_CHECK(isc_socket_create(socketmgr, pf, isc_sockettype_tcp,
&so1) == ISC_R_SUCCESS);
- result = isc_socket_bind(so1, &sockaddr);
+ result = isc_socket_bind(so1, &sockaddr, ISC_SOCKET_REUSEADDRESS);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
RUNTIME_CHECK(isc_socket_listen(so1, 0) == ISC_R_SUCCESS);
diff --git a/bin/tests/system/acl/tests.sh b/bin/tests/system/acl/tests.sh
index e6ffe531..bf43da09 100644
--- a/bin/tests/system/acl/tests.sh
+++ b/bin/tests/system/acl/tests.sh
@@ -14,7 +14,7 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: tests.sh,v 1.2.2.2 2008/01/10 23:46:34 tbox Exp $
+# $Id: tests.sh,v 1.2.2.3 2008/07/19 00:04:20 each Exp $
SYSTEMTESTTOP=..
. $SYSTEMTESTTOP/conf.sh
@@ -29,13 +29,13 @@ echo "I:testing basic ACL processing"
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.1 axfr -y one:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out || { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 || { echo "I:test $t failed" ; status=1; }
# any other key should be fine
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.1 axfr -y two:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out && { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 && { echo "I:test $t failed" ; status=1; }
cp -f ns2/named2.conf ns2/named.conf
$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
@@ -45,18 +45,18 @@ sleep 5
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.1 axfr -y one:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out || { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 || { echo "I:test $t failed" ; status=1; }
# any other address should work, as long as it sends key "one"
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 127.0.0.1 axfr -y two:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out || { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 || { echo "I:test $t failed" ; status=1; }
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 127.0.0.1 axfr -y one:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out && { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 && { echo "I:test $t failed" ; status=1; }
echo "I:testing nested ACL processing"
# all combinations of 10.53.0.{1|2} with key {one|two}, should succeed
@@ -68,42 +68,42 @@ sleep 5
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.2 axfr -y two:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out && { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 && { echo "I:test $t failed" ; status=1; }
# should succeed
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.2 axfr -y one:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out && { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 && { echo "I:test $t failed" ; status=1; }
# should succeed
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.1 axfr -y two:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out && { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 && { echo "I:test $t failed" ; status=1; }
# should succeed
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.1 axfr -y two:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out && { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 && { echo "I:test $t failed" ; status=1; }
# but only one or the other should fail
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 127.0.0.1 axfr -y one:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out || { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 || { echo "I:test $t failed" ; status=1; }
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.2 axfr -p 5300 > dig.out
-grep -q "^;" dig.out || { echo "I:test $tt failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 || { echo "I:test $tt failed" ; status=1; }
# and other values? right out
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 127.0.0.1 axfr -y three:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out || { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 || { echo "I:test $t failed" ; status=1; }
# now we only allow 10.53.0.1 *and* key one, or 10.53.0.2 *and* key two
cp -f ns2/named4.conf ns2/named.conf
@@ -114,31 +114,31 @@ sleep 5
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.2 axfr -y two:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out && { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 && { echo "I:test $t failed" ; status=1; }
# should succeed
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.1 axfr -y one:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out && { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 && { echo "I:test $t failed" ; status=1; }
# should fail
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.2 axfr -y one:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out || { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 || { echo "I:test $t failed" ; status=1; }
# should fail
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.1 axfr -y two:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out || { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 || { echo "I:test $t failed" ; status=1; }
# should fail
t=`expr $t + 1`
$DIG $DIGOPTS tsigzone. \
@10.53.0.2 -b 10.53.0.3 axfr -y one:1234abcd8765 -p 5300 > dig.out
-grep -q "^;" dig.out || { echo "I:test $t failed" ; status=1; }
+grep "^;" dig.out > /dev/null 2>&1 || { echo "I:test $t failed" ; status=1; }
echo "I:exit status: $status"
exit $status
diff --git a/bin/tests/system/ifconfig.sh b/bin/tests/system/ifconfig.sh
index 0cecbf16..1f65667d 100755
--- a/bin/tests/system/ifconfig.sh
+++ b/bin/tests/system/ifconfig.sh
@@ -15,7 +15,7 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: ifconfig.sh,v 1.51.128.2 2008/03/03 23:46:26 tbox Exp $
+# $Id: ifconfig.sh,v 1.51.128.3 2008/07/25 20:43:57 fdupont Exp $
#
# Set up interface aliases for bind9 system tests.
@@ -72,7 +72,7 @@ case "$1" in
*-sun-solaris2.[6-7])
ifconfig lo0:$int 10.53.0.$ns netmask 0xffffffff up
;;
- *-*-solaris2.[8-9]|*-*-solaris2.10)
+ *-*-solaris2.[8-9]|*-*-solaris2.1[0-9])
/sbin/ifconfig lo0:$int plumb
/sbin/ifconfig lo0:$int 10.53.0.$ns up
;;
@@ -135,7 +135,7 @@ case "$1" in
*-sun-solaris2.[6-7])
ifconfig lo0:$int 10.53.0.$ns down
;;
- *-*-solaris2.[8-9]|*-*-solaris2.10)
+ *-*-solaris2.[8-9]|*-*-solaris2.1[0-9])
ifconfig lo0:$int 10.53.0.$ns down
ifconfig lo0:$int 10.53.0.$ns unplumb
;;
diff --git a/bin/win32/BINDInstall/VersionInfo.cpp b/bin/win32/BINDInstall/VersionInfo.cpp
index f5bab198..e940e9e0 100644
--- a/bin/win32/BINDInstall/VersionInfo.cpp
+++ b/bin/win32/BINDInstall/VersionInfo.cpp
@@ -55,7 +55,7 @@ CVersionInfo::CVersionInfo(CString filename)
{
if(m_versionInfo)
{
- delete m_versionInfo;
+ delete [] m_versionInfo;
m_versionInfo = NULL;
}
return;
@@ -68,7 +68,7 @@ CVersionInfo::CVersionInfo(CString filename)
{
if(m_versionInfo)
{
- delete m_versionInfo;
+ delete [] m_versionInfo;
m_versionInfo = NULL;
}
return;
@@ -89,7 +89,7 @@ CVersionInfo::~CVersionInfo()
m_fixedInfo = NULL;
if(m_versionInfo)
{
- delete m_versionInfo;
+ delete [] m_versionInfo;
m_versionInfo = NULL;
}
}
diff --git a/config.h.in b/config.h.in
index e0fbcfc9..b252ee16 100644
--- a/config.h.in
+++ b/config.h.in
@@ -16,7 +16,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: config.h.in,v 1.90.60.8 2008/05/06 01:32:51 each Exp $ */
+/* $Id: config.h.in,v 1.90.60.9 2008/08/05 07:13:54 marka Exp $ */
/*! \file */
@@ -232,6 +232,12 @@ int sigwait(const unsigned int *set, int *sig);
/* Define to 1 if you have the <sys/capability.h> header file. */
#undef HAVE_SYS_CAPABILITY_H
+/* Define to 1 if you have the <sys/devpoll.h> header file. */
+#undef HAVE_SYS_DEVPOLL_H
+
+/* Define to 1 if you have the <sys/dyntune.h> header file. */
+#undef HAVE_SYS_DYNTUNE_H
+
/* Define to 1 if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
diff --git a/configure b/configure
index e5ef5c4b..2209fa83 100755
--- a/configure
+++ b/configure
@@ -14,7 +14,7 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
-# $Id: configure,v 1.418.60.10 2008/06/24 00:10:49 jinmei Exp $
+# $Id: configure,v 1.418.60.14 2008/08/22 13:25:27 marka Exp $
#
# Portions Copyright (C) 1996-2001 Nominum, Inc.
#
@@ -29,7 +29,7 @@
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# From configure.in Revision: 1.432.60.9 .
+# From configure.in Revision: 1.432.60.13 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61.
#
@@ -1624,6 +1624,9 @@ if test -n "$ac_init_help"; then
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-kqueue use BSD kqueue when available [default=yes]
+ --enable-epoll use Linux epoll when available [default=yes]
+ --enable-devpoll use /dev/poll when available [default=yes]
--enable-openssl-version-check
Check OpenSSL Version [default=yes]
--enable-threads enable multithreading
@@ -5289,7 +5292,16 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#
# check if we have kqueue
#
-{ echo "$as_me:$LINENO: checking for kqueue" >&5
+# Check whether --enable-kqueue was given.
+if test "${enable_kqueue+set}" = set; then
+ enableval=$enable_kqueue; want_kqueue="$enableval"
+else
+ want_kqueue="yes"
+fi
+
+case $want_kqueue in
+yes)
+ { echo "$as_me:$LINENO: checking for kqueue" >&5
echo $ECHO_N "checking for kqueue... $ECHO_C" >&6; }
if test "${ac_cv_func_kqueue+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5376,9 +5388,14 @@ else
ac_cv_have_kqueue=no
fi
-case $ac_cv_have_kqueue in
-yes)
- ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
+ case $ac_cv_have_kqueue in
+ yes)
+ ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
+ ;;
+ *)
+ ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
+ ;;
+ esac
;;
*)
ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
@@ -5387,12 +5404,26 @@ esac
#
-# check if we have epoll
+# check if we have epoll. Linux kernel 2.4 has epoll_create() which fails,
+# so we need to try running the code, not just test its existence.
#
-{ echo "$as_me:$LINENO: checking for epoll_create" >&5
-echo $ECHO_N "checking for epoll_create... $ECHO_C" >&6; }
-if test "${ac_cv_func_epoll_create+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+# Check whether --enable-epoll was given.
+if test "${enable_epoll+set}" = set; then
+ enableval=$enable_epoll; want_epoll="$enableval"
+else
+ want_epoll="yes"
+fi
+
+case $want_epoll in
+yes)
+ { echo "$as_me:$LINENO: checking epoll support" >&5
+echo $ECHO_N "checking epoll support... $ECHO_C" >&6; }
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -5400,85 +5431,52 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-/* Define epoll_create to an innocuous variant, in case <limits.h> declares epoll_create.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define epoll_create innocuous_epoll_create
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char epoll_create (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef epoll_create
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char epoll_create ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_epoll_create || defined __stub___epoll_create
-choke me
-#endif
-int
-main ()
-{
-return epoll_create ();
- ;
- return 0;
+#include <sys/epoll.h>
+int main() {
+ if (epoll_create(1) < 0)
+ return (1);
+ return (0);
}
+
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
+rm -f conftest$ac_exeext
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
- (eval "$ac_link") 2>conftest.er1
+ (eval "$ac_link") 2>&5
ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext &&
- $as_test_x conftest$ac_exeext; then
- ac_cv_func_epoll_create=yes
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"
else
- echo "$as_me: failed program was:" >&5
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_cv_func_epoll_create=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
+( exit $ac_status )
+{ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_epoll_create" >&5
-echo "${ECHO_T}$ac_cv_func_epoll_create" >&6; }
-if test $ac_cv_func_epoll_create = yes; then
- ac_cv_have_epoll=yes
-else
- ac_cv_have_epoll=no
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-case $ac_cv_have_epoll in
-yes)
- ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"
+
;;
*)
ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"
@@ -5489,6 +5487,15 @@ esac
#
# check if we support /dev/poll
#
+# Check whether --enable-devpoll was given.
+if test "${enable_devpoll+set}" = set; then
+ enableval=$enable_devpoll; want_devpoll="$enableval"
+else
+ want_devpoll="yes"
+fi
+
+case $want_devpoll in
+yes)
for ac_header in sys/devpoll.h
do
@@ -5633,6 +5640,11 @@ fi
done
+ ;;
+*)
+ ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
+ ;;
+esac
#
@@ -9942,7 +9954,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 9945 "configure"' > conftest.$ac_ext
+ echo '#line 9957 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -12064,11 +12076,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12067: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12079: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:12071: \$? = $ac_status" >&5
+ echo "$as_me:12083: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -12307,11 +12319,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12310: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12322: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:12314: \$? = $ac_status" >&5
+ echo "$as_me:12326: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -12367,11 +12379,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12370: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12382: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:12374: \$? = $ac_status" >&5
+ echo "$as_me:12386: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14515,7 +14527,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 14518 "configure"
+#line 14530 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -14613,7 +14625,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 14616 "configure"
+#line 14628 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -16806,11 +16818,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16809: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16821: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16813: \$? = $ac_status" >&5
+ echo "$as_me:16825: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -16866,11 +16878,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16869: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16881: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16873: \$? = $ac_status" >&5
+ echo "$as_me:16885: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -18194,7 +18206,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 18197 "configure"
+#line 18209 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -18292,7 +18304,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 18295 "configure"
+#line 18307 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -19129,11 +19141,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:19132: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:19144: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:19136: \$? = $ac_status" >&5
+ echo "$as_me:19148: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -19189,11 +19201,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:19192: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:19204: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:19196: \$? = $ac_status" >&5
+ echo "$as_me:19208: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -21223,11 +21235,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:21226: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:21238: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:21230: \$? = $ac_status" >&5
+ echo "$as_me:21242: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -21466,11 +21478,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:21469: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:21481: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:21473: \$? = $ac_status" >&5
+ echo "$as_me:21485: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -21526,11 +21538,11 @@ else
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:21529: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:21541: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:21533: \$? = $ac_status" >&5
+ echo "$as_me:21545: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -23674,7 +23686,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 23677 "configure"
+#line 23689 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -23772,7 +23784,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 23775 "configure"
+#line 23787 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -28737,6 +28749,157 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#
+# Older HP-UX doesn't have gettune
+#
+case "$host" in
+ *-hp-hpux*)
+
+for ac_header in sys/dyntune.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ ;;
+ *)
+ ;;
+esac
+
+
+#
# Compaq TruCluster requires more code for handling cluster IP aliases
#
case "$host" in
@@ -28947,7 +29110,7 @@ case "$host" in
*-solaris2.[89])
hack_shutup_pthreadonceinit=yes
;;
- *-solaris2.10)
+ *-solaris2.1[0-9])
hack_shutup_pthreadonceinit=yes
;;
esac
diff --git a/configure.in b/configure.in
index 5ee7a599..e79f707d 100644
--- a/configure.in
+++ b/configure.in
@@ -18,7 +18,7 @@ AC_DIVERT_PUSH(1)dnl
esyscmd([sed "s/^/# /" COPYRIGHT])dnl
AC_DIVERT_POP()dnl
-AC_REVISION($Revision: 1.432.60.10 $)
+AC_REVISION($Revision: 1.432.60.13 $)
AC_INIT(lib/dns/name.c)
AC_PREREQ(2.59)
@@ -320,10 +320,20 @@ AC_SUBST(ISC_PLATFORM_HAVELIFCONF)
#
# check if we have kqueue
#
-AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no)
-case $ac_cv_have_kqueue in
+AC_ARG_ENABLE(kqueue,
+ [ --enable-kqueue use BSD kqueue when available [[default=yes]]],
+ want_kqueue="$enableval", want_kqueue="yes")
+case $want_kqueue in
yes)
- ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
+ AC_CHECK_FUNC(kqueue, ac_cv_have_kqueue=yes, ac_cv_have_kqueue=no)
+ case $ac_cv_have_kqueue in
+ yes)
+ ISC_PLATFORM_HAVEKQUEUE="#define ISC_PLATFORM_HAVEKQUEUE 1"
+ ;;
+ *)
+ ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
+ ;;
+ esac
;;
*)
ISC_PLATFORM_HAVEKQUEUE="#undef ISC_PLATFORM_HAVEKQUEUE"
@@ -332,12 +342,27 @@ esac
AC_SUBST(ISC_PLATFORM_HAVEKQUEUE)
#
-# check if we have epoll
+# check if we have epoll. Linux kernel 2.4 has epoll_create() which fails,
+# so we need to try running the code, not just test its existence.
#
-AC_CHECK_FUNC(epoll_create, ac_cv_have_epoll=yes, ac_cv_have_epoll=no)
-case $ac_cv_have_epoll in
+AC_ARG_ENABLE(epoll,
+ [ --enable-epoll use Linux epoll when available [[default=yes]]],
+ want_epoll="$enableval", want_epoll="yes")
+case $want_epoll in
yes)
- ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"
+ AC_MSG_CHECKING(epoll support)
+ AC_TRY_RUN([
+#include <sys/epoll.h>
+int main() {
+ if (epoll_create(1) < 0)
+ return (1);
+ return (0);
+}
+],
+ [AC_MSG_RESULT(yes)
+ ISC_PLATFORM_HAVEEPOLL="#define ISC_PLATFORM_HAVEEPOLL 1"],
+ [AC_MSG_RESULT(no)
+ ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"])
;;
*)
ISC_PLATFORM_HAVEEPOLL="#undef ISC_PLATFORM_HAVEEPOLL"
@@ -348,11 +373,21 @@ AC_SUBST(ISC_PLATFORM_HAVEEPOLL)
#
# check if we support /dev/poll
#
-AC_CHECK_HEADERS(sys/devpoll.h,
-ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1"
-,
-ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
-)
+AC_ARG_ENABLE(devpoll,
+ [ --enable-devpoll use /dev/poll when available [[default=yes]]],
+ want_devpoll="$enableval", want_devpoll="yes")
+case $want_devpoll in
+yes)
+ AC_CHECK_HEADERS(sys/devpoll.h,
+ ISC_PLATFORM_HAVEDEVPOLL="#define ISC_PLATFORM_HAVEDEVPOLL 1"
+ ,
+ ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
+ )
+ ;;
+*)
+ ISC_PLATFORM_HAVEDEVPOLL="#undef ISC_PLATFORM_HAVEDEVPOLL"
+ ;;
+esac
AC_SUBST(ISC_PLATFORM_HAVEDEVPOLL)
#
@@ -2008,6 +2043,18 @@ AC_MSG_RESULT(cannot determine type of rlim_cur when cross compiling - assuming
AC_SUBST(ISC_PLATFORM_RLIMITTYPE)
#
+# Older HP-UX doesn't have gettune
+#
+case "$host" in
+ *-hp-hpux*)
+ AC_CHECK_HEADERS(sys/dyntune.h)
+ ;;
+ *)
+ ;;
+esac
+
+
+#
# Compaq TruCluster requires more code for handling cluster IP aliases
#
case "$host" in
@@ -2065,7 +2112,7 @@ case "$host" in
[*-solaris2.[89]])
hack_shutup_pthreadonceinit=yes
;;
- *-solaris2.10)
+ *-solaris2.1[[0-9]])
hack_shutup_pthreadonceinit=yes
;;
esac
diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
index c7e75484..29057087 100644
--- a/doc/arm/Bv9ARM-book.xml
+++ b/doc/arm/Bv9ARM-book.xml
@@ -18,7 +18,7 @@
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- File: $Id: Bv9ARM-book.xml,v 1.340.24.13 2008/06/24 00:09:11 jinmei Exp $ -->
+<!-- File: $Id: Bv9ARM-book.xml,v 1.340.24.17 2008/09/11 22:59:08 each Exp $ -->
<book xmlns:xi="http://www.w3.org/2001/XInclude">
<title>BIND 9 Administrator Reference Manual</title>
@@ -639,13 +639,11 @@
<title>Supported Operating Systems</title>
<para>
ISC <acronym>BIND</acronym> 9 compiles and runs on a large
- number
- of Unix-like operating system and on NT-derived versions of
- Microsoft Windows such as Windows 2000 and Windows XP. For an
- up-to-date
- list of supported systems, see the README file in the top level
- directory
- of the BIND 9 source distribution.
+ number of Unix-like operating systems, and on some versions of
+ Microsoft Windows including Windows XP, Windows 2003, and
+ Windows 2008. For an up-to-date list of supported systems,
+ see the README file in the top level directory of the BIND 9
+ source distribution.
</para>
</sect1>
</chapter>
@@ -4541,6 +4539,7 @@ category notify { null; };
<optional> max-transfer-idle-in <replaceable>number</replaceable>; </optional>
<optional> max-transfer-idle-out <replaceable>number</replaceable>; </optional>
<optional> tcp-clients <replaceable>number</replaceable>; </optional>
+ <optional> reserved-sockets <replaceable>number</replaceable>; </optional>
<optional> recursive-clients <replaceable>number</replaceable>; </optional>
<optional> serial-query-rate <replaceable>number</replaceable>; </optional>
<optional> serial-queries <replaceable>number</replaceable>; </optional>
@@ -6943,6 +6942,25 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
</varlistentry>
<varlistentry>
+ <term><command>reserved-sockets</command></term>
+ <listitem>
+ <para>
+ The number of file descriptors reserved for TCP, stdio,
+ etc. This needs to be big enough to cover the number of
+ interfaces named listens on, tcp-clients as well as
+ to provide room for outgoing TCP queries and incoming zone
+ transfers. The default is <literal>512</literal>.
+ The minimum value is <literal>128</literal> and the
+ maximum value is <literal>128</literal> less than
+ maxsockets (-S). This option may be removed in the future.
+ </para>
+ <para>
+ This option has little effect on Windows.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><command>max-cache-size</command></term>
<listitem>
<para>
@@ -8244,7 +8262,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
<para>
Zones defined within a <command>view</command>
statement will
- be only be accessible to clients that match the <command>view</command>.
+ only be accessible to clients that match the <command>view</command>.
By defining a zone of the same name in multiple views, different
zone data can be given to different clients, for example,
"internal"
@@ -12020,9 +12038,6 @@ $GENERATE 1-127 $ CNAME $.0</programlisting>
<entry colname="3">
<para>
Mismatch responses received.
- When shown via an HTTP statistics channel,
- this counter is shown in the
- Name Server Statistics section for brevity.
</para>
</entry>
</row>
diff --git a/doc/arm/Bv9ARM.ch02.html b/doc/arm/Bv9ARM.ch02.html
index 63bd7756..17a80f62 100644
--- a/doc/arm/Bv9ARM.ch02.html
+++ b/doc/arm/Bv9ARM.ch02.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: Bv9ARM.ch02.html,v 1.35.18.3 2008/05/29 01:41:57 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch02.html,v 1.35.18.5 2008/09/12 01:43:01 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -127,13 +127,11 @@
<a name="id2567862"></a>Supported Operating Systems</h2></div></div></div>
<p>
ISC <acronym class="acronym">BIND</acronym> 9 compiles and runs on a large
- number
- of Unix-like operating system and on NT-derived versions of
- Microsoft Windows such as Windows 2000 and Windows XP. For an
- up-to-date
- list of supported systems, see the README file in the top level
- directory
- of the BIND 9 source distribution.
+ number of Unix-like operating systems, and on some versions of
+ Microsoft Windows including Windows XP, Windows 2003, and
+ Windows 2008. For an up-to-date list of supported systems,
+ see the README file in the top level directory of the BIND 9
+ source distribution.
</p>
</div>
</div>
diff --git a/doc/arm/Bv9ARM.ch06.html b/doc/arm/Bv9ARM.ch06.html
index fc03575f..64d0448d 100644
--- a/doc/arm/Bv9ARM.ch06.html
+++ b/doc/arm/Bv9ARM.ch06.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: Bv9ARM.ch06.html,v 1.168.18.17 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch06.html,v 1.168.18.19 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -75,32 +75,32 @@
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#options"><span><strong class="command">options</strong></span> Statement Definition and
Usage</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#statschannels"><span><strong class="command">statistics-channels</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585194"><span><strong class="command">statistics-channels</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585298"><span><strong class="command">statistics-channels</strong></span> Statement Definition and
Usage</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_grammar"><span><strong class="command">server</strong></span> Statement Grammar</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_definition_and_usage"><span><strong class="command">server</strong></span> Statement Definition and
Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585878"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585929"><span><strong class="command">trusted-keys</strong></span> Statement Definition
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585913"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585964"><span><strong class="command">trusted-keys</strong></span> Statement Definition
and Usage</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#view_statement_grammar"><span><strong class="command">view</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2586080"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2586115"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#zone_statement_grammar"><span><strong class="command">zone</strong></span>
Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2587504"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2587539"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt>
</dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2589714">Zone File</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2589885">Zone File</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them">Types of Resource Records and When to Use Them</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591965">Discussion of MX Records</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592069">Discussion of MX Records</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#Setting_TTLs">Setting TTLs</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592585">Inverse Mapping in IPv4</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592712">Other Zone File Directives</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592901"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592689">Inverse Mapping in IPv4</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592884">Other Zone File Directives</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2593073"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#zonefile_format">Additional File Formats</a></span></dt>
</dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2593437">BIND9 Statistics</a></span></dt>
-<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2593854">Statistics Counters</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2593609">BIND9 Statistics</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2594026">Statistics Counters</a></span></dt></dl></dd>
</dl>
</div>
<p>
@@ -1894,6 +1894,7 @@ category notify { null; };
[<span class="optional"> max-transfer-idle-in <em class="replaceable"><code>number</code></em>; </span>]
[<span class="optional"> max-transfer-idle-out <em class="replaceable"><code>number</code></em>; </span>]
[<span class="optional"> tcp-clients <em class="replaceable"><code>number</code></em>; </span>]
+ [<span class="optional"> reserved-sockets <em class="replaceable"><code>number</code></em>; </span>]
[<span class="optional"> recursive-clients <em class="replaceable"><code>number</code></em>; </span>]
[<span class="optional"> serial-query-rate <em class="replaceable"><code>number</code></em>; </span>]
[<span class="optional"> serial-queries <em class="replaceable"><code>number</code></em>; </span>]
@@ -2917,7 +2918,7 @@ options {
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2580951"></a>Forwarding</h4></div></div></div>
+<a name="id2580957"></a>Forwarding</h4></div></div></div>
<p>
The forwarding facility can be used to create a large site-wide
cache on a few servers, reducing traffic over links to external
@@ -2961,7 +2962,7 @@ options {
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2581010"></a>Dual-stack Servers</h4></div></div></div>
+<a name="id2581016"></a>Dual-stack Servers</h4></div></div></div>
<p>
Dual-stack servers are used as servers of last resort to work
around
@@ -3157,7 +3158,7 @@ options {
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2581506"></a>Interfaces</h4></div></div></div>
+<a name="id2581512"></a>Interfaces</h4></div></div></div>
<p>
The interfaces and ports that the server will answer queries
from may be specified using the <span><strong class="command">listen-on</strong></span> option. <span><strong class="command">listen-on</strong></span> takes
@@ -3602,7 +3603,7 @@ avoid-v6-udp-ports {};
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2582761"></a>UDP Port Lists</h4></div></div></div>
+<a name="id2582768"></a>UDP Port Lists</h4></div></div></div>
<p>
<span><strong class="command">use-v4-udp-ports</strong></span>,
<span><strong class="command">avoid-v4-udp-ports</strong></span>,
@@ -3644,7 +3645,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2582821"></a>Operating System Resource Limits</h4></div></div></div>
+<a name="id2582827"></a>Operating System Resource Limits</h4></div></div></div>
<p>
The server's usage of many system resources can be limited.
Scaled values are allowed when specifying resource limits. For
@@ -3703,7 +3704,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2582936"></a>Server Resource Limits</h4></div></div></div>
+<a name="id2582942"></a>Server Resource Limits</h4></div></div></div>
<p>
The following options set limits on the server's
resource consumption that are enforced internally by the
@@ -3752,6 +3753,22 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
connections that the server will accept.
The default is <code class="literal">100</code>.
</p></dd>
+<dt><span class="term"><span><strong class="command">reserved-sockets</strong></span></span></dt>
+<dd>
+<p>
+ The number of file descriptors reserved for TCP, stdio,
+ etc. This needs to be big enough to cover the number of
+ interfaces named listens on, tcp-clients as well as
+ to provide room for outgoing TCP queries and incoming zone
+ transfers. The default is <code class="literal">512</code>.
+ The minimum value is <code class="literal">128</code> and the
+ maximum value is <code class="literal">128</code> less than
+ maxsockets (-S). This option may be removed in the future.
+ </p>
+<p>
+ This option has little effect on Windows.
+ </p>
+</dd>
<dt><span class="term"><span><strong class="command">max-cache-size</strong></span></span></dt>
<dd><p>
The maximum amount of memory to use for the
@@ -3779,7 +3796,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2583069"></a>Periodic Task Intervals</h4></div></div></div>
+<a name="id2583105"></a>Periodic Task Intervals</h4></div></div></div>
<div class="variablelist"><dl>
<dt><span class="term"><span><strong class="command">cleaning-interval</strong></span></span></dt>
<dd><p>
@@ -4532,7 +4549,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2585194"></a><span><strong class="command">statistics-channels</strong></span> Statement Definition and
+<a name="id2585298"></a><span><strong class="command">statistics-channels</strong></span> Statement Definition and
Usage</h3></div></div></div>
<p>
The <span><strong class="command">statistics-channels</strong></span> statement
@@ -4777,7 +4794,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2585878"></a><span><strong class="command">trusted-keys</strong></span> Statement Grammar</h3></div></div></div>
+<a name="id2585913"></a><span><strong class="command">trusted-keys</strong></span> Statement Grammar</h3></div></div></div>
<pre class="programlisting"><span><strong class="command">trusted-keys</strong></span> {
<em class="replaceable"><code>string</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>string</code></em> ;
[<span class="optional"> <em class="replaceable"><code>string</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>number</code></em> <em class="replaceable"><code>string</code></em> ; [<span class="optional">...</span>]</span>]
@@ -4786,7 +4803,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2585929"></a><span><strong class="command">trusted-keys</strong></span> Statement Definition
+<a name="id2585964"></a><span><strong class="command">trusted-keys</strong></span> Statement Definition
and Usage</h3></div></div></div>
<p>
The <span><strong class="command">trusted-keys</strong></span> statement defines
@@ -4829,7 +4846,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2586080"></a><span><strong class="command">view</strong></span> Statement Definition and Usage</h3></div></div></div>
+<a name="id2586115"></a><span><strong class="command">view</strong></span> Statement Definition and Usage</h3></div></div></div>
<p>
The <span><strong class="command">view</strong></span> statement is a powerful
feature
@@ -4870,7 +4887,7 @@ avoid-v6-udp-ports { 40000; range 50000 60000; };
<p>
Zones defined within a <span><strong class="command">view</strong></span>
statement will
- be only be accessible to clients that match the <span><strong class="command">view</strong></span>.
+ only be accessible to clients that match the <span><strong class="command">view</strong></span>.
By defining a zone of the same name in multiple views, different
zone data can be given to different clients, for example,
"internal"
@@ -5088,10 +5105,10 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2587504"></a><span><strong class="command">zone</strong></span> Statement Definition and Usage</h3></div></div></div>
+<a name="id2587539"></a><span><strong class="command">zone</strong></span> Statement Definition and Usage</h3></div></div></div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2587511"></a>Zone Types</h4></div></div></div>
+<a name="id2587546"></a>Zone Types</h4></div></div></div>
<div class="informaltable"><table border="1">
<colgroup>
<col>
@@ -5300,7 +5317,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2588067"></a>Class</h4></div></div></div>
+<a name="id2588102"></a>Class</h4></div></div></div>
<p>
The zone's name may optionally be followed by a class. If
a class is not specified, class <code class="literal">IN</code> (for <code class="varname">Internet</code>),
@@ -5322,7 +5339,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2588100"></a>Zone Options</h4></div></div></div>
+<a name="id2588203"></a>Zone Options</h4></div></div></div>
<div class="variablelist"><dl>
<dt><span class="term"><span><strong class="command">allow-notify</strong></span></span></dt>
<dd><p>
@@ -5823,7 +5840,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2589714"></a>Zone File</h2></div></div></div>
+<a name="id2589885"></a>Zone File</h2></div></div></div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="types_of_resource_records_and_when_to_use_them"></a>Types of Resource Records and When to Use Them</h3></div></div></div>
@@ -5836,7 +5853,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</p>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2589732"></a>Resource Records</h4></div></div></div>
+<a name="id2589904"></a>Resource Records</h4></div></div></div>
<p>
A domain name identifies a node. Each node has a set of
resource information, which may be empty. The set of resource
@@ -6539,7 +6556,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2591377"></a>Textual expression of RRs</h4></div></div></div>
+<a name="id2591480"></a>Textual expression of RRs</h4></div></div></div>
<p>
RRs are represented in binary form in the packets of the DNS
protocol, and are usually represented in highly encoded form
@@ -6742,7 +6759,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2591965"></a>Discussion of MX Records</h3></div></div></div>
+<a name="id2592069"></a>Discussion of MX Records</h3></div></div></div>
<p>
As described above, domain servers store information as a
series of resource records, each of which contains a particular
@@ -7000,7 +7017,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2592585"></a>Inverse Mapping in IPv4</h3></div></div></div>
+<a name="id2592689"></a>Inverse Mapping in IPv4</h3></div></div></div>
<p>
Reverse name resolution (that is, translation from IP address
to name) is achieved by means of the <span class="emphasis"><em>in-addr.arpa</em></span> domain
@@ -7061,7 +7078,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2592712"></a>Other Zone File Directives</h3></div></div></div>
+<a name="id2592884"></a>Other Zone File Directives</h3></div></div></div>
<p>
The Master File Format was initially defined in RFC 1035 and
has subsequently been extended. While the Master File Format
@@ -7076,7 +7093,7 @@ zone <em class="replaceable"><code>zone_name</code></em> [<span class="optional"
</p>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2592734"></a>The <span><strong class="command">$ORIGIN</strong></span> Directive</h4></div></div></div>
+<a name="id2592906"></a>The <span><strong class="command">$ORIGIN</strong></span> Directive</h4></div></div></div>
<p>
Syntax: <span><strong class="command">$ORIGIN</strong></span>
<em class="replaceable"><code>domain-name</code></em>
@@ -7104,7 +7121,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2592795"></a>The <span><strong class="command">$INCLUDE</strong></span> Directive</h4></div></div></div>
+<a name="id2592967"></a>The <span><strong class="command">$INCLUDE</strong></span> Directive</h4></div></div></div>
<p>
Syntax: <span><strong class="command">$INCLUDE</strong></span>
<em class="replaceable"><code>filename</code></em>
@@ -7140,7 +7157,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2592865"></a>The <span><strong class="command">$TTL</strong></span> Directive</h4></div></div></div>
+<a name="id2593036"></a>The <span><strong class="command">$TTL</strong></span> Directive</h4></div></div></div>
<p>
Syntax: <span><strong class="command">$TTL</strong></span>
<em class="replaceable"><code>default-ttl</code></em>
@@ -7159,7 +7176,7 @@ WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2592901"></a><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</h3></div></div></div>
+<a name="id2593073"></a><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</h3></div></div></div>
<p>
Syntax: <span><strong class="command">$GENERATE</strong></span>
<em class="replaceable"><code>range</code></em>
@@ -7364,7 +7381,7 @@ $GENERATE 1-127 $ CNAME $.0</pre>
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2593437"></a>BIND9 Statistics</h2></div></div></div>
+<a name="id2593609"></a>BIND9 Statistics</h2></div></div></div>
<p>
<acronym class="acronym">BIND</acronym> 9 maintains lots of statistics
information and provides several interfaces for users to
@@ -7521,7 +7538,7 @@ $GENERATE 1-127 $ CNAME $.0</pre>
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2593854"></a>Statistics Counters</h3></div></div></div>
+<a name="id2594026"></a>Statistics Counters</h3></div></div></div>
<p>
The following tables summarize statistics counters that
<acronym class="acronym">BIND</acronym> 9 provides.
@@ -7540,7 +7557,7 @@ $GENERATE 1-127 $ CNAME $.0</pre>
</p>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2593870"></a>Name Server Statistics Counters</h4></div></div></div>
+<a name="id2594042"></a>Name Server Statistics Counters</h4></div></div></div>
<div class="informaltable"><table border="1">
<colgroup>
<col>
@@ -8081,7 +8098,7 @@ $GENERATE 1-127 $ CNAME $.0</pre>
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2595394"></a>Zone Maintenance Statistics Counters</h4></div></div></div>
+<a name="id2595497"></a>Zone Maintenance Statistics Counters</h4></div></div></div>
<div class="informaltable"><table border="1">
<colgroup>
<col>
@@ -8235,7 +8252,7 @@ $GENERATE 1-127 $ CNAME $.0</pre>
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2595845"></a>Resolver Statistics Counters</h4></div></div></div>
+<a name="id2595948"></a>Resolver Statistics Counters</h4></div></div></div>
<div class="informaltable"><table border="1">
<colgroup>
<col>
@@ -8387,9 +8404,6 @@ $GENERATE 1-127 $ CNAME $.0</pre>
<td>
<p>
Mismatch responses received.
- When shown via an HTTP statistics channel,
- this counter is shown in the
- Name Server Statistics section for brevity.
</p>
</td>
</tr>
@@ -8541,7 +8555,7 @@ $GENERATE 1-127 $ CNAME $.0</pre>
</div>
<div class="sect3" lang="en">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2596698"></a>Compatibility with <span class="emphasis"><em>BIND</em></span> 8 Counters</h4></div></div></div>
+<a name="id2596802"></a>Compatibility with <span class="emphasis"><em>BIND</em></span> 8 Counters</h4></div></div></div>
<p>
Most statistics counters that were available
in <span><strong class="command">BIND</strong></span> 8 are also supported in
diff --git a/doc/arm/Bv9ARM.ch07.html b/doc/arm/Bv9ARM.ch07.html
index be2048ea..cd803113 100644
--- a/doc/arm/Bv9ARM.ch07.html
+++ b/doc/arm/Bv9ARM.ch07.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: Bv9ARM.ch07.html,v 1.152.18.14 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch07.html,v 1.152.18.16 2008/09/05 01:42:59 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -46,10 +46,10 @@
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="sect1"><a href="Bv9ARM.ch07.html#Access_Control_Lists">Access Control Lists</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2596886"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2596989"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt>
<dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2597031">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2597091">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2597066">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2597126">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="Bv9ARM.ch07.html#dynamic_update_security">Dynamic Update Security</a></span></dt>
</dl>
@@ -119,7 +119,7 @@ zone "example.com" {
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2596886"></a><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span>
+<a name="id2596989"></a><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span>
</h2></div></div></div>
<p>
On UNIX servers, it is possible to run <acronym class="acronym">BIND</acronym> in a <span class="emphasis"><em>chrooted</em></span> environment
@@ -143,7 +143,7 @@ zone "example.com" {
</p>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2597031"></a>The <span><strong class="command">chroot</strong></span> Environment</h3></div></div></div>
+<a name="id2597066"></a>The <span><strong class="command">chroot</strong></span> Environment</h3></div></div></div>
<p>
In order for a <span><strong class="command">chroot</strong></span> environment
to
@@ -171,7 +171,7 @@ zone "example.com" {
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2597091"></a>Using the <span><strong class="command">setuid</strong></span> Function</h3></div></div></div>
+<a name="id2597126"></a>Using the <span><strong class="command">setuid</strong></span> Function</h3></div></div></div>
<p>
Prior to running the <span><strong class="command">named</strong></span> daemon,
use
diff --git a/doc/arm/Bv9ARM.ch08.html b/doc/arm/Bv9ARM.ch08.html
index ecc993d6..407e91a0 100644
--- a/doc/arm/Bv9ARM.ch08.html
+++ b/doc/arm/Bv9ARM.ch08.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: Bv9ARM.ch08.html,v 1.153.18.14 2008/06/24 01:42:13 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch08.html,v 1.153.18.16 2008/09/05 01:42:59 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -45,18 +45,18 @@
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597239">Common Problems</a></span></dt>
-<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2597244">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597256">Incrementing and Changing the Serial Number</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597341">Where Can I Get Help?</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597411">Common Problems</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2597416">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597428">Incrementing and Changing the Serial Number</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597445">Where Can I Get Help?</a></span></dt>
</dl>
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2597239"></a>Common Problems</h2></div></div></div>
+<a name="id2597411"></a>Common Problems</h2></div></div></div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2597244"></a>It's not working; how can I figure out what's wrong?</h3></div></div></div>
+<a name="id2597416"></a>It's not working; how can I figure out what's wrong?</h3></div></div></div>
<p>
The best solution to solving installation and
configuration issues is to take preventative measures by setting
@@ -68,7 +68,7 @@
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2597256"></a>Incrementing and Changing the Serial Number</h2></div></div></div>
+<a name="id2597428"></a>Incrementing and Changing the Serial Number</h2></div></div></div>
<p>
Zone serial numbers are just numbers &#8212; they aren't
date related. A lot of people set them to a number that
@@ -95,7 +95,7 @@
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2597341"></a>Where Can I Get Help?</h2></div></div></div>
+<a name="id2597445"></a>Where Can I Get Help?</h2></div></div></div>
<p>
The Internet Systems Consortium
(<acronym class="acronym">ISC</acronym>) offers a wide range
diff --git a/doc/arm/Bv9ARM.ch09.html b/doc/arm/Bv9ARM.ch09.html
index 10ef3f1c..390ee438 100644
--- a/doc/arm/Bv9ARM.ch09.html
+++ b/doc/arm/Bv9ARM.ch09.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: Bv9ARM.ch09.html,v 1.154.18.14 2008/06/24 01:42:13 tbox Exp $ -->
+<!-- $Id: Bv9ARM.ch09.html,v 1.154.18.16 2008/09/05 01:42:59 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -45,21 +45,21 @@
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2597403">Acknowledgments</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2597507">Acknowledgments</a></span></dt>
<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#historical_dns_information">A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></a></span></dt></dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2597575">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2597678">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt>
<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#ipv6addresses">IPv6 addresses (AAAA)</a></span></dt></dl></dd>
<dt><span class="sect1"><a href="Bv9ARM.ch09.html#bibliography">Bibliography (and Suggested Reading)</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="Bv9ARM.ch09.html#rfcs">Request for Comments (RFCs)</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch09.html#internet_drafts">Internet Drafts</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2600787">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2600958">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt>
</dl></dd>
</dl>
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2597403"></a>Acknowledgments</h2></div></div></div>
+<a name="id2597507"></a>Acknowledgments</h2></div></div></div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="historical_dns_information"></a>A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym>
@@ -164,7 +164,7 @@
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id2597575"></a>General <acronym class="acronym">DNS</acronym> Reference Information</h2></div></div></div>
+<a name="id2597678"></a>General <acronym class="acronym">DNS</acronym> Reference Information</h2></div></div></div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="ipv6addresses"></a>IPv6 addresses (AAAA)</h3></div></div></div>
@@ -252,17 +252,17 @@
</p>
<div class="bibliography">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2597763"></a>Bibliography</h4></div></div></div>
+<a name="id2597934"></a>Bibliography</h4></div></div></div>
<div class="bibliodiv">
<h3 class="title">Standards</h3>
<div class="biblioentry">
-<a name="id2597773"></a><p>[<abbr class="abbrev">RFC974</abbr>] <span class="author"><span class="firstname">C.</span> <span class="surname">Partridge</span>. </span><span class="title"><i>Mail Routing and the Domain System</i>. </span><span class="pubdate">January 1986. </span></p>
+<a name="id2597945"></a><p>[<abbr class="abbrev">RFC974</abbr>] <span class="author"><span class="firstname">C.</span> <span class="surname">Partridge</span>. </span><span class="title"><i>Mail Routing and the Domain System</i>. </span><span class="pubdate">January 1986. </span></p>
</div>
<div class="biblioentry">
-<a name="id2597797"></a><p>[<abbr class="abbrev">RFC1034</abbr>] <span class="author"><span class="firstname">P.V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names &#8212; Concepts and Facilities</i>. </span><span class="pubdate">November 1987. </span></p>
+<a name="id2597969"></a><p>[<abbr class="abbrev">RFC1034</abbr>] <span class="author"><span class="firstname">P.V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names &#8212; Concepts and Facilities</i>. </span><span class="pubdate">November 1987. </span></p>
</div>
<div class="biblioentry">
-<a name="id2597820"></a><p>[<abbr class="abbrev">RFC1035</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names &#8212; Implementation and
+<a name="id2597992"></a><p>[<abbr class="abbrev">RFC1035</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>Domain Names &#8212; Implementation and
Specification</i>. </span><span class="pubdate">November 1987. </span></p>
</div>
</div>
@@ -270,42 +270,42 @@
<h3 class="title">
<a name="proposed_standards"></a>Proposed Standards</h3>
<div class="biblioentry">
-<a name="id2597857"></a><p>[<abbr class="abbrev">RFC2181</abbr>] <span class="author"><span class="firstname">R., R. Bush</span> <span class="surname">Elz</span>. </span><span class="title"><i>Clarifications to the <acronym class="acronym">DNS</acronym>
+<a name="id2598028"></a><p>[<abbr class="abbrev">RFC2181</abbr>] <span class="author"><span class="firstname">R., R. Bush</span> <span class="surname">Elz</span>. </span><span class="title"><i>Clarifications to the <acronym class="acronym">DNS</acronym>
Specification</i>. </span><span class="pubdate">July 1997. </span></p>
</div>
<div class="biblioentry">
-<a name="id2597883"></a><p>[<abbr class="abbrev">RFC2308</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Andrews</span>. </span><span class="title"><i>Negative Caching of <acronym class="acronym">DNS</acronym>
+<a name="id2598055"></a><p>[<abbr class="abbrev">RFC2308</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Andrews</span>. </span><span class="title"><i>Negative Caching of <acronym class="acronym">DNS</acronym>
Queries</i>. </span><span class="pubdate">March 1998. </span></p>
</div>
<div class="biblioentry">
-<a name="id2597909"></a><p>[<abbr class="abbrev">RFC1995</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Ohta</span>. </span><span class="title"><i>Incremental Zone Transfer in <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">August 1996. </span></p>
+<a name="id2598081"></a><p>[<abbr class="abbrev">RFC1995</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Ohta</span>. </span><span class="title"><i>Incremental Zone Transfer in <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">August 1996. </span></p>
</div>
<div class="biblioentry">
-<a name="id2597933"></a><p>[<abbr class="abbrev">RFC1996</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A Mechanism for Prompt Notification of Zone Changes</i>. </span><span class="pubdate">August 1996. </span></p>
+<a name="id2598105"></a><p>[<abbr class="abbrev">RFC1996</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A Mechanism for Prompt Notification of Zone Changes</i>. </span><span class="pubdate">August 1996. </span></p>
</div>
<div class="biblioentry">
-<a name="id2597957"></a><p>[<abbr class="abbrev">RFC2136</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">Y.</span> <span class="surname">Rekhter</span>, and <span class="firstname">J.</span> <span class="surname">Bound</span>. </span><span class="title"><i>Dynamic Updates in the Domain Name System</i>. </span><span class="pubdate">April 1997. </span></p>
+<a name="id2598129"></a><p>[<abbr class="abbrev">RFC2136</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">Y.</span> <span class="surname">Rekhter</span>, and <span class="firstname">J.</span> <span class="surname">Bound</span>. </span><span class="title"><i>Dynamic Updates in the Domain Name System</i>. </span><span class="pubdate">April 1997. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598012"></a><p>[<abbr class="abbrev">RFC2671</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Extension Mechanisms for DNS (EDNS0)</i>. </span><span class="pubdate">August 1997. </span></p>
+<a name="id2598184"></a><p>[<abbr class="abbrev">RFC2671</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Extension Mechanisms for DNS (EDNS0)</i>. </span><span class="pubdate">August 1997. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598039"></a><p>[<abbr class="abbrev">RFC2672</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Non-Terminal DNS Name Redirection</i>. </span><span class="pubdate">August 1999. </span></p>
+<a name="id2598211"></a><p>[<abbr class="abbrev">RFC2672</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Non-Terminal DNS Name Redirection</i>. </span><span class="pubdate">August 1999. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598066"></a><p>[<abbr class="abbrev">RFC2845</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>, <span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, and <span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secret Key Transaction Authentication for <acronym class="acronym">DNS</acronym> (TSIG)</i>. </span><span class="pubdate">May 2000. </span></p>
+<a name="id2598237"></a><p>[<abbr class="abbrev">RFC2845</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>, <span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, and <span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secret Key Transaction Authentication for <acronym class="acronym">DNS</acronym> (TSIG)</i>. </span><span class="pubdate">May 2000. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598128"></a><p>[<abbr class="abbrev">RFC2930</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secret Key Establishment for DNS (TKEY RR)</i>. </span><span class="pubdate">September 2000. </span></p>
+<a name="id2598299"></a><p>[<abbr class="abbrev">RFC2930</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secret Key Establishment for DNS (TKEY RR)</i>. </span><span class="pubdate">September 2000. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598157"></a><p>[<abbr class="abbrev">RFC2931</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DNS Request and Transaction Signatures (SIG(0)s)</i>. </span><span class="pubdate">September 2000. </span></p>
+<a name="id2598329"></a><p>[<abbr class="abbrev">RFC2931</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DNS Request and Transaction Signatures (SIG(0)s)</i>. </span><span class="pubdate">September 2000. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598187"></a><p>[<abbr class="abbrev">RFC3007</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secure Domain Name System (DNS) Dynamic Update</i>. </span><span class="pubdate">November 2000. </span></p>
+<a name="id2598359"></a><p>[<abbr class="abbrev">RFC3007</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Secure Domain Name System (DNS) Dynamic Update</i>. </span><span class="pubdate">November 2000. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598214"></a><p>[<abbr class="abbrev">RFC3645</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Kwan</span>, <span class="firstname">P.</span> <span class="surname">Garg</span>, <span class="firstname">J.</span> <span class="surname">Gilroy</span>, <span class="firstname">L.</span> <span class="surname">Esibov</span>, <span class="firstname">J.</span> <span class="surname">Westhead</span>, and <span class="firstname">R.</span> <span class="surname">Hall</span>. </span><span class="title"><i>Generic Security Service Algorithm for Secret
+<a name="id2598386"></a><p>[<abbr class="abbrev">RFC3645</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Kwan</span>, <span class="firstname">P.</span> <span class="surname">Garg</span>, <span class="firstname">J.</span> <span class="surname">Gilroy</span>, <span class="firstname">L.</span> <span class="surname">Esibov</span>, <span class="firstname">J.</span> <span class="surname">Westhead</span>, and <span class="firstname">R.</span> <span class="surname">Hall</span>. </span><span class="title"><i>Generic Security Service Algorithm for Secret
Key Transaction Authentication for DNS
(GSS-TSIG)</i>. </span><span class="pubdate">October 2003. </span></p>
</div>
@@ -314,19 +314,19 @@
<h3 class="title">
<acronym class="acronym">DNS</acronym> Security Proposed Standards</h3>
<div class="biblioentry">
-<a name="id2598296"></a><p>[<abbr class="abbrev">RFC3225</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Conrad</span>. </span><span class="title"><i>Indicating Resolver Support of DNSSEC</i>. </span><span class="pubdate">December 2001. </span></p>
+<a name="id2598468"></a><p>[<abbr class="abbrev">RFC3225</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Conrad</span>. </span><span class="title"><i>Indicating Resolver Support of DNSSEC</i>. </span><span class="pubdate">December 2001. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598323"></a><p>[<abbr class="abbrev">RFC3833</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Atkins</span> and <span class="firstname">R.</span> <span class="surname">Austein</span>. </span><span class="title"><i>Threat Analysis of the Domain Name System (DNS)</i>. </span><span class="pubdate">August 2004. </span></p>
+<a name="id2598494"></a><p>[<abbr class="abbrev">RFC3833</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Atkins</span> and <span class="firstname">R.</span> <span class="surname">Austein</span>. </span><span class="title"><i>Threat Analysis of the Domain Name System (DNS)</i>. </span><span class="pubdate">August 2004. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598359"></a><p>[<abbr class="abbrev">RFC4033</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>DNS Security Introduction and Requirements</i>. </span><span class="pubdate">March 2005. </span></p>
+<a name="id2598531"></a><p>[<abbr class="abbrev">RFC4033</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>DNS Security Introduction and Requirements</i>. </span><span class="pubdate">March 2005. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598424"></a><p>[<abbr class="abbrev">RFC4044</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Resource Records for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p>
+<a name="id2598596"></a><p>[<abbr class="abbrev">RFC4044</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Resource Records for the DNS Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598489"></a><p>[<abbr class="abbrev">RFC4035</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Protocol Modifications for the DNS
+<a name="id2598661"></a><p>[<abbr class="abbrev">RFC4035</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Arends</span>, <span class="firstname">R.</span> <span class="surname">Austein</span>, <span class="firstname">M.</span> <span class="surname">Larson</span>, <span class="firstname">D.</span> <span class="surname">Massey</span>, and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Protocol Modifications for the DNS
Security Extensions</i>. </span><span class="pubdate">March 2005. </span></p>
</div>
</div>
@@ -334,146 +334,146 @@
<h3 class="title">Other Important RFCs About <acronym class="acronym">DNS</acronym>
Implementation</h3>
<div class="biblioentry">
-<a name="id2598563"></a><p>[<abbr class="abbrev">RFC1535</abbr>] <span class="author"><span class="firstname">E.</span> <span class="surname">Gavron</span>. </span><span class="title"><i>A Security Problem and Proposed Correction With Widely
+<a name="id2598734"></a><p>[<abbr class="abbrev">RFC1535</abbr>] <span class="author"><span class="firstname">E.</span> <span class="surname">Gavron</span>. </span><span class="title"><i>A Security Problem and Proposed Correction With Widely
Deployed <acronym class="acronym">DNS</acronym> Software.</i>. </span><span class="pubdate">October 1993. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598588"></a><p>[<abbr class="abbrev">RFC1536</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Kumar</span>, <span class="firstname">J.</span> <span class="surname">Postel</span>, <span class="firstname">C.</span> <span class="surname">Neuman</span>, <span class="firstname">P.</span> <span class="surname">Danzig</span>, and <span class="firstname">S.</span> <span class="surname">Miller</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Implementation
+<a name="id2598760"></a><p>[<abbr class="abbrev">RFC1536</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Kumar</span>, <span class="firstname">J.</span> <span class="surname">Postel</span>, <span class="firstname">C.</span> <span class="surname">Neuman</span>, <span class="firstname">P.</span> <span class="surname">Danzig</span>, and <span class="firstname">S.</span> <span class="surname">Miller</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Implementation
Errors and Suggested Fixes</i>. </span><span class="pubdate">October 1993. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598725"></a><p>[<abbr class="abbrev">RFC1982</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Elz</span> and <span class="firstname">R.</span> <span class="surname">Bush</span>. </span><span class="title"><i>Serial Number Arithmetic</i>. </span><span class="pubdate">August 1996. </span></p>
+<a name="id2598897"></a><p>[<abbr class="abbrev">RFC1982</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Elz</span> and <span class="firstname">R.</span> <span class="surname">Bush</span>. </span><span class="title"><i>Serial Number Arithmetic</i>. </span><span class="pubdate">August 1996. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598760"></a><p>[<abbr class="abbrev">RFC4074</abbr>] <span class="authorgroup"><span class="firstname">Y.</span> <span class="surname">Morishita</span> and <span class="firstname">T.</span> <span class="surname">Jinmei</span>. </span><span class="title"><i>Common Misbehaviour Against <acronym class="acronym">DNS</acronym>
+<a name="id2598932"></a><p>[<abbr class="abbrev">RFC4074</abbr>] <span class="authorgroup"><span class="firstname">Y.</span> <span class="surname">Morishita</span> and <span class="firstname">T.</span> <span class="surname">Jinmei</span>. </span><span class="title"><i>Common Misbehaviour Against <acronym class="acronym">DNS</acronym>
Queries for IPv6 Addresses</i>. </span><span class="pubdate">May 2005. </span></p>
</div>
</div>
<div class="bibliodiv">
<h3 class="title">Resource Record Types</h3>
<div class="biblioentry">
-<a name="id2598806"></a><p>[<abbr class="abbrev">RFC1183</abbr>] <span class="authorgroup"><span class="firstname">C.F.</span> <span class="surname">Everhart</span>, <span class="firstname">L. A.</span> <span class="surname">Mamakos</span>, <span class="firstname">R.</span> <span class="surname">Ullmann</span>, and <span class="firstname">P.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>New <acronym class="acronym">DNS</acronym> RR Definitions</i>. </span><span class="pubdate">October 1990. </span></p>
+<a name="id2598978"></a><p>[<abbr class="abbrev">RFC1183</abbr>] <span class="authorgroup"><span class="firstname">C.F.</span> <span class="surname">Everhart</span>, <span class="firstname">L. A.</span> <span class="surname">Mamakos</span>, <span class="firstname">R.</span> <span class="surname">Ullmann</span>, and <span class="firstname">P.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i>New <acronym class="acronym">DNS</acronym> RR Definitions</i>. </span><span class="pubdate">October 1990. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598864"></a><p>[<abbr class="abbrev">RFC1706</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">R.</span> <span class="surname">Colella</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> NSAP Resource Records</i>. </span><span class="pubdate">October 1994. </span></p>
+<a name="id2599035"></a><p>[<abbr class="abbrev">RFC1706</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">R.</span> <span class="surname">Colella</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> NSAP Resource Records</i>. </span><span class="pubdate">October 1994. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598901"></a><p>[<abbr class="abbrev">RFC2168</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Daniel</span> and <span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="title"><i>Resolution of Uniform Resource Identifiers using
+<a name="id2599073"></a><p>[<abbr class="abbrev">RFC2168</abbr>] <span class="authorgroup"><span class="firstname">R.</span> <span class="surname">Daniel</span> and <span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="title"><i>Resolution of Uniform Resource Identifiers using
the Domain Name System</i>. </span><span class="pubdate">June 1997. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598936"></a><p>[<abbr class="abbrev">RFC1876</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Davis</span>, <span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">T.</span>, and <span class="firstname">I.</span> <span class="surname">Dickinson</span>. </span><span class="title"><i>A Means for Expressing Location Information in the
+<a name="id2599108"></a><p>[<abbr class="abbrev">RFC1876</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Davis</span>, <span class="firstname">P.</span> <span class="surname">Vixie</span>, <span class="firstname">T.</span>, and <span class="firstname">I.</span> <span class="surname">Dickinson</span>. </span><span class="title"><i>A Means for Expressing Location Information in the
Domain
Name System</i>. </span><span class="pubdate">January 1996. </span></p>
</div>
<div class="biblioentry">
-<a name="id2598990"></a><p>[<abbr class="abbrev">RFC2052</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A <acronym class="acronym">DNS</acronym> RR for Specifying the
+<a name="id2599162"></a><p>[<abbr class="abbrev">RFC2052</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>A <acronym class="acronym">DNS</acronym> RR for Specifying the
Location of
Services.</i>. </span><span class="pubdate">October 1996. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599029"></a><p>[<abbr class="abbrev">RFC2163</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Allocchio</span>. </span><span class="title"><i>Using the Internet <acronym class="acronym">DNS</acronym> to
+<a name="id2599201"></a><p>[<abbr class="abbrev">RFC2163</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Allocchio</span>. </span><span class="title"><i>Using the Internet <acronym class="acronym">DNS</acronym> to
Distribute MIXER
Conformant Global Address Mapping</i>. </span><span class="pubdate">January 1998. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599054"></a><p>[<abbr class="abbrev">RFC2230</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Atkinson</span>. </span><span class="title"><i>Key Exchange Delegation Record for the <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">October 1997. </span></p>
+<a name="id2599226"></a><p>[<abbr class="abbrev">RFC2230</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Atkinson</span>. </span><span class="title"><i>Key Exchange Delegation Record for the <acronym class="acronym">DNS</acronym></i>. </span><span class="pubdate">October 1997. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599080"></a><p>[<abbr class="abbrev">RFC2536</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DSA KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2599252"></a><p>[<abbr class="abbrev">RFC2536</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>DSA KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599107"></a><p>[<abbr class="abbrev">RFC2537</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2599278"></a><p>[<abbr class="abbrev">RFC2537</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599133"></a><p>[<abbr class="abbrev">RFC2538</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Storing Certificates in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2599305"></a><p>[<abbr class="abbrev">RFC2538</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Storing Certificates in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599173"></a><p>[<abbr class="abbrev">RFC2539</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Storage of Diffie-Hellman Keys in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2599413"></a><p>[<abbr class="abbrev">RFC2539</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Storage of Diffie-Hellman Keys in the Domain Name System (DNS)</i>. </span><span class="pubdate">March 1999. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599203"></a><p>[<abbr class="abbrev">RFC2540</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Detached Domain Name System (DNS) Information</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2599443"></a><p>[<abbr class="abbrev">RFC2540</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Detached Domain Name System (DNS) Information</i>. </span><span class="pubdate">March 1999. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599233"></a><p>[<abbr class="abbrev">RFC2782</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span>. </span><span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="author"><span class="firstname">L.</span> <span class="surname">Esibov</span>. </span><span class="title"><i>A DNS RR for specifying the location of services (DNS SRV)</i>. </span><span class="pubdate">February 2000. </span></p>
+<a name="id2599473"></a><p>[<abbr class="abbrev">RFC2782</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gulbrandsen</span>. </span><span class="author"><span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="author"><span class="firstname">L.</span> <span class="surname">Esibov</span>. </span><span class="title"><i>A DNS RR for specifying the location of services (DNS SRV)</i>. </span><span class="pubdate">February 2000. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599275"></a><p>[<abbr class="abbrev">RFC2915</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="author"><span class="firstname">R.</span> <span class="surname">Daniel</span>. </span><span class="title"><i>The Naming Authority Pointer (NAPTR) DNS Resource Record</i>. </span><span class="pubdate">September 2000. </span></p>
+<a name="id2599515"></a><p>[<abbr class="abbrev">RFC2915</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Mealling</span>. </span><span class="author"><span class="firstname">R.</span> <span class="surname">Daniel</span>. </span><span class="title"><i>The Naming Authority Pointer (NAPTR) DNS Resource Record</i>. </span><span class="pubdate">September 2000. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599308"></a><p>[<abbr class="abbrev">RFC3110</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)</i>. </span><span class="pubdate">May 2001. </span></p>
+<a name="id2599548"></a><p>[<abbr class="abbrev">RFC3110</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)</i>. </span><span class="pubdate">May 2001. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599335"></a><p>[<abbr class="abbrev">RFC3123</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Koch</span>. </span><span class="title"><i>A DNS RR Type for Lists of Address Prefixes (APL RR)</i>. </span><span class="pubdate">June 2001. </span></p>
+<a name="id2599575"></a><p>[<abbr class="abbrev">RFC3123</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Koch</span>. </span><span class="title"><i>A DNS RR Type for Lists of Address Prefixes (APL RR)</i>. </span><span class="pubdate">June 2001. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599358"></a><p>[<abbr class="abbrev">RFC3596</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">C.</span> <span class="surname">Huitema</span>, <span class="firstname">V.</span> <span class="surname">Ksinant</span>, and <span class="firstname">M.</span> <span class="surname">Souissi</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Extensions to support IP
+<a name="id2599598"></a><p>[<abbr class="abbrev">RFC3596</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Thomson</span>, <span class="firstname">C.</span> <span class="surname">Huitema</span>, <span class="firstname">V.</span> <span class="surname">Ksinant</span>, and <span class="firstname">M.</span> <span class="surname">Souissi</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Extensions to support IP
version 6</i>. </span><span class="pubdate">October 2003. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599484"></a><p>[<abbr class="abbrev">RFC3597</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gustafsson</span>. </span><span class="title"><i>Handling of Unknown DNS Resource Record (RR) Types</i>. </span><span class="pubdate">September 2003. </span></p>
+<a name="id2599656"></a><p>[<abbr class="abbrev">RFC3597</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Gustafsson</span>. </span><span class="title"><i>Handling of Unknown DNS Resource Record (RR) Types</i>. </span><span class="pubdate">September 2003. </span></p>
</div>
</div>
<div class="bibliodiv">
<h3 class="title">
<acronym class="acronym">DNS</acronym> and the Internet</h3>
<div class="biblioentry">
-<a name="id2599516"></a><p>[<abbr class="abbrev">RFC1101</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Network Names
+<a name="id2599688"></a><p>[<abbr class="abbrev">RFC1101</abbr>] <span class="author"><span class="firstname">P. V.</span> <span class="surname">Mockapetris</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Network Names
and Other Types</i>. </span><span class="pubdate">April 1989. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599542"></a><p>[<abbr class="abbrev">RFC1123</abbr>] <span class="author"><span class="surname">Braden</span>. </span><span class="title"><i>Requirements for Internet Hosts - Application and
+<a name="id2599714"></a><p>[<abbr class="abbrev">RFC1123</abbr>] <span class="author"><span class="surname">Braden</span>. </span><span class="title"><i>Requirements for Internet Hosts - Application and
Support</i>. </span><span class="pubdate">October 1989. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599564"></a><p>[<abbr class="abbrev">RFC1591</abbr>] <span class="author"><span class="firstname">J.</span> <span class="surname">Postel</span>. </span><span class="title"><i>Domain Name System Structure and Delegation</i>. </span><span class="pubdate">March 1994. </span></p>
+<a name="id2599736"></a><p>[<abbr class="abbrev">RFC1591</abbr>] <span class="author"><span class="firstname">J.</span> <span class="surname">Postel</span>. </span><span class="title"><i>Domain Name System Structure and Delegation</i>. </span><span class="pubdate">March 1994. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599588"></a><p>[<abbr class="abbrev">RFC2317</abbr>] <span class="authorgroup"><span class="firstname">H.</span> <span class="surname">Eidnes</span>, <span class="firstname">G.</span> <span class="surname">de Groot</span>, and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Classless IN-ADDR.ARPA Delegation</i>. </span><span class="pubdate">March 1998. </span></p>
+<a name="id2599760"></a><p>[<abbr class="abbrev">RFC2317</abbr>] <span class="authorgroup"><span class="firstname">H.</span> <span class="surname">Eidnes</span>, <span class="firstname">G.</span> <span class="surname">de Groot</span>, and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Classless IN-ADDR.ARPA Delegation</i>. </span><span class="pubdate">March 1998. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599634"></a><p>[<abbr class="abbrev">RFC2826</abbr>] <span class="authorgroup"><span class="surname">Internet Architecture Board</span>. </span><span class="title"><i>IAB Technical Comment on the Unique DNS Root</i>. </span><span class="pubdate">May 2000. </span></p>
+<a name="id2599805"></a><p>[<abbr class="abbrev">RFC2826</abbr>] <span class="authorgroup"><span class="surname">Internet Architecture Board</span>. </span><span class="title"><i>IAB Technical Comment on the Unique DNS Root</i>. </span><span class="pubdate">May 2000. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599657"></a><p>[<abbr class="abbrev">RFC2929</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, <span class="firstname">E.</span> <span class="surname">Brunner-Williams</span>, and <span class="firstname">B.</span> <span class="surname">Manning</span>. </span><span class="title"><i>Domain Name System (DNS) IANA Considerations</i>. </span><span class="pubdate">September 2000. </span></p>
+<a name="id2599829"></a><p>[<abbr class="abbrev">RFC2929</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>, <span class="firstname">E.</span> <span class="surname">Brunner-Williams</span>, and <span class="firstname">B.</span> <span class="surname">Manning</span>. </span><span class="title"><i>Domain Name System (DNS) IANA Considerations</i>. </span><span class="pubdate">September 2000. </span></p>
</div>
</div>
<div class="bibliodiv">
<h3 class="title">
<acronym class="acronym">DNS</acronym> Operations</h3>
<div class="biblioentry">
-<a name="id2599715"></a><p>[<abbr class="abbrev">RFC1033</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Lottor</span>. </span><span class="title"><i>Domain administrators operations guide.</i>. </span><span class="pubdate">November 1987. </span></p>
+<a name="id2599886"></a><p>[<abbr class="abbrev">RFC1033</abbr>] <span class="author"><span class="firstname">M.</span> <span class="surname">Lottor</span>. </span><span class="title"><i>Domain administrators operations guide.</i>. </span><span class="pubdate">November 1987. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599738"></a><p>[<abbr class="abbrev">RFC1537</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Beertema</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Data File
+<a name="id2599910"></a><p>[<abbr class="abbrev">RFC1537</abbr>] <span class="author"><span class="firstname">P.</span> <span class="surname">Beertema</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Data File
Configuration Errors</i>. </span><span class="pubdate">October 1993. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599765"></a><p>[<abbr class="abbrev">RFC1912</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Barr</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Operational and
+<a name="id2599937"></a><p>[<abbr class="abbrev">RFC1912</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Barr</span>. </span><span class="title"><i>Common <acronym class="acronym">DNS</acronym> Operational and
Configuration Errors</i>. </span><span class="pubdate">February 1996. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599792"></a><p>[<abbr class="abbrev">RFC2010</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Operational Criteria for Root Name Servers.</i>. </span><span class="pubdate">October 1996. </span></p>
+<a name="id2599963"></a><p>[<abbr class="abbrev">RFC2010</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Manning</span> and <span class="firstname">P.</span> <span class="surname">Vixie</span>. </span><span class="title"><i>Operational Criteria for Root Name Servers.</i>. </span><span class="pubdate">October 1996. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599828"></a><p>[<abbr class="abbrev">RFC2219</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Hamilton</span> and <span class="firstname">R.</span> <span class="surname">Wright</span>. </span><span class="title"><i>Use of <acronym class="acronym">DNS</acronym> Aliases for
+<a name="id2600000"></a><p>[<abbr class="abbrev">RFC2219</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Hamilton</span> and <span class="firstname">R.</span> <span class="surname">Wright</span>. </span><span class="title"><i>Use of <acronym class="acronym">DNS</acronym> Aliases for
Network Services.</i>. </span><span class="pubdate">October 1997. </span></p>
</div>
</div>
<div class="bibliodiv">
<h3 class="title">Internationalized Domain Names</h3>
<div class="biblioentry">
-<a name="id2599874"></a><p>[<abbr class="abbrev">RFC2825</abbr>] <span class="authorgroup"><span class="surname">IAB</span> and <span class="firstname">R.</span> <span class="surname">Daigle</span>. </span><span class="title"><i>A Tangled Web: Issues of I18N, Domain Names,
+<a name="id2600045"></a><p>[<abbr class="abbrev">RFC2825</abbr>] <span class="authorgroup"><span class="surname">IAB</span> and <span class="firstname">R.</span> <span class="surname">Daigle</span>. </span><span class="title"><i>A Tangled Web: Issues of I18N, Domain Names,
and the Other Internet protocols</i>. </span><span class="pubdate">May 2000. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599906"></a><p>[<abbr class="abbrev">RFC3490</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Faltstrom</span>, <span class="firstname">P.</span> <span class="surname">Hoffman</span>, and <span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Internationalizing Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p>
+<a name="id2600077"></a><p>[<abbr class="abbrev">RFC3490</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Faltstrom</span>, <span class="firstname">P.</span> <span class="surname">Hoffman</span>, and <span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Internationalizing Domain Names in Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599952"></a><p>[<abbr class="abbrev">RFC3491</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Hoffman</span> and <span class="firstname">M.</span> <span class="surname">Blanchet</span>. </span><span class="title"><i>Nameprep: A Stringprep Profile for Internationalized Domain Names</i>. </span><span class="pubdate">March 2003. </span></p>
+<a name="id2600123"></a><p>[<abbr class="abbrev">RFC3491</abbr>] <span class="authorgroup"><span class="firstname">P.</span> <span class="surname">Hoffman</span> and <span class="firstname">M.</span> <span class="surname">Blanchet</span>. </span><span class="title"><i>Nameprep: A Stringprep Profile for Internationalized Domain Names</i>. </span><span class="pubdate">March 2003. </span></p>
</div>
<div class="biblioentry">
-<a name="id2599987"></a><p>[<abbr class="abbrev">RFC3492</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Punycode: A Bootstring encoding of Unicode
+<a name="id2600158"></a><p>[<abbr class="abbrev">RFC3492</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Costello</span>. </span><span class="title"><i>Punycode: A Bootstring encoding of Unicode
for Internationalized Domain Names in
Applications (IDNA)</i>. </span><span class="pubdate">March 2003. </span></p>
</div>
@@ -489,47 +489,47 @@
</p>
</div>
<div class="biblioentry">
-<a name="id2600032"></a><p>[<abbr class="abbrev">RFC1464</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Rosenbaum</span>. </span><span class="title"><i>Using the Domain Name System To Store Arbitrary String
+<a name="id2600203"></a><p>[<abbr class="abbrev">RFC1464</abbr>] <span class="author"><span class="firstname">R.</span> <span class="surname">Rosenbaum</span>. </span><span class="title"><i>Using the Domain Name System To Store Arbitrary String
Attributes</i>. </span><span class="pubdate">May 1993. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600054"></a><p>[<abbr class="abbrev">RFC1713</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Romao</span>. </span><span class="title"><i>Tools for <acronym class="acronym">DNS</acronym> Debugging</i>. </span><span class="pubdate">November 1994. </span></p>
+<a name="id2600226"></a><p>[<abbr class="abbrev">RFC1713</abbr>] <span class="author"><span class="firstname">A.</span> <span class="surname">Romao</span>. </span><span class="title"><i>Tools for <acronym class="acronym">DNS</acronym> Debugging</i>. </span><span class="pubdate">November 1994. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600080"></a><p>[<abbr class="abbrev">RFC1794</abbr>] <span class="author"><span class="firstname">T.</span> <span class="surname">Brisco</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Support for Load
+<a name="id2600251"></a><p>[<abbr class="abbrev">RFC1794</abbr>] <span class="author"><span class="firstname">T.</span> <span class="surname">Brisco</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Support for Load
Balancing</i>. </span><span class="pubdate">April 1995. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600105"></a><p>[<abbr class="abbrev">RFC2240</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Legal Basis for Domain Name Allocation</i>. </span><span class="pubdate">November 1997. </span></p>
+<a name="id2600277"></a><p>[<abbr class="abbrev">RFC2240</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Legal Basis for Domain Name Allocation</i>. </span><span class="pubdate">November 1997. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600129"></a><p>[<abbr class="abbrev">RFC2345</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>, <span class="firstname">T.</span> <span class="surname">Wolf</span>, and <span class="firstname">G.</span> <span class="surname">Oglesby</span>. </span><span class="title"><i>Domain Names and Company Name Retrieval</i>. </span><span class="pubdate">May 1998. </span></p>
+<a name="id2600300"></a><p>[<abbr class="abbrev">RFC2345</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>, <span class="firstname">T.</span> <span class="surname">Wolf</span>, and <span class="firstname">G.</span> <span class="surname">Oglesby</span>. </span><span class="title"><i>Domain Names and Company Name Retrieval</i>. </span><span class="pubdate">May 1998. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600174"></a><p>[<abbr class="abbrev">RFC2352</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Convention For Using Legal Names as Domain Names</i>. </span><span class="pubdate">May 1998. </span></p>
+<a name="id2600346"></a><p>[<abbr class="abbrev">RFC2352</abbr>] <span class="author"><span class="firstname">O.</span> <span class="surname">Vaughan</span>. </span><span class="title"><i>A Convention For Using Legal Names as Domain Names</i>. </span><span class="pubdate">May 1998. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600198"></a><p>[<abbr class="abbrev">RFC3071</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>. </span><span class="title"><i>Reflections on the DNS, RFC 1591, and Categories of Domains</i>. </span><span class="pubdate">February 2001. </span></p>
+<a name="id2600370"></a><p>[<abbr class="abbrev">RFC3071</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Klensin</span>. </span><span class="title"><i>Reflections on the DNS, RFC 1591, and Categories of Domains</i>. </span><span class="pubdate">February 2001. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600225"></a><p>[<abbr class="abbrev">RFC3258</abbr>] <span class="authorgroup"><span class="firstname">T.</span> <span class="surname">Hardie</span>. </span><span class="title"><i>Distributing Authoritative Name Servers via
+<a name="id2600396"></a><p>[<abbr class="abbrev">RFC3258</abbr>] <span class="authorgroup"><span class="firstname">T.</span> <span class="surname">Hardie</span>. </span><span class="title"><i>Distributing Authoritative Name Servers via
Shared Unicast Addresses</i>. </span><span class="pubdate">April 2002. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600250"></a><p>[<abbr class="abbrev">RFC3901</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Durand</span> and <span class="firstname">J.</span> <span class="surname">Ihren</span>. </span><span class="title"><i>DNS IPv6 Transport Operational Guidelines</i>. </span><span class="pubdate">September 2004. </span></p>
+<a name="id2600422"></a><p>[<abbr class="abbrev">RFC3901</abbr>] <span class="authorgroup"><span class="firstname">A.</span> <span class="surname">Durand</span> and <span class="firstname">J.</span> <span class="surname">Ihren</span>. </span><span class="title"><i>DNS IPv6 Transport Operational Guidelines</i>. </span><span class="pubdate">September 2004. </span></p>
</div>
</div>
<div class="bibliodiv">
<h3 class="title">Obsolete and Unimplemented Experimental RFC</h3>
<div class="biblioentry">
-<a name="id2600294"></a><p>[<abbr class="abbrev">RFC1712</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Farrell</span>, <span class="firstname">M.</span> <span class="surname">Schulze</span>, <span class="firstname">S.</span> <span class="surname">Pleitner</span>, and <span class="firstname">D.</span> <span class="surname">Baldoni</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Geographical
+<a name="id2600466"></a><p>[<abbr class="abbrev">RFC1712</abbr>] <span class="authorgroup"><span class="firstname">C.</span> <span class="surname">Farrell</span>, <span class="firstname">M.</span> <span class="surname">Schulze</span>, <span class="firstname">S.</span> <span class="surname">Pleitner</span>, and <span class="firstname">D.</span> <span class="surname">Baldoni</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> Encoding of Geographical
Location</i>. </span><span class="pubdate">November 1994. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600352"></a><p>[<abbr class="abbrev">RFC2673</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Binary Labels in the Domain Name System</i>. </span><span class="pubdate">August 1999. </span></p>
+<a name="id2600523"></a><p>[<abbr class="abbrev">RFC2673</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span>. </span><span class="title"><i>Binary Labels in the Domain Name System</i>. </span><span class="pubdate">August 1999. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600378"></a><p>[<abbr class="abbrev">RFC2874</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span> and <span class="firstname">C.</span> <span class="surname">Huitema</span>. </span><span class="title"><i>DNS Extensions to Support IPv6 Address Aggregation
+<a name="id2600550"></a><p>[<abbr class="abbrev">RFC2874</abbr>] <span class="authorgroup"><span class="firstname">M.</span> <span class="surname">Crawford</span> and <span class="firstname">C.</span> <span class="surname">Huitema</span>. </span><span class="title"><i>DNS Extensions to Support IPv6 Address Aggregation
and Renumbering</i>. </span><span class="pubdate">July 2000. </span></p>
</div>
</div>
@@ -543,39 +543,39 @@
</p>
</div>
<div class="biblioentry">
-<a name="id2600426"></a><p>[<abbr class="abbrev">RFC2065</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">C.</span> <span class="surname">Kaufman</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">January 1997. </span></p>
+<a name="id2600598"></a><p>[<abbr class="abbrev">RFC2065</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span> and <span class="firstname">C.</span> <span class="surname">Kaufman</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">January 1997. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600466"></a><p>[<abbr class="abbrev">RFC2137</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secure Domain Name System Dynamic Update</i>. </span><span class="pubdate">April 1997. </span></p>
+<a name="id2600637"></a><p>[<abbr class="abbrev">RFC2137</abbr>] <span class="author"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Secure Domain Name System Dynamic Update</i>. </span><span class="pubdate">April 1997. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600492"></a><p>[<abbr class="abbrev">RFC2535</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">March 1999. </span></p>
+<a name="id2600664"></a><p>[<abbr class="abbrev">RFC2535</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Eastlake</span>, <span class="lineage">3rd</span>. </span><span class="title"><i>Domain Name System Security Extensions</i>. </span><span class="pubdate">March 1999. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600522"></a><p>[<abbr class="abbrev">RFC3008</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Domain Name System Security (DNSSEC)
+<a name="id2600694"></a><p>[<abbr class="abbrev">RFC3008</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span>. </span><span class="title"><i>Domain Name System Security (DNSSEC)
Signing Authority</i>. </span><span class="pubdate">November 2000. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600548"></a><p>[<abbr class="abbrev">RFC3090</abbr>] <span class="authorgroup"><span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>DNS Security Extension Clarification on Zone Status</i>. </span><span class="pubdate">March 2001. </span></p>
+<a name="id2600720"></a><p>[<abbr class="abbrev">RFC3090</abbr>] <span class="authorgroup"><span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>DNS Security Extension Clarification on Zone Status</i>. </span><span class="pubdate">March 2001. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600574"></a><p>[<abbr class="abbrev">RFC3445</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Massey</span> and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Limiting the Scope of the KEY Resource Record (RR)</i>. </span><span class="pubdate">December 2002. </span></p>
+<a name="id2600746"></a><p>[<abbr class="abbrev">RFC3445</abbr>] <span class="authorgroup"><span class="firstname">D.</span> <span class="surname">Massey</span> and <span class="firstname">S.</span> <span class="surname">Rose</span>. </span><span class="title"><i>Limiting the Scope of the KEY Resource Record (RR)</i>. </span><span class="pubdate">December 2002. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600611"></a><p>[<abbr class="abbrev">RFC3655</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Redefinition of DNS Authenticated Data (AD) bit</i>. </span><span class="pubdate">November 2003. </span></p>
+<a name="id2600782"></a><p>[<abbr class="abbrev">RFC3655</abbr>] <span class="authorgroup"><span class="firstname">B.</span> <span class="surname">Wellington</span> and <span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Redefinition of DNS Authenticated Data (AD) bit</i>. </span><span class="pubdate">November 2003. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600647"></a><p>[<abbr class="abbrev">RFC3658</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Delegation Signer (DS) Resource Record (RR)</i>. </span><span class="pubdate">December 2003. </span></p>
+<a name="id2600819"></a><p>[<abbr class="abbrev">RFC3658</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Gudmundsson</span>. </span><span class="title"><i>Delegation Signer (DS) Resource Record (RR)</i>. </span><span class="pubdate">December 2003. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600674"></a><p>[<abbr class="abbrev">RFC3755</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Weiler</span>. </span><span class="title"><i>Legacy Resolver Compatibility for Delegation Signer (DS)</i>. </span><span class="pubdate">May 2004. </span></p>
+<a name="id2600845"></a><p>[<abbr class="abbrev">RFC3755</abbr>] <span class="authorgroup"><span class="firstname">S.</span> <span class="surname">Weiler</span>. </span><span class="title"><i>Legacy Resolver Compatibility for Delegation Signer (DS)</i>. </span><span class="pubdate">May 2004. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600700"></a><p>[<abbr class="abbrev">RFC3757</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Kolkman</span>, <span class="firstname">J.</span> <span class="surname">Schlyter</span>, and <span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>Domain Name System KEY (DNSKEY) Resource Record
+<a name="id2600872"></a><p>[<abbr class="abbrev">RFC3757</abbr>] <span class="authorgroup"><span class="firstname">O.</span> <span class="surname">Kolkman</span>, <span class="firstname">J.</span> <span class="surname">Schlyter</span>, and <span class="firstname">E.</span> <span class="surname">Lewis</span>. </span><span class="title"><i>Domain Name System KEY (DNSKEY) Resource Record
(RR) Secure Entry Point (SEP) Flag</i>. </span><span class="pubdate">April 2004. </span></p>
</div>
<div class="biblioentry">
-<a name="id2600745"></a><p>[<abbr class="abbrev">RFC3845</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Schlyter</span>. </span><span class="title"><i>DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format</i>. </span><span class="pubdate">August 2004. </span></p>
+<a name="id2600917"></a><p>[<abbr class="abbrev">RFC3845</abbr>] <span class="authorgroup"><span class="firstname">J.</span> <span class="surname">Schlyter</span>. </span><span class="title"><i>DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format</i>. </span><span class="pubdate">August 2004. </span></p>
</div>
</div>
</div>
@@ -596,14 +596,14 @@
</div>
<div class="sect2" lang="en">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id2600787"></a>Other Documents About <acronym class="acronym">BIND</acronym>
+<a name="id2600958"></a>Other Documents About <acronym class="acronym">BIND</acronym>
</h3></div></div></div>
<p></p>
<div class="bibliography">
<div class="titlepage"><div><div><h4 class="title">
-<a name="id2600796"></a>Bibliography</h4></div></div></div>
+<a name="id2600968"></a>Bibliography</h4></div></div></div>
<div class="biblioentry">
-<a name="id2600798"></a><p><span class="authorgroup"><span class="firstname">Paul</span> <span class="surname">Albitz</span> and <span class="firstname">Cricket</span> <span class="surname">Liu</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></i>. </span><span class="copyright">Copyright © 1998 Sebastopol, CA: O'Reilly and Associates. </span></p>
+<a name="id2600970"></a><p><span class="authorgroup"><span class="firstname">Paul</span> <span class="surname">Albitz</span> and <span class="firstname">Cricket</span> <span class="surname">Liu</span>. </span><span class="title"><i><acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></i>. </span><span class="copyright">Copyright © 1998 Sebastopol, CA: O'Reilly and Associates. </span></p>
</div>
</div>
</div>
diff --git a/doc/arm/Bv9ARM.html b/doc/arm/Bv9ARM.html
index 618f8423..c868b1ab 100644
--- a/doc/arm/Bv9ARM.html
+++ b/doc/arm/Bv9ARM.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: Bv9ARM.html,v 1.164.18.14 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: Bv9ARM.html,v 1.164.18.16 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -154,61 +154,61 @@
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#options"><span><strong class="command">options</strong></span> Statement Definition and
Usage</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#statschannels"><span><strong class="command">statistics-channels</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585194"><span><strong class="command">statistics-channels</strong></span> Statement Definition and
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585298"><span><strong class="command">statistics-channels</strong></span> Statement Definition and
Usage</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_grammar"><span><strong class="command">server</strong></span> Statement Grammar</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#server_statement_definition_and_usage"><span><strong class="command">server</strong></span> Statement Definition and
Usage</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585878"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585929"><span><strong class="command">trusted-keys</strong></span> Statement Definition
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585913"><span><strong class="command">trusted-keys</strong></span> Statement Grammar</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2585964"><span><strong class="command">trusted-keys</strong></span> Statement Definition
and Usage</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#view_statement_grammar"><span><strong class="command">view</strong></span> Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2586080"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2586115"><span><strong class="command">view</strong></span> Statement Definition and Usage</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#zone_statement_grammar"><span><strong class="command">zone</strong></span>
Statement Grammar</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2587504"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2587539"><span><strong class="command">zone</strong></span> Statement Definition and Usage</a></span></dt>
</dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2589714">Zone File</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2589885">Zone File</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them">Types of Resource Records and When to Use Them</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2591965">Discussion of MX Records</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592069">Discussion of MX Records</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#Setting_TTLs">Setting TTLs</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592585">Inverse Mapping in IPv4</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592712">Other Zone File Directives</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592901"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592689">Inverse Mapping in IPv4</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2592884">Other Zone File Directives</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2593073"><acronym class="acronym">BIND</acronym> Master File Extension: the <span><strong class="command">$GENERATE</strong></span> Directive</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch06.html#zonefile_format">Additional File Formats</a></span></dt>
</dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2593437">BIND9 Statistics</a></span></dt>
-<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2593854">Statistics Counters</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="Bv9ARM.ch06.html#id2593609">BIND9 Statistics</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch06.html#id2594026">Statistics Counters</a></span></dt></dl></dd>
</dl></dd>
<dt><span class="chapter"><a href="Bv9ARM.ch07.html">7. <acronym class="acronym">BIND</acronym> 9 Security Considerations</a></span></dt>
<dd><dl>
<dt><span class="sect1"><a href="Bv9ARM.ch07.html#Access_Control_Lists">Access Control Lists</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2596886"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch07.html#id2596989"><span><strong class="command">Chroot</strong></span> and <span><strong class="command">Setuid</strong></span></a></span></dt>
<dd><dl>
-<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2597031">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2597091">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2597066">The <span><strong class="command">chroot</strong></span> Environment</a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch07.html#id2597126">Using the <span><strong class="command">setuid</strong></span> Function</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="Bv9ARM.ch07.html#dynamic_update_security">Dynamic Update Security</a></span></dt>
</dl></dd>
<dt><span class="chapter"><a href="Bv9ARM.ch08.html">8. Troubleshooting</a></span></dt>
<dd><dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597239">Common Problems</a></span></dt>
-<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2597244">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597256">Incrementing and Changing the Serial Number</a></span></dt>
-<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597341">Where Can I Get Help?</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597411">Common Problems</a></span></dt>
+<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch08.html#id2597416">It's not working; how can I figure out what's wrong?</a></span></dt></dl></dd>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597428">Incrementing and Changing the Serial Number</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch08.html#id2597445">Where Can I Get Help?</a></span></dt>
</dl></dd>
<dt><span class="appendix"><a href="Bv9ARM.ch09.html">A. Appendices</a></span></dt>
<dd><dl>
-<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2597403">Acknowledgments</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2597507">Acknowledgments</a></span></dt>
<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#historical_dns_information">A Brief History of the <acronym class="acronym">DNS</acronym> and <acronym class="acronym">BIND</acronym></a></span></dt></dl></dd>
-<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2597575">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt>
+<dt><span class="sect1"><a href="Bv9ARM.ch09.html#id2597678">General <acronym class="acronym">DNS</acronym> Reference Information</a></span></dt>
<dd><dl><dt><span class="sect2"><a href="Bv9ARM.ch09.html#ipv6addresses">IPv6 addresses (AAAA)</a></span></dt></dl></dd>
<dt><span class="sect1"><a href="Bv9ARM.ch09.html#bibliography">Bibliography (and Suggested Reading)</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="Bv9ARM.ch09.html#rfcs">Request for Comments (RFCs)</a></span></dt>
<dt><span class="sect2"><a href="Bv9ARM.ch09.html#internet_drafts">Internet Drafts</a></span></dt>
-<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2600787">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt>
+<dt><span class="sect2"><a href="Bv9ARM.ch09.html#id2600958">Other Documents About <acronym class="acronym">BIND</acronym></a></span></dt>
</dl></dd>
</dl></dd>
<dt><span class="reference"><a href="Bv9ARM.ch10.html">I. Manual pages</a></span></dt>
diff --git a/doc/arm/Bv9ARM.pdf b/doc/arm/Bv9ARM.pdf
deleted file mode 100755
index dd798c71..00000000
--- a/doc/arm/Bv9ARM.pdf
+++ /dev/null
@@ -1,13559 +0,0 @@
-%PDF-1.4
-5 0 obj
-<< /S /GoTo /D (chapter.1) >>
-endobj
-8 0 obj
-(1 Introduction)
-endobj
-9 0 obj
-<< /S /GoTo /D (section.1.1) >>
-endobj
-12 0 obj
-(1.1 Scope of Document)
-endobj
-13 0 obj
-<< /S /GoTo /D (section.1.2) >>
-endobj
-16 0 obj
-(1.2 Organization of This Document)
-endobj
-17 0 obj
-<< /S /GoTo /D (section.1.3) >>
-endobj
-20 0 obj
-(1.3 Conventions Used in This Document)
-endobj
-21 0 obj
-<< /S /GoTo /D (section.1.4) >>
-endobj
-24 0 obj
-(1.4 The Domain Name System \(DNS\))
-endobj
-25 0 obj
-<< /S /GoTo /D (subsection.1.4.1) >>
-endobj
-28 0 obj
-(1.4.1 DNS Fundamentals)
-endobj
-29 0 obj
-<< /S /GoTo /D (subsection.1.4.2) >>
-endobj
-32 0 obj
-(1.4.2 Domains and Domain Names)
-endobj
-33 0 obj
-<< /S /GoTo /D (subsection.1.4.3) >>
-endobj
-36 0 obj
-(1.4.3 Zones)
-endobj
-37 0 obj
-<< /S /GoTo /D (subsection.1.4.4) >>
-endobj
-40 0 obj
-(1.4.4 Authoritative Name Servers)
-endobj
-41 0 obj
-<< /S /GoTo /D (subsubsection.1.4.4.1) >>
-endobj
-44 0 obj
-(1.4.4.1 The Primary Master)
-endobj
-45 0 obj
-<< /S /GoTo /D (subsubsection.1.4.4.2) >>
-endobj
-48 0 obj
-(1.4.4.2 Slave Servers)
-endobj
-49 0 obj
-<< /S /GoTo /D (subsubsection.1.4.4.3) >>
-endobj
-52 0 obj
-(1.4.4.3 Stealth Servers)
-endobj
-53 0 obj
-<< /S /GoTo /D (subsection.1.4.5) >>
-endobj
-56 0 obj
-(1.4.5 Caching Name Servers)
-endobj
-57 0 obj
-<< /S /GoTo /D (subsubsection.1.4.5.1) >>
-endobj
-60 0 obj
-(1.4.5.1 Forwarding)
-endobj
-61 0 obj
-<< /S /GoTo /D (subsection.1.4.6) >>
-endobj
-64 0 obj
-(1.4.6 Name Servers in Multiple Roles)
-endobj
-65 0 obj
-<< /S /GoTo /D (chapter.2) >>
-endobj
-68 0 obj
-(2 BIND Resource Requirements)
-endobj
-69 0 obj
-<< /S /GoTo /D (section.2.1) >>
-endobj
-72 0 obj
-(2.1 Hardware requirements)
-endobj
-73 0 obj
-<< /S /GoTo /D (section.2.2) >>
-endobj
-76 0 obj
-(2.2 CPU Requirements)
-endobj
-77 0 obj
-<< /S /GoTo /D (section.2.3) >>
-endobj
-80 0 obj
-(2.3 Memory Requirements)
-endobj
-81 0 obj
-<< /S /GoTo /D (section.2.4) >>
-endobj
-84 0 obj
-(2.4 Name Server Intensive Environment Issues)
-endobj
-85 0 obj
-<< /S /GoTo /D (section.2.5) >>
-endobj
-88 0 obj
-(2.5 Supported Operating Systems)
-endobj
-89 0 obj
-<< /S /GoTo /D (chapter.3) >>
-endobj
-92 0 obj
-(3 Name Server Configuration)
-endobj
-93 0 obj
-<< /S /GoTo /D (section.3.1) >>
-endobj
-96 0 obj
-(3.1 Sample Configurations)
-endobj
-97 0 obj
-<< /S /GoTo /D (subsection.3.1.1) >>
-endobj
-100 0 obj
-(3.1.1 A Caching-only Name Server)
-endobj
-101 0 obj
-<< /S /GoTo /D (subsection.3.1.2) >>
-endobj
-104 0 obj
-(3.1.2 An Authoritative-only Name Server)
-endobj
-105 0 obj
-<< /S /GoTo /D (section.3.2) >>
-endobj
-108 0 obj
-(3.2 Load Balancing)
-endobj
-109 0 obj
-<< /S /GoTo /D (section.3.3) >>
-endobj
-112 0 obj
-(3.3 Name Server Operations)
-endobj
-113 0 obj
-<< /S /GoTo /D (subsection.3.3.1) >>
-endobj
-116 0 obj
-(3.3.1 Tools for Use With the Name Server Daemon)
-endobj
-117 0 obj
-<< /S /GoTo /D (subsubsection.3.3.1.1) >>
-endobj
-120 0 obj
-(3.3.1.1 Diagnostic Tools)
-endobj
-121 0 obj
-<< /S /GoTo /D (subsubsection.3.3.1.2) >>
-endobj
-124 0 obj
-(3.3.1.2 Administrative Tools)
-endobj
-125 0 obj
-<< /S /GoTo /D (subsection.3.3.2) >>
-endobj
-128 0 obj
-(3.3.2 Signals)
-endobj
-129 0 obj
-<< /S /GoTo /D (chapter.4) >>
-endobj
-132 0 obj
-(4 Advanced DNS Features)
-endobj
-133 0 obj
-<< /S /GoTo /D (section.4.1) >>
-endobj
-136 0 obj
-(4.1 Notify)
-endobj
-137 0 obj
-<< /S /GoTo /D (section.4.2) >>
-endobj
-140 0 obj
-(4.2 Dynamic Update)
-endobj
-141 0 obj
-<< /S /GoTo /D (subsection.4.2.1) >>
-endobj
-144 0 obj
-(4.2.1 The journal file)
-endobj
-145 0 obj
-<< /S /GoTo /D (section.4.3) >>
-endobj
-148 0 obj
-(4.3 Incremental Zone Transfers \(IXFR\))
-endobj
-149 0 obj
-<< /S /GoTo /D (section.4.4) >>
-endobj
-152 0 obj
-(4.4 Split DNS)
-endobj
-153 0 obj
-<< /S /GoTo /D (subsection.4.4.1) >>
-endobj
-156 0 obj
-(4.4.1 Example split DNS setup)
-endobj
-157 0 obj
-<< /S /GoTo /D (section.4.5) >>
-endobj
-160 0 obj
-(4.5 TSIG)
-endobj
-161 0 obj
-<< /S /GoTo /D (subsection.4.5.1) >>
-endobj
-164 0 obj
-(4.5.1 Generate Shared Keys for Each Pair of Hosts)
-endobj
-165 0 obj
-<< /S /GoTo /D (subsubsection.4.5.1.1) >>
-endobj
-168 0 obj
-(4.5.1.1 Automatic Generation)
-endobj
-169 0 obj
-<< /S /GoTo /D (subsubsection.4.5.1.2) >>
-endobj
-172 0 obj
-(4.5.1.2 Manual Generation)
-endobj
-173 0 obj
-<< /S /GoTo /D (subsection.4.5.2) >>
-endobj
-176 0 obj
-(4.5.2 Copying the Shared Secret to Both Machines)
-endobj
-177 0 obj
-<< /S /GoTo /D (subsection.4.5.3) >>
-endobj
-180 0 obj
-(4.5.3 Informing the Servers of the Key's Existence)
-endobj
-181 0 obj
-<< /S /GoTo /D (subsection.4.5.4) >>
-endobj
-184 0 obj
-(4.5.4 Instructing the Server to Use the Key)
-endobj
-185 0 obj
-<< /S /GoTo /D (subsection.4.5.5) >>
-endobj
-188 0 obj
-(4.5.5 TSIG Key Based Access Control)
-endobj
-189 0 obj
-<< /S /GoTo /D (subsection.4.5.6) >>
-endobj
-192 0 obj
-(4.5.6 Errors)
-endobj
-193 0 obj
-<< /S /GoTo /D (section.4.6) >>
-endobj
-196 0 obj
-(4.6 TKEY)
-endobj
-197 0 obj
-<< /S /GoTo /D (section.4.7) >>
-endobj
-200 0 obj
-(4.7 SIG\(0\))
-endobj
-201 0 obj
-<< /S /GoTo /D (section.4.8) >>
-endobj
-204 0 obj
-(4.8 DNSSEC)
-endobj
-205 0 obj
-<< /S /GoTo /D (subsection.4.8.1) >>
-endobj
-208 0 obj
-(4.8.1 Generating Keys)
-endobj
-209 0 obj
-<< /S /GoTo /D (subsection.4.8.2) >>
-endobj
-212 0 obj
-(4.8.2 Signing the Zone)
-endobj
-213 0 obj
-<< /S /GoTo /D (subsection.4.8.3) >>
-endobj
-216 0 obj
-(4.8.3 Configuring Servers)
-endobj
-217 0 obj
-<< /S /GoTo /D (section.4.9) >>
-endobj
-220 0 obj
-(4.9 IPv6 Support in BIND 9)
-endobj
-221 0 obj
-<< /S /GoTo /D (subsection.4.9.1) >>
-endobj
-224 0 obj
-(4.9.1 Address Lookups Using AAAA Records)
-endobj
-225 0 obj
-<< /S /GoTo /D (subsection.4.9.2) >>
-endobj
-228 0 obj
-(4.9.2 Address to Name Lookups Using Nibble Format)
-endobj
-229 0 obj
-<< /S /GoTo /D (chapter.5) >>
-endobj
-232 0 obj
-(5 The BIND 9 Lightweight Resolver)
-endobj
-233 0 obj
-<< /S /GoTo /D (section.5.1) >>
-endobj
-236 0 obj
-(5.1 The Lightweight Resolver Library)
-endobj
-237 0 obj
-<< /S /GoTo /D (section.5.2) >>
-endobj
-240 0 obj
-(5.2 Running a Resolver Daemon)
-endobj
-241 0 obj
-<< /S /GoTo /D (chapter.6) >>
-endobj
-244 0 obj
-(6 BIND 9 Configuration Reference)
-endobj
-245 0 obj
-<< /S /GoTo /D (section.6.1) >>
-endobj
-248 0 obj
-(6.1 Configuration File Elements)
-endobj
-249 0 obj
-<< /S /GoTo /D (subsection.6.1.1) >>
-endobj
-252 0 obj
-(6.1.1 Address Match Lists)
-endobj
-253 0 obj
-<< /S /GoTo /D (subsubsection.6.1.1.1) >>
-endobj
-256 0 obj
-(6.1.1.1 Syntax)
-endobj
-257 0 obj
-<< /S /GoTo /D (subsubsection.6.1.1.2) >>
-endobj
-260 0 obj
-(6.1.1.2 Definition and Usage)
-endobj
-261 0 obj
-<< /S /GoTo /D (subsection.6.1.2) >>
-endobj
-264 0 obj
-(6.1.2 Comment Syntax)
-endobj
-265 0 obj
-<< /S /GoTo /D (subsubsection.6.1.2.1) >>
-endobj
-268 0 obj
-(6.1.2.1 Syntax)
-endobj
-269 0 obj
-<< /S /GoTo /D (subsubsection.6.1.2.2) >>
-endobj
-272 0 obj
-(6.1.2.2 Definition and Usage)
-endobj
-273 0 obj
-<< /S /GoTo /D (section.6.2) >>
-endobj
-276 0 obj
-(6.2 Configuration File Grammar)
-endobj
-277 0 obj
-<< /S /GoTo /D (subsection.6.2.1) >>
-endobj
-280 0 obj
-(6.2.1 acl Statement Grammar)
-endobj
-281 0 obj
-<< /S /GoTo /D (subsection.6.2.2) >>
-endobj
-284 0 obj
-(6.2.2 acl Statement Definition and Usage)
-endobj
-285 0 obj
-<< /S /GoTo /D (subsection.6.2.3) >>
-endobj
-288 0 obj
-(6.2.3 controls Statement Grammar)
-endobj
-289 0 obj
-<< /S /GoTo /D (subsection.6.2.4) >>
-endobj
-292 0 obj
-(6.2.4 controls Statement Definition and Usage)
-endobj
-293 0 obj
-<< /S /GoTo /D (subsection.6.2.5) >>
-endobj
-296 0 obj
-(6.2.5 include Statement Grammar)
-endobj
-297 0 obj
-<< /S /GoTo /D (subsection.6.2.6) >>
-endobj
-300 0 obj
-(6.2.6 include Statement Definition and Usage)
-endobj
-301 0 obj
-<< /S /GoTo /D (subsection.6.2.7) >>
-endobj
-304 0 obj
-(6.2.7 key Statement Grammar)
-endobj
-305 0 obj
-<< /S /GoTo /D (subsection.6.2.8) >>
-endobj
-308 0 obj
-(6.2.8 key Statement Definition and Usage)
-endobj
-309 0 obj
-<< /S /GoTo /D (subsection.6.2.9) >>
-endobj
-312 0 obj
-(6.2.9 logging Statement Grammar)
-endobj
-313 0 obj
-<< /S /GoTo /D (subsection.6.2.10) >>
-endobj
-316 0 obj
-(6.2.10 logging Statement Definition and Usage)
-endobj
-317 0 obj
-<< /S /GoTo /D (subsubsection.6.2.10.1) >>
-endobj
-320 0 obj
-(6.2.10.1 The channel Phrase)
-endobj
-321 0 obj
-<< /S /GoTo /D (subsubsection.6.2.10.2) >>
-endobj
-324 0 obj
-(6.2.10.2 The category Phrase)
-endobj
-325 0 obj
-<< /S /GoTo /D (subsection.6.2.11) >>
-endobj
-328 0 obj
-(6.2.11 lwres Statement Grammar)
-endobj
-329 0 obj
-<< /S /GoTo /D (subsection.6.2.12) >>
-endobj
-332 0 obj
-(6.2.12 lwres Statement Definition and Usage)
-endobj
-333 0 obj
-<< /S /GoTo /D (subsection.6.2.13) >>
-endobj
-336 0 obj
-(6.2.13 masters Statement Grammar)
-endobj
-337 0 obj
-<< /S /GoTo /D (subsection.6.2.14) >>
-endobj
-340 0 obj
-(6.2.14 masters Statement Definition and Usage)
-endobj
-341 0 obj
-<< /S /GoTo /D (subsection.6.2.15) >>
-endobj
-344 0 obj
-(6.2.15 options Statement Grammar)
-endobj
-345 0 obj
-<< /S /GoTo /D (subsection.6.2.16) >>
-endobj
-348 0 obj
-(6.2.16 options Statement Definition and Usage)
-endobj
-349 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.1) >>
-endobj
-352 0 obj
-(6.2.16.1 Boolean Options)
-endobj
-353 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.2) >>
-endobj
-356 0 obj
-(6.2.16.2 Forwarding)
-endobj
-357 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.3) >>
-endobj
-360 0 obj
-(6.2.16.3 Dual-stack Servers)
-endobj
-361 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.4) >>
-endobj
-364 0 obj
-(6.2.16.4 Access Control)
-endobj
-365 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.5) >>
-endobj
-368 0 obj
-(6.2.16.5 Interfaces)
-endobj
-369 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.6) >>
-endobj
-372 0 obj
-(6.2.16.6 Query Address)
-endobj
-373 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.7) >>
-endobj
-376 0 obj
-(6.2.16.7 Zone Transfers)
-endobj
-377 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.8) >>
-endobj
-380 0 obj
-(6.2.16.8 UDP Port Lists)
-endobj
-381 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.9) >>
-endobj
-384 0 obj
-(6.2.16.9 Operating System Resource Limits)
-endobj
-385 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.10) >>
-endobj
-388 0 obj
-(6.2.16.10 Server Resource Limits)
-endobj
-389 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.11) >>
-endobj
-392 0 obj
-(6.2.16.11 Periodic Task Intervals)
-endobj
-393 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.12) >>
-endobj
-396 0 obj
-(6.2.16.12 Topology)
-endobj
-397 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.13) >>
-endobj
-400 0 obj
-(6.2.16.13 The sortlist Statement)
-endobj
-401 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.14) >>
-endobj
-404 0 obj
-(6.2.16.14 RRset Ordering)
-endobj
-405 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.15) >>
-endobj
-408 0 obj
-(6.2.16.15 Tuning)
-endobj
-409 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.16) >>
-endobj
-412 0 obj
-(6.2.16.16 Built-in server information zones)
-endobj
-413 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.17) >>
-endobj
-416 0 obj
-(6.2.16.17 Built-in Empty Zones)
-endobj
-417 0 obj
-<< /S /GoTo /D (subsubsection.6.2.16.18) >>
-endobj
-420 0 obj
-(6.2.16.18 Additional Section Caching)
-endobj
-421 0 obj
-<< /S /GoTo /D (subsection.6.2.17) >>
-endobj
-424 0 obj
-(6.2.17 statistics-channels Statement Grammar)
-endobj
-425 0 obj
-<< /S /GoTo /D (subsection.6.2.18) >>
-endobj
-428 0 obj
-(6.2.18 statistics-channels Statement Definition and Usage)
-endobj
-429 0 obj
-<< /S /GoTo /D (subsection.6.2.19) >>
-endobj
-432 0 obj
-(6.2.19 server Statement Grammar)
-endobj
-433 0 obj
-<< /S /GoTo /D (subsection.6.2.20) >>
-endobj
-436 0 obj
-(6.2.20 server Statement Definition and Usage)
-endobj
-437 0 obj
-<< /S /GoTo /D (subsection.6.2.21) >>
-endobj
-440 0 obj
-(6.2.21 trusted-keys Statement Grammar)
-endobj
-441 0 obj
-<< /S /GoTo /D (subsection.6.2.22) >>
-endobj
-444 0 obj
-(6.2.22 trusted-keys Statement Definition and Usage)
-endobj
-445 0 obj
-<< /S /GoTo /D (subsection.6.2.23) >>
-endobj
-448 0 obj
-(6.2.23 view Statement Grammar)
-endobj
-449 0 obj
-<< /S /GoTo /D (subsection.6.2.24) >>
-endobj
-452 0 obj
-(6.2.24 view Statement Definition and Usage)
-endobj
-453 0 obj
-<< /S /GoTo /D (subsection.6.2.25) >>
-endobj
-456 0 obj
-(6.2.25 zone Statement Grammar)
-endobj
-457 0 obj
-<< /S /GoTo /D (subsection.6.2.26) >>
-endobj
-460 0 obj
-(6.2.26 zone Statement Definition and Usage)
-endobj
-461 0 obj
-<< /S /GoTo /D (subsubsection.6.2.26.1) >>
-endobj
-464 0 obj
-(6.2.26.1 Zone Types)
-endobj
-465 0 obj
-<< /S /GoTo /D (subsubsection.6.2.26.2) >>
-endobj
-468 0 obj
-(6.2.26.2 Class)
-endobj
-469 0 obj
-<< /S /GoTo /D (subsubsection.6.2.26.3) >>
-endobj
-472 0 obj
-(6.2.26.3 Zone Options)
-endobj
-473 0 obj
-<< /S /GoTo /D (subsubsection.6.2.26.4) >>
-endobj
-476 0 obj
-(6.2.26.4 Dynamic Update Policies)
-endobj
-477 0 obj
-<< /S /GoTo /D (section.6.3) >>
-endobj
-480 0 obj
-(6.3 Zone File)
-endobj
-481 0 obj
-<< /S /GoTo /D (subsection.6.3.1) >>
-endobj
-484 0 obj
-(6.3.1 Types of Resource Records and When to Use Them)
-endobj
-485 0 obj
-<< /S /GoTo /D (subsubsection.6.3.1.1) >>
-endobj
-488 0 obj
-(6.3.1.1 Resource Records)
-endobj
-489 0 obj
-<< /S /GoTo /D (subsubsection.6.3.1.2) >>
-endobj
-492 0 obj
-(6.3.1.2 Textual expression of RRs)
-endobj
-493 0 obj
-<< /S /GoTo /D (subsection.6.3.2) >>
-endobj
-496 0 obj
-(6.3.2 Discussion of MX Records)
-endobj
-497 0 obj
-<< /S /GoTo /D (subsection.6.3.3) >>
-endobj
-500 0 obj
-(6.3.3 Setting TTLs)
-endobj
-501 0 obj
-<< /S /GoTo /D (subsection.6.3.4) >>
-endobj
-504 0 obj
-(6.3.4 Inverse Mapping in IPv4)
-endobj
-505 0 obj
-<< /S /GoTo /D (subsection.6.3.5) >>
-endobj
-508 0 obj
-(6.3.5 Other Zone File Directives)
-endobj
-509 0 obj
-<< /S /GoTo /D (subsubsection.6.3.5.1) >>
-endobj
-512 0 obj
-(6.3.5.1 The \044ORIGIN Directive)
-endobj
-513 0 obj
-<< /S /GoTo /D (subsubsection.6.3.5.2) >>
-endobj
-516 0 obj
-(6.3.5.2 The \044INCLUDE Directive)
-endobj
-517 0 obj
-<< /S /GoTo /D (subsubsection.6.3.5.3) >>
-endobj
-520 0 obj
-(6.3.5.3 The \044TTL Directive)
-endobj
-521 0 obj
-<< /S /GoTo /D (subsection.6.3.6) >>
-endobj
-524 0 obj
-(6.3.6 BIND Master File Extension: the \044GENERATE Directive)
-endobj
-525 0 obj
-<< /S /GoTo /D (subsection.6.3.7) >>
-endobj
-528 0 obj
-(6.3.7 Additional File Formats)
-endobj
-529 0 obj
-<< /S /GoTo /D (section.6.4) >>
-endobj
-532 0 obj
-(6.4 BIND9 Statistics)
-endobj
-533 0 obj
-<< /S /GoTo /D (subsubsection.6.4.0.1) >>
-endobj
-536 0 obj
-(6.4.0.1 The Statistics File)
-endobj
-537 0 obj
-<< /S /GoTo /D (subsection.6.4.1) >>
-endobj
-540 0 obj
-(6.4.1 Statistics Counters)
-endobj
-541 0 obj
-<< /S /GoTo /D (subsubsection.6.4.1.1) >>
-endobj
-544 0 obj
-(6.4.1.1 Name Server Statistics Counters)
-endobj
-545 0 obj
-<< /S /GoTo /D (subsubsection.6.4.1.2) >>
-endobj
-548 0 obj
-(6.4.1.2 Zone Maintenance Statistics Counters)
-endobj
-549 0 obj
-<< /S /GoTo /D (subsubsection.6.4.1.3) >>
-endobj
-552 0 obj
-(6.4.1.3 Resolver Statistics Counters)
-endobj
-553 0 obj
-<< /S /GoTo /D (subsubsection.6.4.1.4) >>
-endobj
-556 0 obj
-(6.4.1.4 Compatibility with BIND 8 Counters)
-endobj
-557 0 obj
-<< /S /GoTo /D (chapter.7) >>
-endobj
-560 0 obj
-(7 BIND 9 Security Considerations)
-endobj
-561 0 obj
-<< /S /GoTo /D (section.7.1) >>
-endobj
-564 0 obj
-(7.1 Access Control Lists)
-endobj
-565 0 obj
-<< /S /GoTo /D (section.7.2) >>
-endobj
-568 0 obj
-(7.2 Chroot and Setuid)
-endobj
-569 0 obj
-<< /S /GoTo /D (subsection.7.2.1) >>
-endobj
-572 0 obj
-(7.2.1 The chroot Environment)
-endobj
-573 0 obj
-<< /S /GoTo /D (subsection.7.2.2) >>
-endobj
-576 0 obj
-(7.2.2 Using the setuid Function)
-endobj
-577 0 obj
-<< /S /GoTo /D (section.7.3) >>
-endobj
-580 0 obj
-(7.3 Dynamic Update Security)
-endobj
-581 0 obj
-<< /S /GoTo /D (chapter.8) >>
-endobj
-584 0 obj
-(8 Troubleshooting)
-endobj
-585 0 obj
-<< /S /GoTo /D (section.8.1) >>
-endobj
-588 0 obj
-(8.1 Common Problems)
-endobj
-589 0 obj
-<< /S /GoTo /D (subsection.8.1.1) >>
-endobj
-592 0 obj
-(8.1.1 It's not working; how can I figure out what's wrong?)
-endobj
-593 0 obj
-<< /S /GoTo /D (section.8.2) >>
-endobj
-596 0 obj
-(8.2 Incrementing and Changing the Serial Number)
-endobj
-597 0 obj
-<< /S /GoTo /D (section.8.3) >>
-endobj
-600 0 obj
-(8.3 Where Can I Get Help?)
-endobj
-601 0 obj
-<< /S /GoTo /D (appendix.A) >>
-endobj
-604 0 obj
-(A Appendices)
-endobj
-605 0 obj
-<< /S /GoTo /D (section.A.1) >>
-endobj
-608 0 obj
-(A.1 Acknowledgments)
-endobj
-609 0 obj
-<< /S /GoTo /D (subsection.A.1.1) >>
-endobj
-612 0 obj
-(A.1.1 A Brief History of the DNS and BIND)
-endobj
-613 0 obj
-<< /S /GoTo /D (section.A.2) >>
-endobj
-616 0 obj
-(A.2 General DNS Reference Information)
-endobj
-617 0 obj
-<< /S /GoTo /D (subsection.A.2.1) >>
-endobj
-620 0 obj
-(A.2.1 IPv6 addresses \(AAAA\))
-endobj
-621 0 obj
-<< /S /GoTo /D (section.A.3) >>
-endobj
-624 0 obj
-(A.3 Bibliography \(and Suggested Reading\))
-endobj
-625 0 obj
-<< /S /GoTo /D (subsection.A.3.1) >>
-endobj
-628 0 obj
-(A.3.1 Request for Comments \(RFCs\))
-endobj
-629 0 obj
-<< /S /GoTo /D (subsection.A.3.2) >>
-endobj
-632 0 obj
-(A.3.2 Internet Drafts)
-endobj
-633 0 obj
-<< /S /GoTo /D (subsection.A.3.3) >>
-endobj
-636 0 obj
-(A.3.3 Other Documents About BIND)
-endobj
-637 0 obj
-<< /S /GoTo /D (appendix.B) >>
-endobj
-640 0 obj
-(B Manual pages)
-endobj
-641 0 obj
-<< /S /GoTo /D (section.B.1) >>
-endobj
-644 0 obj
-(B.1 dig)
-endobj
-645 0 obj
-<< /S /GoTo /D (section.B.2) >>
-endobj
-648 0 obj
-(B.2 host)
-endobj
-649 0 obj
-<< /S /GoTo /D (section.B.3) >>
-endobj
-652 0 obj
-(B.3 dnssec-keygen)
-endobj
-653 0 obj
-<< /S /GoTo /D (section.B.4) >>
-endobj
-656 0 obj
-(B.4 dnssec-signzone)
-endobj
-657 0 obj
-<< /S /GoTo /D (section.B.5) >>
-endobj
-660 0 obj
-(B.5 named-checkconf)
-endobj
-661 0 obj
-<< /S /GoTo /D (section.B.6) >>
-endobj
-664 0 obj
-(B.6 named-checkzone)
-endobj
-665 0 obj
-<< /S /GoTo /D (section.B.7) >>
-endobj
-668 0 obj
-(B.7 named)
-endobj
-669 0 obj
-<< /S /GoTo /D (section.B.8) >>
-endobj
-672 0 obj
-(B.8 rndc)
-endobj
-673 0 obj
-<< /S /GoTo /D (section.B.9) >>
-endobj
-676 0 obj
-(B.9 rndc.conf)
-endobj
-677 0 obj
-<< /S /GoTo /D (section.B.10) >>
-endobj
-680 0 obj
-(B.10 rndc-confgen)
-endobj
-681 0 obj
-<< /S /GoTo /D [682 0 R /FitH ] >>
-endobj
-685 0 obj <<
-/Length 236
-/Filter /FlateDecode
->>
-stream
-xÚÁJA †ïó9¶‡M'™d2s´T¥‚Beoâai·Rp·t­ïïÔÕ*êArÉÿ‘ü /A}È–ՓºsžŠvíèƒ ¨B)þP+!ÃlQ¡bJÕÂwìNì1úÈP©)&>áóÚÍ®˜€-A½bEM¦pæêÍÃd¾¼[L+V?ÉcºØt»~÷ršã~[÷í¶Ú~ÝNë a¤(±øË˜’å÷9·MÿÚ<Ÿ
-endobj
-682 0 obj <<
-/Type /Page
-/Contents 685 0 R
-/Resources 684 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 691 0 R
->> endobj
-683 0 obj <<
-/Type /XObject
-/Subtype /Form
-/FormType 1
-/PTEX.FileName (./isc-logo.pdf)
-/PTEX.PageNumber 1
-/PTEX.InfoDict 692 0 R
-/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000]
-/BBox [0.00000000 0.00000000 255.00000000 149.00000000]
-/Resources <<
-/ProcSet [ /PDF /Text ]
-/ColorSpace <<
-/R15 693 0 R
-/R9 694 0 R
-/R11 695 0 R
-/R13 696 0 R
->>/ExtGState <<
-/R17 697 0 R
-/R8 698 0 R
->>/Font << /R19 699 0 R >>
->>
-/Length 700 0 R
-/Filter /FlateDecode
->>
-stream
-xœu˜;“d9…ýû+®Ùe´R©— lG`XËkz#†10gwÙ~6ßÉ[53}+ˆ}tI%åóäÉT½ßs*{Ö?·¿××í'¿ûŸ?lï·¼Ÿ#5Û_7}÷n³æ3õùæóýÌ»íwû7\^ûõÃVö×oøÿ_·ÒvþmÕSéœmqöÚ¾æh)ŸÏŽ™,ײ—Zjj•ÅVÊ•ëµÍÔÆn¹§±†Ö5͵[+i6}Ÿk’¨Í–§ºØ±ÖRöÝVIƒ e´Ä¶yKfZWTp¾ÜÏç9ùÀ–ÆŒõÒý>R_­êÂJsJƒ¥.ŸËÊiôÝ×\
-û”_g'®Û_6´§ÖØËÍ“[8føƒ”œKj“È4­¹¯5Ã#6ÆJ²4·œª+򿯤kÇä~¤ž19wR7ñm¦U%s˜,ÃT|
-Û2Æ‚ŒjUçq¥K"ηbøR<™¬¨™ãŸ¹×²RU| Ñ$ÞÕZ*Š–ŒCõu«|ˆhL$,I˜–¼`¥Y|ÃNżŠLó’#pÕ‹BÖŽj9-- 9@‘ €DÌ©….¶áJ{N]Á©¥Z*zÃ3…?´T®²$À“%ÁXF°Zê%.ä’@ŽO­—€!$t\'<޶*W
-èj˵ãB;Žþ"%«ê;¥+ßÚ)Éú¾Œ¤IJ5yÝGN>³ʧ*=5Dt'ŸtˇÀùiQ{
- ˜‚ÚIq%˜3vH­wÁKAįr‹þq n[Uz¯!*â)ôàKG°€ÝgG-dL#¹X0¹Â“@ñ´×£^ëµ½æHÕÊ_7S41Ã,ëÀO%ê*\ç/1v¢\¨Î¡¨êG´P:‘Sœ¸1ÀÞ£q‹uc¤,¯J¶”e— '‚; F/É&N(AWÖšNfãÀŠq‚ì’htËØ“ªØOàÙ‰GÎ4óHD'ª:SÙ#Oœ™äD4Ltæª3—=Ý™pÂSè¬F$_)^"åÛ•.ªd­Ôd´ÁJŒÓ¤¨,à}‹F:IòP<Á:‚é¡û½¶H­JŒŒÀvÎ9±”8G
-%S}8\Ž»Ä{!•pŸj yî8NíÖL-»Ä¼1_yk¦“ˆÔøèus‘#¸W™˜ÁAŹ{0º¤Œ4±à8pª0ŠÚž]#H ªiÓºhS”28Ú*7»Å'¤«ÎwMpíD¦9d=‹rêÀ Öd ðlÎmF1Û\ÓjÍ J$¾›ƒlHO†¯,x!Fàqê*i!ߪ ‰ ž£‘\·î"o6,âM(¨$‡^êP^Å>˜³ ÔV¬ˆ¦#Z†ª¼§?Áj¹“LÃ¥R»š¨¦VÅo€Ž –eõT¥ Ø€ùU¢ÙÜ* „2ÊNvÊ@ÈËY#E?°+êEn£±¦h“ÊFØläƒbY3Âc0CEW'ñÖÆ4€»Öm"ŒÙ©˜94A¬#—ª Áõ¢ÙëN)ÅZþÅÖ…µˆ‘ç#µxì‡Ð:Å ÑqYŠ¢ŽÞ\U¢ÜÆÕ²hb \´ÑP£’šð¢>Ô9Ž¨Ñ¸ˆùUm!‰§¢Zh!ú‹~(Ât~¿ÙA,«×>*"œD0QEuÑ|Îóî`‰ö™%„U™&2WjDó5EŠ)€®ä
-«SÕ0Ý4jÆ0çU6Ñœ5Õ”ê0*ÊBóî" gܲ¥–ÃÄHgæ:2®xļô¨ ¤èCúð¨˜*#{ëÖâsôÎ
-¯Éæ’×M¼ 1ÖQQ ½»î0@yP,£§"cf6‹ÃH%aDšjÑ÷ÄPjëš(²f§ Ø®ì·q,fÙLhgÌŒ#Çd±0xDÉYWíû¾0yš’*á_àºFî®.˜tƨj²ùKÐõàº5£7¬bi«¸3׽Ŕ
-óÔPĮ́Yu¢e¢a5エ0kÓ,¤×äþ¤V¡Ò(*Gãë0[;=‚Ãát çX3pD¦iÜ'ÃëÑ+ aqz JC "Ê1ô(Œ
-FÑÞIca­Ç0Ú) ¹A¿+ÇÀº ¸|-Tuùa>‚s:½¯•~K“ÒÞV׋„OÒAŠI… ɪÁr2Q“°Ø¨Á>.z
-ÏÆï¤«eÇNdæÌdï"gK2cëÉ—GoOá8GëÏϦ:B Àht[
-endobj
-692 0 obj
-<<
-/Producer (AFPL Ghostscript 8.51)
-/CreationDate (D:20050606145621)
-/ModDate (D:20050606145621)
-/Title (Alternate-ISC-logo-v2.ai)
-/Creator (Adobe Illustrator\(R\) 11)
-/Author (Douglas E. Appelt)
->>
-endobj
-693 0 obj
-[/Separation/PANTONE#201805#20C/DeviceCMYK 701 0 R]
-endobj
-694 0 obj
-[/Separation/PANTONE#207506#20C/DeviceCMYK 702 0 R]
-endobj
-695 0 obj
-[/Separation/PANTONE#20301#20C/DeviceCMYK 703 0 R]
-endobj
-696 0 obj
-[/Separation/PANTONE#20871#20C/DeviceCMYK 704 0 R]
-endobj
-697 0 obj
-<<
-/Type /ExtGState
-/SA true
->>
-endobj
-698 0 obj
-<<
-/Type /ExtGState
-/OPM 1
->>
-endobj
-699 0 obj
-<<
-/BaseFont /NVXWCK#2BTrajanPro-Bold
-/FontDescriptor 705 0 R
-/Type /Font
-/FirstChar 67
-/LastChar 136
-/Widths [ 800 0 0 0 0 0 452 0 0 0 0 0 0 0 0 0 582 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 841 633 576 686 590 540 923 827 407 760]
-/Encoding 706 0 R
-/Subtype /Type1
->>
-endobj
-700 0 obj
-2362
-endobj
-701 0 obj
-<<
-/Filter /FlateDecode
-/FunctionType 4
-/Domain [ 0 1]
-/Range [ 0 1 0 1 0 1 0 1]
-/Length 39
->>
-stream
-xœ«N)-P0PÈ-ÍQH­HÎP
-endobj
-702 0 obj
-<<
-/Filter /FlateDecode
-/FunctionType 4
-/Domain [ 0 1]
-/Range [ 0 1 0 1 0 1 0 1]
-/Length 36
->>
-stream
-xœ«N)-P0PÈ-ÍQH­HÎP
-endobj
-703 0 obj
-<<
-/Filter /FlateDecode
-/FunctionType 4
-/Domain [ 0 1]
-/Range [ 0 1 0 1 0 1 0 1]
-/Length 40
->>
-stream
-xœ«N)-P0TÈ-ÍQH­HÎP
-endobj
-704 0 obj
-<<
-/Filter /FlateDecode
-/FunctionType 4
-/Domain [ 0 1]
-/Range [ 0 1 0 1 0 1 0 1]
-/Length 50
->>
-stream
-xœ«N)-P0Ð365³TÈ-ÍQH­HÎP€Š™X ‹™›#Ä ô -,ŒÀüZ
-endobj
-705 0 obj
-<<
-/Type /FontDescriptor
-/FontName /NVXWCK#2BTrajanPro-Bold
-/FontBBox [ -45 -17 923 767]
-/Flags 4
-/Ascent 767
-/CapHeight 767
-/Descent -17
-/ItalicAngle 0
-/StemV 138
-/MissingWidth 500
-/CharSet (/Msmall/C/Ysmall/Nsmall/Osmall/Esmall/Rsmall/S/Ssmall/I/Tsmall/Ismall/Usmall)
-/FontFile3 707 0 R
->>
-endobj
-706 0 obj
-<<
-/Type /Encoding
-/BaseEncoding /WinAnsiEncoding
-/Differences [ 127/Nsmall/Tsmall/Esmall/Rsmall/Ysmall/Ssmall/Msmall/Osmall/Ismall/Usmall]
->>
-endobj
-707 0 obj
-<<
-/Filter /FlateDecode
-/Subtype /Type1C
-/Length 2657
->>
-stream
-xœ}VkpUž!!i0dHÈ:=«°î"ŠÏ*QpYWÊD@p• ‘$$ç$!a2ïžé×éîéǼ’ÌäÍC Ãû)Á]^º+–B-®k)ZˆËµîÄf‹½´J«¬ýÓÕ÷ÜÛçÜïœï|§Í¦Ì1&³Ù<q™£d]IM‘£ö¾§j«J ÓŒty•óûÙ#ÚØ;M¦7Õ “9™§~•cŒ†oGÛ&¢ŽIÆÁã jë6:*×V4ÚzàìóKk_+³/ÝØÐXVÝ`/¬YS먫u”4–•ÞoŸ_Ue_bm°/)k(slÀÆ[¡í• ö²ÊÆŠ2‡½Äî([[‰?w”•Ú%¥eÕ%ŽõöZcç'ËòÿÉ^YcǾì/ÖT«¥ØØ`/©)½ÔŽFYSÛTÓè¨,k¸ßd2MX°´0Dyi ècX“iºéÓL³Í<ÓLšíæ)æ»ÍÓÍ3ÌÓÌ¿1åâ|™^0!óæ1 3ò2­™h쬞ì=ÄêqóÇ}>þdš…Ãhëôõa3NO?œ™iv¤è›…$}ت?‰´±èË,Ý®³"cqC;‘µjô=©ãuVú¨ÕxÓUîÈçðÈœCæè×éÎþŒt§Óz>Tww$Õ°,'£ÛãŸBœÐ85HqL+kc6zjœ-kŠ_ô?„>M/DãQàZçÕ çɽ»Oö|
-_ÀźŠþúD…PE¸EJ‹ˆZ»`»øâ€8(ÅA…‘}Bµ´>R&+åáE ÿf­YPxïÃôñð Ìܤg~ý(qe.Ê®Fw‘›¾ä<8ò§ý“?ßúzñÛW»§Z>CšÓjùè¼9üÆûzÞƒa¸ºú=}•Úî¼ÇN7Â~â}CØ,ÎÂÖêö–îz¹
-„W
-©š¤õ\ o…„ TZ
-ˆõjIt!†CΞ«y|×ÓhÌ£¤åËýk?^Ø^ /ç/õùmþ ÉF'™nH P¬ÏÅÛøVf1,ƒ&‰î–ÏZ†ö‡ rÓ/±©‘Ò”=†&eàÇn+Ì„¹t [r63Î˹€ð2,TÙ¹NK½°N³çàpÎÝ1MReZò¹šDÑMV‡ƒ)v33—àþ˜ hlßµäf9.jBˆ¨"j
-%zÈ2(bPÏIe†§VŠ Q
-'x6FöÐQ§X)®‡ZÐg¹ßÏÆwÌk6'¾¿+ãóËV¦–ªl`Ý\‚@h†¡T.Bn·¤$tÀnv§á0¡‰Z8¦(J\¤Kò*x¯Mˆ‰ío¡Oò¤¬­EGíjk´áïú”îÒ¶ú¨3Qµ®Ýè…ô$¼èF¦ÔÀùi.?Ä1,0@ËL7?ȡۙ Q <$Q>· :È:ꥎ=‘îÉcSþH( ‚A·î»Ñ˜§ûÒ5ÞÞP8
-n¨`×rŽ`ëF†â|¼?C3A•‹“pJê>8Åž0`ÅUI Ó²ßÛ"à$Ö‡©®ŸÛƒÐF¼› [¸M‰m;Ðd´jëöÎ^MëŒ$”Žpç] +rHô“Nxkz¨k `(¨ñG¶³a|oð1®@‹§Þ®/ô5»úôlôJë¦`œ‰‚
-ªVŶ° 
--R¶5ðöU…¢Ëðå q¡Âª±v:#“TsOÕ¶U(G_¬xâm#¹#—ÙTpÃȤd{ód4åÌMóqŸé¦ižÏ4Õ2€3¿Ú*e%]_Nÿj6a©úâ!4æ®/Eñ@;ªªu’Ñô€pPmïSóc’
-.9,«”à%WÃ:Î-°R,6îâ ðAZbbñn d7¥¹„‘¹yL–'®C9‹O–¤~º]ÏC¾˜«Ý›ða2…¼N’º!ðóÙÆÆP¾—m5jA…šÒø8¹SLÃ4ÚÞ­…&bö‡ýn§ »H§âëâÎa„ïº÷§ßßg>ˆ¦¤+ÐÔŒô,·5£»Ð}hZ¡ÛÐDÝ¡wÍЋôú½ßè Q„ܱߪ?~²¡¨eý«ø­Ûk‘¹é ô¡•)eúÇ~Ô|À•Tqî¦c1[Ö5ÕÒæÃ¯¬Õ2ÇóàYf-ë 1‹Ë_|åç=>–fH|
-&–ê„n>ÚÝ)D 6Á
-x¸ \3§gA34–ITž-‹R8õ-ǵÛö2ªWuÉ~Á!"(0Š*FÂ͢ùĨ¸SˆˆoÊQPˆ0¦šåiFäݸVN^_!Ô‚–bž "-Qy$ÑÎsªm ¥Ä¡@·âJ=Ŧ¿íÝëL ÍDËQÆTË?GúÓlRÎ$F*4’ƒð6–š\`Œª Ñ“Œôöd]˜é`û™ü9¸DijeI Û.q
-ȼLçÇ<;— *X³«¥×ÛGâ_Y1ETïƒ4ˆÒ-U…_>´üØ¢æ}õï÷v¼ §ádù#¹rÛŸå¥@ÔÁ\5l…hð<8Ús·
-»O·Øèv61Bá5*È<6ÞÍ,‡bh‘˜¶ž\Î]Çé#¹#ØÔÍ1Oúñ°Ï¤5oÂ]цÆß4}h˜î0$å,6ü¼”A,¯?/å;Rôcy6Ò½UJ¿§Y½X^é¶ÙÉŸ‡‹º–2¸K|o½Ø”/Ȩ/ƒ( Â2Ð#žNMKðrˆ rœÛf9ËyZ¸Ú}$«Ö õ–©)  h`iÎGàAç÷´€H+Šˆ…Õ&*áX$žèìVŽhª”—›¾÷‡A1Ý£¤œÏ0‰÷—Hi éƒw~I(Áö2;à]¸L ™x4[¡OÜ,¾®ÆûÂQQ°”FdQ“ƒ¢¬„%\î¢Åâ:Ó;ÈÑ”ÌEb1ž’¡ˆÿ§=$¸¥?Iš¿CÐõ3¾C=VÐ'>·¯ôÌÒ+Ü~8 ç#;úÁ_£×á*qň+ô 8®‚ãÆpêŒ_YR”¾d%a ç¡H\eÄõãDf£Ñ¨­ŽR[kφG¸ù/WT®ò•A5”H¥ÛVoo8hnû)¼ÞÃDn…ñëqÌzfåhý&þcQbµXÇß‚çLŽúõ;{²Ðñðué¿ÊÛÙ†-©[SÄ-Û¼ÔyubÜñhüm´œ4^Ë™ ääšLÿQ‹¡endstream
-endobj
-686 0 obj <<
-/D [682 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-687 0 obj <<
-/D [682 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-684 0 obj <<
-/Font << /F21 690 0 R >>
-/XObject << /Im1 683 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-710 0 obj <<
-/Length 999
-/Filter /FlateDecode
->>
-stream
-xÚµV]“¢:}÷Wð¨UC6|å‘AT¶\ÀÚÚÝGq†ªQ¼‚;5ÿþ6$Qï¼lÝò!ô±ûôI'„h~D3-dqÊ5›ÈÄÄÔÖ»Ö^À7‰ÁšŽãNëügðó7Ö6
-;IgÒÎdwÕ-·õûê8"Î0¿–]ëgaÄ©åh6eÀŒÏäS`ý}«že"ŽÒÅlÊYäÇ]QUE¹œêRŒ§*—õ¬AÞ!d(ç»rSl{+«ýF›¢ªÅó©–Ö¯…ì¦ê¦ømyTÿþÆát<”•t¿õ«°®Y)ORÌm.q Ùu8øŒ€„ nš´-í5ùžeü—ã
-6d#IZgù§ØäÅvU+KF_=—òNÑeít_ÖÅ:¿ª¿«÷p%k~8ä+YT!ý«··¶Âؤæ$\V¹‹¼j›sÄŒæR"6âŒÚ-$›ù²ÍâIö4âtè&r%HŸHâïÁØ‹YsrÝT!š™°Ýh¬=aŒÁ
-Ý`.Án
-CfIÜ( |é|
-²™°ê&cq$á¢e¤_RÖ¨ h6Sï¼p9¢éUò`¾UË=&ñDŒs?ñfàÙÆÐ}  ûÑÚ°³7[±#-»IE~š"ÅAŒ‘äë÷!ž <ë)½%õ0pCiOâDe•éÓ…ïnø 4N|¯å¨nÛèf B´ @029ç}=½8JýoK AeLwîNÏr\çïyŸfn“(Kc¨-Q˜.Ãvõ¬þ$‰ç²¶8ítnXa÷âÕ/S_•'·{ÐçM b§ЇœôewÕèeAõwÊη'SäOÃ`êGžßÏ·‘ÛËÂ@Ô!¤¿å¢!“³¡àx™^攑Ý$HÏZÄˬO%¾¢ Ô"ÿ‚rw4ÎgêmmsøáÐqá'Ð<s·«gòÙ©¹ù’¨73Qó4ºûSùþú¦«lºa#æ8ôþ—ˆ:ðŲٙTû]½!}N™Eï0ÿýžfendstream
-endobj
-709 0 obj <<
-/Type /Page
-/Contents 710 0 R
-/Resources 708 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 691 0 R
->> endobj
-711 0 obj <<
-/D [709 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-708 0 obj <<
-/Font << /F23 714 0 R /F14 717 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-720 0 obj <<
-/Length 2891
-/Filter /FlateDecode
->>
-stream
-xÚíMsÛȆïþ¼E:p2ß
-–˜•U~}Àô )ÚB¼k¯E–¢$6ºÝž™%fÜý³Ô0®2=K2Í f¶X½à³k÷»7/„6Š­”û&òÛ¹Q)3©Lfs|‘——/þøZŠ™Ô,I1»ü4ø2’I©²ÙåÕ?ŽN«²)Êf}üÏË?uˬ´íûùln%Ó©J»wŠã¹àœ—M]]mͲ*[«g—!£³\è™M3–h.ÚPú_Ö׳þŇ­ØýûçØ
-W±ïëå*¯úoÞæ®x­]Δܫ!$j2È¢
-¤§àâ6¿<™îÏLñ9. u“¹@†X‚‹H¤ó c™5™B\(à¢)òÛææ–g‡"dm2ÈB«B  ƒB‚t>ÔZ3cÅPC_Cœæ‹›ey=Z=¨Tì]±ùX™2+¹’øDBÀnŽ #„ì\¿‰#‰ƒB„ô>ŒJ2måPS˜PS¼®êÿäÝûUÇŠþN0_aB ÚAö&³ )6¶Ô!؈ÄA±Az†É™²z¨4¬>bë ´“þvsÛ,ïný[>T·íò7Sö™®=‚X®É0 C
-†-9"qP0ìxLJÇpî­³„%ÊMh­séO³_ž¿{åE.ÖÕ¦^€äÅ¿7˺XÁÙx4]ኟ9åi‘Sîëvi£i—#Ò³ë5v¸ ]ž¬Rý .Ã1÷~üôã¨OOÿºMQ÷¢OÓ<U‡Íòþ
-9žzaCâþÚÒ'é=
-5ž't9*?;^£·w÷O“>?Cßk¾
- ãGyiKnSñSî,Hîä; Rw"&Eé=l»¨Œ3-¸tBûщç¦ß¼WåíC|×åÝf{EDÈÙT"°!AÄ–&±8"hïIÊ”û.F'~Çm«'€Ãhõlú™ƒ8žÉâ#CJ|œ~JüH”ø¤w˜H\éΤ𜨰1ðç*÷¥ØËü6/])–Jsè-úR˜ ß“aB†LXO¡ÇaŠÄAÁDz0Í„0P•(r™çkü®2ÑÏ瑜ßh‚ÌNÆRØ`å(l"qPØÞ‡ HKÆE%‰
-%Éåq&ªêÖŸ
-¥ï±D™*ÆÓ¬ŸÚ´ßH<¹ºwkØl»*òfSã=ábOÝBÄÄâVb¼_ŽÈÌ®×X±.βLôC¼[ˆïªfùÉ­ïݺGÏ“|ëeacê=ˆ ‰{pKlаHi¤÷@šIݰ®<h°Åðê¡ÌWPØ}¼»Ê7§‰9@ôCäó<™¡ÁŽB©H´å:”R[–d:‚†õ!,øþUmjWÀƒÔ\¶§ é›§qé 2¤ÈÁòQèDâ Ø!½‡ÁGif3ë €°'u^.†6
-2¤PÁjÉñ&ÔX*¤÷€ŠoL–BE]*w·Ë—Š©=ÔB¿åp2Lf RŒa™)Æ"qPŒ‘Þ‡¹LpæÒ—da.;ûÞ¯3×þ¬h6wm‰¤öHßd8!–‡‚#é ‘¥Lsu4G]^œ¿9ž»7Vb_mS$H1•3lHp¶%µ?ôÅApF{ƒH-S\
-øƒÿÝÙ/ËuS”탙‰0ß™æ•Éš#CJsœuJóH”æ¤÷AsiX
-M…­æ:h¾nêãô¨ýèá·oðÐkƒh—#öùlk…lMfR,`5("qP,Þ„b‰Ðø˜Ž~]í»=Ãמ,Åzž%húg°º
-ÁîGÓäm2ƒÅREŽ7XD‚ ˆ \@pÁ,tûµDÀ'/œÕ½ÊýØø@Á_™'Hûd !E–•B*Åéö®ÒŒ‘@aaëêdz¿µÍ:ê°uõÕ¶HA‰©”!;2¬3ÁX$1Ò5–$LCK¢[ÎÂéÌù›ödŽ÷ÇršgľڀŠL% Ù¤a½ Ò"AP‡…r=|Ê?SRxÐRèWywqqvê:ûñÌ7ƒÊ'*SƒVZâï<Ž`¨ðwæ2ciìÈÛÕ÷ Ε[~©‘&Å3çë™SÿÀóøóp%ðö?ž­®Bendstream
-endobj
-719 0 obj <<
-/Type /Page
-/Contents 720 0 R
-/Resources 718 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 691 0 R
-/Annots [ 723 0 R 724 0 R 725 0 R 726 0 R 727 0 R 728 0 R 729 0 R 730 0 R 731 0 R 732 0 R 733 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R ]
->> endobj
-723 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 688.709 539.579 697.2967]
-/Subtype /Link
-/A << /S /GoTo /D (chapter.1) >>
->> endobj
-724 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 676.5858 539.579 685.4425]
-/Subtype /Link
-/A << /S /GoTo /D (section.1.1) >>
->> endobj
-725 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 664.4876 539.579 673.3442]
-/Subtype /Link
-/A << /S /GoTo /D (section.1.2) >>
->> endobj
-726 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 652.3894 539.579 661.246]
-/Subtype /Link
-/A << /S /GoTo /D (section.1.3) >>
->> endobj
-727 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 640.1914 539.579 649.1477]
-/Subtype /Link
-/A << /S /GoTo /D (section.1.4) >>
->> endobj
-728 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 628.0932 539.579 637.0495]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.1.4.1) >>
->> endobj
-729 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 615.995 539.579 624.9512]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.1.4.2) >>
->> endobj
-730 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 603.8967 539.579 612.853]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.1.4.3) >>
->> endobj
-731 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 591.7985 539.579 600.7547]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.1.4.4) >>
->> endobj
-732 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 579.7002 539.579 588.6565]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.1.4.4.1) >>
->> endobj
-733 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 567.6019 539.579 576.5582]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.1.4.4.2) >>
->> endobj
-734 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [532.6051 555.5037 539.579 564.46]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.1.4.4.3) >>
->> endobj
-735 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 543.4055 539.579 552.5112]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.1.4.5) >>
->> endobj
-736 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 531.3072 539.579 540.413]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.1.4.5.1) >>
->> endobj
-737 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 519.209 539.579 528.3147]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.1.4.6) >>
->> endobj
-738 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 496.7003 539.579 505.4125]
-/Subtype /Link
-/A << /S /GoTo /D (chapter.2) >>
->> endobj
-739 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 484.5772 539.579 493.5832]
-/Subtype /Link
-/A << /S /GoTo /D (section.2.1) >>
->> endobj
-740 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 472.4789 539.579 481.485]
-/Subtype /Link
-/A << /S /GoTo /D (section.2.2) >>
->> endobj
-741 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 460.3806 539.579 469.3867]
-/Subtype /Link
-/A << /S /GoTo /D (section.2.3) >>
->> endobj
-742 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 448.2824 539.579 457.2885]
-/Subtype /Link
-/A << /S /GoTo /D (section.2.4) >>
->> endobj
-743 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 436.1841 539.579 445.1902]
-/Subtype /Link
-/A << /S /GoTo /D (section.2.5) >>
->> endobj
-744 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 413.4314 539.579 422.288]
-/Subtype /Link
-/A << /S /GoTo /D (chapter.3) >>
->> endobj
-745 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 401.353 539.579 410.4588]
-/Subtype /Link
-/A << /S /GoTo /D (section.3.1) >>
->> endobj
-746 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 389.2548 539.579 398.3605]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.3.1.1) >>
->> endobj
-747 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 377.1565 539.579 386.2623]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.3.1.2) >>
->> endobj
-748 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 365.1579 539.579 374.164]
-/Subtype /Link
-/A << /S /GoTo /D (section.3.2) >>
->> endobj
-749 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 353.0597 539.579 362.0658]
-/Subtype /Link
-/A << /S /GoTo /D (section.3.3) >>
->> endobj
-750 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 340.9614 539.579 349.9675]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.3.3.1) >>
->> endobj
-751 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 328.7635 539.579 337.8693]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.3.3.1.1) >>
->> endobj
-752 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 316.6653 539.579 325.771]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.3.3.1.2) >>
->> endobj
-753 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 304.567 539.579 313.6728]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.3.3.2) >>
->> endobj
-754 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 281.9139 539.579 290.7706]
-/Subtype /Link
-/A << /S /GoTo /D (chapter.4) >>
->> endobj
-755 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 269.8356 539.579 278.9413]
-/Subtype /Link
-/A << /S /GoTo /D (section.4.1) >>
->> endobj
-756 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 257.7373 539.579 266.8431]
-/Subtype /Link
-/A << /S /GoTo /D (section.4.2) >>
->> endobj
-757 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 245.6391 539.579 254.7448]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.2.1) >>
->> endobj
-758 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 233.5408 539.579 242.4971]
-/Subtype /Link
-/A << /S /GoTo /D (section.4.3) >>
->> endobj
-759 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 221.4426 539.579 230.3988]
-/Subtype /Link
-/A << /S /GoTo /D (section.4.4) >>
->> endobj
-760 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 209.3443 539.579 218.3006]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.4.1) >>
->> endobj
-761 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 197.2461 539.579 206.2023]
-/Subtype /Link
-/A << /S /GoTo /D (section.4.5) >>
->> endobj
-762 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 185.1478 539.579 194.1041]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.5.1) >>
->> endobj
-763 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 173.0496 539.579 182.0058]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.4.5.1.1) >>
->> endobj
-764 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 161.051 539.579 170.0571]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.4.5.1.2) >>
->> endobj
-765 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 148.9527 539.579 157.9588]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.5.2) >>
->> endobj
-766 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 136.8545 539.579 145.8606]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.5.3) >>
->> endobj
-767 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 124.7562 539.579 133.7623]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.5.4) >>
->> endobj
-768 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 112.5583 539.579 121.5146]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.5.5) >>
->> endobj
-769 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 100.4601 539.579 109.4163]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.5.6) >>
->> endobj
-770 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 88.3618 539.579 97.3181]
-/Subtype /Link
-/A << /S /GoTo /D (section.4.6) >>
->> endobj
-771 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 76.2636 539.579 85.2199]
-/Subtype /Link
-/A << /S /GoTo /D (section.4.7) >>
->> endobj
-772 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 64.1653 539.579 73.1216]
-/Subtype /Link
-/A << /S /GoTo /D (section.4.8) >>
->> endobj
-721 0 obj <<
-/D [719 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-722 0 obj <<
-/D [719 0 R /XYZ 85.0394 711.9273 null]
->> endobj
-718 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-775 0 obj <<
-/Length 3165
-/Filter /FlateDecode
->>
-stream
-xÚí[wÛ6Çßý)ôh?‹ûå1מvw“4q_¶ÛVfJ¢W’›Í~úEZàÈØ­ÓØR{Z;1‡3žÿO ’lBý¿l¢4ÑŽ»‰q’(ÊÔd¶<£“kÿ³ïÎXÌ44…G=¿<ûËka&Ž8ÍõäòãD*E¸ÚÌj-›\^ý|þâí›ËWo.?\ürùÃÙ«ËxVè™QÑžò_g?ÿB'W>€Î(ΪÉgÿJ˜s|²<“J%…³8ûpöc<!øéÎ4û›0J¸Ð<ó«p~•ö‡ŠMŒrD ÿ“ö‘Äv1eœÒóïêU½®¶óÕõÅ”+zþ×úËæbj5?'Såx|_¤sØÉîJM}ÖÐ)Ÿ{Ú¬¯'Ý7ï¡ZÁn
- ÷ÕÚ?«×{qõsq`¬ Þ+ÒM©Ž¬ðž•óëUeû©î¾ùG³òߪOÄ Ä„¬ 1b j1™80bPÒÖEbDOÌ‹fõOJùõí:ró¡^ÿ^¯Û1†‰cEe”‘ÇbF€!ÆÔ‰›qF2q`Œ Þ óCŽöå‘ûª& ï!qêyøþÝïº'ãöæ¦Yo»?ÌWÝ×çß¿yÙ}ç gwù*
-0ÄHba¤dâÀHÙóžs%–ºSݹ{Cmêàªí¼Yr>Öëz5«Ç3N~ïñ`ã- Z°ñŒÓa™ÚóšýL1KŒéWuo³©y=s‹W‹zY¯¶~¢˜9Ö~e”ÒâO0Ä>YP2Œ“L/¨÷0i¥š©UÀe¼Qù{µ}
-EyÓ¢¢ ?õ´wP é,Fb¨@¹G%†
-êqM¤`r¢<4†I›`Ùá"Úõ/«mõï‹©pê´´zPb*KA†(©Prq  àÞ(–m ð”—u[‡VóT…ªÕUè{«ëvuþ[˜éUö˜¥b€!Æ
-0ÄPra¨dâÀPA½§áBY¢™3 –S]ù_A ©,b @©0P2q`  Þ(ReSsãA9Õ•}B–Š
-àñÉu³ÎÍt$%Úš;ðHjªBÅô– xòI:
-O.Ü{_¡„±„I *Ôá«U‹Ïë:·ÐÇ}}аŒMo¸ÒG|Ý3¦»%`ˆ¡å”ã[ðrq`(¡ÞJZ{z8(aüAP:<Ó‘Ì=¡Ñ'¤µ`ˆ!eÃÉÄ!ƒzÈ(I¨e<!søJÕ²ÚlÛûãóócéôÁþJWõ
-9.æbü@ 1~2q`ü Þ?’*Jüȇâç>ý•{ÌýUÌe1'Àãj…q’‰ãõ8í„vW‡/U57­Ô›üëÏvðR;®©MÈq1?Àãjˆñ“‰ãõøa†8«AÒÅÏ}.XÉG]B.‹9†'P+9¾q"Æ ê=µâT§$¨H:¬ã<ošE]õ¢¾íé˜*áŽøjSLW1 ÀƒÊ!Çsq`0 Þ# Ü â8·†~]æu³þ\uOXÙÝv.)?ÝV0d#f¯” hˆ°1PG”\¸÷ĆõÕÂÁÖG·OkÙxy[-¦›m5ûíÎÁÄ·wËÒ×$bªŠA
- „L¨÷‚vÄ*7¨²áÙlo…~Ñn°kÇ‹fÑÓ}Ï)qÅX
-¤Æo1ÉÅázOxHEŒÓ â¡;<~¼­Û‡íè¨ Œ9QóVL0Ĩ€º`TdâÀ¨@½'*„ F»ÓQÑ=…¶…âòÂÑóuµÚ|ÜM*”a',b⊱
-ä-ˆûA`ïªÂ\‡§þ+"8h ßIßÏù2Ë
-Ô—}ðFznžr#1þN–]žËßÈÌÐ÷±$ ò6–»ì¡ßà;åÎKž} ‰ÿ§ÿÿ_œÞk,ÛËìÈž,n)qí»¸„VD?&rCËî ùµ…Sendstream
-endobj
-774 0 obj <<
-/Type /Page
-/Contents 775 0 R
-/Resources 773 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 691 0 R
-/Annots [ 780 0 R 781 0 R 782 0 R 783 0 R 784 0 R 785 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R 798 0 R 799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R 817 0 R 818 0 R 819 0 R 820 0 R 821 0 R 822 0 R 823 0 R 824 0 R 825 0 R 826 0 R 827 0 R 828 0 R 829 0 R 830 0 R 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R ]
->> endobj
-780 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 758.4766 511.2325 767.4329]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.8.1) >>
->> endobj
-781 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 746.445 511.2325 755.4012]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.8.2) >>
->> endobj
-782 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 734.5129 511.2325 743.3696]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.8.3) >>
->> endobj
-783 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 722.3816 511.2325 731.3379]
-/Subtype /Link
-/A << /S /GoTo /D (section.4.9) >>
->> endobj
-784 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 710.3499 511.2325 719.3062]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.9.1) >>
->> endobj
-785 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 698.3182 511.2325 707.2745]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.4.9.2) >>
->> endobj
-786 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 675.998 511.2325 684.7301]
-/Subtype /Link
-/A << /S /GoTo /D (chapter.5) >>
->> endobj
-787 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 663.9862 511.2325 672.9425]
-/Subtype /Link
-/A << /S /GoTo /D (section.5.1) >>
->> endobj
-788 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 651.9545 511.2325 660.9108]
-/Subtype /Link
-/A << /S /GoTo /D (section.5.2) >>
->> endobj
-789 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 629.6343 511.2325 638.4909]
-/Subtype /Link
-/A << /S /GoTo /D (chapter.6) >>
->> endobj
-790 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 617.6225 511.2325 626.7282]
-/Subtype /Link
-/A << /S /GoTo /D (section.6.1) >>
->> endobj
-791 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 605.5908 511.2325 614.5471]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.1.1) >>
->> endobj
-792 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 593.5591 511.2325 602.5154]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.1.1.1) >>
->> endobj
-793 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 581.5275 511.2325 590.4837]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.1.1.2) >>
->> endobj
-794 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 569.4958 511.2325 578.4521]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.1.2) >>
->> endobj
-795 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 557.4641 511.2325 566.4204]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.1.2.1) >>
->> endobj
-796 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 545.4324 511.2325 554.5382]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.1.2.2) >>
->> endobj
-797 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 533.4007 511.2325 542.5065]
-/Subtype /Link
-/A << /S /GoTo /D (section.6.2) >>
->> endobj
-798 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 521.3691 511.2325 530.3254]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.1) >>
->> endobj
-799 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 509.3374 511.2325 518.2937]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.2) >>
->> endobj
-800 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 497.3057 511.2325 506.262]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.3) >>
->> endobj
-801 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 485.274 511.2325 494.2303]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.4) >>
->> endobj
-802 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 473.2424 511.2325 482.1986]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.5) >>
->> endobj
-803 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 461.2107 511.2325 470.167]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.6) >>
->> endobj
-804 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 449.179 511.2325 458.1353]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.7) >>
->> endobj
-805 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 437.1473 511.2325 446.1036]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.8) >>
->> endobj
-806 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 425.1157 511.2325 434.0719]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.9) >>
->> endobj
-807 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 413.084 511.2325 422.0403]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.10) >>
->> endobj
-808 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 401.0523 511.2325 410.0086]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.10.1) >>
->> endobj
-809 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 389.0206 511.2325 398.1264]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.10.2) >>
->> endobj
-810 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 377.0886 511.2325 386.0947]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.11) >>
->> endobj
-811 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 365.0569 511.2325 374.063]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.12) >>
->> endobj
-812 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 353.0252 511.2325 362.0313]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.13) >>
->> endobj
-813 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 340.9936 511.2325 349.9997]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.14) >>
->> endobj
-814 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 328.9619 511.2325 337.968]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.15) >>
->> endobj
-815 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 316.8305 511.2325 325.9363]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.16) >>
->> endobj
-816 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 304.8985 511.2325 313.9046]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.1) >>
->> endobj
-817 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 292.7672 511.2325 301.7235]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.2) >>
->> endobj
-818 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 280.7355 511.2325 289.6918]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.3) >>
->> endobj
-819 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 268.7038 511.2325 277.6601]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.4) >>
->> endobj
-820 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 256.6722 511.2325 265.7779]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.5) >>
->> endobj
-821 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 244.6405 511.2325 253.7462]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.6) >>
->> endobj
-822 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 232.6088 511.2325 241.5651]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.7) >>
->> endobj
-823 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 220.5771 511.2325 229.5334]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.8) >>
->> endobj
-824 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 208.5455 511.2325 217.5017]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.9) >>
->> endobj
-825 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 196.5138 511.2325 205.4701]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.10) >>
->> endobj
-826 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 184.4821 511.2325 193.4384]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.11) >>
->> endobj
-827 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 172.4504 511.2325 181.4067]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.12) >>
->> endobj
-828 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 160.4187 511.2325 169.375]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.13) >>
->> endobj
-829 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 148.3871 511.2325 157.4928]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.14) >>
->> endobj
-830 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 136.3554 511.2325 145.3117]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.15) >>
->> endobj
-831 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 124.3237 511.2325 133.4295]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.16) >>
->> endobj
-832 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 112.292 511.2325 121.3978]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.17) >>
->> endobj
-833 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 100.2604 511.2325 109.2166]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.16.18) >>
->> endobj
-834 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 88.2287 511.2325 97.185]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.17) >>
->> endobj
-835 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 76.197 511.2325 85.1533]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.18) >>
->> endobj
-836 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [499.2773 64.1653 511.2325 73.1216]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.19) >>
->> endobj
-776 0 obj <<
-/D [774 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-773 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-839 0 obj <<
-/Length 3440
-/Filter /FlateDecode
->>
-stream
-xÚí[SGÇßùzت…zû~Ù}ØÂ€R1öbRÙÚ$²4ª ÑâýôÛ£™î9B=Gô&W
-æÌ9:ÿßœ¾Îˆõ¨ÿÇzV*œì'‰¢Lõ“=Úù÷Þì±æ˜ÃpÐ!<êÕåÞß^ ÓsÄi®{—ŸÀ¹,¡Ö²ÞåðÇýãwç—§ç—~¾üvïô2ž:fTTgüuïÇŸioèý»G‰pVõîü/”0çxo²'• J
-þr½÷aï_ñ„àÝ•iêƒ(a‰²Ü$> à“0ΉuÆG§Ñ¿W}M8á´ú þpŒXK¥÷Q6/f·Å¬9 žUø¸µÖÍaýE1)ÊÅÁ!Wtÿ¤ø‰R^ŽãiYÿ¥_ëßÏû£âàÐ:ºO}”Ò¹,ƒ{r+n‰æ”µÝÐg6êÕ/. bÁîn*¶yþ•bf#Ž@@*ŒÔ{Ë‹4D)Ê[^ØV^³å|Q )>ÏÔ(K·Ô¼™õ'“þÌÃ!Žß‡Ê6bBN³‰†1kšÙnbq`Ä Þ[b„"R[@ ÿ¢Äl¯3\‰¯¬¤„f 1@Ö$rÝ€$âÀ
-„T¸÷ˈ‘ªÁ4  ‡«½>a:­Eàõt6é/|ÏU½äÄfã 1< @¶{)7†ê=¬éIíˆÖ"lk•Íš^U$\ CµKl<_ŒÕ~!¾[¾ûÝ8…Œgã 1œ ¢N‰80œPï±ß"•ñ,òDèÚxhƒ¨¶ð8Ë_â4[LX6ÀÃ
-bU7‰80Pïmã#ñYŒ4„ÅÜûO—¥ï‹T«zÔ½ðúÑIJ“ËlPZ;Œ †Éf%˜ë¶fA$3-$±dœ÷'¡fÔ·†&ëG äö«V¸ID¶Â­¦0H³íÞ:”SsÝ*ÌB‚:§=Ú Ô·ý±—±ì—ƒb›Î¾´<õy¬ø‘³Å†˜š0¥¶ûnÝT˜ž¨÷VPêW
-*À®ë\«VógT›C>²Õ†˜Ú0ߘډ80µQïQmá a†Z ¶lÔ>žNn¼ÂÇ×ãÅçZâ»ñ⪞n­O`|[@Ã͵«iˆÄ •!"Þ bï3£ÅSëtS– 4D€X“ÄvïÒIÅ
-ŠQ”ˆ£ õiR”H%M©‡øa—c’5åóøj6.RSñÃrßÐ7‡UÛc¼ŽeD¸U°X,ÇÃÔ©¬o@¤m{áÛ¾ÿbƒ¨ÙÄCŒXëÞÇ—Š#õ‡ÿÂÃe@¶ÝÌ\TPÌsisƒN|ýè¡:i}Øiy[/'LËú^V¡ÅË)ˆ\…Ìgs 1® ²W‰80®Pï-WÕm‹Ž¶\…ý¡ßÏãv­ôº•Ñþ ŒÅNu•5J «©¯—å ¾+Zš—ÐØvBÒž 0Ä ‚²bP%âÀ B½Çæ•I© L…»›:ïgk»·FéÝ”e˜Ól`€! Ô &̆÷Ô(ˆ;F´jžGc›QÐåcl6]~¼.æW¾ýªêQWzâ:ØÈ`g-2×½à O‡¤cÓkêúáÆeš'­Ø8Ø9žN&a·þûºö©™Tƒy)wc›ìK*¦9÷’‚†È%µ&#ÆN"Œ!Ô{lع®&‰x`(öÏmÌå´y\ÉÝtö‹¿¸þQÿv5½«_ úa›vý£z¦É¨¾‹¬)ÜÓe8ÃU?žö®éBŽþéë9³O¨Ñ )ÉÖ»µÃä ÇÔÞ së…R$V ÞT‹³rPKUuåcW.ÞÀy|Õ/Gk=¼°84»XΗ“Õä³Ðîtã›$ekÍ0é[0å7"À„GüFÝ¥ ‚7@±±ŸõCµ¥¾½Hï]ÆoŠæ¢ý¦¸¾ñר”»æâA
-1Y¹(@C…51Rq (àÞCaVÅ] ×EäMQ³Ð¯Š"_Ÿš–:nÔ8+?­v ¯¦È´{YkN1wÙ`
-‰@06ܧæ{eDiSÏY¾ªZ±ÿ¶_Æ‚ÝôG©iŸ{°Þ6ís RÓ>÷Ï[ç¤ûI6ð|X.6ܦú\ÖiU“ŠUÃ*Üþp<zVeó+¸« È‘{Ý;䲃bc„%¢@@C}ÎŒ!’Š3^cv5­:oÊì8ûÓ9käÈŬ5C(R3ÚÝ5Ü û¢Äq|®°"‚‡J&šJVÎçÅ úž®QõÌV)Õ¤?† &Û¹µfA@IF‘G‡n„°APüNÊC6Õfúÿqª¾Åý÷}fûEÕs—l×W‹ ê|äTöª/ õ¥¢=µ«ƒ@äÿ0„A²endstream
-endobj
-838 0 obj <<
-/Type /Page
-/Contents 839 0 R
-/Resources 837 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 691 0 R
-/Annots [ 841 0 R 842 0 R 843 0 R 844 0 R 845 0 R 846 0 R 847 0 R 848 0 R 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R 859 0 R 860 0 R 861 0 R 862 0 R 863 0 R 864 0 R 865 0 R 866 0 R 867 0 R 868 0 R 869 0 R 870 0 R 874 0 R 875 0 R 876 0 R 877 0 R 878 0 R 879 0 R 880 0 R 881 0 R 882 0 R 883 0 R 884 0 R 885 0 R 886 0 R 887 0 R 888 0 R 889 0 R 890 0 R 891 0 R 892 0 R 893 0 R 894 0 R 895 0 R 896 0 R 897 0 R 898 0 R ]
->> endobj
-841 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 758.4766 539.579 767.4329]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.20) >>
->> endobj
-842 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 746.3946 539.579 755.3509]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.21) >>
->> endobj
-843 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 734.3125 539.579 743.2688]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.22) >>
->> endobj
-844 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 722.2305 539.579 731.1868]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.23) >>
->> endobj
-845 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 710.1484 539.579 719.1047]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.24) >>
->> endobj
-846 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 698.0664 539.579 707.0227]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.25) >>
->> endobj
-847 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 686.084 539.579 694.9406]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.2.26) >>
->> endobj
-848 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 674.002 539.579 682.8586]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.26.1) >>
->> endobj
-849 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 661.9199 539.579 670.926]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.26.2) >>
->> endobj
-850 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 649.8379 539.579 658.8439]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.26.3) >>
->> endobj
-851 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 637.6562 539.579 646.6124]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.2.26.4) >>
->> endobj
-852 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 625.5741 539.579 634.5304]
-/Subtype /Link
-/A << /S /GoTo /D (section.6.3) >>
->> endobj
-853 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 613.4921 539.579 622.4483]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.3.1) >>
->> endobj
-854 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 601.41 539.579 610.3663]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.3.1.1) >>
->> endobj
-855 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 589.328 539.579 598.2842]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.3.1.2) >>
->> endobj
-856 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 577.2459 539.579 586.3517]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.3.2) >>
->> endobj
-857 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 565.1639 539.579 574.2696]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.3.3) >>
->> endobj
-858 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 553.0818 539.579 562.0381]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.3.4) >>
->> endobj
-859 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 540.9998 539.579 549.956]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.3.5) >>
->> endobj
-860 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 528.9177 539.579 537.874]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.3.5.1) >>
->> endobj
-861 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 516.8357 539.579 525.792]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.3.5.2) >>
->> endobj
-862 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 504.7536 539.579 513.7099]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.3.5.3) >>
->> endobj
-863 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 492.6716 539.579 501.6279]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.3.6) >>
->> endobj
-864 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 480.5895 539.579 489.6953]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.3.7) >>
->> endobj
-865 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 468.5075 539.579 477.6132]
-/Subtype /Link
-/A << /S /GoTo /D (section.6.4) >>
->> endobj
-866 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 456.4254 539.579 465.3817]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.4.0.1) >>
->> endobj
-867 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 444.3434 539.579 453.2997]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.6.4.1) >>
->> endobj
-868 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 432.2613 539.579 441.2176]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.4.1.1) >>
->> endobj
-869 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 420.1793 539.579 429.1356]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.4.1.2) >>
->> endobj
-870 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 408.0972 539.579 417.0535]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.4.1.3) >>
->> endobj
-874 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 396.0152 539.579 404.9715]
-/Subtype /Link
-/A << /S /GoTo /D (subsubsection.6.4.1.4) >>
->> endobj
-875 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 373.4431 539.579 382.1752]
-/Subtype /Link
-/A << /S /GoTo /D (chapter.7) >>
->> endobj
-876 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 361.3809 539.579 370.3372]
-/Subtype /Link
-/A << /S /GoTo /D (section.7.1) >>
->> endobj
-877 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 349.2989 539.579 358.2551]
-/Subtype /Link
-/A << /S /GoTo /D (section.7.2) >>
->> endobj
-878 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 337.2168 539.579 346.1731]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.7.2.1) >>
->> endobj
-879 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 325.1348 539.579 334.091]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.7.2.2) >>
->> endobj
-880 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 313.0527 539.579 322.009]
-/Subtype /Link
-/A << /S /GoTo /D (section.7.3) >>
->> endobj
-881 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 290.4806 539.579 299.2128]
-/Subtype /Link
-/A << /S /GoTo /D (chapter.8) >>
->> endobj
-882 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 278.4184 539.579 287.3747]
-/Subtype /Link
-/A << /S /GoTo /D (section.8.1) >>
->> endobj
-883 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 266.3364 539.579 275.2927]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.8.1.1) >>
->> endobj
-884 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 254.2544 539.579 263.2106]
-/Subtype /Link
-/A << /S /GoTo /D (section.8.2) >>
->> endobj
-885 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 242.1723 539.579 251.1286]
-/Subtype /Link
-/A << /S /GoTo /D (section.8.3) >>
->> endobj
-886 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 219.6002 539.579 228.3323]
-/Subtype /Link
-/A << /S /GoTo /D (appendix.A) >>
->> endobj
-887 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 207.538 539.579 216.4943]
-/Subtype /Link
-/A << /S /GoTo /D (section.A.1) >>
->> endobj
-888 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 195.456 539.579 204.4123]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.A.1.1) >>
->> endobj
-889 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 183.3739 539.579 192.3302]
-/Subtype /Link
-/A << /S /GoTo /D (section.A.2) >>
->> endobj
-890 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 171.2919 539.579 180.2482]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.A.2.1) >>
->> endobj
-891 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 159.2098 539.579 168.1661]
-/Subtype /Link
-/A << /S /GoTo /D (section.A.3) >>
->> endobj
-892 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [527.6238 147.1278 539.579 156.0841]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.A.3.1) >>
->> endobj
-893 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [522.6425 135.0457 539.579 144.1515]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.A.3.2) >>
->> endobj
-894 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [522.6425 122.9637 539.579 132.0694]
-/Subtype /Link
-/A << /S /GoTo /D (subsection.A.3.3) >>
->> endobj
-895 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [522.6425 100.3916 539.579 109.2482]
-/Subtype /Link
-/A << /S /GoTo /D (appendix.B) >>
->> endobj
-896 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [522.6425 88.3294 539.579 97.4352]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.1) >>
->> endobj
-897 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [522.6425 76.2474 539.579 85.3531]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.2) >>
->> endobj
-898 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [522.6425 64.1653 539.579 73.2711]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.3) >>
->> endobj
-840 0 obj <<
-/D [838 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-837 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-901 0 obj <<
-/Length 618
-/Filter /FlateDecode
->>
-stream
-xÚí˜MoÓ0Çïù>.?óã÷ç:´!í0ËmÚ¥]AÐL¬$>=v›8FÙ†XUUMëçÕÿŸ\ÛÈDx!3,IbŽ4†µÛJ°M{[aoÃ#žZ5Õé…rŒ€¬´¬¹cÚf̃ðY³º9yóîª9¿j®ëÛæ²:oƨif*†üVÝÜ
-\Vyþ‡/H²m¥£•~ùZ]WïÇ€ÉèÞ5Û
-ÊÊL+R%­8«l(ÎPxC±“3Ð5'E'«n·[·|÷yÓý¸ïÖ5×Z@Íÿõ‡&z~”ß0Р¡0ÃãTOt{ذÃÇDÉѧŽS%§ñ£”ˆbÂã€F®HÅô#HÚu{̤îãv½âí§uû¥½ïîjn<ôd‚†9^LPâX"(ÕQÍ”)¤DP1ýH2à$ROÔ/Eæ¸= aŽ”8–J5DÔóe
-)TL?$8k}OKª¹'óþÂþ:Z"lÐ`1a‰c‰°TcD;OX¦aÅô#aˆàCÖž0 ì¡[µavÑ¿vÀþnƒ ‹qKK¸¥‚#Ò<n™BJ¸Ó¸Y"ðÆê·}öÓ ‰©”@¨c†hI„ýNkoù(¨Å¸ë-ˆ¾$†£PK1L >åüÞ>WHÃrúCÄp´àº_öx„m³îj®P—¸—…j˜öÅP%Ž%¨RYQÊy¨2…L o'â´õ*wAÞdŒ|þuȯ[›p¼PÞË|»Ò §ˆ…-dŒ›ß5ôFIå?Vê‹çendstream
-endobj
-900 0 obj <<
-/Type /Page
-/Contents 901 0 R
-/Resources 899 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 691 0 R
-/Annots [ 903 0 R 904 0 R 905 0 R 906 0 R 907 0 R 911 0 R 912 0 R ]
->> endobj
-903 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [494.296 758.4766 511.2325 767.5824]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.4) >>
->> endobj
-904 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [494.296 746.5215 511.2325 755.6272]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.5) >>
->> endobj
-905 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [494.296 734.666 511.2325 743.672]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.6) >>
->> endobj
-906 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [494.296 722.6111 511.2325 731.7169]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.7) >>
->> endobj
-907 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [494.296 710.656 511.2325 719.7617]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.8) >>
->> endobj
-911 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [494.296 698.7008 511.2325 707.8065]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.9) >>
->> endobj
-912 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [494.296 686.8453 511.2325 695.8514]
-/Subtype /Link
-/A << /S /GoTo /D (section.B.10) >>
->> endobj
-902 0 obj <<
-/D [900 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-899 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-915 0 obj <<
-/Length 2197
-/Filter /FlateDecode
->>
-stream
-xÚÝYÝã¶÷_áG-pfù)‘y¼»¦¸ ¸¢Ý òæA+qmádÉÑÇnœ¿¾C)˶|wé-РX`M†äpæ7¿ÚlMá­µ"T¹ÎŒ$Š2µ.ö+ºÞ»¿­XБJ%…€‡…·%4QšgëÍ|‘·«¿|ÏÙšS’¦\­ž¦½ÒL#¤Y?”?'ïvùa°Ý݆+š°»_~Ài’d:cn…-É Õ~‡fèÚr,†ªm‚ºXbRžFí æ‚¹Nûagaiºi¶kì€OïÛ}^58þ˜ïƒÎý±ìÇÿ¦Š¾ÿxÌ ²¤h›¾ê‡_·Oø9Äõûc3ä¿ad[TOÇ Íö»XÅ6C5T(Í’êŽ% Ý$8£;cÄ(Å£Âa§‰;ˆà,ÉñqWÙ.ïî˜NŠ]Uä5J÷yÓ€›3™¼Ðh{ÓÝéd¬Ýæn‘±·%ÊŸÚ¥­í6ªfö‡]ÛU˜yDIûlƒ®?\Ø!oÂJa+Nò>;ó'ªö‡ÚîÁ¹ë†ƒ¡Ã.wáÊT’Ø×õåûüÐã(ºT¼ÏA4‹³›X–Þ¶ïmOÀ-ˆ*ª–ù£ZÕÇ•+° jœ ܳ‡ˆ[·~­v< ¢·›@ÒUãàQKñpR·ùcî­Š˜g’™ò€bI Obž
-°\ˆÈˆÈ²˜µÞ=&yÙAS;œy媀߾؞òò9‡¬+'MŸhmhT@|dæÎ†M˜ëϫ؜|]º¥@¢G4Ö7aêOñÝTn± Ia»Á—Z÷ÐÜé—!…^Z¤ìšÒDÝ`#Ä#¤‘ªÒÔÕv7¼X÷?ÐUDp#—h¢oëgìF]éÎÒКdÜÇÀ6ï\`—u|XR
-yÅÁnBº|²,’Á©Lf×É¢<l]…}£Â‚éOØ™X
-ÊßYÆ49nD9&&ea-z™w×^2ш+'ÁÔlÉIpcS†œµÎa?[ŒÐ÷Ñ !*¡·õÈs ´ã¸j)W XÂõ’%ú¦%ÑðYZ‚~(Ÿã#\Yvmëóñ&ç4ÕçxÛÙúà8 l í¯Hb[+“Ƕ<ÎYOÆ >k!A\rœ“tÄ䥽4’/cΨɩ‡ƒmÊÊUþ…ÄK Óp{FÕ—]à%é
-R¥£¤^ݯþù_ΊvÌš„›à<
-k…aõùR›x¦ séD5›¾Œº€³ LHXF’n;¾u
-7•Xù®Ü&¸" §×ó-¾ÍêiÉ/˜- m”.§ÏÌþéŽÓä&\úáX_B¹þ8Uê!9\=(dý&ÌýßÁ‰ÿ@ˆÿÀ™âŒ›pâ@äÆˆÓw›bN®Í”È6¹k…%ÜÇû&ÄÑ­p¯§¼¶“€'?þëïoPs×öÃLx­ŽÕí⛃ˆ£ôý8\ñû `»ýù«Ð·ÞFôì”ßæ¸¢/=îYBôÌsßW¿9ŽM~_ªrØÝï«Ùû'o ô+r!5DJ•~ ¼L*x„Øp*+À*]¬y‡ñ3ø™môjŒxi<Tõ%üÌŸè' ?|ÛÖåm(½šéÿ×P‚;5Ì| I”B«[œ¾ÕpmId£qøˆf[¼†.­¾AAs«¯ t 8¯fîŸ7Ü}Ñ•±Ô]!ˆÈ¸œÿìwõó÷ „ºóµÖ‹¿ÆŸþ6B÷Kâ"zd àT®ƒ’‹Bvåöøkãi¥¸Û
-endobj
-914 0 obj <<
-/Type /Page
-/Contents 915 0 R
-/Resources 913 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 926 0 R
->> endobj
-916 0 obj <<
-/D [914 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-6 0 obj <<
-/D [914 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-917 0 obj <<
-/D [914 0 R /XYZ 85.0394 582.8476 null]
->> endobj
-10 0 obj <<
-/D [914 0 R /XYZ 85.0394 512.9824 null]
->> endobj
-918 0 obj <<
-/D [914 0 R /XYZ 85.0394 474.7837 null]
->> endobj
-14 0 obj <<
-/D [914 0 R /XYZ 85.0394 399.5462 null]
->> endobj
-919 0 obj <<
-/D [914 0 R /XYZ 85.0394 363.8828 null]
->> endobj
-18 0 obj <<
-/D [914 0 R /XYZ 85.0394 223.0066 null]
->> endobj
-920 0 obj <<
-/D [914 0 R /XYZ 85.0394 190.9009 null]
->> endobj
-921 0 obj <<
-/D [914 0 R /XYZ 85.0394 170.4169 null]
->> endobj
-922 0 obj <<
-/D [914 0 R /XYZ 85.0394 158.4617 null]
->> endobj
-913 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R /F39 873 0 R /F41 910 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-929 0 obj <<
-/Length 3126
-/Filter /FlateDecode
->>
-stream
-xÚÍ]“Û¶ñý~…u3ƒ~öíÛ3“sj«“i<P"¤ã˜"’:ùò뻋]P¤„³Ý6fî+`ìö 'þä"Šƒ8SÙ"É 2Zl7b±‡¹¿ÞHÆY9¤ÕëÛõÍ7¯u²È‚,Vñb½›ì•"Måb]|XÊ na±\ÿêv¥"±|ùöÇ»7÷ßßýÈ£ïÿñ~ýêG‚‘xyÿ>òv%eœˆåwßßý´~õŽæ%oùæ~ýîíË¿·~óöþö×õ7¯Ö#ÕSΤÐHòo7~‹üáF:K£Å ~ˆ@f™ZnÂHQ¨µ©nÞßümÜp2k—z%%E t¬<¢RÚ'ª( b S(ªõƒ!övMU5§²ÞÓÏmS?šz(›º§¼»•é’‘½)*kú¦ßve;YÐìè;¸¾}sÿrÜü!ÔþØå¸ÀÉ_¨ÊüåR¤qÄR
-h€½t+æ[­O«D« ’áÙ´³‰¾’0ÈÒd‘èlIĤ®[)å²™Ê|2[ÉTi½üùV‰‰Š.äßOù†Yd2ÃsFZþ;îPŽîâÿD`JQ{{-ÜILÁí £ÐJì£y:5Öv‹yÿæu('K”JèDa±_—ŸÐ²c!–?—Åðð¼´ˆìO..
-3o­»Ë+ç Ûã
-Ë~€Ìá8XWèE>䛼7ãêìa á~ ÐizÚ®¬wMwp¦ð“fy»ò ¿%µbÞìl ~ÉåCÓ4^c=VÔˆú!åEÁÇ÷…l
-€ÇrkëÑt}nS@FYѨ]؇ñü íYŸ÷j@û(ÚÀæ¸3ŽÈ{lØN&ü µm¶ùo0.ƒØŠÔ.û®*AÿÖÚ¢eÕ4 :¶ôKÖЗӷÈ\[¹|"4ZqÊÊ­eÍrH…î=CÙ,ͦ™yìPk/Z2rUB êžlÆù‚Î;=Ði½© ææ·£éJ« @¡ëWµfº­…À÷À¦ä¡µ¨,‹æ¶S[“×ö°µì!|
-‘(¶
-ÕVx ›–ÎC™k'HX-hÊ€®V±ŠèÊá$yI„2>zæäpd¼<VW8õÌ
-| „S»P
-B×ó9õÅ|›4´£xx qFPB¬ßæ©kɆO’ÉiišÁ#[ %J;…ûS8„J#E9%óhº¦\8ä̾¤rvÞe(GA„š¾§®Ã?0j”óúœ>è£mdØ
-¾•“Â` nç‰p€rÿ0h…‚ÈfÇ#äbpÓæ`àn ›À·h´p(©–w¾|È’@Ž©6®lꊓŠëÞÔ%DU‚O% ìÌÊ]]Ë7¿æüƒ Ï›y¼¶÷2ŸòC[ÙËD.G‹˜-R÷[ÃXœ®áÀ@dB0°mm^ûÜœ‚h¡uì®ã«Ùñoêmà‹çIÆÚ¹Æms¬
-:fc< µ".ÆnŽÒ0ŸPæ3P©ƒ( åxûÉ:#ˆ0fÚ:a^xNZæÝ̬T2Rê= @‘:Gƒ.³”D50˜WK#•yD«@ÐéÃ"6„Gi×5 Ò
-Xÿ»üGAfn˜cSï]Z0—.zSá8ä]}IR™f\æD{Üœý0¸Í4 ’0Œæ^
-b5:”ÀyÈ,º¸+¤€$u9@yß7Û’C.üƸH«#™D³dŒf
-J}¹¯¹šÛù«Í˜Û2ñLM/ :i 5
-÷&M¾d)#þjºàZK×û^ÙÊÏVøË8–rFÏõÛ‚Ãú×»=߯@г8UWm ÍmŒ>v/›øª„JÓ£¯mM‡ÅŽ lÛÖZe¶â×cú Å¬ Õ+Ö4a“ XQБä5|ÔíC2:Íñ¢Ü!;­õ–OÞ˜ád°>C$_œ E I¾Ò“”×qHHS9kí=³¡­-¡:½Åø—êw½ypv»ï¸)
-S™ýä-ç깇b뤈;=Ÿµmê®c?Ý*؇ñù »”åþèmÓ+ô‚¥ÿ±%:W€Ï$üE‰
-endobj
-928 0 obj <<
-/Type /Page
-/Contents 929 0 R
-/Resources 927 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 926 0 R
-/Annots [ 936 0 R 937 0 R ]
->> endobj
-936 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [272.8897 210.0781 329.1084 222.1378]
-/Subtype /Link
-/A << /S /GoTo /D (types_of_resource_records_and_when_to_use_them) >>
->> endobj
-937 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [190.6691 182.1322 249.6573 191.5418]
-/Subtype /Link
-/A << /S /GoTo /D (rfcs) >>
->> endobj
-930 0 obj <<
-/D [928 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-931 0 obj <<
-/D [928 0 R /XYZ 56.6929 756.8229 null]
->> endobj
-932 0 obj <<
-/D [928 0 R /XYZ 56.6929 744.8677 null]
->> endobj
-22 0 obj <<
-/D [928 0 R /XYZ 56.6929 649.0335 null]
->> endobj
-933 0 obj <<
-/D [928 0 R /XYZ 56.6929 609.5205 null]
->> endobj
-26 0 obj <<
-/D [928 0 R /XYZ 56.6929 551.1302 null]
->> endobj
-934 0 obj <<
-/D [928 0 R /XYZ 56.6929 525.7505 null]
->> endobj
-30 0 obj <<
-/D [928 0 R /XYZ 56.6929 422.4834 null]
->> endobj
-935 0 obj <<
-/D [928 0 R /XYZ 56.6929 395.8284 null]
->> endobj
-34 0 obj <<
-/D [928 0 R /XYZ 56.6929 166.2827 null]
->> endobj
-938 0 obj <<
-/D [928 0 R /XYZ 56.6929 138.253 null]
->> endobj
-927 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F39 873 0 R /F41 910 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-943 0 obj <<
-/Length 3415
-/Filter /FlateDecode
->>
-stream
-xÚ¥ZKsã6¾ûWè¹jÍàA
-J$”š.º\.³/ËA*™… _ÕÏ5ŠAç ãîøˆ›ÔoÉÛéÌ‚ÖþoâFð 6ñ—·'\d"`X¦Ûµ¯Dí”»@/HhBg©3¡½¡&+JNaz
- ¢â¥ 486Có\\ž(ÙÓ *'Ø`||$Ý㤣@òkw$)\µ&òçß÷Ô‚(L{Cʱ™ÑK„{ OÙåÑ‹E pàg`6Ž;ð’è:×€4Î"ÈÆÇ8@Yƒ67¿ ¡VÇvHÙ ÆÇåвº}³Júí{ -Äü»wï¨Eë÷®ÚÖ[¸ Òoà<Ãã;[9´ÈʱÅ"µ7ìX×pºÔ܈ÓS¸O‚gÚÓ2´é1Ì1„ÞðÛª<¼ ?çÇJûïÛêÙU­WmuÞH ÇëÙ7ã~]l/¸³5x‡ÝCÊ/ª¬ˆ&ˆçÑò¢ý¾^5¯´žß„WAê‰D¶VÜ›+çÿÙÔ;¢³ÆYMžˆÒw[ž5À*.Ð ]Jpä./‹3{Ej,®º§÷—¦mIµ0HèˆèÑÞ+z Â
-&‘|ø D`ñ‚ZÈ
-æ<ð¡œãFn¾¸.Õý„3€O(_Çq ’(J@J×Ö‡Ê'D@öç
-Ô ÒH#˜â®^ºÃQª¦=r4„ž¸P1öôjAã6^óüJ/5:ž8f˜žÊ’¾I!ÕTY8Bâ,0($ÃýC}š/2Ë}Ð?×ýðŽ7 w»Å·âüàq
-p‘æPj¶]åK]¼´ç‡3õBypÀ&؈\û`‹æ€¹‰";$×ë†ê`Ð^²
-“©Ò3:­Ó8˜k8¾óšlùø¿óå ¥BÐ=&óرk„Óâ¼nÍ€¨µ Žöu“ S=qsz †€\…nß| €ÅtMô=M¸ª{^!ȧï×¢Q%à)Ì €àà¢úþ!éœ œ‹Íåè,Œ-Ï……(œ‹,²2^
-”r¬¾*{êÃÂ4Òçাc¡Z¯; ·]u‹ο0b0–9›7Œ÷13;w|rQ 'èú¾Yzlq\QF‡¤A_ )â)b—×i|H£>î’àœ‹˜¿„›#ÎJ*NUF+ •¿šâ ªúºåL²xnô'sLÑÛof2ýqÉë6;„7Öé¥`F¤ðE|Èl‡ÍßD˜ŸûPˆ0b26o† ¨£ßô<ê €Ì$Íòý1J4˜DôTE‡_Ÿ‚§OFŒ»¼ÂE6ÅÉ}b`¯OµFxìë8gâ¼// •ó—vC3ÎÔR&Z¸Ì¨<V×ÇûÙ4zÉxõâ³ñi†Éá²'ÉêdÀ¸?_ VÍ+÷•|ÖŽ‚öƒÉšÔ(ò1-ucBj‘9=VÕä4†±jtòÐ&]Gû°ì·íB^ëd¨Ýž·W$/
-,Ê,ÿJ@T&¸«j_ÿ™¾,07šÈކС¶’Ûù/¾¶r$:]iYíEE¤Q°¸ñ]b¢o¸6wCûò¯¾(ÏsU#i[•¹Ü˜ókAº§ž˜
-¾P(Å& L®©§&à™`Â稙þ˜£­á
-?6`³<sö Ôq¿qÁâK Nÿ¢@C+žsê^ÎÌo.Þ÷³Å"ÏÅE}”0Õó©áÅœ¬ݦ5F;Ž
-—%^G¦ð8Ê‹`øûÕ%çÿ^_'kendstream
-endobj
-942 0 obj <<
-/Type /Page
-/Contents 943 0 R
-/Resources 941 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 926 0 R
-/Annots [ 946 0 R 947 0 R ]
->> endobj
-946 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [519.8432 463.1122 539.579 475.1718]
-/Subtype /Link
-/A << /S /GoTo /D (diagnostic_tools) >>
->> endobj
-947 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [84.0431 451.8246 133.308 463.2167]
-/Subtype /Link
-/A << /S /GoTo /D (diagnostic_tools) >>
->> endobj
-944 0 obj <<
-/D [942 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-38 0 obj <<
-/D [942 0 R /XYZ 85.0394 570.5252 null]
->> endobj
-945 0 obj <<
-/D [942 0 R /XYZ 85.0394 541.3751 null]
->> endobj
-42 0 obj <<
-/D [942 0 R /XYZ 85.0394 434.1868 null]
->> endobj
-948 0 obj <<
-/D [942 0 R /XYZ 85.0394 406.5769 null]
->> endobj
-46 0 obj <<
-/D [942 0 R /XYZ 85.0394 301.1559 null]
->> endobj
-949 0 obj <<
-/D [942 0 R /XYZ 85.0394 276.6843 null]
->> endobj
-50 0 obj <<
-/D [942 0 R /XYZ 85.0394 200.1512 null]
->> endobj
-950 0 obj <<
-/D [942 0 R /XYZ 85.0394 175.6796 null]
->> endobj
-941 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F39 873 0 R /F41 910 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-954 0 obj <<
-/Length 2458
-/Filter /FlateDecode
->>
-stream
-xڥ˒ã¶ñ>_¡[4Uš
-Yþýî×ßÂU üù. TžÅ«LÂ@ä¹\5wQ¬‚8RÊCê»ç»Œg«n뢤DH•ÈQIµ$ª8K(ªwp9®‹®ý†òe8j[u-O{s¼ÙÚÐÔîyp8V>žiÒèÞš÷æøêÇ•íM½ãqO_ÍhÖèÚîö0^·³†y væHƒ’Yé˜ Û <á¯RFûª,a3(¤z ò8–îªÌ6"z]_ô«âhý¹5´<ô<ØuÈ_ƒ‡·[ H‹1Ê!$2
-…>°®Á€º}á’` 2™#Xô
-+x¨mO+èG¸`=ª¿£ßw¾8tž@Ü~®€iãb&ýÊyÊÉe£pη³-X¢(…Žgò.„ŽÁ&Uk!¿X2üÈ¥óüÎ8‰Û0,@ÞYT¯öÂT½¡]8-õV¹I@©äµ‹¼.OÈXxœ‹k¼I´ygWŽ3Ïo¾NÀT×{ŸéÏmמ›nèAŠƒ`TÁÜœ¨˜I×µi_¨II @„É«d­08í«‚±4}XH”pK‚5úL¶fŽduÕF©ZúZÏ
-3‡zÙM¥ÄEö‡<'Ĭ¢‡Â‚k‰ŸºãIK”Íÿ¬>¼’‰$s“™Taâb2 Åéºìœ[âzgy`Ð[¡Ê ")™å˜°P¬®µ±<»‰’ GS‰Œ™BæSF[ÐÆg¥@|º]ªJ°óI£)¾¢l–RHE„cñÒáÍ‘*š8~±È$
-K³ËZ! U¢|õ },ä-T\Èiù)¶†—™M¬)¢Ût‡KBaŒÂ´˜ŸS7`\&Ö^±¡‰&&Ú¡Ù’å^_ˆ¼=¢ µŽ¸Š©/@ð$.˜Á²n 0ãf—«{/Qc‡çöùޱÉñ¡ÚÖ=¯tñÍX>Ëî)z /{0„öG1Y C*5÷Hò|ÅjAÀùеa0ÂXë–KƯ,†•p=†”Fä9‰ñléÜî|uÚ$1Sû52Ñ”*?õVù8ijÞC@üû 3ß‚ü¹=á¬zÛ”SsÀÖ'¨‹«ƒNøÒÕæOwíi¸þáñé=|ë5ë~ÒÅÀªƒtk¨€ƒ6¼Ý ]´Né!)½=Á˜*5$ÐyúÿPŠrla±Ö¯æj§›íb5% îÖfÏX.]äü©pšwzc 4vÖ׳Ü]Õ°»“™2_$¡OæÖ#ç’_åpÚÐذö4uîëÜzû.—H38Bn«‚'äô°…ïúýuoõÖV1J¹–cݽŒñ=Ãm}„R/"$•§Ž4÷•>‚tùª[«_Ð@âIŠý[†a{ÓШk/O \¯\iܽŒ‹µyîbm^`8O_Š­j˜=:9M®<uH&)!Íf¹² E ¤òïFÜÙ Ív¤Yžú*Ï]‚ÍŽb7KFY!ëö4¹é>a±¬z Ù\˜"T‘2»Œ·SCNE˜"¿ÄTz[Õ•=L A05h1„u”»œdkM9C€/¥x$ue¿
-…3¸U£©UPk\‘;cpËÜÓ…à8~*”©DGÊR
-endobj
-953 0 obj <<
-/Type /Page
-/Contents 954 0 R
-/Resources 952 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 926 0 R
->> endobj
-955 0 obj <<
-/D [953 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-54 0 obj <<
-/D [953 0 R /XYZ 56.6929 717.7272 null]
->> endobj
-956 0 obj <<
-/D [953 0 R /XYZ 56.6929 690.4227 null]
->> endobj
-58 0 obj <<
-/D [953 0 R /XYZ 56.6929 550.0786 null]
->> endobj
-957 0 obj <<
-/D [953 0 R /XYZ 56.6929 525.2967 null]
->> endobj
-62 0 obj <<
-/D [953 0 R /XYZ 56.6929 393.0502 null]
->> endobj
-958 0 obj <<
-/D [953 0 R /XYZ 56.6929 363.1913 null]
->> endobj
-952 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-961 0 obj <<
-/Length 2095
-/Filter /FlateDecode
->>
-stream
-xÚ•XÉ’Û6½û+täTîË1Þ§*®T<9Å9`DHD …
-wQàgY”îŽÓYYžûYš»‡êoïM-ÎFwû( ¼èßh[âçEâ¶
-JòÚC 2ã ÆÕŸÞ½!ú(…Éš8 ¬ýR¨ UÒ§7"Îtƒ ‹3=}yÌFGòÍ¡:ƒ&q[êþ*AÏ»<ñÀÔq˜{š…ôVöItê+¹‚Ïø†ñ[ñd •yµ—‘£f^¤¯©!r¤ã®¯Œ{3$®J×¼¥§ïTP¥Xæ5¡'7Ö7mdk¥¤Þ±ÜqÓYâ|nÔn‚±S
-fhWü(½¾YhovçåvlŒ25©,*Yݳ÷›¦¿ªîÄqˆjØ|SüÍ‚Ø{©uÏ•cqÀ]#Xg±¬,ÕI’Êøß¨ ´8͸dD\2lL|£ælV‹„Jn Ë`«.hš±š#A&Fªä=¢;I^4¥ŽTRdûC#4‹hÅ¡V|.ÓÊhMË4`šÑ_ûiÓ\Õ†+ït¿åab\rc8JK§ rgM¢ ÷Ô‘¸·~$Â&TE´´ð¬“a«ì¯nhQYdçJÉk„“âªÒZ¨xm¯v¿•|“UllÑY6HúQƒX½¾G9(©§²æ
-dXõcsý.Û~¸ý¿ Šç•‰×:%<ä7IE”èÚ–Ø’ª2yÑT
-hZvýxªY/ý‘áÝN6“dy 8xp]Óc~{î0¨”~‚’$¡½„3×|Ó$ý$ÈR¸2Æ/{ë³ý4±òÕc¯ÕW¹aµ¤ôó,ÎXT¦JP¶Ø¶ÖVDÙ6
-^AÁ³"r
-DŽ49œvDü¹„šný~¹ æÒû/å¢õ>ÉÃP©_¬MËZç¹—ù
-ÜѸU‚>Gy%â*哦tð–RW8
-Ÿ¤IhsÜ]W‰y
-Õmíš™Q‘‚z
-â~ó ¯ fÙ"‡èâ9Lt¨ž¹£j¡ mK(ÈÏbµ
-endobj
-960 0 obj <<
-/Type /Page
-/Contents 961 0 R
-/Resources 959 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 926 0 R
-/Annots [ 967 0 R 968 0 R ]
->> endobj
-967 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [519.8432 268.1131 539.579 280.1727]
-/Subtype /Link
-/A << /S /GoTo /D (acache) >>
->> endobj
-968 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [84.0431 256.1579 143.5361 268.2175]
-/Subtype /Link
-/A << /S /GoTo /D (acache) >>
->> endobj
-962 0 obj <<
-/D [960 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-66 0 obj <<
-/D [960 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-963 0 obj <<
-/D [960 0 R /XYZ 85.0394 574.3444 null]
->> endobj
-70 0 obj <<
-/D [960 0 R /XYZ 85.0394 574.3444 null]
->> endobj
-964 0 obj <<
-/D [960 0 R /XYZ 85.0394 540.5052 null]
->> endobj
-74 0 obj <<
-/D [960 0 R /XYZ 85.0394 447.7637 null]
->> endobj
-965 0 obj <<
-/D [960 0 R /XYZ 85.0394 410.3389 null]
->> endobj
-78 0 obj <<
-/D [960 0 R /XYZ 85.0394 348.7624 null]
->> endobj
-966 0 obj <<
-/D [960 0 R /XYZ 85.0394 311.223 null]
->> endobj
-82 0 obj <<
-/D [960 0 R /XYZ 85.0394 189.9853 null]
->> endobj
-969 0 obj <<
-/D [960 0 R /XYZ 85.0394 156.0037 null]
->> endobj
-959 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-973 0 obj <<
-/Length 611
-/Filter /FlateDecode
->>
-stream
-xÚ¥TMs›0½ó+t3EÕtÌI;ŽÁÓvÒ£$šbp$Í¿¯@Â&Mzêx<ˆ÷vŸvßzM
-ˆ,}Q7c‚}vû ­ƒbÓJP*ݾ-Wfü¦=»DÖ+ýÉ\Kií“ù'çs·?0¦¥ÃUõW`[ïí¡”Ï²´ÇB >Ém[7¯ŠšæWN¸ênÈÚÊQD·ºïZ3ô¯åcõóÁª˜¯›æ/æñß*ŒKzܹénÐ8AabD\Q½Í„¾«|Üà÷¥ÿ¦œ@šendstream
-endobj
-972 0 obj <<
-/Type /Page
-/Contents 973 0 R
-/Resources 971 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 926 0 R
->> endobj
-974 0 obj <<
-/D [972 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-86 0 obj <<
-/D [972 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-975 0 obj <<
-/D [972 0 R /XYZ 56.6929 744.7247 null]
->> endobj
-971 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-978 0 obj <<
-/Length 1222
-/Filter /FlateDecode
->>
-stream
-xÚÍWIãD¾÷¯ˆúäH¸âZ¼©OͰ‰Hs`8TìrbSeìrBƒæ¿ójs6sà
-©Ç¥·†EòS€Š2Of=§&ü¡W.tÀLFXôÚyÉß'1´¦÷fÓ¸<Žn§&=Z|KÁµ½áDnãÖ [;ÑiteL-dçÞ^z@3Š Ñr0¡sSùØò¶Ð°´@EžQ/ëph‘@#†I¨„ƒÜkg+¡Û“€:cŒ£¯&L0À3LDc‚o`Â=æÕÔÕn¹ó"¦iâ$ü©ÏÍZ™Z}!W‰37µu£VDS' 0|‹Cš R&®}› ô ½=+·-n;N;)LùÍæìÏíxp+íµl)Ýrn¬Ù4ƒ:¢[ظbñª»ø»xøË=pIÎ
-ÄP²!ìåö0¿>üô²J×­Ù¦‘ %*м¼•«ÛZ  ÿVòy#tµ1ÃQïžs*ô^ mÌæ¢¸”Û®®³
-©Þ†/F¶œWˆåçÁ¿líÝc
-q/ÇV”ðç^Ƕġà2…¿@¡žKñÿ‹ubóÆ7Ü#ar/¼o°+ߨ £ØœWÕL ìõ…Áýñqùvå»`W¾Ý@˜UxÎ$U‹†O^re˜†ÑŽJûÓÌ©¿¦L¯
-/9ƒ¶‹Ôïè˜PTâ„ý'tüôívþÊ ß.4EæKhé;(ˆÄ÷txšd¨ e ™¼0½÷6R=ºû*Š™Üendstream
-endobj
-977 0 obj <<
-/Type /Page
-/Contents 978 0 R
-/Resources 976 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 984 0 R
->> endobj
-979 0 obj <<
-/D [977 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-90 0 obj <<
-/D [977 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-980 0 obj <<
-/D [977 0 R /XYZ 85.0394 575.896 null]
->> endobj
-94 0 obj <<
-/D [977 0 R /XYZ 85.0394 529.2011 null]
->> endobj
-981 0 obj <<
-/D [977 0 R /XYZ 85.0394 492.9468 null]
->> endobj
-98 0 obj <<
-/D [977 0 R /XYZ 85.0394 492.9468 null]
->> endobj
-982 0 obj <<
-/D [977 0 R /XYZ 85.0394 466.0581 null]
->> endobj
-102 0 obj <<
-/D [977 0 R /XYZ 85.0394 237.1121 null]
->> endobj
-983 0 obj <<
-/D [977 0 R /XYZ 85.0394 206.4074 null]
->> endobj
-976 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-987 0 obj <<
-/Length 1860
-/Filter /FlateDecode
->>
-stream
-xÚÍËrÛ6ð®¯àøDÍD0^$ÁæäÄvêL⸲RO'Í"!‹>’²êvúï]<HQ2e»­gÚá `±Ø]ì“ÄÁðÇó‘ÒÐ BŽ<L<'ÎGع…½w#bq&-Ò¤õf6:>g¢Ð§¾3[ôh „… Î,ùâ2ÄÐ(`÷òäãÙxB=ì^ŸMÇžçþ ƒžº:›žŒîÎ.>]^'¹ûöÇ“«Y‹ñ4·Ÿ.Ï/Þ}ÞÒ½Í:)ú’Ì”ßG_¾b'ß0b¡ðœ L0"aH|Ä=†<ÎX»’®G?u{»úè æF”ùt@uœ ©Î ‘Ï(Óªû½,äxâcìa,Ð
-EÕ*:2{(A"!x"BPèyThîW–@Õ¬^kT¼‹´H³ö–¬Œ£lYÖ ªäÝѶy΢lÒŽÁ/Jƒ2¼üÏÁÛŽÍÙ{gTY Yî°jàZVw-¼(- ‹òU&Q\æCö´ÖÃ|yeõˆ£d>¬­VÚ‹++-¼¬kY›i¹°bfÑìKl÷£,+72±
-*íXEE½O)Ãð«)Lv<¢RD|ÀCø @-‚‡<öŒÇžeÇ-#: ¤}³(nÑÚè›Æ.öß1ÍÈ }ëØ¥æßŽõ‡= Ùµ}ÑùÉ
-šwÄõ4Ž
-»nÏFñ2•wÒb§vWGœª<£ñï͸®;Zù:kÒUf1«1®ŒK=&µYü{¸^ÇK{W=¨úŽŒRƉö¨b6´+@Û¨Š(—¨# Ñ@>ר‚µÎÿ
-f!uÓ…Zåî}9&îÚÀKí3
-·Yš«¥Ù¸¹¹1ë]ÀQ“MÚ,Í~!›MY}3ËÊ(õaºÔ~¹0[De&ÈM–;¥ö\‘l»Ì^ Æ(P"æÀHc
-g:+Â`ón™é‚W­|_Ë*UiXMtÕ 
-n9ê®ÐB©ªWúQEBŽ| ÌNuë`:ôkn‹}8ÔXÅÇtªëmý÷­¯ý=^¤8æñ Ç̃€×á<ÊÃ>%Åê+'Йú>êçòE@Û߈¶¿4E¢þhh!V²ŠúO@º¬bºMæ1áwÿ$‰%7BܲÌê½>ìsëD7c¸¦1êÿ0§‘ÌÁ¬‡^˜yö·èl™ê.$ ˆßf’È:®Ò¹ïXÀŽ2³—à‰+YÔÑ\÷¦
-=n ˆi¬¢<UZžiÝ(]ÜY$Ë
-endobj
-986 0 obj <<
-/Type /Page
-/Contents 987 0 R
-/Resources 985 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 984 0 R
-/Annots [ 992 0 R ]
->> endobj
-992 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [55.6967 190.8043 126.3509 202.8639]
-/Subtype /Link
-/A << /S /GoTo /D (rrset_ordering) >>
->> endobj
-988 0 obj <<
-/D [986 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-106 0 obj <<
-/D [986 0 R /XYZ 56.6929 480.2651 null]
->> endobj
-989 0 obj <<
-/D [986 0 R /XYZ 56.6929 441.7923 null]
->> endobj
-990 0 obj <<
-/D [986 0 R /XYZ 56.6929 373.7178 null]
->> endobj
-991 0 obj <<
-/D [986 0 R /XYZ 56.6929 361.7627 null]
->> endobj
-110 0 obj <<
-/D [986 0 R /XYZ 56.6929 167.4388 null]
->> endobj
-993 0 obj <<
-/D [986 0 R /XYZ 56.6929 126.8733 null]
->> endobj
-114 0 obj <<
-/D [986 0 R /XYZ 56.6929 126.8733 null]
->> endobj
-994 0 obj <<
-/D [986 0 R /XYZ 56.6929 98.4089 null]
->> endobj
-985 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F21 690 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-998 0 obj <<
-/Length 2705
-/Filter /FlateDecode
->>
-stream
-xÚÕZÝsÛ¸÷_¡—NåéÅA°O—Ë%×ÜÌ%×ÄiÒÌ”– ‰w©);Îôï À$EJÎø©ãàò·ËÅ~f3
-l¦SBE.gY.IJY:[ì®èl Ï~ºbž& DI—ꇛ«¿¾Ù,'¹âjv³ê`iBµf³›å§ùË¿¿øõæÕûë„§t.Èu’*:ûâ—W¸ò¥éüŸâå»·¯ßüôñý‹ëLÎoÞ¼{{d4—ðæåwßýúêñ½ןo~¾zu¿¢û¥Œ
-û \}úLgKøàŸ¯(¹Ng÷0¡„å9Ÿí®d*H*…+Û«Wÿˆ€§îÕ1Í¥B“TólDuœ©.͉\8ÕÙof„]'ŒR:ÿ±,ÖUÝ´å¿öæš16¯ëmc¿ðDήHγÜ!ÝlŒ'ê2e9¡)³²Zše¹b’äRhOóÝŠ$Z$Ø€€c(9*ã%á’Í‹j9Çaw¸–ž´j¶uýûq?‚)SÐ>Ë<áþpÍô¼^Š]ðBÏ ·bì$ŸÛ-®.êÝÎ2v“mYµNŽtUp èŽðÞÎþ8šÃCY­qV;ܘÃ94ÄJ8KÏ@ëvž1’§)êÀM[–++ÕÊp^VøÛ´[ƒC”õ±Ý[ƒP»¢%'6MaÁÑ”ÎÁ¸r6(éRM›`¤êE—g¯hÁÏó D#<{vAÁ¼”LûL­µ&œfóe½+œ†¨M¡ʺ‡kÜñ½S%ÌÿMS:fäR°6ñ VH 1Ë™·A¢µo7²›Ò¸]
-Ü5XÛoMëéëUhü’7h7vfqçjþÆoŠÆÛR
-’S¡ú¶ÔÞ×׉  DYšæo׉d|Þ”–)®—UkÅ¢-ïÌ#!Žœi ˆ%ΰçðš³oRÀ=“øEöÉmÑ.6C¨ûMͳ8¶¦ÁYÑ…³ßAûò£{I›Ât ÀŸmÙx«wÚ³Þa@ÛÅ'ˆì)+cÕ'¿Øž>¯÷Ö\ã,¦iÊÛàt+4¦Îp»að-<·S„TÇ5xƒTD0H‡#ÞÀ  •ÂxÌU¼@Šèbœú'£0–ê‘“ÕæÇ¦X›I™„$"ÕêY2u0œLrT¦@\,Q`eŸ¾GWK»®&R¢UšzWÃè‰d=d¡·õdŸG€‚Qy¿ÆPq
-$ÑR O#@)ɳLyg=Iû°7#Xœ³,ÕQ(üÊ1Ù ®{˜‹mÑ4# *%Y*ä
-›Ai:ÿÁ/ͪ8n[»ùJ WufÝ6øÖ­iï©ðÑ‹"X¶e±¯^$ôLŠòkPÑÀÞØ"¥2Þ8‹åͺiL0ºÛPú–­·ÎÕ±ZX³,ü§[ó vtë-Ô|iMµ4ËàÖífàÌ'1À›údbO)'TÁN>#‰v1¦{¤º˜ØeÊ….é92u1¦{¤Š¦‰á=)^.·Õ¡¹¹¿ ?YŒå~¯eÈnS9çÐDSHòöbùP-ëv/6¥°½8‘øû™+âýë2^¹3ÐÇ=!ÉyÈ÷#·5Q9—ýÄ}0í¡4ÍÓ±wÅ]m‹õØçCÐË4âÉ8RcZ¯±¶ãšæ‘B,è+´o+ûeÏA3>÷ÿ5¹NgF{Zv•<³GMò|víRMg×H5<³éeX®¡ŸÍøyΑêk‰•iØÂIÞ§çEZçá¼ÈvÙ ÏöÓvúi‘fýÚ>Ä̓AUWIç©MÚ§³.=6ÊîÍí¶¾¼6~²ÐÓ¤Ê œz|'RfKDÈê®›…™?s‚‘whàqŽ=u–=Ú,<sf kÅmíR) ï`¹8”õÑ¿g­Éý*_²úUÄUQ ý¾—
-\ñN
-µ#÷‚+ÏÌ.¹cWø}ìzì¬'¬#[õBcå–jü½õO¬ ÖÖ•,¿r4êÓ’À°Á_T3 ·Ü>íl‹ëµ?Pgè£îLfq3où§{³(-²²ó»
-#¿UÃ¥ìœôý©e0fÆOØGG÷ãÑê‹aº°¿®™´”úGGà32’ØMZ ÿ&ƒÃ`3GÕÚK!¤M4Ý×Û•[³)îÊÚIdÒ¹žß{¤¥—¡ª=-â9ØÅðEàð{»]ëÈ•™&™Œ%â¹J&•…>ËœlÌø5œÚo8Ó¢¡5Å’Œ€%Lä¶µU6‰%™ìÜor¿ùb¹++På¡ÀSï8±;{?\ëÙZx[<„B<ø­YÇk…}qhû×ñÌ
-ÏÒ¡äñ_•NEÿ…6_0endstream
-endobj
-997 0 obj <<
-/Type /Page
-/Contents 998 0 R
-/Resources 996 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 984 0 R
->> endobj
-999 0 obj <<
-/D [997 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-118 0 obj <<
-/D [997 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-951 0 obj <<
-/D [997 0 R /XYZ 85.0394 749.3395 null]
->> endobj
-122 0 obj <<
-/D [997 0 R /XYZ 85.0394 221.8894 null]
->> endobj
-1003 0 obj <<
-/D [997 0 R /XYZ 85.0394 197.4323 null]
->> endobj
-996 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1006 0 obj <<
-/Length 3394
-/Filter /FlateDecode
->>
-stream
-xÚå[ݓ۶¿¿BoáÍX>‚lŸœÄN™Ú‰ïÒ´ãø'RwŒ%R©;Ë“?¾»ø")‚’'éL;é܃Àår±X,~Ø]àØ‚Â[È„$Ï*‹‰¤L.VÛ+º¸‡wß^1˳tLË!×W·W_¾j‘‘,áÉâv=•š¦lq[¼‹ä$Ðèõ󿿸^rI£›o¯¥Œþ?úùÍ÷/Þ>¿VqtûêÍë›ë¥¢Y}ý·çßß:ŽË2¾~óúå«oìå\¿¿ýîêÅ­Åp¤Œ
-¯WïÞÓEþ¥rñ”°,ã‹íU,‘±޲¹º¹úÁ ¼ÕŸ†,KJ¤Œåb)b’Bÿ!.–L$Ú!
-ôf)‡†ÌH"¸ðÆÙÀø)#2ËäÂs¡ñë|[ËÕC¹úð©©ËëeBiônYüòëã7ïÝÓ
--õåK)Ò˜‚yCPÊj“·­auÉ3’¦*³\^^'$Œ^:͡ۺ€Ä1›—Ø]”XTûrÕ5ûc@¨ŒIÂ%;ú
-³„sÊÔbÉɤä¿Wú‡‹*ÿL%­îëf_VXcFÒX8©¿„q¢[†§|_¤pA2tõÏ”²Î« hÅæ¦:=dý'äÔŸ
-:
-O‰¢i<v”ÿôp?SÑÀúµJ½ö/‰y#I¦Tâ,WmJ”€¤X‘”S5Th½Œ(Æ’…¢’(¥Â{ŒåY˜4ÊqÚb,Ó
-¡~&=Ÿ¡;Ðè顺fÑêÁ|üd‘À<国H‰¨n:«°™
-"¿T^ð7MáÔ~ªº‡æ`1¯-€6;\­ESûö©Bo4€Úî6ùq²‡6¿·ˆ¼-Ûþ!oÚêåý— ÔBr€VL%”³ô¤#CS$véˆçÂáÿ¨QIbÖ˜Àrùý* EÌgHžËOÛ™Dr<Hgð­«ûPâ’ÈÅièØ^ -ä%róS‰»‹q)…‚½Q˜ìå/ÊûP†Òá¯Ì’ÏA-’†bÇ”p–±ÏBÏÒñµe#„¼Á­Hc$F8ŠdiÖïØA0d‰G1PÁ¹ie— ‰À°±6¿f—õ‹³ªï'ËÓy²”÷² ÞÞ3gOCÎn™´¯—›&/&Ñ1"N
-þ}Þ–žkjÌñ>‡ÑE–²±5‡SïÝÿ¾z,ë~’gç8Î(¼°
-†\ósì¹Ì¯! yMò(=7É“´yvzþ˳C
-þäo›W˜{æ:†·9àïõˆuy¦Ä_pñÇe|œº]»=x4 ¤øÒ—Aÿî
-”¥ð§8Öù¶Z™ K™pLØ4©núW¦UYAº µ´¥AbqZŠ0Õ.ÌS3Þ¦k0Ò¤þ<52[Kói+<´Fù²ÀÊ‹!bÔq^
-)¼¶>äVRYT%›º‰ŒîJój›åð)È¥¾l­ËeXbñÐqjjl‡†½;â/C£AÎmíφ µM Õí ³I¾±µÊ­6?¶!A¾7LWóh‹4ú¥9ìë|c\¨†œugÛ#
-€¿±\¶4DÇó`×÷’sóqW‡âƒ>ñÁ‡‡ÐÖöÎ;ûì*lzb°ççû™÷"|0Ö0ßæ]Wnwzn¸Ï³9=‘¹ûXµžªMp­z8sÑ¿…µOe=‹_°0ˆL“ô<~ ¹æñËsµò§yô#Ê
-dÿWÀËŨg-ÚG²“†#Ù‘M_ÔùvÂ$í±‹'™ñH ææ±ŸwCî½^Z,I¢± ß×MÿÊP*+±ÌA™HIœÒ“SÉj€eÊc™rX¦ÆºÀ³Ç65Ä6¬ÑãØ4²·;dK=Fà¶D¬\ÁÂÃh„ÙPÈìðL ·yø ¨ÚÏBЦ¡
-À3¢MÙé¡J.£çî3®·ø±[
-ðVV4.&md#¦,C8à¦XÒoŒjxzšáwÓ
-¯ßܾzù¯Q¶KƒÎæ>KßbæjN?÷®3sï¸LîÓ×3G!˜Ö˜Ó ={®i×㚈IŒw†F}ûÊ€HÜ©e¨ÑoÿÐ6‘4úkpÝÐè†`(2w^šDEc¹KA<—«¶«êû^ư×ÖžPp󘡪4ÉL–Eby–â8ކò?–†fb+­2qØŠß´æýÚÅA@¨© 57„õðcZ—ä‚“8ñ§4Ã’ÕÈò‚AúêÏŸžœ¾ §‡ÿÌn8@ÎÍãÆì úD¨õa{gL±’iމ“k¶|Œ‚n{ÑЦ÷Žñ‰FþØTE{âùuYºú…Èò# © §ú|°)ô~·Ô »jë:œÔXÊØ©œ__”¼$j C®3ëËqéÚ~—wí´ÜÊ`/Wò|·žkÚïxq±\ xÔñO˜7ï«ÎÚÂoÙØÐãWíØêÞp§ Æz³ÆÃ‹bT° ÓkÞxž Çðë¡Ü7Í<8í¹§I×apõ}{ñ¨¹¿×™SFlÂê
-endobj
-1005 0 obj <<
-/Type /Page
-/Contents 1006 0 R
-/Resources 1004 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 984 0 R
->> endobj
-1007 0 obj <<
-/D [1005 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1004 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F53 1002 0 R /F14 717 0 R /F21 690 0 R /F23 714 0 R /F48 925 0 R /F55 1010 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1013 0 obj <<
-/Length 3749
-/Filter /FlateDecode
->>
-stream
-xÚ­ksã¶ñ»…¿Už9ñð$ÁöÓå’K.3½¤wîc&Éth’¶Ø£HG¤Îqû绋@R‚$OÓñx‚‹ÝÅbß ¿fðǯN˜ÌÕu–«D3®¯Ëí»~€wß^q³ö@ë9ÔW·W¯ßÉì:OòT¤×·÷3\&aÆðëÛê§ÕÛïÞüxûÍÇ›µÐl%“›µNÙêÛ?C3Ÿà•Ö«¿yˆ·?|x÷þÛ¿~|s“©Õíû>ܬ3–+Xyyí?~3­ûtóËí÷Wß܆]ÌwÊ™Ä-üzõÓ/캂 Å™}ý,áy.®·WJËD+)ýL{õéê/áì­]“œ–&ÑFdÑ 9—<1©4יΓTÂ;”]SݬejVÍ@¿»nVõ¸ßuuÒHS½ºÝø—EÛöO~ÜÑoýÛXﺢŧ|õh×÷e=8°±§ßª°mÓÕôø´©Ýú®ØÖއMQ–²ß>¶° BÃ.ל'¹ÖÂr<ŒýãcÓ=$‡ÒçLÁfUvñ,‘"Ï£â
-Pë9˜—2sq1«tB†´7E;‚P[ý´~üåˆT&™Ròê˜åy¥&É„>ààìTQÈÕ¸©q VC½ûRïh²Ù‚4›b¬ÛçÎù
-ŽP2¾úX—u7H¹)º‡ú†¯zÞUí1Òéí64Q=Ãé4%‘Ù?V€—^ôŽÜû¼ûhÏŽ ”‹›åQ¤MÀ׫®i0_ì‰ÃÐjW´œØÈ{ÁñÏŒ‰¶^Á“ä«»½[þÔ´-îÜ"âºm=Öû~÷D¤+BO[GÔûW¿wš;Qs4H=ðB Éå™ç©5‘;6êa,v£µ¥²Õû{z·~\ÂuÙ Iä_X3øÃ@ +B𦊑
-VŠ”ÈJñeq³æ«˜Œס±âo0Öˆ]-‰‚¯ÃÃÁß™éâ#ÉGÎtqhM“éºùv<k«©æ 癸`«s°Ó¶ p?ã®(ë#º2OŒ”ùºê˜îÒD•J ù-¿ïJ:Ÿ-ÙŠrã„Gz3xÁÞí@<ôØÖ_ê–†wÏôÛwõÑ –dÙ%Á 3b#˜…Ð^¿Óz*5˜7Ì0 Eœò•é$Í!úãËÃòµ«aIj˜™3ö©‡¨,!x«Õ.JÔ+sát·þí±mÊÆÏ—¢ÝŸ‘´ÎY¢„0d=;-í
-w»«Ëýn@ß~ª9O;2G´ã…Ì‚ø×ûíãÁQ¶ÍàäÔ;™ÿº¯w÷³tÓ ø'ùucû<xؘˢ*R40’å)°n ž”Ê¿Dß̤›³ÃmQ€‰tM¶6žÆ¯ûÆ”(ŠËP,k‚(lK Þ H!nÆ ¨(ïÏpÒ)öðºq©-l
-\5‚sÒ9¼¥i+,˜G–p¶ Çaã*¶Ê¡ª]&;¾Â‰Ô™ŸE8
-Ï‘œ¡7½ÅíÙîb¥
-IPHEŒ«ãÃÒWt¶VPÕ4ëý…]×öeX °n¤+úü 0—€ït®b×UeÌŸˆÄ°ÔGØ_ÊñEãf jNÈ@½¯=Š×õX¾Fb »P4’å”;ðW¤éJ¤ Ó¥Øl -T\gè²m(€é™4l@íhúÎÝEÍ
-/Ü1À(l±!0Ýd©cm“W‰RL:þéã‘qFµ³C~à3=›ð6HÆKŸ ÷ý¾«^EÎ… Ë—†têPe¢2á™t ÆA~CO£¶ï?Ó¨é"’ÈT¢Sžéçú9v¢ìÁO:蟙f¨˜ˆü ¬¦FOqL’T.•ךáy@u©š]*À j¯1OÅ@È«eÙYgciÙŒÈMÁà«÷¾víÆ(z³CkZÔ tUˆU˜ã@ÛáØ²€Œá6ª5¤bX™ì서 )¡fANNœ£FâuWïÈâ´-«áwwcVû®s‘ï@5¸Ð‰Ò,›Ñ_£,lv
-«×E„8aÁ•Ïphó(Ò¡Ü5w®‘¹–™Lr¡ó¥ÔHcñWp8L(Q08[×ÑËÝÃ5 >Î#±‡_ÏD"ñ^*ËÉê¡@HT¬´—)ã ~¢Å½…ºÄÅ6›Ÿ‘ˆR>W܇hûÊún™Z½Å°!SJLqnô/8@y¥@
-
-YÅæ:»PA€Öº›~ß:I²v€ÑƒUÕL;UK•‚«>ÐNÇܬ2ëúDnV5cVãÜΡðµ`TU¡=}AèæiðìËÓÂ` ¹±Šät'â{zI3 ¸U‘è`dРú!5‡Jç(à"†­ êk„ÐT¡Í Ž6ç^ÿÜí(Ÿú7Ô‰224pŽt(K˜&A®¨˜ó<(¯-¢òÕûÑmvx¯÷›/4Pê ÎÀü½UEla«Ý¼>Õô0<ÉÁ¹#Áªœ´d:K­#2SÊŒŸ•é²z€
-·.týðzMèÀEÄøK¾o€Õ˜ø×Më€q=Gé^+(JT×ìŒÈ’\†dÏîuÑ*èј¢Cr-§¸WÊÑ _ôJ ÊÇ^ PΊ>ù©§™sÙ* JUˆçEûÐïÀkl#DUÕ[(4OVLR‡ “:Eš€ã“kAiü}ÓøÎšÿ ;Óä*éÌ¥«Çb7ØtM¥>IƒQQ–õãèÆÝ3 ‚Ú*M…ò%’JSFåª(|ã…ƒF ²£ë
-U™¿?`¢6 Ð’òÖVà
-endobj
-1012 0 obj <<
-/Type /Page
-/Contents 1013 0 R
-/Resources 1011 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 984 0 R
-/Annots [ 1015 0 R ]
->> endobj
-1015 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [120.1376 365.8002 176.3563 375.0156]
-/Subtype /Link
-/A << /S /GoTo /D (controls_statement_definition_and_usage) >>
->> endobj
-1014 0 obj <<
-/D [1012 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1011 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F48 925 0 R /F55 1010 0 R /F21 690 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1019 0 obj <<
-/Length 1632
-/Filter /FlateDecode
->>
-stream
-xÚÝXmoÛ6þî_!û`Ãñmý”iêM»ÄÉÖvÅ HŠ-T–2Kn ýï;Š”,ÛLtÁ6 þ`R<ÞŸ{îŽ 0üHÀšê@êqLx,G8˜ÃÚɈ8™°
-‡RÏf£ƒçLiAE0»èR+E‚Yú~ÌCЀǧ‡¯Ž'!åx|~|6á|| íüõ›ã³Ã‰ŒÆ³éëÓóI(±ŽÆG/ßÌ:‰¯ë8z}ú|zr±Ñ3ù0{9:žõ§ž”`fŽðûèý¤pà—#Œ˜V<¸… FDk,GgˆGŒuOŠÑùè§^á`µÝêEŽ`D™ è"2€Ž‚"%y ¹F‚QÖbój•7‹å$Ÿ,–q.Sþä©9Xa›æœ¶Òu–¬²Æ‰&ììîŠòrzr¹¾b—e|ôlyŦó·çÏš·?Gó·å%žžÅ»“‹ù»¥¾›žÏSªÍÚN}H5RJêm+ŸwlÛ(W7M^•µ5þg+áÝf×ñºhÂ:[}ÊVVœP‰0üˆ÷TÝŽÙ:ùU™&¿ÁÔï%xyð€Ü€Œ°jEf‹¼¶ÔùcZdßÛI~íþ˺‰‹"Kí4®­Âí¨aŒ4.áVãAÖ$Æ;”TåµÇÅP@+î ÞVë¢3RÕ­6‹Ì’j¹ŒËôù(à”FiFe«÷;'ª†©‰´”Â6.ZèWYQÅ©ÇÓÐmpŠ-bM.I.•e–4vÒ=ì£h§7ÕÊ hÎì
-8PvH¹§H›âà-öa¯1ªÜ¯äTiĈËÆGsÀ}غ¬µç@®žQŽ'r;÷ÎzjÙÚjZæ
-PaÑ
-:µî‡ÌmMƵ ÎÛGeÖ6xÔ–5x§› #ÀÊŽæ¦Æ¥÷‚¨‘”\õLjñ;,šlUÆMþ)ƒØÁZŽ… ¢Qmg¶uÔT².KmíóQC.PÓÚ}aìqQBóÃ}œ[LÂg.Õ×7®Bx0…Hh=$“?¡8¤5!l—Kmáq¨¬œÁe•æ×wk
-ªª¦ü!° ЍhÜômõ õCS0ALp!ãˆ,ú2„p™€[m>/c/ÛL‰ŽHÔn:ÊVMœ·x“ñÅéô;ªÝ~˜Ð¾ÏÂsw ]§4¢]§4Ë•ÝÑĻ՛,É €‰ÇI{ÁûÞÊŵ}šfu²Ê¯ì% ºr¹cm«EõWE†|·¼Ù"«]¤GPñª[í{úî[¯¿`iÔ'òGSÑ<%X!ÎpÔg{{ÙB»íjD Ä0-Q¤yH7aí{ßé'ß¶«ócpm¹×»ƒ.7ìpÞihÝ™B¦8` úv¶¢¦H*© Øi(F‘eìùôäÅÅ›]ˆ„"$8 
-ÿž‹½Æ}·c(1‰±åä‘a½s›Þ÷%ȵ³ÔW‚ ƒZÉo¨]½Ù\]w\IcH‡¸ÎöÈÁõ†ýx02ÍÄ`ܼ©þ«ì¥É^è+ðľB_ · ‰uGßÙñÙ«ûù;PùhÞsÓÏ࡟fpRd]ìÛhǿ켹ŸbvÒÿ7ÇFŠA»þ2ÇDò’v›žÎî§Ø@ã£QlÏK?ņnþ{´“þW(F àX2¸)Êí/{_
-endobj
-1018 0 obj <<
-/Type /Page
-/Contents 1019 0 R
-/Resources 1017 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 984 0 R
->> endobj
-1020 0 obj <<
-/D [1018 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-126 0 obj <<
-/D [1018 0 R /XYZ 56.6929 466.6686 null]
->> endobj
-1021 0 obj <<
-/D [1018 0 R /XYZ 56.6929 439.3642 null]
->> endobj
-1022 0 obj <<
-/D [1018 0 R /XYZ 56.6929 409.8468 null]
->> endobj
-1023 0 obj <<
-/D [1018 0 R /XYZ 56.6929 397.8916 null]
->> endobj
-1017 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F48 925 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1027 0 obj <<
-/Length 2335
-/Filter /FlateDecode
->>
-stream
-xÚ¥XK“Û6¾Ï¯Ðm©* ˆÉä”õ#åœZÏìa+ÉCR3Œ)R);ã_¿Ýh
-­IÞ_û®þ,L¥N*;Zk¹NÞw4tÚŠ<©‡cß 5 5üÚ(ÙIL"5LŠ,‡C¶—ε8•`FÉÌ/Û»CúC ë>A2ئ+n3•¼Â%ágHØüÒ´-µÊǺü´dv¨÷N ØjFk”^Óûû‚
-–ròƦ£´7Nh *¶"‰ÚÀ1ÔÆb‘79¥‚PWtÇäJ)/|ÛýîYE5™B3¹VD P8J"0ÿ²râúÝ|õL®é.”ƒWõÊÉ®XÊ1[,ºR_ó-&.(! .ÆæÉݪùC¦ƒ„¨þFÍ7~Ù‘BèØ—}K7sq T8ë²ùó2¤‹lR_& ‘-"[ããÓÇw¯©ùÕ°K±D+&5n…+ÿyóëï|S|~¾áL¹Þ|Ç n7J¤¬(´
-#íÍíÍ"Ea¹dƃ„uZ´-ß ;–¤v»Tn&‰—Ýo
-Œ/9ø,ŒÉT‘Ï~˜ÉXå†àLÃ/ã_¶;#’;øO“·—’šJ
-.Ê‹EêÑ>²É¶Ï
-A/h5þ;“çe¾.àŠœ»ò?‹‡tùsç÷þãØµ 8!†BgVo„u)Ü*M3_t¤¾èxóújJ
-»ÿ=Vˆ
-îÒjÜbLj»Ãb(ÊÜñ3RÀ†zIl‰îçYÔcõ‹|™
-iVQyÔXCröš’>CãXÝÙûébå&»²=“œpØ®0ÀLa@Ô•»ósd$Ët
-ïA{§¦‚ô|‰íÖüdØ@óXò¾éìéé\8<öç¶ŠO²ËVWÍ¢ÇÁvgÇwô󵩙Bü²öp4• Ó¢•‡#™*†H
-"ŠgŸWNü?n¦w»endstream
-endobj
-1026 0 obj <<
-/Type /Page
-/Contents 1027 0 R
-/Resources 1025 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1041 0 R
-/Annots [ 1031 0 R 1032 0 R ]
->> endobj
-1024 0 obj <<
-/Type /XObject
-/Subtype /Form
-/FormType 1
-/PTEX.FileName (/usr/local/share/db2latex/xsl/figures/note.pdf)
-/PTEX.PageNumber 1
-/PTEX.InfoDict 1042 0 R
-/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000]
-/BBox [0.00000000 0.00000000 27.00000000 27.00000000]
-/Resources <<
-/ProcSet [ /PDF ]
-/ExtGState <<
-/R4 1043 0 R
->>>>
-/Length 1044 0 R
-/Filter /FlateDecode
->>
-stream
-xœeU9²,GôûeË@@Q ‡!é¡%bd(dèúʤ—÷ÿ(žÑ¯
-’$¡T¬)ÿ®ïë¯ãïãÇ_¢ýþÏaíÏc‹®½Ú¿G—=ûÌöÓ1ÄF¬lÖ]töö×ãqu‰Ý¦‹÷5š”<8Ç—ý:\;âúãñ‰ü<q¸Í;.\ži2c¶û~ð¶e¸í×qc¸=7Ä+Àg ¯ãã×ctéa³ÙL1ca·cu™šm QOƒ½¥ì-¡{wñ¨¼&kñÄÞ
-¨9xcH
-¤Ï’ÃigÙ¥—ÇáC6uéíÛ&”\Ê GTœ„Méêö–KòlÜ’Fyu|?é%åiÈ¥K”êNÊq{vˆ*êèJE¢]8hÍò¤p0R±ˆ$Á(+Á nÖN¬
-qª„Ñ«ò^ÿï>‹«>÷— .13×…Óƒ!¶3¢SËAÕ”ih¥Å¨Š^…(€<Îm䦽ªšÛÆlLÊâ³ò7Ù
-г2"ïE9~ 
-n*Œ1½÷¨¾x¥Æˆpîâ‹&Xîܧ³±è\íD¤ßä0}#XŒûž˜‹¸À>#^V°¡|2Îi‰9ÊÎr)`˜¢Xh¡Ò& „hb—H°Œe"Ãê
-þrÓGçX5¾ûû8‡´ÕªOª«t–Ô³$Ây°‰—BÒ›ÀÄ5©/¨vp÷o`kA“ôr ±ñœÓ4N.4Žæ
-endobj
-1042 0 obj
-<<
-/Producer (AFPL Ghostscript 6.50)
->>
-endobj
-1043 0 obj
-<<
-/Type /ExtGState
-/Name /R4
-/TR /Identity
-/OPM 1
-/SM 0.02
-/SA true
->>
-endobj
-1044 0 obj
-1049
-endobj
-1031 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [470.3398 477.3512 539.579 489.4108]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1032 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [316.7164 465.396 385.3363 477.4557]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1028 0 obj <<
-/D [1026 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-130 0 obj <<
-/D [1026 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1029 0 obj <<
-/D [1026 0 R /XYZ 85.0394 580.0302 null]
->> endobj
-134 0 obj <<
-/D [1026 0 R /XYZ 85.0394 580.0302 null]
->> endobj
-1030 0 obj <<
-/D [1026 0 R /XYZ 85.0394 539.9341 null]
->> endobj
-138 0 obj <<
-/D [1026 0 R /XYZ 85.0394 315.9171 null]
->> endobj
-1039 0 obj <<
-/D [1026 0 R /XYZ 85.0394 282.0038 null]
->> endobj
-142 0 obj <<
-/D [1026 0 R /XYZ 85.0394 146.7217 null]
->> endobj
-1040 0 obj <<
-/D [1026 0 R /XYZ 85.0394 117.3479 null]
->> endobj
-1025 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R /F62 1035 0 R /F63 1038 0 R /F41 910 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1049 0 obj <<
-/Length 3348
-/Filter /FlateDecode
->>
-stream
-xÚ¥Z[w£F~÷¯Ð[ð9#4Mþ93öÆ9‰3k{/'—‡6 ‹ …k4¿~«ºªHÌæaè{W×å«‹®ø W2ñ“,ÊV*‹}„r•ﮂÕ+Ìýý*ä5k·h=]õÝóÕ·wB­2?K¢dõ¼™œ•úAš†«çâW/ö… 'ÞýÃûÇÛŸnž¯UìÝüx½ŽdàýòóÃ-µžožînŸ¨û[ ƒûÿÜ=Â7¼^ GÞûïo>>ß>Ò|̧Þ|ø×u†ÞÍÃûÛ4õáϸ»½Á»žÿùxûtýûóW·Ï㣦/úóê×߃Uïÿá*ðE–ÊÕ:fY´Ú]ÅRø2ÂÔWOWÿœÌÚ­‹Œ ?I´ÀÉH,qRf~"`
-9ù¼-áY‰òLÙ½•µU]SKצ¥V›çÚTm£ëúÈ«ºªçÍÈ×ߢ(.†Ý¿Ä_œéÝùy»Û×e?öš¾lzÃgoÎûB÷eA/mc‡S¯gZ*·ÑN €ë0ô3)#ûªß‚ ªKf,$<±ÂåYä¹oÓöÔ(èhœÚíÊ¢‚Kíë²ÐÓ›Þ²æJoyý±Ñ»*§ùô(ˆ¼—2׃áÃú­æ íPtà‹›l[j˜º=ðªmÙPK/½¦ÖÝu˜z¯x@”9~@˾¾'vAgc—À_x ª±O4Þ7¦/uG"ffG©‡B›ŸW”µ>ºó^ŽîúZ!À7”ôÝUÍЗƞ*@aàUUóJsº(ªÞ*Íü]dÅD¶!³²ÇâW*©µ¯u2tSÌ•”ößįH¿à“œ”†èÒ#6˜^wÌšd”©Û(=³ú¢=ðimGëòN›­}P
-0B
-‡cG.º‘'`d›'Ï O0ú:hàN_ÒqõhKµeH–°˜3åíZ+æÌékܧþÄ
-'9™¬â,ò#&ÉMv¯+j<N²·qýzºá2{»<¹öëGzÈܵC„ …$Ð:“ {Ÿz0rå…ùýœè0ˆý8€¼;N!Ñ “åDs\µž.»$õò´‰¯ãW!8À™«£€^ı§óÞJܶ éÃø¹7æ\~wÿð¦2ú˜aÑuÏÛHÚØ²*Œ k°É16!ýršC‹¸Ñ@ÐdŒîŽØ•¬Ç4î oabQ‘7bÚƒN ¶š%BH9Þ4©/Le P--1¸¤Éë¡àŽÃil;*aûb<ŒóP/q
-cKüž|*,rÀû°Á†‹ótÞB¢qà€/²Q¦ÖAÛ\*ôÚw3SFXûÔ¼£Ô)8Ü;ÑŒçœ\a•Í11køè;Ç[xFÇß-U×îË@¸!(ÓƒáÍ`C;„© ”À8‚ä ƒ$çÈ ‚„ˆ[XÅìƒ`˜QløL 68µ·*pé.E šÄέWŸ){Zoºv·.àè
-äd5Çwí×óŽ™-G€ú¥zjÒy¤fŒ6ïhÆ”%5Hpmiò®ÚŸÎ±ŽW,T€õAš9ÉtXÌ1ýÚjÊ¥ˆ¤ô¥ÌœˆòšóË¿¼E*"·˜÷q åòxøa(¶šðCŽÅ˜œèKgç±Q̱ÑȤ?Tÿ2Üy*{Ö%@ L×ð{²+8Ìkqø­*(ˆÕV¸vÌT/Ü9f9‚ù"¸èb¶¸‹ ³·µÁEü‚•”Ø
-‡TT”ŸûëÐg”«‰´5EFv+C˜¸ a´ žB ƒ1‡»Â#ü©,øíÈ&œJ 9`{$ÇXX¼ÌØ8öS¥£´ûaÏAýóÉýÙ»Nëà5TÒŠ™VmÚÆ0y M½ê¦úâlF]ítÓÏ_FÈTVŒ¹¦ 3L>²)ôS€§³J€KÍÿg™çg ñJ`Ùyg RSúiŽœ L§e8j R6êÀ.ÕýqÑ|׎™
-%8LVì ” *Œ
-& âN‰°Mó|®8Ø‹iK…mØš79K(H~ꊊéØiA-j’~+¬üâ–Œv(9•8ÎV¼Ó´;)Ê
-##¸bV¶XÝom|‚—ñ×–¬p5qfz*xŽ°ØžØ_
-AîO†–H6ÉDžÅS0P—ú“¡¦cZDß-“b ËЯ¿Uš:%„$|ÃÒ 0UÄ„Ìň¸â³Æ_*ø'" “ÇÃmI [F¿½¿&p^:ÿ'³€d†UCÜHµ*{œtUhÌ_H3GZߨÚŽQÄ6[æ?ÌïJˆ`PªByß·´V §Êƒ-9ßQCÀJÀ.]ŒVæ<¤gXÇ‘Š öao’õÅ®$ÃN©7ê¢í¸j)l€°˜’BálÑþ°B §ã\YNcʾpAÛ@8ÎF}ûßBÑ#,&Æ,¨’qÔP¡‹V !¨ër) SÔÈ·-…ÅŠÓ\øn@ÓÇ!/4Ù¦Ok÷üª½º=¾Æ€@J4Õž†Ð{1Mú"–õf~àÅÏ,¯¡7„7ŒmW‹¨xÓ°ê` :"£HæÈs„Œ"™ £„Œ.¢NƇ 6V»@Ý⎺.j¶äCßþ:DCÕ‚`V -cÝ«FgÃ/å¶jНþÞדߠRÅ8hSwD§0 SÆ:vô*²øàä
-^0d~œ,Ĉ5ˆF(,Ú|ÀÈ­]¼ÇýÆ|BÎI„@„qHð°ž7o¬*žQ¶A4ûÍä…õa0îWWÍvb6C«—~ÙiÔ àÙüw—ñ×:WŽŸˆSNœ“ѽÆFxBùi˜
-ú!G‡·½\@_x¥ [¾5&~(Š7,ûol
-©mø¯(¡Ÿ¡AAÉM@rgJ'Ï¢«P
-ó§ñº«¾¸Ë8‹W‰=öÃO¿PÚ¾
-endobj
-1048 0 obj <<
-/Type /Page
-/Contents 1049 0 R
-/Resources 1047 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1041 0 R
-/Annots [ 1052 0 R 1053 0 R ]
->> endobj
-1052 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [464.1993 488.466 511.2325 500.5257]
-/Subtype /Link
-/A << /S /GoTo /D (proposed_standards) >>
->> endobj
-1053 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [55.6967 477.5271 105.4 488.5705]
-/Subtype /Link
-/A << /S /GoTo /D (proposed_standards) >>
->> endobj
-1050 0 obj <<
-/D [1048 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-146 0 obj <<
-/D [1048 0 R /XYZ 56.6929 556.0057 null]
->> endobj
-1051 0 obj <<
-/D [1048 0 R /XYZ 56.6929 521.4772 null]
->> endobj
-150 0 obj <<
-/D [1048 0 R /XYZ 56.6929 361.9951 null]
->> endobj
-1054 0 obj <<
-/D [1048 0 R /XYZ 56.6929 325.2573 null]
->> endobj
-154 0 obj <<
-/D [1048 0 R /XYZ 56.6929 133.2872 null]
->> endobj
-1055 0 obj <<
-/D [1048 0 R /XYZ 56.6929 104.8892 null]
->> endobj
-1047 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F55 1010 0 R /F41 910 0 R /F48 925 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1059 0 obj <<
-/Length 3001
-/Filter /FlateDecode
->>
-stream
-xÚå]sÛÆñ]¿‚o¡2æå>CòäÆJãLâ&±Úfšd¦ ›¨)€! Ñj§ÿ½»·wÀI©™>u<2îc±··ß» ˜qø'fÖ0®2=K3Í f¶º»â³÷°÷Ç+áahCýáö곯T:ËX–Èdvû.Âe·VÌn×?Ï¿üúå÷·7?^/¤ásÍ®&áó—¯þr-„˜¿|óåÍ+Úzõæ- ¾ºyyêù퟼aµ±ð^xóí÷ß¾¾íßøõö›«›ÛŽÒø6‚+$ó·«Ÿå³5\ê›+ÎTfÍì
-¶û7Á’T8_9äUÛ
-GźØÃ”{áÁ2Üxº-›_ß” *£4^°Ös^8”H!.7EKK÷;ÿîÁ#…†–p\Aý oíQ Ym³ùŸªb„Ìã‡ÑÒoÕþHϤ<Ÿlǘ¤Ùün8HÎmã`à‰XØëïi§Ùå«Þ4ujŽûÝ«5Œö©ÅM¢—–ª¢eÞ´eíGB¶J ʺ)WF§0ùEJ½s õÇGœ /KÞÔ!+Ø*¯üR¾ýàG5=—5šŽIÍP›Ê€Ê³íEЭ‘²½úîo“ªEfi¶3/aœØ NX^zàU]ý¹|O—_ÓªÓGx¾«÷bËšäáýßî‹}Y8å´N±k;ò ZDL™©$ .´)ÛB°ŽìckKl"=ø‹ Œ mãÝ~¬ˆYþ>Ì)©PJ Š ,q¥àài…Í:œ ’#— ?Ëc>È'a!Gqi™ŽhpÐq5(ÚMz Ç"™‚8ähR "‹=Î:´8!]Âùl9ïU´E
-î·ÚÞ¯Ëê½ÇïbЇ½ð™Ð1J5màŽË†»Hé’Ö)qâx¶Iw(N•Eñ ÑGÚ.•u绸|¿Ü–+”݉N¤#.¸ZqByÁý
-Û9S§¼¦$K2¡/él’rñ,G–Wð¯¸\Ó0Åd}H¶þÜo×tq®²ö0Í=%0bž7ýeÝ2Ÿ–ˆ¿+Ÿvú7½óE]
-Ž“v¢N‘ Rëu‰ÆŒ¬:3äA7&ãP¢?Á¦ãVʳw”œñä¹&!WÆ&E×h6dHHº¯0quW¬Jrv|þÝO´x$w\tÙ=…¨£²ê($¸ºÔ©¸¹õªËšÑ=£ÚüýÓO‚ré)åÒó] aŠ|8¼C1B_®#_»Þ—C´2Á]`𘪢X»¸„¯«üÞE
-õ’Šc"DŒdñbTnbBÂëê8¿¨i@Têuï÷b3TyúBá9¨7…
-/ª}µX ϶N‡ø¯=™Ÿ4!µ¤§·¨a)šwŽÙ‘àsȳÏ'ŒŽGûåškŸ:šÀfØ,ÕÊ£ys½H8aƧàô š:Èû§ºq‹€tpÝ7¨`J_—Ó¨x¤v–v~•Ä‹#—±8ƒÙäÛw~Í?AÓ]È¥YYuÃB—6Á¬¯ß•Iz >-‚‰ïàÐgEîÅbRC]>ijù‡ÊÝŠgd?]ãˆÛÞ~pÑß©ÛÎùo—.´MÈÑc[gØÂÔ ë@ qQKG¾DØûíµ˜?º²Ë¼uß­·úB‰gÇ$r8GÓŒÍÏñiØXñ
-<‘šGPÎÁž0ÓQ ÏU®QÓ%>d•£öxw½{¤yÒò~è2«<;pcVÅM]Ü },åûXèj›Cähp瑞]²7ÄØçî2 í3XîËŸÿ¹Õ(,xbSz(œô…‘Ç
-|_æ«]ûôß;N]W—¼hs²½*!DÚŒSº¨0¾‰Wk7ªéé;•0Ú]», …JXÌQ¹;Í–RÅlØ®·ïPS„ ¡wlÂŽ5´ƒ2N<ää+ á`ÊvE±kqOä?³‰
-I!ñNDÅ/e¤ó=mEû$…÷
-Ĩ ìSgyT©¸¦y32ËÛ>xßUP‡2Çm‹U[>xHäÍÈõÄ&œí®ûøUÀ ‚Ãv
-“7 `©gŒN¡wbAÎÇü&ePÁ†¬¶ÿL„N|&‚š
-ä•Pn»ÎK0‚:#Á
-endobj
-1058 0 obj <<
-/Type /Page
-/Contents 1059 0 R
-/Resources 1057 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1041 0 R
-/Annots [ 1061 0 R ]
->> endobj
-1061 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [417.8476 181.7231 466.5943 193.7827]
-/Subtype /Link
-/A << /S /GoTo /D (sample_configuration) >>
->> endobj
-1060 0 obj <<
-/D [1058 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1057 0 obj <<
-/Font << /F37 779 0 R /F39 873 0 R /F23 714 0 R /F41 910 0 R /F14 717 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1064 0 obj <<
-/Length 853
-/Filter /FlateDecode
->>
-stream
-xÚÕWMsÚ0½ûWxr‚ƒ…¾üÕœhBÚf:™4¸½$9¸F$Ì›X& íô¿W²°‘ƒ€PÒÎt˜Y^½]½}+VȆâƒl×^ˆCÛ)p!rídjAûN¼û`¡¥S9ºÕûÈêßAèaÏŽÆV
-ùLšó'ÀŽäÏ[Bì½eK¸]—q¶Ð]»PïØ8ž§Ûš?Óe„¸@Þ WØðxðEeuG£> A€›;HKôØ
-endobj
-1063 0 obj <<
-/Type /Page
-/Contents 1064 0 R
-/Resources 1062 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1041 0 R
->> endobj
-1065 0 obj <<
-/D [1063 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1062 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1068 0 obj <<
-/Length 1946
-/Filter /FlateDecode
->>
-stream
-xÚ¥ÙrÛÈñ_ÁòYeŒ0ƒ{ý¤µd[›¬ãXL^Ö[®!0$Q‹ƒÆ!™IåßÓ=Ý Ú7¥*ÍLOOß(—.üÉe×Küe”ø"pe°LË…»ÜÃÝÛ…dg@rÆX?nWo¼h™ˆ$Tár³ÑŠ…Çr¹É~Y½~wýasûqí¨À]ùbí¡»º¾ùçZJ¹º~ÿúö†®nÞßÓæÍíõ:òW›|¼EˆT ¾ øåæþîíú×ÍO‹ÛÍY¾±ÒõP¸/‹_~u—¨òÓÂ^ËG8¸B&‰Z– ?ðDà{Þ
-6WWhLÛ5yÚÑiDP§©i[´íH)’ P# “öM›×ÕwóWþ³ü/Dgø
-!¦`9Ÿ“GÀß(O$èb„þ«®XÍmÞ)ÌW] #Òº|qVHzcKµƒ÷…~à­%…,®öÝéÈx¥nÁ¯æÛåÝåɳ«k+Ë«9É]£«vgšïµÿÈVêOØJÍÚê0€µÙéß^ßÕŸLÙN×UÝLóy w?ŸuÛ}.õik¦šÏÆòŸ3åZòê äì%µ'…ù¡Å¹«¨hØ„<É}5?Gˆ YR`‘j7C8Œ…ò}ɸŸÜÀ­¢m¾ôùƒ.LÕT¬ñµ6ÐnH¡Å?Ìæ@U‚º7èYž­ÑMz »|“¦d’J—¦5ÍÃ`e)!CÿÕœŸG÷¾ºÏ“Ké Ï»"
--VÒ¼;±˜ ýñîý í]7gÇÌ´i“o‘§'ƒUzÐÕ~8 vÅÀ±·uõÉuÕ¾o41F B
-FÐüòÑÅÈAw3,4iLÚCÓ&#èc7Y¾C8¦-^WLog.†{9Yy•}F~§ÁÑ>ªm×£DÙÑš5Ý]ÞL¬ €ß̉é*£Mß>Þæû©{ö˜wÚ‘“É!eXÉñP¢
-eS ´™¶&ÐÖÐÚ·f×tKn`v‚:–§ŒqÌtgЮ·º&ùýD‡³SÇ$ô7”’Á]øäP÷EÆÂÕUG!Ïb<?ñÙÌbÎü(¹G( J(Sž_‚—úŽÀwö>`Föf"^æ-¯UÛÛÇ‚’æß`Š0ð&!@ætìê}£e^òÖ>ÉîP¥3‚lO´’ÿpgeðØé†Õë¦ÉkîVœÈŠ3t˜Qû–žðbü  öÔ²‘¾m-~ b•DŒÈRRå™#§öT´‡\Óf~|@6IbÅdßf8Ë@Dž8cZÎŒ!®}ÿLæ4CÆÑ>gâ'ƒ7Ö“s1,òŠ«l}ì83ñÀcJ^]Ð T?Í´ w³††QD(é,!â9MCºQÈ8â2 ò‚
-ÌKÔÂKàÔUÃd $ÏoMeé(ÎýA7†Õû˹üï•nuÊåüƒÎ›©&ï`Æjç§ ’Æ<TAÎ{ž9«/ φæ–P|Ïâ1šÍYX±à ÚS2[Ó=S‘^2ö¹J„繃Óq"”3Ò*_$nò4z¦”ð9ŒG„Ô!Ÿ(NÎÞÑ
-^Ebêf›C“Áš‡Gô¯ÝàÀ7Õ?ú¦ú¦rSª+a~žÄä'¥|«ŽcexÆ ¥j3Œ–nˆîʾí88Í“¡¡=# ½}[}y´b&fqšŒ Æ¢ècç(»î»º„&œ:þ$þý€!BìøYãf2JE8<æ8‹án‰g8iZ¤Š°8pä”!í·§Î £g²z÷óõkç盀Nd3$ÒÒ:Œ‘ÌSoëÛÉÂhõ×ƽنÊC6ˆa Äj70ê*xc§mš_âç^Ýæ
-M>1:C‰õ¾î¹³S©:nJý5/ûò̃6ðEµ·n憥 R±Ày‡ßˆ*Q$ÔLC-ÈKúüE¦»a´NE\–Ã,Ô ç2,’ðq=c³>å—š–‹c9Èq@ãèôãiP§™¬j¡â8ðâ…>®Më¡Ô©SfC·üé¥b0ú»¿ÝoøÁ(÷žû%Î þ|6ó»™{®×ÿ÷¯t—Ÿ%ýút¬Î?ÀMòËsCjÎ,ÚCyO%?ÿœ÷­èÿ¢ „êendstream
-endobj
-1067 0 obj <<
-/Type /Page
-/Contents 1068 0 R
-/Resources 1066 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1041 0 R
->> endobj
-1069 0 obj <<
-/D [1067 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-158 0 obj <<
-/D [1067 0 R /XYZ 85.0394 427.2881 null]
->> endobj
-1070 0 obj <<
-/D [1067 0 R /XYZ 85.0394 390.6298 null]
->> endobj
-162 0 obj <<
-/D [1067 0 R /XYZ 85.0394 229.0656 null]
->> endobj
-1071 0 obj <<
-/D [1067 0 R /XYZ 85.0394 200.0179 null]
->> endobj
-166 0 obj <<
-/D [1067 0 R /XYZ 85.0394 151.3455 null]
->> endobj
-1072 0 obj <<
-/D [1067 0 R /XYZ 85.0394 127.291 null]
->> endobj
-1066 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F21 690 0 R /F39 873 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1075 0 obj <<
-/Length 2296
-/Filter /FlateDecode
->>
-stream
-xÚ¥YK“Û6¾Ï¯PåbªlÁx|Ä•Ãx<v”]{½e/q”DItøEj&J*ÿ}h
-l$#¥<ÅiH$er´¨®èh cﮘá™X¦IŸëõìêå[R’F<ÍV½µB“„fË_˜@ư fwÓwã g<¥ÁÍ×g·?CWR`A†ë7ÿ3Æ‚ë7·opè͇;l¼½½Ça0ûåçÛ»ño³Ÿ®ngN¾¾Œ
-%Ü—«_££%¨òÓ%"Mäè:”°4å£ê*”‚ÈPK)¯î®þíìê©^›0J¸ˆ¸Ç(\øŒ"S RF™mrP ìð{~ÀFѪ/ ŠûåøD)/s¥òË·!ë-œ
-ÂY¨äQ+þcÓ´›¨ÿ9yÎdüœªd»+î³ÎÌÆI•vðA(Xð¡é6E½Æ½—ÅnÌ’ _t¥sßæ­ЊŒ¾O¥Á|߀MG'D2°ñ„1’JÉõvó¬Í'QˆÎÍëE³Ì—Øi»
-
-{èéü¢ÛYmxÁ<¦•µæk”ÚdhJ«d¾À~÷½G¡ ‹cÂÇR§Ø$+ÿ3{y+o>¿Kÿõ¼iÙç/4㟗×?üàQ›טYùûf>cWÉ O„µØ7ìÉBABH‹¦~l/gßó#fÇ¡ÅRIbÈÛÑD„p4v‡#|<a Áû¬Þg%.÷.¯ó]ÖMí·—*[{&ñP$õDÂqŠ^T[0@Ëð³ƒÑ!¤§}ÙCÄ›E›RçE×Bñ°Ÿ@×ð™„!*Ídðòé×w7Ó©YX»´5£hعÏÊb©Ó‘žKC‘ 碒fm»¯0J`¸³v(ózÝmX´==“ Ú—]±-º%YÓDÑk4ObÓÄXW¥Ý®5Ü}T €DÌX¨m"%}×x´8ʇ•Ž -ôÖù’¸Åzt]¶#fZé(~¯›‡›.« »@CïßÝ8 ö†ÖmðXÙ¯7žpf '"J“AU…!á UÈÑ0v9Úìpu#bQf†¶Å ×»¬2"4øµêa]D@ÇF"äY `ÄжˬˎéFt À¾Äd‘JE›ˆ7Íöà—ñwàC›íwà1ë--'|_7:è¤Jä€ ÑåÔÕñ™D§‰_†@ÃØ.šmŽ4²ð…ƒàà5 †ö."Õä1SYÝn›]‡”*‡®‹¶26;\Ú]‘¦ÂX-‹h2XX¾Èñõ6ó„óÛÙÇ1TQÁ s2¶Óêò2ßnš:7ý¼[|Ý5¹F×LëU³«<ÎÉw÷˜šÐÑFê2=K0$voÿ(ÚNq—4­²5xù
-`éJÉ9Äo©ñJÛg­‚¹d„RiÍPgТ©WÙ#€ë(²¶ÀúÄ[]„œ‘$@ ˜&ÑüºUµE¿DÊ_:mü B1+×Í®è6•™[e‹Iµ”¯ÎÂ*§ãw窉ïpêäd7¼KüýÊP¨;¢µ ü(šªLYèd3]åÅÖY~%A´ ©ÝoUz+÷)úü€ä×Óo’Ün}ˆQžåsqèbÄœ7÷9ñÙë®ÐE‚ˆBSl«–ýfê#{Û*µR]ŸO¦€o„è8Äå2Öƒ þ<' r‚ôIÕ…”CÖ¹‘¹nêÉC³+Íž(H¶ÌæxWH…F+ÇLQ1ˆP7HÉù‰ûבâ>¸'ÉLåÝCuûb<.äÑ0ýì”{·öüà3•º‰ÁEø –‚;`»lF¯O\_(ãÉI™¡‰ì=K€7EÝé“Ý>0ŒHi
-C9¹‡h?ƒÆÃxÿ¥Í£òE
-mÀ·lr3£n:ä‚€ë2ý
-endobj
-1074 0 obj <<
-/Type /Page
-/Contents 1075 0 R
-/Resources 1073 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1041 0 R
->> endobj
-1076 0 obj <<
-/D [1074 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-170 0 obj <<
-/D [1074 0 R /XYZ 56.6929 691.7741 null]
->> endobj
-1077 0 obj <<
-/D [1074 0 R /XYZ 56.6929 668.7722 null]
->> endobj
-174 0 obj <<
-/D [1074 0 R /XYZ 56.6929 579.8329 null]
->> endobj
-1078 0 obj <<
-/D [1074 0 R /XYZ 56.6929 549.1878 null]
->> endobj
-178 0 obj <<
-/D [1074 0 R /XYZ 56.6929 502.9124 null]
->> endobj
-1079 0 obj <<
-/D [1074 0 R /XYZ 56.6929 474.9173 null]
->> endobj
-182 0 obj <<
-/D [1074 0 R /XYZ 56.6929 277.7919 null]
->> endobj
-1080 0 obj <<
-/D [1074 0 R /XYZ 56.6929 249.7968 null]
->> endobj
-1073 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F21 690 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1083 0 obj <<
-/Length 3185
-/Filter /FlateDecode
->>
-stream
-xÚ¥Ùrã6òÝ_¡·•«" ;O'™“¬GÙ­T&´[ÌH¤"Röx·öß·/ð2=NÕ–«L 4¾!½Pð§© ”É¢E’EUÚ.6û3µ¸ƒ±oδÌYùI«á¬×볯ߚd‘YÆ‹õí
-n^l6®i¸}YWí±Þáùa3`½Z¬Â(È"ú×ïÞ#[S½Ìw»ú—§áòÝÏ+Šã¹N—€×5ª
-nóêÎÉü¶fØãosp›ò£R!ÑÊŠ..àFáp¸*Û²® bfzõ€^é@Ù$‘^¢rÅóàý¼0 ’Dg2ívS$i$ãžÜñqK˜$ô›ý1ƒn#‘áXÐܺã ¸òPgÑð¬"«€b›-VÀÔÓ¡È[7‡$6‰áÝÌÅ&A¬;ÒŠ’ïmÓ–÷®0Ö,×ÛYÛå6§Fæ*n¹Ï­«
-º/˜@
-Pb7ƒDø
-?åcFs¡FwÊñÂ}Z4™ <QÒ,’T1Žâñ}ÿzž…ËúÄìóG‚ª3ƒ™ ¥ ³§v†}Ís¸w¨Üñö´›9Oˆb¡Y¿:Ô»ró8sž ˆñzÚ´0yï<u`&'+Ò`‘¢0Z€rÚ€ßÁƒÇ»7®Φ›¿.`g3$ã)^$ç
-|-ZaÆAô„¤4X·IO¼^7ë%Bž`CB‚ŽÏÿ¸Š”
-²4´‹XÃ4ŠÒÎCÆâ!¯ŽÇúؼìöØZédy K®Ñs–ÕÃÈ<èØ[<€t‚í=LÍÙóAoC6&‹Ÿ<íZ ‡Kݽ;æ;î¸#owD“féòÝ-äÏî#ØÞ¥aQ r¿²ª+òŠdÿþD΂]~È;†nãŽ@ÆO_! #D
-!Ûè+h^ÅßSõ©ª*^…ž#|ฉRf3Âå®
-J–Bè<"Ùf†ce»…YF JhÈñŒD;ïÄš»›ºp<­q­ ¨ùûúâ ¦HoÀâ |s^á·Ð#B·ã ´'4ŠWë¡Ó N"òöÔí¡b8(*ªQɲ¨ 3ÀH¡tŸïJtMÈçPüÂ'|†%Âg»HÇg‚
-a´¡ ‘chÀY•Œ8 ƒÂY•ggÔ™øYä3` ¸C,ŽbbRäQl YõŠ‰í ‹ûÕ=‹¡#'‰,Âʽ A@Д…ïÜò—Ï‹Ó1ò¢CÂ"Ê„­qöÔL…3Õ1Y+Ïd­˜Éº®x”Óþžt'Y*²àCCWX¬½ðj6ø¦®ßýxõ÷ȲŽvÃC dåD|ó„ΉyàkñANÀAÕ’@("„ífOx€vžÐð¸(Dmˆ³È|¸PI$)Ï
-©}èM¶Z¾ÄØKʵúÖív{ÒFœâ>£LÜ9ObF‰Þx²úK¸OËNˆ;µ¬Êïeïœó$๔/G{¢¥¤]ù®ÝÖ§;¤Î  .± wæ–ÐåÀ—•ÒÌÑÃD·áh¿1 ƒÃ2Šñ Å?øù7\ k49»õÖÍe¿~EY—
-È„uÒÄÝIv'¬‰6 lO<U~ãŽ%UÁ( Ék8º0’ÞNïñC4eár5 y©ºÐ§w+«5+ä`„Ú](f¢ô&¢ÂŽ–­|e.ŽÅd²WLhÛ-“7ŒŒ*Ϫ†¶°ó‰•V©¼4@®À¡B¦|ÃQ¬FS5%^^ܶdŦ‘d8 åØW\A¹a' ùšò“‹Å©ì pÌUâN
-cýaÒ±ãIׯª‰ÏñNý)yQhTŒ—ÈKmjäÁ-Fà[Ÿ‰ÿ8aÛG&öRPÎ~©GáôáQàYpb)h ÈHî¬&{@’*âCbÚp̆¡¨}1Þ—$ð}î3eÍAà/A¤¶D‚´Óƹ´9õ±•bâ›÷>\]òÈh¥×­Ü׃qñ°à (èe
-Î&ßÏ&ü Ù"tíM6t¯%Í+ï‹Ëûrçº(£ |p÷ÐvÏ6G Te÷Ó?ûÒ}÷ˆ1z–™­
-endobj
-1082 0 obj <<
-/Type /Page
-/Contents 1083 0 R
-/Resources 1081 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1090 0 R
-/Annots [ 1086 0 R ]
->> endobj
-1086 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [418.3461 611.3335 487.0181 623.3932]
-/Subtype /Link
-/A << /S /GoTo /D (dynamic_update_policies) >>
->> endobj
-1084 0 obj <<
-/D [1082 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-186 0 obj <<
-/D [1082 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1085 0 obj <<
-/D [1082 0 R /XYZ 85.0394 749.4437 null]
->> endobj
-190 0 obj <<
-/D [1082 0 R /XYZ 85.0394 597.4103 null]
->> endobj
-1087 0 obj <<
-/D [1082 0 R /XYZ 85.0394 573.0707 null]
->> endobj
-194 0 obj <<
-/D [1082 0 R /XYZ 85.0394 410.9267 null]
->> endobj
-1088 0 obj <<
-/D [1082 0 R /XYZ 85.0394 378.8211 null]
->> endobj
-198 0 obj <<
-/D [1082 0 R /XYZ 85.0394 204.765 null]
->> endobj
-1089 0 obj <<
-/D [1082 0 R /XYZ 85.0394 171.4256 null]
->> endobj
-1081 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F14 717 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1094 0 obj <<
-/Length 3094
-/Filter /FlateDecode
->>
-stream
-xÚ­Ërã6òî¯Ða«F®Œ<Ìžœ±'™d×Ùµ=äq DØbE"‘šÏ×o7º‘Ij·|P£Ñ
-\`ç*’"ɳ<{ ¹ r'„ŠD% ¤H€+÷›Ã…ÇF­À i{VívAŒŒ[“âä°§¥ ¯y1P=C‰2ÖTnº–pKžƒs·‡æ˜Ë€(2®«¶uƺ/AiMz“íÊ!{>ÌÙîù˜u½©ˆ C¯d^`Û¦ÛÖý”{¢µ¢#§P¦`úKýúW>™j
-§œS…eà¾3`ýMS7^Ó‡yD?š³­³ÏçÐÌ£¿ JG·ԪܕœÍ5;^×nÞ;^Wœ¸T¿¿´sVŠ˜×>>
-Ä_±¥ß'bù(X  k“LæcÄ€•ɰfÃ1  2
-ÃwHCƒ8ïuŠtíôzn\¼T&f úPûŠAQ¡JPPÁ
-Z
-[ªŸ~¸½™0FU$Z!¾¦í(÷Û˜ˆ
-hÈX ßùúBó…T:5 êc¢xɳ$×"HÕ>QAÆK³—Žà–Àä F5¶ÂãéÐø½GÛ™à@Д̎¯/âà÷»ñ; °
-oÖÚ§|;ñHÿ
-&€ÅíhùB<‘6OòT¤,¸?°<#¡ÌQÂhþñ8íèh®šð¼–~F” 8Ãû§ÅM5Ý3\ç°Ü@6¡_‹™ÉÎz;Š“ñŽ/ÆÌ‚› ÿ ž­²$rêr“%aŒÒ£û
-º ÿ²±¿Dnc²³  åv(¥¼Ôè9Ûb¹·ÎùÉQ\Ñ
-¿[`aÜ{5ÏSyY%­NÄ·!×O0©mbMQœéT@ðm¹ÆìvmSÕàXÞˆ„äg|yòD¬–¾cáÙ`Ì‚YÈÁ³K…{&Ù#`ŠÍXð'†=a¹è1²ú׆óë.°ÔIÕI‚¹þn¥°®ÉÌÖ5 á¬Ð!ÜÝÝ¿ûfJ|*Ée*'ßw|ÝŸû.ÐÓ𸢠–LÄ}$@e7ÅŒnD|Æ}é©)‡Ë$|jx̆ãû"3À×ÇáGÊãV¯Õ«…z¹š÷¼O£‚¥œ¿›:!3Ð[‰¿z}xK!y)È^#MÇ×ᯣó³C]ó+ÎÝ8C7ÑÐÞ܈レˆ‚Ãçhwê¸ËÐýTU˜‚<pðÏaøÍøå>KÙ°ÏÂaì³p€ÑHQ¿Èƒ¥ø¯ëÛ¸.Í_Q‘Ðת}óŸD9Gà!À›«&óAšhý “J>×|AG•˜"zh?‡Rðk®‹S¨p!¼«q]\¹Çò°éYQeè&Gïy,oþè… ¿up©ïß—õ¦Œ_Žåá°×}MøÜ{׸rK&ÚH1Ù>Æ|@­a;ÑêOÉôäŒp_ ½bè
-EuŽ¿Ÿm A¿&~ÎKŸy§Â 0ÆsT³*Â#ü);! ¼dI4Ö`+æ§’˜Ló$Íc]‚m×U‹TIL¦OžgÚæñsõnÙ8|ÝxaRyMÜOG†˜‰§þµC›ÿcâ1D,Yþçû8þ§ HF[«ŽÿÑ1®Ô,6a¦ðÚ*;ã<üÈ9ëÿpj,Èendstream
-endobj
-1093 0 obj <<
-/Type /Page
-/Contents 1094 0 R
-/Resources 1092 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1090 0 R
->> endobj
-1095 0 obj <<
-/D [1093 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-202 0 obj <<
-/D [1093 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1096 0 obj <<
-/D [1093 0 R /XYZ 56.6929 747.8139 null]
->> endobj
-206 0 obj <<
-/D [1093 0 R /XYZ 56.6929 540.916 null]
->> endobj
-1097 0 obj <<
-/D [1093 0 R /XYZ 56.6929 511.3349 null]
->> endobj
-210 0 obj <<
-/D [1093 0 R /XYZ 56.6929 239.6059 null]
->> endobj
-1098 0 obj <<
-/D [1093 0 R /XYZ 56.6929 207.3747 null]
->> endobj
-1092 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F39 873 0 R /F41 910 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1101 0 obj <<
-/Length 2902
-/Filter /FlateDecode
->>
-stream
-xÚµYI“«F¾÷¯èx«§Ýˆ¢XÃ1mOûÚl @b‘
-WýÀ«,0,TøWIá«῰¯6¢µ_@Æó‘3}<rÕÕ—êw(½*Œ"r⫺{%3¬,ƒWÕüµÒèÔ&jkööÁ l…gÞ>‘­Ôš‹7
-8?r*‰ÆO3F[ƒ|c=¡HBEb  +ÏP~ÂŽÒ†À‡(¬Î„c”Òá1t1¨„=ü² £Ìdº‚×b›Rò
- d%šÏ8!ÊK–e+0À!aŸ# 3·¢‹•á‹äpÈnaŒå¨o
-WÁJp©¨o=«ØüÁ'AÅd@ºOCë‹d
-r!ŸÇa–ÿO–?Úôe…"Ÿ]îŸãÌÛÂÝ_<šZ1ñ#HŒ¢ ºô8”Áÿ
-QÐE”gáBæ·ˆP¢Çr
-#¡¾•±2%f| ŽÆÈ
-¾3 7^¬½"ºü‹ˆç%FæXtÑDG°<a®’€/u¸,2)á„ëó@˜…¸ìa±}‹v0Ü?¸’å™Ü‡yºß@—Sàsl~c¾QÉœ Ñ|z|«Öü5ZAÐØõÞ+“«tí‡ÛDŠ[­]ÞlÛÖÕë¼w‹Ú‡[onÎbWšÜ{gº5ºnK,iP·ûÆk po×:Þªo¶øûº{œ9z½\Œ§)þÆ9˜ÚÑ‹8¬vjæ~dÉè÷5,sÞ=åV)ð–ãZSÜçÅÒý½¼
-uïß rÚ$äH…Ãðœ¢ÏzõS\p¡+®I_ò/U¯Tðw6øWƒ!Ã(=£`Ýtÿˆz¯_¥"dR»¶j5ý63îÆv¶Ó¿´6u1l5Wï;ŠBë¨ûh 6zmæOœÖfCÕ0+~¹»ÁµâîìÖù$]6Õ{{£™­öh™¾÷6÷sÌzÚ1¹ÚûöÕÑæ@äΖïõµí¶,8ƪ1”ו·g[î
-†Íï ßó<oõ15@ëk»ªß:—ÝuÝ©Ö-Žk²Èð"7è÷Ž`lóéõ>V–¶7<Hûín ¡­õ/n¤v"Nh¤¹:Õîõ­ Å·Ò“’ìÙAªj$°wm¬§¿§ï7¿¶ØL8ÖµU÷æU00"{Uí[m³Zj¢{¾|çO½Fjž]«s>œ×°Ã¯†5cö~suŽštµÉů†ér&×—UgiÞÇ— ÌÄyCu¼ÎÞܵg5·I5cuÊ*5öŸy¼:íÿðîý¸ûæÁMÏPÈÝ $ð—ʾ„îZœ$<›É1øë2ÇtGµfs6©1£–úGq>sþT»öX;Ö'=¸ íûո͑~c%0
-µA™R§·îôœÚ¦) eqÙÏ'ñ¦×±š -]®£ËdcÅ›fwvqšÍ²ýnÞ¿lËR{š/¶œÃ=MF#n>RÄéì ï«nWv·EØ—zóß¿ä’i2Ð?è'ûò£Ðãj†aþÛ?&…:„eÿo°E2ýíS>ÿ@BêAYæ>ÿ(yú¬ˆ¿œ£s~®É 髿Åß.?ªþÛúÞendstream
-endobj
-1100 0 obj <<
-/Type /Page
-/Contents 1101 0 R
-/Resources 1099 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1090 0 R
->> endobj
-1102 0 obj <<
-/D [1100 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-214 0 obj <<
-/D [1100 0 R /XYZ 85.0394 717.5894 null]
->> endobj
-1103 0 obj <<
-/D [1100 0 R /XYZ 85.0394 690.1986 null]
->> endobj
-1099 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1106 0 obj <<
-/Length 2380
-/Filter /FlateDecode
->>
-stream
-xÚ¥YKsã6¾ûWð°ªÊBð"H:'gÆ“8•õxmMöÉ¡1w(RCRÖz«ö¿o7¤(šv¶jì*£4~|hÐ"àð+‚È0“Ê4ˆSÍ".¢`½=ãÁ˜ûùLxžeÏ´sý´:û჊ƒ”¥Fš`µÉJO¬ò?BÍR¶
-âæ"XÀûƒ'…ˆS:S]A`È8 ë ¶IØ=ú¯ ÉC‹ž[š*‹¶³9ÍUÏ^´4bЇÿζ»ÒÒTÖxIO …XJGáuE㻬Y,5»b½/†<Ÿ(ÑÔuGC#u¼^«
-8fz´éÄÚ€S“4 ÆAð}q…¥ë˜Ëßõ§¡ª5ð ¡*¡™ÒFŽ3Šc
--˜Q:Ò¶¨ºe%OCÅDÚbÅqøÑmêöG·€M[RjÙû¨”&¼O¨(©–(ª¬y&¾2{°¥s‡3‹ˆ9‹ãDÌg°”Ç|…_«úPIXa¼Ô®íˆAìÀ
-A,äàsB…‡}G£#`ŠèÐzÄ2Uó<ÒNÀc­ß{]cAÕY‚¦h
-MQ¸s&ƒÅˆÇ3ɇèìê.þ=«œf»]Y¬]ßÒÅâ`b#û°ÏkêV®b_—ÚÎÃqot Ž“dp"±ûömé'¶”¾öÜ›¼—î®ã™cw·o*<[êîNl-!¦;v‹ µ_
-7&C‚€Û‰¥†@ )Âï¹ûn
-wƒyvæmß(FÕ„JóT؃ïm<è>ÚoÉ=n‰jq¬QÖ`_gçÓµ¯TAç~­µÓŠ[Eƒ‰L<Ê=ži²ùâŸ7w£WïÀ¿/èßicà›ÊE ÜÃuVô5Õ%“L¼xðÖ~Å¿x{\¡ÅKi¨óØ'ÆïJw²8uG„G‡ÏÂ×ë—`Qª`AùßèF¢Î§öxóQiÔÞ{pÏ×î X z¬¨‹zç2DH5^4¹Di̽°ðE >צ®Ëlp/¶#ÙxáIÎJuÅ…‹2Oí«²øjO„èéUCªš7äµ;».0l;—GC¤CÑXŒÃy6ŒOŸG¾AË÷Uø©
-ˆ¬‚“ÎÒøœrò‰’²$¡4ýÛÇ»ëŸñÓ~eñ«€=›;ÂcÝB†ÆXðÃVšÓ‡/ìöá€cÀ".ò‡äâB¼¨‚üÂÊG)í[)òß²¨–dœÙÂMN@zòäÁ¡¢¥…„t0Ð[g»µpMäî“›
-¯7^5t\ç.<7SQK„S£Ýš£ˆ^GfˆŠ×/†qˆ€[èò::-vÞ¿÷ºÇo aàÍ>Ô)ø¹) ‰I˜ö 2±/.âF'~QÖN°vt¦yxJ2ŲÇ3àƒœÃ‡þÅyCO‡7ãÆ¤þ#'!þ_BÆ?݃UqzD:QØÙï¨ÍüäIòà@á'*¿'ÒC}¤àùáì1»«¸«Î÷³>_±Ó$ÏDŠ÷ÜI5á¿ö.ª¸vv÷ŠÌ=ô!ļ"xß½t½†rZ¸¯p㺛Í,‚HHDÏØë ƒ±Oº ‹pt8³?ð¾ì¼Eµ«# StìÙ 9µØ¦.Ëú0øâPïK¿fý„¯b*r¹f1“"÷ôÕƒ©1Ľæ_a”²C¾¼@Í™JxèØ[çm`2‹#Õ'›‡o2耵_EQÎNöÀrh…ëIvâÉ)Ä
-Æßú…ìK` ¡5¯£ïíê=ÀÉHlŠåsÇ!¹õ|ÑÁ8øî/¿ ê˜)¬’f«xÝaõ¢z¥œ³’š÷ÿ‡x©úÿ
-endobj
-1105 0 obj <<
-/Type /Page
-/Contents 1106 0 R
-/Resources 1104 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1090 0 R
-/Annots [ 1109 0 R ]
->> endobj
-1109 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [349.4919 384.4828 408.4801 395.2672]
-/Subtype /Link
-/A << /S /GoTo /D (ipv6addresses) >>
->> endobj
-1107 0 obj <<
-/D [1105 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-218 0 obj <<
-/D [1105 0 R /XYZ 56.6929 594.1106 null]
->> endobj
-1108 0 obj <<
-/D [1105 0 R /XYZ 56.6929 562.6395 null]
->> endobj
-222 0 obj <<
-/D [1105 0 R /XYZ 56.6929 370.2937 null]
->> endobj
-1110 0 obj <<
-/D [1105 0 R /XYZ 56.6929 341.714 null]
->> endobj
-226 0 obj <<
-/D [1105 0 R /XYZ 56.6929 214.6004 null]
->> endobj
-1111 0 obj <<
-/D [1105 0 R /XYZ 56.6929 186.0207 null]
->> endobj
-1104 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F62 1035 0 R /F21 690 0 R /F39 873 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1115 0 obj <<
-/Length 1913
-/Filter /FlateDecode
->>
-stream
-xÚX_Û8ï§È£h\KòßÇöfoÑÅ]±èÎ>]ïA±•‰P[ÊFöäæÛ)JNœqºE€˜¦(Š"©)³M?¶©‹4M¾©š<-2VlÚá]¶y†±_ß± “"-r!àeet[ˆ:-j^m¶×J>=½ûðOÎ6<KË’›§ý¼VYÕi#òfóÔý'ùÇAGuzØò"KЇÿ>ýFÓò´ª+†Ó2X¢H«&«ý„§ƒ"áOŸ¿<ÕÐã_úù0žþã«r¶åQ+ËS‘—<h-EZ•™Q¤ìa˲,»è¿¯. ïNòôt‹M“6%/ƒj^§eÕ2ø¡É’“ìô¨­‘}ÿ
- 5e"Ç^·™Ž8ù¢ª’R†x½6ßUGôY—Äpã´#êôÀêd6&’y^~<È1LQ¦s×sÚéä4­[&_þ  MꤕÃÍávK›¢à~;£¥ýKzô¶•=‘­lÚ<Ó‹‘Cð£S'´ªÊ“tÖWA@Æ ¾Ï¿¿”[«[Ó*¤ªD›Ñ[g»©ÅÝã¨QglípìÕÿôøJ lid<(bÍî˜Ð½Ä;’ÆV9÷þa 霸©=ÐDéHfoûÞžýý1Ö¤6.ˆšnÍ+_>þûØ/¯£_­v¸Üσá*qz˜úQe'Gzk¿OGµ{âWr¢æ‰ä(Ï꺰C§\
-veÒÖNϬ—ê¼g¸rÞÊ.ÎèŒÈ¢h¡Á¾¨îý<æBh%ÒËÞ:z³á˜èáhÓ»>HÅôÑhÇ L8[Ú,²j¼œ—D>Õ/…T¿—T„ ¬ñØ€0š&îm´Ù­4DÈÞY¢Bž¼è.ÈÜ&ò0§5¤RP¦†³à÷öÆ'çSʯ†í°ÓF^b ®Æû+ìY‰Óò¸ó†_Ž;oDHàJz+ÞI©!úê`Dñ:™Œ¡£ Q’â™ÞR-ÅãT!pº
-M&PÄqíèÙi7jÓŽ4¾§YyŸ"A¦͠ì‚d,"û©ì±‰kkÒ;¥)ÏR^Š:”&JÓ×9*—“²,Jן©IW؃È!6Š‚O
-q¿–D"mX• ‘¹ÈjmËúÿ@CH®2#¶¦È²&RØš8"u£
-:åô³¡&Ä«»Û†ý5é˜âB€û}Ye¡ødÉ °]B楖x¬†Í@”üizT(þ¶Úxe訳vTn3o-òÁa^¨ª1ü8Háã=ô6³¶µ{Ó‘¡š»hW”P·Šj‰v¢æwЮ„Z[Š´»ƒhM 5ƒ© º¡s?‡+ì
-ïp,'èñ+)jä‘jåQúk ©ï¯‘ÙYºÝÕ¡Eâ¦Á§âÛð´â·I-§Ñ;ÀÍÍ$b®»Ö¬Ý‰ÜQµ㩺›{JýÐà4;,ÿ‰f`¨º ‡W$‚7€Úù«1[Ë/¥nÆÏX «Eš Q S£»»·ž;šWïP{“øÄDN)ój=u”ö¬ÊùßC;»òÕ]Û Ñ_;Œ`ÝÄF
-q…7ÉGb†N0bèKNôJ… $ȳÈBÏ"g¥O Øêåýµ G’^—=Ys{}ñJE½Ó6l`‘“TÈ‹«Ã}%­JüŠÆ‹ŸêIÙmS:_Óß Р*çóýÃì(š´ªŠúºWy÷ËÓü-1~!EŠß×¾6F‘íE†>5.NF¸áb¼¹]mþpùv¹ÿÐÆ}endstream
-endobj
-1114 0 obj <<
-/Type /Page
-/Contents 1115 0 R
-/Resources 1113 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1090 0 R
->> endobj
-1116 0 obj <<
-/D [1114 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-230 0 obj <<
-/D [1114 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1117 0 obj <<
-/D [1114 0 R /XYZ 85.0394 576.7004 null]
->> endobj
-234 0 obj <<
-/D [1114 0 R /XYZ 85.0394 576.7004 null]
->> endobj
-1118 0 obj <<
-/D [1114 0 R /XYZ 85.0394 544.8207 null]
->> endobj
-238 0 obj <<
-/D [1114 0 R /XYZ 85.0394 403.9445 null]
->> endobj
-1119 0 obj <<
-/D [1114 0 R /XYZ 85.0394 368.2811 null]
->> endobj
-1113 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1122 0 obj <<
-/Length 69
-/Filter /FlateDecode
->>
-stream
-xÚ3T0
-endobj
-1121 0 obj <<
-/Type /Page
-/Contents 1122 0 R
-/Resources 1120 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1090 0 R
->> endobj
-1123 0 obj <<
-/D [1121 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1120 0 obj <<
-/ProcSet [ /PDF ]
->> endobj
-1126 0 obj <<
-/Length 3113
-/Filter /FlateDecode
->>
-stream
-xÚÍË’ã¶ñ>_¡K*šªŒ7ÍiýØd}p{o¶«Â‘8#ÖJ¤,R;ž|}ºÑ
-Waƒš)m%ÂÌ ™æLZEBµL€ap~ƽ¯Wq/¿£ÍïòI:pH^”ïÛÕª}Žòâäv -©YÕ]O½`ùÐV sø·ëª¨ý’XP»ëÓXu¬,óݤÔ_´ó.>¿Eúï¾û8øoAè…žh!™å^¢óÿíîç_ùd±âû;Δwfò 8
-h\±›f¢š%žfÊÁ¾x燈v œ0“)¥ÌDsͤæEؾr¾:–‘‚9«üð „$™wÎå™ gc”!:à€D´‰œ 8À‚¢|D]QÜxè¡Ê)ºØdlµÌ9íâìr±ØV]w,
-e5¨.·’DBxEÊLØcA€š/OHô³ÚÝ’Æ„ñ
-‘šC^¢@È º[”ÔsŸÄÝÑ-*4Ý}
-{Häí¶–Y@ªùîj
-&1èI Û§ u~M ð§4)Ú1^¤ç§j¾Ïˆ!чTÿX½`Œ(Ä=''$Ô*N± ÕH>ÀŽB×­l2¹/G™fœ °PÛx ±éJ€5 
-2Æ­®¯¶Â+Þ0¸/…Ö=gb”Œ»Á!hgAó1S:Æ/ ‰4¶¿BgK —â—PaÙó~]yÅ8™ßH@¾‹RÞ@"jÕX@ç"X™JÖNgC÷ šY¹Êðl3ÎúóÞp%º¶·âyÀw‘gÃj­óœuíà:<ÓÎeÏe³ø*ëà•cZ€EŸÛbé=D<n]k¦¡¦x½[Ogc”™mæPÞq m
-h4:‰[q=`¼Âµ®•úë3ö¼pÃåÀ Ô^VØiÝÌW»E…ŠiÎ|3‘]8~½ÑXQÎDzLe=HF}Ü7Pƒˆq6F™‰î*ÓÂíNòÈlATq®ðãcµ| …ˆ×EãJQß²R×À…,®2È…Ñ&ð¼h×eÝœD2åYám±‡}u,Kgc”¹h&!e0GTž;â–q<3â™ÔvúÛî^€‡SFøÛõ[:ªÔfú¼¬Ã ?×álù1ŒÄƒI/4]q@óí?Ñ8’ñ†Æ1b§ú½\ÏrGþ›t<ù‹”:cPÒ5رdŒ/¬¯ºží÷ãˆW°>ëlŠMˆó‚ºŽá{°!H€K}E]%L°Z‹¨®=nì9u`o§®c”ÔõÊj^¯ËÕuý{È®Àëâ%…¨V»-ÔM_=¡g ãŸËÕ.$ið…Ç)ûÓs‚‘ÆÐ—®Ú”Û²'xØ
-”]—»Íùb¿؟¡©°¡k8<Óï2§r<¬3Ék
-©rŒjæµò‡•ñ
-'öuð8Z¿›· CHU™îá|éAæshQ‰P¼××ãÞÍcoY~®°ç¦åú¡~ÚÕý }À£/­ê-uÊüo<»ÓŽþ­w]D÷På¢à¢î;N-xœZ¼L¤v³¡»ÙÖ%¾4©h<,z¾¥™äut¼×
-Ÿ6ô’fŽ&û@d !{A¹I1ùO!&Ó
-²>Ÿ2˜ÄáÎG9ü)¿²ÁrÔ™½ã7àã~€ª;'è¼UðB4²nÃÑ2–'ÁN;ú3Þ*ü?ÚªŠª•YZêð€rõ\¾ÄE^í…
-¶ÍÍ^f"|-Ô—0zp™=Ÿ?¬†3©­ÒŠI®åÍØ^fSi Ó¿ŒËX9\+ÒGêý:ƒÑZ0)-Ø ºÈÙ"{Kšž‡ã$¾6Ï_Ôr i;ur-;<IߣJËý~ÌÑóendstream
-endobj
-1125 0 obj <<
-/Type /Page
-/Contents 1126 0 R
-/Resources 1124 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1133 0 R
-/Annots [ 1132 0 R ]
->> endobj
-1132 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [356.2946 363.7923 412.5133 376.6291]
-/Subtype /Link
-/A << /S /GoTo /D (address_match_lists) >>
->> endobj
-1127 0 obj <<
-/D [1125 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-242 0 obj <<
-/D [1125 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1128 0 obj <<
-/D [1125 0 R /XYZ 85.0394 576.7004 null]
->> endobj
-246 0 obj <<
-/D [1125 0 R /XYZ 85.0394 479.565 null]
->> endobj
-1129 0 obj <<
-/D [1125 0 R /XYZ 85.0394 441.8891 null]
->> endobj
-1130 0 obj <<
-/D [1125 0 R /XYZ 85.0394 424.9629 null]
->> endobj
-1131 0 obj <<
-/D [1125 0 R /XYZ 85.0394 413.0077 null]
->> endobj
-1124 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1137 0 obj <<
-/Length 4061
-/Filter /FlateDecode
->>
-stream
-xÚÍ[[sãÆ±~ׯ`žB¹ÌÙ¹_’ÊÃÆÑúl޽Nl¥òà¸|
-’PK2®V©üøtÏ
-­«o®¾½úpýü¢ÂM¿úŸ·¹¾ú>ÜÓ‘ÈßøSèqár€ê÷W﮾¿úðÕÕåO×¾¸ºÎ‹.˜Q+ùåâÇŸèäÖýç J„³jò?(aÎñÉòB*A”"õ,.~¸øk&8¸ë-1PJF4Wb2³šp£Õá׆WPxml*GŒQvç­3m‰f÷„ZÂùvK$l‰‘ÄY31@D .üŽ4»<±†(áÜvØ ˜Â°µe–ÌÁÙâþì%ŠïNï±]÷8Á7ï c;–qh¯ÀQoW(%vúþ/x5ƒ§Fo†au|hµYÞÔëq¡ˆÕJÅa jÜééõC] ÈAl¬<IÐ'„‹Ãš.LvÑ,›¾¾ 3îÛÐIãχõ%³Óvsÿúa>B}‰´'3&1œCƒ§÷TŸš‡23ýT-6uÚ7õ¢}¦2Êeè쟛yµX<‡ŸþMuׯ›y˜‹ÓîÍ%›vuhßÄñajóºëà58#:žÊú\­šÕýåLP=­:¼ªð¢¶í£ÒÀf­Âí®]ÖaÀ¼Š_B›ÓiµJ÷õºé>†ÿ Šþß¿… ·çÕº‚y¯ãOxl4£`vnðÊL7.[~N
-ȇŸ‹j^?´‹[OH൫õ¼]W«ÛvÚÍýÃ,î;rñ¶Ä”F²«eÒP0â¾ÕØ×Ù
-JÜ,Ð@ÔõŸA—[ÜKÃ<5¼Ve‡â„“w”[JœƒG´QÄIÍ^½£™âlHrG¹…]²€lò°c;jˆ¦:íè²z+nÁ?G
-·–ÍýCzï6k0äëÐS— Ì6ÿ¥B¸è°·þИ·°ÞÏ}øÑD‹üôÐÌ£p5éVÄChÐØ`ï^'ÿUM½ñãÆ}>Ã…4FÕ?ìYiˆ2ð8|µ•ŽgCŠûóc”i!Íð
-´1Œ?&‡`2`¸Õ£4}IóÀ³Éáâ9Íð\Ø•C°N-(’KØSLèaðK³C-d€ÏJŸoý‘Þ‰åsg‰’@¤¸Aû?L"eb
-ùÕ†‹Ƴñ=D•3Æ™L¢ù. wC³é"J S;¡ô0]*© ‰:¸†D4
-ŒhÄ:ÂHÌ Xa€‘šàùr‰âlH²”“09Í·o>*4RÑdÀ‡g®…T?Å}Lxà…þålkÎO¬YhX³Ñn¼æ£Â38¾QÞGÄO
-KeøQ½‘†Ê©>ßÒ3ÅK—€FÀ–È—l7¦yÁc›£·Ü ·—´¢ Ä–RŠé"$š|Ø%Cj·x²ÇÀ˜Ë ÚzáÀMg^Ê3ÅÙdI8ð…# {±eÁ3ˆ.ýÉ.|ò3rÍF¡µÛõÌhìNË1ÏC1‚¦46”N
-€®¥ ê[åY›Û„8þ
-/ÀÖ¨”;üai†iÌÙûY†·©\{BXî\Jå; è 0{G… þmaþôaªsAÄ<™„J­Ø.R7·§c”âèCüMÀƇÙÖW›ÝDq6$Y0»Bƒû˜‡(âd´4ŒCÎuZù+Eõ¯¡™9/qcGÃ%ŠèÃD$Üü³>.¥ç —…K£VI¸äCÚÉHŸ&qžBNõ¶`0#Úåài³JÙ ýw‚Ñ6ÎRÎIû¼
- %GäQê»j³(‰%X*+såÙF+#Ç–ámÑ
-Ô±41æ(¬œ~líÍs_w%L „ËüÌ·ˆfÐõ‚‰-_<±e}_ʼnçwƒˆzLjs•ë_¿>à ï_<Ãû&—ÂÂ4ÛÙ¦íô…ÈÁ±
-Ô1‡ž=ÌÏ\rEm¨H…'´ŒÇDеYuÍý*
-“@ÄŠçB”‡bW°ÖÌJ©”ÔCq]šù#!¦öŽ„`Üôo]¬ Û˳ÄKú%¾]˨ޖ9…Õ“]|Ìßlšnê.ÛµtlÔFUÝÕ‹T
-S÷£sÈÀÈX÷Œ–2w»(æ0 
-žèͶKê-‰?˜^À¡E×°NžÄô;,)ÒJ”¯0¬•;ªå ëÉ3½&„–˺/ÐñÐè›»ç“_A½Îì±ê%”ÔTÚêÏk]ß­ëËAt•Û…e›(Cµ|LÌœÜnè?cX/J•–±È
-jLŒ˜æxqºñ¿IýÅã=þ\%öúoõ꾈CþuèÃcUJ‡w7žæU¿ú£äí'ÛÒagÐ;ð-JZœòEð½™3
-endobj
-1136 0 obj <<
-/Type /Page
-/Contents 1137 0 R
-/Resources 1135 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1133 0 R
->> endobj
-1138 0 obj <<
-/D [1136 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-250 0 obj <<
-/D [1136 0 R /XYZ 56.6929 165.9801 null]
->> endobj
-1134 0 obj <<
-/D [1136 0 R /XYZ 56.6929 136.242 null]
->> endobj
-254 0 obj <<
-/D [1136 0 R /XYZ 56.6929 136.242 null]
->> endobj
-1139 0 obj <<
-/D [1136 0 R /XYZ 56.6929 106.2766 null]
->> endobj
-1135 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F21 690 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1142 0 obj <<
-/Length 3058
-/Filter /FlateDecode
->>
-stream
-xÚ­]sÛ6òÝ¿B{ˆÜX4A
-IC”ÔB£iNHß4Å:oŠò^·­YÒ¨«é¹4iÖEexñbáÉ/ꪳ´ê’
-"™:bm—wfmªŽö«q¿$´) No÷«‚NJ VÛ®è¶Û<ï2žnħ‹º› ð@ªÔéPø=“-r6©¹q¦õ@ƒúšžÝŠg®ë²¬ï‹êæïOyy¬48Tk},ë”Bõ´”Á0•=Z(ïÇP$ûLaW°H%‡¹z¬Çl‡#B«xÈÖéæâ-ëf hm:¼x{§XcC¿‹»ª)J‚Dêô5õ°¨Éa=¯¦C\{jÚg;®¦>Û}5mHI´>ïôT0Öo§/hPÕuøƒª~*“Ù3ªêaP•Ãz^U‡¸öTµÏv\U}¶9mÝæ«²ïNشآ–ë Ç÷ùÃÎ GBÄ¥„‹=·0÷åÈ †¥r?ì<¥qAâÑÀæ ÆûXOkÜc=«ñƒ\wÄvTã¶>|QÞîG6g·ÜÚeGî"åÞÉÜÝêÐÙD‘
-ÒDi—;åØÙè Qú?ŸMùˆË¨gÓÃ:p6ëù³9ĵw6ûlÇϦϖ½¡2—_r¦Z”uëÖ¸È2or(A(ïö³0Ž1‘ä}ç»Ì*%§>ØÔ'#ã&'A
-cÝo_½À¨†¾-c®Ö`ŠlQîÊ/)ݦ`„Úµ`=ˆñai$RÕ•!Р,b÷‚‰²^äåªn;^¨"f.3±C¨L×â }9…/¹½©Ci’€d?×;$T7Tsnï¸Ê=;`Í„x/8´jÆÁœç®ë­“©ð+ÍX©·4í¢)6»º÷QM‚neÞwOÈ<e(ª­tŒæåËè˜ÉiG.vq9žÂén[®ó¥ÙÃs±Ä‘ˆaªhiÔ>T]¾èŠ­ájŽçêµLkE½Å9¡®‹¶„›,›Òi[T‹QÕ´f±mŠŽ‹sÛ–~Š:a£îÕíÊ×íwyY,s*"Õ lG›¯·½Ð‘ß}ì‘Èé¦F®¼Ûº¯­' içËXšÛ27ÓK0bÐc LGíØ-6\= 7<È m4hE%ÇÖ‡ŠnEmÉö†7Ú7¦e½ØâYYÓÞ³#
- ÿ\ToJ€ÇM{»s@[
-{‚´´Œ¶ñû¶ðQi­òÎD¡Gè(HŠì!s·¬É­=_|ÝVpê4ÌÇÜÆêŒý¯W†9›±¡éd¯ÇyHÐkÉ
-SvרßáC¸óFÈÒlLµl îÐïWÆŠj£ÏJPÑdn¬DŽ@Û #ÈÅöÚxÌ&aäŠ $0¢Ý]+M}
-Ö©RÑP·£ü
-ý4ðû}kšQmè@×/§5~?•„A”êì9zɽE¾Xݦ2Ð:FDKr\Ð,…8˾Œ*Äöª½Û~L/VHÓøËèÑÑ+h ’DèaÆÛnlI4rk'­ÄaN¡H£'¢6ƒ zŸ7KŽ–ì
-oæå)Ï$GŠ—‹ƒ(t=‡ì}»ªË1iUŒ}^ÌŶ¤Á ˆRù¤ÂHËþï‹uQæ $~!„“r
-cú+Sèµ¢T ö|É•íмÜS%£—Õ0äf(ÞÝ#°¦''\ŒF‘^YºªDÀõÉuŽYÞ¼à½];îZ†Kæ !Œ¾;KžjLP£ùæ UËv;B’`«,Ø$ëCpÑ϶¸©0ŸBÑä |K)¦ÃÔzWkls^ZW ÚåBKŸžëÕÙOCNÜsYZ5sà]
-*f…‚böK‘ŠÞl1+†&3¢
-ªüÕ ´Åd“ú{ÀkÎNÕ‚[6‡DOçȆÀÜrö]Û›í.*ã yçúœ5Û?$¢~nRŠ}øBišÑËx¼Ó™së¢ÚãH
-„Á²÷íÅv0rú­qVŒ¢]»•w`Ì“£ dŽ@G:F_ºgP­ò»¢öMØ
-`9˜4UQðBÔ@áLÆîÙ6´Šo"4Gå’ P½'i¯
-í*_½û—@6¾M(ñ´MœZ ø+çL‰’dm_Û 'WoâÊæ6üƒ{æô cÁ‘7';ë°+zžá„µáÉÂôà§œ=Ã,ˆ„VÃ"ëô”èþe¹^¾»äûÛÿ‡:NÖ<þpyñ/Ù£vô*þw‰=ù'¾ùHàß]F¾½„>rüåÕì>©ºë4ÿˆ#C誢,qB¡¶¤Ü—Üÿýæ±èÿbZbNendstream
-endobj
-1141 0 obj <<
-/Type /Page
-/Contents 1142 0 R
-/Resources 1140 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1133 0 R
->> endobj
-1143 0 obj <<
-/D [1141 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-258 0 obj <<
-/D [1141 0 R /XYZ 85.0394 731.767 null]
->> endobj
-1144 0 obj <<
-/D [1141 0 R /XYZ 85.0394 703.7216 null]
->> endobj
-262 0 obj <<
-/D [1141 0 R /XYZ 85.0394 229.6467 null]
->> endobj
-1145 0 obj <<
-/D [1141 0 R /XYZ 85.0394 201.8883 null]
->> endobj
-266 0 obj <<
-/D [1141 0 R /XYZ 85.0394 144.1965 null]
->> endobj
-1146 0 obj <<
-/D [1141 0 R /XYZ 85.0394 118.9605 null]
->> endobj
-1140 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F21 690 0 R /F23 714 0 R /F14 717 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1150 0 obj <<
-/Length 2262
-/Filter /FlateDecode
->>
-stream
-xÚ½koÜ6ò»…€~¸ÝÔ+“"õ`ûÉqlŸ‹KÚs¶8Ú'k¯P­´•´qÝ_3R¢lÙIϹ€ÅÇp8ï— þx'a¢"¤J†1ãqPìŽXp {—GܬÐʇz½>:¹i B•DI°þàáÊB–e<Xo~Z$a.[œ}ÿîâêòÇëÓe*ë«ïß-WQÌWÿ8§ÑåõéÛ·§×ËÏb¾8ûûéëókÚJ,Ž×WïÞЊ¢ÏH¯Ï/ίÏß/Ywt¾xñùåL #¿ýô 6ÀöwG,*‹ƒ;˜°+»#‹0–B¸•êèýÑ?„Þ®9:+?ÎÂH$ÑŒ
-ãab¢ Fd‘L\„EEplB#®Y"64Í ãäM×Ñ|Œ]8˧wtßÂ8‘Wam›´°MmUs;žã.LLˆœq·™€yLcÛqÕ…WN(jùÑÆ¨$F-MҚ͸.tÛØùlL¢PxÑV_iV<28´sÍßíÃÜŒ~ݵƒã»ƒwÌÇ4Óuíˆj·[{¶Ÿâ°ê øÌ…Ïĸ}«?–Í¡{ì¼3E™çï·ºª|D·qšØëÖîY*­Ü7 AÉèƒnGÏú”–á;¡ eA…J¿ša&
-È#%€h‘!-Áo Å¥ÈæG¡˜…“«Þ4Àbàqé¯|̆KhUG;‡n Ò@
-ºÝ•unÞK¦=·½ÊôLÚ_»rÂ!ˆÙTáoï{|"Ñ›oúg–† R—жIÆ?Ç—„_â «‰/ýo§¼Ì Øî¹óQ|p'8³e Tª ã©lþ!ò‰Èx·€ö9å”2ò¢šñNÎ2èHS›7ô¼i"i¢L¼„Qç;Ó’ÁÊÕ´”o6¤ƒÎ‚îò¾Ø…ávN‹aJ*[‹¬(:5ï=õvÕœ‘oªM¿ÕíÐOu#p
-IZòÀ—ÇË$ŒºŒy’Ž}>Jwâ)¥1(SR™|Biʉ„îÚ6U÷š+*ëÝðÖ;Ș¶P&誛> ÞèA¾Vè7÷cqO×údrŰqÅT[oŠâ iQ‰pÄú²*ûû%ç|ñŒ=ñ¼LàÿGª8„*ŸW¡R
-endobj
-1149 0 obj <<
-/Type /Page
-/Contents 1150 0 R
-/Resources 1148 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1133 0 R
->> endobj
-1147 0 obj <<
-/Type /XObject
-/Subtype /Form
-/FormType 1
-/PTEX.FileName (/usr/local/share/db2latex/xsl/figures/warning.pdf)
-/PTEX.PageNumber 1
-/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000]
-/BBox [0.00000000 0.00000000 31.00000000 31.00000000]
-/Resources <<
-/ProcSet [ /PDF ]
->>
-/Length 557
-/Filter [/FlateDecode]
->>
-stream
-xÚm”In1 EOPw¨u€$ÅIg0²Êľÿ6¤¤êV5 oʯÅésÀóή¯ƒÖ×O²Î Ž¢‘ÿ¨#h8Çùø:„5?ùÆ [ÄIÚL’~”F Ø PÈùYÌÀ¹dˆÐzZ8å±Ýƒ²ÙËò‘–Œ€f¾Å(ÌÀE#@x˜oL Û¹[ƒ±ñðù
-6\>RgÈbÏWÖ¹j[†›
-WŒÏ¢®{6;»²þFÃÇñ÷ø]š¨)Õ/Ô¬Mu;pk;Ì©Ëdh<åE–ñ¬AÏw³ð¬±±Nê¦ó¡Ä½t•‹ùD„™Â²]°Ä(‡;„ ·åްЭr²ÂÙÄLûˆ T¥Í¡èª‹ŠŽt’¹w_ =Î]ˆ‹=¦uSä÷—ä"ï±yl±‡µÃ-ËkHsŠöreOÚ³êvg›<7ºt,‡Ýe—;ãÒèЭ/I…B÷&ê(ýê³ö󻉨YÙ¹Ç,çkRÔšÚ'^ m" ^˜h±ÎW9AVªy­Â©/fýÆ"•œãûFy-Sng \Çdª¼˜©Æ¥†Í}B©•µŒÎ$âw1.¶&Øíþ²C¶O–ÃVç X×9g¹E{îÇ< •ãóP)!ÍZÜÅŸLÞª~ÑÔ'¯UâXLµüc“ÅXsЖõÚ¯½˜Ó’~òBL–§èªÆ¹O¦ºNZ_[Èü.øšŠû*]3QôçÇñ!Ö-žendstream
-endobj
-1151 0 obj <<
-/D [1149 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-270 0 obj <<
-/D [1149 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1152 0 obj <<
-/D [1149 0 R /XYZ 56.6929 749.9737 null]
->> endobj
-274 0 obj <<
-/D [1149 0 R /XYZ 56.6929 246.2071 null]
->> endobj
-1153 0 obj <<
-/D [1149 0 R /XYZ 56.6929 214.3631 null]
->> endobj
-1154 0 obj <<
-/D [1149 0 R /XYZ 56.6929 155.5938 null]
->> endobj
-1155 0 obj <<
-/D [1149 0 R /XYZ 56.6929 143.6386 null]
->> endobj
-1148 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F62 1035 0 R >>
-/XObject << /Im3 1147 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1158 0 obj <<
-/Length 2334
-/Filter /FlateDecode
->>
-stream
-xÚÍZÝsÛ6÷_¡·“;%Š/â£}r'çNâö÷)Ídh‰–x¡HŸHEuïú¿ß P”MYv­Îdü@`,»‹ÝýAf#
-ldRB…•#m%I)KG“ÅÍ`ìÍ s’8)éÏúñêè»×B,±Š«ÑÕM—!Ô6ºš~Ÿþóä—«³Ëã„§t¬Èq’*:þñüâR,~N¾x}þæ×Ë“c-ÇWç?_ ùòìõÙåÙÅéÙqÂLÊ`=v,x}þö [o.OÞ½;¹<þxõÓÑÙUw–þyî ÿ9ú𑎦p쟎(Ö¤£5t(aÖòÑâH¦‚¤RˆH)Þý«cØõK‡ô'¹ œ[1JRJ$c»wÅ(ìš°Ò:9·7MK‰H…3‰”„Zº1 g=“0Έæ6éÔ%¸ð6)ëÙ¬¨fN70_ôçSC˜Ôn7±¹Í'Åo”ò¼­
-=^ϳ[í<w 3nòå—|‰D`Ü| MIÇY5K`”™q¾µÎÏE‹ü˜›&›á&fœ…ù Èg%6M9
-”W-¹oÓ”jb4e£¾.^¦_a9I™Ò£$N8¤É8Ì4”ï3™H¡Á,šl½õì5ؤ®œ¹f+Ta\Ñç/Á”’aA•-òé
-µ™5m¾|‚çLsç8•»ƒB§hOÜÃS"'ß)‹¦Å7õIE5)WMᬇ]oÚÕu`YNM™}¼ÝÔU޶ï6sI™­š¼Ùm¿¾b¾â{¯4‡–ݪ•ÑÄR†¡º¾mA¥O»ù­¿kuéÔfÍxVÖ×YéÚv¤¾‰YëÍå&Ä}ü ŒÝÖÅö¶Áñi~“­Ê¶2›wg¨ºç¡Ù´Y›/ Z?f¶ž>¾f³IC¤´ûµRÀÈR ×îøpEŠI“LæYUåå“® xz ÜPå(0Õb±ªŠI0”'Ev¾ç"³ûÎòÙd’7~P»Áð)¡œ‹=ñ?éæmçßî\˜µ§¯C™5Êðt–qÅn³
-E¤•û¬*)Ô²T…êÃߢýe^ºòe›!¡=¼xîÎtÏu1ÃÏ-VNIw{v5ÅcÊßœêeŠú{uÏG³/“)jå©Ä"d¹‚œ0M>çwÏKgNkÍØ¯Çþ«‹÷ïÏN±í>¢Ðž¨‡Õ(;¨F07
-M
-ŠÉ–ì6uÒÍÝ®Á:ð°è¼îÞDÙ¡dß.ØrÿKÐþí« ,Ù>•½Ü¡SnD_ÖERHp*F\ÚÞmxÙ Û\ÚçàÜÃÌÅÜ”§ ‘ jµ'â\f”å[ï=ô¯†à
-endobj
-1157 0 obj <<
-/Type /Page
-/Contents 1158 0 R
-/Resources 1156 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1133 0 R
->> endobj
-1159 0 obj <<
-/D [1157 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-278 0 obj <<
-/D [1157 0 R /XYZ 85.0394 537.224 null]
->> endobj
-1160 0 obj <<
-/D [1157 0 R /XYZ 85.0394 512.8844 null]
->> endobj
-282 0 obj <<
-/D [1157 0 R /XYZ 85.0394 444.1158 null]
->> endobj
-1161 0 obj <<
-/D [1157 0 R /XYZ 85.0394 414.002 null]
->> endobj
-1162 0 obj <<
-/D [1157 0 R /XYZ 85.0394 336.6639 null]
->> endobj
-1163 0 obj <<
-/D [1157 0 R /XYZ 85.0394 324.7088 null]
->> endobj
-286 0 obj <<
-/D [1157 0 R /XYZ 85.0394 175.0326 null]
->> endobj
-1164 0 obj <<
-/D [1157 0 R /XYZ 85.0394 144.8676 null]
->> endobj
-1156 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1167 0 obj <<
-/Length 4254
-/Filter /FlateDecode
->>
-stream
-xÚ­[Ýsã¶÷_¡·ê:C|ÀÝÓõ¾êLsIv’<ÐmqN"]‘ŠãÎôï.
-?Çß®>¾¥K“~z÷þݧwß¼{ñÛõ÷ï®ã^Æûe¹Àüçâ—ßòÙ
-¶ýýEž kÔì>òŒYËgÛ ©D¦¤¡esñùâŸqÂQ¯ûi’,ϸ(x‚’¥¨lV.ÿ÷
-÷ðÝ{ÎfŒeV)ŽCs˜ÕdZæ&rYãò<Ÿ/ۦߵ›Ž8ñ¹/ûj[5=}¾­~ÍsÞÔ}Ý6ÔR6+zù¹+ï*¿–QK‰<Ë Ø.u½®"Aà ÛWZÃ`I8žM+€ï4®ˆ…¯ªå¦Ü½`f^õBû½`C»¡!ËuÙ4ÕÆw÷-µÞTôÜwÕŠzn©¥{ì`j+WÛº©»~Wöí®£þ0Ãt!œš¶9[y’§g‹È} ¼½¯`âa¡çí->û‘khÊmEM]µû½Ú¡tf¸Gþu¾o²(þlØv{VPm ßpka±ãƒ9ÈB.=ƒwÍj™8.2&´ñƒö}½©ûGšBt7~½e»Ý‚x¢ ß±Ep› ÉÌ”/Q˜ˆô~WW¿WÔÒ´ÍâíÇÏãîn¿é½˜Þ¶^&ýOˆ‹ð6æ".2ÉY&½Š¼nŒ`*3@°ßcÝT}‚ ^ ãc±çÁ£´á‡™×5–ôyýæ'úîÚå—ª§÷ ˆWÕÔÍ)}3É4t÷Õ²F „ÃL(‘,À:¨@òý¡ñÒfynĬà*“ÆÏ1_vhLÚx-⌋ñ”Î2M¥JÁ![͆•‘Âûv—b*œLnƒ)p*ò|hø­aâ$ ¤»­At¿ âŒgX •ÎXQè) ÊÕjw‚‚ù]\ÂÆ…˜?¬ëåš”GB¿Êåò,Kä•1Μq’濯~ú]RK»‹-½9œ2u``$W'´ÌãZžd,çè ‡í1phBʯflœq1žò˜± ™aàã°§+2›ËÀY°»nÈÄ‹K ‘ƒ³eàÍö×ÄT&3
-ìúhÔ¯¹ÊKPà]Ý}wFvz¼¯è¹÷†ÍcdGOoÎÊÌêÍjI6|åÏs8«W$œiQA`Á5ÕÝ‹ós
-§rnI’§ƒ–r¹¬î{òvÊ)ö–Í£o¸¥§# _Èþ¥£qD¤›g ©B* À¨–Ï[ê'ƒF¿¢UF“’z‡½z=ñ Ã2  ‚qôgð’#þH›i”>)­L˜ŒÂT‡ãÿZa .Æ3Ë*“ Œ€5ÃÂOɪÌrV¨3²ªAgý—/S.ʳ‘† Ž+²[bÞc»Ѳ6H4µÍæ‘ÞÅǬµ:Bó³
-%#ãSÓ€nZÁ‚ðÀHÝA Â#ÀJ•>·ÎDÃ˶ü£Þî·¿,÷;ÄXŒ1a A2—ÅÉà¹X¢§ó°“EGîóòpŒUb:A#ÂN–;ØNØÊ8úú•s™`ø+@ü`Ɉª“FTeVëb6åftsƒ?kZOÚM5P40*! _F³ÓÈ™å@˜ÂCUøzf\Œ§L@ ïŒóaå' çÂì ´™ ¨
-Z™£›f'‹7`e´\h}7hD]˜§Èå¾
-Ù”Çú–
-šB„¾A¨‹"~³­Œúzôf\Œ§L¡ožÒ²aegxWi$bÀÅø]T—¹ñìi½ãJ+FgÏ-;£F!pÿf<ˆ3žá sìiÅÐy¦ €‚oGd˜ñ‘¢#vcLä)ŀЫˆÐsdÜ
-LDÈÜ>é¦Ázh&˜»]»¿O;|«clý4øh=ÿØöž;Îi:.m}Ëý¦ìÁ(o;bâýÏûæÇÏÔë)Âè
-Ü$:þÜnJ
-c˜I€Û«˜¯æQ˜p1žñ˜Eü†oqÔI0á‚ß`¨œÍfþ®${”} Ííi™ÀìÅôÍ7Ûoœñ̆ÑlÛ¼°ÏØ1¡d ˜ 9å ¸É${B €dEû 7f<³aøÜhðˆ“ ŸR ¸OÅLG[æÄ™MdAKÏêj¹wN>FU'ø¢p7ð ^ô²À_•ñ¢ô¹ªNÕ~en2‡†¤¾ÝÝŒ^>¥ªÞãñÄ‘(ÚÆQ¸Õ_>U[òšÏ?RK‹ùÛšj}3¡:+Y:ûÛQ| TfJLh?ª3ÇQgH†#ÉášëæhUÀíŠqö\ŽÅñçÖ?š×ùuŠß‰;"
-G%fi±ëåK6J36¿jhHï2Ø·,»ê’ðsœ³Üt-{X»RŒ‘§À“²+”yÖ- !£/_ÃÀM„ØÇ¢šærŠ6F籓œßìý˪­\<‡bç›Ö¥+ÿÃ[™yŽaÏ$F*P‘’4
-ð^:ˆó}×í¤K⥛Êé&6iÝjÁëv¿YQ#Z<zKyt]0~Ñ:©B…Hß""«‡ÚhUO|ûÐÐKÜ`};¡ /<uk¢1^ˆÍ °ü@e"ÝÆÛ.¾‚¶cÖK
-—ØèÒÒη=¬ýͬÁ4åÁ>cùßQÊ-ÆF­êÎS<^e-ñƒ`èe$ \/ 'ƪ)ÔÂ1‹¤Šg¤v
-Lò$UÄ„Qþa
-endobj
-1166 0 obj <<
-/Type /Page
-/Contents 1167 0 R
-/Resources 1165 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1133 0 R
-/Annots [ 1169 0 R 1170 0 R ]
->> endobj
-1169 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [55.6967 404.4849 256.3816 416.5446]
-/Subtype /Link
-/A << /S /GoTo /D (rndc) >>
->> endobj
-1170 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [268.5158 404.4849 332.4306 416.5446]
-/Subtype /Link
-/A << /S /GoTo /D (admin_tools) >>
->> endobj
-1168 0 obj <<
-/D [1166 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-290 0 obj <<
-/D [1166 0 R /XYZ 56.6929 724.3071 null]
->> endobj
-1016 0 obj <<
-/D [1166 0 R /XYZ 56.6929 689.0661 null]
->> endobj
-294 0 obj <<
-/D [1166 0 R /XYZ 56.6929 117.0915 null]
->> endobj
-1171 0 obj <<
-/D [1166 0 R /XYZ 56.6929 87.6248 null]
->> endobj
-1165 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F21 690 0 R /F23 714 0 R /F48 925 0 R /F14 717 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1175 0 obj <<
-/Length 2374
-/Filter /FlateDecode
->>
-stream
-xÚµËrã6òî¯ÐQ®
-<,Ÿ&ÛëìÆÙxœÓdjŠ&a‹>‘²W»É¿§)R¤,ﺶt`h4ºýB‹-(üØBKBE.TI™\¤å]<ÁÚõó8A‡ ±¾»?ûöJ¨ELâˆG‹ûÇ-M¨ÖlqŸ}^~üÛ‡Þ_Þ\ÒeDÎÑåw7·ßãLŒŸ?Ý^Ý\ÿr÷á\…Ëû›ŸnqúîòêòîòöãåyÀ´d°Ÿ{
-G6\Ýüã¡ë»?þøáîüËýg—÷½,CyVßÏ>¡‹ ÄþáŒk¹x%,Žù¢< ¥ 2¢›)Î>ýܬº­sú“B©¹šQ g ÆH,%iPÆ$\8 Z¡#P
-Îq³æ_I¹.Ì70âùrD÷ú±Dà’Š Wzg±óëMþ ˆ8øÍìÎÙ²éxIüÞÄÛ”‹Žo´“>y(¼÷ÕU±CèÁQU
-gRLöõ„ÝáÉC)’g~.™‘ R‹ë„zÎÍË\D€úQQy($-ËåßÍ®Á2x{Œ{ Çöˆ‘ÃU?–3ü‚¼Š:åN)"B®Ni<éDã RG•ð`ð qgÄ
-·Önꢙ+ƒ4x¿d»qÚ ÁH!>Èq;æÐ4$“j*A4„”SÝáà 3®4¡ûF‡– ZmH~êÐÖ).&ÔöaÒ²PnŸA|UÒ%,Ÿ=“ö ~AÀ¡ –8åÇ¢‚<´?ØèHœÃ3(Š\ˆt¾åÆI¬µž…=Å`HÒ)kÌÔa UGæjñl΋¼›¢ßX“fàM WËߪú¥B0ið‹
-´k®„á‘«ÝNŽï‹Œ+Y]&¹ßïëE€¶UþûÖ¸ÂF¦ª6ÜaÉÍ£ñŒ±¥sM¾¼iq]€‡Žžum¬ÒÁããèóš£Â%
-I»²È²3^J e|îédãFˆ4éC–@ cÓ=› :ävÆŸŠ³õ0jÁ¾ü©œX0áÞÜ©NENýX,ŒB\–!/Ç/“6]ùà¢G6“cK‘#Ëðr¬h½Þàvü2 <;êÒ¿’ô¡À°¾Jž ®=Sá\/ À^í*I;Ö€c±§ìEÕª·²Xí«ønìË¡™‹QÒ/Ÿtk[(+ѹõþ½pèܸ(NH™-!ùû}Û †g\;„Æjpðq׆ÊG²þ%j„=VÝöƒO„ñVCp1ת€G£ëV48×m0PºäíîÛd 
-›ú
-ÄíÔ®
-UÕòî*óû¶ëum›"Ó·\‡àV”omU&iPfrF"xLiNU¬¦$%Q²¯%x¡°RRkqŠ”> Åy8C,²¸ýÃéÍ|q%&ÿ[bBÏrY3êËRï'ä€*”ô$ãGéu‘Ð?ÜÉ6èJÈ B´Š†C°µqSˆð ¬`³ta£Y¹f}£Â-x3B<á»Ó×k(Ò0ZÀ´Oîbi›Då¶D¤j[>¸
-ÉÔ`Yû®Hì¼Ê3`ß¶nÀî y"3ÊŽ¡>f‚Zh éŒ¶#Jtµ¡íAn>µ"ÈcQŸ¡°wq²‹H³p•Ë{CVG0Rœ†,a[‚1Óûƒ1‹º
-êUÛž
-û1ú†Á`ð ¶¿ïài')"=æ…G_'6·[È‘8ÚŒó‡CÑ@\hp´'ع­…ÿÀ϶*ò2wáqB_æò¿§ßäÿ6Ýpg0+œ?µÙ5 Ï!üÕ7¨wsá¡ÛÕff³™ãëN¾¢ØËq1äƒÍ bl-ÖîöŠJm:MŠ‘’àÔz¬¶—dSõÖÐ^ÃNÓMÙ³}´É’Wõh[f¶žçÊ·+P—#Ô\žEj||ÜHÐ5¸MØ´
-endobj
-1174 0 obj <<
-/Type /Page
-/Contents 1175 0 R
-/Resources 1173 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1184 0 R
-/Annots [ 1180 0 R 1181 0 R 1182 0 R ]
->> endobj
-1180 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [406.6264 524.1437 456.8481 536.2033]
-/Subtype /Link
-/A << /S /GoTo /D (tsig) >>
->> endobj
-1181 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [140.5805 512.856 196.7992 524.2481]
-/Subtype /Link
-/A << /S /GoTo /D (controls_statement_definition_and_usage) >>
->> endobj
-1182 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [103.6195 470.0794 159.8382 482.1391]
-/Subtype /Link
-/A << /S /GoTo /D (controls_statement_definition_and_usage) >>
->> endobj
-1176 0 obj <<
-/D [1174 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-298 0 obj <<
-/D [1174 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1177 0 obj <<
-/D [1174 0 R /XYZ 85.0394 749.3189 null]
->> endobj
-302 0 obj <<
-/D [1174 0 R /XYZ 85.0394 679.8163 null]
->> endobj
-1178 0 obj <<
-/D [1174 0 R /XYZ 85.0394 652.1211 null]
->> endobj
-306 0 obj <<
-/D [1174 0 R /XYZ 85.0394 573.4726 null]
->> endobj
-1179 0 obj <<
-/D [1174 0 R /XYZ 85.0394 542.9681 null]
->> endobj
-310 0 obj <<
-/D [1174 0 R /XYZ 85.0394 335.1831 null]
->> endobj
-1183 0 obj <<
-/D [1174 0 R /XYZ 85.0394 307.4879 null]
->> endobj
-1173 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1187 0 obj <<
-/Length 3489
-/Filter /FlateDecode
->>
-stream
-xÚ­Z_“ã¶ ßO±“'ïÌYÿJê=]’½tÓæ’^6Óé$™ŒlË»êYÒÖ’ooÛéw/@€”ä¥ïÜöÆ"A
-@ø²¸Lá'.Ml!‹Ë¬Ð‰I…¹\7éåŒ}{!xÎÒOZNg}u{ñåk•]Ia¥½¼ÝNxåIšçâòvóËÂ&2¹éâëÞ¼¾ùöç·¯®2½¸½ùáÍÕRštñúæÏ×Ôúöí«ï¿õöj)r#_ÿñÕ·×oiÈ2¯nÞ|C”‚'˜¾½~}ýöúÍ××W¿Ý~wq}t™ê+R…Šüãâ—ßÒË ¨ýÝEš¨"7—ÐIQò²¹ÐF%F+å)»‹Ÿ.þNFÝ«Qû‰4‘Êʈ¥¸")Œ‘3 š"±Jª`A‘‚UÒ4]캻»º½#-Ê¡jªv î7Õ¯i*Ûz¨»–(e»¡ÆÏ}yW¡-`E5Ù²ô†“ãò°Ôí½Ÿ$&“dš¤*30çx ž3S9hYž×Â)•-Ö]‹ÒÝöW"_T=RóEIƒõ¦¢Öûr_WÃuº-Í
-J;âê×SgÛí©1ÜW4·-fÕWû÷Õý'“‹›¡h§ÀÖ*‹½¾/Û¶ÚEÔ[j‘%&ËÕå2l¼ðp¿/{XR*°wßwëôî±/Ýax8 4ÖTÃ}·é_`O£àMÉ#A#|…¶ ¨}Ò×h
-ìí ·ã)õ•
-09¤ …@Ã&tž™‰è¯øìÜáÀV¸ÚÕ½ .v`+ð…Ý­½od”O¸/yUÌfÆãZî{çÁ&ÍH3a¼fÂ.rÔLÉE=ÐÈ£ãsi@fÑwNŽ %Ï$z/¦í3r[*U$µÁ~™%ÃÁø
-›0©j‡òµ«½ìöüJÝÒ“ó¨Šl*Œ†M…ö]Çot³7u8\‘}öQŽƒ&ïYR ð±ÔD bR·ÞE•_¥Ô‘P!¬ •ûýZÆvÔËES#êa’JÎ4ýCµ®Q{Î0Gn´™N¬Á¸ª
-¨}ùÔ ‚¡Ë«Ä{Ä"8Éš
-Žú†šbƒ#ω³
-‡H¿nêˆ$'ÐØÎD¢âœP±ŸN°7÷8h+~©\¯«‡ÁA2_=-0îPMMFNÀ‘ºÂÆ<)„)øDÔí¶‹Åš<ÉEbMjÄ ro­³$SFÌ]ÃÁ?%²Ñß°ã-<ƒ'c§Œ!7a’\ûœ†•Á&v’Ó¤(” !²j+õ¯<Ô ¯
-Ð]’Fâ$F˜ü]¡PÐ^"…<­˜Æ1¤vDtþ ýÙƒ «dê6q(/@¡‹€Îy y˜
-’˜ÈT&ya—~&[a‹Ë7há¶Àtú,[¼vQÈÕïc€©ÀF*í4Ö÷]G§Nòq’‹wUõàסµyB·ÛPc¢’·A*l¨Y˜áöôøè4À(Áý|¾ ¦H²,@QÜXñM—’ùâïùakUm»P®B¿fº+´àIþ«"`§m–†+ úçò@P™÷AÏ<ìK¬@ºÈJІ,²ŽŒ­I‰ ösf (Ôœ™Ïð.Ø~~^q¡4æçš 8…ÒâH¡ô´BPNÈ3-7×̤\œ{Îê!‹b§Ÿv¨
-0sÈèi.AëÆò9¤}kÂé e5ð¬=Lò×å’oŸG\d¹Ø-ÆRˆoÍÒĤG †o¹=
-ˆÒ†–/º°µáúØpˆD ;&9^UÌÅúHáÈÕ‡uUmú£ëvS¯Y!˜„–Á{Y™-Þt4Ãg
-
-̉ˆµ·üƹ|Aƒ*ŒEN ( #Ëì§Ñ0Ai‡(ö*›•Ã~èÐx!”J´qН|½…„°Ð†X
-íISÓkè K¿ q:Ö©J”ÍåÜF‘#%ón·#w‘|×+±vXïëU ¯º÷üWÖÒ•ðh«Gj€¢‚ØJ8ñw‡Ã`aØ©äôs
-vk^)úåDa%“…KåãVYH13ø ŠmG+4ÝtÝM9”\k
-ü“Ål7·5Ú'}Á¯"´ú‚HcÀÀž¢í¶dÚ¼Œ~?Ú×í°¤jç=U}ô#Í›ª s—QqÏùw2Eš<\{ðõl$a@Z)ĉ+&9¹b’ók$0L’Óë#Ép2
-kî²Úc¯0¹¿C8_Pø;v! ¹(Éï3S|µŒ@x"BÉ_– IJ,Ç÷xc$†âÖ•Æ'Ëý н.ô' &
-endobj
-1186 0 obj <<
-/Type /Page
-/Contents 1187 0 R
-/Resources 1185 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1184 0 R
->> endobj
-1188 0 obj <<
-/D [1186 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-314 0 obj <<
-/D [1186 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1189 0 obj <<
-/D [1186 0 R /XYZ 56.6929 749.2381 null]
->> endobj
-318 0 obj <<
-/D [1186 0 R /XYZ 56.6929 540.3599 null]
->> endobj
-1190 0 obj <<
-/D [1186 0 R /XYZ 56.6929 517.4049 null]
->> endobj
-1185 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1193 0 obj <<
-/Length 3336
-/Filter /FlateDecode
->>
-stream
-xÚ¥ZYoãF~÷¯0ò22`1}‘lÎ<Mf=ÉÉd×ñ>%A@K”DD"’²â]ä¿oUW5/·í Ã`_ì®ó«ª¦ä¥€?yiãHèÌ\¦™‰b!ãËÕáB\naîë Ék–~Ñr¼ê«»‹/?êô2‹²D%—w›Ñ^6ÖÊË»õO‹ß¼ÿçÝÍíÕRÅb‘DWË8‹¯>}þdôøðÃ矾þ÷íû«Ô,î>ýð™†oo>ÞÜÞ|þpsµ”6–ð¾âžyáã§ïn¨õõíûï¿{õËÝ·7w=/c~¥ÐÈÈï?ý".×Àö·"Ò™/ÏБÌ2uy¸0±Žb£µÙ_üxñ¯~ÃѬ{5$¿XÛ(¶* Pé
-Êi€dLíó®\íhöÔ:1À ¯{(šGšª÷ë~¨-k>´Þ¸YÊÄF6K§bzIG*U†ùévyGîRWûGjy²Ä¢;×Ô Ûž .?ÇSψ8‘Ò©7°¹
-ÈùYÄþe€,ž-¯’Í©ZuÀöuFå[%Ÿ¿Úç@(µýX[î@ÏG¹­jrŒuD2ã D
-lô‚ÃÎé
-
-ˆY1Y^(14Qo¨Ï[(I©Ä+É91ìÊ –í¸Ê¹žùZjzrÉÆBl!þDIjfð¹>í94
-CDžU=yØv{òæÊ.NA=Žç-?é±á vË‘a_;Rº¾¦²®§€CÉœ
-‡ÍÛáz
-h Ì’kP—†Ã`ñH¯-xý˜è"À5o°œ)Æ)® ¨`¦¬;€½×ëÂU¯Š*1WCΈ#ƒ˜ðÇe_ßçhN6áèÍ´Ïã`”•,¶l&i0õ¹*Lý‡Ð­všˆ}µK&2O¥4q.!Ur —yÁt%σc ƒä ³A
-“ÂtQ9k‹Ž µ()¿ÖŽz¤1ðІ1zÏUÉ
-J8¼Ž½€Ò}™Dòî!ÝÚïo&)¡€û,dÚët%<úƒ¡êœIÞÔû}}F(³•ÓãXCøq‡=ô^öv@fdäsä†
-[A£ÍPáo4ÕzÅ
-ˆü‘1ƒ½¡¢Ö‘HŬ„´ãÑÀrЬDcT¼xO.‘MÇŽCšµ„Öþµ#\ÍüÝ‹µ„pvð®Îœ“Z–Ì÷uR`-¸%ð²(GÎc(b&,C½—{dëSw<u¨y)(xù ”þê¥=«rÃÕY>Ch^Q¿7Q5'¥\\ÏjDFÿ·‡›!xJáI(W¿ºs~eÄ™ÿ:^•†<l®ÝM‰a}±©ë/Þ…ÈPà:æ›ú¿“ ìü绀ÉÀÎCdi&ÇùvŒ®ÝQcd6º>M¹ÌžÌ65Ï4´zFF#yõH®<ÜÚq£G8¾vÂ14È'ÇKçt7©Ïx·œ‡ 'Ñ…Þ“ ë³ºGmÍds˜r|€]¥`ƒ]áÌ3©´""õ`´~@/W!ÐÒ‘”z~ï嶦²ÆšÂYÆ…sÑÚ뇽àa´«Yõx”š×z£‚ÛÝPôn2Mlýý£KŸ»¬x*† PJË¡þ¯º¥Ór@6²i_ î\bf$@±‹îF Pjð–ÑhüÏYan 9µtpÎñŒÛ˜žP l¹Üš«0îL_ ý êùãø¼x@ÔÙ$žÕ¡R9 TŠÿÂ7mŸ 0è\sX;u®(ÓNÁÀøB5ðG¾‚smY­ÂWÍ’æ%û«„ø»Ï”ÄØÒ‘\I¤^g±0„‚v!\‡-KeY_àvV°Ï¶nB÷ÆI¥I_úÆ$À˜ÂßOP4¹’S{¶4@¢:Å›]>ÍõÜM`Óì@ô^Ê—¿ð$ã¶³ö ÷=¢Œ†Œó#”k¨u°ˆ ÉAYÙ_)^¸?{K¥Ɉ¯®ûê©bѰ8¼D €¥Tc¨‚ž‡h:è—rXÙË;F uÏ#Þ—&Kž)yb"­ú»1âñ™šWô `}Ä2§e"òÇé±t÷Ž-O¤C«´Ã=Ë× hôÚ}É{©³UHoY¹mæûsþØÒ¨S4Œ9r ^ê²)í­f)µ¦Ü‹2ew Ú¼¥«!tT Tʽ¹y“ÐvšœDtßóM1\¯Ç¤axºÜÎêU$|7Z›¸K@méEP5
-¾_í9}OAÜvuó›óiGoÙ€¡s
-4rÿêçºCt²¦ûc:•õN¾Lt@”¯CUS¯¶Í†_:ºŲ̈÷%͘
-)×ÙœòþYOIÿwB)Îendstream
-endobj
-1192 0 obj <<
-/Type /Page
-/Contents 1193 0 R
-/Resources 1191 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1184 0 R
-/Annots [ 1195 0 R ]
->> endobj
-1195 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [173.6261 273.4719 242.2981 282.8815]
-/Subtype /Link
-/A << /S /GoTo /D (the_category_phrase) >>
->> endobj
-1194 0 obj <<
-/D [1192 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1191 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1199 0 obj <<
-/Length 2391
-/Filter /FlateDecode
->>
-stream
-xÚµ]sÛ6òÝ¿BÓ—H3B€ ^žÒÔιsIZŸûpÓv2´IœR¤Ž¤âª7ýïÝÅ.ø!ÓŽï27z °X,ö{œð“3‹8Ué,I#¡©g«ýE0ÛÂÚ» É8K´b}{{ñê*Lf©HcÏn7ZFÆÈÙíúçy,”X
-E*ƒh¶”R¤Z+·—Ð^ƒF“0_½¢÷uÞÚ†ÆmE_¦ˆ¤O„hìg N„——›
- †j@°* ^nl¹¦Ñ¡Î«ñ6âSjPc8æÓÓÉüæ]¾ÝYâf©ÂMu&ÚŸ¯=¯$yøPYå±(†*’‰HCeÆt åI‡ò´UÓxŽNí./·tm§6'’B&A<ÖXGf—3Ï×zu¥ÂG x©0&IÎíÎ2ÒÐmT "…=äÜï%¸`G³X¢«ä9ޝDjŒ™vû¥'¸Rt.=âMÊP„”Þ¡“wÇ털¡: ¥3f˜Äó]Öà ¥Z‚4»Ê3^>Ô iæÕÁÖèqiwYK;ò– ä¥ìõqe^;¶‡#ãßïléiø³l A°XB’yÑ 1í-¯‚¹T@Ø4D/ÀoY•X:òY(ƒùuëWê}V {8óñ‰cŒOüfôù%Tai¼‚vMjåXœ†õXf{»õ±œÐ8¤eLʘyÉ‡îøˆ±ÜÄ\Uÿæ'ë܉cWmUŸRʹ í„A,¢$Aõ¸¨#»_U@K¥Ð])9àŒhdMU6/¸•M€kÄ
- ~Q*šUF¡0©”,Áò8!¤·¡8BŽäªÚï]ÊÁI‘—î$ ^ÔæïLßcc׎7í8šàC§"cý<'*õÛYtpÚŠ5ÒÚ5³„®KŠM”PR%lÓRº<O JiÔ©©°ƒ¦W¡‹4¥[Ç6쇉w 3/í=A~ºþî%H—°Y“ ]<˜.¼µ¥­Y:—S‰ ´-"“&ÿû9sß´Yݲ£šùñÀêK¤Šä™úãàäM›cÍÀa½€]eI`î´’°³VJ’„t@×y³ÊÜÒìŽbÔüzCk§êHƒÒZ>Çi¾«ìÐÉØDJ.‘¾P³&èIìM;äÉ9£ ÿ¯8¾ÏÛÝT=ï‚û‘ˆ‚’¦LêSÂrûÜ€Š]äèÀ;CÀÑÝg
-Î,- °Æ‚íª¶~"ñùì
-ié“‹ql|,WÀ¸%ûú0
-- æAJ%G3„¯
-r -›¯<oð:<|—}îêô0†g-)×송ã
- /ºÝÙÑáÌØ»:kì#ýP$ÒHF¾òÁ¦ú‰™ï]Bp/Ø<
-õ¼©hÁÉ‚¸N‘¡öATúškÄè¯2lqÔV´ÔXƾ÷¹0|°‹ÀЄøžî¶-Yü‚ŽVžSç*Uù¢%Òs.™R¦UFKz4n“œs †˜pÞ0‘j3ŠvÈ Õ鿳9'ŽSPIHÀ&¡ímÓd[Ë<çå”s[¦ÌÀä¡JA%˜xŽÑ‡j¶â´ v²ý•‘†@‡àó:¡EêsÖðp¬6­Í0À58j¡d98—µ‰°N›ÏÖ¨*2žoP„‘PõÙígSEußÅ!¦ÓQìò¤O³¾ŸÄ¦äo<w]½¬ƒ+¤¿¯•§Œùz t5œaϹ¤¼ÁpQ…1¦T<·¿gûCa. Í²í‹†šìD˜¬èØ€Èäš|Ë!w#‚!¼Ê–ÉxÔŒ¦T(ø4—3GGdEÃøþ°xþ›µ>ÖE=€^tîÁãTj!ÂEŸ¸§ÿ×"UP½_pYëão˜œ;›?i?óðR»?}òªø4Z˜| œ²ÁöÊ!}3ÜŽào^O‰8uåç«ëÄ+߯§ÙØëzó}áÉbB¾IÏ]v‚ƒ3þ’
-O§‘«AV ¢¾¶ã„¡Ÿ³¼Èî
-h¸2êbõ¡0¸؆†kÛ¬êÜõªŒUmF„¡?ìÙ•9`<Àu[]ÚuâÓ«²ÍòRL)è}Õ‰0Ñmí³“Ï(ì4ëµ]ýhs\ôð5” Ü¡m#¼ý)4`A
-•R hôs n‰$HÎ^=ÿ·]žì¡VÇú h_
-™Ìd‰ÀÈ/ti$ùHsÍi&}ÉŒÂA/ÄKÔû64miKÜ „VÞÕp‚½Õd_T5¸7–#×Àù}ßåF1†]êÀÓW¼­*q¶=ÖìšÄËüÔ]ÂÚrªyºM¤I¸}üu6Cï€ÖÑôo¶Ï'éw<êF‰8 “§Ý 5Ò©v: Gˆâyn S—ZV»%äz ®œ¿w7 é©ÀÖ ù ‡œ³\óèYÓ8“ad#î_UG|9e©þæ2ºTsÊÖë׎¾¡±Û<nÙξΠÿWËjÈ)qø…
-endobj
-1198 0 obj <<
-/Type /Page
-/Contents 1199 0 R
-/Resources 1197 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1184 0 R
->> endobj
-1200 0 obj <<
-/D [1198 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-322 0 obj <<
-/D [1198 0 R /XYZ 56.6929 496.5566 null]
->> endobj
-1196 0 obj <<
-/D [1198 0 R /XYZ 56.6929 471.7746 null]
->> endobj
-1201 0 obj <<
-/D [1198 0 R /XYZ 56.6929 154.8032 null]
->> endobj
-1202 0 obj <<
-/D [1198 0 R /XYZ 56.6929 142.848 null]
->> endobj
-1197 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1205 0 obj <<
-/Length 3084
-/Filter /FlateDecode
->>
-stream
-xÚÍ]SãFò_áª{ˆ©Ä:Í·fߘ=R»°\ÕÝ%yÐZV­,9– K~ýuOl„¶jáaZ==_Ý=ý5f£þÙ(QQ,¬+#35š-âÑ-ô½?`fÒMºT?_üýT˜‘¬æzt}Ó™+‰â$a£ëì×ññ?Ž>]O/'\ÅcN”ŽÇ?ŸŸÆRs|q~zöþ_—G‡FޝÏ.Î }9=^Nϧ‡–(ãy˜á™§g¦½¿<úøñèòð÷ë_¦×›³tÏËbùãà×ßãQÇþå Ž„MÔè>âˆYËG‹©D¤¤-¦8¸:øçfÂN¯ÚÇ?³ˆq%F‘DR©äùei‰– c‘Uêñª& ÌdP&JG1€™pÖ‘ “"J„P#£l¤^(µ›­Wyó€Ü¢3
--—«C–Œ«»´ ¾¦eF@æÊ¼EV7ÔzZ÷ÇÚÕM=f½Þ­ù¨»ã×qAÈ$ jÀ@𖌕2Šm¬†+M¤!mŸUåoqÌo{׫´É«’؇˜Â¼LWu^Þ>bzÆÌÕØ¹‡Å½¿‹¹ˆìÞ+ódÊvÄó,æ@™Ä|ˆÅŽÅ™õœ[¹º*îÜjÅ'çW`+b´F­‘Õ?¡1ãz=›c·§5‘5sG¢‡RçwŽúŠªú²^ÖÔ¿tžb‚;€µ‚î‘ÜT«… ÂjÅúÙÍÓâf÷¦ÌŠÜ•M‚˜C_:›oD_¦‹ µ[á±ÁÞí‘{‡¡¯Ò·½Zqq>x³`ž„1íûõ&p=/%ÿߪ <kViYÃÈÀh/â/=œ×]ã5sùÝþ«µÝûwl¼´_©m2Àbmm”(-wY\­›oÄãÚ•Ù^îv÷ý¶ìeoÊÞDF‚É!§«Ù˜‘Ó-«&¿v¹×-ÿÎ/®ÏNÿ³c÷›jV{˜×ÙÕ÷¬›†GB١믊¬ÔÁ±z{9ȼO;þ±Ïä¾$Pénô­ø a˜1/Š
-l‡°1ºTBÜÏsôÙˆƒYH„¡7€ø²"„?j
-ÖgŒáÄ1×óœx>a,bÄ.ï7c&B¿g!$0uC˜Úß Ä᎓Ògº"ÊË pu“¹•X æJú8;2w“®‹0e&Ì{•¡Þ\YÏ"õ‹à~ÅÌŠpôr]}üaQK1›§eéöÙÒÎ¥zÝEý¶¶4Ž#Í“A[ˈ³ ¡¥kî«Õ—Á›èÈŠBÔëS•}ö²³™ïØÿ¨$ Ä
-0ü†ñ@wŸƒá÷s{?Ü4Dq2¶7íB¨ÂÅÙÙØ{jøÂsRðë²puÝ·Ap¶\ò¤³ÁÙ³C˜‘,ÐUËPî¹çµp“
-­}è(ôÛ!Kq‹Öl|Öô;ÄRL=: @¹}Œè?è˜
-ذj(d•LZcˆ=Y^/1¥À!©–à1@›— Ë€eãe:ûâ¼­€.J¾x¸†
-…Vdø†ŠàQ'¤¾ÃÑàÿ´ ”
-_£³É:tl4?y=Û}¶ò;&/D¼¨(QzšÊûE0(äoô¬ºs÷+,£ú
-ü Ò!BóßÕv¡M üHk°úš¡ŽHn¼Ð±=ÿ÷ÉÅÇ#ô¨M-ø^ŸZ
-endobj
-1204 0 obj <<
-/Type /Page
-/Contents 1205 0 R
-/Resources 1203 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1184 0 R
->> endobj
-1206 0 obj <<
-/D [1204 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1203 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1209 0 obj <<
-/Length 1962
-/Filter /FlateDecode
->>
-stream
-xÚÍ]sÛ6òÝ¿BôL…üÀõ)Mœœ;W·g»OnÆC‹°Å)?T’²›»Þ¿],@‘•(i:ž1‹Å.°_Ø…ø"„?¾ˆbk¡‰V,
-y´XUgáâ æÞŸqG³ôDË1Õw·g¯ÞÉd¡™ŽE¼¸}ñJY˜¦|q›ß1ì8„Á›¯Þ]¾ÿùúõy¢‚Û˯Η"
-ƒw—ÿº èýõë~x}}¾äiă7ÿ|ýÓíÅ5MÅŽÇw—Wo £és„éõÅ»‹ë‹«7çn¿?»¸Î2>/%ä·³»á"‡c2©Óhñƒq­Å¢:S‘d‘’Òcʳ›³ G³véœþ„ä,‰äb)KAü˜è8I™J¥
-Y ›i®}Zp=JŽž|9¦§Ü8VÎWÔÑY-É5”ŒX†|êdG®U1±¿ÏX¦‹H¢Þ“Ù4ïi–#¢Ã½ísBÑ ´I[hŽ>AÚ¤­TÙG,BÕ¶ì‹M9ë8aÊ%Ôç<'f©ˆÕ¾çt$gç:EýD"'æFš©¹Cæîˆþ¥èׄ΋G$}tG÷´úç1$z'Ó¤²±DÍÆ´}a:6D¾M¿é'F€‘!tÝ©‡¤{xr%Y"g"FFA·1«nƒEÆÖÕì7bl"¶çïˆ6²¾mcé0!wdOœë×™cÐÛ«qE Òë•Ùcì%Žƒ æIšsÝŽ ôÔq‡¸ã<È3S¡#Ü­›m™œ­Vfƒ yèþ¶5g›¢&¸|$DÝЗ®„
-GºSTþ †z<¢Ñ‚“O¼íà"žrvZ@N# €™›¦©Š¾·¢0¯NwŽ˜—¢, zpe Ô¸LìS3‡ÚÜ„qlj6m IÁ¿À× 9+;²·æL€)Üÿ\“ÊࡨóŽ@RB;‡À‘­¥à›Ñ§,Îy0ò ÄM#1Þð–q3a@—;Éñ’¨·W7à•Ðùô¨ XãûÑ™­ êN¦^Â:4º¶°NnpûÚ4ugˆ Û/iðàÈ Ét}{žÛYÊ…çêˆ:{K!TeumωqÙ.£OÝ´Uæ¸Óa
- çJ©™(P)5ÊÆrñœ•Þz®ÒÇÚàÇ’ÿ9ÑõLµ½Ôp3¼2ýêUkƒëX¡#+î€×ÈP—=íÝÝcÏEnÜ)3úÐ]‚PóH‘&c`”ˆ½|NE²OpëKl›Ù¼gØÁfcêܧ9«·!A–Y_<;:ØÓ
-Ããð†ýŒÉ÷µ&ÕݳݛN5Ÿkߔ룩ÁO>ap¨ø$Éâˆä#öN£ïWYjZkñSW^¬@hçÎD2$Í—U%vó¶<Ûº¨¶0S±ëaN¨$
-Ç]‡&]‡VePñµ'¼sL<
-endobj
-1208 0 obj <<
-/Type /Page
-/Contents 1209 0 R
-/Resources 1207 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1184 0 R
-/Annots [ 1213 0 R 1214 0 R ]
->> endobj
-1213 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [491.4967 546.2465 511.2325 558.3062]
-/Subtype /Link
-/A << /S /GoTo /D (lwresd) >>
->> endobj
-1214 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [55.6967 534.2914 89.457 546.351]
-/Subtype /Link
-/A << /S /GoTo /D (lwresd) >>
->> endobj
-1210 0 obj <<
-/D [1208 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-326 0 obj <<
-/D [1208 0 R /XYZ 56.6929 744.5408 null]
->> endobj
-1211 0 obj <<
-/D [1208 0 R /XYZ 56.6929 717.3918 null]
->> endobj
-330 0 obj <<
-/D [1208 0 R /XYZ 56.6929 594.9189 null]
->> endobj
-1212 0 obj <<
-/D [1208 0 R /XYZ 56.6929 564.805 null]
->> endobj
-334 0 obj <<
-/D [1208 0 R /XYZ 56.6929 340.8686 null]
->> endobj
-1215 0 obj <<
-/D [1208 0 R /XYZ 56.6929 316.529 null]
->> endobj
-338 0 obj <<
-/D [1208 0 R /XYZ 56.6929 259.8095 null]
->> endobj
-1216 0 obj <<
-/D [1208 0 R /XYZ 56.6929 229.6957 null]
->> endobj
-342 0 obj <<
-/D [1208 0 R /XYZ 56.6929 197.042 null]
->> endobj
-1217 0 obj <<
-/D [1208 0 R /XYZ 56.6929 169.8331 null]
->> endobj
-1207 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1220 0 obj <<
-/Length 1089
-/Filter /FlateDecode
->>
-stream
-xÚ½XÝs›8÷_Ácü ŽcÃô)Í9¹t®éë{Êe<
-£±¨$ûÚþï', à’ îÇFìO»?í®Ö² K}lÃ÷LË fÆ"˜™že{F˜N,c«æn&vù¨^Í·Þ¯'¿\» #0ƒ¹37ÖqË7-ß·utqõÛåëåj
-Ϻ˜›SàÍ­‹÷·w¿ê‘@?®>Ý]ßÞüµºœ.fëÛOwzxµ¼^®–wWË)°}ÏVòN‰ðŠÀõíïKݺY]~üx¹š>¬?L–ëÚ–¦½¶å†|™Ü?XF¤Ìþ0±L7ð=ãYu,ÓÇH'3Ï5½™ëV#dòyòg ؘ=Švñç¹¾éù΢ƒÀ™Ý ж|3˜ cáæÜuÜ#ƒ÷S0·¬ ¹C°f„EˆJ ‰žË8¦!Î y§û…Ùjm`ÛfàyÎ8K!¦z@·)LQoéDýê¾jl
-Ñ—ž„Ûn»‰Â0A Ƥ”Ì L6=uˆò4)š¢TH(±8zè€Ä†ñ e=´n‰T!ÃÑHIŽÂœ L·ýå[Ú¿YõE` -
-Ê$ŽO@w¿éÚg‡•‡–ƒ)qµ…äÐ?ÞÙˆHáq踖ä!Cöpór¡ü<cd¸pÛR}ÞÇ<BFD:…
-èU¸oG¸
-¥EP?Û š+
-(p‚¥U«©is:í¨j±)V™ðÅ>°Z;/|B­‘*7ôì Î>¡N9m»Ĥ5€·”qôŠ“õ°(ÝŸšóÆ5­ÿXì“(¬#gH®Óò*g¢-Çò0<f+kõiö?Ú,øÓÏ]³ƒ'‰*GÔžªt|̓»Ì@Eì!!6)TÚ†à*¯}ï Ú¨ÇaÚ¯`‚êä:¯ªàøïëç!¿Qí6$‡TÄU&:›Î'ÖùqÏÏDž©ŠæÜ{§AAyD×áuüYÇîN솧G©¼J†™â4VZ$cÿiÄÊ ,†[×u…äzfqïÓqácÕçü›¯—^îÞf Óõ}§¾9rÜÆÍ‘kÍMß •R…ù3÷TóúêGÕÿÝ«`×endstream
-endobj
-1219 0 obj <<
-/Type /Page
-/Contents 1220 0 R
-/Resources 1218 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1222 0 R
->> endobj
-1221 0 obj <<
-/D [1219 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1218 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1225 0 obj <<
-/Length 1147
-/Filter /FlateDecode
->>
-stream
-xÚÕX[sâ6~çWø:#UWÛš<eS’f§›m)}¢ ãØ"q×X¬-²K»ûß+°Á6°!éL‡¬Ëùô›t$l!ó÷¡-ˆ°Á G˜[þ¬ƒ¬'3v×Áù°™Ê³Þ ;?ÞRÇPØÄ¶†Ó– ‘ëbkŒº6$°gP÷æãÃíý݃ëžÃºÃû=@8êÞÞÿÒϾî×>\z
-ƒKñCûÕ¾"âj¶ŒŠ³æ¨
-çl²Z%k}[ãaG@Jn`¡Ã(_£þ åë” ^l;:„ÕÒ)T,/^Ò<_›$uL®ek³Ck³bí²Ý¾åL‡œZë’ܨ,AÈ\ÆZX¢ä€™€Œ
-û Ò‚Â;ï¸jN­:Û¸­{ßfÂÄF¤…3F.‡Ô´j}ößë@ôFÑcÿ¢§m:5ž½³`A+2fóVQÖ¿”éD%“X5ݼ¶òå ^ÌeÒ"ŒµL^¼è4JE™™÷èċөL€gÒ
-Ú/žjÏÿt {?’^ÆOçÖ¨ÏÒKô£ôt €
-µØÔóå¹
-endobj
-1224 0 obj <<
-/Type /Page
-/Contents 1225 0 R
-/Resources 1223 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1222 0 R
->> endobj
-1226 0 obj <<
-/D [1224 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1223 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1229 0 obj <<
-/Length 2041
-/Filter /FlateDecode
->>
-stream
-xÚ¥]sÛ6òÝ¿Bo'Ï„,Að “'7urî\žëNÒŒ"!‰ŠTIжríï.¤H™veÅ~àr±Xì÷.(6óàŸÍ’Ðõ¸f±ÜÐcá,Ýœy³¬}8c–Æéˆœ!Õ÷·gß½çñL¸"ò£ÙírÀ+q½$a³ÛìÓüÝ¿/~¾½¼9wüЛGî¹FÞüû«ë#èñîãõû«¿Þ\œÇÁüöêã5¡o.ß_Þ\^¿»<wX2Øï[ÏlxõŸK‚>Ü\üôÓÅÍùçÛÏ.o{]†ú2£"œ}úìÍ2PûÇ3Ïå" gðâ¹L¶9 Bî†ç¦8ûåì¿=ÃÁªÙ:e¿'n˜øñ„60 óW"žÅ¡p#îscÁOçNäyó¶QNþ¸¬ém§š»ª¾++z}KϨ.œé0æŠ0ô‡û·uuŸg“<ŽØ]«?ZÕèãw³án]+©´vdã4[™ªS•Øä¥S«e­šµ£óåS¶›…ªg"ObžJ¢ëÝ·ÊñM,¶U­ Ê·wør„ä2ËrW¥,œe]mÙêõ©þ8ä•Êt}²skYfÀ#S÷y![©×w¥ì¬sŒ_À¨F
-§É¿ÚmÝ5[•¾Â5:];¹ÝªÌ%!VÕ¼>m¶gª®Éªh­4¿{¡GÐ=þ´oð7B\¼¾ì·°#tWYÙ8m¶¨Nñtd0ž¸µ®* ^+ÔJb,8UYìh¥“ë1-Ú̲ý¿åN-òÆFï_Ý)ǺªQ½+ªÕ©±–å\ʑŪªs½ÞXçB
-tÀæØâøÜ8ÁxBöÁâwï}6ëÑK<8ˆ]îEÂáÉ")=àVm±f544þ¢¥V?zýAýîy~i:a Cðk#WÊžÅ#åÈÄ4»Ý®U/Ð`΃1Oˆˆ‘¦“à)3ÁÈCK× „ã|Þ(ÝÔné¹*ªæ?Â{µàEWø æ e74*#h±£'ä.·ëÜn;8p#-1vEYÛsL­'(Uä™0D±ÙØ3XTyÍ%>â9¤ÚvÕÖ’¬‹kˆ)È…b~µ$¤^CƱd®h#
-‡hŠ ÃF‰›ÁþÙ²1€^|hÙ7À[„àe:«7"¸(ªô 9NLH¡ X G´ƒkh ˆ\76h½ÈMB‘Œ*SKÙ6èò¢ ȸ+4“æ>¹Èx®Â Ü$ðùôÅÍ9C*sï™­»õTF¨¼V©® þœÌ À…ùËG÷Tg=Á¸çŠ8ŠÆ‡cÞ8ÜçUýº½€H& „²9Jf°Õ’žºÛc«4\ ñ²qQZÒ¦¹hª¢Õ–L¬zèd? (òz§€¤8µe`;/;ù”r<€”_TI(ÙГt)€ï½"ŒQË‚& Ú+3ÆŒV‚Y!E>xDi'),Aï#`S5𠮇!qÕêmkñ¤TÓ½„žrW.¥Îè’zÐ Ðx™[·åD–ÁÕ8 ·YFýÖ·˜wJ"4©$O|S@Nј••&
-eìž›¶Ñã~*»a®ïøörè2á2Áþ¡Ë©^ÝŽª/ŸÎ#Zî0naFñ".^>»§zz8 qø0•‚F§Ó¬Çy²_¸±‡öQZMU6!\?e¨´]iÚA¥XЄ‰(ÓQáIŸ|q-!„™ài¶ÜY¤ñ3u}yL«'Çir&ЮΎMz ·•טïÔ-ª°«Zn°ñÀÌpe‚$é?U'sÝ$b8yš÷Fme-õä€× ²c$
-7¡°¤AèÓÞàY*•©ì-Šà›yÒ`—m™Ò÷·\ï† _ÛœFJô¶2[â
-Úïgô}/§dŽPϤDº”~1!ö4ϧƒ¥1= ùªiä6wÒô-ušÃÄ€qð¢
-endobj
-1228 0 obj <<
-/Type /Page
-/Contents 1229 0 R
-/Resources 1227 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1222 0 R
->> endobj
-1230 0 obj <<
-/D [1228 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-346 0 obj <<
-/D [1228 0 R /XYZ 85.0394 349.7573 null]
->> endobj
-1231 0 obj <<
-/D [1228 0 R /XYZ 85.0394 319.5375 null]
->> endobj
-1227 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F21 690 0 R /F23 714 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1234 0 obj <<
-/Length 3986
-/Filter /FlateDecode
->>
-stream
-xÚ½[[“Ûº‘~Ÿ_1oáT,XûäØcǹÌ9k+µµ•ä9#–%R)Û“_¿ÝèR”&»§jír h Ñ—¯XÜ&ðWÜê,Îr™ßš<u"ôízw“Ü>CÛÇÁ4 O´©þ°¼¹ÿ Ìmç™Ìn—OÁX6N¬·ËòïQËøFH¢w¿<~øôñoŸßÞ™4Z~úåñn!u}øô—*}üüö¯}ûùn!¬Ñ»?¾ýuùð™š2ãŸßSMN?ýüðááóÃ㻇».ÿtó°Ö®W$
-òíæïÿLnKXöŸn’XåVßþ€$y.ow7©V±N•ò5Û›/7ÿ9 ´º®³òI,U&g(U @+bçúÖè<Î4¡
-5ŸûâÐÏÈ\€äÖûßϰ
-¸Û w¶en¢÷õÊÅP-þXm·;§Ë¹e $€³JªZqMï{h9§u>HSíÈÏ熃9–\ôv4ä·;϶5·ÞøÁÜeœä¹[û…™[®¤t(Ñ‹ž{”œÎRû¿Ã80I ÆÖÜH« –‰ˆXã äd-Û¶(¹Æ±?®¶õš;¸d+õwÔ²¨ ôDÙÆŽƒ®Ò¨Ov,J+Xïë&LK ð£=|Ì¥d$°îÛÃèÁq7òÅ”‘/ ãÈŽ ×{ÒÀ¬Ê©'…ªÍ06ŽqÑî´cí+x9¤ºlw• ÅzS-HZSæyËQ‡9æžh†ù4tJL‹FÜ—ƒkò¿}9¡†¶È%ÓÁμo}¾Ø{ïwEvà|¥„r]vÕÙy*çÆ»ýщDÄZ¤¯0¨f¸…—Åi®'ì— í‹~ã¡Rv•x†Lô
- T7]¸³ÑqM)H@T¶ÌÂwšOM
-•Ö…3„JO2¢ß¦É‰+ËCEŽyKæ’
-F8ÔÕÐ@^C‡g :ZO®á ŠS;’U9K1¡ÓºñµÙÖº`Ûúíf`É¿`­H YN3ï.OxvتùÓ@mFç¥ÿ/6¾6'ˆ§Y¦ìkP@ ÐK«Ô+ªP]QmOå`Ï«¨Os4Äð«S¨fæ0>•P6žAð4@߈;aÅŠ8È…
-¡ë:SO4Ãtä
-à©GLÙKØèoï½_¾û•>ÜT 8å¸[‘#ð‰NÞÁ"ìˆÔaklUgD6 ë°ñPûþñ u Ÿ¦0¯C1œ ¯©ÙtPy˜MÒ ŠVji…ñHÉá¼ÎDíÞ«¿Y:¼Ô ¸‹™MÏÞØÂ§zÁ 9Þ~Ó ßÀW&ô WÆ·’<±Í]-Q%€ÆÏsü†¶†¡qFýÉìé2ćøu»Û|’S1~l÷ÏÛvUð úËžØå•CÛꊆ{ªÓ­å¢¬¾×ëó˜(ÓØdF\g?PÍðã½<6 4ã ,éj‘Ðѩܚ¿Û'ú¿Kª¸¡
-”/þ®˜rCWã)†1ÃôLBÅÃt°º£ßý¡Þ‡zËÕMU•~T¾Åwôåáã= ¸lš¶{¼Ÿev—¬BFÝŸA©Ô££_w'âJ`NMW8·ÚÑ'[$x~¼À+ ü8î˂ҡ„‘Bâ’ØŠ‰ÿÉO‡æ¨s6*G¹ç•¿²_Ì)´‹¹H%|r2@“ 8'"<,AßÃå‰ûâ7_ØÉ á3;¼ Á¯p#9jj>¶"ö5OÄÿ~
-ü¬K©$qÈ‘‘ ›ð™yËÆ6l`c‹šK•¤ñ·H&ˆÈPÞàîaë
-“OZýÜÇ®wY«2|þf¼k0gÛø,hO¾Ñà]êöÈœfŽJ „‰áÑÖ=ìÏ=¿6˜86NSXÀ»G+tœ§éäÉ ŠøƒÌh_éõž[bšß¥¸ºPKsʹ]i¸šç—ËÙ—RÚØªÉk‰ÀïLß©%
-3D| X|u©+Žž
-nb™™@T#¯]]=ð/üAOux  Ûƒg«8e_^ÊÇÇÄã 6Ö'¯£î$δ\š¡“Ç_P<Õ̘Xšì0]V2Oä ¾m{0÷mõìŒláîa§š¦ñ©µPW§0Ïa¤g2!³Ñ$–wˆ˜õñвxœ$¢†Õ`]í(уzm-Š<kWYó Ë¿¼ïˆ…Û·{ªÞVß«-wwOt:Ž›–½ö 0å¯kŒŠ3¡ÄØQ¹è>…þõ4ùE¯hÕÏõöXòN£µÄ—ÞÏ+§óðÕø7¿­?ýÇ_ÊÚ þ@|ƒð¤pÑiv®›üÿ|êÿi´"ùendstream
-endobj
-1233 0 obj <<
-/Type /Page
-/Contents 1234 0 R
-/Resources 1232 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1222 0 R
-/Annots [ 1236 0 R ]
->> endobj
-1236 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [222.5592 291.6174 286.2499 301.027]
-/Subtype /Link
-/A << /S /GoTo /D (statsfile) >>
->> endobj
-1235 0 obj <<
-/D [1233 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1232 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F48 925 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1240 0 obj <<
-/Length 3387
-/Filter /FlateDecode
->>
-stream
-xÚ¥Z_oã6ϧ0úRX«¢DQú”n’Þ¶Ýì]’½^ÑöA±[XYr-9ÙÜá¾ûÍp†´¤ÈÉ.¢5"‡Ã™ßü‘Å,„?1ÓIÆ™œ¥™ ’P$³åæ$œ­àÙ'‚yŽiÑçúáöä»Ë8eA¦"5»½ïÍ¥ƒPk1»-~Ÿ¿ýÛÙßo/®OQÎUpºHT8ÿáÝÕ9dtyûáêòݯÏNS9¿}÷ኆ¯/./®/®Þ^œ.„N¼ñ G^¸|÷ËQ?^Ÿ½v}úçíO'·~/ýýŠ0ÆüuòûŸá¬€mÿtq¦“Ù#܄Ȳh¶9‘I$2ŽÝHursò?aï©}uJI¬ƒDGé„£¸§@-Õ,M²@ÅðxÕt†¶Ô6¦n9o‰Êw§BÏy¸n:"
-S™UÞ•MM÷M]=õG˜„&XcwQ$Ï/ðÿ~ ä/§Y4ÿçhðã þç5ëâðàýÇ›‹ï‘‚©E€úþîRŠÞ®Â¬gÍåñUÎÿƒü3™:
-A=BY’D–o×4Ýâ°‘í_2Ÿ—Õ¾0n{ù¦0ß|ÏdõàÉ}ëÉ;5û»ýï÷våÅhi‘Ì& Â6 ”€cÕ´›0Ó¢ÏE§,&ÜÄsá’EÙæw•YäÕªÙ•ÝzÓŽEihôEÓ„CK“ Õ:ÊpN2ÀÙ*9ïÖ–ˆçíÖ,Ë?Â02=9¿º¹¹xK{âÚgyÇWk"Àpgªæñµë|cÐ"ÁÃßï«®\ÐÙ¨$Ðä˜Å´66ЩPªá¸2G:Ð:ˆP½Òvyg6¦î¦ü*¯`¦`§ùà‰vĦiÙóüÞ–tÿXVQwn²í¶*q²c&&@0™ÊWL¬Çõ‚‰9.«•ºmÍrQ5ͧ¼- óÌÀT “«øe <ׄSâT eøum’”ž·¦{3qR€¨þ 'Dc(„zak­y
-áI”‘Ž_ð>×q÷\=§Ú 9Þ™ÐûÝs×)d‘m¾(†çšc€ãYdÑHŽ{t©(¯K³£p¹²¥ÁÇu¹\‰ÒeU2Ù'9OA‰kÃîÌEàÈɪ¶‡±÷ áì«ðÙ'h$NõЋÁr)3Õ}œ$ãÏ“™Êh)-0ŠÌ0Gd‰õç‚HòO¤(SE*_.ͶcºnÍ®¥ôJ¼ÂL–U>l/ÊÄ´ø”=ëfJx6ýcÂ3°"í€é°Z}F`2T£DŒòôëLR†TÖ+¼‹ç÷&a¸¬ûiÏú9 Þ¹‡V]6ÑJ¥˜ßZ÷ÏF #2ú
-Tðâòžkbý™C¹œJ­‡Lº 0ÆÉ×9| ö™8Ô.Yg­ ¦¸. =;›šW‰ŽåÎ…cŸ´U㘶ák8G»ú×ù‡÷gï®úA¯Ý©š–4.1tñžc'&Ú»³ó«q¦#‚(գЛPXgh€{ðè'¾ƒ“Ä2êT@ji sqƒ¼Ÿæ>‡ª o4¯0Òº
-Ö„9W‰µ§‡|£ó&´†½"í+Ô—ÌU3ÏÑŒ$V@È${ÙÍû\ÇÝÜsY¸3ýKˆÀ‹¦^˜Ïe÷¼¬„2>öeð\B ÷kÑPŠÛµËܨ»Äµ·-gìN äG‡¤&´î†HSsž.×fù‰ îl\³gk6Íî‰Øj?¹ÅyvTƒmZˆº ¸Ñ0-áö'd6 »õ¨³Ðßï»9°@zkv Öfüž¼=n.²`îe{èq½`ŽËF3³ÁVJÙvåòy ªû,Sòåå=×ÄúCØE¦i:àWlZ!ú éO
-éž`öÞ¦‚+M$0Ũ,M9‡O9àÙÝÓîGaŠÍ_Êû›_ðlñÑз,l¹ °Ñ$aĉŒyhE‰&¡uÇQ«8CùVÈ@¢Çкûº2-›Í·‹ ÂêÛaU4ìÛõìý`uÍfã­´*k3ô:W gÞš!Nn‚@Ë0úŠ}Ôæ£4Ò$K^¶ù>×q›÷\ÔnÌ+¨¿ÇÆêÎ Õ‹ëz®‰…‡á1 4~_¬|¬ªAêË£F.ú ãó CŸ;ØA²ÜvHCۥ؟rc- a‚÷®¼éÇ\. ©îeæÝAmpÏæ Ö[75 £®1ÒÆšEÖX¦ÙÐøPq’ %~ÂDIGÎq;!–°uC¢æw´â~µîè{›`xï‘…û»ø$F«²Ÿ·µð²û† LH±*œÀÉá8fá#Û¸ÂÉŠÒNJ°Êª»©†ažeÇ0Uû+ ÑC6Ò®yÚ2E'ûoê%¬±ãîLïaöÞADVQš¸J¾Zƒ@bm{a<§-Ó`µ|¸
--$–Öý£9.³ƒÊó Ý6vA¤ŒKËž•]
-eI-¶'~øœé‹o2¼X¿PíS›Wf¾éºB©—Ö5Ä&_´¸äÑ5µ†å+a‡€täm¿,J/‹t>ÈR1nrŽYk e1MU¹v2¯™âÔ§uÓ¡&¼$ „R¯bEœ¤®=ˆ ¶8:Ÿ‡Jd:BÛ VÁöÖ3‹” P@ð±
-$Ü|Uj!ƒ0t–`>oËC=딼^^%û†JY ©E4ôG>n…?Ц|¸_¤Yh£
-ßjªg—Py!ºDYßäyÀf½@ج7FÇ\—c<úDWj‹M4¥Ò4ˆ”|Ý32ìĺÔÂeÝ01R¸ë–HÜ~woÛ|…Í©Õà ÖR VçØk¤Y¬F?ÉÛpgÊ×ð¾Ïlœ„2ôrIqK†^.zBY´ Çéž}Hø-i“7bb`žÚ+¼$‰Á;x_;ò{¶8 ðGh%fè[«ÿ÷oÝ?”)œƒŽ¦kÕ8TŽ²Ô …âËt,¹ÿQÜsÑÿúÿ@-endstream
-endobj
-1239 0 obj <<
-/Type /Page
-/Contents 1240 0 R
-/Resources 1238 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1222 0 R
->> endobj
-1241 0 obj <<
-/D [1239 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-350 0 obj <<
-/D [1239 0 R /XYZ 85.0394 470.5338 null]
->> endobj
-1045 0 obj <<
-/D [1239 0 R /XYZ 85.0394 443.7621 null]
->> endobj
-1238 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F21 690 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1244 0 obj <<
-/Length 3443
-/Filter /FlateDecode
->>
-stream
-xÚÍZÝsÛ6÷_¡·“gJ>Ià1Mœ;çê¸sÓëõ‘(‹W™TEʎﯿ],
-;Ë­J5ãz¶x¸`³{{{Á=Mˆ’>Õ·w}#ó™Mm&²Ùݪ·–I™1|v·üyž¥"½„Øüõû›7×o¼}u™«ùÝõû›ËDh6sý÷+j½½}õîÝ«ÛË„Íç¯ÿöêwW·4”ù5¾½¾ùŽz,ýœXôöêÍÕíÕÍë«Ë_¸º‹g韗3‰ùíâç_Øl Çþþ‚¥Ò={‚–rkÅìáBi™j%eèÙ\|¸ø!.ØuS'åÇY*d&&(dO€†§ÚZ=˵M3 C(À§uµXƒL,›·ûívwÉͼlÛ²¥¾ºÙ=jÓØÊ“øI4£YÀœª¾§¾¢^úËzÙž™üÛ¾ÜUa«§uYS«[—(X`Ÿ÷ؗʤÚ
-l°ƒXOr@ó¬å›aÆp©$)Ƀ–1ÓJl¡)E>ËX˜ÒÊI|Y›ý–$÷Ð,ËËD¥ÏKY2.I‰Ô¢T<—ùˆªnºjõ||'*©ÍÕ¬ÏÿŸ
-_qXÒK™I)3“f t6J™OI™ XŽ‘«¨› Õçp <hþ¿™fËrUì74ùe¢„ÑógÔzôÀ#ôKMJ¯Ç×—•Þ—ÔÑÌ‚£WF¿ =†ŽYS¤B)ŒÅ;×*È/Êç 2?mJT}&¾bQ1QÊó¢ÊŒIE®–Äì무&ôꜴˆõ•K ¸Í¥/H+ÏR) T¡và¯ÐWýå:m†}>¾bie,ÍÍKª•At[y!†ŸÖg¸¬_±¨
-3‹Bã xŠÎn©&v €>†©l¸ý5ä0z|*iÔÜ`Ša\—=Œ5Û®jj-kL –4ÐVûMÑÑ]Á3&BŽªùØ6›Ò]<twótJGÑ=oýèõ?B^ °õ§KÎ9ÜÀ€ ©-ˆìF¦‚åEuùXî|¾Ò„\¥·ž{L6õéË%
-C‹à¯¿–åÖû\NQ~{gpD«fç§>ø…&v˜q"0CˆñKLm÷Ò XE€MŠ” žmò©êÖÞÕß„lià/\G=Â
-á&(ÃŽ
-úévEÝÂõCTˆ¬nš{R®r$´Áq¢8¨©ÃÐÐ"]„Æu½ @€šáà*tþ‹PƒbèýÙw\¹rg„€â
-ú ¼£ÐŒºi4áiÛ@šÖäW¿^ Á/â¹Ùˆ4˜Ä_QÑC³ïî›CÑ`t¾*êüÙÂÛ´};õOdXg*”¶»æ°4iíÄ»7
-_‰¥S6yHHŠçf¨v÷‹}eHLv+,÷Õ‹`©«#
- Þϼ˜§ G–J¦å—0;¦^€6}ª3f¨œÙÁ*ˆÂÉÂe#£“2ŲÜÙýÑÄþƒ£J¸
-‚cIR.1˜úáý+j¼sþÇ5Ý„Í2¨7“ÚÏw‡‡_W7<l×ÒC<üÑNcl|T¢.6m“œü ½ŽÒáC8ŠA©÷þ~(Ì]JcÏAD“ç¡¢CKPï—é4×±Œâ*®Ö¹/'<«èkdo„ø°Ûë‰ðÉvÅÛNW
-zkl WÂp·ßÕ~
-Õ˜ý°em{¯¬Í¼ò£•ß0¾„±vµ‹;­!¦þm±+Úuzêëi©S%' Tlöâ—1Ÿûeõá³s…n˜
-endobj
-1243 0 obj <<
-/Type /Page
-/Contents 1244 0 R
-/Resources 1242 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1222 0 R
-/Annots [ 1248 0 R ]
->> endobj
-1248 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [154.2681 157.9689 203.5396 170.0286]
-/Subtype /Link
-/A << /S /GoTo /D (notify) >>
->> endobj
-1245 0 obj <<
-/D [1243 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1246 0 obj <<
-/D [1243 0 R /XYZ 56.6929 744.8677 null]
->> endobj
-1247 0 obj <<
-/D [1243 0 R /XYZ 56.6929 732.9125 null]
->> endobj
-1242 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F48 925 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1251 0 obj <<
-/Length 3712
-/Filter /FlateDecode
->>
-stream
-xÚ­]sÛ¸ñÝ¿Bo¥g"†ø"éS.qRw§u|ÓëÜÝMQ6'©#)«î¯ï. H‘’ÒÞfDXî.‹ýØ"‚[hFÂÈEbd¨"¦Ùæ*Z<Áا+æ`–h9„úááêíG‘,Lhb/Ö\:Œ´f‹‡ÕÏÁû¿¼ûûÃÍýõ’«(ˆÃ륊£à‡Û»ÔcèñþËÝÇÛO?Þ¿»Ndðpû厺ïo>ÞÜßܽ¿¹^2­|φ|¼ýÛ µ>Ý¿ûüùÝýõ¯½ºyèç2œ/‹Nä·«Ÿ+˜ö_¯¢P­{x‰Bf _l®¤¡’BøžòêëÕ?z„ƒQûéœü¤Ò¡â2^,• ¹b^ÊQ)Ú2‘QÈcÍ{)s6'e…R®ê®X¿.»zÙÖéñœ™!S‘^ OÈ÷P3ôÅ€>“:dX1p»Fªo?J=d5L¤Añš·2ÂÆaÒQâ@V5¬]¤q6ÔÈžóì6MÐ=çn0ÝämÞ¼äMKEEÏâî+=ïïÛ¼£¯Ó§´¨Úîðë—wÔø|÷îóMè¾®›MZ–¯ÈìbÇ¡‘œƒxXh”¢É¦
- é]œXägD»…
-
-{ž^ŠvF³@ä¡PÉÿ Z–†
-I’„õÎÖJ{w -Mü½•U ¡l#uäþ²²
-µÎ»ìyùTîò݃ Q2¯ïécý’ŸtB*ÆÅ yuÚ õPv¬3."½ì^·9›É*1OΓï¡fèö7˜^!èõ›CD ¬0ZJÛªgŒH,Ã$ŽÔ¥ØÙhãÅOvf郢’“rz=rí“¢l¡ç³çµ}®Zú4-kÏô¾èžGˆŠÑlü-ÙÆãÉÄŒwÙºn\“?ê¾x-³öÜ+߃\ãšYƒ«L˜°>јµ}ž¾7¸Ç«($hŠãúJö=y¡Ð6ÍÕóy!l¿„…q«Ó¸è»p¹¦ÿbŒjé¹[b²™¨$*]/Yœ¤
-c.A‡‡Mh;Ù»8Î !£P‰~ç~¹^Æ,x€ÜLDHWz!cpZÆh$¾ømîG#jж³=HÁv¼½ÝðŇæ´NËc^QÛyÅ|´¾0E ™©L`[KIí®v¡øë5‚ܽ›m™oÀHçG!¾+9@ËLV_‚ÇŽE,Cùþ¾%PšH,–‡ºÀïS(¼B\¢ŠJŸ1 P¨X¢Î[Ç
-å 6cY¬–Ûº.'* @+Ìbˆvj=Ô”:t ȃƎÈ?X{ˆ{¼ÞvÇÐ~§¾Ç¶.ónγ€Ð¤Š‡¡›)0¥å>}mû\ªÎ es¯>p‡æí×7ˆ!ðz hNz-abXðK©ÓêôºôP8£ÿÔU¾l;0”JdíÔo™GšŸg ‡šá`ì·dÈ´QcN$P1ãâ;¢Üd˜@ùìÞ¨A²£údGBÆ^–!ˆŸ¶v ÃEyƒBzºüGY9µ„ë'»ª¤°Ñló¬À:@f ;¶Ó
-«#G4W`,žªÚˆŸ´¥ ÷ó…WkÌz Ó–ÔÙðժ@~Òr¹nêÍ2ÝuÏoúó¹Ñ=Àœ¤/=fÄϲ×Mù§,²2èË?F:ɵô‚W‹¨LŠçNÆîãÈcþœ¾6;4ö&€}â^³O˜`Ý IÀ£J5ÐUè†ëí¯äQ°·—%$gî˜ÈšÀêm:AP¶øƒÍg{ÛÈ~ÐK‘F°†ˆ©j,ìvb‚u]–õ¾Çþž.ÝÕܹêw5 – Ì`Qµaeè( ¡þi Æ¡À–• ³·?¬|Èú{Ç{“ÍBϲ$‚ð2ºpÕŽ¡òù Š º36r"–¶=dö– 2æjäØS8öÜÁ:A·ÞÚºÏõs;¾sîˆâáéÈ ”ì•ñ5^(ò˜R§ó(åþJWÆ‹Êß”r¾ÛW%pNoŽF†a#S¢h¿ÉFñ©íì QÜÚ2ôûúb„uÎ_d}YIEfCá‡Ñ®úi»|5[Ï T„
-ãúh³ØÑ¾Ð­ýe$3úÞ_Nƒnk0°Š«ù.èkëm‹n×_‹³ŸYkhŒ;f=žÏ®‚¾h°nôÆ•ƒw¶ÖjÜ­D°ûᥦÞBw/ºaù²¼q0µ;
-endobj
-1250 0 obj <<
-/Type /Page
-/Contents 1251 0 R
-/Resources 1249 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1258 0 R
-/Annots [ 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1257 0 R ]
->> endobj
-1253 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [108.9497 359.6771 172.6404 368.8925]
-/Subtype /Link
-/A << /S /GoTo /D (statsfile) >>
->> endobj
-1254 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [293.8042 313.7527 355.0043 325.8123]
-/Subtype /Link
-/A << /S /GoTo /D (server_statement_definition_and_usage) >>
->> endobj
-1255 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [395.8905 313.7527 444.6373 325.8123]
-/Subtype /Link
-/A << /S /GoTo /D (incremental_zone_transfers) >>
->> endobj
-1256 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [309.3157 282.4335 370.5157 294.4931]
-/Subtype /Link
-/A << /S /GoTo /D (server_statement_definition_and_usage) >>
->> endobj
-1257 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [305.9683 251.1143 367.1684 263.1739]
-/Subtype /Link
-/A << /S /GoTo /D (server_statement_definition_and_usage) >>
->> endobj
-1252 0 obj <<
-/D [1250 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1249 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F48 925 0 R /F62 1035 0 R /F39 873 0 R /F14 717 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1262 0 obj <<
-/Length 3759
-/Filter /FlateDecode
->>
-stream
-xÚ¥]sÛ6òÝ¿Âo§ÌT(üxtS§—N›ægz3mh ²x¦HU$í¸¿þv± ”(¥¹³,Àb±ß ¼Žà_^›D$¹Ê¯Ó<&’æzµ»Š®`ì‡+É8K´c}wwõí^ç"OTr}·­•‰(ËäõÝú·E"”x+D‹×¿¼{óö‡On^¥ñâîí/ï^-•‰oÞþtK­>Üüüó͇WK™¹xýÏ›÷w·h(á5¾{ûî{‚äôsfÑ·on?ܾ{}û껯nïÂYÆç•‘ƃüyõÛÑõŽýãU$tž™ëgèDB湺Þ]ÅF kí!ÕÕÇ«…G£nê,ÿd$”NÔ •10“Âä¹¹NM. CÈÀn[¶p¨L-Šõºìʦ.*ìËźè
-y.+†µ{k×ì÷ôÛÚÓ=Ðp³·‡×ðKvôÛm-!ì›¶-ï+K`ûyoë–‡šÍjñgo¥m‘ÓpÜ¥”"7Fí ]Çá•̶mª'K€ç­Û[M_­©Ù
-r=u±cŸˆhÙzT/™*T½'ëN²ï£ûhÁ³xMtl…wa-ïç}Ú½­šçàþ˜¦½ýL-wp\±~Q·žc:Zo4‹:sæ[«h`/sì ò`úÅÈ¥ß?! A zc‡¢r@¥³8JÒâÑš†·eM'1cÜéè†Vl›;” ›QÔ…ÔܳW©;ê»U¼ã㏨ÄK@ÙÓÅDz^Ù#L¯rŠEZ?L1Ƽ
-k“.Þ¾Šùœ4
-œ¡†ß5¤mGô;ÞE¢¥‰E; úý‘HL‹gc‘˜«Ò‡ñ$Šb™Ùqè.äLä¬ånC¿÷< xM-
-Q@x×/þ”+ÁÅœ A™¢`õ‰í3¶[æ
-~ß©»=]?A¢Bd GÏk#"8k3s_“ä¼@NKPþe)"ãDé%ŽøôŠiÈᾬ) &+2"±b®
-Ǿ±Î‡ÁËq ¯ºr9ðaõJC2|q÷€5³ý$êU‘ÐJ§Óý¹Œ¶#”qEVaÎ^Bƒ
-äØzizÂÙºAî ûÊ÷ÜYÚÉc%™IÈù‚©žçŽr3…ª£6üæŠÏ1±œz cóâ>WÀ7çÕÌ-Æa:Ïçk`+T^­ÿfqCe©«†®iÿ]…/EeþÁ&Í=÷2_~Ê\Ù¶,ü„~wO_]Dœáç¢ü±M_wÀÂTÉwëñ“°"RLáð"|<áIE³Ü<¼Òn Ç Q ê̵Ýp±á)`¦$”áw Yvñ¹Ž‰!”³ú%Á.H|ö¿¨_c¬óú°œTÔ M+®•œ(¨D–Êüòökfÿ©‚‘­¦ÜÖ dÙâûw?Þ¾Æ6–[÷àb;p¡<
-l—4–zÒœVÐ Øc}‘†€tJÄä´‰*‰ä„Š·=V/äÂÑ^»5¾ì<ÔE׳{'$~s‡QHPøó7ÚÓ‰(±Æ×Ia4Üvfoo™â§pQrôuÖßñTNPüWOG‰MÈòGñ.¾ç‚tг®û^òAzß§¾ªmH££÷UáS®®+V3Q¾šj~K:sQ8ËÿýÉêð=oœ
-egbK°Ô°…4ѩ𷭧¤ÿÁv„­endstream
-endobj
-1261 0 obj <<
-/Type /Page
-/Contents 1262 0 R
-/Resources 1260 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1258 0 R
->> endobj
-1263 0 obj <<
-/D [1261 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1260 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F21 690 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1266 0 obj <<
-/Length 3230
-/Filter /FlateDecode
->>
-stream
-xÚÅ]sÛ6òÝ¿BòLÄ
-t(ôh¾¹GO0÷áB0ÎÄ!MúXßÏ.¾{¯’Q¤±ŒG³eo-„ƈÑlñËøúoW³ÛéåDêp—‡ãïïîo’ÒãúÓýû»?O¯.“h<»ûtOàéíûÛéíýõíåD-à{É+œøàýÝO·4ú0½úøñjzùÛ쇋ÛY»—þ~E¨p#ÿ¹øå·p´€mÿp*5zô/a ÒTŽ6‘VŽ”rõÅãÅßÛ{³öSŸü"m-£x4Ñ:*ýRƒPƒÔ&‰J‹´•²>);,”òöùîu]=nWÈ8CÝÃöQn±<¤U´Paš8Ò~Üæóbù
-b¢ñË*oVù_qEpàí©(Ÿè¥^Uûõ‚ÆŸs­›l×ä‹v•’Fe¶q@‹QƒþUhÆwKÜêh”
-µ£¢t\m›¢•*ÖÂö5ê
-!MEÖP³+æ Ï jpj¾ÊvÙ¼A_@xÅ8Y¹ œúµl²ß ˆºµßå»&+˜ò¢ÚÐ&H(ÄPÉ–i‚ìÕ&ía“ÕDUÅc´Ñµý
-^€ìwOÜÜ?Ò€w°­ÊÚáhžÏv»
-dr̹%’•õK¾«ÙøbÈj©VCÕ ÃRg<ƒÐÅÆC/¿†:ô°,¤ ´vÛÞ±™úâ¹Í¾.lÁjâ€Z'}B<!u!‹§²Úy5‘J¥I?@Ž`ÑÂ+” Œ`T¡`‚Äc 21ã½uC«ñÒJÀëü)[lUÕ û7ÎØ
-IK'êÈm>ÃR¤Q’ž7Ü>ÖiÃm±:Ã})Ö‹y¶[™¯Ž‚$Jôyú-–‡a‰–Bíl̪ÿ¥ŠÚúǶ·Eü‚^¬!ÂsÎCÊì
-ÉrBÍMð
-
-+0ùІ½œG¨hÁW4¤>_Øú—ì¿ð ÂX9Þqô´Þç'hx—È/jþ”ìZa[‚ý Öx—n½DÝ¥‰Ib&a‰ÀIÌB«NÀ¨Êõ+Må„Õ
-à~;… ¶ 欶lå 3(±¥£_í›Iµl—IzËxÊD
-Ú°®=¢œØeñSŽTèÈ´3Å<¡z*gãöÀ+1ðs¾®^hØT[F\Ò“„Q·1xtiocøaoce8²îd
-döTZnÐn^ιåkÍÆ$ìæ½BP"tuØŸiÁ•õâ(ýŠX{2À©HCÄ õù
-ÐN£€ìÏ<14U¨o‘y ›ÎR½‘yúXg4é°lÑ”ïªIYMê*›4Íú¸´÷Ç[‡³ ´X†º„ ‘(1du)\Øì¡Í€ŠÔj Ù¾YaW—5ų-Kðœÿ©}‡×M²>
-ˆtÐ
-…]«Ú²òi_0RojÒšˆåÊïÎèž‘l›³]@G•ýäKýå¸48!âóä[¤cúãÌ/C‡ pÈ‘î¾ã)/ó¨Ù†åü¦§ÓÇ»5—Õú'>kJí¡@~໎Ûþ‚ }{D Ø;|põÞ™Wj¯wýS?º‚€ªE4T5_¯èñ?Rõükªì‰€6|¤ºÃº¹üñöß„8òdEÏöw"4],Ý·¶6Ñ—ü•¦ÚßÕ
-ÅÜ™2Z† „ЈÏT{?B°<úÜ3¡”ß"òBPKeüFñÖC:ó³.F²F´{4óíd—/wy½ò%|¥Tr–z‹tLþ0Ý+¡äg—)$ÈWüÉ eiÕ&Ì%×OÚKY-øhBÙ“ú
-endobj
-1265 0 obj <<
-/Type /Page
-/Contents 1266 0 R
-/Resources 1264 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1258 0 R
->> endobj
-1267 0 obj <<
-/D [1265 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1264 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1270 0 obj <<
-/Length 3187
-/Filter /FlateDecode
->>
-stream
-xÚ¥ZKsã6¾ûWè¹j„‚äq2ãÉ:µ™d=ÞÃV’-QË鈔½Þ_¿Ýè>$omfªL¨Ñh
-?"!³L-öW&Ö"6Z{Juõíê½À × ÕŸŒ„ÒVÍ(PÉ9Æ™°Zé^þ€Z¢ÔÕ^óæ¬qk @¢ì^ÄÊ$nèý®¸^éÈ.·nеL—n Ðâå6_—UÙ½Ç:¯‰üÀCŽm±!J×0‹PäsäÔ]‘àG¦¶eW¬^ËMA½ë|íÑð 9¯©xåÅá¥8´à—Ì–4Éæ¸æ…ÚewÈ·Hü=ŠÔ7Û”RdqL&ÖÀp`5Ѳ*ë§–šnÕ:[ÿîŠCWD­ó}A-ží*É–·QI ÐÈ«¶¡Ö
-$
-ðaظÓZy€¦¡Qe"M{.pƒþ°#¯[™RVb‡ÞWlóc…þ¤¬3€€&ayØèí‰ =ѪßF|c] .–~(•P‹L¨P’3sý]çùØfÃy`îíÃ\ $®4>­:5ªŠ¨Ð]S‹âö’SR'5Ü´ ™^RT[81#Íòvî|”ŒE¢zÕ;š9+c539Ç…>ëõTlð2ýÞÈ<±…§
-­²Ô±Ž“DOØ 0€-·YìjjÔ×ã‘á
-QÏOç‚V¸iöyÉ]y["ÔQšÁC?iMyOƒÆcÕ< páÞÉú(<·<ª™Ëµn½V;ˆt(7çàËÜr€žÓã%‡4ìÔ }Í–ˆöiÈ€ÿºÆà{$:©Û¢#Ês~èÊõ‘ ûMn‰‹¢¢vø‰zK綤¢îˆoè‚.æf<Pç9|”s’Ÿˆ¤
-‘xùÚžBùͱÞÐïg—M‘ôP{ž=Ÿ\t­wùƒ/×@ØæÈËóymäU¯çÍhoÇçg·¦Ô.JÀíÛ__ÌОb½‡Œ
-ˆ®¬‚ç(‹"—³èb-ò€W8êï >Ã…8v õÆ|dN´3&ètgæòœU"–&_ÀohÚmf²­t’ºª
-a\?É@t¨è™¥G÷Ðçñöïn×@uÕ2Pr0e¢¸U'YïÕ‹ïØ1¯Ÿç)Á\Q ¿¸Ô€ÖÄÊåp3ˆñ 
-ƒFåÕÌü-=Ѱ¥—ΚjF=V~þ‘U‚õ‹L§Šü=ŽsI qVú!\‰¦XѳàD¶æ½ë
-Ïß(ø»ifF)-ĹgÃi†úqu/³=Eíg‹'µ9ãåëf¿ï+éŠ-„a…xœ Ý*Í„M"ËÄ£åá+3£þŸj¯Ž¤Mò
-9þ|势p1zy>þk È!Ê<‚c.º¼¬Ú¡ ïðZ.t WInß|bc?œ…³ñ¶;_þî¡b€âöb* ¹Î§²žËù0V+€¸Âq“ZHf—gï¹f¦€©J §ÖJö7pJ¹„ÀÔ!Ý-™
-®áÉ;p »FB*»ãe¼S$޶‚ðÇ$çÀûŸ¦æ
-õ\'³§ÛËIÓ„}yòžkföaJD$­N?ŒB'HÑG!t³>
-ý…RBšŽØ>¡ñ&¹»…®Ï_¿Q—¿' *”f{`7ÒË87¥BI+Ãh |4 ¯K!¶DRÎÜÌÀ1b\¨ƒç|ŒHÈ2Ù;!Â@€Jg"„J£^¾×nb(BÐähì‰cÁùµÈ4‰2z pÄe~%ü›V˜QœŽ.ón·£K–ÿ×qùÝôýÓÐ7Ý2WºSHJg%
-Áš¡°s 1]Çš,ókp`
-#sS/þ\HHmY¦‰)h»½žtàßßîÕâs;Z„›bÁ«P²Û”¥…Õ`•¢…RAl»–PY;›ÄŠaù¶Zçëkhxã†Ì8Z†¯õUø>jÖš„оñæŸ'‰µ/-²Ð$å÷â kbYÆfBUºÏƒ†s¶YuúHá¯ëÊ¿NÃÛtÀ’ær2e*€L—s‘g…Ü¡½A6Rh
-°¶@î4y¦éìsÑà6’ƒé‡©HŸR4«fí® t2y+¢S.5þsGíQ
-å!ä!÷±½|E–}þä…–,ç¹iùuGa=l‡)¥-¡”Ç—ÿ ¿·Ó!'„×zíét‡”>\ÈÂ2úHžeøÏ}9±Â/EÜ Ñ‹<?}d
-µ«óÕödéÿ”(x@endstream
-endobj
-1269 0 obj <<
-/Type /Page
-/Contents 1270 0 R
-/Resources 1268 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1258 0 R
-/Annots [ 1273 0 R 1276 0 R ]
->> endobj
-1273 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [339.2005 543.9652 400.4005 555.8654]
-/Subtype /Link
-/A << /S /GoTo /D (zone_statement_grammar) >>
->> endobj
-1276 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [455.0966 345.7585 511.2325 357.8182]
-/Subtype /Link
-/A << /S /GoTo /D (address_match_lists) >>
->> endobj
-1271 0 obj <<
-/D [1269 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-354 0 obj <<
-/D [1269 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1272 0 obj <<
-/D [1269 0 R /XYZ 56.6929 749.7875 null]
->> endobj
-358 0 obj <<
-/D [1269 0 R /XYZ 56.6929 528.8451 null]
->> endobj
-1274 0 obj <<
-/D [1269 0 R /XYZ 56.6929 505.7912 null]
->> endobj
-362 0 obj <<
-/D [1269 0 R /XYZ 56.6929 390.6092 null]
->> endobj
-1275 0 obj <<
-/D [1269 0 R /XYZ 56.6929 367.7147 null]
->> endobj
-1268 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F63 1038 0 R /F62 1035 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1280 0 obj <<
-/Length 3067
-/Filter /FlateDecode
->>
-stream
-xÚµZKsã6¾ûWè¶rÕˆÁDå4Éx§6NâxOI´D[¬H¤#Rv¼[ûß·@ð!y’©W ›&Ð
-þÅ*n1Á9zË|,;ßZ·/åÁ÷à¾köøæ`a 7]W%·>nê~9QÑY¦Kå}°a `àƒã2Žc†ÎL9¶ Þ«Ñ–ŽpδžÑFñŒ(©ÊÊõñÐVóžBTNÌh8oG@U8Œk½¸àËF>¼Tíl("Ân®ÅÌÐRgZPþw‡†…e
-ÌÑäaa1§š2¿If†üD°<L׬‹]]ví—ø‘{·ÐúrF}°Çœ¨ >ôO‡ñÌNdâJÐ)ŒK-&ÔCu©Q/uÆRƒÔ¬¥ú
-D¡©|TÔrë™R†ÆÊbPD ËÛꂊkƒà©CæØP¡ÙªÍ÷ ó°qÄ
-:±ÍÚô %9=à„&@úÔ82Òäskß°É<]„dç‘J†B”ê±p|ÚÝ´PJfÎ¥f†–‹P qÁ†ã²‹¼Ï.tðÚ–½¶{ ^Û
-¹=
-èþ«ëÝÄÈ(èô8‚¼ª[‹g׿^[N°Â(„$ %5·› º±ñðènÔDùUúÁ5Ó~jʵ=CmtÆ'Ú(’å,×m&ÈRoé
-ÇT
-ºÍuˆôK!¥ñ8ùMùä«OpJþt”ŒECV7
-™ÓbˆƒMB5TŸ6v{áíÔÏ`áEfö2Û TH¼¶óÙwæú …Bãâ|KT–3£ƒRVq9ÉZã庩êÿèQjendstream
-endobj
-1279 0 obj <<
-/Type /Page
-/Contents 1280 0 R
-/Resources 1278 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1258 0 R
-/Annots [ 1282 0 R 1283 0 R ]
->> endobj
-1282 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [213.0783 355.5045 261.825 366.2889]
-/Subtype /Link
-/A << /S /GoTo /D (dynamic_update_security) >>
->> endobj
-1283 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [398.1622 226.3122 446.9089 238.3719]
-/Subtype /Link
-/A << /S /GoTo /D (dynamic_update_security) >>
->> endobj
-1281 0 obj <<
-/D [1279 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1278 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F63 1038 0 R /F62 1035 0 R /F48 925 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1287 0 obj <<
-/Length 2716
-/Filter /FlateDecode
->>
-stream
-xÚ­]sÛ¸ñÝ¿B}ªÜ €
-߸×è+jAZ˜ž¬ê2 ¤>mçóù¶¨ë¡¹Ja™¶ÂNLš‚I8ñƒM™³ÖŽ›kÒRLº$½-öø“©`Úðl¿3²¹Î›Ùâ€I2®3ù™Œ¿Ä¤kWpê=&ñ4G2•̡˓Â1 è”|);ŽÉØqD†º¤#Îa¨—°iš¥ºos=gÓ½zô6/·Oô$ÃY8wt<{ û!nlJ^ÐéVF£eXVVÐq³WCd-éœù lìêbîÝCˆ0Ìáy¡4w«f¹Yº'g0r/q¡”Yc#fÝäM±.Ê&*ˆÐÓVû¢Ú¸ø3_¯F)±€Ñ•{|ïÙI2ˆšÿ¡‡f3̾¥·ÿ¾m%îœß`%iG"•ªGí/B³d*ƒ·×"ëÑ Ïð¦eæw
-Çx¦dL²1±Ì2"SþTйt>¤©â•p÷€^~Åû±NFKj1
-q;ÍÃD[õv6†e\¹ç+aÀ¥¥Í&¼5 ”oMÂ-ŤKò0 ã˜Ïßï|´RH±R|?&[Š_`pXÊ…ë3y¬RÐÌ™,‡W»§Ó¯$! *)^ìzP ›žëaPYp´Žè`óª¦Aa@·§XÐGÉK6ù²*¹$e¦€dß?êjöÙ‡[iƒWCðν½F­OÓk?ÎË`«ÒL—V`F¤("¦±»°á"«60JN¯õ¨kMãEèeµ»|}º ˜»¡½Ô":‰,aùô7®yëe3±O„áùÁgCx³ª„Õëš ^-
-誼U@·³·
-_ÕÓäÜš>7¹éÆ7! ½”»õm(t¿J¹¸2äûÚ? ÷»} H@÷¾èï¿YB~Ÿl· ´Ê
-® ØS#NúV0`¨QC·‘“ü¡Zο¤G‡G­Ç•
-á™3}²­ºÀ©D—¯Ð8™HÓ~ÕkQìfùP¬¢1ÒNaÝÁMth!ïrhôíæ¸ž Î-ÄËò~q…Ûg$“Ú¨zG“¥ncg¯‘ Ÿ¡ÞŒõˆ™™¤/}ô¸§ÞmŸM'J4: k MJ½|“x\‰ön ŠckY…—’&ë.¢x‚zR?_6²§$Sø—OOãN=Ç:ÂÚs7öß ©þab䟼Ýü›ÿ—±ÿÓ
-¯µû{á~ê2Ê ˜BƵ:à<þãõÿ=õæúendstream
-endobj
-1286 0 obj <<
-/Type /Page
-/Contents 1287 0 R
-/Resources 1285 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1258 0 R
->> endobj
-1288 0 obj <<
-/D [1286 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-366 0 obj <<
-/D [1286 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1289 0 obj <<
-/D [1286 0 R /XYZ 56.6929 752.4136 null]
->> endobj
-370 0 obj <<
-/D [1286 0 R /XYZ 56.6929 255.1849 null]
->> endobj
-1290 0 obj <<
-/D [1286 0 R /XYZ 56.6929 230.3064 null]
->> endobj
-1285 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1293 0 obj <<
-/Length 2735
-/Filter /FlateDecode
->>
-stream
-xÚµY_oÛHϧðÛÉÀzvþKÚ>uÛ´—ÅmÚ˦À»û KãD¨-¹–œlîpßýÈáH–\9i›D#‡Ãá?’²˜qø³Ä0®R=‹SÍ f–oÎøìæÞž‰À³è˜C®Ÿ¯Ï~|£âYÊR+íìz5•0ž$bv]ü½úûË÷×çWó…4<²l¾0–G?_\¾&JJWï.ß\¼ýpõrëèúâÝ%‘¯Îßœ__¾:Ÿ/Db¬—A‰o.þqN£·W/ýõåÕüÏë_Îίû³ Ï+¸Âƒ|:ûýO>+àØ¿œq¦ÒÄÌîá…3‘¦r¶9ÓF1£•ê(ë³ßÎþÙ Ìú¥Sö3*a&‘ñ„¥š2 I™U0…¼Xá€S 8SfD‚ò‘c߸Å^ì‹íb[ïÚ&ð$ƒvBv êÝ„H!™q:”i¿BfÙ€Ýí«fëòòÎ¥+~˜ØÇZ¦«Ã²*Û¸bB¸R,Q6 \÷åzMâó[—ġʑÚ[GƒzëvY[V74ß<4­ÛÐÔv7IT/p§P$܇2³…,5FúMîÊÂÁ!”2Q†Ý­ºÙe›‹seÕº¹ˆv«,wDikzzn×îJ˜vwÝämxu`fó·°IáVÙ~݆µȇeô¶‚ò·½u‚£lM>4º†×³Ùç·AñÊŸO†*}%„‹¿ª˜ï²r-×nêšRÃLlÍÓ×ËD¯ ¶
-ØAAkcü—uë~š/´´Ñ&ûˆ~Åcpº|K‚kÂÀoØÐxhÍ~…¬Çyéªvý@ôuæE܉ä©Èïòý®læBˆüS':zISV;tµÀ\þÛus[Waﺢç]¶+ë} n³Å”!&xuƒ.¡E´Ü£O¨4ºGGP¨`h°Fµ‘LçÎëͶ#Ž2¬ÈëªÍÊŠ^²–&×.k¼°*Ñ4 w… pÀñ@^–DM£zE³`0ÂŽí0
-†G±þNÂ6릦Q{ [ŽÎGžJ#:CÐ
-6©
-AÃ
-¶—ÿ—#z UŒªº¥Äs}?Yó&pv­žYÉm<:{E%Œß¯½­÷ÝNô CtÛowåàœ÷1@TŒQ$SÑ‚ó!­Àpíš0—¯h„E€Ï ÂW|þÀXñQcSFŒ=TÒüXI¨üª|½/+°’%j)(Æ•;Í`’ó ^b¹Úº¼uæ3šm\KSx§Hø´w»"y ƒ
-†šf´ú‹€ŠD­ûúÒZÙ`WÚa&¹Î
-h‰2âC)©¡èÏŠbç{ ѨñоQ¡gŸqì(Ô”†,’¦ƒ”]#(=Ì%Ëݲ¡F`\©´>*iüvA*£‘²š+î{|YB—N£¯ßg¨N±:,1ÐBŽÒùõ«÷بëN7(X ÉÀãúmb‰Júžñð†Æ¬Ò!¾954WW>g%ôsR¼.H8Þ{E«Nè@’×÷Șá!˜ó¦JXü®î›)ÿqÄp16ÀÛ “:Û‚Èý > TÆÌ‚Z³a(</º0ŽMjÓÙâðÛÛ³c¼ÖZpÖï!+¶ÌÆà{_~ÒnÅ)Iáf’X?#¦eOÎÚ c¿?Œ %?#ÐFZAÙâ·Úש‚•ð\ úox8p¢hG”¢vßWð8 6¦‹;Oqmøš‡/XžJ%-íоôP/tå}SçññŸkC”žŠÁ%?Ïmþ/b,ÿš¬•xïŒÏþYýàò:f*Iät-¡¸e zºWôµÂ˜cËö¿¿®êÿÍÂENendstream
-endobj
-1292 0 obj <<
-/Type /Page
-/Contents 1293 0 R
-/Resources 1291 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1295 0 R
->> endobj
-1294 0 obj <<
-/D [1292 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1291 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F41 910 0 R /F62 1035 0 R /F63 1038 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1298 0 obj <<
-/Length 3388
-/Filter /FlateDecode
->>
-stream
-xÚÝZÝoã6Ï_á·Ê@ÍòCäã¶›í¥¸f{»>wm[‰…µ%×’7Mÿú›á eI–½Ûë"šr†œß|p(5“ð§fI*R§Ý,s±H¤Jf«Ýœ=Á»ooÓ,Ñ¢Oõõòæ«7&›9áRΖ½¹¬ÖªÙrýS”
--æ0ƒŒ¾y{ÿæîÛ¾{5Ïâhy÷ö~¾Ð‰ŒÞÜýý–Zß¾{õý÷¯ÞÍÊ&*úæo¯~XÞ¾£W)ÏñõÝýkêqô¸0é»Û7·ïnÿ²üîævÙ­¥¿^% .ä×›Ÿ~‘³5,û»)Œ³Éì~H¡œÓ³ÝMœ‘ÄÆ„žíÍû›töÞú¡Sû×Ñ€lÂÈD}[¥…sI<ÍV‚2”HS_ž‹ÆI˜‹›aÄpª“zS—‰Äœ´«ÍL)á’D£zS-L¦ÒY–$ ò”Ô{ì)HÒX!¡’0‹Á=ÅÛù"UÑþëèL0§Ìt’)aFγ_gJÈØ9C4½¶_éi|ÇWw;={]Ãzf½%…y½‰ý’RÝ,àˆ;4lšzyß`(³Q¾mjZ]jzƒb«ÜÓêÚC^5s%£â0×2Z4õÑ7Ví3Ì@ý1ð¡±yµž˜_9al˜¾ªÛòñåú¤°V'Ak4BŒ·8NÐÖÙYO»/ˆÌÄ¥
-6í<ŒJE~CJý»®
-r˹R*ò
-*M¨a:é 2ŽUæ'"çbÒ4Úä 5vÅj“We³ãßeEÏý6]øf[ã3‹óU9WѶl󶠮߽(ž¨“ÂÿDÍûFS´ÔØ–»²å·53i7<:ßÕÇŠ ëGPçkâÒnò‡Ëé̵ƒ¦ç‰»Á"càÓ3ÀFóÒ´Å|¬ /Cïc½ÝÖÏeõÄ£ömYW<[¾ßo_x–šž¿wßq>c¢Xd:KÀýÊŒìò<Ü0Ñ¢Ou •·)0ÚY͘·’à·b0÷«Ì;ª î3/wÆýuñ³”º*P‘<>²èi[?ä[êÚ–MK-¯Hx{÷¯×‡¹²QÑ44>cUù® VS>Š4+žÆÒHþ~Ë4EÅ÷o—woþEípÈŸ
-o`
-Î Ûsãv‘.oOQjèÖÅc~Ü2AÙŒ‚c±Û·êX\hý,Yqà þÛ¸nŒ«œ<[ôêr4”CRk? {TW¢a Â½Úå¿-B0Fõ.ÚrW,Êê,4&²Ûër0Í„¸ª“T™¡wÕd0è¾m¢´úY‘5à¤mt¬*Ÿpàëm]=ù„¤†…–*ÐÚåÕ Ü•Õ±-¸›„­‡À§8ìÊ*3 +$|LU`{ëÏB…Ò’X4hjn UoHÛÃé@åóí±ά-³Í_z³ÆÒŒ8^ER ‰±µtÀ¼Œ¤>Õe$uT“H*×ÛI$Å™°C]—¤£šeˆ&-2§ìP–šT‡&5D“Bt| $A-Ÿ{/{ý|õú|BuÈR²T‚›I=ƒ ~3¸ƒKÀ¥ Æiýß‚+½„-uÂÖÿZp0Í$Õ®@«GuZ겓ªí¹—J…RN]¥£še€-€“¡0o-ƒ ³Žâ˜•öSð³ïªð÷@ÂÞÊS{oE­K¦|«So/áQØpHPN$Rº¿¨·2Y&g­«êS]†TGuÙ[MB
-’åØ}B”ŽjB–¡»²Â9æ)#¤Œ”%ÕÉ_AÛû+xNø+èý• Ø¢±Þ_IÂÖ1ÄoØ_I‚—Å[Â
-À•ÏÖ‹C™o¿‹ÃË‟1° îçu˜f‚ÿ
-ÑHÝÒ Š¼ÐàZ¾Ã/,³$Ü)À{GuMü¬¯sxrv(ží†ù…Uãûz²ö7ˆ¬ž7àÌ7xGާªæTâäk&ê9T뺲Òç¨VITËîç®Âš&ù=ME¾» å%eìîbtwàë¨J;8Ye£D¸+Ñœ–‹W+T‰ò&d1T£_ÓÏcÓ]p\ØÌB.g“?æ³8³£ ¹àNà¨K“Ÿ(þô©.»“Žªÿã³½Çú°ËÏÓ_À@c® ÑQMH1ÌT¤H³8ŠA÷qÊ%ý„®0 `ãß“®°ÅJñƒžkj¬!û€•ð‚:RZXóåTì2™°.Ñ äX€
-®+C²ƒ•Ò!Š—Ó°sà/;.èrŒ;%’ÔžùØÄrXË|B=á Û=¥„IÖ%Kž ¦çºðÓŠÉÉ8=5ËCŒø º\Óõ߸L®P)¶§ÞiêÉø‚ゾ )ÖøýMC¢ñËB
-B½¾O=\¦^Ÿ `/»Áš®xü]n×®‰hHØzz·žZ“ûùãÏD†±ê*àû|õe÷—ÎÀџ樎ß1˜xtq.»VÙøŠ‹:s~îë¦)¶L
-XÍïéÁ{$&q¨…µêsQo…TÝ%HÉÜwõ);Í¢ÂÛ±/’—|¤Môà(ª+nVsÜïë^ÿQ,H% (Q£k:`§mÞB8ÞúC1&úÏô’ϾI§¼Ñ1Ÿ;°ß+A†4{œ§éB9¼³â7&¦*¤ì½‹… uÖÕsÞ»p„CÆ´©çÀWĶ¿Å¬z㦌bjûÒvÐêìRòžÔ|9¬¥éíªû‡O†Q—R_®¨ÑÔÜõã<I
-šÇ}ï²;ú>T+îôÊÀìš¡é?¡@§ ”>,ø­àKaÈùðŽetÇnÍ×Ù¦ÊÓr‹Ñ.};5ù%Ô¶^…«ÜðQÔ…/HM"ð“Î øÊnÿÿô×¥§ãâLk/|Œ¤áŒ[˜„…Â-IÒs£—h.zBôÿ
-endstream
-endobj
-1297 0 obj <<
-/Type /Page
-/Contents 1298 0 R
-/Resources 1296 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1295 0 R
->> endobj
-1299 0 obj <<
-/D [1297 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-374 0 obj <<
-/D [1297 0 R /XYZ 56.6929 676.1712 null]
->> endobj
-1046 0 obj <<
-/D [1297 0 R /XYZ 56.6929 654.351 null]
->> endobj
-1296 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F62 1035 0 R /F63 1038 0 R /F21 690 0 R /F41 910 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1302 0 obj <<
-/Length 3120
-/Filter /FlateDecode
->>
-stream
-xÚÅZKsã6¾ûWè¶TÕˆÁàq2ñdÚ™8‡Ý$J¢lV$RI;ίßn4@“%{j²µå*&Ðh|ý¤øŒÁŸ92™©™ÍTª׳ÕîŠÍî`îû+h‘h1¤úööê›÷Òβ43ÂÌn7ƒµ\Êœã³ÛõÏÉ»¿¿ýt{ýy¾š%&/´aÉ·7¾£‘Œï>~xóýOŸßέJno>~ áÏ×ï¯?_xw=_p§9¼/Â
-g^xókj}ÿùí?ÿùöóü×Û®®oû³ Ï˙ăü~õó¯l¶†cÿpÅR™9={„Ky–‰ÙîJi™j%eÙ^ýxõ¯~ÁÁ¬uJ~J»T ef ¶
-„6)e–2 R[XÅR«­ë¥,ø””#J¹=äU³)Í¢îÚã3s%S®˜› >Ù¾§šØ_öçÊ¥\1fàö¾˜/Ï’]þG¹ëvÔ©ºÝ²8@[°¤ÞÐ0¸¬»jM½?ë*¼ØÈÛû¼¥‰U^Qc(s—tUUVwDºª«Uw8̹KŠªÝ>Í9çIŠR˜-$0k€ãñ4Óš0ù¿)¢$nJ=Zâ÷®hÚ†FÊŠžÅ«¢ cxÿî}Xd[îÊ–šåvK­e1\sÓ5Å +9#QáÔºØäÝ6¼ùo»0^6Èû7ïÕðÚ%@‡e\Àeá8#šñÕø3F’ôû`&³if%¿ŒÂ!ÕyöTcî îEÕœ€Q›ÔºÌ\梧š`ctbÃSkY6æƒ$ ¢îÁˆFÁ2ºCŽ÷°ˆÂ"¶Xô]E|Ïc‡–ò{£÷ˆQCÍS'Tq(<Ÿÿ^üe,ÉéqW>5iÙ]ÝÔ¯ò]h5Åáζ/EÈ‘³!¨²gPeg@%”J­á6 FL`JƒX­é!µP’%7ÕŠXË›pÀ#th‚´²ðÖ9XídUj¤‹¼ìò§pÔ}Q¬£2³T;{$ÅnzÅI%x'´Ñ]Q­
-šÅÇÉf›?„!¼ïæ ´…M–`6ý`Ù]¾mjñœàPù|ìb´%O¶u¾&¢º:âfx‰8A—èY\â© ÙØf½Vˆ:Õôr D鄇«t2©”ë5" ÇëðÌi:.8£Wá’›Ð|"²Î_»ÂcžòHOµ4ò
-¨IÈR‚¾0«ÐYÞM)Ž•Q!MRnˆâ. +
-¨AÈÊÎT :žy}HQ4p)¢¨?Î!öHná¿H®OD‹Jð|3¥LÊDí°ùì÷ Ie>àc£¶?í³üÀ77;1û®†3͆NJ+/†Kûs#8¢cÀ‰si=Ó?Ö[4¬ ^yL–ˆT§œšÞb£4ÛÒÇÁ0²®‹@ÞÎ7šn¿GõT€ž0R´-itÈ^ã(©í
-²_ƒñöð¢¿;‰¥&cr¶x.l}²!›Kqrªèà”ç#k¸XÆS°(âr`ÝS1d‹s‚J2°Úp‡ÓØ:RM02*?€]´JqÒxÊס•O¹gmR.2þE†\´s*&Éož«SûPGúó¤¶ÊVÕ…9p&àÖvⱘÐaâTs6+’àÎÌå¬hHuþòz*
-MÚÅk2#<>àã"‘h‚ñÝã–`|FŒ¼Ewl-2TªÜGXÖ ê„89Œí±q >Iáœ\4ŒlKiתšÊ”9¨™±îK½±‘ñ•M^n›Àtµžr³
-û?p’Ã¥/8IçÜ’`b'KžÐëÔuÖXc<ø?†™=&“Ø"äCÃë "! ʃ“
-SL%HÝ0´ñ»d>MD6±í……u±/ª0Øíë*Ö4ÂV#¼‹a
-*dp ÃMNÝR š`eä–ÆcVŽyA·$,º%ì>_AoTr²œÒk3hPh`Yï–°=í–ƒ>>/†#î‚4H‰±kòŒO»&°”–Ùk"­P`“°j¬‚„c6Àö±¾¨|É5Å …[Àc/Ô{‡TçQÔSZ ËÑ ^½«¿ÈLO5ÁÍHàM93fç'¬®ƒ© pÙRÎ !岤š®Ã˜5ÿåIS f0oÂ’}¨ ãƒZͶTÊqnX ÄñzªÌZc´Gf½ª§¾~*ô_±P
-¶T}×W±5]bä
-¢ç¬/\¾†`2ݰð‹kûÂ/6ú/ÆZ…/ ®òË0”–c[µ ÁذðëûX)Exã
-¯§9Œg¨*, Õ µ_>ÑsPû¥E'Ü:¸®•y½8XÆN>šÒú}}7$¾SŸh¥…LIó1Š^U }E¡÷U㿪ÐÛW-tŠ?öš°¬O¿ú7eÏ?¸S6…øLõ Ò#ˆ’  Láyµ=æ\£ŽC05Áúþ%ØÞendstream
-endobj
-1301 0 obj <<
-/Type /Page
-/Contents 1302 0 R
-/Resources 1300 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1295 0 R
->> endobj
-1303 0 obj <<
-/D [1301 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1300 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F62 1035 0 R /F63 1038 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1306 0 obj <<
-/Length 3230
-/Filter /FlateDecode
->>
-stream
-xÚ¥ZÝsÛF÷_¡·“g*v¿¹{yJ'—Nëä÷©×J¢mN$R)»êÍýï,vù%ÊN&íL¸\bìøX™ÏüÏgÚ$Æ 7KJ4ãz¶Ú^°Ù=|{ÁÍ"-úT?Ý^üøN¦3—8#Ììö®ÇË&ÌZ>»]ÿ>7‰H.›¿ùxýîÃûßn^_¦j~ûáãõåBh6÷á—+½¿yý믯o.Üj>ó¯×Ÿn¯nè“ <~úpý–f=Î0½¹zwusuýæêòÛŸ/®nÛ½ô÷Ë™Äüyñûl¶†mÿ|Á鬞=Á K¸sb¶½PZ&ZIg6Ÿ/þÝ2ì}õK§ÎO ›iÒÙBÂqõ5R¥õ‡h§¥2°ì$…ƒ?Ë‹Ö1à†qÅÕÂòD;§g ƒ#£\k]!gœ'Nkæµi"R l”NK…7ï5°§t¸–#!g‰–Bw¤øx¹0|~ ÿŠù‰9¬I˜b–2–ØTr=ûsƦœ“DÔû½vgà'~ü°³·ìhÖßT`¼èsö›2¢ç²\H°Œ’³”‹ÄJë¼ÊŸ«M¶7Ôó¢¾›¹¹HtÂi˜•käfSä{šYWy /«†õa·«à³bó8“7MQÞÓKó‡Ùê°_…q¶^ïó:pº»”lààÐê­=@ÍÛ7ŸÀÛS ‹W—‚Í¿à?yS_‚RÉø¤•q‰°ÎÎúVþ>Ç‘àÆA-:ßÿ>·^—X›Ò•8®Òi8âIʹ‡…hš§Ãò 8j©ðÌÀ0ÅÝqAǽx4ãcâÜE«YŸõ‰‘hBÙw.©Á§´jðKñ%AÓ×VÀ¦3Ù©š½‹ÔÎVÈHýÞòÐÐ ÛíÀ)kzi*zKoÁ½²ûHQçe3¤ýð N†X/^r;‡yLè½à†Ãæ¤ñà¦ÒÔµ°ÏMb!BcóßÞ~"~Ÿª}õKQƒ«·°”Zz¨Á0jqXï:D3Ú~š&Ê@°ÆíŸª¥k¬ÙcU¬_â άW_ËÓki¾IË…ÖWj¤ïóÜ­KRÇLXRïò™WšyF œ0Žô¼º£°«òG¶Ò‰sLED¡dí±M@¸`9˜"=ü°yÈ=› Ñ-sšs <öðé±IºOY`„þ޵ʉ¢'ã..oˆN ¥€drþ9ÏO0NÉ$E¬×€qŠQ\ÒÇý}È7ý¼éý§|Ê×g‰|ÕUIÊ?Á ÉN^ Tš@´@õ‚"Ò4€¹RÆÑ–U ü‡ê)2æ¿Y±É–›ð¿P\ÓË:oòý¶(ó5ž.‡ªÌ?|Éÿʶ»M æ©hFîªÍ¦zò _WUùÆÄýaŸùÓñŽ«ú¾áŽøé`g“´0
-Z¥È
-,u©þf£ ‚|xµÌ;HRkF5ß‹†Ž±­þ]WÀÐã><»}©ÞÆ5ÕÉ(úÖw4£¿J—pfw GUª*|
-x_±Éë±ÐŠ~†š?#4Òœ
-]e)+Í@h¨gÓ~+˜ÎËÃvIåe~
-endobj
-1305 0 obj <<
-/Type /Page
-/Contents 1306 0 R
-/Resources 1304 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1295 0 R
-/Annots [ 1309 0 R 1311 0 R ]
->> endobj
-1309 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [442.7768 577.5961 511.2325 589.6557]
-/Subtype /Link
-/A << /S /GoTo /D (query_address) >>
->> endobj
-1311 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [361.118 302.4726 409.8647 314.5322]
-/Subtype /Link
-/A << /S /GoTo /D (configuration_file_elements) >>
->> endobj
-1307 0 obj <<
-/D [1305 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-378 0 obj <<
-/D [1305 0 R /XYZ 56.6929 635.9015 null]
->> endobj
-1308 0 obj <<
-/D [1305 0 R /XYZ 56.6929 612.1148 null]
->> endobj
-382 0 obj <<
-/D [1305 0 R /XYZ 56.6929 384.6884 null]
->> endobj
-1310 0 obj <<
-/D [1305 0 R /XYZ 56.6929 358.431 null]
->> endobj
-1304 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F62 1035 0 R /F21 690 0 R /F41 910 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1314 0 obj <<
-/Length 3180
-/Filter /FlateDecode
->>
-stream
-xÚ¥Z_s㸠ϧð[™³*’úCMŸö¶Ùknn÷¶Ù´}¸Þ-Ó±º²ä³ädsŸ¾
-÷¡ìÐÞ
-qÀ•]›CÝ3>98&C‰8»B˜?4.àÁzϽ„zÈmK^„6X”i~ÚC©ËÐR8ã¦íúE×ÃVt°ÝPuŽî"RÉëJ© -FèÎ1KJ²±÷x~™ön.ËçM"—séH„Žˆà
-”ëÎÎRÁ\B^yU… 5¡ÃØ['QÅX‰
-ŒÖšê(ÎS1Ö€îü‰fâpïÞ¶<VìpÐGBˆëw€žsxHpÂî+
-b¯Ìd´Ã‘$1–2S?%—Ú]î@åêtpÎ3_<A¾ƒ°¤¦6ÌÃ:‰•¼0væÒ)t¯®(â=0bW’7à“)`ÏÐ&PNÙ±c(²=ŒKpmYÞ@¢ÙOUC©+HôR®&‹Æ±†lé
-U”‰äº
-^hB…qÖQZ¤j¬_BŠÁð¸;À-é͸𠢇í_ÚýW’ K >̺‰ºÛ¤Š!¬¾†6½çÁ nõg±M FUG*ÍN`P%ŠÌÙ'þ"ªð÷8’„Òm„–‡DjƒÃÏѼñ—Ì©yÆeóƱѼ±Ç™7hÞ8¼3opO.ž†ÄÜxÙ&ÊÇ·ß¶Á@) oÆŽùâê HÑ™i÷·x¹x:àk¿ QÅñuvá·n ß­¥ž¿[»ËÈh$Ô ïÎq<àyÓÁɃnKûTñL|+œÂ)o•ri¸mÐ{‡R Å`Rh¢±/5“«ª+Ûg{|[^°§ŽÚx4ü¾÷\­H*AÍyŒ£¿Äþ9ˆiùz,O„ ­!EÓ¾ìÆ ðãˆáeG ?9´–ïø¡½Y:©®ow¾š‹3…äåøô~\7ÿ­Gï3ÿ0ñD¾gx1—jÀþbŸFøG=îþó*þï¿:þaUÁWë 7}g‘†‹žW
-w/-N5dt®ú@eŠßendstream
-endobj
-1313 0 obj <<
-/Type /Page
-/Contents 1314 0 R
-/Resources 1312 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1295 0 R
-/Annots [ 1317 0 R ]
->> endobj
-1317 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [375.4723 642.7661 432.5882 654.8258]
-/Subtype /Link
-/A << /S /GoTo /D (journal) >>
->> endobj
-1315 0 obj <<
-/D [1313 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-386 0 obj <<
-/D [1313 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1316 0 obj <<
-/D [1313 0 R /XYZ 85.0394 751.8451 null]
->> endobj
-390 0 obj <<
-/D [1313 0 R /XYZ 85.0394 316.9844 null]
->> endobj
-1318 0 obj <<
-/D [1313 0 R /XYZ 85.0394 290.1459 null]
->> endobj
-1312 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1321 0 obj <<
-/Length 2861
-/Filter /FlateDecode
->>
-stream
-xÚ­]oÛ8ò=¿Â÷t
-P©üE¢OÙ6íf±›î¥9ÜÃî>(¶’•¥Ô’/ ÷ßo†CÊ´-;-R­Èáp8ηËg þðY®3m…Ve9ãùl¾<a³;XûpÂ=NÒë§ë“×ïe1³™ÕBÏ®o#Z&cÆðÙõâDg";
-,yûñòýŇ_*¹¾øxyšŠœ%ï/~=§Ñ‡«³ß~;»:M¹Éyòöç³ß¯Ï¯hI{?]\¾#ˆ¥Ï¢WçïϯÎ/ßžŸþuýËÉùõx—ø¾œI¼È—“?þb³\û—–IkòÙ#LXÆ­³å‰Êe–+)¤9ùtò¯‘`´ê¶NÉOå&Ë…Ò³TªÌÀùÓRæYÁ9 ¹Í´r”²àSRX(å~(‡ºêyŸÖíP­þ[6»7çp¶6VÏbò{LŒX\Ȉ .aµ`;l\–Ëê4•Ì$=ðP­üxdçEòX7 ­Üx즻»«4®`ß2¿sons°0Àç‘ï°ixÆ´ÌýžeÝ®‡ª]RF&×÷þôEu[®›·Ã
-žÙ<ngÝ{=d°YrF›²,¿ÖËõ’&ÀÄÚÃÃaè»(Ÿ<äO–3Ť`ž
-ޝ[d¢0@†‰ŒkC)A®wšÃ²\
-å•àãiªyr ÿŠdÏ=Yp 3 ˤ´xòìË ´HY+ )»«nDà
-”á-}½“„‘Ý{y¥m&Œ5³X¶/{. ï -øÒtã_¦LÛ ­|Æj–g…Åp¸Î¸€8ÂXê)ç<é:°…§ š+t¦˜¢íghB
-w ÷èÀÉp_·w=o*¸ú².0IÑêñ¾jrE˜Á"p~ßu}åI”ôi³ÄÕ &w¶Ž°/ktƒt»:å&é–Ñn‘4`øžÑ[‚8zèÃØ¶ï"ê=0*-OjØ%AõÑêV ‰o\éÚ*@J\c=/›æ‰–æ ^lëè«æÜ™VƹÊ}w ÓÚÛäpøy”ʘ°6òúNçýy§ Ï•ç®l'ÎåTº \¤äæÄ/ž*ˆŠ’•Ūêû gÉ ³<Ï3¥
-ý-ú-2{T»Á4¦¸¯Ýn^lNu¬æ÷{‹LJi~ƒ#Åg8ä>Œ·˜tš¹ÿ¼È
-)xxˆý,¼½2½‡ a ¿U§ýC5¯Ë†&å“3lL žœ— ·
-Åó&šÃýû-œjhHˆÅVéoʾ![Ì ½VGK9Á¿·”Ã;™ÄØ9‚÷€T!?PÉixï‚kH
-E_þ#J9 É
-¨ 6_ $?ª” „Ó˜ò~)gMV`A@%ÜËQ…Ü­ôVjñI± o‘xgØË*(ªâ·í~Hq½ÖËÞ5-·Ú~Omx\;c•³:?^
-¡ÍíVm(Cm,º‡Äeù>UƳå"Q*ññû¡k{¡bWJš¾»üDs_ÙápY>Ñâ¶Ññ
-7‡ç$¨¿°3‘*à}nÖHA±QU4&ËW¸°ÉóàˆV+à#íVžðŽÊä,PRí—°H¾nw­Pp•±ÍgBœ5̵ŠhquçÓUÔ²ñÓxÃ~ËvŸ.²ó©š{7ÌûP{<ØÂ@ñ{Íãë9Nö¨yñ£ «½Có¦%¶!mÂÕnáñ òX7‹¯\­Êö.zC7@u¢”N€«cà]vªtP´=PîÐ=¬jx-L1
-íû!¸^÷T$ëžÌ
-÷¸ ›d¾òôÈM‡\.®Ó°­Q¥Šøu…ˆÛÜyb>¡ß=
-³l(G~†ÄÐW&¯¦Ì—B,¥3EÄ‚í 4wfƒêJ•Ú/¹$·‡*Çáw>ÇšΤ¨ý“1q·öɲÇlò×(sˆòøÄʇ1ø±,3
-LÅ%á«À›ç½8nœ°mº)¨3߇j…^‘rhj5£C¶]ìœ:ékv\ë<­™îðÏžfÑ« Wgê>luò1AM¿¬kë)R# ħ<ß࣊nÓØP¥U¡tC6ûäÖng&;?º€ËPÁÍQrßÇá¯&Üè‰6£_<œ?ÅÉM¥‹MÏ÷ï›îßqi2ƒ½àÐÀ›ìÑ¡GRˆ™³–\¾¸6L#ŠûY”™
-P{…Bn BÑØËæ/ïzé†àDç<‡š¶È‹pêáæ¾) æ÷÷£Ø ô޳gYf„‘1{‡œ†Áß)ƒã§¾ýŠ„éÊŠ
-­endstream
-endobj
-1320 0 obj <<
-/Type /Page
-/Contents 1321 0 R
-/Resources 1319 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1295 0 R
-/Annots [ 1325 0 R 1326 0 R ]
->> endobj
-1325 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [213.6732 152.1752 286.8984 164.2348]
-/Subtype /Link
-/A << /S /GoTo /D (rrset_ordering) >>
->> endobj
-1326 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [209.702 73.4705 283.4678 85.5301]
-/Subtype /Link
-/A << /S /GoTo /D (topology) >>
->> endobj
-1322 0 obj <<
-/D [1320 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-394 0 obj <<
-/D [1320 0 R /XYZ 56.6929 620.8907 null]
->> endobj
-1323 0 obj <<
-/D [1320 0 R /XYZ 56.6929 595.6369 null]
->> endobj
-398 0 obj <<
-/D [1320 0 R /XYZ 56.6929 221.4239 null]
->> endobj
-1324 0 obj <<
-/D [1320 0 R /XYZ 56.6929 198.6408 null]
->> endobj
-1319 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F62 1035 0 R /F41 910 0 R /F63 1038 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1329 0 obj <<
-/Length 2790
-/Filter /FlateDecode
->>
-stream
-xÚ½ZÝoÜ6÷_±èÓúÐeÄ/‰jžÜœ“ºhÖñápHò ïʶ­ä®´vŒ¢ÿûÍpH-¥¥?Pç†Á¯ÑpæÇáÌ\>KàÏŒf‰ÌÕ,ËÓ ×³åú ™]ÁØ»îhžhRýx~ðê­Ìf9ËS‘ÎÎ/^†%ÆðÙùêãüÍOG¿Ÿ.„Næ);\è4™ÿxrúOêÉ©xóþôíÉ»fj~~òþ”ºÏŽßŸŸ¾9>\p£9|/‡>x{òË1ÕÞýúëÑÙáçóŸŽÏ]B}y"Q‘?>~Nf+Pû烄ÉÜèÙ4Æó\ÌÖJK¦•”¾§>øpðûÀ0µŸÆðÓÒ0mDPÈ€:g©„!°X­6‡ÜÌË®ûþp!M:/(u>?ùÊÿ”$âë„äèÍ/TiŠuIµvCe…™7e×—+„ „á0B$LK­A/ˆ0ÅS*2ól'ó3,7ÆÄñ\ !K+”O*Å‘è1Zë¢_^ï ™ &Œ’ßPHÏñ)!3ÍD&ùXȺêz‡x¸ü\1 ÏàŸÍÝŠ]RY š­õí Uêò¶¬]µ:äsàkUGåòº\~¡å¡ÅÒ$Og ÎY®µ …½*ª¿Ã]Ó_—TéÚ­µª¥kVH(Ôè‹?¶å枪ۦ¯j÷´,¶Z9—í¶Y1+YÁÑ:³½opV°bŽ•P©ÄX$°…_8qøºpDeÙPÍÊS®p·¤j^?_èñø¢}Ñ—ë²é©¹l›sÓ7µ›¬mÊA§
-©a³cYÀ®„·Ð™piŒCÖÌ{·è à̃iæù^¨ž–æ˜8 n Ë¥Ç=n’3V;KsÉ„ñbgæ9.B–gÆÁé Àc {Øãª„)“CçDT’©,3cò·DnaÜUãÖ( –pá¼C[·W÷–0½6Ê»ðÁ81iáj~LmÃ:˜ ¹g™3u`›©ó)lÏ®«®44ì-¨X–…u¶³Y-m•tê‘[C¥£àÓ] CwU=!ZWMµÞ®csVŽ1îy?{û°ß€ º€XP»€H¬8ÁU3Æm6¨\¶uÝÞYŽÒdóòk±¾©KØåJH
-/ë#9VßL¾Í›)5Q¼·[LÆ¿who\‡˜´e üÿ3nâ…¸‰gã&ž‹›˜âÆÿ6nü†›|!nòÙ¸Éçâ&ŸÂM¼7ñ2Ü&¨ý ôx‚,To¬
-j¢’v:ßl(XW+úÁ+Å‚†—7êZiprF™Ä€sJìÓÐ bÓeÎÔ ¸†µ+{A5wÞíÚ¦¸ðtåuq[ÙôÊrt•ÞÏá‚V)cÍU¨«£ª |PN¢ôì¢ÝÃù fSR˜ù‰½ÖJÝS6ïªuUê´÷Ú §GÂC‹Î"Áðä
-,µÑ“øÚ“ôø{ít®Xξ:)΂4?£ã\ ÁpA^CÒQÏåu¹Ç«>û’ ‰Oqk3è¤Ã‹t·ˆ2ßñC‹=A"Í05ÍÒP %5,Ç–ÊÝ¡
-a¦JRDŒ×å•ÂÈaí µ‡®‚Љ
-ó.Ën’^AÍ$üzè®&àŠç d¼†08=ÖŠ‘:î6´òYœ“ s³¶÷_Ϻ=þfª–j–i©žLÕ¦éUàç’¨»~€xpp2éÁƒr_|¸á)ãàòlÚxvÖ•‰÷›UiϳQO%43:U–É¿éŽ.…³è¶î«Á99óhm¹êˆdw(úíÆÝ™hw÷A%–¼éîìÚá˜óKëâž:.O—ÛšúìÞMíñ^®¶á|Îß鹓©t~Ðú”TïüáTôˆQÝÔÅÒJ­$Hm§UÊq€®½KRc=zävQrÎÆ_wm6°‹Á ¯¦3±wESÞ”›ue7+²Ó¿è+»Ÿ€Âê å 倅øn$ì
-o'ž(TZØÛ¾™ÒÇ'”"c©’ù ´ÞµÖPž¾[µë‚çF>¬4×yþí8>¡¸´ûØì)þ]Lóœ“åcÍwA3¢=¾»›4ô ñÜ<šg>y/poéö
-W¨µoæø~NUÜÏîRz"6þÅV£X—Ä›á™=æ¾`¾4óÛþèô?q׿ÊÛ.s?è¸tWŠ­{æ¿‘nÊðIß<,[Êf-“L‰!˜=&[ú¸lþ%~¢¾~À‚óÉÏ ÆâŽwqß|tS=<1`)ÃùGìí 4ƒÜÔýzBØ}d˜è¤èz°“î þ¦ÂÅ#Î%“‰Ìb‡aøª.¯
-—³ßõ¶œô&"œ1,—Z>m”³|H«\ŠúÃC¿Q‚îÂÐ4 ÿƒøÅ¿_Úý¸Káòñ@‚‘¤”ˆ9¡lRϧ’?tÚý¿Ôgu0endstream
-endobj
-1328 0 obj <<
-/Type /Page
-/Contents 1329 0 R
-/Resources 1327 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1332 0 R
-/Annots [ 1331 0 R ]
->> endobj
-1331 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [353.6787 147.6933 427.332 159.7529]
-/Subtype /Link
-/A << /S /GoTo /D (the_sortlist_statement) >>
->> endobj
-1330 0 obj <<
-/D [1328 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-402 0 obj <<
-/D [1328 0 R /XYZ 85.0394 219.8215 null]
->> endobj
-995 0 obj <<
-/D [1328 0 R /XYZ 85.0394 191.315 null]
->> endobj
-1327 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F41 910 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1335 0 obj <<
-/Length 2551
-/Filter /FlateDecode
->>
-stream
-xÚÅYÝsÛ6÷_¡é5S¢ø">®OnjçÜi;W÷Ôô–è˜S‰TD*Ž{sÿû-°
-¿¬/~½øgǰ7ë—NéORFÏÄ,’Øÿs¶ÒMõhÛ¯[%¡³” b•§%Àux…!®#V)£–0ø¼BdDsf;¯à¬çŒeD=Ó#\Ã8¯xK)ÿX¬œu€\ôÈUFl–9Ý]±¬wsf’U†•4Éý[á^X‚ãv¿«€•Ÿ.+|¶$¬.vÝ÷ç#Fæ@ s¡ÉŸuU8YCã1Ö;™Ì4‘Ì™{šy™¶]UÜŸ}Ë(ñi¦Z)ó rMD&¤?ù.¯Võæ í—õÕ/#ûeÁ~ðlêM¤Áüø`Lö3Zïçe*:h]jb8Õ_À2®8©u¥AUR±Ohž°úÛòy¹.—ÿ3­çø»ˆë}µJqtim1Ž›<"b6ŒJÄ<YÖ•‹œw{e…³Oeûˆ£w"y˹„ª¨òûu‘ÔHw»¦hÝRÕÛ¶¬+d·CQ0 -ëͶ\;¦¢ºœ³dS|ëÞ¤Û«
-ßý®Ü‚:ʶÌ×øµ;gY½ÃéúaDwâà·§r½Æ›¼]>N©—9 VaÐl‹eéÎ6¶GGúgGû)Äé;ÕËõàû‡ÌöÿÈYLY" ¤!u¹²‚Ë~Š=Jµ\Á!¼à\Reü^b¢VQÂÑjãMs]ïPËÅÇ|³]ÃH“ý¸tÖ4ÈtÀAçŠi½óFQšüÛÛœib7CË/×yÓ ÕÍ->Ûçm£K|Tù&|øæ±nZ$!àÁßà÷Þ^ˆßOy|
-éÒIÁþóý¤
-$êýY:ð¾»ÙðÙ5œhÖ;Tdœö9ûC)ÞSÈ\ÃþR‚n(Ù ¸³d˜Ú•n´+ÖEîàɽ¸LížX¸‘Ÿ’ÒzßðêP}Çd’Ê•í¼xKГçœ&7Ë$ÑLª±7ã~«º‚ywuƒf¿Ý:htý~ñUŽ–9TÅ*BÄ 4©(†h bI¢lrïÄ{Æñªxp|rˆUÐÎ\—3L¬_æU`TàÓ\Žç:.B¶½J
-^ÚrS àË™‡gÇ|"1õK:Ü!í}PÚi¨7+|b,ÃÀMÊÇâ@ ‚m
-cÆc‚¼}³˜H¢€®1”Clˆ5Á hU¬ìư‚XÄløà°!ÔÍDÅ„$ÐqÆ"
-jȉý9%ú§X7Á© UBYíÛ¢Á­}²­V£Œ¼É?–›}¨w>äë}qN­ ·"ŠÃÌ´<Џ¬pG‹CNE
-|@Ü¥o¤¹ípvàдuh p®*ÞAÈ|”yÕ<;¬ÂFÚL¥rÝ›º÷±:Ç÷ †(Öy¥2.èWV8òAOlØa£œ‡„o¡l†$Ž×
-nf:a[Ãý%E¾…sàKYuóq¯¨8)#ò`µF©g «»€=VR&;àÄç(Çfœ”sk–(#uŒ4:j‚¨¡ºú½QÕëýîu#É ä?*ù×IÕJ(þ5têËKè ¯Ðwiï¿Ø¢AF¤®”"¡¥í5h ”6U»íF»›Èœ
-endobj
-1334 0 obj <<
-/Type /Page
-/Contents 1335 0 R
-/Resources 1333 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1332 0 R
->> endobj
-1336 0 obj <<
-/D [1334 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1337 0 obj <<
-/D [1334 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1338 0 obj <<
-/D [1334 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-406 0 obj <<
-/D [1334 0 R /XYZ 56.6929 378.0087 null]
->> endobj
-1339 0 obj <<
-/D [1334 0 R /XYZ 56.6929 353.9059 null]
->> endobj
-1333 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F62 1035 0 R /F63 1038 0 R /F48 925 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1342 0 obj <<
-/Length 3800
-/Filter /FlateDecode
->>
-stream
-xÚ¥Z_ã6ŸO1o—6®þX– ض³½-®ÛÞîô^Ú>8±'ãÛÄÎÆö̦ŸþH‘RlÇÉ 8 0–(J¢(ò'ŠŠ¼ð'oS Å·6‹##¤¹]ïnÄíÚ~¸‘̳ôLË!×·7ß¼Óö6‹²D%·ƒ±ÒH¤©¼}(~[|÷Ï·¿<ܼ[*#It·4‰X|ûþÃ÷DÉèóÝÏÞ½ÿá×oïl¼xxÿó"¼wÿñþÃw÷wK™ ýp¡Ã»÷ÿº§ÒßþôÓÛw<üxsÿÖ2\¯òåæ·?ÄmËþñFD:KÍí TD$³LÝînb£#kí)Û›O7ÿZ]×9ýÅ&ŒŠ“Û¥1‘Ií-‹HÐÚÒê4Êd”¬äœ’™ uÜV›ås¾­Šª;.«º+P›®\ZÙ4U·ƒáÏdLçBèdµIfFR|Ú—ëêw!TÙÞ-µÐ‹î©¤BÝïVåÊÍ#}‹üèØÔn&û®?ÜÉtÁõ—§²¦Ò÷>}ºÿŽÊ°ì:÷Œ<gÞwÍ.ï–¸zX„ˆR¥ ¬KF™1d‘Õ:ßnÀ.ÅbSÖå!ïÊ«r‘·DΩÊ#÷ÛŽÈNv Ç:ßUk"öûh©åwaÄTñZÙHiT¼J@Š4CRãasK…ƒ=üËa‡óM8×íB¹îª¦&ÙâHIcÁ…3PÅpð3;\¯Ép6Ê
-¸MÏôª¥¯ô=–ùI¸É:I Ae™›
-ŒË`
-¬“Ǭ×åžwª]µ›LÖ×ë¦/¶Q¨ìÜJÄØŒÑi蚺¤ÂS“¹Òª|lü¼Xw~……u zÝq‹Á•x8˜·y¡"B4úl«]å\ÅÑvMïGA¿pÃo›õg*¶ŸË—»L-¢3
-…C®ËX¸P/»ª^ÊÇCÙ>-qyoH ØçY²ãîÇs^O<ó $0*½¾„À5³†‘ÁA”éXVÔÂÆÈ ”ë,¦¥
-˜Gçv°ÙÁm-Z
-è8®zä´4š|ÒùqKe’-KÙ €Â‹R¼*}[o’V}G´Žöa:æ _êüÓQWÇЉ
-»¼…³#wS=Ó²¡±ÝæÏÌç÷Î ],ç¼ì´jA;]ƒ(DÞØu[ï×C³pIã‘ïW‡x>#L à—éÈât¢O§“ØãÒéxFZ1‡Ûú:e8ª##Á+Òê‚©t“3Ó›°{!ºwÈéÖ—H‡ëŒõb_ºNKÜgôè8¤çŠ`É‘ e¬›m³r€+a“œé¥^!8`PVN{uQ‘ì
-~c‘·.h‚¶ëWDB¡Zžž›Á[¶ùn?·¬€ÜdÚP8Ӗ㺶:myxoÇøFlC¸Æ}ÉÀ/¶1nk¯öë2`.·uEÝ.ûb¿l«?ÏÀVÆY¤d_Ÿ>pÍÌ?bŒáíX€Oeç”d½r°pp ®jI7vqq'µüúý/DZõ¨ìGr4»pÒ;–ªfŽcW: Óbñ´:6` `l'ƒ‚Š‘Š8h¿ì"YB%D^îG Dw.`#ƒiú®­
-Lár0°P*Y‰H!–VLiëÎa«Â¥ÿ·Ø*8¦Á ÚÅ4ØB5ìÆÁý4(ì´Oßö9OH Í[wè@\%(»qøÆÖ±T «&±îl‚jÝÔË“`I–
-–ŠÔ+ŸÙh'qœº})¬†Á“Å>o}Ç'‚Ö~óDM+ªÆ; Öщhi/
-\ed2Žâ”
-n‚éôb…ürÏ× ðçõ‹‹ƒ£é]E»ãÖômèš…E²–¦ñ€2Y¨VY¤­J^Y©´d–n¡¨Ç}ÈÖÆ˜Cä¼®6I”¤*ƒX<ÅR–ÏGkèdƒú ÑëÈGf{*g@GjÅÚÆ,’;ã—ëf·}8ï8_Bf"i¬O?vM³EðLõâCÓ•4'i0+¥³‘–3ÖçDj5f*ª€˜œÂ£,J#“ÅÙØ$¼c+«/í 8X– ûÊÖ€¢5`19ü‡·M^`²ä\u±‰tjôPs3£‚~­´Þþwù‘†mvk¨m\^ÒÒ{-‚µ²~*ןY6|§Ó3E[Þþ÷†{?jÂ[Ni2‘U“»ê9–§-ˆm»ÓŒE”J™¾ªA+ûâîHvñžGßçpT®ûmι¢sµfq¤O€áT°Då¶sg „ÃKgCÞ–æ)ZUÝtDÈ÷{ì‘7SãüR¥’‘QÊ»Ä!™[ªˆ´¶s+u!¹®…¥è,›¤·Ê¼æÈÑ%›•w „ý€2]­õ%!…‰Ò$Î^26ÂŒ¤¤AwíÒä+žnˆP}©º'bà8G/Ú|Ç%§h*nËçrKŒyëö³ ó.d‹ÎBL<6F²<}¡1M–¼îf±4Áš§Ýô‡œÎPž”R^'¹àÔèÊ…w±Ëêµ×Ä‘©û 0q!šH—‚Šd`.œ3s—’I¦Œ²˜)ËYðUÉö¤ K'"¦?UQ8˜Õ–³Ü)e³ÓQ‚ã—'t-«¼uJFwh
-ß|¸þ¯·xu?4¼MBŒòׯd šÁ™Øµ9=Ýø|
-’†Y:‰/Öøü‹éA5~¢…zAɃýž`(yႱ.½ZªãÄç‘Ó8إĠ$'21‡²}¤R××<§ƒ’SŠ{×< ¿ÝÍå|ÊHð) ÜlÊ"d
-˜:H‰A²{’ŸÄ·õÑó…bò8¥Ù œ¼ò”Û…bûÔô.Þƒ2
-`¢á@¤'÷Œ-ÑÜéA í­r’Hp´ãRÁ—l
-9}¼¥JR÷˜™,
-„m—ÎʆùÞÚE¸ÜÃì4;é­/ºô[\è…? Ñ¸õýß¿Ó=ýˆ9†»3þ*j>í,’(U™õBá=•ÜÀMˤÊΈþ?ÉZÆendstream
-endobj
-1341 0 obj <<
-/Type /Page
-/Contents 1342 0 R
-/Resources 1340 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1332 0 R
-/Annots [ 1344 0 R 1345 0 R ]
->> endobj
-1344 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [326.242 723.1532 375.5914 735.2128]
-/Subtype /Link
-/A << /S /GoTo /D (dynamic_update) >>
->> endobj
-1345 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [353.2799 404.3691 410.176 416.4287]
-/Subtype /Link
-/A << /S /GoTo /D (zonefile_format) >>
->> endobj
-1343 0 obj <<
-/D [1341 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1340 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F11 1348 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1352 0 obj <<
-/Length 3060
-/Filter /FlateDecode
->>
-stream
-xÚ­Z[së¶~÷¯Ð[噈ŅÉæÉ9öIÕi|R[ídšä–(‹šTDÊŽú뻋HæåxÚÉÉ—Å.¾öÃ2_0ø/å©XÄ‹0ö½€ñ`±}¹b‹gèûþŠ™•Z¹Rßm®þüY†‹Ø‹•P‹ÍÞÑy,Šøb³ûy©<á]ƒ¶üôåþóúû>Ü\‡þr³þr½[~^ÿýŽJß?ÜüðÃÍÃõŠG_~úëÍ›»êRFÇwëû[j‰é3¢ôáîóÝÃÝý§»ë_7»ºÛ4X\¼œIòûÕÏ¿²Å`ÿíŠy2Ž‚ÅT˜ÇãX,^®ü@z/¥mɯ¯þÑ(tzõÐAÿqæ ©Ä€r`{J
-Ù8+ø~a \pÎòz•´JO¯é‰ÊY±/O/I•¦ó?e‘Vè°#;lÝ“‘6°9¤×+µºdÄ—ÇÓ5–åk¶ Ô[¾¹Cš÷çœwYò\”Um©³3 l¨¤êü|  µç—'k­ÜSÛSƒ k4}-p.v Hpîœ{q=ùZO^†Ëc•žwåª.«<}MóÕ®|I@“Fï»^æRx*#P…ž²b7à#z"äÒé)4G²®FÃò†Föí—Ç…>óâ(²RÛ<©*ÜÔ¡À¨
- YFËD»Í¢KN5•´«°›ªŽÇ öš¥oÔý X•¦£Ûv¤ŠdŒûúNÏ *< ¾#OûVí[+…Ó­Ù‰<Ö›XÈþl8¼ †mèª=ÔÌ,ÞkÃi€#8Í=‡_íúU”±'ÃHÍ,#HE\øFêím¤6«è[¥°XI '[îió¿PŸÞ­XØ¥ûäœ×T¡Uk¦£Æ¦(Xäù°wõõýÀ9ÐEè #òmc˜¶§þ~ƒ†Ô2).$ðœ—OI®#l%ƒÈ %m¤‘7Lž#.mE•ê¬]‡ËdhΜq/‘ ·$ÏË·Õïçôt˜<X–¬‘Ý•d¡(k*$Çc~![äJh«)z°¨£‚
-8y¹ÞSÛ¥<SaŸ¦y3‚tiº3MÆÒ.«’§¼£Y»„+ ª.ùh{àI©¢åY‡°ïF‚Bã$é˧`_Çb©Å!ŒOÔ~
-±|(ÏùŽÊÕÇ =:K¨`>pº¨IÆÕY$/éÀ9)BáRZB4óñFÎËX^Ìꃱr9™~àI[–Úü´b2(J«ñ
-D_@*ä÷âp”.}<èÅ£‡žÍÁ ôó2I¦Æ
-r<~kÛKnOrª5K†•&¿² =Îj0ëI+ ¥Z>Óm¶¿`LM,€ä!ì-…±$4€
-I 2Ù‹ICp&ÈL–·M«J“¶éí0³= €['KÇ0ˆn› @Wj<
-æcãŠÚѮα8Œ¸ç‡*6‹o'4ˆ\DT7 ÑÈpBr ñ²»K¾*al0žLó“=P¹¡ ‰”½ŠÚñŒÖ_º¯¸KƒÍt‡hº8N¶‡¬pdé¼sEìhåÜ}“Æ,V$[‘ßõ̾„«¸Ôõi*|Ë£ÐðœÖvJ˜~›Ì$öçBçÂÅfoÁ€ã){IôvÀÊùt,u&ãކF“[ù‘BjÎÌW§-Ð IDQ{P«MJIOçÒD©îE˜Ç³¹˜©ªmÂrÂmRÕT!¿ 9‘Y”ØÖg8Ÿ/V¾zƒ¹iþ€*$\'*5ÄÙÔÁÁÞ‘z{œô Ã};täH/ "Kï ³QKù,ì®Þÿ‡ï¸ô wögøÎ‘šà;+ådØ0ÃU¶{—v(/æ“OZ·BÖe?%‡¬cve.×·ô­mCÃuX¶\õ¸.Â}—nÏ6Í^ÉÍДÐçžVJŽÖµÞ¿˜”Ú  ûÇõ­ "h!æäœ#õ`ö^ž¬f½â‚y"îw†nyLo <6ëŒ #t‹üpË ë[ïñîá_wC—•
-uCR™gslBQ›ÐÕŒ>6q{l2CP0Ò¦äLj¦ß(ôËÀETx>·O9ÙPŒÅܶmˆdÚB
-샑Z®‹:=iý'£‡¢Ú*0 …,©×†žŠû€ ê9>Ï2±ÍðÞ(¤t’,é7s†ömI'¤”Í+1Pªc²MÍ
-ƒfÒ¡õhˆÑ44°ªhw`{²Û™ Ól¡ÉyA…ÚÃçO4ΦȌѫÝöK)áúAy=¬ÂňåUIC³b›ŸwéèÏ BŠÞŒ%ïÌúiÆÐ¾þñUQ“Þ‚ÔèÀ > ¬v‹¢ÏEºÃÐAJÕhâË<+~›Ò©qˆ™nwåq5í)ÙþfžÖ:³ÃíA76ú t.~+Ê·âÝHʵ‘Ћñ—/‡‚„ˆÍÁ‚¥¤®‘np~öäÀp¥}?Ãj¶7²ôÑdE4B‡‘ÉͳËîB éYUWT¦uatWú®’½š¸
-´=-s ©KkYâIuz#æÚ­Û†\éÈ4׈]
-yÚIÿîeN0×±ÆP"ºq [ƒ¦6¾Oè“¶üo Æz¡ì£)$HéàRlìZnÏ'²P˜!yVÕÝ»OÏ–ÙYõ—±ßðMB2ɧ.v¥ô-['_âž’ÊÑE?×ÀqØ3‚>÷¼I£Vè½Ñîë‡$<ºF9óÖ÷«›ÛÛïæáG|¥¿®à
-ÿC°ƒ˜9Í[™qÐFfó„¹rÏÜ bÇœ>Xâ_ZÈ¡Àÿæb÷?ÿ%hë;H(ŠFŽ'âÏŠ ÄLJ¿úïl22ú~êÿŒ£…Kendstream
-endobj
-1351 0 obj <<
-/Type /Page
-/Contents 1352 0 R
-/Resources 1350 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1332 0 R
-/Annots [ 1355 0 R ]
->> endobj
-1355 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [55.6967 706.8783 116.59 718.9379]
-/Subtype /Link
-/A << /S /GoTo /D (view_statement_grammar) >>
->> endobj
-1353 0 obj <<
-/D [1351 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-410 0 obj <<
-/D [1351 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1354 0 obj <<
-/D [1351 0 R /XYZ 56.6929 752.4136 null]
->> endobj
-414 0 obj <<
-/D [1351 0 R /XYZ 56.6929 447.2567 null]
->> endobj
-1356 0 obj <<
-/D [1351 0 R /XYZ 56.6929 422.3782 null]
->> endobj
-1350 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F14 717 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1360 0 obj <<
-/Length 2258
-/Filter /FlateDecode
->>
-stream
-xÚ½ZÛŽÛ8}ï¯æee fx%rö©“vg=Øéd;ž§É<(¶œ`ËŽ/ÝÓóõ[d‘eËÒx,ˆKÅCž:¥âÍ‹(ü±HIB…N¢L'DR&£ùú†Fß íà s˜±CÔ»ÙÍÛ{‘Ešè”§ÑlŒ¥UŠE³ÅïñûÝ~šMGc.iœ’ÑX¦4~7}¸CÆ÷î§~{¼eI<›~|@÷ãä~ò8yx?™’ ús7Â…÷ÓOÐúðxû믷£?f¿ÜLfµ–P/£Âù~óû4Z€ì_n(ZÉè(aZóh}“HAd"„÷¬n>ßü§0hµ]»òWcÆ"!*…1ú³,5Iu–YdYƒ©(ð(“å/”e§RM S’Eáxg¬5êœ̆–Q°“´MËSÂ2N¦ãÛ»»Grûøi¤y|{1éÂŒGÅ€ü
-—z&ã¿6U±7fç»Sqþ}q8ä_Wî)? äðäÏeñ‚Öªx.Vn€j¾MµrÃçÛ-šÐwÓtÝ;Ü›æ«|ï\Ó‚Æ]¹7ü DË:b£”‚D8MH‰]BÆeõTìʃI¤ñÒöÙ¬±q³=”›jMå ²N¸›¼@[µAç¢ ¼><hðáw¿-æåJ¹ç¶iDt¸4
-—F.¨Œgæý9žÍs±Û•‹¸žã0’*àaUîνÄÏ Vx²¾AûusDcžW-,>Ô˜³Í¡­üpt‚LF£YnvhæëíªøÙ¨y{›xSØ#™€y
-1ùâiŸògG† 0æÞ9|ýx®V|EDkú ™` Æ8î (©”‹xZ¡g»Ëç‡r^àÓá©t]`žùÎ=˜™j>+óÂñÕâ]ÝÇ<ß;ë¥<<¡µÎ«W´¾!lÌ×Â*@Ä¢ä¹&œ¼eµÜåûÃn¤âãüp¬_XÆ`]Ú™dáÖU¾.œ¯¬ð†Þû>Û‹óy±7ó+ñç ú1â°Ó²ã»çÎÚçóÅó2_uñR„ñUE±°¥aÆØt½°¯nª,Šíjóêg¥]ÍD|Ê«Ê.¨á´2}uój“».ùKî|Ášöº”Fhr
-È¥ÍQPE­³¿õm.ƒ#¦–I÷·¹ ^ÁÑ$ÃoBºÇÂ~Ær¦ïѪٖ¹ÙÖ¸”áYç6fJ2×J˜j„§wɇ`Å©¹@˜Ý”H»(µˆ0W¬¾0câÉif`Ì®§—Œ0¨aC}ày
-l«µÉu¼®yt·EQ Ê<G¶¢Rnü<#Ôä„gpsI3<òÌì»ÎT¼+°8u¼ÍwEu@/¼f³,ÅÏ#›V¬Š—#páÔÑÍ<Qñ_#»wV¯`€²+ñˆ›eóÕ
- ¿õÈ÷džcµ(vh^XºêH•
-ûªÌv
-%WÞaßF ¦þj߯/Šbë³]VMÖÑØE_XÓ‰ÎH*R¹ù”þø5‹Ô©ŽÆÍ¯7?¶€Œ!4Å„™$M.]T`NHeŽÑZ•eÁÊÀ:~O«Qæ áéWij£{’Å༎{~v÷¨úÖá=Ñ$ÓR·ù?›câÒìBÇ/vß1– ÈÚfsí¶ˆŒ…[6Úæ•›OÜ ÁÀµj¨2Œñ|þx6Í7öÓ5ÚÔ®´i"æ·A¨ 8DÙÛ„ÐDÁמÆU},Ý48ø¾©÷¤êdw2ãÿÃu@}Ær“,¿OÂ!fq¾O¹÷Í$¬ðZ²¢P=EáQMQÌ7ÕÁ ΪBÃåkˆ¾Fuð·ªBÂUŽžPWW‰«
-®dì#²n—6p»´©¤. cã‚åïàh—…i²eÑ45eañ|¥šë˜¾,¸•ù²€òç)\„ ,¾˜%Èüó¿•g°C”A€ê)jÊÀj›U{UœÕB– ;Iúc¨QA´jA1¢”ÌÚQLªæNæ¯R­‹Zî³å_”¿ç™ö‹w¯þ̹̫æÒæÜyx4D™—sm>•”ý©@—3íA®zg‰†Ù‘д7€tA;ͦ&Ó­
-˜:‹ò¹\íQžëÄ&AbµKl&VÔ•/ÂÄŠúnºÂæïЀ×w´ÝEÜÞ¹ìÜ‚ÓϤn*Úß,ÀK[y¹­ïíåºè9ÛKbþçDGúh}ˆþáÿÄ|…–qñWpAS¢8Ü3\PF\*O#—B©xÖúpfŽendstream
-endobj
-1359 0 obj <<
-/Type /Page
-/Contents 1360 0 R
-/Resources 1358 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1332 0 R
->> endobj
-1361 0 obj <<
-/D [1359 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1358 0 obj <<
-/Font << /F37 779 0 R /F14 717 0 R /F23 714 0 R /F41 910 0 R /F62 1035 0 R /F21 690 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1364 0 obj <<
-/Length 3146
-/Filter /FlateDecode
->>
-stream
-xÚ¥ZKsãF¾ûWø¶òÖ¨·l>*§IâIœÊL²¥rHR)š¢$ÖR¤"’ãQ²ùï 4Ð|È”=S[>¨Ÿh4€>€V×þÔµ E˜èä:Ja¥²×ÙþJ^oaî›+Åk–~Ñr¼êËÕÕ¿Þ˜è:I¨ÃëÕfD+2ŽÕõjýË"ZÜ
-ƒ\¤”‹×ëuÑu•–tÕ÷y†]GšíŠj‹·ÚfD[^/5’†Ô²Úå7KØE:"g‚`Ñxr8™¹ü´Ãx‘–MMK²´,ó5Ÿ1æ_Å Tpž‘ºí3¼èDÄQó2¦_4ÌPE§U›™-æ„&Úš†Šýáx£âEý¯Òún8ouÕðÔ!?nj7¼D~@*R¢J”‰µÚ±²O« vè(YÔø{‹ƒ‘lT¼øy—W4‡²»Q‹^0Ô‹wd¬ 7ƒ÷ÃÁ¼J@|¯p4“§ŸÇ¢dR|eL™à wÖ®>¶Ë¬kÝ•¤¿
-)¥¤uDBÁÆXÑZÇ#Na2«rÕR%å9p@‹ÓªyÌyôþ^Pã]Ýæþ´±Y¶l_²(oNPÈ0ó6º4p2Ȧöy¶K«¢Ù“RŒD"•™*ÕiÒN|Ç+úM«55Ü‘ð[Õ-5ȂʴÍy…'þ:qBãëwï©10dQýÇNNÐÞt•“°èÕ‹(Q¡cjüŠ hvxvc»1 åu74ì¸sópémNm2zhœ=ÐëtzÅþ¯ÒÊüc–Ú³­÷÷MÞò!ôJÖù‘à—€Û[ÒÝ`h$Þ‰]™Þ ˆ ZYNÃyY?ÊMD‹‡®¥‰ÌéÙœ½gœ!Y›ó÷Œ#ôžýs…Í >ÄmUü*¥ŠmyºQJ-ðÉJ»¸ã³œžaõ!=¶EÖ•éÖÍÜ)ßà‰¼‰c&üê­·#Kh ÍPx86<Rq¿kámêéØÁB`𮣹?ëŠOsÊíR¦ —=ÑÐ:/ómŠBæ©Ç¢ÝÑ”[4ã ¶eÇv º>3ÈÈ­¸s¶ ú§®s¶8üЦ/a»A–>ûnO‰Jp`¤Ï=Ù nhˆ÷L‚OdÉv@‘ô¬`2ÄÙ¶‚›š·ñm²ËͱÞ//ù%&aÇw‰iZ„*ñ¾©ªçÈXam<v_&±l´Y½‡Ë¯¿Œ;%ù$^Œ°2ëŽ´Ø )q/¡t2KÙ'Àjx…36
-›(ý Ê
-­âU
-b.ê=œhö²;Q‘qL™Xp›á% E ó¬Q"¥}Ö‹(-OEÐu+Š{ðH GuÓÈë9x‚w:äY±9ñ l‰°ñ`@ä%»ÃÁC•²Øg¼·[{¦w÷¦kÞ˜Ž^ï¯îšy©j«„5&ôJK?.Y²Mñçœ\##¤±Q/º‹† *LÌ4z½ž!í„3,Aã#«¡è ý}QÑû FñŸ¦ˆRH,!&›&‡2øÜ¿L!’õÜ18ùùÆ‚Ëow˹À]wí¬Š(2ñçæYO >W¡Ù)+‹lŽN,,܃—‚LÈÀïfÂ!g&Ø ÇIÀ—cØ‹“Lé1/ËéíW²ÏCܤsQØ`”uêir’+'*9s;ˆ›PôÚ,¾­sDc
-ŸN
-endobj
-1363 0 obj <<
-/Type /Page
-/Contents 1364 0 R
-/Resources 1362 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1332 0 R
->> endobj
-1365 0 obj <<
-/D [1363 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-418 0 obj <<
-/D [1363 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-970 0 obj <<
-/D [1363 0 R /XYZ 56.6929 749.5709 null]
->> endobj
-422 0 obj <<
-/D [1363 0 R /XYZ 56.6929 266.8581 null]
->> endobj
-1366 0 obj <<
-/D [1363 0 R /XYZ 56.6929 238.6068 null]
->> endobj
-426 0 obj <<
-/D [1363 0 R /XYZ 56.6929 155.0102 null]
->> endobj
-1367 0 obj <<
-/D [1363 0 R /XYZ 56.6929 123.6346 null]
->> endobj
-1362 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1370 0 obj <<
-/Length 3208
-/Filter /FlateDecode
->>
-stream
-xÚµËrÜ6ò®¯˜Û޶L„x
-b`bY*…t Ü\gU•—-Rëåd½’L(gຶ˺|ŸWÐoÒuÑ⿆á¢,i(ÛlòC—oi"¿É+¿tG#Å9_w¾ÙÒÔå±(ýÐÇ¢»®zwÓhY\6Ys{Î9_?!›À¿#«niõ÷oFÚ¶Ø#¶ËŠÉ[Ež¢ˆsf“D8Âð`ºÓ¬¢ÿ¼iιY× ^>s;cØc˜äÒ¸=O+Ï®){yÂŒHçWQå]€§š†÷LÝÔUGg!ªÂö·C\‚ÁŒºÏÞP¿­7òŽÚeÑvyUTW´&óÃÄ@hù¦ø5ŽÜË]”…JA^’åÃRœ¥ÖL&ʬ´°L‚Ì<D PhLXœ£b4yWV¥ÐJ¦ãɈá¡nBLœÅ6µžŒºú"hØl¸:ÉeK„’ˆ÷ð@Â&\ò9²í¶9ÁÉ=¨*R®?^›k/ù0ŸÄJ÷²OÖsãDÞ˜õ¥Ó7»îû¯ÞÜ(-èGRj9@fAÓÀZ*‘œP‡¨Zžd¬HÆS äqÍÜÁ£;@Œ¦ ï2V$†ñDÛñäÏ1V2f°ÞÑ5#•ƒ=Ñ®0­dâþ3
-ò®´òTƒ‚Ë>/­ \ñ=Ò*”î—|ýuÈKyÑ %ä#V(±ŠxWhÝä«1µªéß™h×rR ÿóûd¹ÆÄóµpG[jíœá†÷îÐêCÉãõÅuŸ^¨÷«*@5 ÌT[¯¤ê¤’&Ìj®&«DÂ
-æs†$z¤F(ŽÈA®Fæ. Ìa@A•÷I aŠ3“@’
-
-
-¦‡Tã”xIp·FõÑ¿OÆ!þ0t}<vÛsn¿?VÅ&™7úüAXA„…T,I jxʤIÈ_c‡ÛóˆÇ1ÜRÞÜä>”øyNîË&Ûï³&,ĘK`%Åp#xÅá7ðw_š|W|*óê=MüÇ]f Xø™éÔ;ZqY_[jÞæíouóMØý†þÞ‡äØo>4õM±Í£âÓ®ù3’ÂGÁÈ·Õ_¦÷FÇí!j‹?rªŽûËžµ8}Ÿ}z€®Éªv—7íCwóÐî Ïk-8ˆ9µê*`ÁÇâ{¤«[?Þ[øüÐÏáü!¿m{shŽ0„š
-Ô}b(± 0”è¦b¨¥#F½Ùjf~Ž‘éê”ù+\i_ñIL ñ®ŽMŸàÀ Ž”~AíÁôn=ä,XÊJO†RÖM‘늙ÄÜ¡
-eF[’îðÁÉXfb½p2§Ïѱ¡”R÷Ù¼K,±„•Ó0w ˆ©¯}îNÅÌèä!—'¿s<Uý-Iy>>˜Ô­?e½­iÈ˰!*i™BÓ'¨¯9¢öñI‚Eѹ2ÔÎbÉXŽu=ÔÑ⪪G­U:v7à–Ñ‚|Ç£±3² W“®5O“<€?©5"ÄÉý+:2£myWˆß|éY~PÙÜ ·>²Ë
-‹ßoåû®jòÍUoE Yûåá''®ñû”!>»OEÁ]%ÃÃ=Ôù¯Áªñ€\°ñqü_•õ¥+ûãØ¡‚ƒÎ%¨í‡éGeš<‹ÏŸ$~²c²¾
-?³ ìÔ§|2aøý]àûxHÀý™ßø ¤ÒL3ù"hn™Sfä)—êé;/Êý÷€wQÿ¼e{6endstream
-endobj
-1369 0 obj <<
-/Type /Page
-/Contents 1370 0 R
-/Resources 1368 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1373 0 R
->> endobj
-1371 0 obj <<
-/D [1369 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-430 0 obj <<
-/D [1369 0 R /XYZ 85.0394 583.8023 null]
->> endobj
-1372 0 obj <<
-/D [1369 0 R /XYZ 85.0394 558.9029 null]
->> endobj
-434 0 obj <<
-/D [1369 0 R /XYZ 85.0394 285.6218 null]
->> endobj
-1259 0 obj <<
-/D [1369 0 R /XYZ 85.0394 254.9481 null]
->> endobj
-1368 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1376 0 obj <<
-/Length 3621
-/Filter /FlateDecode
->>
-stream
-xÚÅË’ã¶ñ>_1GNÕŠÁ“
-0°è»?¼»yÿóíÛ+£¢»›?\Í„fÑ»›¿\SëýíÛ¿þõííÕŒ[Í£ïþüö§»ë[J<Žoo>|O”þÎ ½½~w}{ýá»ë«Ïw?\\ßug韗3‰ùõâÓgv™Ã±¸`±L­¾|„‹yšŠËÍ…Ò2ÖJÊ
-à“Q^´ÅnSVEƒ}=Þí}±£Aht]/²5Ášb÷
-œfÓè±\{ »+n#¢—V•Õ‚`›¢ja ¥cÅR}9ã<NµŽòßê
-)2IÔY;ÜÐèhéÔ?èèðª|(*‚ùêÖ Ïái†y›¬i 'mÝ,i ªÛ°²}ÓçŒ=dë½Ç[/4œJMj+!í‹Åf­ýäzÛ–µ?MY——1pWÙDt<”Å#µêý¯Öõ܉aaC9Èø 5K%É©•yHFy±Ìöë6v4°Ë™`qÂmêö¾ùç;4Y©úrÆåRFmM#Äû†:í}ÖÒpÓ8o¿ÝÖ;?zDìU `Ù¾­7Y[‚v®4¸ÌhPEǫ́·ï[@Só•é[Öô"•&j<œøJ®Ì1F¦@ þÛ¨*ƒ
-v€ N•pÖÍèXs_ï×He䮳CCíÇz÷-'Iœãr°í~·­ßqÿÓ­ˆÁ™’¶»ú¡Ì‹³Öd„ñ“‘k“ŽR«Îˆž·8“¦?éÏUú'é%ýÅÈFeëOY7M9_Ý<g¡’ëlÆ ¹——MFSm4:¯ìxd;‡VAŽ Zà¡+š5¯Û{‚y§åÚ¤;ÐpÞ—fÂIÊ߬ö£æA§t-åѲöXНÙf{žß“VzŠÈccy$~ÂTŽZÞs(óýjuðž¤ò®e±Ëšû¢z©E½Û]Ùh¿mý@žµÞ÷øãCË3gä°&ÒÙj¾¸È«)õ*6ªÓÇ:%·ƒÐ)¹9†Nt2E¨ó!ǵɇᄬm‹Í¶õËjú÷›˜èúûý
-wp„-êÍf_Ós—â
-¢Íræmöèã;O°/11\=é=¸ŠS%ƒE‘p ½*$÷y!Á •ÞÒlŸogMù[1±”&6ELiñ¤¨KÒ  €<o¡õó÷?јCë@–°UúuY¬jK>?¼Ê6äe-ð2»ƒË‹Â–îäÖ‚wK†bêËDòt( €¿_¥ž¬ËœÆ]²4 0#¬Ü€æ‚ ¤Ei TBù¡%5M£_˜f}õ¾mÀÅÒ`{_z0äW+ôºŠh‰åR5 sŽˆüß{ð?9`æñ”3¸#¬Š%"É£" t}¹_Ì3 ‡zODz¹§Aw,ÅŽ‚hž8ÌXú
-…#õ6²ëô|fBðC°;VIÑD<2 ²a›Ý­Š |,&³Ik#Bî
-äëþ,Nc¡ ÚÔÒ+E"vP)%#zoõ徥ɴ²öÊ™)@Ð*:ê4÷¸öUt´u{øàþb ©Ç„Øø«‡QÚ Ó·Y»¸/rÒ„n`öMÕ½4ÖeëøO8±yY¬Aï“TEÿBWèâ- ,\„F³-åò@_ˆb“l†Ú.œš¯BÃE:ldI°MÄáòQ·lúrü®V"È¢³Tàý ðB¡?Užv«Ç'_ˆ®ÞZ¼Â™(~ñNŒ½n3#bf…ì)‹d)ÝW`òì8†jRäo05RgjSÌÖÿÀνˆ—‹rvf?#Á²•„Û)S&–iÇÿ¦ÍZw%G[¸ÐDÎ(e±LŒšÙ¼a#"FÞûxwJ‡¿)…íۤ鮣Œº
-\Äö(£¼À#WÎo(ï7Ô¹Ë8ˆ+VêÑéÇfè˜N|ú?#}¹•RáÿdÃØ¢@[£Öà#‚+d`¬%äHí´ô´D=0"L®ï>Þ¼3 ÔØ‰f‰ áHc»Õ%5n{o3aú¬?ÿôiæ+Òð±t[UIá2‰M’è-'¯CݬgH8ÅæùÀ‰€pûDm¶þâ/ ÉÀšpïa†0{༠ôÿðˆŒ‹âÝ
-ÿdƒ
-
-ÀŸ†_ì «—s¤o@¸„^1“p@iÎ ©Š>Ÿª€ ¸ê¼äóRÕÉ0”ãfó"\†AÍì(þ?@ÿkôË5Lƒ\“—šÛ­;)fp ˜©¥vßk°T›îY%<gX3íÜûÞÌ•EëÇã5¬ûFÖWZ¿_°ÚØZ#}.ÑÇ”
-endobj
-1375 0 obj <<
-/Type /Page
-/Contents 1376 0 R
-/Resources 1374 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1373 0 R
-/Annots [ 1378 0 R 1379 0 R ]
->> endobj
-1378 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [87.6538 384.3462 137.7628 396.4058]
-/Subtype /Link
-/A << /S /GoTo /D (tsig) >>
->> endobj
-1379 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [370.941 271.3774 439.613 283.437]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1377 0 obj <<
-/D [1375 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-438 0 obj <<
-/D [1375 0 R /XYZ 56.6929 161.8309 null]
->> endobj
-1380 0 obj <<
-/D [1375 0 R /XYZ 56.6929 130.5806 null]
->> endobj
-1374 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1383 0 obj <<
-/Length 3526
-/Filter /FlateDecode
->>
-stream
-xÚµ]sã¶ñÝ¿Bo‘g,–
-–±I'³ÞÚ
-
-Äë¢+—³rU'­Çsb±Ø‚·øä0>­œCÁñ¿
-E
->4à 4%>ø,è±iìövç|V6½…Tò‡]ïV5ÇÀôudJu$úÓ‚i®l7¦ê Ù­ní–“˜¬Û‡¦'éô×Ý>¸€ä¶¿µŽ ŸT+pÓÙ›†C¹ð˱ë8¼:©ÃóaÙàŽ Ï¢ý HèÚš^vãIðð]Uî|ÜË0U³$€)"úÜ&J´ß®Ý¬*¦E'Â1Ûí6LøüW³ëB¾,î‰ ú¥Æû0Ø™ífà¦]êƒâlÂYæúêc“kPF?c1lZ˜c‹QBkH%(“…Q2}„Ð@p‚“vé“váÌ Ý%“Á DQQæ<×R Ðüq´ä‚.¸wb‡õ—ÑP‘…`È  ´ŒU™³¿<ŸÞƒµÓ†LªqΕ´ Ý<
-5xíLxËon÷Úq
-“'#ƒÃ&®6ÓKäI)*Kh7¶¬Ð³Ûvt27](€%0Ÿ#&Ÿ6ú4‰ žê«[0ô@LÕäzLñ™£\Ò‡¨…½- 0ÒI0lâÓÑÁ`J)^ª£D¢-/+·ÌðZYŒ$J¥Ó˺Ÿë37ÃQʨ¥-?s¬6 鄎
-ñ7ËcõRé©(Q±üªô°=œhýßH/Ç%²÷D…?èªåÃuÅçP¾ iX6^°‘Ÿ¨B1ñÔ‰7¿‡e…Å£J“¾áT-ðB¤jŠ àÄÚ–Ë¢®Ú5½º çéæÀˆà;=ÃdkW¶ôcÑå#Fbÿ"Õ›²ˆÊY
-ò[Ò™š33ƒ›À(!EÎüé%×Au°^W}FŽ…l–zùÈL€
-×ëʄϪ³Ø÷>2îû-†C5·/¼%¯™¢¿ ŽT_â·(<Ò`[wo˜Õ‘¾ÂU±æ–ˆÒØ}u¡k˯·ô삵‹É£fŸ­]Ð7$¢-Ñ­ø‰-[§0PjGC¿H™!”P\ï3?€¢6¾íŵ6¼Y½?Œ#ŒÝû¥ëê¤)]¤âøà~ô drÛGŒQ1«Þó¥’“™™/¸b×öuÅ¥T@‰ E­ãæÒ?¨Å‡mßÁ|Å¢¤ª}{:àfâ<RIœ<[:¤JÉ@é ½©q_Ú=ɨ‡#EY‚ï¬æ+~w·\lÖ Ré {›¥Á™É,‹¤ˆŸ³3 •ú‰NC¨éëG_l‚Re|PK°øèRÉÜš4þÃ
- 8ó—öqª¥2†êrf%Gí7I ‚ëA׿dÄ€â÷1¾acäȘóÔ]uoyÈ…-xÉ/Þ³PMJ•.èÀ~)°ÖåÎܱ¤‚;°­‹Â ‚ûq0½w=ƒ¿oäsÙ<üàÊæ`}ûCQ»â–„ò× 6Ü¥Â/
- ´`w*Žý’Ob¡£úH'qEÜ P|g‡¨¼XêQjüƒJ÷¸ÁÛþL’ËtýÇ$»ðàÖa]õ3äVÿÛ9ÿøÔ3•Žð•¿ÆÅýGÐßü¿ÍýŸZ“,Ry.òS1„s ÆËL¹Ï­æèo}þžÇ¬ÿ1=endstream
-endobj
-1382 0 obj <<
-/Type /Page
-/Contents 1383 0 R
-/Resources 1381 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1373 0 R
-/Annots [ 1386 0 R ]
->> endobj
-1386 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [461.1985 730.8852 510.2452 742.9449]
-/Subtype /Link
-/A << /S /GoTo /D (DNSSEC) >>
->> endobj
-1384 0 obj <<
-/D [1382 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-442 0 obj <<
-/D [1382 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1385 0 obj <<
-/D [1382 0 R /XYZ 85.0394 749.4437 null]
->> endobj
-446 0 obj <<
-/D [1382 0 R /XYZ 85.0394 597.4804 null]
->> endobj
-1357 0 obj <<
-/D [1382 0 R /XYZ 85.0394 573.1408 null]
->> endobj
-450 0 obj <<
-/D [1382 0 R /XYZ 85.0394 444.9323 null]
->> endobj
-1387 0 obj <<
-/D [1382 0 R /XYZ 85.0394 414.8185 null]
->> endobj
-1381 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1390 0 obj <<
-/Length 1097
-/Filter /FlateDecode
->>
-stream
-xÚ½X[s›8~÷¯`òd? p16LžÒ¬“Mg“v]ï“›ñÈ mQIØq7ýï+„Á¡œd:~@×ï|çè\$Û†%~¶áMÀ$pcŒgÙž¦˸sW[­1õ"³¹êÃbpzéN
- ÊðFu¢ª']$[ H–ì:Ù*\’Éu;Äús‚JIóq5¸?+zj
-=Âr%äÀ’¡.RZΤˆpv¯äEEŒ!ÖÆo«ý@?<k•4é* &/{ ßåH{¢Îº(Ç89
-¶?÷#ãf»^0GqÁŽˆm’–j}¼?#G;¿pHNqȵ•ÞÓýC’qˆ³ÚÿË V¦/Ö u†¡ ¼Öø¦pàûÓà}B@ŸD#ð{‡Àé¥cõp\
-OEµ˜ºu!u<Q-mتÒ}á£Tœ¿ª¡¦)¤¯U\Ê#÷€ízî¡ÊÖ*ƒ©ê.Ã2vײ˜r•–F½,¶¬£lÍv|È|·ª"h•`Æëh©¾wý0MíÞ¯ƒµŸÃr
-3#úÎl‹<‚ºŒ¼¨„3s"B¥mX9³’3+Zh¿]
-(+ÒµNÄ=4*Qtö6q$<¼/’óK$ŽÓ×#53è]žôÍ)™óÖ Œs)jŠêzÔŠËEùíx‚ZõÅâÍÞý¿âvâú¾S¿eŃuÝp¦>ûD‘*Í1µž1×/ãçÔÿ©ÇX|endstream
-endobj
-1389 0 obj <<
-/Type /Page
-/Contents 1390 0 R
-/Resources 1388 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1373 0 R
->> endobj
-1391 0 obj <<
-/D [1389 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-454 0 obj <<
-/D [1389 0 R /XYZ 56.6929 397.4375 null]
->> endobj
-1277 0 obj <<
-/D [1389 0 R /XYZ 56.6929 370.0946 null]
->> endobj
-1388 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F21 690 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1394 0 obj <<
-/Length 1113
-/Filter /FlateDecode
->>
-stream
-xÚíX[s£6~÷¯à1îŒT$qÓä)›:ivºÙ­ë>¹9QƒErg½ÿ½âfC‚c°ãn:ÆBp>¾sô]ÒtõCšcBPC³©M™š7ïéÚ­zvÙCÅ; | Tßú0êý|AlBjaKÍ*XÔi#|rþëÙ—Ñ`ØØÔO,ئ¥Ÿ|¸ºþ%ï¡ùßùçë‹«Ë?‡g}Û8]}¾Î»‡ƒ‹Ápp}>èä˜HÙãa‹ÁÅÕoƒ¼u9<ûôélØŸŒ>ö£µ/U‘NRG¾öÆ]ó•Û{:$Ô1µGu£CD)Öæ=Ã$Ð4){‚Þ½ß×€•§™iSüLâ@ÓÁvC
-QsE%"ðyÂ<%EJÆ®¼›†îœµ`ðÌ’„Ù<
-mð_&n(f¥|Þí"V9ËÀ,JÝÄ_§ë;àÈÞóîÁ½¸oµÕϲNjË|¹ˆš„£&ÜÍ,¾k"ïa!,ÙµŽW¨4“ÄfÁQƒ®f.Vü6Œ¶Y?ZÄÏçn°ˆ«íiK^J³§öœË]¡–‘Ô<•–’ÏÆ%Éžä*q;¹ò·Z‹ÃrQêÈ¥Ðö†AËÕŒ'BîâЄÃQÓõQ š%`ïÅ5³–ó0¤jk .ð‚H÷ýF.±#Tß6V3«LC«.¡¯7¶ª1Yƒ×ǬF¦CΦ«|Ž º‚?ï¿W(§wÀ}•3<Ü{óSŠòpJ馥@(5œ5Wè€=Å÷x]¹j@šó]Qÿê1 ÷†ë k1 ­b6…«óÖqÎ7›ÓÓNž»bÔ†ØÊ¶š)%c Uc?ªX'›nÙ¤IÐ)¬´#„ëbdš[¶E¯¸î -Æ"[·ŽDÛnÞH
-¶†·KVý_}ø/V~HÍ
-endobj
-1393 0 obj <<
-/Type /Page
-/Contents 1394 0 R
-/Resources 1392 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1373 0 R
->> endobj
-1395 0 obj <<
-/D [1393 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1392 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1398 0 obj <<
-/Length 1060
-/Filter /FlateDecode
->>
-stream
-xÚÍX[sÚ8~çWøvFŠ$K¶5<¥)dÓÙÒ]J_Ê2ŒƒñÔj‰¦i鯌Œ± „Ûff‡KGÖ§s>ÎÅØBú‡-æ@‡n¹œB†0³&qY3½vÛÀÅ;`ý¨¾õfиêÚ®Å!wˆc ¦,"ÏÃÖ 6H`K# æÍ‡^÷îöSÿºåÒæàîC¯CÍîÝ_3ºí_¿Ýoì1ܼùóúïA§o–œãÍ]ï­‘póØÚït;ýNï¦Ó Þ5:ƒÒ–ª½Ù¹!_òmö»‚6÷˜õ¨'bΉ7(³!£¶½–DJÀÊêjëNþ0‚ÄvÈ)®è!è å2›Ø+‡-à ÔŒ‘
-AìK%2#yrœfã$5Ó¶yŒr‹õ±
-ç´r Ëv9´‰Ë4t©m¢ç«%¹ë:VE¾¹ŠC.WDl]£@[oÚÉç–žà›SUÕy®*w!Ñ©¿P•íQ•§*A¶.?\¾'+p­´WÑ•C‚;V׃Ô‚!v‘ó:^@ˆ 1õÈN/XHöÒ[æcê6èT:•HNä¹ELà+ÿÞ—G'“zˆ‰©NЫqVxÈãÌå +M”®NÀÏõ8‚œ_—•ò«Òö¾BºÈ´íÃÉøœ¤NþGIýäZkûFþÛ’ÛÞWroéÙ>èW]‚­R<ÍUÓÝ!"›îšèˆQ¡œi?êX±ê3Ìô­®|IBS½æ? Ìà“ôg¢<gÓŠæ PÈ)¦•s .Nú\ž4hqÍó\WÝ[¶‡¡ã¸Ør\è1Jj´ufaœíî³Wê¸TGZ›@J0ÝÕi£’©‹ûúÍGêBÛóHÙ²ë¾|Ãq=H=›X6ƒ9VN–Kž}uX
-endobj
-1397 0 obj <<
-/Type /Page
-/Contents 1398 0 R
-/Resources 1396 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1373 0 R
->> endobj
-1399 0 obj <<
-/D [1397 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-458 0 obj <<
-/D [1397 0 R /XYZ 56.6929 134.7333 null]
->> endobj
-1400 0 obj <<
-/D [1397 0 R /XYZ 56.6929 104.6195 null]
->> endobj
-462 0 obj <<
-/D [1397 0 R /XYZ 56.6929 104.6195 null]
->> endobj
-1401 0 obj <<
-/D [1397 0 R /XYZ 56.6929 80.2081 null]
->> endobj
-1402 0 obj <<
-/D [1397 0 R /XYZ 56.6929 80.2081 null]
->> endobj
-1403 0 obj <<
-/D [1397 0 R /XYZ 56.6929 68.2529 null]
->> endobj
-1396 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F21 690 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1406 0 obj <<
-/Length 3467
-/Filter /FlateDecode
->>
-stream
-xÚ¥]sÛ6òÝ¿BÌŒÅà‹ 9}JÓ8ç›KÚKܧ¶´DY¼R¤*RqÜ_ûˆ’éN;™L†«°
-dF¥°ï%
-dù+hXúØ·qY±üb.™D|·Ú³ªDÊ¥A;ÈóØŒ[†.ޏ»Ï·ïú½~ÂceªLn7B–i¡…·B ï‰_’™þúzÖðà^03Ü3¿ÞS"ÝË”G2c\Ø´)@ñ ¸6¨ùÓMØ«"Ô sâÍD‰ëŒƒ¤UFÎÖö`)‚9þ’3
-|+þD¾F‚ÃXFôÏÞ'?aÕ&¬šá[ o”æ¸i­úx™5Ýh0Ʀ[…‰#û 1×€|êõÀ訪㉎{žÄ9`ë¶Ù5³´_)QÃ+“· ÂŒ|Dåd<'L¸²ÍzÜ¢’k•|ìÃŒàÃCÆ
-`@Œù³Çßõ_+þ 1´[ó ‰ŸûŠrg%APo
-ˆ>~þ.¢ž7¡‰nêj<Nñ1ÃZÍæW}©9O=¥Ý$”T¦sR 
-€9Ï p‚¨‡ö(dXÒîBÒs—¢ð®sÎ;=r•–t#£ÿŒ9m%>
-fª\Œ]s¡Éû´€Z[ ‰­!*u›[Ï šÏ³R¦RYj¡òo„>ä7¡´ AÆxˆ=Ο+
-æ|å«þØ®|¨%­­Ñ„’Š‘æÍ·UD8oÈ=ß
-ÁŒ®:0–å‹PÓñ tü©Íƒ+‚Í
-#Ï›eRRd™v§% ƾAü¯ŠŠˆH¾S¦â2õìNU££*$: ½€(Nª"ÄI“ÉØ¢T!%‘ˆÈWŽTHWTHƒ†¾=r'HVÍE#ôuyòÐ|Aâ¨×ƒaႸ„8*>ÇRü`†Ò¬Ž”öáoŠa¸
-DA·„9Šú?螆½2,Ùš/’ZÀ’êœÃïüã8,çäÄô½O>ݼե.øÇ$ìÊLžxDæý3=`¬8>óï£
-xvNÏÃ÷c Ãoº%"­ûj&†—6…¨êèPÌ’À¬/CUK²¤î­]Õò,a©ŸtÉ©$x8ÖÖa³szþž3éµOÞsN Ö±—^w¦ÕÌ7–H§ºKCe)_ü¢qÉ‹u—†tH©Â½Twñ…êK;ï¹IÞ«Ãzî}'OsUøSÝå\™üjŒã%R uøÆpü¢e:qø›L¾ºÉÈ MÒjÄ¡ýDBelïΙJpXäS·šº%œúù“Q*ãµNÍ ó††MóÓ$(ˆFª8¦ˆáOû¹')ऻVÖ¾Ì_[¤>=$~cЖF¹‹Oªú#›“\Äå†'¬Ü¤y™]´\^8
-5Ç2UF•‘oÑA¹ÔååÅ»¼:Cí[‰ÊŸ"0)wîyØÁQisäÁÅcÍMUVT¢7· 7âüV£“/ µîa¦
-Õì»ßýq”gG.P5wñËŽö¡kã%o'(&1èÔÃc-Zä6œ‰n
-endobj
-1405 0 obj <<
-/Type /Page
-/Contents 1406 0 R
-/Resources 1404 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1408 0 R
->> endobj
-1407 0 obj <<
-/D [1405 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1404 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1411 0 obj <<
-/Length 3221
-/Filter /FlateDecode
->>
-stream
-xÚµZ[sÛ¶~÷¯Ð[å™Á$ðè&vêNc·Ž;çÒö–(›­Dª$e×çן],Hñ&*=É™ŒÃ°v±ß^@Ì8ü³ d¡•vYÍ.‚Ùr{ÆgÐ÷áLxžEÍ´hs}{ööJE3Ël(ÃÙýº5–aÜ1»_ý2™dç0Ÿ¿»½¹ºþðóÝÅy¤ç÷×·7ç ðùÕõ—D}¸»øøñâî|!L æï¾»øñþòŽºB?Æ·×7ï©ÅÒãÈ w—W—w—7ï.Ï»ÿþìò¾Ñ¥­¯à
-ùóì—ßøljÆ™²&˜½À΄µr¶=ÓbVªnÙœ}:û©°Õë^[?- B ¬ŒT":>-MÁaZOF‚EJô&]ÁÂ0"´°À¡5E´hYDHÎ, 3‹ËB%•3ÉSšU¸.o¯ áÀi‰“#ÓýSK)Ä<ÍÒ*7ô£L*"ò5>å¼8fžç¾5‹·IÍX<'Eé‡ðÏr—,Ó_9—ÉŠöeš=Ò@1µü*¥vò¹_ÿɳ[Š ‚-„`6¤“ðOI†lv^‘¬ÖÏêé*.ª’èýî 2˜§•o(“²÷n[ëÖ¨æÈ鉂g+¢ã±wœö#‚6R…á<v#
-øZ­)Ð~‰%™ßÌ·»t“¬iF «dï7Õø’j*$œáó 0þjÐ¥ &8SÆ¡Vów(]RúwA®‚Èê)Έº¾ñoÅÏ µàêàóaŸn*nD/jIÑÅÏØ -ÚhfBÎÚ>ùE^®¹‚î0
-F}Ù+5ÇYùâθ*jMýèµ§Ï0…Ó_Òê)ßÂÝSGóä¯Ý&]bRà^Pkºm·–Å÷ú§[7dˆ÷0O‘V¯Ô^&ËšÙ€ › 5?$c‘ "Éã
-…|·Ä§šßüóýíÇ‹ëFÍdY¤VyâY2ôN÷În‡æB­Œ}N8l PC\É_ní6`½6+ò97: =q–4ñ½„&>ß$ñš(gkFí@{àÙ§@mÁ UçÅ'\åÂ'˜L¼ÆU[ÃBS“[í ‰ç?`…Æ–5µ-½äÝ`ábQOÚ±ÎKìXV.Â>-Çþ²Xq?‡Úæd±ï6èÖJÿÓKµ 3¤³2)"Ù.±¥–Œ ÓʱE`B0á¡0’b¤T Í ,ŠšRU€OÎìrÉ
-C©‚R¹|Š[™܉Yku7xvDCŒÆ˜á\PŽ‹4w©ùZVɶ¤žU\ŸЀM‰±Ü/Ÿü랤)¨—ÏIý®fß)BËL5¼SæôÌ3PQ+á¿` åäõ…‚ëj*ؾû4æšiÔökðHò5˳×mr„‚Ò¢~¿ƒ¨‹Ì¨Òh8$4÷çd“ï¶TüC› žïžâ¼B‡†ŒSë7ôÞŽ–©Ê—ù†º–í\îFʈ•¼¶é
-ÂEÄ1Â@8›ÿ›¾ MD̤ñŸN8lœUuZî~9@–=/®?dº€×K ý·cP’©È„mò¹½Ör„1a8³PkÕìÊv¯&Htëbr9Ø$€j\@LTQY8Ðã›"žiÑæ:ži.WïaÈ_€ýÓõkráVhˆŽ“³7\#Ów+ ðQß™þS’ôââ*)—EºóŽLq¸¼6b\êÚV}%z3cÀPF×>“õõ,1‰=m¨³xœq×Îì5ÿ ‡ã’Ê˃rˆ2Ý Ê0
-´í¨:…¸šÿ„ÒÃq?qaÄ´‚"lrõ®S‚ F›FÂ…Ó>ÈâZ\ˆ«¹–Úï FN† ŒÊC=={Ã52}oáLuçÿ2¼ÙÞZôÑ&™áZϨP¶s®»Ë<•Qkþ*ÇýÕD$2O®}ÃuBáhÓhƒ¤‰àÚZ\h«¹pF²Ðb—oÒåHýi?
-ìôô ×Èü]¸iðôHuøÔ|Ðu?{ñ\înM{‚ê­w÷ûg'8rÑo¯bîwpÈ}BN‡Ô¯;
-M±šÿ„jÃqGa%Ç`e Óy§×¸á:%È`´IX¹ÍO™iXµ¹ŽÃªáê»ÿ¾ñ_âb…g±}€Eâ
-<ÀRå ²ªj5 i·Ám¤â안ë}ÃjEvðtï6ò¸=Ñ!Ä$T]Pn> :îÑwbðá@×{¸­o¢ù…//*¢ÜñIO:™¦å€e„º¶§[\Ý7"®Æ?|–´dJ†µ´­5¢Ü¡ƒ3j¶ò-d8S{¡†pÖyÉ`Aâ,LJsÓ\üpÃô`šk'ĺ¦Þ@î'C¶ñH²{Z?­)DèÞYAs|݉5탲Ú?tŽ®ý)W“½Ôí¯&c&Û]}”…Þr4”‹÷ÏÔt$o1ä5“ÛJ–,Ð5Ëa…0€ßôÌ Ópjջͦ¤êÎMÇ€J[ÀJGëu›?Öò7°Åã®*R:­çµ{[P#. P;è AÜ$hwGLH”¯YÿE½8øRRTqê§]å[¢5E*ôïïa؉¤î…X
-;À¨BwÅlãÞRîªØÛÜw`”v„—geÍ×»X
-endobj
-1410 0 obj <<
-/Type /Page
-/Contents 1411 0 R
-/Resources 1409 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1408 0 R
-/Annots [ 1415 0 R 1416 0 R 1417 0 R 1418 0 R 1419 0 R 1420 0 R 1421 0 R ]
->> endobj
-1415 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [284.2769 372.3497 352.9489 384.4093]
-/Subtype /Link
-/A << /S /GoTo /D (access_control) >>
->> endobj
-1416 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [282.0654 342.4617 350.7374 354.5214]
-/Subtype /Link
-/A << /S /GoTo /D (access_control) >>
->> endobj
-1417 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [311.9531 312.5738 380.6251 324.6335]
-/Subtype /Link
-/A << /S /GoTo /D (access_control) >>
->> endobj
-1418 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [299.7586 282.6859 368.4306 294.7455]
-/Subtype /Link
-/A << /S /GoTo /D (access_control) >>
->> endobj
-1419 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [292.0084 252.798 360.6804 264.8576]
-/Subtype /Link
-/A << /S /GoTo /D (access_control) >>
->> endobj
-1420 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [330.7921 222.9101 399.4641 234.9697]
-/Subtype /Link
-/A << /S /GoTo /D (dynamic_update_policies) >>
->> endobj
-1421 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [401.5962 193.0221 470.2682 205.0818]
-/Subtype /Link
-/A << /S /GoTo /D (access_control) >>
->> endobj
-1412 0 obj <<
-/D [1410 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-466 0 obj <<
-/D [1410 0 R /XYZ 56.6929 572.2565 null]
->> endobj
-1413 0 obj <<
-/D [1410 0 R /XYZ 56.6929 547.1358 null]
->> endobj
-470 0 obj <<
-/D [1410 0 R /XYZ 56.6929 428.1752 null]
->> endobj
-1414 0 obj <<
-/D [1410 0 R /XYZ 56.6929 403.4729 null]
->> endobj
-1409 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1424 0 obj <<
-/Length 3042
-/Filter /FlateDecode
->>
-stream
-xÚ­Z[oã6~ϯ0úR¨¹âE¼<NÛL7Åvf7“bhû Ør¢F–\Knšþú=¼ZWjŠƒAdò3Ï…Ï…2^%ð¯dŠªØJ(†Ò§«íá*Y=ÂÜwWØa6´é¢¾¾¿úÇ{*V
-)Nøê~ßYK¢DJ¼ºßý´þæŸïþ}sw½!i²æèz“òdýõí‡o툲¾ùøáýíw?Þ½»l}ûñƒ¾»yswóá››ë –)†ï·ÂÌÞßþëÆ>}w÷î‡ÞÝ]ÿrÿýÕÍ}°¥k/N¨6ä·«Ÿ~IV;0ûû«Q%ÓÕ |HVЬW,¥(e”ú‘òêÓÕ‚YóÕ)ÿ±T¢”0¾Ú
-¶öTxK²õ ² C"¶Qa•꣛Ç/X=^÷/Ž!N EÝP ŠŒW‹sŽAeÁg²ì…sT„suÙª¦x(‹êqÄ8Æcö¢âjB~Ÿq1¢T_¿Ç8Õc\ÇŒlN‘TJÍóèb†ô-ñÍãl¯ûù™T%ˆ÷½-©1\+N6,–r!vQ²y”–øg~ª7U½iêlÓ¶å8À%°KXƨ útK‘÷UxºM2$œD”ÑH|#p¤ê™o¿`ôxÝ¿À71Y²¸÷jI‘ÑjQÊ¥’#š(§\5O¹€ÒÏÇ]Öæž›çç8°ó jB…甩J tx›¤:eÉ@¼¤ˆp>Ë:NäÖ36Æ:_0{¼îçgUèÀTÊUÜÿµ Èxµ8ë D@Fb ¬ë "¬ó(-±=½nÚíqsÊ÷§¼yš
-tJ‘¸5¡Á0ÐQ(øz¼Mœ›°cç‘•R ºA¡×5!ç~Áæñº!ÎA ¨ FPKŠŒV‹3Ž0¨_`\aœGi‰²‡¬ÉÇ÷ ² ´òQÉ5!ºG5ýǤ/ûÓ1ßû×kÝôY¾QªÖíë1·C@4ó7èhçk;úàPç&ßÙ§}}²¦­Oºžë, Ö•[B/¨¯Åd²¾÷b›öò•}]–õKo…1ã7žq
-;1ü9 22[âÃòsþúúb¹ÖÚ±.÷ÚŸÓÑÌä­1Èuæ&3û§,šÖ>àå©hóæ˜móÍ./‹Cá¾*Ö^J£-fÄY ?' 9ùuºìòª-6Ú¢Nog'1êë/ç QÂ…
-x¸l”†ü
-ÖKÔ:«vv,«^íCs~hòßÎ Æ~Z:œµß~8fÙc3Ñ<ž°‚W£Ž«ã¦ÌÞÀ.ôìy]‡‚Â…„ÌþyÉ^íC£‰«=°u±²ÆÌ‹d= Ž@A(dÂl%m¶‚0 1vŸËÖ~
-Úܨ|šßc‡³-’6¦+®3$Íõsº6ª˜Ñìx, ›8¹KI|ýTØ4˜úDÉ¡9?Ø']¶èÜ͘XßîÝlîð°Â8W
-=4ÃÜñð5o&¸
-íµ¢á&õ+ÎáXTN5o†­š´¬—¢,eã4wÉT'y”è×
-*Ôý¹t‰ioÇ]ZJC¹Ë §5v(³¬þ¦Üry™ŠÒ¤/f<àn$î+¸†±ˆ"‰v “¦­Ìmuº“T,ëú©Õ»¶“û¬(-§ˆÂSŒûœÊö­®ˆHt—ijt"°ã«HFÆéI{ª`ò1oÛ𕪶ƒYÕ¼Øü­ &Áu-]N»
-zØç
-©t,nôÉ=ØI?éIËúÁøÆú4A:š)^a²p_4a º†5¡ð÷:˜j
-™ýè‚ei›  *QóÆ–G‘ND]‘¡”´íÈ 6`Æ'£r¡³cšåz'ÀîBhšå^)ôç¥x¬vƒ¹à:]!™jiªtµ~JmO>OK ’¤ ·g]T„–e
-®?öF›ÍÜ…†€”Pò‡"]_ÿ^+br†tiï%°b†$zÄ6búIÚ Í`ý±ñ!úƒñ¹ž­²Cn‡4™:Sðp‚ •¹
-OcËúÑÎüœ¤É¯õù½<b?˜Ò­jö]î^A@±uÊšKbË.(œMÅ ìJ@ssû¿÷wÈ>‚=ÐO~k?(û§x¬l'ojî3÷´±ƒaµ- ª¹>oÛá¬ýzȦË^; -Î[§'LW£yåè†mr…î]ûÄSå5ò§ËöðkU.VQFÌô€3Æ6sçÎZ2{p077N ñ¼‹š?8Õ;8íá¸qî½ÒÕ?æ" JÔ„=·1¨˜¨ŽA.”T»zkn|Ywº5ßÍ^~'õÍNÖ·ˆ»9¨š÷4¤ž„¦ ×­]TÄÓeXäˆ;j|%"Œñ¸à€šÜN’ª¾èw®öþIÒ¹w’áP}ÙØ–Ž·€5”–¦"1]ÚÝå•nN’Ôu>÷W5™GÝÏjºÏÉ0·6 B©Á¥ãÌ1†n ûª MTp‰Â T(t¶2¬q÷YÝ–D7lÛìÁ_ÜøŽ«·×˜ Ä9ó˲F©“ê’õuœXK!ˆ¾Þœ¦ÔRö¤¤©G¹q†ÍГ$q2w@ó\ö k䓇ö¹ Å!ߌ/=°þ¡
-á,ªF
-endobj
-1423 0 obj <<
-/Type /Page
-/Contents 1424 0 R
-/Resources 1422 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1408 0 R
-/Annots [ 1426 0 R 1427 0 R 1428 0 R 1429 0 R 1430 0 R 1431 0 R 1432 0 R 1433 0 R 1434 0 R 1435 0 R ]
->> endobj
-1426 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [286.0435 736.902 354.7155 748.9617]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1427 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [339.144 706.0223 407.816 718.082]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1428 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [336.952 675.1426 405.624 687.2022]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1429 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [322.5463 644.2629 391.2183 656.3225]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1430 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [331.4327 613.3831 400.1047 625.4428]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1431 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [361.2812 582.5034 429.9532 594.5631]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1432 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [330.3165 551.6237 398.9885 563.6833]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1433 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [259.4835 392.2393 328.1555 404.2989]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1434 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [387.5019 92.395 456.1739 104.4547]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1435 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [381.9629 61.5153 450.6349 73.5749]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1425 0 obj <<
-/D [1423 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1422 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F48 925 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1438 0 obj <<
-/Length 2686
-/Filter /FlateDecode
->>
-stream
-xÚµ[]sÛ6}÷¯Ð£=bñIiâdÝÙ¦]Ç}êöA‘h›YôJt\í¯ß € ‚¼p¦ÊtR‘àáŹÀá.
-WÚ5¯´€²5>>}ùZ'! ªäx­=f¢ÒhFTÚôHÆ•^ÙF†„­OçàJ¿_Í@nÍÞ•´^jpý¼ì ›mWo×õÚÞ©óÛvçŠ÷õ
-„ÖlïÜýÒý€o›få®ÿ×nk÷–u÷X^ÿVïšÿPÊWË—*AÝGô¾¹Û. Û>ðIIb¤ÐöÛ"F)~ô¥{:Î
-kË[†î÷ý§ÏŸ/ß¹kkãÈ™;=ôù¾îÁð‘ÜÕÒs7›v¹öïÝ´înÝì¿BJ ™‡oC(4ý³ÖW
- GÙ—›®xMü±S8‘€š`+Pio"*§{‡ÆTDPà jB™Ô‘Ϩ{|ÆûÔîwhPB”톀ÊI­¡„ƒT&³À<
-êî¾]ïÝÍñtüÞí–Û®¹`çÇ“OP°Ú4õ¶ëQNbp±kî¬u=Ö;«W¸nÁÍÓÑ­ýt¦
-õÇI¬ÿ«vkÕxן+ên|9`çD”T‡eèMû\¸Úg–a¨ôb¶'’&,ڳٕߤs¦ŠGÛ5“s
-endobj
-1437 0 obj <<
-/Type /Page
-/Contents 1438 0 R
-/Resources 1436 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1408 0 R
-/Annots [ 1440 0 R 1441 0 R 1442 0 R 1443 0 R 1444 0 R 1445 0 R 1446 0 R 1447 0 R 1448 0 R 1449 0 R 1450 0 R 1451 0 R 1452 0 R 1453 0 R 1454 0 R 1455 0 R 1456 0 R 1457 0 R ]
->> endobj
-1440 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [370.2338 737.7879 438.9058 749.8476]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1441 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [364.6948 707.7941 433.3668 719.8538]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1442 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [226.7331 677.8003 295.4051 689.8599]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1443 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [283.1811 647.8065 356.8344 659.8661]
-/Subtype /Link
-/A << /S /GoTo /D (tuning) >>
->> endobj
-1444 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [287.6042 617.8126 356.2762 629.8723]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1445 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [352.879 491.9657 426.5323 504.0253]
-/Subtype /Link
-/A << /S /GoTo /D (tuning) >>
->> endobj
-1446 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [307.1508 461.9718 375.8228 474.0315]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1447 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [334.8268 431.978 403.4988 444.0376]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1448 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [337.0185 401.9842 405.6905 414.0438]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1449 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [364.6945 371.9904 433.3665 384.05]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1450 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [374.6372 341.9966 443.3092 354.0562]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1451 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [292.0276 312.0027 360.6996 324.0624]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1452 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [319.7036 282.0089 388.3756 294.0685]
-/Subtype /Link
-/A << /S /GoTo /D (zone_transfers) >>
->> endobj
-1453 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [460.1655 252.0151 533.2211 264.0747]
-/Subtype /Link
-/A << /S /GoTo /D (tuning) >>
->> endobj
-1454 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [362.144 222.0212 430.816 234.0809]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1455 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [293.1435 192.0274 354.3435 204.0871]
-/Subtype /Link
-/A << /S /GoTo /D (options) >>
->> endobj
-1456 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [288.6803 162.0336 357.3523 174.0932]
-/Subtype /Link
-/A << /S /GoTo /D (boolean_options) >>
->> endobj
-1457 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [328.5503 132.0398 402.2036 144.0994]
-/Subtype /Link
-/A << /S /GoTo /D (tuning) >>
->> endobj
-1439 0 obj <<
-/D [1437 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-474 0 obj <<
-/D [1437 0 R /XYZ 56.6929 117.6023 null]
->> endobj
-1091 0 obj <<
-/D [1437 0 R /XYZ 56.6929 92.6648 null]
->> endobj
-1436 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1460 0 obj <<
-/Length 3433
-/Filter /FlateDecode
->>
-stream
-xÚÅ]sÛ¸ñÝ¿BsOrÇbñEl_šË9©ïÃimw:7w÷@S´ÅFu"Ç7ýñÝÅ.HP¦,ç’›NƸ
-ùõä§_ÄdÇþöDD:³ñä>D$³LMV'&ÖQl´öåÉõÉ?;„Á¨[:Æ¿XÛ(¶*a Òc Œ³(Ñ0„ ¼Y”x˜*ƒ©2‹Rzœ’/—õÃl·™ç­Ÿ¢Mt¤S©yr±ÌwMy:Ó">ÔÛ÷ uÛÚ|åGóGêä<§Zc›L7ÛSi§å‡ªÞñȇrÛTõš¿ê;jñš#ê^´ÔÞoóuËÓî«嚺Ų*ă¸i¸šDOfRFY+G¶£/vSnWUƒ»Ñw[SËÇwý|ýH"´¨];'R7˜´v'Æ^åqúÍ~«×eä¨@NeZÙçnÅFY–Jæ4Q4ÛÔ˪x»—82bÿZ”ÖÓª¡v]>0
-²Ê¯FÜ¢ig‰¯PD
-*yOˆ[‡«L¹R
-yÏŽ§Øa^š·v¶‡¶†B¹ ²U áû@8Ý34–ÌïhàŠlºýOY´‘Öüæòz³7ùºá ?ƒõ¼„½T"XtË%ó͆œmÒí²Ú-Ûj㧆IãˆtߌòVfþvaæ3ÌE¤e½ö†½Ê®áì+¹w͹(döë._ I_j!šg ÜuêbÊ e{ éƒü$Ò)dÂ$5ò%Øâ±àÒÊHk£‚ÝFvˆXvÅ›³4&ʬô"
-¢Ãl!ZCüoÕ1T~/–³ù˜Z¤‘U"})¦¦\Þ<šù,p¼1rdd–"®ºÍG0*<·I€yôˆÑ~yWê42qj&F
-h
-Ü¡Hä12XuÔÇ<Ô¾
-‚Jgâœ1c&áâ» •YÒ_(Ž<pú’ú<*áëB_(» Eø
-^©À¢?y0¤RXµ©·«ºi Ù´{æ -†¤· ¶8§3î= a\Qø°yè¡&`åŸõºgøÎ˜†¬Ú¿`‡ÐÂlª:…C|V¸ÃI#
-öõ:q匚º· Úm
-RKÿáß*Ý{]Õ¼ïßDûB«v‹¼)[æÐä}žýCcM%!Ù±XS)°_±ÔGrÇÑH3¼ñk@‚¥×UµÌ·i¹P|ºìrìC‰/Äo}ɪüX”›–6h¹—õÑ1o]ßì&¥Eþÿ>{ѽrûdÿÞÍ~åQ îà˦%æKŠŠ´Y”âÌ#¢"bŒ•ÆDE‹00LAÛ‰
-~Œ‹
-„úqlŽŠJ&»‡g/*§ìÑÓ­Û472&43©L”¥ñÞïžž‘Õ.×xòÈ£‚ÞÀ—”þpÿ‚‹„¸òXàždVAÁ/ñžü"¼MdU†A½I¢$ J*£¿Ès/àÊЕ\t
-ºìíwsö\™@v1é§çûuWç¿î?£î
-¦´Eb#ŸRòXîWGàÝ“­N»‡B
-ßP©òâ^ùqµmËÕ¦¾“®ò9?º"›Á·üeÙ2ŒŽbìÞ¹FØ4uQqÝÆ=Ûú×ì¼µí^hK©û€É¿+Ü‹¡Å{Aw¾®ã ˆyoÕ´]qì—žÈÿèÐ/€!{Å·¦‘ßëÂsû³Üÿtr+0JjÜÌt戉Âã§é>åÝψŸ’þ?Ɔ endstream
-endobj
-1459 0 obj <<
-/Type /Page
-/Contents 1460 0 R
-/Resources 1458 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1408 0 R
->> endobj
-1461 0 obj <<
-/D [1459 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1462 0 obj <<
-/D [1459 0 R /XYZ 85.0394 417.3459 null]
->> endobj
-1463 0 obj <<
-/D [1459 0 R /XYZ 85.0394 405.3907 null]
->> endobj
-1458 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F41 910 0 R /F48 925 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1466 0 obj <<
-/Length 3030
-/Filter /FlateDecode
->>
-stream
-xÚÍZYsÛ8~÷¯Ð#]qqñÚ7Çv&žÍ8YYS[»3ó@QÍŠÔŠ”ϯßn4@²ŽÌÆ©IRe‚|} »!>bðŸ¢8Œ3‘’L…ãѨXž±Ñ=ôýpÆ-ÏØ1}®·Ó³¿½“É( ³XÄ£é›+ YšòÑtþK‡2<‡XðŸ·×çc±àÝÍhq©"\¾¿ø4½žPGlYßÞÜ^%£ÇåÇÛw7?ü<¹8OT0½ùxKäÉõ»ëÉõíåõùoÓÏ®§ý’ýmq&q½ÿ=ûå76šÃî~<c¡ÌÒhô/,äY&FË3É0RR:JuvwöÏ~B¯× Ý g¡±Øƒ“à#®B© Ó*ÊB‘&˜0@5µ¶@••Æ­Ñ<Ì¢ÈLÀFcÉÂ8ái1·ƒ§ç žWº¥š…EJ·Íf]h÷V4ë¹eÉë95þõ kju =ní€éƒ^Ú…HOâ°¡ÂLqeÖ1}(aNeŒãAÑ•MýiTùúœ§Á½®ž‰cÖ¬ ¥yÒs¤¤Á‚Þ—Ô?ywIdŸ²“Ìu[¬Ë™n©§{ÐÄ[4u¡WQqÇHÌé•6Ž3–Ûl ö»¿²ˆM&ð—Û€l7×C›ÓŸWU^Öøm.‚'ƒ•ä2Ðyñ@´ÒömZ=EVYÜ•µù,Piµ0`µ™Ue‘#8ÔcV OÚ24Ü–E
-@>êu^½ÖO4Ådb?õ?ÚégÚ-¨œëº+eLèEöò.—«J/Y;‚ÿƒûÕí]Ø+€Ó’¤{©ÚÆ .ªÍwîv 'T”{>÷»_5O*Ûì–›eŽëÆv/ –ø´Ô—[–f®Q6© ®Ip–H­‡|ÈÞêŽ&42í} R@-ëE³^æNßêGéf_æÏÔ˜Yn½\uÏçœó ܧhS£(ŠÛCÃ|ž{>®˜ÿqbËÛ¶)Ê܈ߟÊîÁöÐc•¯»²Ø Mšw‹´Œ
-ÜE³\5­›À}¿Õ0æ¥7PBt×€$®xÏF¬•iü
-Ë,„™U^hØÈR9sXg´xÖ%´å}m„Yäµ%%6LZÏwØ ç,XY¼ôúÑðÀ7fÏ–×j
-z*è]·FlªG¸òh[?˜ÅzŸA!œèK9¼dA@°¤÷àé`V<À`bÁ“ m@ õýpärSu%Ø%Q VÂb‚„•^/ËŽ,^¸8ìoV]¹,ÿ°Z`87kak?ÖsêÏ9Úý›}s~¿]é¢\<;owÖØé᫾×:_Ï,3ÁIí™5én]:ƒB\·]HÒ¸Óz÷খ%ÐH¥9B©s}?¢ÆÄ;s{þ±?€Î\ßy¼œ÷{§ ˜ >DÈãËkJ£P%ñ`I/Çtjií8®Ã9þGKBо/ÅÁ±Ÿøü‹Y¢ ^,(IÃ,Uéqz®S y1®„üáX ŠŒCÀÉ-8·~—hœS ~'ÆÉýPÇyÈþL±'¾w‚ý}w‹œepH±l)&i’|IÜ(U&,Ù‰ÿ¿Qn!žY\c0—mºéÆý¦Æ‘HÃTŠá8MF‘¡â¹¶æ©vÖL.S¤Õô’p‡¯×­'ô“Û¡&&6Ê/­Üͦ¦pa gQ‚߇…xËý:l8xA)… ³£ùÀ‹)݈è2J„'P,T±ÌÈÍB|~>ŽUˆ^º. AýÌ¢€ÇãYÙQÇc^m45­#ãŸ]tC]ŽÇL<Æ*ü.’ÉØ˜X* ¨Á9¶k64À™ÎAy|ª[A©$LKþÄ”nÄAAázù )Û'(•Åaɘ\ÎôÈ)ʘUùà,—z ç$ÆUùh‰ëÄaD ê!Q(%B’W5'²#æô*…8JˆÇïÑ!_½O\tXoêÒx@IÑ)>[V=7G¾r‰K˶Z—Ë|]b
-†¯àakf)ƒð‡H&ÑÙôÀVqP iÄÑššJ%,^@2bÃKÞðõ¡y ªÆ„@±‰Ni7oMÙÞèÒ|vî"E㻜Ò,íC³©æÃhd^¶En#Ó#JíkË×ià7õ>
-󪌟ð>
-O)Èû$ ÖR)ë~2ßý¤žûɶî'íÝO¶“]a_Nq7]S4Qùõí ÏiÖ.{l»¼vžgçD÷§="1Š×rCÄ ^Ub ‹>,=!1HuS!È M®¨î….°°+›%¦b_RÔyÞå`Š ‹¶œ”&RÛ$c)·U ;€Z&ý‚'%ØÂ
-‰«ŠìuEm³ÔèíÁn4Œ
-*}6aÒ·#ÂóPy-ámKuE Çã,” yÈ’aÍðEÜ, Ví`"ÁÔÉúáJ‡2†°9á|/šªjž(§ô*5¦–±Çvš—œÂÊûxd_ÅŽ-—3Jp åÜEtíá šàIÿÂúø[HžÂ$£Ìà°õJȤÌúBUœ¨Ø¬„„ƒ¯í¨•ÏçÖxM!EdÁMM=d•и¹¥§±¨7Twé¨Ê
-Tz*S@WE˜Ÿö|í7Q{ì÷ÊžÍ;u@SÄ@¶]“ײÝoþH.ÂTJ$$¿JØôçþ¿U\
-{tñ rCH¶yp14k6Ð~¢Te_7Þ…}ë‚!-?è…ÁÏCÙ[þkyáo²€VË(K&Êæ{—דsHä§&q`Áû¦êo~]F|_vÎÁzÝÙ»–NŸ8ß
-Â~øôñÒéìÝàbÔ÷Z÷U3s1îªiKÌøÜÏP6+ü¹â†þBÉÚᇗ‡áôúu{W BJÈO±ø ¸Æ|ßO+Øè$Ö_úcÖízÁÊ4=p{dkÒ“zœ ±NÒ?µu¿zµ\ÞÒÿ«ÆR_endstream
-endobj
-1465 0 obj <<
-/Type /Page
-/Contents 1466 0 R
-/Resources 1464 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1408 0 R
-/Annots [ 1470 0 R 1471 0 R ]
->> endobj
-1470 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [312.8189 570.0778 386.4723 582.1375]
-/Subtype /Link
-/A << /S /GoTo /D (the_sortlist_statement) >>
->> endobj
-1471 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [406.3277 570.0778 479.981 582.1375]
-/Subtype /Link
-/A << /S /GoTo /D (rrset_ordering) >>
->> endobj
-1467 0 obj <<
-/D [1465 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-478 0 obj <<
-/D [1465 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1468 0 obj <<
-/D [1465 0 R /XYZ 56.6929 748.2826 null]
->> endobj
-482 0 obj <<
-/D [1465 0 R /XYZ 56.6929 748.2826 null]
->> endobj
-939 0 obj <<
-/D [1465 0 R /XYZ 56.6929 718.4268 null]
->> endobj
-486 0 obj <<
-/D [1465 0 R /XYZ 56.6929 661.7689 null]
->> endobj
-1469 0 obj <<
-/D [1465 0 R /XYZ 56.6929 639.4577 null]
->> endobj
-1472 0 obj <<
-/D [1465 0 R /XYZ 56.6929 553.1414 null]
->> endobj
-1473 0 obj <<
-/D [1465 0 R /XYZ 56.6929 541.1862 null]
->> endobj
-1474 0 obj <<
-/D [1465 0 R /XYZ 56.6929 361.0617 null]
->> endobj
-1475 0 obj <<
-/D [1465 0 R /XYZ 56.6929 349.1065 null]
->> endobj
-1464 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1478 0 obj <<
-/Length 2852
-/Filter /FlateDecode
->>
-stream
-xÚÍ[ÝsÛ¸÷_¡·R3'¾¶O9GN|¶*)mÚ»{ %ÚâDU‘¶ãþõÝÅ‚¥X¢ïlw4™1 @ûùÛÂ; þñŽÓ1“‰êØDÅšqݙܞ°Î ¼ûpÂØ^=¨×õÃøäû3i;Iœa:ãëÆ·\Ìœãñô×èôã»Á¸?ìö„f‘‰»=mXôÃùÅ{êIèqzyqvþáÓð]תh|~yAÝÃþYØ¿8íw{\*-à2|âß—}tvþs¿ûûøÇ“þx½äæ¶8“¸Þÿœüú;ëLaw?ž°X&Nw Ábž$¢s{¢´Œµ’²î™ŸŒNþ¾þ`ã­Ÿú›ã1ZvzšÅŠóý¿J¿ÀàW)dœà:·6mc¥-r^©˜%lÃy!œçJÆNJݱ:‰„wÈúçg—ÝžâNDçÓlQå¿1&²ØÆmTÍ2"NŸˆHS$\t9¢Ž»2›uõHoRjΊ²9ˆ$‰Þgåd•_Õó ž¢L:VʼnָŽ„ð ƒêxWd
-dfæV_Æ>©\,A;½zÀkJDÀHÇD›D`«VðÄoü|0êŸþÔÿðÈJ V]`UqŸOQ(<ÑÈ_ž¨è6«fÅ”º®‹eU¬òÅ 5Îe6!òKö¸î¾M«l•§sj¡0ðùþb?% ²Ð¦Áœ¼Ñö@‚žPL’Vƒ ¯+-õšÒ2‰‰…I\›´€1ŽsCÒ½?¤™¶Ñ0[zYe%˜QZå0I ×ø”õPèI§Ó0²ÌJ°Î…‹ú_— –[œ;¯ûÞg½ýrX"œ;¹_"Í­¾–D@‰ÑÄ$ëû%bÀI2%[$bœÆÉ£yÓ±hÆ@lîö`>–wWó|B4ØExW–Å$˘Rû!¯f[³À>ˆX¤·™/:úTÖÃý{åy“/ÐÞ}ìûoÔ å-çéÄËz¼¥aäèã©Wyù¶]tuWù_e;zQåó9)ApÎ@Ñ~øiÆà‡}HÎXwI,MùìJ$? _ Á½LÞÔ?ib•¨6õÒ‚v¤^Ÿ»=Ã%ß–à
-ö (»Nø7ÊŽ1 ÀD>'ªÖvj‘²A&L » Îà€
-Ÿá¦w•WD‡(zÝÛG2²˜à·îÓù] Ñ·Í‹ot|YIÝWY¨}µ¯‹9Žš†·ô¤ÅÂ4¯Ô…–IÄñ'¼-M œ
-zBn|GadþXO˜æH¸YZ5†©!)
-,e,´iÓ`PרüÈç±G²2(°rM•«˜úP{ñ¹­½4º–°ç%Œ”×^$H{‘:VíåÇ¡½¢¡½‰ªµW)dƒ^qÙLî¡w“ÜCc'¹‡3áIî*|扟^{¬g ¦çŒ¦¡Ž/Sñ7­¾)–
-Û/ŠiN‚ š’ì¦Qü LSDß¿Ú9srµinlÏÙ͉Ó&{‘A6˜þZåª7Ð a`„“m  /–ŽQ¹Ê›£vIÒ0G+ر#½c‹ØUÛ"Ò)‘B¶Z
-gÐ!SÁÍ N ï–ËbUÕ²ý˜ûÛ“C·#¬9bÌÀ9‹•4»E‚ÂÄŒ9*Ù1Þ›ÒIª0ÂósŒC‘Úhì¦d–%ß^9Ù“¼¨DÒÜík esç¹í5αÌî\¢þs³ê…p“€–Ð ‹Wªyùú›KØ’Á ‘ØNÏai\î1Üú‚8d"RPœ×·=èþæüÀäïÏÀ5næˆß ( óS&óåKã¶¾U « q̯ÝhYPD«æwœk°Ð:èaB`¸SÍÃE‰ûtžïhÈúº
-d‚Ýw#^b½S>uuZƒÐsoËoþÇ€²Q»=ÇekY…E!«l²»r-]¬°O,ýºõ.Òendstream
-endobj
-1477 0 obj <<
-/Type /Page
-/Contents 1478 0 R
-/Resources 1476 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1480 0 R
->> endobj
-1479 0 obj <<
-/D [1477 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1476 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1483 0 obj <<
-/Length 3246
-/Filter /FlateDecode
->>
-stream
-xÚÍZ_sÛ6÷§Ð[é™%þí=¥‰Ý¸“¦=ǽë\ÛH„%6©
-¤÷Óß.vAQ2§×d®ãX
-UäÉlPÈ¢ˆfë³8Q"‰•ò”úìíÙ?†£^7uJMq(…Œ5»P±ÈaýYVŹÈÂìhÙÿm–—$œ]H)Š$ù€4/^\õ3Y]ȰþñãL¤Y&ãGjd|)çÙ,K¤ˆRð 4þ5Ø)UIÜ® Yìºé̶18¶Xœd"–0-ó×DG%)pD¨%`$ù,ýŒÓÚ€Es)Ó'´¡
-!qÚxñ
-¼»ÈUðb¥[ Jx:É¢@C‘fÁëçèÕil¶ç2Ú®]´5QŽbtgJ«;êøîú–UC„Î)*몼
-ƒèLyâÖÝ6ºvq:Q8ªut s±¨+mWD±0 úE×Ó@;0àù+ž:Zy£.¬нˆ‹•vFÞÜ0Ø5°¼£FÓ–RÍE,cg‘ƒÍÑA' ÖÀÈ)6Š%ðÂ2rª´DN76H<ðKFç2xï‚ ´WF—.KÀ _Â$ì6NæX‹Z[ËõÛÛ×Ð+iÜnU¹SxAÒ¢m,ä5ÓtÔ&½À
-`MäÞP檑
-´è Bñ‰ÛËP…QöªšÆ}ćc£dKéºê*Ã#݉„Ò_g&ƒ€Ù:lÒ,«Ø~¹4–Á ~ªË#Ð…,^µ}ÍØgÎÝ„q"Ÿg" øØ–›wT–ú¹ÇS RˆÇƪµC^ipÍs5ð›ådl£,껇ÝàåÓ[œûÅ
-öD¨<šD:-ûá»áÉZ0Ô±aaFÅȰU5C(_<©ì·œÀÉ”ÞG|Ÿ!6Ä£þþá/^ä€cõâc`WùÈÆö7—{]÷Æ“ëºÝ ‘yˆá´øQ|Î÷ñ9JC>RX£ûψ@8H*D²€³ ª§œ3pœK×),$,ôv[Ñ=’‘-–Ü×®çxp™‹¸ uûÀËt¨X?±aNe»Ö^HVLi|x†'„Ö<l²?jŽ¿÷Ÿô!^‚ò_¢(Þ´„½±~h–ÀÇ÷Þ®G¶xùæ­àÛáø* Â+w«ÑS–Ñ9ܸÂ4/¥\×õîJŒ7Ò÷›­±v¸­ú´&x|õæ܇
-À±¤Ë¹qGGhøè@¡‚ÚÓ5 [³Ñ»P[.=Lª±Î ‚r¸ë^74…ÏRáÁ¹¥+á¾*½¹zA3e¨âgS{ÃèBðîjÃUˆRµÞRïpþ¡OmHs`ʵ†(Æãx9¹°±Ó\1 lûp<oœ †¥$æ‘_”E‚P‰—¹¹¤%8 â÷4uú¡ Õäƒ Ý¸ÝËO¬[ëž~rö`YŒ<
-\¿¡ª;’l‡=EjC¤ºjè) ÐH ˆ¬_®¨e­šÞ‡$˜†C-UG ÙZ8zóš—í-E\ìàaK´öCWåºC•bŸòn¢ÜÊX‹‚%€E{ÔË×ÏÉ™î>ˆ•kîÑÄÇsT11Ë]Õ­Fà³ÖÍ;T‡³Ó‰•+fˆ¯G4:õàÑúÛÂQ´t–F¡uCytáÓ~O,åU¾Fi©êmuÙù6Î9¶îKÔé6Üpt©çà®k'-wµO¯x¶ÉÉ¡BJCq¬HƒÓëÊ!°ñP@)ϘD×HïâÒÜ}’yÞͤ{>T^ì ‘ÕzkŽ&®³n›ja'o.Ï}3äèy{ïGê£qêali]sîuoähã»vÐû=lXã»î#–1ïÞYß·•—
-²GÓà8l–!4º(.3ჴ {åbu¯×Üû 4ÊÊþ†)ÙªÜ_ŽGñÖÝ…]eûEh×X¡]ÃVB:DnõÎ!g¬ƒ`Usp€qø9c/õTø÷’ÌãàG …l7œ
-óÕ©À©Dà¯Ö&~®ΞŒ?ûã¸ýãL¨<¦Åp|X(Ü]>’c1~Ü,úÈÄendstream
-endobj
-1482 0 obj <<
-/Type /Page
-/Contents 1483 0 R
-/Resources 1481 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1480 0 R
->> endobj
-1484 0 obj <<
-/D [1482 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1485 0 obj <<
-/D [1482 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1486 0 obj <<
-/D [1482 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-490 0 obj <<
-/D [1482 0 R /XYZ 56.6929 457.1244 null]
->> endobj
-1487 0 obj <<
-/D [1482 0 R /XYZ 56.6929 432.4221 null]
->> endobj
-1488 0 obj <<
-/D [1482 0 R /XYZ 56.6929 246.8779 null]
->> endobj
-1489 0 obj <<
-/D [1482 0 R /XYZ 56.6929 234.9227 null]
->> endobj
-1481 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1492 0 obj <<
-/Length 2988
-/Filter /FlateDecode
->>
-stream
-xÚÍZKsÛF¾ëWð°¨*œ7€½)¶œU*–³²RåÚ$ˆ„DT@€K€–•_¿ÝÓ= H‘²¼–k#0Ïž™¯ÓÝC5‘ð¯&™Òäv’æV8©Üd¶<‘“;èûáDñ˜i4úþúäïoL:ÉE\ߎheBf™š\ÏM^ýóìçëó«Ó©v2ñâtê¼L¾¿¸|M-9}^½»|sñÃ/Wg§©M®/Þ]RóÕù›ó«óËWç§Se¬Ó@À0‰¿»<§Ao.~:?ýýúÇ“óëaËãc)ip¿ÿ9ùõw9™Ãé~<‘Âä™›ÜCE
-•çz²<±Îg‰-õÉû“ G½aê!˜¬RÂKO¦ÆŠÌg,k|.¼×nwÙÿmV܉œLa+¹sOì€æI ÅÅ8c—ÔTi/rà(0ߦ§©˜oÕˆùÊaœË'©SB{ äþ‡â§WïÅÛ‹kqþú`ÎS—\
-¤Z( –dŸÆïnÌŸyÅÿãí³•Ú[^Ÿ>óêwq[ÒfšžšguÑu‚©«Á@ºÈš#'”’¤‘hA5˜S Òõºêf›®«ÚfwÅ·Øü–³v=ïl,Œ¶"·Ê¢g€‹ñ:™—Ýl]Ý”s¬š¤¸i?–p.“ÃöÛeQ5ÔÞ•ëåšçt}K'¢¾ªp—E6…ý+†¹UÉM¸_lcö´›P˜•ÔK­3¢>ïÂ>ã;ž}¿¨  θµ›tuÍÚ¦‡=#Ï
-l€ÏªX÷ÕlSk®W%.ˆÅ
-ÊPR{W¡*t=ÖtT¨¹o©¡_TÍÔÀS:¼º¢*îëEüòćU hYÕš‰„IæE_ st‡²½ –
-è­©î÷ÔÈH`'ú6¼~`+Œcõ:$¯¬lZ³²9»UF(³õ†Ëƒ¦8Ëú໳E°‰¡µ¥oÔ¹ÝA÷\d6–nⲤdËyO=ù.&ù.à
-iÓèw-7]ÀÃ÷FÊÜó â!.S ä:Ÿî‰t×µ³ªèÃm²ë;Ž øÖðaÞõgì­é{xAó
-A*0±3mc§=ì7³“ñ~¾îˆ¦JÞ^O/‡šÉȵwG2&à³å`rSá
-uà …/”¿$º¼ÔM9ZhÛnÛm0d’
-ÎÔ8’5ƒ Âŧ*³—¸Ä>”h”7ïHØvtХܹ!÷ÅmÞ”3š77(›v
-fv1&  íüå‡×ïÞž]\Ƽ„åìðeì€ÜßÒn—$kíFÒýA–ŧj¹áÑh붯m|;lá’c¸¶ÙCÐÈu·Í®˜½vì»9ønè=8-#yø:Ci62ËÀ€C€òäO‘Œ3Ž‹-¸6™ÉýçÄÖ:
-endobj
-1491 0 obj <<
-/Type /Page
-/Contents 1492 0 R
-/Resources 1490 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1480 0 R
->> endobj
-1493 0 obj <<
-/D [1491 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1494 0 obj <<
-/D [1491 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1495 0 obj <<
-/D [1491 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-494 0 obj <<
-/D [1491 0 R /XYZ 85.0394 672.3174 null]
->> endobj
-1496 0 obj <<
-/D [1491 0 R /XYZ 85.0394 647.9778 null]
->> endobj
-1497 0 obj <<
-/D [1491 0 R /XYZ 85.0394 430.1905 null]
->> endobj
-1498 0 obj <<
-/D [1491 0 R /XYZ 85.0394 418.2353 null]
->> endobj
-498 0 obj <<
-/D [1491 0 R /XYZ 85.0394 282.7013 null]
->> endobj
-1499 0 obj <<
-/D [1491 0 R /XYZ 85.0394 255.3968 null]
->> endobj
-1500 0 obj <<
-/D [1491 0 R /XYZ 85.0394 213.9243 null]
->> endobj
-1501 0 obj <<
-/D [1491 0 R /XYZ 85.0394 201.9691 null]
->> endobj
-1490 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F21 690 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1504 0 obj <<
-/Length 2405
-/Filter /FlateDecode
->>
-stream
-xÚÅ]oÛ8ò=¿B÷ ËQ"‡²©Óó¢M²©w{Øn[ŽÈ’kÉIs¿þ†R–l%íîÞáP b†Ãá|Ð, ð2!‰æ:HuL$e2XlÎhp{oϘÉ<RÔÇúq~öúR¤&:áI0_õh)B•bÁ|ù)Lˆ  @Ãß®¯¦“ˆK^ÎÞÁЉXòðâŸç7óé-n$õÇÙÕ„hü\\_]ÎÞþr{>Iãp>»¾Bðíôrz;½º˜N>Ï:›Î;–ûb1* ¿_Î>}¦Á¤û錡• áJ˜Ö<ØœÅR á!åÙ‡³Ÿ;‚½]{tTMŒ.>¢'.Æô$5Il=—å$š…õÊ|yØ®ó&GÐ|þ®Aà2_MX˜íËÖ!Õˆ±¯ŠÖ¡ày6ù¢®–Í«Ió¨Õûûõ2 Y…§îÜUù×mY,ж|Bx³ÍÅï”ò|i)%áªÞáVþ5ÛlËü•Ñýë˘õ$¤AÄÑRr+[ ºA´"¸&J¥Ð q,èή‚ÈãDBÆhÒ9U D) gÕC¾3š2ñ>Ûn‹êÿ(*üÎnâ‘ÛI³ØÒ¼Í¡iXe³R:ÜM˜
-ó¦.÷mQW¸û;•´]g-b¨c¶»¬jÊÌáÁÎÊ®7xjvƒÐl¹tDܰF„ s)f-‡¾XÀÚ¡wOÝäp‚ÐàÔ8 J)ôó¦(ªÈÞaD²Ý6Ñ x:Ó€ŽVYÖ›¬°ò¤aV.TÞÌoq‚,jû]6¾)§á´jwEÞà!<œXöàˆ»=¸ÉâÆ&[æCJež5mÔÖѦnZ#
-8Ý¿!™9.c<©2äÀY‹v`“¸sO~ìžÜù—Ù€ìÆ'¨÷å7ÖÙƒ£ênp$¶‚0GŸž;¯ï.IÀ ’89>‚
-Á½I¤ò”d6kÇ@w
-j<ʤkuÆBE¸ä_@ÞÅ( ,Ž"Å
-¿È,ìePAü}ëÌanêÎÙ,>zðà1<ƵD^š
-ÀûÀ2á9æ‘k—š?9l²¨7Ÿ„1ÿÃqñVPÕAB)Iûžâ-´ )MŠ÷Ÿ;åÙè ò,xŽ-·ô'†¤"/R$•"i*U× ê¦æD«4ð…>ëÒß®ogogÐðH&h8Œ….…÷Õ§@i ӻ믱o% ¥ûŸh$MˆâPØ_Ôˆ¢ò¯Ë“H¥  £ðŒ³XÕ5éyy^3xgúßÔÌ¡1ü8+ÓŒ¨\&â)Q:NûêI§Ê9#©¦€-‘2VßÕ 3°…–ñ³Ñ¢Q‰b@©þÄ‘R»ynðö8é÷ѽæ00IYH
-ª‰]¼\õZ™€3"DŒ°-Í5x 4Õð?O&  ~–BÃÍ9U±¹:ø0Bc­"õÖVÖƒ,àõlÃ75Hô„ò„£>e+L =‡‡˜å)ÜŸ*ÍzüÜ·vÉ }F$óRù<x}’qL”„
-¤NôÉz/§~ÌsÈs ;Äü` ôxB'„&PÜü<(Ý<x
-Úañv/æÅ¡(ÝêM±Ë YôÁ‘‘P³.ê EU0U‚¦w¸v” q…6hc
-ÐGÛG)cñ¢-|£n
-¢XxBŸGØä.„ºÓ ¶9xìÍÐä­u+潕u\òn
-PøjÑ«†mÌl2»³ï¦9±(X3˜œtRëá´kæ¹ãY}üøÑ¾pÑðâêü½ùIAÁúýùì*ú0½ýuz;žÛÌ}ÉÁÀ(”Ùâ!+;ÉÀ£Ú‡“p5™þëüýÍ»)¹¸~OaÇF2äbˆxjjf(Bô²7?ÉÞ¾’|úþ¾ü–ªAÊ•z-á=a5ö™ì-¡óc]ñûfö®w¦c¡œ©DÊ.yã Ò9pe.Ó?S Æ~.‚kÍo<#?îÐà›/ßûSR¯Õ…
-endobj
-1503 0 obj <<
-/Type /Page
-/Contents 1504 0 R
-/Resources 1502 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1480 0 R
->> endobj
-1505 0 obj <<
-/D [1503 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-502 0 obj <<
-/D [1503 0 R /XYZ 56.6929 732.3673 null]
->> endobj
-1506 0 obj <<
-/D [1503 0 R /XYZ 56.6929 702.3779 null]
->> endobj
-1507 0 obj <<
-/D [1503 0 R /XYZ 56.6929 613.0847 null]
->> endobj
-1508 0 obj <<
-/D [1503 0 R /XYZ 56.6929 601.1295 null]
->> endobj
-506 0 obj <<
-/D [1503 0 R /XYZ 56.6929 411.9014 null]
->> endobj
-1509 0 obj <<
-/D [1503 0 R /XYZ 56.6929 388.7145 null]
->> endobj
-510 0 obj <<
-/D [1503 0 R /XYZ 56.6929 323.2073 null]
->> endobj
-1510 0 obj <<
-/D [1503 0 R /XYZ 56.6929 298.2648 null]
->> endobj
-514 0 obj <<
-/D [1503 0 R /XYZ 56.6929 108.8668 null]
->> endobj
-1511 0 obj <<
-/D [1503 0 R /XYZ 56.6929 82.3901 null]
->> endobj
-1502 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F21 690 0 R /F39 873 0 R /F62 1035 0 R /F63 1038 0 R /F53 1002 0 R /F11 1348 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1514 0 obj <<
-/Length 2145
-/Filter /FlateDecode
->>
-stream
-xÚµX_sÛ8ϧðC왊á‰û–MœžwR§çzwn®ÛÅ–kÍØ–kÉÍæÛ/@¶«½ôz7™ aø¤èqø½Ì0®œî¥N3Ã…éÍÖ¼÷¾½½A&‰BI[ê×éÅÕJ{Ž9+moºhéÊÏ2Ñ›Î?öoþqý~:œ ixß²Ab,ïÿ:ßÇÑpó0¾½ý}r=Hu:z{2¼N†ã›á J
-TPñï‡ñ„îF÷ÃÁ§éoÃéÁä¶[‚+´÷ËÅÇO¼7ï~»àL¹ÌôžàgÂ9Ù[_h£˜ÑJEÎêâÃÅ?
-[_ýÔ®0•1“É´#NRuÅÉ8f|Â8MŠ|þ¨¬Ÿo<‘ö·»ÈúÕ¬¨kúÒ, "þä\®
-túêN‹–j!˜©30•.ÊU±É×AòÄnfYó°B¹ ¥Ë†~?Þ†°l¹™­öó"˜WnšªÛ.ÿ9oâÇ2(ßV0¶OqÛ-‚Mmë¥P8`&UíÊÏå¦ÃvÅ×ʱ¨¾Þ³-
-HM:ùLÜeÖÛîÊjw>õ<,Ê
-–¦&Fe4¾¹ÿývØUP˜ZǼª6³âD-d”°,tˆE×N¤e‚ùX¢ÈÏœBÛR6³€Ö¼
-¥„dÎÝR¼—8Ť´îÛºh]Œ3NUAß @êl̵è9ÎR`oS³Tdí¤3
-³“3£¤Ñ}$Vô§ð_öÏàtj¦Yi˜Ê
-ûy@C{‚†J2kŽU?'¡ˆã‡ük%ÿ‰ÏJ&´
-úˆð½&æ#`*QÕ‚F0oæNý!…Ì™ág‘µ©Ú·}1'ÝyÏi˜^æzþâÈ)1<2Íú‹]µ&Ê'˜LoˆÌƒê*òf¿+°føè±Fôã J´K¡•€´hëÏÕ?"qÀOŽ-ÏÏ¡SR$ƒQ!EtôGÆø~Êøbç% »À9'€ëåtzOÔm¹+fMùµ«Ùýš9-´×õáyÓäýÒuTf„å•{!ÓÖ&áÐ.ÖÛ¼XäûU“4ͪce›1©u¬ªÚdöápšUëõñl?9²,ª¢¢OT0N6èoÃ1’{¾Çp±m
-ÎqµÓå'oVÏDÍá
-" Ÿûð{AW²5©)òÙ2Ì >ÉÇ05ßÐXBáäpôãcBWí'Ñë$ù¡ÒLØCƒ4ÃÅ”µÔ%Ø4Ä 93‹:¤g¢?´)ÈúªE6\k¢|SŸÎ℉ùe_q²N
-¼ÝVx‹ò÷D\IÝž ÷¬:4SÑ‘ïçŪøœc§r
-ø èõíí„]OÞc0¯£¾¸
-¦”2þ/…;U«8/ŽTÓñð®ä«Ãf„ªH ªâXm<‘ÒéŒæ©":Òu
-;'{í-ü¹´ÐÒßñÐp–áÆw<‰óCóûÓðÇË#>^f™ì~[W;.—¢Ý¨ ã’©³€Ä—ú Õ2ýo@ û§endstream
-endobj
-1513 0 obj <<
-/Type /Page
-/Contents 1514 0 R
-/Resources 1512 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1480 0 R
->> endobj
-1515 0 obj <<
-/D [1513 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-518 0 obj <<
-/D [1513 0 R /XYZ 85.0394 572.7144 null]
->> endobj
-1516 0 obj <<
-/D [1513 0 R /XYZ 85.0394 550.4382 null]
->> endobj
-522 0 obj <<
-/D [1513 0 R /XYZ 85.0394 469.4994 null]
->> endobj
-1517 0 obj <<
-/D [1513 0 R /XYZ 85.0394 442.3384 null]
->> endobj
-1518 0 obj <<
-/D [1513 0 R /XYZ 85.0394 234.4857 null]
->> endobj
-1519 0 obj <<
-/D [1513 0 R /XYZ 85.0394 222.5305 null]
->> endobj
-1512 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F21 690 0 R /F62 1035 0 R /F63 1038 0 R /F53 1002 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1522 0 obj <<
-/Length 3608
-/Filter /FlateDecode
->>
-stream
-xÚåËrÛÈñ®¯àÁU¡ªDd^˜ŽZ¯ìhkW»±˜ªTy}
-^`í©:Ro™!Nv¢ƒÒ’ì³nñsÊ´lägÙppéÈrDþ@[á±JÖŸë"©·´”«þRDZ{1.'€ƒœGÜÇE²à!˜
- Ýœ“q?¡cüÇ+˽WÈ¢OŸ& ǰ·[ùð Ú!™™¿C“…Dɾ$»}‘]M ¤Ã€Ë0|íTê[OµìJ^¥S& ¤|áÔÇ•c¹
-±+6­­<`²•³Gõ,N(æ·(ÈZ±Â’¢ÄW¹0öØaèŒðʪ¡F²ª«âØXõÕÎ=b_ɧ8 Œ±?Í›ß?ܾ¿½›:“Ý…íž
-X{ãBá±Ê@$¯1Óü
- °Ù÷¨‚_qVnÆ)F¼,·Àqœ}>í³WÅöº!Û»\Á&’û„FªÒ¦¯ÐUC<X¬°â
-„Øö<zgû1ju èJæ¯ÕàqafTƒÿÏVyD0.‰‚¸’”(2q¿vÿ¬†/ ¤^œ¡´Œ
-uÇe9qó¡”
-"¬R5=›¶Œúµåé÷7w7lâ¼¼™JjüLz;šæÎ{4Qõøí¤£»*ɾ4Y‰‘øHß(ˆB IÍ0¥o# ✔Þ­²N§-øì3ú„ÂbÐpÃ1à6A,!1AŒ;|"/¾Y=BÄÙœqÈí
-œô¶\þ::ÇÛ_¯ïïõ‰^(ÖÚëÔÀ”sÎŒ»Žé¸\pÆØü:Móþ&ïr°wö`Sº àÀÿÅŠSàp‹s h9PôfËâÒC‚Ú!àÏѤ§#ZΖ…Ø»ÅDŸz3i“±ÞŽîöÄmb³7x¦ÇÝ~8ø‰-âg=•ýÙë
-«q·Šž+‡E?ê†×^½äðoupò0®Œ ñQÁò$fºt„ÅcÕ–©ÑG§ ¬Ÿ€uñ±ûØá«@ká­<ÌݹˆÖÄ¡,ÒX
-ÜmÉÉ¿ZÞØv垛ђôHäkzAP¶¤KœNØéÇ‚‹&_Ûk%§ì3pWƒó÷ˆ+µ²uML9°m3«dðÒê5´}ß wÇ{WsöÞ\8~q`Úû¯´Š8´èv\/`‘_CžÄhaçm6u©§1­QºÏ¶ ÐXÅ¿DÃêÎåîLU—Ÿ-d„WÑã `xæÆûíMãs™ÎÇ6‡¤¬7½‡*îˆ7-Úï‹S«Ô «~ÊqvÆÕ$:§pÄVQ S~7¦:å…6]´“¼yÄv«†ÐÆàšš ª¤CØvåa,³U¥½¶$en›Cí^\–‹[رÂX>‚ìd”|`ŠREM‡N§°â4•kœ‘'
-
-ìì"(]é:R󘺣+A%æuåoדû§-ÀJº„÷ÝÑ
- ´0~t—rJ´ãûª®ó ™R#0>Èm¡Èå:«œ¿UÎßÂóXû‘¼tŸ´(_”jû±E¿ýng¬°õ lû¦ÀZGRëØ}p!26eÀ¾„º\H Þ a/}ÒŸ°-AÈù«£™z&1
-endobj
-1521 0 obj <<
-/Type /Page
-/Contents 1522 0 R
-/Resources 1520 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1480 0 R
->> endobj
-1523 0 obj <<
-/D [1521 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-526 0 obj <<
-/D [1521 0 R /XYZ 56.6929 408.8853 null]
->> endobj
-1349 0 obj <<
-/D [1521 0 R /XYZ 56.6929 384.5457 null]
->> endobj
-530 0 obj <<
-/D [1521 0 R /XYZ 56.6929 174.3152 null]
->> endobj
-1524 0 obj <<
-/D [1521 0 R /XYZ 56.6929 142.2096 null]
->> endobj
-1525 0 obj <<
-/D [1521 0 R /XYZ 56.6929 79.8825 null]
->> endobj
-1526 0 obj <<
-/D [1521 0 R /XYZ 56.6929 67.9273 null]
->> endobj
-1520 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F14 717 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1529 0 obj <<
-/Length 2855
-/Filter /FlateDecode
->>
-stream
-xÚÝZKsÛ8¾ûWè(W".^|ížÇžÉT­±5µU;3J¢-ÖR¤"Rrœ_¿ý
-#1|ÿñúSR~\Ü\_}üé·Ûw籎?Þ\3ùöòêòöòúâò|”¦‰‚ñÆ“`ÇÞqy7þxqwþçø—³Ëq·
-ó¼('@”mò½'
-·4 ØQ±’i·£J{;šª@k#1¨¥"ØlÜÑÕ´^Ճݢüó:oÚfßæ§û3|ŸÎÈ´ÖF*IvµÏsP8N‡Õz1ÉWØN†õ=ÓŠí’àíÃõw¯Îe2t룮ûz… Å­,*žgÓ9›ãæÓÅ͇Ë`ß¡ŽA•0:¡5*ZÄÑ`´á_‚×i0©OˆI0­‘Z¾€I»I{0ùë:_ùHzœ ’G•î é+MÔ±î ‰m„$>·Ä·ÏvEô‚ ¤Á®Ž·6ܶOËüOf…аI†ß°"7â(FqH“¾E¡ÞDdû›uûP¿‰¾üïÓx‹Äã:wHôt& !; bHÏnAF¨-±‹€ˆc@ UD@äV“W-¶âá=E×za9æ9“‹ªÍWUV2™#pS—P |°; —ÿÎ`üç36ú’Â;46Eþxžªáó>p:ûÿ}ÃqŠ 1,ñyˆ¢(Ð oûu¶Èmm–¯6n7îÚ¬-š¶˜qoªSæãê;wðÕ÷9ÑpZ¯”ö-›€GpÓ‹Ñ:ò«…>_X2Þ§yÓÀ#<™ ~0Hž°j…Í B-Í „½±fóÿ·®,&)\äUVMó×Ó›ðdÀ<ºˆ˜þ"ví 3r
-ŒÞT¶§hœ|;µ²,3¦˜ü‹Ë‘¬÷8[/–d©(¡éU”ZCEß…*m»YæÓ Ì'OvpB_†QËÈa»‘zˆÓ0 "ºÓºB·5Wÿ<W½Ä6B
-1¾CMêvN~ ä4‘»+_Ôm^>1Û¹˜ðÔé$±!–ïXcSdÀÀ®àCíº§ó¬ªò’;Éé‰üŒ ¤g!ÒCX1}Î
-Q3ŽUäÉ”qZªµ³ £
-•£àžPtUnMò‡Â‡]„Yx”Pà¼uÍÿåÿìY[åÒãÍ›7ýËøÐÍØ± nÒXÇi’šÔ3îï}ë‚"gûaAÄ·T—™ ¢˜ÛiŸ?ÀÕÌÞ#ð¨ßªâ ¤Ò§ÒJn Hm¶Xµ’ÃEž5ëm™#2+²ÉÁ5fklþ’UëlõÄÌòm_¨”i,0ôˆhxÕGýÈ÷êƒ/í™NÉøÜ"_…gÆ,œÅáÊxîì.0&*P7ÐlËOÞ"Â"_É÷½ŽYÞLWÅ„È8ï¤Þä/îòàBÜÖÒ¾ žTÌþâí«Å×Ë8ºäÏš2öô–xëT5µ'|¢Â j¬´û
-TàÅ
-hLò–²¶
-endobj
-1528 0 obj <<
-/Type /Page
-/Contents 1529 0 R
-/Resources 1527 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1533 0 R
-/Annots [ 1531 0 R ]
->> endobj
-1531 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [84.0431 418.2465 145.2431 429.6386]
-/Subtype /Link
-/A << /S /GoTo /D (statschannels) >>
->> endobj
-1530 0 obj <<
-/D [1528 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-534 0 obj <<
-/D [1528 0 R /XYZ 85.0394 404.633 null]
->> endobj
-1237 0 obj <<
-/D [1528 0 R /XYZ 85.0394 381.6542 null]
->> endobj
-538 0 obj <<
-/D [1528 0 R /XYZ 85.0394 179.3483 null]
->> endobj
-1532 0 obj <<
-/D [1528 0 R /XYZ 85.0394 154.7696 null]
->> endobj
-1527 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1536 0 obj <<
-/Length 2811
-/Filter /FlateDecode
->>
-stream
-xÚÍ[[oÛ8~ϯ𣠌¹¼_ö­m’n3I㸃bgæAµ•ÖGr%9iö×ï¡HÉ´-[vâF€ˆ¢HêðãwnMzþHOH$ 5=e8˜ˆÞøá ÷¾À³÷gÄ·Ôa«·£³]2Õ3ÈH*{£û`,°Ö¤7šüIÄQFÀÑÛ«ësÓP£»Q_ñèý7ºº]½»ëŒÑ4z÷Ÿ7FC×J]ïþîæúòêýÇ¡àæÚU/./†×ï.ú~=»5'I0³Ò;ûóoÜ›À\=È-zOpƒ1†öθ`HpÆêšÙÙÝÙm3`ð´êÚ
-Áˆ2I[P£¤ 5ad”5¨Dú‚1Ž®ã‡Ä—äIîËe\N‹r:.<*Ù"-“¼XŸ½$H1&{Šc„ V{MŸ3ÄAö•Ù¿¨S-î AFºýý®†¡|±î±:Ô žÑ@QM€¬„‡Ø¨žbОRÇÇ»ç‡ÏÙ¬?ÜЊYÚ£éëå4:OŠq>—Ó,ÝàæHEzþÝòõÓ±¸aÉDo@2ó†t=Øv„@\Jè›Ük")©*€†É·ER”¼?àŠñhxk!€Ž,èH´Jo³}®>¸æ<ÊûDGn„¢À׌“éc2…6šD×Y™ü»?PBGåשoÏŠÌ1¶D.\9u+ÒǾ^?»… ߈¶¯V€Ãë ]_-vÄÕ’:nv¯–4i!åÊrÉÖKþ¤å"/[®ˆc-×ñÍ„a¨ŽåR0 —¬^®‹IZàîE6Ëba{š–_]éâüúî/,0†$Ä´^³­˜ÒË`ý
-ðÿ$ãrðá”NxÍ‘T¬#¤Z#*qRŒkܹ pß'®Ö ¾Ð@ÔãJŽ ¨¢HÝ0%ó–áÓ}^)Ägß.‡Ýhþ7K=e§Å}½ï±ÍJtbH}Âd•RqÖCÉãÆÅ瓸LY%e€/Ôtã{þœÆÓ±{«1^ p ú  q¬¾vã+(¼×!E1ÏÒÐSÀ¢»7i±-p<‚E’–;[ÊtÂZq«´# #ÎŒh@U9Y¾HDZMªº£¾±„ÓQÝ#`à!Òž0!tÕFuÄ‚jÄ5g ¦6)ÅspçBšœ'Œ&£Òt9z"ƒ,ºg¶°ÌevÐa Ý k9ÄŸF«.ß“Шfßv „›Il”Ç‚’+¤)>„áumPÚ¯DDÊ忆"I´såtÞ-Æã¤ØÃÃÜÖá%3¦¶‹Ye19¶Y¬{»Kᆽ_Ì|uZ<AD¥x„ÜÖîÈmíBχ$vn}×½üZEl¹ŸË¢§¯ÓqµŠÔË
-Y¸?Äß¶îo‰÷·ð¤¹[ï[¡´™gÊnÉZì¡Ý"ײ1‡“ì!ž¦-‚s8Õä§ùÖpN×¹R-@\ÞeîCÔ¶ŒÇªÏ4Yµºv¿üòir{ Y|Ú[‘ ^Ž1ÌeȶPøƒšUeæ®ó$¿Ïò‡mµ -„©ÈÇŒýä -'Õ`»Á ú/Œi:ñuÕ[ëJⵘPÕ¾m·É[7ò y›‡óX'®€EÀü§7¤Ä±ü´0H)qˆ.Ô=¶—J„‰îˆ
-©‚Ð›ŠÆyœ/æ³é¸úNÃ(Ñ*!.•¦Ù¯¢ÛÎBMV[ŽË2y˜;ßbÛd«ïóyQºÂdZ Úˆ3Î|8æ6¤$ðÑ]“ïöÔrúÅÝÙ­¤>‰žÝ‹Cm©ÎŠêð³-]}ðM&ž½Å/mo¶Ç·~áo6ª¨‰®Î«:ÈTa@ÿ¸|ž'îiluÉ>Ïâ¢ðu3÷šxòìž}N*±mÑq6´mXÙ£êð¤4ͦ”jS:åð­®íjf_Ú-·“fý[ô 4RÉäËŽ úãb#¶§ÖWÑ:ªö¼~ªüHí#2UN;6f)QHrÓDÉçy6Ÿïó«Ñ7¡Tto Ù‚W<[¬¸m µâÙ2èÑŠÊØ:«2öš|Nµj™?m
-àY'$a-jäÍ“[Õˆ
-}ƒd¦Ð;û€#xŠ}Ú± Ê¥'Œ$–ˆKÙ±›`=Œ¯@YÌ_ˆåÊWî}Á ä<]4í/ éøþaþi4 À÷ÛKÜz&-@ÑWÀx»ðt’žøM‘²# ÔÎH
-endobj
-1535 0 obj <<
-/Type /Page
-/Contents 1536 0 R
-/Resources 1534 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1533 0 R
->> endobj
-1537 0 obj <<
-/D [1535 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-542 0 obj <<
-/D [1535 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1538 0 obj <<
-/D [1535 0 R /XYZ 56.6929 752.4444 null]
->> endobj
-1539 0 obj <<
-/D [1535 0 R /XYZ 56.6929 752.4444 null]
->> endobj
-1540 0 obj <<
-/D [1535 0 R /XYZ 56.6929 740.4892 null]
->> endobj
-1534 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F39 873 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1543 0 obj <<
-/Length 2146
-/Filter /FlateDecode
->>
-stream
-xÚÍ›[sÚÈ€ßù<BÕaÎÜ/Ž Y¶œ
-òÜ¡L­P!9™¯'Ý¿¦?·úÓÝ ø7I0³Ú?¶þø ·çp¯?·0bF‹ö7ø€1†¶—-.œ±²eÑš´>ïô¾ÍE߂ƹVTµ{L#.„>|Yw —-N AFˆý«ö ®0 B"Ì…ÚÍ%Þ,€$$i+ad”å³ðËÃ<ÊâwÑüÓ:^Lj1OŒhê$œ Ü<§Ñ2™9ÂÛ\zã>¬»DwââYÏ]Ë|»“l厮ûÿq›l’¬èq%‹­kGû³$C„3Ñöïï<`œ3„% Ù«&*8ó Ã%}9ñß%TªA‰DаjÂZùöòÊn–HSÛ[Q Óâíy.Z
-ý1ϧÍ.‚h·G0ÆßWiÁýc”¤YœFé¬h˜dQ–l²dVÌêõj Ö›ýI!L9)¸Œbˆ*mNAÈÀôV¬÷¥JEp»WNòÙf±»©ž”Á©–3þš€YÕ ÌGJŽŒõ–ñäyù÷jÑíInhç&ÞÌÖÉC–¬Ò}tfHI0
-ÿ"ç)n1p­?†7ˆÉCæV±Ôä¼ûh•%wÏ·Û쉿áSÀÝ*ÁUáR†Ÿ Snl)Hý‰1-]Ê&N3tŸ§W“ñÙ3ÂXÇÈÀŸ=|ò|ò»ðyz]¹(>pv\hÂ.Chõð Ó³ŒÏE£Yœ<Åó#=õšl„´A¢ ‘0ò%ÄsLðDˆ•vMfˆ $wJ‡ bã܃8Žÿ 3Lg«e’~=ÆÑ%WG8z6xI ›Rª …¼O™"¸Þ^Õ& âN·ñ:9Í)úª5Ø…RëPHr>ʉO°Îjþ.‚žjM&(’š†<¢Q©]T¾ú2ãÇZFheü% $7G×°¯X“×0ìtU¡°,„BŒ0ý‚_¬ÏÏS¬ÉöÇ Ra|\ &´ ÈÃï0¿am|•^M¦Ùž&2Šmå€cÆ_à«c}õñyŠ5yõB¢§!Û ñ£ANí"ð—»õd;›Å›M`U_ÈÖQº¹‹×¯ –±ÄŽÏ"õtm²IBÚg° †dl7Œ”HQ²¸ O[G;
-ÓÓòR0O/¡ýˆúÍÀ«YDã
-ÃŽÑ8§ õŠh¬(¢ãÍjñTNÅ©u3WªåR[fÔÿ§îxÉ’YQzæð5Ñ\¼]/+KÏœ€Y+B^—ËlÙ^$‹vFùÑ2ZQ–mÿÚ) ËËóaòHzÈÚv|0…è!\¶ùrîgÇ…²3|›—ç«ÈNÙw
-È31lsŽã#\,}¹¹ýx5Aœ`\tÆð9Œ³ªÁÏé¦ÍAR)˜ð³×縈¾ý±}0þë +DçjøŒRhÞÈG÷@Ziiû„ÝJ×
-Å]èîߌ&ø´¥l»þ‰Æð©2ŸçWïelŽ@¬¼C& ‘uœD)ñ6C*R”\$5Qb\Äþ˜l–Q6»ƒ4âõÍöá„íIiµ¶«¦Ò.a/Iqç·û8ußnîWߊӧ$r'Q¾÷ñ·möB?M§Ÿ úiÙÙx{Oûyv¥i¼øHÃØÙ}R¶»=©ûP6Ì›Š#¬©—,žéGËò%‘x}p㻉gùn͙Ϫèõ·»ë§${îX݇mÉŸ¨ófþÇ-H*l9EÂ1Á\x˜æ·½Þ¦³È¾4£i×X¦;¥ÄyY ¯qSݵ52BQƒre/à¢Æ‡Ü$¶ñ"?rý°3ây¼ˆ¿FÖVë‘ô´lêf™Bb¢CïRX6ÜÞ‘ÛdÖåç$'àèNØ)®¢„#—UÛå‡x Ky”c¥cc ƒI ðRÊ×ÚÅŒ÷‹m<ˆÁýÛ]0SŒw&“çM­ÂÍhâŽÑ|^,÷²¶kÇ- 'éÓêߣ|=å rÃe`ßGa¸-ºXÖ,/ ØS¾©Ž€@>c d=0ªx/Û³àÓÈS-÷èŠU_㦚-Ña&áŸh…$¥fßlO¦*/HÕÓ¸±T…# „¢’R¹ðÿkžTE‹«,‹—Ù o¯&“þµcö-’yT媑ä(FOÅÆ.y ÝhÀ¥ɲ½|Š·ÿžðð³Ü
-`¥Ü¥øAô5óC: vˆ“°!€‚ eŸûú
-Fo°{Ô®µ2oý¾ ·ƒáÔ_SU¿/³{>í—cýéÝ=Ó·V¼Z¡Õë9„;Ô´êæ)ÿ?Å4rendstream
-endobj
-1542 0 obj <<
-/Type /Page
-/Contents 1543 0 R
-/Resources 1541 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1533 0 R
->> endobj
-1544 0 obj <<
-/D [1542 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-546 0 obj <<
-/D [1542 0 R /XYZ 85.0394 710.7531 null]
->> endobj
-1545 0 obj <<
-/D [1542 0 R /XYZ 85.0394 685.6325 null]
->> endobj
-1546 0 obj <<
-/D [1542 0 R /XYZ 85.0394 685.6325 null]
->> endobj
-1547 0 obj <<
-/D [1542 0 R /XYZ 85.0394 673.6774 null]
->> endobj
-550 0 obj <<
-/D [1542 0 R /XYZ 85.0394 460.614 null]
->> endobj
-1548 0 obj <<
-/D [1542 0 R /XYZ 85.0394 435.4933 null]
->> endobj
-1549 0 obj <<
-/D [1542 0 R /XYZ 85.0394 435.4933 null]
->> endobj
-1550 0 obj <<
-/D [1542 0 R /XYZ 85.0394 423.5382 null]
->> endobj
-1541 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1553 0 obj <<
-/Length 1016
-/Filter /FlateDecode
->>
-stream
-xÚ­W]›8}ϯà1‘ŠëoìÇélÒ¦ÒÎtVZ©íO) H£þûÚ`ˆ!„iµ«‘fl8¾çÞsmyPÿ qÀ%–^ )`1/>Ì ÷M¿{?Cã· ßE½ goW$ð$s/|vb
-É´0rZHu[ÈU ù˜WåUh•Ó¬-h„µgI¨-IQŸõ)»[Ã9öÌtâØã0‚?9 d{U©!mÜ»›oýÉÞ€¹éVy£Ñ_ ÄEi—äû(V·ûÊ Zé¶^@]µ SÙvY#Ûƒ#1Ih!×|ƒ­Á¤$=¾íÔ“}×9«Õ!ß«ƒÒ˜ä}Ój{ÕüŸjèpë«›0`>•GŠ‚^{Ùüç/òËÿ(T1
-ÇÂ
-endobj
-1552 0 obj <<
-/Type /Page
-/Contents 1553 0 R
-/Resources 1551 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1533 0 R
->> endobj
-1554 0 obj <<
-/D [1552 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-554 0 obj <<
-/D [1552 0 R /XYZ 56.6929 769.5949 null]
->> endobj
-1558 0 obj <<
-/D [1552 0 R /XYZ 56.6929 749.9737 null]
->> endobj
-1551 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F65 1557 0 R /F23 714 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1561 0 obj <<
-/Length 1324
-/Filter /FlateDecode
->>
-stream
-xÚ•WKoã6¾çW99@D‹¤DIÍi7ÛmS,Š¢ëžº=Ð2m ‘EUdÝbÿ{9R¶lÁÛÀ08¿΋…æGgiLBžE³$‹HÒx–ïoÂÙÖ¬ýtCLsGœ›ÉÄjó”Ä)KfÁ)ÈûåÍâ#£3!X<[n]"Iå,-×Îw²îTs°8œ'w-ÁmI҄¶ШHHœ±Ìnxÿôë”Îpø¬ò¾)ºÎuÕkÕÈ®0Ô€G#Â#ÁžˆI,¸…3¦Ü4 Ãù»<Wm; t.qò©h;ÄgɈS™ÉïçÌí¿£é0€–üÆá»ÇO­é½añt.­¬Âu¹^ãÔƒíe—ï,0ÝNvHtD.+$Zå–úÚaVk$ª"®äÞ©Úè:ßô]jCß*80‘R’Å1³G,ªÁ¡G7SfdAD–¥~ *ݛÄÏbA¢(Iœðý\DÒXŒÀþîU3‰›˜²·Cºš@KBÂÒ8ûÜ €x ä^[LšÜH©x“}Þ´©0éGÿrUÊüy§K5AFß›A¥™˜"w™A­D×Ȫݘ:¾TÅcQqTekJu9A<¿ÐŒ$<Â"ÿ£-ª­‘¦,M© e­p´Íy :ãN¾(¤¾„!«lGtž?Òù±§_p5œ¿îÜn[9V‡o¨ÃÉaÅ
-ŽÛýâþá-ñÕa|ìkç›üÌYˆ2K›éœòá=4v{Ix ¬°7L ÉsaM
-endobj
-1560 0 obj <<
-/Type /Page
-/Contents 1561 0 R
-/Resources 1559 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1533 0 R
->> endobj
-1562 0 obj <<
-/D [1560 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-558 0 obj <<
-/D [1560 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1563 0 obj <<
-/D [1560 0 R /XYZ 85.0394 573.0962 null]
->> endobj
-562 0 obj <<
-/D [1560 0 R /XYZ 85.0394 573.0962 null]
->> endobj
-1564 0 obj <<
-/D [1560 0 R /XYZ 85.0394 542.127 null]
->> endobj
-1559 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R /F39 873 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1567 0 obj <<
-/Length 3437
-/Filter /FlateDecode
->>
-stream
-xÚ¥Zm£Fþ>¿ÂßÎ#1ý4Ñé¤É¾\&íæv=º‹’|ÀÀØÜbp
-Êú`ZFs‚ÄîXËpþT7DŸ²˜@§âUƒ;P}n¼J²È—;ÖÍ¢p”ÝçMy¢gEå$¡ IÓé¡LXÒŒ¸ð¶À§`€ê7À®s7±X‰é!ƒU‚3å…Ap‘~_2b@?ÆDñ b¡!Gk
-÷ìúÀWlÇK’?yh{zþžÓíÜíeä7ÈìoTãàZae㳩 HÏE~ÄØ<uÄ€c –_ BÈìAäâfÁëÆñ1Êž#²[›R ~ñ}Yæ„=`g`ËO(ª
-€©À¾\Ó5Éþwh»‹õž“ò·ýjötDˆa% ÆÇCX©u¨ãK>];OÛ”¡;°^¶Ü‰ÚNA¶ ]ÀŨ8@cOm_d :ˆ)w ¼Ð„1.IÓúPqàxr2RËÙJD¢ÅE²z¬x›€ŽE·%$‘'MYþ±8¦åSÑl*@EKº£¡u‹XNû‚eyrü@Qð^ƒø±pòW“GÀœ¨O'¬h@ ŠÅå Z d`.3ÉuDSqßÛ.醒Wuãà<¢]`¹ ÛáE*Ú&¶PÂÓøºIšÂœAÈb#1>! 7h·G¢8O@\›ùwõ14LQ|ŸWÁ˜oŸé[Hð
-²Smã3b¿£B‡ôÔ]r¢Ù|ŽÆ‚Ë2.­rÂÜ÷æSmÚK/—&B„K¸Ë,^þ‘7õBP^÷m±©£•é!«|…Úeˆ Ä(ý35dVÖ›ú.ÒÎÀÅÕʸXÜcžy—:èŠÝ”›…nê6ìM°)å‰(4=0p%üãÍr]cá¿çÒóÏ
-õë ç<pK
-aµÉd(Iå: B ¶k䪯?óü•ówW]Xéù‘Œ (ãaéÙo3áù:ŽMŒí^Ïg` ˇœ½­aG³Á¦ãųÝÄž@+¬o`# í©î,HÒŽÂ{(DaÓG×ÐÉ^Å‚Ñb̤ËQ,`î-]ÁZEÐǤ$ö‰"Ô ÷XìÛIçŠß’ÑúÁþP°Ôj (ì`3ðñ!ó(¥Æœ¬o%$5ô©ˆ
-€è­ æ„ ÁbËË|nDºÊa pêÐXÿšý£§àüeæ¯yçØ¥ N×g—µªÝ<飑Ɗóœâ,÷ö¦T¤Z÷YÒå®YÍ}ÇWÛÕ÷à•PÜop}U!ç™ãÔóÇñS’ràÅ»v[ÊŒÆk~4Ê.y†íE¢¶શæFj˜ñ…3`ÆG˜ñÊ€y <«ÊÓT‡îh[¬¸®Ñó¬æû-US`ï¶7¤uÒR¤(¾ÇÚ•Rjþð#’,#ŒÚòKTt)7SÏ·5•MŠ0iþTL +‡ÓèäîØ¿XȲè§jjÕ½°ô⤬…^ÖQç@P™Þ
-*þ[Êá¿Ý6[ób 0ŠÞØ^¬êÉÕ˜>ŽýÁdsn—+p»É»¼ÛÖ‹Á4(Ð8ûàèPÊçgí춦)îÁX¸¢+I#p¿*—‘)0Ó-ŽßâéØBI¿>0½XyÒ¶ñ5ƒ6Ö`±#_¶5ŸxÝõ¢&ŽÅÓHøˆ´8:çeìùRÖ)¼¨+Oʾ¢™E?}¢6‡el#ÉvL膄…Áød`­Ð¥-“gžÚÀŽìH½å ~Dn‰
-ä¤ëP·=\3µí«ÁÀ¹y ¦¡ž9—‚Ýõ{Œ§ú¯+z¸GzDßZ&Xñnø}Û,ð3`;Ãô€9€Ï6å_:ÔôÉa¢Ö9/zÆžÉ~ð¥Ê¢ÜÎ}37=ð Å0tæ‰O<ö'Ê·æÓZ qèKZˆÝâ0íç4 ³¾íßmlèçb?·Mnˉ To t³fîisÚwõ¦Iö[×kÀÇÉ$¨°ýÐåÌhÍkìò¤š>[4A
-endobj
-1566 0 obj <<
-/Type /Page
-/Contents 1567 0 R
-/Resources 1565 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1533 0 R
-/Annots [ 1572 0 R ]
->> endobj
-1572 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [63.4454 738.9144 452.088 749.0762]
-/Subtype/Link/A<</Type/Action/S/URI/URI(ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos)>>
->> endobj
-1568 0 obj <<
-/D [1566 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-566 0 obj <<
-/D [1566 0 R /XYZ 56.6929 723.0302 null]
->> endobj
-1573 0 obj <<
-/D [1566 0 R /XYZ 56.6929 689.3491 null]
->> endobj
-570 0 obj <<
-/D [1566 0 R /XYZ 56.6929 552.677 null]
->> endobj
-1574 0 obj <<
-/D [1566 0 R /XYZ 56.6929 525.9649 null]
->> endobj
-574 0 obj <<
-/D [1566 0 R /XYZ 56.6929 411.5673 null]
->> endobj
-1575 0 obj <<
-/D [1566 0 R /XYZ 56.6929 383.9327 null]
->> endobj
-578 0 obj <<
-/D [1566 0 R /XYZ 56.6929 225.6356 null]
->> endobj
-1284 0 obj <<
-/D [1566 0 R /XYZ 56.6929 193.4614 null]
->> endobj
-1565 0 obj <<
-/Font << /F37 779 0 R /F69 1571 0 R /F23 714 0 R /F39 873 0 R /F11 1348 0 R /F41 910 0 R /F21 690 0 R /F53 1002 0 R /F48 925 0 R /F62 1035 0 R /F63 1038 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1578 0 obj <<
-/Length 533
-/Filter /FlateDecode
->>
-stream
-xÚ¥TM›0½ó+|©¸6Æ`³IÚ²RÓ4a«ÕxT‚Ó@6Úýõµ3·¶ôTEóÆoÞ|x€"b~ Ž “1JeŒ9¡•[ µ9ûêQÇ Ï¤ð–u—{Ÿ¿°I,“(AùË–ÀDŠòêÉÍóé"#Nü!Oˆ—Í&à‘ðXNÇ‹,4þ1[f“éb¤±Ÿga,ˆ0ñÌ)Lg£ïÙøó P§Ôžó{oš_¹m–f»øí==T™žï=‚™ ˜J¡­s†yÌØÙÓxKïçEðæô:4<Îæ"J¦±¡éq‰fŽìô–z«lO‰ßÕ½êÀ,7ZwÎÝkûäþ/¥và)šŒê­-¶uið[xØUE¯*8˜ØyžE_€U· ã`wXUz[€×H¶.²RZ!—{Sô7üÐŽÛôRŠ%çÑ©'ÂTÊä)…Ú{2è]·ÊÜ,#‰Ÿoê˜Çâ- ”úŸ Œ‰I§Àßë]بWÕ\cÁ*uÛ›|u»vx_÷v
-endobj
-1577 0 obj <<
-/Type /Page
-/Contents 1578 0 R
-/Resources 1576 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1580 0 R
->> endobj
-1579 0 obj <<
-/D [1577 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1576 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1583 0 obj <<
-/Length 69
-/Filter /FlateDecode
->>
-stream
-xÚ3T0
-endobj
-1582 0 obj <<
-/Type /Page
-/Contents 1583 0 R
-/Resources 1581 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1580 0 R
->> endobj
-1584 0 obj <<
-/D [1582 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1581 0 obj <<
-/ProcSet [ /PDF ]
->> endobj
-1587 0 obj <<
-/Length 1964
-/Filter /FlateDecode
->>
-stream
-xÚ¥X[ë¶~?¿ÂoѱV”D]Ò¢i³§I¶EÒ g¢íé-imõH¢#Rv7¿¾3œ¡,ÛJS »&çÎá7äˆbÁ¿Ø2Œ’2ÝäeÊHÈMÕ¿‹6{à}óN°L*“P¦I“îV&E(‹8ßl—F¾zy÷øu,6qfY,7/¯³¯,/Â2IËÍKýàé Ž¶¶±Œ‚âáŸ/"µ4Ì‹\ Z.d˜—Qá^„Á¨§]טƒÖ¶ö³šHÃ$ÍbVË’0Ï"òS„âa+¢(
-žtßëþ0j0Ó›‹–Rz Ÿ‹Â˜M<ÛϤ ´¥ÁYŸ šßÐì Ï4¨{{¦ŸQï§±¡™ž¼öA]™=zØÉ‘%›2,³8ãÀ =e*RJÈ,%©v±42º›l‹‹Ä™Õ3õ„Ér“v
-i ·¥Ý3éÀ–yíˆùðŠ&Â8K<æcø¡›‚hïCû™<»úÐŒ­êhüýÔï Æ×¡\@•‰ó÷w= vV
-ŠØmT¹,(¾ÊÞñ‰}q´€¨\Â&|&d¾vKÈTÝVŒÐhÆKI›S?s@Õ+6¸k0mHšŽµÇrRϯÄ'¨
-ýf3GÕ51b‘æi‘diNŒ‘Œâ±ˆ±0·"ð0àâÄßZÕ7’\sÂw"ó‡&0ÍåþF—?$cRÍZº”í(õåŠ:éH^04g¢°û(½À ÙWáÓ7˜¿S,[>°úŒ¹…;î3`ô¦'bÕÀ¤Ö^ ïöEy˜]¹œ­Þv‹íçÞa¯Úák@n@þzh|ÇütÓOÓ0J¿mºã—¿ÞeÚâš(°ÁiÇEðá êÍâÀz҃ѣm§žæˆ§çOŒ$
-­èרÚ:‰óÎÐÃBYn?z·XdÌqâd¾©Üä¤ÚNí:ørðï»QÕaáƒL·CÕMucVìâªV.Wª4 Û8Hü»Uoy)”@»Zìo+B)ˆ×­©ôD9ƒ©;B.ÊõTyåvÂ)Î6™îZds§¡ÁÓÏMí­µ°r=¶öä&vÓž®é^/yr€¡¶¯ÓP;«y Â1{9B€FãŸà{ËוÂM>p\×-ž‘7>å èWˆÌ¨W
-¥Ìrcø-мûãËü
-“¤%œ¡i±Iæ² —â~ÚøÑŸ/¯6³Âv¡ámÒ¥ß;»è½‡CÀê/aïoãã<,EQ^Çsór4 ÝÅpµö;[ÃïVÎy7G)JΑOü©5­¿|hW°hpk·IQ„"é5¶ÏÍŽûª‡]Ù)C™‹_Ú‘Âõ%KÄQXDñ¯oʬ±]ªÜïʽe×SX{üâññ|>‡¼+¾,}w¸ÉÀUßÄx³Q³Ô}\Wù¸·öß¶
-ߣ«ª]qöü´Þíâ³äZÄ^d{‘¡Éep …E\æÞ†R&·Þæ÷Í{wÿ¡’Œèendstream
-endobj
-1586 0 obj <<
-/Type /Page
-/Contents 1587 0 R
-/Resources 1585 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1580 0 R
-/Annots [ 1594 0 R 1595 0 R ]
->> endobj
-1594 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [348.3486 128.9523 463.9152 141.0119]
-/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:info@isc.org)>>
->> endobj
-1595 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [147.3629 116.9971 364.5484 129.0567]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.isc.org/services/support/)>>
->> endobj
-1588 0 obj <<
-/D [1586 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-582 0 obj <<
-/D [1586 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1589 0 obj <<
-/D [1586 0 R /XYZ 85.0394 576.7004 null]
->> endobj
-586 0 obj <<
-/D [1586 0 R /XYZ 85.0394 576.7004 null]
->> endobj
-1590 0 obj <<
-/D [1586 0 R /XYZ 85.0394 548.3785 null]
->> endobj
-590 0 obj <<
-/D [1586 0 R /XYZ 85.0394 548.3785 null]
->> endobj
-1591 0 obj <<
-/D [1586 0 R /XYZ 85.0394 518.5228 null]
->> endobj
-594 0 obj <<
-/D [1586 0 R /XYZ 85.0394 460.6968 null]
->> endobj
-1592 0 obj <<
-/D [1586 0 R /XYZ 85.0394 425.0333 null]
->> endobj
-598 0 obj <<
-/D [1586 0 R /XYZ 85.0394 260.2468 null]
->> endobj
-1593 0 obj <<
-/D [1586 0 R /XYZ 85.0394 224.698 null]
->> endobj
-1585 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R /F11 1348 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1598 0 obj <<
-/Length 69
-/Filter /FlateDecode
->>
-stream
-xÚ3T0
-endobj
-1597 0 obj <<
-/Type /Page
-/Contents 1598 0 R
-/Resources 1596 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1580 0 R
->> endobj
-1599 0 obj <<
-/D [1597 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1596 0 obj <<
-/ProcSet [ /PDF ]
->> endobj
-1602 0 obj <<
-/Length 2543
-/Filter /FlateDecode
->>
-stream
-xÚuYYsÛ8~ϯð[誑ÂûØ7[ÎádìrYÎNÕnö"! k’`ÒŠæ×O7ºyØÃ©TJ@£hôñuƒö.\øç]¤ÑÚ ²ð"ÉÂuäzÑE^½s/°öùÇ<a¬£0`²°ºŠ‚t¥~r±šorýôîÃ'ß»ðÝuûÑÅÓ~<+N’µ¥OÅ«¦‘u¡~]®üÈu®.ÿ÷ô•ÄÂu’&йpD²ã$žKäÒŒÌ^¸ÂØgæ8Z‡A’óÚ»\y® [çϵ>•²8T²îf²Þ:‹¢A6Ö^yƒì$Mú]·JîiøE™N·gšh&vGIƒ›û- D]°èíý \dë,öc>Ӈ˹!ë[vGÝŽ d¼ ~ø~gx©óÃuý\‰)´¶»ôyPu­êQ¬6sñ] UÓø^TLÝžM'+Éó¾mñ
-\Ó±8 ØãràÔòD3h Ä“0D,¤É[µ³:Ýê dÐ9 QÔ€EÒÔ'{)Áúrø®óɪ¢«q—µÑ$”ÄêY_ÝÔ'ÿ=>\f¾sUË"' Á_‘k/ƒ“†®
-¦6pkK­é·ç÷'‘s[w²…-@Ø£åÌ­ßp,XBšÎÞ'h7ü•¿Ù*Œpv
-÷Ãa…|‘¥nl Ø-H±ÈZyá6µ¨€÷ƒ(
-RÜŠ1ÏuL~”6`l ¿‚~ZѨ¢<ÓCƒÚ̓
-’ r”OœBç=Á 1j"«¢ºÑpQɧUäzý"GöÄÙ G,ØÝfS6ä ÐBdz˜€z²Ó„Q™DÏ B0q
-ã”U#7Cã@Q²€.ÿ¾ô
-ÝD‘øñðñ^=:\è±æí
-®o¬ƒñ+ñ'E\2}8Ç’;i %Ò‡ï&ª°Wõ\~jÀaÛÍ{³˜¢GË!zeoA_^†NmÞxš^Xð”Ð;’ù‚Ïr{z8Ø'"Hóȃ…×UØNÑô
-endobj
-1601 0 obj <<
-/Type /Page
-/Contents 1602 0 R
-/Resources 1600 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1580 0 R
->> endobj
-1603 0 obj <<
-/D [1601 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-602 0 obj <<
-/D [1601 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1604 0 obj <<
-/D [1601 0 R /XYZ 85.0394 573.5449 null]
->> endobj
-606 0 obj <<
-/D [1601 0 R /XYZ 85.0394 573.5449 null]
->> endobj
-1605 0 obj <<
-/D [1601 0 R /XYZ 85.0394 539.0037 null]
->> endobj
-610 0 obj <<
-/D [1601 0 R /XYZ 85.0394 539.0037 null]
->> endobj
-1606 0 obj <<
-/D [1601 0 R /XYZ 85.0394 510.2426 null]
->> endobj
-1600 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1609 0 obj <<
-/Length 2893
-/Filter /FlateDecode
->>
-stream
-xÚ­ksã¸í{~…¿Õ™‰IÔ3ÛéL.›ls×Ë¥‰;íÌíÍ”–h[]Yò‰r²¹__€
-'é<%Ø«Ô4hνd®J%µÊ‰¢¨ó¬ö­Ú­TCSßu]"UN ‚yH‚ïäêfÈõµ)ZE¸zMˆJɦ|ãeeÉ õ^e-3³”í–—ª\~ 4
-hfáyN†¾9fùVT²"ŸFÒÐg[Ø>k$ŒÓ­%ya4P’~¯$œø#Ìùp
-"‡Ï®ëgýFÐ\í‰s&[ÔÂŒjp`‹1ãÄ.}Qe½ß©ª%€Ý)«+]ðq‰§
-~H¿°OQ­4Áæ:“¥$o…Ù=ŠR©–fì-DM¸û"çËm/Èá¤ÝÒÌNßöæ@1t$ê÷Š,ví-#‚؈p
-þU‘IÝN˜PxN,::¼I47×¶!ËYøÐ`TÎBÄ ,ôÆ·R’¼¹†c¢Dàö&ù0!eâ;">o~]½½'¤
-æíœH¸>ø8þzduÖ+ž™ ‰èMY¯0† Ð:„™ ¼‰(5Dòâ=@¶«‡›}´ÁãBnÑŠw|º»!&ñÅÔeúìûÁ'ãL'Ž© ‡â àÎläࢩìÒG¯ÃÍq Iôo£´œ²<Ô‰PÓlÏÍ@ÔÁUæÄG» y¿Nxø¸ë=ãÝ=}ÊSK¨+Š˜5†þsºC:¡'¼£ªÜ¦ÂCìDPÚó’έþÐv±püPص”ï8AâÇcË,)?§½Er¤@@Žh T
-$Œ©!cš JÓ©ÍüÉü°×Ê•Ü Ù™E AL&ÚûçÇsjÛ sîOM–c©6ÛòÍ$;³
-v!¨/rÍ[×½® ÞLh܇l›„´¦5õÃD œ$ŒlH„r«å&Âçݳ5º?¾·hdµÁk+ §/-UçI0>
-è¾ÏÝG$”uf,Õ­DC¡Æüx¾;˜t
-(–"—ÜYi4¹B™º¦qfèY'ÉíŽÑ–\z ¬nÌ\³&ÊKŸ ‰•v(Äð1“‘㣓Æ|ÒØŠž«Ëˆp}µ6eè£[SWöj›ŸMñ¢Âú`K@®Ö j]¼©VP%Û
-endobj
-1608 0 obj <<
-/Type /Page
-/Contents 1609 0 R
-/Resources 1607 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1580 0 R
-/Annots [ 1613 0 R 1614 0 R ]
->> endobj
-1613 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [253.7995 146.8976 417.685 158.9572]
-/Subtype/Link/A<</Type/Action/S/URI/URI(ftp://www.isi.edu/in-notes/)>>
->> endobj
-1614 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[0 1 1]
-/Rect [63.4454 108.9117 208.8999 119.0735]
-/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.ietf.org/rfc/)>>
->> endobj
-1610 0 obj <<
-/D [1608 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-614 0 obj <<
-/D [1608 0 R /XYZ 56.6929 652.1213 null]
->> endobj
-1611 0 obj <<
-/D [1608 0 R /XYZ 56.6929 614.8935 null]
->> endobj
-618 0 obj <<
-/D [1608 0 R /XYZ 56.6929 614.8935 null]
->> endobj
-1112 0 obj <<
-/D [1608 0 R /XYZ 56.6929 584.5024 null]
->> endobj
-622 0 obj <<
-/D [1608 0 R /XYZ 56.6929 289.5256 null]
->> endobj
-1612 0 obj <<
-/D [1608 0 R /XYZ 56.6929 251.3901 null]
->> endobj
-626 0 obj <<
-/D [1608 0 R /XYZ 56.6929 251.3901 null]
->> endobj
-940 0 obj <<
-/D [1608 0 R /XYZ 56.6929 222.7156 null]
->> endobj
-1615 0 obj <<
-/D [1608 0 R /XYZ 56.6929 53.7852 null]
->> endobj
-1616 0 obj <<
-/D [1608 0 R /XYZ 56.6929 53.7852 null]
->> endobj
-1607 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F39 873 0 R /F53 1002 0 R /F11 1348 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1619 0 obj <<
-/Length 2824
-/Filter /FlateDecode
->>
-stream
-xÚµZ]{£6¾Ï¯ð¥ý<-’ KÇö¤É4™4v·Ûα›g0¸g&ýõ{„>äζûä" ôâóžO <òà"†<ÊýQÈ}Ä<ÌFëý•7ÚÂÜíV2×ZèÚ–ºY]ýó Gñ€£Õgk­yQ„G«ÍÇñôéiñ8¿û÷äš0o<E“kæyzt¶XN®Ã€‹ *¦o|swóã݇Ûçéӿʇ~ó˜7}œË›åÏ··‹åj¡nŸÓùÝã-ˆàɧÕýÕbe^ÛþiØ£â¿úøÉmàÞ_yˆòˆ¾Â‡0çd´¿òȨTdWË«ŸÌ‚ÖlýhŸª‹HØ£+‚G#Îi)‹qPBke-«8ßÄÇM9ø[¨(c—h²¤$4í£IK äÏïf $ÿS3EÞÝ m¤Î±)·°1c(
-)kƒÏ‹}œæ’ÐÇxŸ”ŠwBBy5+òur¨Ô8èH^¼‹×i–ViRë«ó3qè!„¼ Àø‡|äi‚ £Érì¡X‰IuLK%õX¼&û—ä(ï0B4ÈÀVüKŒXRF´”Ås0â‚¶éb0bƒ_dänÈ’}’Wq•y‡—å!Y§¿yYËÙsr&@¿ö’#oþ>Š(½@‘-5L‘‘ÒñÐá3N䆡3è~†ZØqš©Xœª4ßv8¨v‰¼°©\¾•U²ïs1Òç¼ÍÇLiÿ)>‚æ7ÛDßÇù)>¾ÕH-ÙŠpׄøˆG Z*~€O꥟ŽÅ¡(m)—^@Eäw–”ƒ;-eÜ‹s‡{9¡-òºØäÙàwùú8ÁÑXzâñ?E®([M0Æãcœ—ŸµkçË>ú|Œp
-ªèf1ˆ{²¶À,@^C-·{FæBþ¿9•;yµÈþЉ픽ý&A$¢ä–”ƒ -e˜ ^ä`Âm1ÑÅ`ÂL¶ ÒWÕâõÎT:è~:%Dz›r„I@úSÑ4ßÈÄ÷U×qq=°Þ½GÃz‡¦CP½ wKÊ¡w-eô„.pA[zïbèÝ_|«’¼4 Æ$§²“ŒòE?¼€;Ow½gF¡€ùŸóŽÃô1|‰KÊA–²( 
-\Ð]ì
-lðÇ"¿–EWrܧ¹®ÈŒÆe‚©£G²I¥¯ÃC$d´ßfÇø«`VØôëžêÞ^"ˆ|nÝÛRú7RF÷‘洞Ðîϰûuß_&ª* lü>y“M¯UýEÐ䄼JMM’ÒEàBÂEVË»Û!„"/bØâj<nÀCüq:Ácå$”?¨©ÛÓfé»”E¡Ñx®fqY]˼o Zy?‹¿h—£-#0}Û2”_&œŒ“,ƒ\Iœ:XªôD<(›í$QêÝvbI9ìDK;áÔs؉ Ú²“.ö€Øà-;H;黬â—,-w¢™rÅÌÕû…ÚQ|~
-G>:›Fsʼn wÁer¨¬ 7C>GŒK YR†´”Å#‘9¡-†ºØ ÙàFÙÏÉï§D‡4cÙ=þ,Ô–nó¸:Ijˆ,é¼^ãÊ!7ö Ö „ÿ¿Ù¢Ñ
-¼ú’æ
-Zî–Áųž„N(IEHðq ;#UO«E[õ4é’I8F/ì‘ÚRÃd)M¦ï¹ÈtB7dža÷“Ù¯ æv^À<ߪ€d>.6'ÙÅh­`!,J²´9sèݹ‰|èXìbÊ‹jbÄóSù,t=Ý Ã˜}P£?ÆGÕy²;/ó—e¢#·ÜU-N›cD¤¸Ê¤·ègÃô…¾°_jK9è×RýŽê„¶èïbÐoƒ«3ŠªXb—|æ¡Øt6P#¢Ò·öj1"“pä&1ÁÜ}‚>·~¶Ï™¡W÷¹¿9–Im›…™°YŒ>(qmÊ£ÕÊ-öuoKçxù/ÚTÁLtæn»°¤v¡¥»ðçÁNhË.ºØvaƒ‹\*ëyQB䇑u!JŒú¦¶J#婪ëÄEcâÎìFöŸ¾øÖ¾ e\oÚ‰ÍDdƒ}Pâ&FˆÁ¹:.1-£ø{Œá¬€ AáT`ÙÜÐÐÑ|ä
-X9Sƒ35ø˜€´I:zÝÏ­Þsç¤Û¡8óf™9ñý>“à"~¸-Â6-Ô|P9N\¸9tû­ÁF^&ÇT•<žškZoI$Uºî«2!3ÿütÖÅ´çâ¸ö{?’ˆ<±¡þ·„†®…š4ïúìË…Û(¼ ܯpÙxÔùiù’ìâ×Td},»…®­Ö LKç„ }R[‹ÈªFïž^y5ݨYȰ½Ž@óañEXóDý*Å1-wiKIŒ¯„—(™û4ß'©vB½fkÉ>Ü®Þ U‹Op{Të™Üþ—¿ôµvCD£hà0zŠõK‰_ÁÃî››O‚Ï_ý¿m1bªendstream
-endobj
-1618 0 obj <<
-/Type /Page
-/Contents 1619 0 R
-/Resources 1617 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1676 0 R
->> endobj
-1620 0 obj <<
-/D [1618 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1621 0 obj <<
-/D [1618 0 R /XYZ 85.0394 752.3015 null]
->> endobj
-1622 0 obj <<
-/D [1618 0 R /XYZ 85.0394 752.3015 null]
->> endobj
-1623 0 obj <<
-/D [1618 0 R /XYZ 85.0394 752.3015 null]
->> endobj
-1624 0 obj <<
-/D [1618 0 R /XYZ 85.0394 746.3107 null]
->> endobj
-1625 0 obj <<
-/D [1618 0 R /XYZ 85.0394 731.5461 null]
->> endobj
-1626 0 obj <<
-/D [1618 0 R /XYZ 85.0394 728.1497 null]
->> endobj
-1627 0 obj <<
-/D [1618 0 R /XYZ 85.0394 713.3851 null]
->> endobj
-1628 0 obj <<
-/D [1618 0 R /XYZ 85.0394 709.9887 null]
->> endobj
-1629 0 obj <<
-/D [1618 0 R /XYZ 85.0394 651.9592 null]
->> endobj
-1056 0 obj <<
-/D [1618 0 R /XYZ 85.0394 651.9592 null]
->> endobj
-1630 0 obj <<
-/D [1618 0 R /XYZ 85.0394 651.9592 null]
->> endobj
-1631 0 obj <<
-/D [1618 0 R /XYZ 85.0394 648.8377 null]
->> endobj
-1632 0 obj <<
-/D [1618 0 R /XYZ 85.0394 634.0731 null]
->> endobj
-1633 0 obj <<
-/D [1618 0 R /XYZ 85.0394 630.6767 null]
->> endobj
-1634 0 obj <<
-/D [1618 0 R /XYZ 85.0394 615.9121 null]
->> endobj
-1635 0 obj <<
-/D [1618 0 R /XYZ 85.0394 612.5156 null]
->> endobj
-1636 0 obj <<
-/D [1618 0 R /XYZ 85.0394 585.7959 null]
->> endobj
-1637 0 obj <<
-/D [1618 0 R /XYZ 85.0394 582.3994 null]
->> endobj
-1638 0 obj <<
-/D [1618 0 R /XYZ 85.0394 567.6349 null]
->> endobj
-1639 0 obj <<
-/D [1618 0 R /XYZ 85.0394 564.2384 null]
->> endobj
-1640 0 obj <<
-/D [1618 0 R /XYZ 85.0394 549.5337 null]
->> endobj
-1641 0 obj <<
-/D [1618 0 R /XYZ 85.0394 546.0774 null]
->> endobj
-1642 0 obj <<
-/D [1618 0 R /XYZ 85.0394 531.3128 null]
->> endobj
-1643 0 obj <<
-/D [1618 0 R /XYZ 85.0394 527.9163 null]
->> endobj
-1644 0 obj <<
-/D [1618 0 R /XYZ 85.0394 513.1518 null]
->> endobj
-1645 0 obj <<
-/D [1618 0 R /XYZ 85.0394 509.7553 null]
->> endobj
-1646 0 obj <<
-/D [1618 0 R /XYZ 85.0394 483.0356 null]
->> endobj
-1647 0 obj <<
-/D [1618 0 R /XYZ 85.0394 479.6391 null]
->> endobj
-1648 0 obj <<
-/D [1618 0 R /XYZ 85.0394 464.8745 null]
->> endobj
-1649 0 obj <<
-/D [1618 0 R /XYZ 85.0394 461.4781 null]
->> endobj
-1650 0 obj <<
-/D [1618 0 R /XYZ 85.0394 446.7135 null]
->> endobj
-1651 0 obj <<
-/D [1618 0 R /XYZ 85.0394 443.3171 null]
->> endobj
-1652 0 obj <<
-/D [1618 0 R /XYZ 85.0394 428.5525 null]
->> endobj
-1653 0 obj <<
-/D [1618 0 R /XYZ 85.0394 425.156 null]
->> endobj
-1654 0 obj <<
-/D [1618 0 R /XYZ 85.0394 355.0758 null]
->> endobj
-1655 0 obj <<
-/D [1618 0 R /XYZ 85.0394 355.0758 null]
->> endobj
-1656 0 obj <<
-/D [1618 0 R /XYZ 85.0394 355.0758 null]
->> endobj
-1657 0 obj <<
-/D [1618 0 R /XYZ 85.0394 352.0499 null]
->> endobj
-1658 0 obj <<
-/D [1618 0 R /XYZ 85.0394 337.3452 null]
->> endobj
-1659 0 obj <<
-/D [1618 0 R /XYZ 85.0394 333.8889 null]
->> endobj
-1660 0 obj <<
-/D [1618 0 R /XYZ 85.0394 309.8192 null]
->> endobj
-1661 0 obj <<
-/D [1618 0 R /XYZ 85.0394 303.7727 null]
->> endobj
-1662 0 obj <<
-/D [1618 0 R /XYZ 85.0394 278.3282 null]
->> endobj
-1663 0 obj <<
-/D [1618 0 R /XYZ 85.0394 273.6565 null]
->> endobj
-1664 0 obj <<
-/D [1618 0 R /XYZ 85.0394 246.9367 null]
->> endobj
-1665 0 obj <<
-/D [1618 0 R /XYZ 85.0394 243.5403 null]
->> endobj
-1666 0 obj <<
-/D [1618 0 R /XYZ 85.0394 173.5556 null]
->> endobj
-1667 0 obj <<
-/D [1618 0 R /XYZ 85.0394 173.5556 null]
->> endobj
-1668 0 obj <<
-/D [1618 0 R /XYZ 85.0394 173.5556 null]
->> endobj
-1669 0 obj <<
-/D [1618 0 R /XYZ 85.0394 170.4341 null]
->> endobj
-1670 0 obj <<
-/D [1618 0 R /XYZ 85.0394 144.9896 null]
->> endobj
-1671 0 obj <<
-/D [1618 0 R /XYZ 85.0394 140.3179 null]
->> endobj
-1672 0 obj <<
-/D [1618 0 R /XYZ 85.0394 113.5982 null]
->> endobj
-1673 0 obj <<
-/D [1618 0 R /XYZ 85.0394 110.2017 null]
->> endobj
-1674 0 obj <<
-/D [1618 0 R /XYZ 85.0394 95.4372 null]
->> endobj
-1675 0 obj <<
-/D [1618 0 R /XYZ 85.0394 92.0407 null]
->> endobj
-1617 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1679 0 obj <<
-/Length 2889
-/Filter /FlateDecode
->>
-stream
-xÚµšMsÛ8†ïþ:JU1†
-<
-}w„°i5LX[iÂã¶J7„O´{ ·´Xøé«M|§–=w¦í½˜A;ˆ‚ÈÀ öHü¿HiþM|˜øh²÷²ÈX–%òž.w˜C
-†•…‚²Ò`¯·P°IºÚýLíù&?ýã⯲s¬Ø,¯dSšwç]ù?ý
-?â7?Òù1Щsàží’º(
-ü6¡¹$´HÊ*K^˜l¦µ£ïÞ©s±ðûgM,&†af0 †•…˜²2ˆb6iƒXW»Ÿ˜©½ÞÄÜÎ=ØYEXž(E_q@ü¿Ø&ÁFQã‚Z}ƒ¤Æ¯G¨ù
-\'4v¹@`ã£Ø\ÇÄÆ?5ØÄaFÔÊ'­0ÝÐA>Lº¦i5 S[0-»Uºy¢Ý ³¥½©ŠC½KáˆN/ÙAlapød%osk†¼¯fÈCÞ(ò+Å[Œ0$aH;†ü~Îßkºžã)†Â¦^aüâ“4¾:îöG8ÔÊùŴ‰´ÿÄs]8Ç4 #° + leeÀŽ,°mÒì®v?lS›ÃNÄ>ŠsÁÙô©>µœ_³º2#zas,E*[dè ÐéС7[
-id„ý4¦Õ0m¥Ñ¡¥
-°I+ «Ý¿Lí{Ôu]î‹5e×¥ÓøX=ö[½‰®»"ååÑÇ¡®â»ûµðOÞ_3æ}í¬“wÉä¤?ÈúžÛð†hÁSÃú.•®‘Wä‘ÊïlEÕ {…ø¡Ó;G
-ÛðÈ‘·±±06Š ÅØ^-¢¿¶j?½F•t7×ñ90d6BäQ—Â-D‹L^àJj±ªÞ£z‹uõ7®G¶Ëx8›c°ˆ¿¤uæåE\#þò‚tò&™ª1ZP"¦}Ä Ç‘…£4j@KÝΦkì÷£4„ã&]ÉøZ?$üÑ`'¿¿IËJ¦ž"ö:íbo¸ùáé+‡²w7Jcðì··T#ôB^UlŸOj4V`qÅ‘˜a4 Li`^d) Øt`]á^`¦°¨¡†p"üU±¼¬ŸTÂ숚*ü/¯¯Å¡FË;ÑøƒJQ6‡F¿¯2`äø‘±ºÄ›n¸ãþ¹Ø‹|·^ÊÖëc
-¾šÈÖϺ`]Ë4OòJv‰šU N«µƒiqLË2í«ÿ
-ŒÛÏiueK×±ôƒƒæÏBŽãŒÄaÓj˜¹¶jÞLpð0s«tÃüD»—yK[ÏÇ"ß»ø+Vý,/MÓ­ ~‚é;üd'DÄñCK˜ýl~h½u Äë!ÍTò'/Ø‹PˆÇª¦•…’²j(ÙöK«´A©«ÝOÉÔ^³ïÇTìq{–«íPo‘Í#/þéºÐ湚»×,Ý…ô¦¬+#wŸ[<¹ÂùÅ!Ù±r¹
-…º#õ:ÓÊEYi(^ds›´¥«ÝÅÔOï7ÕḭD˜d™7žmôl‘‡ü€ºíÉÿ ã
-.Wçñ|¾FñZD—øw¦~TЙìkUUIw9SAèJ6î$Í«z꾅щlÍ£ü~dÃÏu1dwGÛ›VdÊJ# ‰å4i•6uµû‘™ÚËøBm¼DÁ¶Ï9„§L½Î´ç1NîC݇MyúýȺ‡ лéz~ÐÛ–±DÇÊŽ§^I§‚ö;•“~f8ö–…a4LK5eb©TÛtV]á^T¦°Žqn¨bœñ7ƒ´ºsnÔ©b‚å2^Åâêr…tÇÉÐû¼¤é“ÖÓ?±N©áv3¥†f#¥æÒè¢.lå¹x òüßµ·eYšìÕ‹Z¤uö×ÎÚyÍnð i©³xˆ¿OÛ3ùŽ>“þϯíUñ
-endobj
-1678 0 obj <<
-/Type /Page
-/Contents 1679 0 R
-/Resources 1677 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1676 0 R
->> endobj
-1680 0 obj <<
-/D [1678 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1681 0 obj <<
-/D [1678 0 R /XYZ 56.6929 748.5056 null]
->> endobj
-1682 0 obj <<
-/D [1678 0 R /XYZ 56.6929 748.5056 null]
->> endobj
-1683 0 obj <<
-/D [1678 0 R /XYZ 56.6929 748.5056 null]
->> endobj
-1684 0 obj <<
-/D [1678 0 R /XYZ 56.6929 743.7078 null]
->> endobj
-1685 0 obj <<
-/D [1678 0 R /XYZ 56.6929 719.6381 null]
->> endobj
-1686 0 obj <<
-/D [1678 0 R /XYZ 56.6929 711.8197 null]
->> endobj
-1687 0 obj <<
-/D [1678 0 R /XYZ 56.6929 697.0552 null]
->> endobj
-1688 0 obj <<
-/D [1678 0 R /XYZ 56.6929 691.8868 null]
->> endobj
-1689 0 obj <<
-/D [1678 0 R /XYZ 56.6929 665.1671 null]
->> endobj
-1690 0 obj <<
-/D [1678 0 R /XYZ 56.6929 659.9987 null]
->> endobj
-1691 0 obj <<
-/D [1678 0 R /XYZ 56.6929 635.929 null]
->> endobj
-1692 0 obj <<
-/D [1678 0 R /XYZ 56.6929 628.1106 null]
->> endobj
-1693 0 obj <<
-/D [1678 0 R /XYZ 56.6929 601.3909 null]
->> endobj
-1694 0 obj <<
-/D [1678 0 R /XYZ 56.6929 596.2225 null]
->> endobj
-1695 0 obj <<
-/D [1678 0 R /XYZ 56.6929 569.5028 null]
->> endobj
-1696 0 obj <<
-/D [1678 0 R /XYZ 56.6929 564.3344 null]
->> endobj
-1697 0 obj <<
-/D [1678 0 R /XYZ 56.6929 549.6297 null]
->> endobj
-1698 0 obj <<
-/D [1678 0 R /XYZ 56.6929 544.4015 null]
->> endobj
-1699 0 obj <<
-/D [1678 0 R /XYZ 56.6929 529.6968 null]
->> endobj
-1700 0 obj <<
-/D [1678 0 R /XYZ 56.6929 524.4686 null]
->> endobj
-1701 0 obj <<
-/D [1678 0 R /XYZ 56.6929 500.3989 null]
->> endobj
-1702 0 obj <<
-/D [1678 0 R /XYZ 56.6929 492.5805 null]
->> endobj
-1703 0 obj <<
-/D [1678 0 R /XYZ 56.6929 467.136 null]
->> endobj
-1704 0 obj <<
-/D [1678 0 R /XYZ 56.6929 460.6924 null]
->> endobj
-1705 0 obj <<
-/D [1678 0 R /XYZ 56.6929 436.6227 null]
->> endobj
-1706 0 obj <<
-/D [1678 0 R /XYZ 56.6929 428.8043 null]
->> endobj
-1707 0 obj <<
-/D [1678 0 R /XYZ 56.6929 414.0996 null]
->> endobj
-1708 0 obj <<
-/D [1678 0 R /XYZ 56.6929 408.8714 null]
->> endobj
-1709 0 obj <<
-/D [1678 0 R /XYZ 56.6929 382.1516 null]
->> endobj
-1710 0 obj <<
-/D [1678 0 R /XYZ 56.6929 376.9833 null]
->> endobj
-1711 0 obj <<
-/D [1678 0 R /XYZ 56.6929 350.2636 null]
->> endobj
-1712 0 obj <<
-/D [1678 0 R /XYZ 56.6929 345.0952 null]
->> endobj
-1713 0 obj <<
-/D [1678 0 R /XYZ 56.6929 321.0255 null]
->> endobj
-1714 0 obj <<
-/D [1678 0 R /XYZ 56.6929 313.2071 null]
->> endobj
-1715 0 obj <<
-/D [1678 0 R /XYZ 56.6929 298.5024 null]
->> endobj
-1716 0 obj <<
-/D [1678 0 R /XYZ 56.6929 293.2742 null]
->> endobj
-1717 0 obj <<
-/D [1678 0 R /XYZ 56.6929 267.8297 null]
->> endobj
-1718 0 obj <<
-/D [1678 0 R /XYZ 56.6929 261.3861 null]
->> endobj
-1719 0 obj <<
-/D [1678 0 R /XYZ 56.6929 199.468 null]
->> endobj
-1720 0 obj <<
-/D [1678 0 R /XYZ 56.6929 199.468 null]
->> endobj
-1721 0 obj <<
-/D [1678 0 R /XYZ 56.6929 199.468 null]
->> endobj
-1722 0 obj <<
-/D [1678 0 R /XYZ 56.6929 191.7053 null]
->> endobj
-1723 0 obj <<
-/D [1678 0 R /XYZ 56.6929 176.9408 null]
->> endobj
-1724 0 obj <<
-/D [1678 0 R /XYZ 56.6929 171.7724 null]
->> endobj
-1725 0 obj <<
-/D [1678 0 R /XYZ 56.6929 157.0677 null]
->> endobj
-1726 0 obj <<
-/D [1678 0 R /XYZ 56.6929 151.8395 null]
->> endobj
-1727 0 obj <<
-/D [1678 0 R /XYZ 56.6929 137.1348 null]
->> endobj
-1728 0 obj <<
-/D [1678 0 R /XYZ 56.6929 131.9066 null]
->> endobj
-1729 0 obj <<
-/D [1678 0 R /XYZ 56.6929 117.2018 null]
->> endobj
-1730 0 obj <<
-/D [1678 0 R /XYZ 56.6929 111.9736 null]
->> endobj
-1731 0 obj <<
-/D [1678 0 R /XYZ 56.6929 97.2091 null]
->> endobj
-1732 0 obj <<
-/D [1678 0 R /XYZ 56.6929 92.0407 null]
->> endobj
-1677 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1735 0 obj <<
-/Length 2545
-/Filter /FlateDecode
->>
-stream
-xÚ¥ZKs㸾ûWè(U€ øÈM¶l&3¶#y²IÍî–`™ŠTHʳ³¿> âA" É¦|0 4ñýu7º›ÂxS‘$˜DIàQ„éd{¸B“=ÌÝ_a)3WBsSêúùê/w$š$^úáäùÕX+öPãÉóîÛtñôtû°\ýs6÷)š.¼Ùœ"¤Fon7³y&|‚ð©M¯WןW÷ëÅÓlj‡~E-–âfóõþþvó|+o×·‹åêáDðì·çOW·ÏúµÍ­aDø;ÿçêÛoh²ƒ~ºBIb:ù7ÈÃIâOW% Q#ùÕæêïzAc¶}tLU”ÄýhDW>ž`ì%”ú=eÑÄ ‰OZe-6b[GV¥MVµuWÃ[\ Kˈ cd Žþm}wŠ"¿ 11E^œÀû;@µÌ.;TL©G„š°Ëòf…Øwº;dEV7°ù²ªÅXÙ颽ߟ²óø;¶„Cêqà ñu?ñ/žøÿ¹l`ÍY¨‰‡ò^X%îpGžUÙ@œ/mÈ¡nCÊ¡p%¥UNIäP¹ ÚPúÛ¢vü¦<J©xmyË´IÅÕ]–3quS¿"äïO‚1x[U3O9M#T€2ƒ0 }*žfØO¦’kƪ†R9÷¸mJƒŒ„XÉ èB¨2¥ìdh)MF‚};N莌3ìq2zà£dè0æÒ?ŠÝŸ¥ÄÇÔ ãØïS²Tl¤•éw쥚ÅÓSZýÐŒ„vF"Ø9EñF )#JJ1â#ŒŒ¸  F†ØFLð3åßTYêLºÇk)u]–Œ(éAz̆UשׁG£Tƒ ÆaŸ‡kÉ×´(²b?`»ç8ÿ˜Q:Í~ϘÅs<>Â_ ©r°$…4I>N$9p ŽÀР䝵Twù:pœEž¥5«L=°æ{Yý»£(Û²qŽÂØ‹ü ?I>¦‡,o”Ói’ÖrúîGU¶k,E
-²—Ì}’x”B^1|^DXáª
-D}`k0ùzH‹v:–<ó÷‘<k˜¹mP7,ÏKÍt ²}Ó|Û³"
-Ç;%þ…ànJ9WRåØA¹ Úà|ˆm!ÝçŒ
-cGðiJîú즩ÀÔ–'<1â©+kc?Ÿ‰£|^™Ñqthq'¶éÃ
-;Æù2ãb­–p>óE®é~§Åö5‚ð &PA]:ÍM);áZÊ Ü‘;¡;Â졂 ï?ŠÛrÇx
-d¦ÎG7?€…ƒéD)'x·€1·¨^²¦jë!1[i„E7/§Æ<"™U5yªÈWY—5+^ÒÓAŽó£]F ñT/X8«b)k@.”`†E%¤IŒ°£%äÂí8Sh"K.xVÕOâ»N{9í÷œ…‘Áfâa¯<o –PZº@I`Wq
-O¶y)ÒÙÑÖkÚ'áQ· šžöo")3}{” 6_('L)JJAGé„6ˆb[ˆ0Áõ‰ê€_ŠÜ .nÊÃ1-~tâjÍ Þ³w o„‚Ä÷‚Øìî„L?yâɿ嬀“©õµ{ð™_8;eþ*Яp/ç¡þ«_~´AQ>® 9<-b+Ÿ~D½(¼t\˜Rv>µTÇ'u$NèŽÏ3ìq>{à Ý}gE×½S.%³‚ó©ì÷rjGwå¬P„Wõ1þYoÓe»›Øƒ ¼tBZ¤NéQä¨á\¸)` 'òšA5FØÖÈ™-¢¹"Nô:Q•:¢ þ0lyCB»/ÁóêAÓ¯%k”"J¼8 ù÷'IQ猣oHÀ±&B½
-e'´AñÛB± ~úØúœ¾0U3gg'íhM![ –z" ’ñÏ`7UúýUôHv*œö§ºÑ<$V ” ÒMƒ!dgA uŸ¤"GíÂí8S`" '‹1œ†g"Ùû¦äÿÍâeT†+ã<”û½Ø«ïú±ò
-XeÍŠ·ôñ"œ€M (2›q"èŠûtuËÊsS>Øs«õ¹ó”¿ÓøtÊæóO+Ȩ­#àÿïdýÉÈ#±­çBP™z©—â›K’á›ë_n¿ú %÷Üendstream
-endobj
-1734 0 obj <<
-/Type /Page
-/Contents 1735 0 R
-/Resources 1733 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1676 0 R
->> endobj
-1736 0 obj <<
-/D [1734 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1737 0 obj <<
-/D [1734 0 R /XYZ 85.0394 748.4854 null]
->> endobj
-1738 0 obj <<
-/D [1734 0 R /XYZ 85.0394 748.4854 null]
->> endobj
-1739 0 obj <<
-/D [1734 0 R /XYZ 85.0394 748.4854 null]
->> endobj
-1740 0 obj <<
-/D [1734 0 R /XYZ 85.0394 743.3452 null]
->> endobj
-1741 0 obj <<
-/D [1734 0 R /XYZ 85.0394 728.6405 null]
->> endobj
-1742 0 obj <<
-/D [1734 0 R /XYZ 85.0394 723.1655 null]
->> endobj
-1743 0 obj <<
-/D [1734 0 R /XYZ 85.0394 708.4607 null]
->> endobj
-1744 0 obj <<
-/D [1734 0 R /XYZ 85.0394 702.9857 null]
->> endobj
-1745 0 obj <<
-/D [1734 0 R /XYZ 85.0394 688.2211 null]
->> endobj
-1746 0 obj <<
-/D [1734 0 R /XYZ 85.0394 682.8059 null]
->> endobj
-1747 0 obj <<
-/D [1734 0 R /XYZ 85.0394 668.0414 null]
->> endobj
-1748 0 obj <<
-/D [1734 0 R /XYZ 85.0394 662.6262 null]
->> endobj
-1749 0 obj <<
-/D [1734 0 R /XYZ 85.0394 599.7666 null]
->> endobj
-1750 0 obj <<
-/D [1734 0 R /XYZ 85.0394 599.7666 null]
->> endobj
-1751 0 obj <<
-/D [1734 0 R /XYZ 85.0394 599.7666 null]
->> endobj
-1752 0 obj <<
-/D [1734 0 R /XYZ 85.0394 591.7571 null]
->> endobj
-1753 0 obj <<
-/D [1734 0 R /XYZ 85.0394 565.0374 null]
->> endobj
-1754 0 obj <<
-/D [1734 0 R /XYZ 85.0394 559.6222 null]
->> endobj
-1755 0 obj <<
-/D [1734 0 R /XYZ 85.0394 534.1777 null]
->> endobj
-1756 0 obj <<
-/D [1734 0 R /XYZ 85.0394 527.4872 null]
->> endobj
-1757 0 obj <<
-/D [1734 0 R /XYZ 85.0394 502.0427 null]
->> endobj
-1758 0 obj <<
-/D [1734 0 R /XYZ 85.0394 495.3523 null]
->> endobj
-1759 0 obj <<
-/D [1734 0 R /XYZ 85.0394 420.5376 null]
->> endobj
-1760 0 obj <<
-/D [1734 0 R /XYZ 85.0394 420.5376 null]
->> endobj
-1761 0 obj <<
-/D [1734 0 R /XYZ 85.0394 420.5376 null]
->> endobj
-1762 0 obj <<
-/D [1734 0 R /XYZ 85.0394 412.5281 null]
->> endobj
-1763 0 obj <<
-/D [1734 0 R /XYZ 85.0394 388.4584 null]
->> endobj
-1764 0 obj <<
-/D [1734 0 R /XYZ 85.0394 380.3932 null]
->> endobj
-1765 0 obj <<
-/D [1734 0 R /XYZ 85.0394 365.6884 null]
->> endobj
-1766 0 obj <<
-/D [1734 0 R /XYZ 85.0394 360.2134 null]
->> endobj
-1767 0 obj <<
-/D [1734 0 R /XYZ 85.0394 345.4488 null]
->> endobj
-1768 0 obj <<
-/D [1734 0 R /XYZ 85.0394 340.0336 null]
->> endobj
-1769 0 obj <<
-/D [1734 0 R /XYZ 85.0394 325.269 null]
->> endobj
-1770 0 obj <<
-/D [1734 0 R /XYZ 85.0394 319.8539 null]
->> endobj
-1771 0 obj <<
-/D [1734 0 R /XYZ 85.0394 295.7842 null]
->> endobj
-1772 0 obj <<
-/D [1734 0 R /XYZ 85.0394 287.7189 null]
->> endobj
-1773 0 obj <<
-/D [1734 0 R /XYZ 85.0394 272.9543 null]
->> endobj
-1774 0 obj <<
-/D [1734 0 R /XYZ 85.0394 267.5392 null]
->> endobj
-1775 0 obj <<
-/D [1734 0 R /XYZ 85.0394 252.7746 null]
->> endobj
-1776 0 obj <<
-/D [1734 0 R /XYZ 85.0394 247.3594 null]
->> endobj
-1777 0 obj <<
-/D [1734 0 R /XYZ 85.0394 223.2897 null]
->> endobj
-1778 0 obj <<
-/D [1734 0 R /XYZ 85.0394 215.2245 null]
->> endobj
-1779 0 obj <<
-/D [1734 0 R /XYZ 85.0394 149.4956 null]
->> endobj
-1780 0 obj <<
-/D [1734 0 R /XYZ 85.0394 149.4956 null]
->> endobj
-1781 0 obj <<
-/D [1734 0 R /XYZ 85.0394 149.4956 null]
->> endobj
-1782 0 obj <<
-/D [1734 0 R /XYZ 85.0394 144.3554 null]
->> endobj
-1783 0 obj <<
-/D [1734 0 R /XYZ 85.0394 120.2857 null]
->> endobj
-1784 0 obj <<
-/D [1734 0 R /XYZ 85.0394 112.2205 null]
->> endobj
-1785 0 obj <<
-/D [1734 0 R /XYZ 85.0394 97.4559 null]
->> endobj
-1786 0 obj <<
-/D [1734 0 R /XYZ 85.0394 92.0407 null]
->> endobj
-1733 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1789 0 obj <<
-/Length 2121
-/Filter /FlateDecode
->>
-stream
-xÚ¥YIs㸾ûWèª*B°pÍM¶ÔŽ»=¶cy*™t÷¦`‰eŠÔˆ”»5¿>x J$5•”Äòà}x 6¢ðc#Ï'~Ä£Q¹Ä£Ì%›+:ZÁÜí34“šhbS]¿\ýí“F‰|î^Þ,Y!¡aÈF/˯Δ2 Ô¹¾»¾¿{¼}ž>ýã·ñ„{ÔùF=:}˜agñëíí|ñ27Ýçùtv÷p $l< üˆ:Ó§§ùÃìîß8?URi3z3_Œ¿¿|¾š¿4˶·Æ¨Pkþýêëw:ZÂ?_Q"¢Ðý€%,Šøhsåz‚x®õHvµ¸úg#Кլ¦b”páó[q6bŒDžÇ[Æò"â .´±_Ë"“•\âg c™ìwiu0¦ùtSönV¸Ð Ñ-*\›è±¦RKû
-Z9õ½ï§šç`/VÝPë‘¥›ñ€x<hëž›8ÍÇ—Sç!ÞHÕbÎâPVrƒ£G©™ùÏJæeZäÚL'»c!%Aø°.%û¯Àâ gF k\VYü.Ç g\GìÆ,t–¨'ÎMãÆÐ‰÷o›87R>Çù>Þ”VØr­hÒÀúà\¤=ê’ê
-›ª‹†ªÃ~4¨úˆÆ™îN8Zº/Û¿h†ý($мÿƒ_bÝMÖ Q?~H"\ÈK6Õ
-¸÷‹Š{Jð/qYÊŽéZA/‰E©¢
-\§Il‡·îLx‹j
-aÜo汆ÆÙ3¨¢sõd¥Ë*^ÉÛXxùÎR~ȬتýÁŠüˆ9w›m&U¿Øé½cïU¢Àâ,pò¢2ª‹ö6°L@ÎU\¿²q8.€6býN}×I?âL¥°Ž ®üHU®‹}fFµVÕx•øý}_à»*ê¬cIj†\m­17ÂÞÔ©ÏpÐÆºû<3ú$)6“.|¶qžjéŒ:¯ü≀Æ2-“,N7:‡ê‰¸jH ññBçç®:s%võrá‹(+$-K¢èp
-uüa„ÄøÉÒ7YÂò°§O+|Ëô'66E^­ /œ÷z‰?Ö)\6;6jVìÙ+†ÎRZ/ÙÉT[?뙉WÃ
-BRSOÄú1£ì ô<(AD]­Xx©°óZìM¬¸¾{˜åºP¬ú\J"VßCÞäN¹Qï3;¡Ô»pý²©Î“ ì‚
-ÓÙ„õç‘A­Ç<r¦¶3´´b¡žq+êÛ–²íC@ …ñç)ÞgÈ4ÍàÂõlj¤8Nš¼ëøýût¯™ çö°KWk\F,an¨þ^¡æ9Á%@?.aÂIàG°O‹îe^×å€ÃúúdQâÚò5.«b[èhAöfúwœyüË3¤™yÂçžÒur¥kª‘)\+’ÎrÙ[tÀaUuàE›cýÿ/eU/aßU„f¿^”6 ¥gK¯ÿÁ:_ûøØendstream
-endobj
-1788 0 obj <<
-/Type /Page
-/Contents 1789 0 R
-/Resources 1787 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1676 0 R
->> endobj
-1790 0 obj <<
-/D [1788 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1791 0 obj <<
-/D [1788 0 R /XYZ 56.6929 749.4437 null]
->> endobj
-1792 0 obj <<
-/D [1788 0 R /XYZ 56.6929 749.4437 null]
->> endobj
-1793 0 obj <<
-/D [1788 0 R /XYZ 56.6929 749.4437 null]
->> endobj
-1794 0 obj <<
-/D [1788 0 R /XYZ 56.6929 746.6461 null]
->> endobj
-1795 0 obj <<
-/D [1788 0 R /XYZ 56.6929 722.5763 null]
->> endobj
-1796 0 obj <<
-/D [1788 0 R /XYZ 56.6929 716.7581 null]
->> endobj
-1797 0 obj <<
-/D [1788 0 R /XYZ 56.6929 701.9936 null]
->> endobj
-1798 0 obj <<
-/D [1788 0 R /XYZ 56.6929 698.8254 null]
->> endobj
-1799 0 obj <<
-/D [1788 0 R /XYZ 56.6929 684.1207 null]
->> endobj
-1800 0 obj <<
-/D [1788 0 R /XYZ 56.6929 680.8926 null]
->> endobj
-1801 0 obj <<
-/D [1788 0 R /XYZ 56.6929 656.8229 null]
->> endobj
-1802 0 obj <<
-/D [1788 0 R /XYZ 56.6929 651.0047 null]
->> endobj
-1803 0 obj <<
-/D [1788 0 R /XYZ 56.6929 636.3 null]
->> endobj
-1804 0 obj <<
-/D [1788 0 R /XYZ 56.6929 633.072 null]
->> endobj
-1805 0 obj <<
-/D [1788 0 R /XYZ 56.6929 609.0023 null]
->> endobj
-1806 0 obj <<
-/D [1788 0 R /XYZ 56.6929 603.184 null]
->> endobj
-1807 0 obj <<
-/D [1788 0 R /XYZ 56.6929 579.1143 null]
->> endobj
-1808 0 obj <<
-/D [1788 0 R /XYZ 56.6929 573.2961 null]
->> endobj
-1809 0 obj <<
-/D [1788 0 R /XYZ 56.6929 558.5914 null]
->> endobj
-1810 0 obj <<
-/D [1788 0 R /XYZ 56.6929 555.3634 null]
->> endobj
-1811 0 obj <<
-/D [1788 0 R /XYZ 56.6929 540.5988 null]
->> endobj
-1812 0 obj <<
-/D [1788 0 R /XYZ 56.6929 537.4306 null]
->> endobj
-1813 0 obj <<
-/D [1788 0 R /XYZ 56.6929 510.7109 null]
->> endobj
-1814 0 obj <<
-/D [1788 0 R /XYZ 56.6929 507.5427 null]
->> endobj
-630 0 obj <<
-/D [1788 0 R /XYZ 56.6929 477.5928 null]
->> endobj
-1815 0 obj <<
-/D [1788 0 R /XYZ 56.6929 453.2532 null]
->> endobj
-634 0 obj <<
-/D [1788 0 R /XYZ 56.6929 369.7201 null]
->> endobj
-1816 0 obj <<
-/D [1788 0 R /XYZ 56.6929 345.3805 null]
->> endobj
-1817 0 obj <<
-/D [1788 0 R /XYZ 56.6929 310.6805 null]
->> endobj
-1818 0 obj <<
-/D [1788 0 R /XYZ 56.6929 310.6805 null]
->> endobj
-1819 0 obj <<
-/D [1788 0 R /XYZ 56.6929 310.6805 null]
->> endobj
-1820 0 obj <<
-/D [1788 0 R /XYZ 56.6929 310.6805 null]
->> endobj
-1787 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F39 873 0 R /F14 717 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1823 0 obj <<
-/Length 1916
-/Filter /FlateDecode
->>
-stream
-xÚµÛŽÛºñ=_a }ÐËHI穹µÙdS4[ô!Ù­MÛBdIG’wcý÷ÎpHÙòÊÇ(ŠÖäp8œûEbÁáO,2͸ʓEš'Ls¡ËÝ+¾ØÀÙß^ “hÅt¢lfNc­2¦3™.âS"ïî_½ù« É™1R/î×ã[&MÏ÷«oÑÛ¶µõªüyKÍ£w7÷¿Ò­„¥Y*ð‡Rf”6îÆç¢Þá·ÅÆöã‘0•éïÍ ×™»óމ›XpΣU¹A|DP)SÆwÅÎz:j‘³ÜHãÉ(ÁT<#^vï~—2¥Õ‡»¯´¨šæÇ¾¥õ~(«r8,×:0–&3AÂ|=ÔMÛ—N†WïG΄&Â0¡s5§w|J\0JÆH/ð¹# g“DœHL2brÐÖ·¿ô¶{²ÝƒßÆ$“>U’à)Ó¹Ñð.^.V«ÎöÞ*“·@ð,QÂã4—34•f™Ñä²*f ÊœeYšŸ\_%¸.+[&Ÿ2™²LòôœæÿÍv†f¬Ð×u–-âÑkàNÛtß.i ;'üÛUf/0*ËWçô†«ô†Cû?Ðûy•:ѽ„IóÂÞ‡«ä¾mwÅò—”ú—ö0C9ç,ɹ9'Œ+óàòF¬€r®¸œÚç’¸¨Œ°v®6¿ímwhÚ1öp)âU*Y’Š?ñ§$.Güˆ5øx{™5-™ÉUúGX;!ñ;¬¬)k›ªy,ªx¢ÅXÈQ³A­Wrî‡_ßÿãöï÷·_îFìIÊ—â˜ò_Ö¥Cñàˆß¹æ«fW”5¤ÿ„Ge½nº]1” Tmº‘EMk;@©§³‚¶ß9WögùXYMSÑ Ð
-dÛ¥ ¯7„IÎ]L;%ížÝÄŠ§Ñí@Pxùê ¯9‡²Lü™ª *,Ö+XH,ž}[¶–ÀEÝ?ÃsZ þšãÕãÐzØwµ]ÑñšDÙ#)DR r{RÉÓ>ìÐJ»‘5ì>7ýÊü©XNWÊÈ/»².oDÔ]14Žy
-‰Í~gë¡GÓi Æ%ì¢êÂÚ½Ñþ±–žä®YyRÎÎø aM©Æ)À$By2uû1…PÄ+JɉA!?Ð!R?øq QÜ3•¬¬Ë-&zK°Gˆ½5-û=ÝhÓx s`|cªGõT%ä¼ ¯·(X?&Ì™ˆn;L‹ˆo’èykkZa:yYäÓœ aoÈx;ïU:3¡ ˆ¤KØð»)Ÿlâký³®Ê–à¶èªÒ
-l0ý"ë¯q›Rv“FGïnï>Fî©îZ~½8¾Ô¬gcf01vÏë’NuðfðÎæ™´'8På"™ÿn_ e[ÙÓèî§‘üè˾ß[å'~á‚Ø£xãzb`a6Zì$Ag”ù¾TÊC V+‚¸çâ
-;
-‚ô­]–è„KÚ‡²§|Á¸IÈŠ/(yÎ`ú×(a–ñ8ÏeUyƶÀP”>
-©,ƒqI
-³SßûÆ
- Î±
-ÙÕu<¼œfœlÖš÷®1„Rs{G¿ÔÂâý'ú¥¯®ÕÅ\дX¬Š–6¾&Ãj¸JnhZ"VÙ'[Œº{OÙ=ªOÒ,úXRs„pê¸ü3`¹>$ð0TOÌ{¤³éÒ·pçžÕÌÈà]ñr¾šI(“jæ”ÏïÐQ¸tº>x å2Aó¼‘Ѱ›!5#Ì…©ò=f¸73­s˜çä8„‡Ï3‡öïóS®Ä:Y
-endobj
-1822 0 obj <<
-/Type /Page
-/Contents 1823 0 R
-/Resources 1821 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1676 0 R
->> endobj
-1824 0 obj <<
-/D [1822 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-638 0 obj <<
-/D [1822 0 R /XYZ 85.0394 769.5949 null]
->> endobj
-1825 0 obj <<
-/D [1822 0 R /XYZ 85.0394 573.0107 null]
->> endobj
-642 0 obj <<
-/D [1822 0 R /XYZ 85.0394 573.0107 null]
->> endobj
-1826 0 obj <<
-/D [1822 0 R /XYZ 85.0394 538.4209 null]
->> endobj
-1827 0 obj <<
-/D [1822 0 R /XYZ 85.0394 504.6118 null]
->> endobj
-1828 0 obj <<
-/D [1822 0 R /XYZ 85.0394 432.7569 null]
->> endobj
-1829 0 obj <<
-/D [1822 0 R /XYZ 85.0394 303.3232 null]
->> endobj
-1821 0 obj <<
-/Font << /F21 690 0 R /F23 714 0 R /F41 910 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1832 0 obj <<
-/Length 3970
-/Filter /FlateDecode
->>
-stream
-xÚÍZÝsÛ6÷_á™>T™‰X€
-@Š$Uy‘@*Ï¥Ll–¥#d6ÉUªœ®/ß½ÿá5íë§kØî ÞTÙ‰sèNTž÷ÊîŸÖõ¬\Òºyhge_· ýnïx9˜D’S 7ϼ¾,&M¢•Îx̲m?v4å²þX}K/èá¬S)u¢3ÝTI
-ÿÂìÓNî_]µy¨6ô£)Wµ€ý*²ü4K¬1ùx®Ç¼/‹ ­?:q™)ósM’kU9!4Žr¤‹ˆŠ†Q¸43¿·¬M“,+ôç—õƒ—íØš$SÖŒ—­QèHiâJeÁ!©ÝÐóò=õ”ó9 §ãwàì½ë©}K´OÛjóôLJ9SSÖNn~õYÙÐØ[~ßývk?è#«×<dÞö}5Ÿ¢äà0áTµ@ ñæ€RÍê•SàBMš¶÷ê ¿hŠ×S¸^ΔñzŠ×S“Y»l›é¼ZÖ«Ï
-;ÓÂNþ³¨x4ÉÝv½^Ö0Þ©b6<eLRX#Ùvš°w€ªHòB[V:öxßZæIV„}“׻߮ª¦g»eã*é±h»OëyÔzA´§­Wy–YRíò¡âuúEÉ+³R@ WNîZL$§usü%–†ÑNk$¨Äi#¢LÁå ´æÓ¢TåiQ¦cQê‚D ϵ{«}¨çÕ<&G+“"ÓéI1Ê<ç1³¶é¶Ë¾‹8?`Ø ï§ßTýì›x/ÝEf†ðþÒPÙ̉ix]ñH9u0\ ‘ĸYw¤á4–.!1¥:Od*åXN7 >6»^>ÑÏ;’ÕÊŸsuä˜÷Ô€õjÝ6ón¬Çóº[/˧jžóÔYÑOgæóžz8긧£pŽé½E ‘äÂ÷gõƒ\‘þé|¼hÝ]{·×å­që³uFæ7ß—t˜¿ ¶JÁârÅ£·ëã»ÓàœN{0ê3Âö£pß>zG…ý¹EwÂÞ_4.ìá¢u3ÄÓ;3±P“´7®å„O
-j®Yópô§mM9QKSƒ-
-ï Ž
-)´w-.ÂÁœ·¼²a¶Êe=nÆ™·‚×­Èò±yãRÅ kÀÞÒª“ j!G.8±|àŒºØ")t!¿
-‹¨íÛ5»¬–ÝQÉP÷"fGIàj
-ëÖþñýÍåWןÞyð¢‡!@Z€ÿÒðF¦·±½b^`}8i×§çà_{'OãÝFÂÎúù
-¢QœcÝnz¢¯Ê'jÜ2?Ý`ëoF¡qOÔQ®×8¨Æ);ªÎp[¸âW$i9²lùù{ä(Lbtá8¶'T ´ÚÞšÅI…0•+§Z„ Dòê®ЃY¹ šôÙ²tG
-ÍßD&.¯¨Mf CݱÀAA§¤®š‡·€$6õ|î08üFÁá}Ô¬`Dbeêw5Åí*×騮bžYéÄÂÃJÚA|B¾f2ï™=×äM¯Ü^ L~p¶`ßœ)ðÿÒŒO¾dùözϽ­ººÇœ¿á¾|»÷æËEÙv âè»IP¿½Sz.k´Ó\‡™f·{ÏÆÇª‹øþ\ª°'|?°¦Ãy´àò!ªÓ´5O[ö WZ©s'™šå¥36G(ñ!0&¹"Çî-På®ïˆ‚¨
-Ÿœ2Ìœ³BBÀÅ”½B¬’E®ö‚.YŠž 3XV1µKAí¼vÞÕËÊCÔ}w yf*ÌÀÝÚb˜Þ)$}YCºÖtD(éÑlW.‹ÛÐOà {E"$¨¬…tÎ×õ¬©
- AdMÅ+¾.QâH„`OæžQz $Þm6`GOºE»]Ή~Ën
-'i#ZšÃÔÉ,PfÆ;„mG ñçY»ZA7E)úmqTâ|L F&BA‹ª~ˆÒ”pǧ„°ÖL»&*}€„°wCTôKøtº }..‰Œ÷ p ``q̧*™dªð†7]Ç}ªµÿ‹+kD5yYpØJ CÕWq'kÓ´8Y·ían¿çl°gMùÐá!N•¶‰ÉŠ=e;z˜i±7!|ƒþÌ©U;(¦²ú µd»ä!ΰ<:IXÀèÔ°ëÕÕ55h+Øò[Á6ÄÚé
-â —õw›\Å`@†•ˆl`<0áÍ"$ûb"‹E¥C±
-ÈZ0>ÆB|w'0oë.b\sX3í|9åÒã“øàý†Sò_¨§RsYÉ«r½&/#G·ŸN£DZ;ž™´{¹ô—z8¢«Wà\CéJ²3“êˆK+^ÚÅ]:â<;]ɨ¦ÃÊcÜ߈]%µæÝ8_ ì;DEe+a-Õ^åp\q4|3 O¾‰Þ]7C°ðÃÏéÛ¡Y —ôÆá]² wÐft
-.ÜþbÙ (},‹Å7Äò¼d¸¸‹• )5ÀÄŸå
-îOh…;•šUj÷Á+íî´q âÑræ?_*÷eÏUÒ¾¹¾|ƒ¢~Λ :€FÀF•«Dí]ïâk8(Ÿ|tõPPíP…bà$?–›
-"BVhù^bÐuCŸ`3¤ç8ðí»‹—Ów¯²X0N˜¥5öDPG–¡ðDê(OÔ£ã±'8âÁؽ0xŠ}æD¢d>„z˜(„äŒië|
-qÿu¢È¹šc>âwš¥E˜ ¤ÇmÙUÓ\S_ÕÌÚ9Á'ï Ñþ´ô_Ð.y’ûªÁ‹(œvN”[N`æ «Ù81hÈZ±‡ö6Ér³w9ôÎM¸&Á6•ëÁNÊw?.|‹-ÙõÇÕº
-Ÿ+вz
-!oÃü=uà—;úQv;\Ù/JžÊ#ƒ=<Ô]í‚1þ€ÀƨÀBιï¸
-¨xÛ¯·=] 2(èYw(Yéïù#PVhÍst‹j¹üš!5àí¾¥J–¿+s÷Yb
-endobj
-1831 0 obj <<
-/Type /Page
-/Contents 1832 0 R
-/Resources 1830 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1676 0 R
->> endobj
-1833 0 obj <<
-/D [1831 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1834 0 obj <<
-/D [1831 0 R /XYZ 56.6929 752.2728 null]
->> endobj
-1835 0 obj <<
-/D [1831 0 R /XYZ 56.6929 504.0748 null]
->> endobj
-1830 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F48 925 0 R /F53 1002 0 R /F11 1348 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1838 0 obj <<
-/Length 2761
-/Filter /FlateDecode
->>
-stream
-xÚ­ZßoÛ8~Ï_áG»QI‘”Äö!m²EÝ6»I=´yP,9jKYKNÎÿý 9Cê‡%åpw(PKÃ!gøñãÌ
-_0øÇ‰
-˜Ðrk(ÆÕbµ;c‹'hûxÆIçÂ)]tµÞߟ½ûUÄ è(Œ÷ëÎXIÀ’„/î³oËËÛÛëÏW7_„Š-ßçбåï—Ÿ¿^~BÙí¹——¯ïà5R,%nÔ"¶¼ºùxþpÿÛÙõ½w¦ë0gÂxò÷Ù·¶ÈÀïßÎX t¢¯ð®u¸ØI%%…p’íÙÝÙ~ÀN«í:€I ’0A c(Dš u¾É÷f®zÙlÒÆ<%Ë¢FÉ߇|_ä¾”yžÕØÞT(úQV¯®oŽM?ò#JÒ’ú¥Û§j_4›õ%+Ú[yÌ‹ò už¼BDË›[ßß|¾úÙ)꾃YUæ4ÈÑ, rÁy •
-íôž÷ç<YV/EF&Ø2}&áó¾H›Üô x(ÎX ­a03†™*uÑä:`:¤c&;2„ŠA}:”€¥¢È©5àÕ./›ý-Jì"»#Gà¡f’º”é`[UåzdtXí–œT驪i½¸5ð+N`IDŒ!x|½þó\©å?Ñ‘/·÷7_>ßÌ@ã Ö\Ú~Yñ4XðÇäG»0¹™'š˜ŸdYv– ªÖ(34<’è¹)ª’º¼nŠs¾\mh€µr¯|GJ‚è5¥ÎEI‚Má:m«êÇáÙ¹`¢^»4ËIl™Ì7¢^¢^}ØÂ"Ö]¸Éù8áP?oÓ#2šEË»jgú‹'&b3`M¢:o¨mmdÉ¿3&Ò'|~,,9@ÉÎH8ÏD ´mr˜Áþ<–K³}$[ÖÞ~–7ù~W”ôêð€N5ÀG
-ÆØ¥»æá•b<»¼:4ƒžDc§¯u³‡ òTäuà}ÒA‡‰õé:Å¥[Ö$ÄÛÐ2`^Ù
-Y¾N!§ Îc„(Ì>6o&jK94‹_¯n‰ºà¸Vƒ}(·yíV®ÄßË¿~ý“b2Åî/q1“,¶áê6ª4”Kð¸JkŠâ)þX8lKU–˜Uúc­7E£P,TÑ4êhÍÐÈiy½¬NXÂr'¡š7ìµN-XÄm"é›FIÏ"F,’žEÒ³ˆ9IÞcs,’]©:n#°
-š2äâBõ£F§Â£D¾v|{LW?^Ó6qY’ìžÓ¦x,¶Es<眛0%8ÃÍa4¾‡¡|Y™ÿ]
-¤Òâ%íhÍ,©Ó²KšU»´(1õ´ÝÃu…Á£„Åóx­Súë
->D¼{.Ü™‚ND®T€‡:GxL<‘)Cj§Rá/Äá&5‹Ýï‹·¥gœ×H„9£ZºCdwâo%d¡¹âÖYhH5Ž_¬Ñ·ú9_ùÊÛ6WéÈáòB((yúdèúÚ?M'Œ´ fYA¥jSØê*âãj%!
-wT—7«wû¼®¶/SÇj «bê„v¢ ÍD
-ƒ_b4ŽÓ§­i¥-ätxVŠx@”¥3ÞèÊOÐ
-Éx{Ød†X5éìÙËÆ=”‡ SÞ!€TçQÞ?ºó¿ÍÓ,ƒP§E¿Á²ŽÖ ËœV˲Mõ:Á´X1o8àµN=\xiðRõ]¸Å¼…@ Ûº`QZ{è•ÒC°Í ü}¦=OB,ðlì+v{;5 137Ôú-ˆ;Z3;-1,ðhbTÀȘÉyë^ëÔ|߈±âqßþUî.'Òö¼Ò ÈHغð±¬Êã®-&G"®9†¡îÉã,rè…q@ óÄ]­iˆ½–·¦U¹=NÆÊYãm¬<±>+{æ¡ö¨w¦´NÓ¶6÷—•³¢WÆ3&–øSÐAX“J¼]Gk:§Õn½MŸ¦¡›3Þnh}º®ùËÿ˜n‘†Iú þÁŠlE`J Õ½á•%Aª·@íhÍ€ê´Zï²yPçŒw@ZŸ
-&Ç¥—M±Â¦,mR“ëPá± Alqª”Bö|…’.p W®¯„sçCOÙlض±<¤3G{¸MÝå3$öžÓ¼X"دdÖ9ôÎl¦UÁ ”WÂÏyØ/ÔŒƒ‡”Žß(­Ð‚½;î©áì:ãúº>²ŽÕý/o^
-˜€mÞä%TÓæ* ’$~ãL×Õšæ°×ò^ÍsxÖxËáëãî™·PE
-­*8­–
-ÛÉÂYÃí á‰åñžé+üb8UÒŇABýðéòîÎ]Èæeç3œ/½.ÕFþ“ȸq„qô¶¥ihR{³ØÀªŸ€+eÀŽ˜5ì•N,÷¡•p°ƒCQÏô‡ìýý§ÿ®®TVùkŽ‘Ù1ÿAþþ£‘öObd`ã8N¦lBs甉31tÝÿyÉ©ïÿœ‡®cendstream
-endobj
-1837 0 obj <<
-/Type /Page
-/Contents 1838 0 R
-/Resources 1836 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1841 0 R
->> endobj
-1839 0 obj <<
-/D [1837 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1840 0 obj <<
-/D [1837 0 R /XYZ 85.0394 695.9587 null]
->> endobj
-1836 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F21 690 0 R /F41 910 0 R /F48 925 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1844 0 obj <<
-/Length 2838
-/Filter /FlateDecode
->>
-stream
-xÚ¥Z[oܺ~÷¯ØGITR¼H*ЇIrОº'Z ñƒ¼¢m!Zi³ÒÆp~}‡wR·=m±¢Èg8óÍ…äâ‚Þ1žò2+wyIS†0ÛíWh÷c¿\aCóÆ½ ©ÞÝ^ýé¯$ß•iÉ3¾»}æ*RTxw[IÞ¥8½†Pòþã/×o2ÎP–¼½¹ùðÛûÿ†w†€Jþþö·Ïoÿ¦ûn®K ûåçë»Û_¯>Ü:aB1"R’ïW_îЮ¹½B)) ¶{†”â²Ìv‡+ÊHÊ(!¶§½útõO7a0ª>]R
-ôòœQЪú¼y44‘ó´Ìxihºþt¨ÚöEÏ;ˆ®–¢}üzT.°¬@•ü( èåÊ$QuûC56{=«ª›¡ºoE­W
-0K9‘¢¥>?‰N»Ô§’š…RS°|Ι‘úU7 ¢::æëŒfEa×ן&Æwjz5žª½X˜‰)a<3dÚ¼JÄþ8ºýRiMé—ó êtæ÷ƹ
-ù?beŽìRèlQr-J $hÔ¢•5«ñI<(«ô‡è®mÖ÷£î6 +CЕt@íøxB…Dp»‚!ÛÏJbö|”¥&rQ
-µh¼7Ì\ÄYÔ]!ÅÐT ³Ttà„§q5Ólòö©fÆ|9×DÜo´7ÿ
-Y·G†R„Ø…­xHµaKås l6‡Õ³ÉÛç˜óåq7é˜.¹CÓ:¹l®î‘/J­ÐêIÿ ŸrÍ06ûáÏò‡ÊÕO7ù8à¤KPhªZ¼–ÛPì醿§p Ö÷4Ú‰íËÄ‹cî¾ÛDǽ€ê¥±Ü?’2ƒzÈ/}A$ócˆ¤›
-©Ö䨂¾Ÿ¦|Ë"eä[C3ç:©Š TÏ9‰ÙÞx|©–TLvêº[×—Ýz4×À •ÞÅÕßëõÉìÇ1÷s5¹çøBÁRm˜ÂRySÈ$&h-¸n²÷ÁuÆ9¸FX£È:EÅÖ'n·"Â3¿ŸpÒª·Aìý‹ÞÏUjJ¥qhšÃW˜§2´®|„¶²·›àñ|êtùOKåzë%Ë]´Â+ðìý‹EXøuH ¹ñÉéHT°T¾X‹ï:2H‹œl3wTsî“
-;¢ a3¤Z7Œ£ò†1g½ó=Ò¼ÄÛüÕ\€Ø6ࣄ#KàmC­m¨µ lCÝI1J¼ÈêÕ›‡”Ú<T›‡.™åÆ<445æ¡Æ<4:]Þ6ìX‹²¸JCª óX*ožºnäêªvn.ïZòmÕ\‚Ø> ©ÜvGæáÖ<Üš‡GæÉ­yxˆ¬Þ½}(7öáÚ>|É>¥µíÃ}¸±Oî죂)/Óœ“ºhÃh¸„½¢æCªu£9*o´¶]=¥ÛäìOéf¬—Oé"ÞŸ„‰4¶„Û·¢2M)Ò<ê|EˆTëæ4EüÂaF@´¡$C¤o›ƒøËíJ¹¶ÅÓVkS–ËÅZÈt£ðcó¾l€Pœ÷êÄÞõÕ4*ý°Ù^’öKW¢P§ä,·Ç÷· G(î6ü ïê!BYr-“Äg Óøû·V_ë99 é¸ 0¨BpŸn. ;*{6jVëÎ`oÒ!6'éÅ—9HðY/>I ŠV¿Ö ­b—r{»{ ®ÝIê^agÇstaRm ÖR™ ïF sÌz·Þâ¸õ”õŠ[‡¼ tí}—l¸Ãsé¦A–®7O¥jh|~£ö–("s§7ºoœŒ‘´Ä˜m"½ÌXašnEUOä³ÂÑ
-.FËMley9ƒt(¤]A°C',ÉR}øóYý´Í·¥³gð”´$q,ÖqféšÉÿßXOp˜´h«{1=hº}{®§GŒêBÎB=üûÕÊï€/]þÚYçú¿ÿ”çÿrHsȘkw“YÎRø˜[¡¤&
-endobj
-1843 0 obj <<
-/Type /Page
-/Contents 1844 0 R
-/Resources 1842 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1841 0 R
->> endobj
-1845 0 obj <<
-/D [1843 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1842 0 obj <<
-/Font << /F37 779 0 R /F48 925 0 R /F23 714 0 R /F21 690 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1848 0 obj <<
-/Length 3266
-/Filter /FlateDecode
->>
-stream
-xÚ­ZÝsÛ6÷_¡™¾ÐÓŠÁ'?òàÔnÎmš¤µÓ»›¶”HÙœR¤*’NÝ¿þv±
-Ì™DI~¿øùW¶ÈAîo/X(ÓD/>C‡…<MÅb{¡´ µ’ÒTw?øoÍÔ9(„Z¨h±âX¦|^M,d¶½Œ ãH(¯&•Ì©ÉQ¡š¾¬ó¦k__o—K&ã‹ášΞjÊZÈk.ã0Qüˆ÷]Ñ].¥Œƒî± FÝoWÅÛQÐlh åsd™ð˜=Ù]CÏl·+.yí©[Ö¸¡Wßè¡‚¥a”(²#û:ÛD5’UÄ¡ˆ"n‰`ýéB\„LIKq=³FJ ›$‚Mã„ê†2GÁÊîaÝÔm™Ã¾y¹ÝϪmª¾+B\}±I
-ÁQå<Lµfå{£7 :*6Y_uÔyʪގ—-=­æ å/Œ‰Ú°nß– µúÁ‘ÙyµU:4Û.ëŠmQÛùN±ŠU–¨P
- £ nH2ND°u«²s+ªHµvc¥Å‘Ò¾ÙÁ0¨7#-¼;WJï–äsÙ=bK›â3bÝÚ
-…§c—­»b¿£‘Ui(ìB4\e]ùTЛúÀ%«-õ粪hhe@šm[Çõ£YÜ•6àÌÓœ6òf›•uKªl;7eH9=5'aÂcSä¸~œ9+™„p Îj@Š™¥8¸íV"yN®äL+/IUk«)xº¸!dôwÁN<¹u—Q¬Bóô¼ORö©žÊøÔU¿iË?‹×o&^U)P9ñYÞžjÊ|ìUUÆi¤ÇÜWΚ±ñéú#5
-_пÉdÌú QnŒ6gl‰×U€µeSÛ÷ =½sãè+w^engú£Kh/&´¶ €ÑwÖHÏÊBÁ
-Ww[¬'Ç©d""9ÏÜSM¹š8V|ÌþÇ‚ψCÖ þÝÍ×Ôž\^œÒjólM1ÀŒ<»+aÇ@àxÁßÙ¥ú ÓìúüÏ©7#O£Ãìïçd¡3WÜZrT»™dñYž—„.Þ¶1áhêé2Ä(ä?™ÂE“0qCªÓ@ðTmù°~ÌÚ™HG„1¬q–»#šr²ÉX¤rÌþkÃv) ¾p‡&æ¯uÖõÞ4O°.‚v —7âÇVZzW¯i˜V`!n»++ch>ŒÁÖòz¦ ¬ªTªÑN_* ‹0M’d¾ ¼ô+¾ §´b¬–»Û·_ÿëêîæ4@éÂï<Tgðਠº}E§åoÅóë/àÏIÔ‰</‚§šÊ0FEÊÃH¦ÑX“am³0Àä.øÀ¡ª 6ºy@„5~°¦ýeôT/Ã>Èo'£GÆçÊÎì[GcP1S•*Ô©/¦}94#ù±”Ÿ&‡òÔRÀ²7&lE€éïnþëJžp,I*ç‚æC`k. ØÆ8s®£ì\À•0Ò } 1Z”&fá[ô2© nø·Ö+5Ÿ dS¬IË—Y—ù¹’gTMó1ØÌ–u i¹ÏMÅo
-¬Ò ¥r»«Ìw¿ÌÆÌÊ|˜ÞY¨Z þbõ…§îEÛïv¶ĩ¥ª/i¸˜BØ®²‚¡BJcb(@Mƒt[À
-Y€½M0 J~tùÓþ$“TŠ`ÊÉg$2ãó_ûÐûjæ”å܇3®Â4NnVY‡1 ²Àà’¸Kì6;”Ó!üŽs½ sóÕHºGS*Ä!¯_gVúUq¾*Í÷h%ƒã&l1+~®-¥ù¹
-endobj
-1847 0 obj <<
-/Type /Page
-/Contents 1848 0 R
-/Resources 1846 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1841 0 R
->> endobj
-1849 0 obj <<
-/D [1847 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1850 0 obj <<
-/D [1847 0 R /XYZ 85.0394 179.5067 null]
->> endobj
-1846 0 obj <<
-/Font << /F37 779 0 R /F48 925 0 R /F23 714 0 R /F53 1002 0 R /F41 910 0 R /F21 690 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1853 0 obj <<
-/Length 1912
-/Filter /FlateDecode
->>
-stream
-xÚ¥X[sÛº~ׯÐCgJ͉`Üx;oJlçøLŽãFÊ´Ç4 YœP„BRVÔNÿ{X¦$jt:=
-?6öÄ<‡±$>eþ8]èøæ>Ž˜[3mMû«Þ/FW·"Ç$x0^,{º"B£ˆÙ£÷žp2 Ôûíó|1™r?àÔ›=<ÜÜ_ßýÃŒ)¬”zÌî¿Î>¡ìasoöñf>yZü>ºYtÖô-fTS~ŒŸè8ÃQ"âÈï`@ ‹c>^¤/ˆ/…h%Åh>ú[§°7kÿ:ˆ
-ãÑöõJïLÀBéAÏ­ï› yH)ìÆÚS,$A(Ú¦z[d¨ÒÚm­œdYMXäé5Ž0ãÂ~ÆÁÀdœ›×Ø®“ï­de(7,´þ¾ÝÔ¿ü~äÙ
-h´éK›RFÖ ©Z,̼Óá1]㈲àÉý¼¿Qªm›Õݧ.$ŒƒØÙûgý2ŒOâv- ˜]Ð><haHdÿ9€Ï ÒHk’°XD;L]Î Yg3*K6–É äœ{µFi³JšdŽ8ñ£Î3ÉBj׸ó:vò2orë9 ÚÈyƒí:ÉÜJŒtT’®°‡Á$e$½ª =Ã6å¡J & |"ÀœL<´«ÄYa³Ã4…N-‹·Œ²ƒÜö‡ gÖÕ–Qϰgo'd•OŒÎµJJgÇ9¸!£.qÏ UŸΑR7ØÙTyÙ´Û(ìt8ry·RÖaacÐèïÎH8rS.Câ‡"8LPÔ ÔmN“iON“³¤•””ÿϧ©E¬³c 6qIxd˜GJ‚WõÝõ=î>ÿúððùËÄ÷½Å0³s`³0Ä?-Æ/s¹ˆâ6ܘi2ðž' H·tƒm^4xÝîòf…B´Ò]ü2U•‰IÀ¤Èÿ…•Fàezäî¢.“µjïïÀ«·›®šw8²Ñƒ¶»Õ“´-$¯«L²¼ÞÉ¥¥.§.¾ÊÈ?<2³ù‡»;s¼Dg„ ÜQ“¤ª€¬¹„UÐ6¿‰ðrƒŒMUìq»T—ÀýM¦«¤JR
- aWš½
-Ná¸Æ~<ö¹$
-ÙF¬šDÞ¶¬ÏP- HeˆTËã8¶¹½û„ï»Óº½G¯WªI¯*Uëâ•À _¶iÇ0ˆìŠ¿üû·ÏÜü犀U:d
-nþó{×mEÑÖý¦¿mò"oöçÓ1›ïK½©á|ÑŽ`$Œà1FPQ@å1ðy€‘Ü7—Óð·0šÁ©ìi8å˜îË[ôæ¢yb>N“YQVõb÷úÔŠÒ¡BS˜'l/Ó´HêzðUB,-ÚEÂû…Â'Qà· Xfº9«/Œ~¹¬p»~VƒÏÅ€p.Ù±Ææ¢Æf¿üú!H̨<Ö÷÷‹úvIÞœÕ':}ø ‹‡à­ Â0>N×»´,’—¡]$‘at‚‚ìzëaíbeX <ûnÞ™]™J»£ñS{ûd(M‘ñáÏe<ô ü9h2N2œ˜Þ~};µý¿oÅ"3endstream
-endobj
-1852 0 obj <<
-/Type /Page
-/Contents 1853 0 R
-/Resources 1851 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1841 0 R
->> endobj
-1854 0 obj <<
-/D [1852 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1855 0 obj <<
-/D [1852 0 R /XYZ 56.6929 581.7741 null]
->> endobj
-1856 0 obj <<
-/D [1852 0 R /XYZ 56.6929 460.6765 null]
->> endobj
-1857 0 obj <<
-/D [1852 0 R /XYZ 56.6929 366.7195 null]
->> endobj
-1858 0 obj <<
-/D [1852 0 R /XYZ 56.6929 293.4426 null]
->> endobj
-646 0 obj <<
-/D [1852 0 R /XYZ 56.6929 247.3727 null]
->> endobj
-1859 0 obj <<
-/D [1852 0 R /XYZ 56.6929 211.2315 null]
->> endobj
-1860 0 obj <<
-/D [1852 0 R /XYZ 56.6929 172.539 null]
->> endobj
-1861 0 obj <<
-/D [1852 0 R /XYZ 56.6929 96.3402 null]
->> endobj
-1851 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F21 690 0 R /F53 1002 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1864 0 obj <<
-/Length 4198
-/Filter /FlateDecode
->>
-stream
-xÚÍ[[s㸱~÷¯ðÛ‘«F\\H<UyðÎÌnœd½“±s²©lh‰²X+‘‘´ãýõéF7À‹¨ÕlååÌ<j‚@£Ñýõ°¼ð_^Û$:‹¯MG‰Éõj%®ŸáÝ÷W’û,}§å°×·Wß|§Íue©J¯7ƒ±l$¬•×ë.n?}úxÿáî§›¥JÄâÛèf™±øáöþo·!Ú§›L-n¿ÿø€?S…vKÅâ?><ÞüëñOW7CŽ¥ÐÈÊ—«þK\¯ñ?]‰Hg6¹~…"’Y¦®÷Wq¢£$ÖÚSvWW ÞºOç$h%V™(y-e”%‰É É¢T+ídðáãÃûÏwŸï~¼ÇÕ¸oz±‰ë¥2‘¸ÎÛºi¹—ôR2Ò±…ÎØ§ln–°’EN¦Üv¶í¢kË]پыM}¤Æ¡8B{_VÏôûÃý5vuýKwh@Þ*Ó‹»–ñãWðM¾Ûñh]S¬©ÕÖô\ÕÕKqäª|_4ã÷wŸ˜Ïõúx#í¢h苃%Óz–Av°¬¼‚ñUj/åªàVqlràN§zñ÷mQµªé™»QŸ»}Qµ ‘pÅîyh˺j†ýÜfñ\¾Õ»™
-xC!)úˆû娭%Š"tõŸ%¨Ú‘hNéHІ­š_!˜¸1‡;ï:lÎ~Ë‹à×y;³g:ÈN.ìÙ2ÖàmL*Çæ ¦ÞíØ¿t…³th–UÓ¹7Î =Éœ áyr/CÛõ®lœ^ÒPÄM<*FFƒ##ž¿)ÚÕ7Ç¢©w/ òf†XcKÍDdZ«H[g"¬{ù¸-f¦„25^JË|fGq€ñg‘pðCâUñJ‹/]ù’ïœr8Õ^më|•Ü C)8X–´|¹ÈÑ
-; á ãýœ0@ÍŒ'ÂÀ!Âýûœ_I ¥ÕET‹m,'¨¦9€øþÐ2ó5>Õb]6‡]þÖ¯È5~¼¥™÷ªvÏ5sÇÀ¦¿ÖU1c
-*îepÎÓX‹ñkÙ¸ê=³êyfƒÕ Ö>FFoŸZÅ‹¼kÁÝ—mÞBTA$>IoÕH&þ¡ÁÀ -\ Fºàc·ü5N_¬õãÅãñ=Ñ]ü,„ª<C΋¸Yø#Œô°ßT¨¸@1†3vé!Ú` ÝÔ7—¬€f´?Ø×àH|Çr5¯§*Φjª¥CÕã D¸+ €´&¸À7dpHɉàÂ[l åÝÈÅýr…çj—7Íœ
-IÜnš|Ðm¬CYdmÀBÜÀDÁrKæÊE68ÍSAOŠ›‡ ‡ ´?MY¯™Á£“ÈJ1 ßoóº©
-Þ"âÎ5ÙÖk¬Š!5l8Ñ=ú aÆd0Íw÷ôD ¿«Úâ3#šO6›ðéÿ„ǧºqÃC凮¥6 ‘wQÇœ}›AU ¡ ¼H’ "ç7S6  %‰9‡Ž:JÁ_x­[Ï»ŠD¦^ëŽsš Sê$½ào`yâoz  *D´×¼ÀókÍ" ) üX øIö
-
-ÁøÒá–kmŠW‚{ËÚ‚­>ÈÁ1ÈäÑØñ‘•áK"ï8ÍBJÕÏB¸ë¦sð¦,!<›‚æàˆ©~>šÂg{“dˆl}¾$3-èø9ÆEP7ÅvÉ€Ë 8[Ú°xð_–v0ŽÕ)>€(4áLOŽô“¬X-þö+l±÷ í±,"°)—_Ác‡Í) ü¤Œdv༶yõLö¦X<½¨ "~ÙWr>ŸA¨ä$z9…m"©BÎP5[ÂTiHÊj]®@ñy±Ûú•…˜Iè6Íþ÷yõF§%m¹Ÿ– ¼µÖê‹õeu:ª—à $ûCáQ%'²/!á´Œ8»nU3é¹à„<¯÷À.cmÙßàwCLóxŽ/\u*0Á
-€v’‡ºÛÌ’ HßÈ bœß‹{:¬#£UTÅsÞÛˆ7¥_i)õ»‰é極1ó@`áN­w°ÒÛ ó3²™ûºZ²åvݼ°ÿúÒÝ`ºË¢½xÇ£@KÖÜõ¥d£9»gidŒõª½<žÑþÓÐ=±vñà ¥4AÉìô.ŒsðÄôÖ#ÀçDø¢n¢ és*I‹ŒÓ‡Ø”ÁŸ*!y %Äâ Ý0’ê ¿OBõ…&
-38˜ÂBDHY2QQW5ê‡Á£ìSC2î(Y1üpq„¶bQüû€žÚ똆g¯…ÿ
-j:2sHjÜŸ"Í&ߢL„ xº›q‰4½¼™ZzÌî\…£Rè
-/K¥3ŠJ£~å¿g«“؆CÇv^ V¥''°–ÓGkùpDYÂO¤9P›<¯µU¤½йØ_š4&TAÝ ëìUc¥Gº…b9_´˜J¾7¾>ö\•¿‡'Lü/¢¹Y¼¿¿ýáã;"cM2ˆ‹&±ð÷®£Z<Ü}Ï­?¤ó_÷S.Ðù ä~ˆ'"ñ7Ÿ¬¢¤žå’-×$€Ò×ËfÏsA5 ÷°—¡^šØÇ Ør³¸}jhêœùË|Ìp8–R±02Å©Êæµ·Þmé2†¬ü[& rá ‰XÜk¨Ii<¼#‰f ¬£r“êÐøá'ê3)vb·,[<u<¬«ˆØìÜq…Š#-{sFÏO‚'òÕ0€¾uæ&öÈη0²H&½Ï’:åSÄÔgÚ_ñ˜ëdf}:á²ö+7³æ"ð #¹XnS}âMGœt ÓZH#\uF÷t€KÏ6]Í^ÀÒé
-endobj
-1863 0 obj <<
-/Type /Page
-/Contents 1864 0 R
-/Resources 1862 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1841 0 R
->> endobj
-1865 0 obj <<
-/D [1863 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1866 0 obj <<
-/D [1863 0 R /XYZ 85.0394 751.6872 null]
->> endobj
-1862 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F53 1002 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1869 0 obj <<
-/Length 2149
-/Filter /FlateDecode
->>
-stream
-xÚ¥XKsÛ8¾ûWè¶RUˆàAð17%–Í&Ž7Ôlí–'Z„$V(RCRÎjý6Ð
-¦¤IÙ»¦ë‘I¤ç's’ŠÐ‰­›ÞwtD’0Ž-Oß౪ «
-Ñé¬ ßtÇái{<œ–V:†0çëµ:X¢¾”Vv‡*?YqM`^
-¨¡1›QZγ÷Ë%pÆìI X›š@<~b”’4¯yŠÃ *?L&6‡¶Ì¡:žðŒuSC^ö}Úå½ITxTõº)0æáɤ¹GE\=¨Mƒ©ŽÏºê­¶ Bôk6¶À8£Ô(“]“œQ¢#\íÓëÆþ[ÿ‚"lºEÒHÞÁX4{oe›<†zjJP ¢XG¤yqjŽ+¹*¿«s•àÿØÖÈÞ
-ÍÃã˜ôdô̈ݰú>¬žƒt ¨yh›¾Y»4ð\a|yNë‘9Æ·-à¢f_¨G¿ò•üRh÷ªÐ®oU½ˆ÷ËŠö™×`~±18ùIàáˆKÁ¯*[ÁÄTýjüÕOÕî²'ÀpCLŒªÑõ"{ÿuy·Z~¹õô¥‹Â}Yi/*js#OÅ8è”i‰In\£OU51à:Sëã€ñýÐ#
-HI’_h;_Ì?ÿâc{ã1 eš¼ÜXι𯱠\¦X»."G]z]*}Mä\9‡'‹/j7pyÔue`b¤^¦*µ63LZ,‹u{:ôͶÍ»r¤AI?4A ÉC ˆ¯‚9âhŸš/Q¡r§"bþ¦yù‘‹‹aÝÍ`Ç?XÍšÚ-6xà×lþùZÚ ðArÃØ!tì—Ii„sü1û87Çäô:›¿AúõGüׯK3¬èTHý¨ªjŸ×.TY8Èûøyþ>
-endobj
-1868 0 obj <<
-/Type /Page
-/Contents 1869 0 R
-/Resources 1867 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1841 0 R
->> endobj
-1870 0 obj <<
-/D [1868 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1871 0 obj <<
-/D [1868 0 R /XYZ 56.6929 681.7223 null]
->> endobj
-1872 0 obj <<
-/D [1868 0 R /XYZ 56.6929 568.1619 null]
->> endobj
-1873 0 obj <<
-/D [1868 0 R /XYZ 56.6929 502.4221 null]
->> endobj
-650 0 obj <<
-/D [1868 0 R /XYZ 56.6929 461.5895 null]
->> endobj
-1874 0 obj <<
-/D [1868 0 R /XYZ 56.6929 424.1905 null]
->> endobj
-1875 0 obj <<
-/D [1868 0 R /XYZ 56.6929 391.3558 null]
->> endobj
-1876 0 obj <<
-/D [1868 0 R /XYZ 56.6929 322.6942 null]
->> endobj
-1877 0 obj <<
-/D [1868 0 R /XYZ 56.6929 236.009 null]
->> endobj
-1878 0 obj <<
-/D [1868 0 R /XYZ 56.6929 158.3141 null]
->> endobj
-1867 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F21 690 0 R /F39 873 0 R /F53 1002 0 R /F55 1010 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1881 0 obj <<
-/Length 2958
-/Filter /FlateDecode
->>
-stream
-xÚ¥Z[sÛ6~÷¯Ð£<h\y™}rc'qÓØÙHÝnÛZ¢lN(R)»î¯ßsp
-(igÖ™ @à#pppî1øÇG©Ž˜ÌÔ(ÉT¤×£ùꂞ`îã·˜‰M|Ô³‹«2eQ‹x4[zk¥KS>š-~_ýz{s÷ïˉÐlüct9ÑŒ¿\ßÿrý3}½ÌÄøúãíôr³Tg
-`ÐÀÇÿïõéa:#˜Ù
-ÚÛûÙÝìWšÝÑ
-è'>çÔ„é
-ê. =ÍŠ^þöá= -3ê½–UE½Gû
-v‚—K»^Ó¶åcUüuB _ËÖâQ‘BE¡ÓÇ…rg.uzFx=Ô áu(#¼ÏCEJ©3[:ÐÀ–ÇÈ"%ôÞ–_7eíÂ*kñÁ‡o,/Úíj•o¬Æ»üŒ¬¬1¶j÷Ò-ë/¶«¢öâ5
-ëƒ
-|%`OmÅ9óØCãeÛ+÷c“»äØÌÔë-¥Eû‡…\!e,’½ã€áRQ*1¼ J!á­*w7Ò”Íhˆî“BIhæÏù&ŸwÆŒ
-Ѱˆ³PFçÛݱ«løûœ[á©mõqQà‰ëÂ
-Èz»_Y8!ê0ð¬Çån0„gäÅC‡2òÒ º).´³•ƒß8^®V§éêQ„íK˜†0+ Ì/A
-—L€Ó§º“°iÆnÆŠ{
-¢Ýö´ä—ÅÆ‚M9[·dþXVe÷Îæ[˜¯;Ã|»3v$^r›½Á˜ÙtÀh÷Ißnm¯_ÔóÍÛÚZM\ö¨Äs R¨ù™üÌG—øe$þålá§*^ŠÃÔ„C$*>MY -¬ºó,cHeAê¼(·OO}ýÌPõIrÏxˆlÌãC8KFÁÇÛûÛo×(³Û›>=œˆ>CƒeB‘¡þ×sŸ\¹xFÕÌÿ1‡´C9¦Î›Õº*HŸ“ÌÅæËmUíÊÊiÁ;¶¦ÞCeÀæ4ÆCFSÇ(€$c5ôõP2ègîëáçþ¢ò<ÿ¡Ä¿¢!®„ ;s†¢¡å]ˆ2Q"…‹“{¥Ï¶Å¢ƒfÛ™0ÏÆ.®XT¶a¡¢_P5ôsóÊÆî¤þ«^&¾»ÒjÙíyœ>±ŒŽýú%Ö‘üôÏvv#·\…õ‡,•ý:ôq…'ʼ¢’Sûõ˜ý CÃÍ úämˆw8l¼ñ3–ãÚcLÃHø({ WÃõ\Ö+Ûÿý᧨jšq‹GR‚èZ¢ðXÀ}Ò5Ä%:É
-endobj
-1880 0 obj <<
-/Type /Page
-/Contents 1881 0 R
-/Resources 1879 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1884 0 R
->> endobj
-1882 0 obj <<
-/D [1880 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1883 0 obj <<
-/D [1880 0 R /XYZ 85.0394 114.265 null]
->> endobj
-1879 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F55 1010 0 R /F23 714 0 R /F41 910 0 R /F14 717 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1887 0 obj <<
-/Length 2218
-/Filter /FlateDecode
->>
-stream
-xÚ¥YKwÛ¶ÞûWhqòIˆâA€àÝ9¶’ª‰e×rÎ齉´Yl)Ò!)»ê¯ï€
-úTîÏ~úÈ¢AŒbAÅà~Þã%–’ îÓoÃ(DçÀ¯&Óéè2˜Ž?Mþ3DF$^ÜÞŽ&WãßÎÊ11ÆÃë‹É׋/fïö<¦Ã‹O£éùÃý/g£ûN±¾ò3­Õ³oxÂ~9ÈŒ^á#Çt°< 9C<dÌíägÓ³_;†½·í§>0:š€…H‚üñ FY {E^
-8£Ò}Ç$Ú=jüˆ¤ƒ>»=¡Žh_hHzB%A<Žù¶Ð$I´ÌŸ>Âó†”bR{M“ÕÆ ÍB™E±Zª*›™‡êœÈ¡z6?µ*š¤Éʼ+ç;_&ùSYeÍb‰5l´šÇáíQ×Q„÷˜Ð ¼»Býðö…fúŸ`F‹¤8ðjmY
-€fß1¦ª2;ß1Ç¥]Ï˲y®²¢M‚¬˜¾N•t'ŠZqiQ×j€'Ux”‹0|;åfƲI£@KÆÂaóZêjµrU¿‡'·¯`VCP$KCˇI­R³«}Bo5çd¨Ï©×­òŽ nàéÉc Z*Š0%V£ÏüCïÀußµø" ×þ1€)CqL"8=A1Úó”à¢Y± ùóê1w.­ùB†ï­Ó©G)BCT NöyÔ"!eÀø¨:öû-}ZlIA#gUÙ2º_(Ÿ–1Šhä„@Š
-XâØ³‚M°èi§ŸýéŒnž?þgÆEfeû›š½f‘4–IR˜Å£2 €¡ªŒÝa\ ìñÿÊŠ﫢?ͬ¤&_V:ô[ë}&ÿOWñ+!Ö¬˜útùåëÕÈ [CÆRKÕ‹"
-ïæ-î°¨×Ë¥jÚ¨U1«ÖϦìéÏ:CZžõj¶°ÜíÎÏ×—Ö=u!”ÇÛYêúŠÛì£^Tá’C¹zZÉ[ö0¯ÝÑZ¶?V@“ƒÛo
-G§À\[úHºFÑo×·_F(P'Â
-p*ºiƒp¦Œô ÛCD’6í+³Ÿ˜ŸHÈà1kôt‰Ó ³k´eØ€­wÌQa'-—,ÖîrËîD‡¢ëWÔŸÉò9WhV.=
- Ž"Þõ6d]ÓV·y™çå+Ô!#X, ªðîµ\å©Ù´äàì+•þ×£S@…@’ÂÞ‘ÚèyƒÄü¶´æ
-"ði}Çm¹à.aáÐ÷½§Å‰Bbæêð©ÖFÀ2ÞÔÞ­Ö¦•¨Œ@—ös $GLb—¬œñ@#”…ÖêhƒŠã®wL²`1Ôó“Ý–fKø‘ÞƒAâÕ"oäÑV˜Žl¹¼ø2½9¬!êì©Ðå\o©ë«5!‹û³D2æN©ãÉ•‘[é2+2ðȤqïš+c»bfò:)VP”| K±(º€ßW
-º˜r™ª—ñùàõiÀ›¤jE8‡(êÚ…ŽkÓ­^*íøç0TåoÏr=ØîKÆPÍâQMçÚ6Yjˆi„Ѓ·òê:Š¡Ù*&W£éåÝøö~|3ñô·Çû*ßí]„ ]\jB]Eضö‚µê"}eG†ãÆl¹1×NL•„fX€­»»éø“ÙÛ¾ëq¼ !š{à2]ÍÔ¶X­ˆ²Ü^TU›;bxQÎí­ƒÕ{ [3sÄÒiraÇ™8v0X®íF“4ú6DÐN-°—ª\=µWÒöÅÜh¸4¯;~°i›ØÕ}«¹ÈÒûY{•B`\(ø°24Óg¶Èډʪ[›]7u»û^lЛÉ]{[”í]”½¶ÍUª}»b”„çÇõÞ•¡»‚ŸíðKû›s7éù.ZCD¡ölÊS­ßõµDŒ ºs£egC{¿ÌìU…ƒÅv]oþ!迯xº"ÜÑ¿þSÏæOP¿˜”´ë¯vn›¸…SJ“¼§:Áˆ2
-endobj
-1886 0 obj <<
-/Type /Page
-/Contents 1887 0 R
-/Resources 1885 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1884 0 R
->> endobj
-1888 0 obj <<
-/D [1886 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1889 0 obj <<
-/D [1886 0 R /XYZ 56.6929 580.3115 null]
->> endobj
-1890 0 obj <<
-/D [1886 0 R /XYZ 56.6929 436.8921 null]
->> endobj
-1891 0 obj <<
-/D [1886 0 R /XYZ 56.6929 377.2485 null]
->> endobj
-654 0 obj <<
-/D [1886 0 R /XYZ 56.6929 340.7763 null]
->> endobj
-1892 0 obj <<
-/D [1886 0 R /XYZ 56.6929 305.1129 null]
->> endobj
-1893 0 obj <<
-/D [1886 0 R /XYZ 56.6929 274.0138 null]
->> endobj
-1894 0 obj <<
-/D [1886 0 R /XYZ 56.6929 211.4484 null]
->> endobj
-1895 0 obj <<
-/D [1886 0 R /XYZ 56.6929 106.9489 null]
->> endobj
-1885 0 obj <<
-/Font << /F37 779 0 R /F14 717 0 R /F41 910 0 R /F23 714 0 R /F21 690 0 R /F48 925 0 R /F39 873 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1898 0 obj <<
-/Length 3191
-/Filter /FlateDecode
->>
-stream
-xÚ¥Z[wÛ6~÷¯ð#}Z±¸’D÷)mÜ4mâdk·»Ý¦´DÛl$Ò©8Þ_¿3˜o¢¤œ³öƒÀÁ
-iÏ—›3q~}¯Î$ó,ÓbÈõÝÍÙ7?èôÜÅ.QÉùÍÝ`®,Y&ÏoVD/Þ¿¿¼zùúß eEô]|±°BDo_\ýúâ ÑÞ_8½xuy}±Y*S`2È–ˆèåÕõõå÷‹ëׯ®þóîêòâÏ›ŸÎ.o:Á†ÂK¡Qª¿ÏþøSœ¯`?‰X»Ìž?Áƒˆ¥sê|sf¬Ž­Ñ:PÖg×gÿì&ôú¡sʰ:‹m¦Òm(y.eì¬U#uX'Zi¯Žwïo^¿»ºÞÛ‰ˆ…¥JÄN¥jÞ Ì´r……g̸pÝE>]ÒéXëL_20Í,©K‚Áµtv¼äoRʨؖwÏdè|½¦Æ}QÛ¼-VôØ”÷UÞî¶2‹Š&>¤›$sq& qT7C®Ãºé¸¼n–¸ä7?X;à”"Vl+<Ër7ÍT0©l,m–—¬ãšm¨C©Á%cÙ®‹eùAU4¤¬ö¡ Ä5H6߬ï&Lÿ­«â°BmÃb§:à:¢ÐÀåúqN¡2ΜլÐÅóž:¥‰³$µÇåê¸f©S‚ g(ÙÍ…9ZÞ^,´’QÓixEÍ7ò†Gtåýµ¬î'Ü@¬·9¯ž'ý°„ÎïD6¥£›‡’g¯Û²®¨½Éy‰Ûb_8Pdì„ÊP Œ3°©ÍnÝ–k6y[nŽ‘´q";aó×›.oóõŒÍ] ÞŸ²ÉWõ&/«=«ƒÛ -’ã’u\3¢ƒdÓe{Åx
-J šS%6zùÏ߈Ö-QA@bZ­J² RÛš¨WÐðVÅžÂ
-ˆÄŸ/‡–ä±ÕŠ—¸îfG»k‹v/¨µáûÑ–?>Õ*˜pC$Ömí%Fx•oŠÁO~¾¬ýïê°OØTÁ©'Òã>1ä:ì—÷‰ÕIX•ÛbÙÖÛ}4°"Ná$>*\`šnäÖÆ©4z,Ý›ºþHŠºyAÍpKð8u=^¡x®ÑÜ h›HfÃP]¨&gŸÌªeœ€‡Îm2³Mb•eA€|Šÿ0”ì;§½Î´FÆFÉä„i\GL¸¼iïgò‰Ì%'– L3KNò‰,M'K¢¿ëY'ï JgãC¹^õGaèöÌõ†žØ´¾ÍöÃ`•"ºü\6­‡ô“+>•!¹¹EߦþT¬GdZ({Â<®#æ \Þ<ÍÉ”¦ióm»ÀÓb?ô`J“¤ÇÅë¸fä_ûPÃÍvyO E€Uh¬È¼B3†b_¹áΧ‡¢ñëQ" ô_~JšûFâ-6<ôS¾.Á0 å,ÆÈ±Ì«ÀJ
-Ùk’©y€3:N °®ãš‘np
- -ÜX¼à¤ãCpØò
-!±øüÈYG6½àŽ'@¬9'Õ°ÅÄ$_â¤ÖÅij3fe4ZaНÇAê1
-ôpÃ:Nª›i¦ÿ¼\‡Ò",áŸræÌy
-pmüŽî &•ƒ‹ð¬¦)Ý|ñ@-LºËjT‡`bí+ ÕU9ÍêZ Œu;—Ãô9 Ê|ßµ¾"ÌB.°ÙLv›Eãe°÷–É<š¦B ÷f2P÷¼Ãê÷©lŠC`7M¹*häŠW®é÷–WõRÒÕ
-<5u]ùÉœ‡†¹Ü¥=~Ïò¸Î—\…ø¡j‰výY&!QêŽéTÐ
-9ú8Âe,2m«ló§C‹@:/35MçHò“I:Ï—¸Îöç½³Q =nKHNËõ3“!(ý›6ÿD%uB^
-ÏTFb‹‚«gÈòË%=„ôÛáµ’kž†[<ãj·y¤I€l‰d@Œ÷”‚Μ¼˜­h
-z
-¾ía}…v+†?ìôq
-[ž¶8û÷G üRãã7”À Z †Ç,ƒõ^Éw†öªËUu;—lòárçïL°V(ª¦˜Ü3â&{5‡76Q"sø6C‰ÓaŒL"þ:•·ÿU¶-³³¯±‰Õ¿ÅÞ“kö%öP0JÙU’ôŸ¨$¥—ÙìSžÀGQB¾t«ÏÞè<v`ÿº¼+ðGøNÃG:@g
-ŒÚ?S ¿lš]˜Ö{#ÐøýxÝÄ;Ïá·ÙýVR7M\ñ» ü²!¯
-_”t>ê2ʳP]ÂXÞÆ—Ò@)«%¿ƒì6õLdŠ
-endobj
-1897 0 obj <<
-/Type /Page
-/Contents 1898 0 R
-/Resources 1896 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1884 0 R
->> endobj
-1899 0 obj <<
-/D [1897 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1900 0 obj <<
-/D [1897 0 R /XYZ 85.0394 751.8312 null]
->> endobj
-1896 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F55 1010 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1903 0 obj <<
-/Length 2976
-/Filter /FlateDecode
->>
-stream
-xÚ¥ZÝsÛ6÷_¡·ÊÓÁI
-áÿ-š&?¬·¸2ÌjyXµoŠª¼\)!—õ>__8—yb™R¿_ʵŸŠ2«ž¨Ý<¤ ŸŠí–úîrúë<ó¨Š0‡fîŠoy˜ìuq_¦Íñp)ÌÒk±21366 Ál ¤4ÿº/<ȉùñÊ7Ž5µê=AÒ¬(ï©«(×Ô·ËË&Ýz\oS×Eíû¼Ì)ñ{«G<yØ9ú8f˜L’Øv3X+²Ëm±ÉO¿ÿdd–é¶®¨·ñߺ
-¸ük$Rûè@Q45ý~L·E–6Õ¡öë”™Ÿž€Dº{ö6@Wuô+¯Ó5©;ÇÁî莭jY0T8 êÙ¦nÝ{Ç2¹,»;Úƪ uþö\Sß—Uåw u÷ŧ–iC_§¨Óòœƒ¾›Qíü”í–ºÝêv~wY§‰½Ã‘-¹óRÞæµW•uUÞçõIҠ;E§åa?Þg>ü.sTn7©ê*}ýàç6ôÝUu³};x"ÂQ;JÕ³M‚i!’E¢c&µI&l V]™1bX[2cU’]ˆã¸—Ny»P®÷p§„qŽ4˜¯YÂh„°®£Ë¢XÇ}Ênz&(н™ˆ"¯kÔ‰ªFƒAÍk9[`}ÐØhùæ™F²|“· h¶Jà2”~ÕÓ
-4±ðÛÖMzhœЦòûæ)Š[YÞäk8{%u±¶ýëôöÓçiÉ*^G˜$ÛAÍH6 œd?ŽI]œö‚­«t6£H·+8×ôt@£Ð’EÂØy"[Ô•=1kÍ"gŸLt`«ˆëåͯWØH–DuQcy/–H¦û‰’Ço@CŽrÂ5¾XAìÚ€ß¯êº¸Ûæí"°BM?Ò“§pteÁïpžôåøEÊè¯<ßãwÌ‚#·p>âîs¯jЯFv‰$¸ix»:z(ç&¶ˆ S¦ ZþóU…e*Öª³ê±,¾¢y™Z”3 ‘–Ÿp¦©´K¹€³¹‘U‚
-
-ºmÅüî-jdûž
-‚³N ìÿÎ[î²j-uVl†–Úé§3Ù^?ÝÒOͰ-áLs%_`[5ö€šÔ—ï\8c“yZÔ =Þ¶FšÛ>ï»!Õ?à˜kë64û퇷ÔÖHï7Eó°ƒài]O3Wq ^$/0·ƒšan@M]›>o%Dí&š§ EÐã-É@÷i¸Éÿ1GCÒÎèV›0ž,„É B›ï«õ䣂|ŠI`Ô¼£ê¢¦U‹rŽªAT¤ÛÔäPÜå™ n°<6󤵨ÚúQˆarÉ>q·‘ß\ àØèˆqá0_¾ß lÇ)sÊ^ eÑÆzAÍùê8uëÛ…—QZ×ÇÝ0Î al»F kB~pwWFÎ˯‹š–_‹ròûõ¥@Žý±™
-2"ƒw$ž'°EPØ“"äÞp“LŸD'E¥¹wÿØ:jÏ@l™Ôb@ Ü–&-Ê¢4WØÕÎ A¶}БÀø)è8íZÓÔ™ CcÜÍÕyÐÑ@>8á¼¥e]ŒÇ^{F£„Ø2mOañCú4µ‡f éD€ÐjàL"¢4¬ƒšÑ°€r¶n™$Œ[ý–4²e÷tÀu®Í`ËÏ5ʲ†}³jE% 삈?mR|zÈKêC=pÎ »I; 7„¡‘t …õ‰ 6iÝPì
-|ïüî¾° =E J‘f}Ršam‘®®ç»ŸÚøÊ2=UÙŽcum!b‹8x"/…l<§Uz`QfÅ:mòº­ïùh­/Gª»À‘ôP·Y?ÚÂ3O[®YÉB¬.jÆê”³:gQS¢˜’ÚÎo@#[vy•¦¸Uý-?ŠÐÕ Üÿó°~As]íöÛýÆ$G$Ö|$ç9ÒEMs¤E9Ž<¾˜4lóÇ|{V·ÔXr‘ó„ÐaýŒABf™c2ÈÚêAdžåwÇûû6×u„M³,‚hËš
-‚]Ô ËʱìÛ™EÌZaæ·  ‘-{JM­DË÷÷eÕ}Xùpó¡ÍrTêÙªîp©áÃÇ80a;o˜h((_Hƒ0™æ¥H€*ýÂ…ì¢fxPx0 n¼*˜dI¢íüÖ4²u—§ý­[‹ÙÍ»|"±改L²N˜„é8~áævQÓ¬kQÞhŸUsÀNa±uvÏ
-ú¢Z}Á¡}þ•‘'wƒ.@Õw:ôoªcé·NC£û‡«µ?` ’áõé*üÚ ZkFcäà«à—š ‰­ÜTæ×Mux¾B,O˜ÓäÚO÷l¸vjÿü:Y›?·<ß =ëŸ` ž0)5Q|ýûÕ/Ÿ~¾‰Hàh²C—t®q‚OJÛmõDÜ€øœêŽ˜c¸Mͦ}è7ƒr‡äíª¸d¶–ÑÏ›$`ƒ†A[4´yˆzwsE 2ÊÐð¯át#b|^yy@_a¬õ;de ùë
-–€É£á.ÜÑØDƒ×2,b|蜄}Îâ{¡Á³`QóiˆÀ©¤cè¦|‡±Ñ@-d©ÏþÇîX7¹óPÔ!iÂÜ¥à®ÝÆÃ
-endobj
-1902 0 obj <<
-/Type /Page
-/Contents 1903 0 R
-/Resources 1901 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1884 0 R
->> endobj
-1904 0 obj <<
-/D [1902 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1905 0 obj <<
-/D [1902 0 R /XYZ 56.6929 119.3275 null]
->> endobj
-1901 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F41 910 0 R /F21 690 0 R /F55 1010 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1908 0 obj <<
-/Length 1522
-/Filter /FlateDecode
->>
-stream
-xÚ¥X[oÚH~çWð²¨ëéÜm?Ò„´é…d•Vjóà€o}ÉÚ†–þú=öÌÛ 4Õ*R?ŸËw.sl2ÄðG†ž@˜ù|èú LÄp™ ðp÷ÞˆÆ8ä´Qoƒ×7ÌúÈ—Të–,aÏ#ÃÅêËhr?]ßþ=v¨À£7hìŒGŸ&³Ï“jï~ìÓÑäít>vˆ+¨`f“OÓkçêÝôêÃÕÝìfü¸x?˜.ÃÚÆÌ*«þ|yÄÃøð~€ó=1üß§ÃdÀC‚3fvâÁ|ðW#°u·~ÔF†`u-lpbcCøH2Êj6þ;Ü_¥E."Ú¤?³4T›ÎFÿfê7ü$Ïqˆ–Y¢ŸzB'{_ ã-`›Cò… µ¢-$z…1{E\Ê]´+UF…«.hãaóõ ¸rô²‚xHz®¨!·©Ši¹ «OÙ~LFúJëùS jÓåûˆƒÀÚ¦A§Š]QPøe>&Þ( ʰè
-Ò]Ûª\zU!H-Þ¦Ÿ#ß#¦ <Ü\)‰T0a‘Ç ¢\¦iXxs¨/ç»]ú&Ÿïî~ÍÛm
-%‘†:3燺ƒîHWYZdyí’£ZŽ—&\œ"׃Î[‰œÂò¤îÎr.¿™fQÇV W
-·Ï
-Á<çÚê¥má.<£ÏEã”źÎÙ"(ò9—]ó®¶õÙ”UÙ˰_#§UËaöô¤k¯ïŽ!LYdZè6Ðâ£tïV¡º82ѾšŸk
-endobj
-1907 0 obj <<
-/Type /Page
-/Contents 1908 0 R
-/Resources 1906 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1884 0 R
->> endobj
-1909 0 obj <<
-/D [1907 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1910 0 obj <<
-/D [1907 0 R /XYZ 85.0394 562.7154 null]
->> endobj
-1911 0 obj <<
-/D [1907 0 R /XYZ 85.0394 499.03 null]
->> endobj
-658 0 obj <<
-/D [1907 0 R /XYZ 85.0394 459.6249 null]
->> endobj
-1912 0 obj <<
-/D [1907 0 R /XYZ 85.0394 426.4105 null]
->> endobj
-1913 0 obj <<
-/D [1907 0 R /XYZ 85.0394 390.6449 null]
->> endobj
-1914 0 obj <<
-/D [1907 0 R /XYZ 85.0394 324.0377 null]
->> endobj
-1915 0 obj <<
-/D [1907 0 R /XYZ 85.0394 263.3171 null]
->> endobj
-1916 0 obj <<
-/D [1907 0 R /XYZ 85.0394 199.6317 null]
->> endobj
-1906 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F21 690 0 R /F39 873 0 R /F53 1002 0 R /F55 1010 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1919 0 obj <<
-/Length 1850
-/Filter /FlateDecode
->>
-stream
-xÚíYKsÛ6¾ëWèHÍD0^$Á£b+‰ÓøQ[n:ur EÈfB‘*IÙQ}R$ÍXN¬vzèxÆÄc±Øý°»À®Èúò ý€#w8_ððæÞˆ¥WDã&ÕëÙàà ó‡
-<ê g‹/°d8‹®×ÈC#à€ÓÉÉôh|ønzøËg§Óјø%Îäü|zztüûhL] ä@Œ±s29½š|0c磀:“·ÓËÑçÙûÁtV Öž`¦¤úspý#Ðáý
-)<Þð&‚ŒƒýOi¯ä?åü@ÉésŽ™G‘àcBPàºT“
- ì… e( ˜[^ÈRa½tÎ$ >|) &<My1]]œ«ùmDhàL>\çï8Ž©@Ä ÌB-éXãó‘E>¯7"3.Áh kîim«Öj‹2,×v6³MÚ.sÍ'Ë-Ùƒ4|M/’¥œ—2ª6° lY‚äq!ûÑ©ÄmÁs9šÅ“—g=:öò ƒ§Ã?òÊ,m e|»žÖüXÐ4m° ÆHuޝO “ÀŠ-ã|ì7ËÍÐ…\XÒ¹Åá$L׋K QÏóž47m &W³wg»8NK™§Òžèå¦(åÒžÕa–Y^Æëåv[Ž÷¨åÃ}Ø ÔÞdpgaü>í@Ì|$|׸þ© 8Ec‰Àw»«µO'[®âDê ôð'Jým<¶c¨|&q—ÓÓLë@^ øÅ½…«ñ2Ë’>ÄqÇæ6i¶*â¢BA_xlH!LúÄï½—hO]¸RŸíM:¾ò¾Ð^Sõ 7{p6×ãèsÕº«[_êÖŸuë¾nÍ n+z]aÖ.çIX=“áÒ5T5ÇEGæ"á¹®%]dù2,ûbp‹¬æøfu(çD]TêÓ å×㸋V$_f‘ìCB±®Ü_wÊýcü–/ãÇ»üNö,_ºgù²Ýçoß7ž¾Å^—gÑâFÁ´2ÇŠr“ÈçÛýåžµ/wò‹â.Ø,ßô0…ºG]ÒeúðO0=ª[{Ø{¶\ÆÙªÓU0ÈLÔ£½åµM è ÏðÔ÷©xQxn°x"<WTðܼƺú'Â2H„]á>',‹îîÙ×ÿ(?f^!’‹ö¡ÿ ëxÏ®ù_ìéžåÛC öŸˆ]Ó—Äáÿãf7u¯}4Ý삺ð‚l¡õæ=š^^ŸÏŽÏN(õ¬2‚nêɧ~ýœT”: aUý„;Å&-ÃofÐfŠÜ‰!{¹Íí³žÙ$”™Ê ¯3f3U Ä9.ÍàJæ*L<ÚÈ”#`h+w¢GOÆ@KJ+pµž=ÚrbTЉQQ&sÁS`‚Ö¶À$Œ¨¢sBÙ]\˜¹eøUö‰D|•ÑiôFW>².äb˜}:/‚F#[‚-ª0nPµ:ÜHEos{µÈ–nÆæn¦p7sNü¶ã®óm²u'—¶vêªÎ¶Âf Dªâ sÈÐF>o¤Âm³Ãp ÌýÎûX{Ș趤cÀ…mâeœ„Z{RׂhÇ_åÁóQ¥1­"Je…pnÖ¥ÙOT`«0y7V†h½\Ù¦1M˜¯ ×©j)Ó²"Èìz+þJÎ+Øá•pæ¶-Ï–ÀL‘¬Ê’ö
-endobj
-1918 0 obj <<
-/Type /Page
-/Contents 1919 0 R
-/Resources 1917 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1884 0 R
->> endobj
-1920 0 obj <<
-/D [1918 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1921 0 obj <<
-/D [1918 0 R /XYZ 56.6929 644.7852 null]
->> endobj
-1922 0 obj <<
-/D [1918 0 R /XYZ 56.6929 574.187 null]
->> endobj
-1923 0 obj <<
-/D [1918 0 R /XYZ 56.6929 503.5888 null]
->> endobj
-662 0 obj <<
-/D [1918 0 R /XYZ 56.6929 459.3803 null]
->> endobj
-1924 0 obj <<
-/D [1918 0 R /XYZ 56.6929 424.0565 null]
->> endobj
-1925 0 obj <<
-/D [1918 0 R /XYZ 56.6929 386.1814 null]
->> endobj
-1926 0 obj <<
-/D [1918 0 R /XYZ 56.6929 312.6614 null]
->> endobj
-1927 0 obj <<
-/D [1918 0 R /XYZ 56.6929 165.1287 null]
->> endobj
-1917 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F39 873 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1930 0 obj <<
-/Length 2702
-/Filter /FlateDecode
->>
-stream
-xÚÝZKsÛF¾ëWðHU…“ycæ¨8rÖÙµ¬¬µ×&9@$(!! ™
-a¥ÈìnõËüêööúæû7.Tàùwèr!0ž¿½ºù×Õ?ÜØí¥¦ó«®ß_.H&)!iÄ$žß\½½þ~ñêoׯþþŸw7×—¿Ýýxq}k+O03Z}¼øå7<[Á~¼Àˆi%fÏpƒњζ\0$8cadsñþâ§8aë©ýiÊ‚)$ÍÖ dFÒBÐŽ9„F’QfÍñîöîÍ»›÷ƒ`„X,£iŽeÚ ^hÑ–
- 'ܤ̺‹UIPžs~bÉ ”X’µ–Ôq*zK^ïòûMá|¼*îåîí\*ÃÙôÎÛRã;Rvçc;Ÿ\2î|¸djç%o÷å®qo½uþà/ëÃv›ï?»›|·rÅŸe3n¡W°NKjÂ:AÊZçã¨u¦–<Zg°dÒ:í%:”…·Î¶Zy›,ŽFpWËø¨Úm>_BæãÖ¡’ëÖiIMX'HYë|X‡!¥å‰%ƒPbÉŽuRYÖ[2…Ož.«7Çúø”ëmÒ x"ÛÙvù¶X-–ÅòÿV»ðƒ¶ŠCªcÄË?í/‰šWû|ûx
--M&œ¶KhÜüAÈZÿ÷õ ’ç“ë™ázÛK$…È:ëýüXxoª|ɪçkA{õ+Æ4¤6k±"_õ„¯û]¾q7¥÷Y
-D„RÓšE©„jmÛ‡/Ǥ«Ûû§bY®?÷ÌèÔ
-Ó FÆ}Á8¢ŠÐ¾hIMø"HY_” _hF̼+lvì{‚
-‡ ± ‹.`
-ÃIÕ¢TB·.\2)Ht•‹paŠûcZ±3hàbÆüC[†<7:Rf¼Õû
- -tWµãQ†‰)l 77ÔuïpªF…Áú±:˜JÆ\ßîÖ½…´½#Xø§æµŠ}ðXøÕ"÷·7ÇÒØ´,\vB&p¡éª:…$׺{Ç+¦[­Ï W€œŸj÷²/ ó¨yÀù)€É€gJ6 ð¶Ô8À£”øÛÀTexàܼjÓŠE©„f]€ƒÑ0КŽj¯ *Ý AóbÃüñ
-8“'¾oh M|äæ…lXV§ë{p§1Ñ 49Gg|R³(4T­šÜt?UÖÑíçËŒÏ÷ecR:#¡ýÎð±ˆg–àØ pÒýREe±ØÞ@o]žAFˆ ó&^PóaÄpJñ!4?=¥ PfGÊPÖ©¹ ƒ“xP,RqVˆÆö¹ÍfŸƒ5\GÞ Õ €0g&Œ€uüFîln¤KÏØ(ÔoÒ|1Щ¶fЦ
-Ÿ×¥cF[U˜¼8Øõ(°CwÎU–¤8~úÅ_©¿Ç—3¥Fކ9bL“ ”Q¼ÙW=~Ï:ÔýÏ’,endstream
-endobj
-1929 0 obj <<
-/Type /Page
-/Contents 1930 0 R
-/Resources 1928 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1933 0 R
->> endobj
-1931 0 obj <<
-/D [1929 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1932 0 obj <<
-/D [1929 0 R /XYZ 85.0394 751.8354 null]
->> endobj
-1928 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F55 1010 0 R /F41 910 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1936 0 obj <<
-/Length 2310
-/Filter /FlateDecode
->>
-stream
-xÚ­YYoÛH~÷¯°û QOŸd÷£c;³$NÖÇì™<Ð$eC‘Zq<¿~«/Š”Z’]èÅV±ººÎ¯H2Ãð#3¡HQ5‹G1K7xö ÿýzAÏÒ3-Ç\ï.~ùÀâ™B*¢Ñìa5’%–’̲oó÷(F €ç·—Ÿo®KÊ9‹æ—_¿ÞÜ^ü7Ü LÀ‚ñüóåíãå'»öu¡èüò×›ûÅ÷‡ß.nuÆ*Ì´.ÿ¹øöÏ2Ðü· Œ˜’bö7¥èlsÁC‚3æWÊ‹û‹GÿšGC&àB"AyÆ HFR† EPL0Åœ ˆÑx0%!Cy.m¨e«úË!Fœ#ÊÀÞØ°´Ýk™ï›CEHÊgã-óLÅØd;8€§N4»ßæi±z·H5ïÖ9
-;eÌZ½Úû/ë7Û<³‹Õ•cûcZæàjNÕükݶł̟ʱ¼Ör&Í‚Èyn 21A1!"g‘?(嫾,õÕqÏC‚h#ž œå«¤/; ‰ÛªÊÛD‰X‰Ñ.M^&]ñ#?²çˆÆ`8û
-ÆGÒ^’¦:"Eàè¡`”f£x°4/Y }šp1Í\½Mñ\Õͱ
-Íb˜²q…F'¡<g¢sÄu":=—‰Î.
-*¼²¢ºP7¯ûº¢PD"uZ¹+ Ý¤ÉS
-3¬t¤uùø`\ !£(¤ïÞ&` éKí„®'¾¨Ò²Ïr{‚lìëæÑ:¨ó•ÊñAåÓ⹇VÔî_‹*, ÝnF 2Ïl=„¨A<"Óz˜´Ór×,$TeK?¹º˜ØK[lŠ2iJ·š63`GW@Ý?ŽÆ–aǧckÌu<¶.[/¡Ê§áñùØòÑpR¹+ Ý4¶”NõÒµö0À!~$¬
-œ€16öÑ2­7ۢ̀K2(=ï* ga®9íª× Wy.㪅ꈀøÁò‚Šƒ‰ñ´^ž) ×þÊ„àSņT#Þ—un&sc\S²TìFXç.!É7E¥=l-Ê,µ]"Ó
-endobj
-1935 0 obj <<
-/Type /Page
-/Contents 1936 0 R
-/Resources 1934 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1933 0 R
->> endobj
-1937 0 obj <<
-/D [1935 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1938 0 obj <<
-/D [1935 0 R /XYZ 56.6929 381.7644 null]
->> endobj
-1939 0 obj <<
-/D [1935 0 R /XYZ 56.6929 321.391 null]
->> endobj
-1940 0 obj <<
-/D [1935 0 R /XYZ 56.6929 261.0176 null]
->> endobj
-666 0 obj <<
-/D [1935 0 R /XYZ 56.6929 223.9137 null]
->> endobj
-1941 0 obj <<
-/D [1935 0 R /XYZ 56.6929 191.71 null]
->> endobj
-1942 0 obj <<
-/D [1935 0 R /XYZ 56.6929 156.955 null]
->> endobj
-1943 0 obj <<
-/D [1935 0 R /XYZ 56.6929 93.6598 null]
->> endobj
-1934 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F55 1010 0 R /F23 714 0 R /F41 910 0 R /F39 873 0 R /F53 1002 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1946 0 obj <<
-/Length 2748
-/Filter /FlateDecode
->>
-stream
-xÚÝZKoÛH¾ûWØÃJ€Ùé'» ,Hl'ð`âxc3ÀÌ(‰’ˆH¢F$d~ýVõƒ")J
-ÙËÚ6›Åêêêz|UQøg#£‰éDE™Í6Wt´„gﮘ§‰QÔ¦zó|õê­Ð£„$1GÏ‹/C¨1lô<ÿmüúññîáöþ×IÄ¿!“HQ:~ÿúáÓëŸÝÜã$áã×ïîžàVJ‘F²˜Ž^¿¿»üñüÓÕÝs#N[dFÊòçÕoÐÑ$ÿ銑5ú7”°$á£Í•T‚()D˜Y_=]ý§aØzj_R†(Ãõ€81F¥xG *!±àÂ*áöîéæãýãóý‡Ü}ç 7:Џ&TIm‰·é&›{2Ñ"’HI5#U^N"!ãqê.·Å&Í·nü
-*ýR¯²jöÊJE€Ïb@4 ãé¯Ý9IÅÀ4yï ÚÒ¢†¿¹A¾Í«<]»›yZ¥ý#XƒÙdþLh8ø³ÎöyV’F©-w‚“ !çÆ®ûÁúÐÓQH  #œ˜ Ç‚ G1Oµ©‚G±†
-×dÉD! ?¿d X²­xˆ—‚%ª»ä§ÒÛ÷ýã‹ Þ°öŠÎ^‚óEÏCVEY¹Ñ&­ò­ŸÎ½ÌÒ]:]ûÉbÑ,“âJ‘ÄhæMÂi¡'<CGVÁjð¤LœMé`‰Q|™nuU§ëfë_gëºÌ_2rÊ
-”NàcuÞ
-ÚT§­ ¡:>dg—l¬àxÉ!+è,Ù¶‚øoòÿÈ
-¤&h“ VТ:cÊ
->s‚+Õœ.
-4n·vÐI¾³Uº]"HKUºr·²âÍ<w˜UÅþ›Ÿª37@qÚ×Ô]vEYæÓA$Á% ¥Ú
-¡±Ó•ƒÑ3°K‹MPhÈ9°‹ó&Ø¢:c‚Êšàâæpx
-º9»d X²sà!qwÉu¿Ð áÐé£÷páU¼tg\‡òkÜœdXy2Pnáf·E*´Óü¯ ‹àÓz¥
-P¡ŠÍß(bÃñ‚ˆ[)Ýñöîͧw¿Â_È(ÞC\¶.gû|šÍ›ð9PäJ³úW^Î^£’Õ¿¿Óœ
-v‚AÙ¥h×¢:î•wÛ‹`ó³]]¼˜äg%k¨Dë¸<5´'ÚG@ÕP@Bͤî‹xŒß(£åa}„‰O0>˜û˜tµ>H?gn&¿¤ÛÊUx`kX¸n nÍwkOtóø©ô_4î=ø¬Üe³Ë™l>Ô.F+¥1½„A¡^ .E/Öø¾1Dí
-3€öû )Ô–×ñÁé•lëÍÔ&~évƒ´(¿›Ùùø’m+7áR> f‡ƒ°ïέ.0²Ü+q´÷ 7“{¦¹_­Þúî“”-Ø–|«¢oï¢äš]´úV¸‹Ðhö ²_èn…swlºëÐ~?”ƒ‡ÝÎOº#×Ûb)Ï»c›ê´;6TÖwÝqWì«co¤ÄHu^®@4 W~@ÚäqO°ŸÏ´í»j‚|ý,±–|ñ@u9 Þ/z(¾ãXýrªùZrèuÚÅìH‰Óg*%ÑB› gÚ¢:s¦Êži9PLiª8»d X²WLé˜ÅÝ%Áozû<ô2Lı‡‰VUZÁ±æ³ò jÇ=–ü
-endobj
-1945 0 obj <<
-/Type /Page
-/Contents 1946 0 R
-/Resources 1944 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1933 0 R
->> endobj
-1947 0 obj <<
-/D [1945 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1948 0 obj <<
-/D [1945 0 R /XYZ 85.0394 751.7338 null]
->> endobj
-1949 0 obj <<
-/D [1945 0 R /XYZ 85.0394 641.4745 null]
->> endobj
-1944 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F23 714 0 R /F41 910 0 R /F55 1010 0 R /F53 1002 0 R /F62 1035 0 R >>
-/XObject << /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1952 0 obj <<
-/Length 2379
-/Filter /FlateDecode
->>
-stream
-xÚÅYëÛ6ÿ¾…¾Ub–/ñ~Ú\6¹-’M.qp´ý µ¹k5¶äZò>þûr(Y²eoiq“Ôp8œ×o†Ë
-ÿX’)¢,·‰¶’d”eÉ|}A“{øöî‚EšiK4íS½ž]üøVèÄ«¸Jfw=^†PcX2[ü’¾&šL€Mo.?\½™L¹”B¥—Ÿ>]ݼ¹þÌ3
-D@Biúáòæëå{\û4±<½|wõeòÛìç‹«Y'N_dF…—å‹_~£É$ÿù‚aM–<„f-OÖ2$“B´+«‹/ÿêö¾†­c*Ü%”N@6"hÆþ̱ÂE˜ñci2µ‚H#íi^¸¯8lw YM #™µY2U:#šõ,ÄE±Yƽ‰Œ&\žè È,×ÁDÿö”–dJ2O{2 ßi ¸œLO?‡ÿoà–^wcž¾;´QÄ‚uM51™ ºJþ
-֕L
-sØÂDºÙVsW×8ÙN¦,Kweé·†•¼ýüüˆ§‹ÊÕå .»r™—s‡“ÚÍwÈ¡hžqÉßÛÿ®«:î¨ŸëÆ­ëŸ`&h«ïÔ(Fÿã˜ä xS%”j€wý•f”ÃlDaù™¤,Òkê,]¸_)åe0LóÕªò§>†ÏÊ«Ç/wêñ“h=¡:
-?ºzžoð†Sí¥ÐâÈXñ8þ=/Vä04¤ k’~ ~_ì je!N÷ùëû2¸1F[ïp࢘cQù (È90’’E—sØ*tTýxȲ~<0bl&¢y!·‡Ú³œHkTÒ?ñH®–hD.Ñ;Íj"µ=ë‹kvEˆ}îm2öwIN4p?ñ€5WÄ0Û&Ïü®ªÀr^­7+â9Ì7ÛènñÈjã¶¹OuÈ<­wó%~ÂŒ ÒùvÂLêòfÂÒÈb±šs°ÐD¢f™7¸mU@”–‘{‰l2"%Ü|àÀQ
-nÆp’Lð6G Ø7 ¨wu
-õ2úõÛõ¡ lDºþøêñ3¨×ç|õ2 DJìó¶Té{@2FÓÝÓ«˜WN þ*TëÔe¾'8ξpx–i½wýYûÔß&œ¦ÁÕ³´t«&àF‘²g~[¬N`¾vsÀ›¢^û©iÖ//¶ÕGÅqò)º-
-B‚šó• D'ålP٠Ϫ\=ÇZFû,IõQÁ€"Ã=¾ysr›>.]9âµ
-ÃM¯fð,ÛúÈÏ 7°zàÀø‘N˜A/˜_[å>¥gA‘à,Ýú
-ÿ÷I*_kP{¾@ê¨BX=jFAª‘V%}fGG¶D#GöCG{T£G~vóýCÆôƒ·­±éI¹[ߢ·QL\~àžŠæÈŒíÕ!·Ì¼¤ž=ÑíD¢ œ§±ê‘ åcÛLäó¥›ÞƒŠÆ8dxÏéœlѱpb€„UéÞWyTÍ"orÝ…ª­ZT”` ¥¥•ûà8§)Õ^±(CwÒ·VØÃêîàÛÂÝå»U´ïCáýûÊÉORŸÂÿÜëÊ‹ž†f]ü/¯qéâR-ÔAL¼PÜ èŒUêï}äÒ­„øë9úœÏ”{BA ÝäÙþ‘Ãסö ;Ì2|ïð¿þ½Ã¿À¸rüÔqñx£»ø¥$pÈ d¿úúúæ Ž,þ,«&€Lnåûšzø>ÛæE Y^ÇG‚0 ï0ð»uë
-.$÷eîK ÿ±{=ãÑ­üâmÜŸÑx|Fáá­ÁV¸³|ñå4Ó
-Vp4eª{ÿ­J/êýÓï;DêWV¡#‘ˆI°ÖTð9í ¿6qqáêù¶¸m÷”í*t3+{}z ßSûž2¾Í¹>—Í^<\úÞÉç¯Ø¢ûn†©a ûP,ÚG´¢ç)áú
-15Œ£P^x½úQ¢¢P¥ƒŸËþ_á Æ•endstream
-endobj
-1951 0 obj <<
-/Type /Page
-/Contents 1952 0 R
-/Resources 1950 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1933 0 R
->> endobj
-1953 0 obj <<
-/D [1951 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1954 0 obj <<
-/D [1951 0 R /XYZ 56.6929 285.8256 null]
->> endobj
-1955 0 obj <<
-/D [1951 0 R /XYZ 56.6929 148.5666 null]
->> endobj
-1956 0 obj <<
-/D [1951 0 R /XYZ 56.6929 77.061 null]
->> endobj
-1950 0 obj <<
-/Font << /F37 779 0 R /F23 714 0 R /F62 1035 0 R /F41 910 0 R /F21 690 0 R /F55 1010 0 R /F53 1002 0 R /F63 1038 0 R /F39 873 0 R >>
-/XObject << /Im3 1147 0 R /Im2 1024 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1959 0 obj <<
-/Length 2318
-/Filter /FlateDecode
->>
-stream
-xÚ­Y[oÛ8~ϯðÛ:À˜åýò˜&™NÓ4›¸‹:}Pe:"KKJ6ûë÷P$eI–³QäÑáÇÃï\H“†?2ÓaføLŽ&b–nÎðìÆ>‘ ³ˆB‹¾ÔÇåÙ‡_™šd$•³åº§K#¬5™-Wßæww×·W7ÿ>_PçÑùB`<ÿ|qûõâßwwnèüâÓõƒ{…ïAH;1‰ç÷·W—çß—¿Ÿ]/;4}Ä3寳oßñlÀ?È-f¯ð‚1†Î6g\0$8c±'?{8ûg§°7Ú~:e.4”ËÙ‚q¤%蘴FXÀºJ$e¸ž²S”rvú`ëôC‘lì
-¥e±¯š(ŽfdÖW}
-Y´ï 〠\XÌë6C£ÜÚ®Dq¯kÿLü#„h")!¢ŸßÔa  •]ÙžæCԔؠhšḭ!Òù¼—‰¡*(MÂt¯I˜'/ÙÊ®|OׇŽ6׸0 €1ÓÈ`¿‰>Çä6©l«âLÏoÖàFšÓþ˜Åb:<s H/ås‹ªõ׬~òÝEé{"7ÚÎ<+¬ï.·nC‚Š6)Â3iÑ>6[Ô¤b†A}í?Øî2è rþQ=9÷lG«fÙ½uko¨y)ãä\Ç 6Õ¹·]Å<Òâ IÏ#†F'ž¼$YžüÈÃëÿH: yi°4Mr`ÅDž49¬Ö‘|³iŠ,MjGE¦D0¸kµH™’Ю+æI×.»VâËË;/žSØ´ÎÎɼ,Àê+ø²XeÅ£—Ü›¦ý¼™Šº±
-Ô †ŽTàóUö˜Õ‰KÏ0eER7¡òr”ä Ê/é­ Ri³ ÕQíG
-sn-&–j~¿Œ}¸tê¾…s´ð¾á0³ñ©ºŸÊWßïÇ[Eu’Ö¡ó)ˆÅãë/h íNi
- ÷íWŸªÝpç¥Þ•Ã2,것Û÷¶‘®@kò0ØTÓ·xX8}ik¦‡c÷+°áèË•NÄsaêDâEÜtÝDôÃ#AÚvô 2¸uy%Åæ²Nd mX8 $1¥=l_+;QfS å¦'H½à%L‹xêHÚGb.¥í÷ŽŒ©õN‘&AÒG. Ÿ^¨ ºÊ‘ÀÈoœ 'i͇´ùÜäu¶õFVTuR¤¶êWalëØ^w•LtÔ$Ï=ó«Öu›ÎÛX¶Q©ltߥoî^ø¨¤.”ôlÑŠìma«£7~’)sw¾§IÙ“:ÁË(ÕR3¢&†’9Äx 4”³Óø:© €Ãç¢@£Âi‚º#€¶9gôJ²Š÷ØIL`1ÑuƈèÚŽ5Gý‹ÛwbØþópIùËÔ ÃÎ(Q¶wÐ.twWÐc7Ü3%ƒ6n{Øi.ô„ŽS!
-µLx~7Hõï4àN傟DÖ Bl,œÿT lG9`ÜU×Ô¥È@'Ë0W¦G
-‚á0ž@F7šD̯™«ë(Q¾ƒ'äÕ•oµqžýŒë‘ý³Q±êë}áGöµ¥kgëýàDR E~ÖË á1h­J€eB—jtB°ÿɪûŒ än]&øŒ»òâoÿB¶ÿ»<z¬Æd˜#‹ˆ zˆ”cè‚i¨šÀþ?–•endstream
-endobj
-1958 0 obj <<
-/Type /Page
-/Contents 1959 0 R
-/Resources 1957 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1933 0 R
->> endobj
-1960 0 obj <<
-/D [1958 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1961 0 obj <<
-/D [1958 0 R /XYZ 85.0394 686.1157 null]
->> endobj
-1962 0 obj <<
-/D [1958 0 R /XYZ 85.0394 612.8143 null]
->> endobj
-670 0 obj <<
-/D [1958 0 R /XYZ 85.0394 575.0344 null]
->> endobj
-1963 0 obj <<
-/D [1958 0 R /XYZ 85.0394 542.5339 null]
->> endobj
-1964 0 obj <<
-/D [1958 0 R /XYZ 85.0394 507.482 null]
->> endobj
-1965 0 obj <<
-/D [1958 0 R /XYZ 85.0394 443.2139 null]
->> endobj
-1966 0 obj <<
-/D [1958 0 R /XYZ 85.0394 372.8773 null]
->> endobj
-1967 0 obj <<
-/D [1958 0 R /XYZ 85.0394 191.4417 null]
->> endobj
-1957 0 obj <<
-/Font << /F37 779 0 R /F48 925 0 R /F23 714 0 R /F21 690 0 R /F39 873 0 R /F41 910 0 R /F53 1002 0 R /F55 1010 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1970 0 obj <<
-/Length 2135
-/Filter /FlateDecode
->>
-stream
-xÚ­YÝoÛ6÷_á·Ù@Ìñ[äcÚ¦[†6íw°îA±d[˜,y–œÀÿýîDR–d%ÙÐ!@D‘§ãÝï>xG³)…?6UšhËí4²’(ÊÔtµ›ÐéÖ~š0O³D‹.Õ›åäÇ÷"šZb5×ÓåºÃËj ›.“?foˆ%ó?—¿üø^‰-gDsc?}¹{÷–¼ýt÷ÞQö¸ríâžôúóç›»w·¿Ï\Qà>_(Jg¯ï¾^psŸç–Ï®º¹Gf“›e«GWWF*ñ÷ä?é4•™P"¬QÓ'x¡„Y˧»‰T‚()D˜É'÷“_[†ÕæÓ1ì¤2Dq©EEtDõ8ÂŒDŒQ$ 1‚ÚaÎÆTˆÈ¢òøª%£„ 0”­Jéaˆ£œDfc‚yšK¹zÖd4"QÄD_°ó® F—‰¤ Í*°›µ³z›ºAïü¨<¸gœ$‡93³´ò´åzðß«?m³ÕÖ wq½Ú¦þ£ø’´ªã:Ý¥Eí^³bÀvU T`ºÐŠ€ãŒ«ÀQôo”òÍñ×Y _
-Û™<Å1›­Ë |׆<?òªŠd5‚§DFÂÓ€‡GTÍn׎iQº‚8‡6sÇý>ÏÒĽ9‘˜S'Vån‰›Í³"½š/$S€Í¶eU;R4'|8¹)¤j@—`Rô‘HÒu|ÌëE .â*UêÆ ²ðtÈ Ü#h•{éš×ÖgâK
-0ƌ݋ÀðR…ž`Æ¥¬î«%—G)#ŠÉèeØZªÜúÇ)‚Õ¬¿ëׯtÚçkxœ±¦$`IÕóX²‚QÿX†#XöÔ‚Œ"
-ê•+Éjÿ^ ¸±;ì%–o@‘¸z@5õP3di5ÛAaoüŽqž%í9­ü;W«å…à®ÂY¨‡.M-¬‚³‹óçM-‚[€VS‰í…þn[·]–—Ɔ3˜pÃØyçg Õøƒ2Þ‡µ³€¦§Ú§« ý=M®Fê$È–qýJ$ˆ<×I® BÞÈöÐTƒÏŠò/aI;g³ƒÇnÁm¡ÜÃ1z
-%Ñ(iá&}£ Ûú·A?l‹_X,×Y˜h‹ß “ë2h_#” ‘žÝ•5~KmˆÏŽÚ‘D«myëê8k6„•j;}·zeO(Xó”n-à…(=+W"áQ©³(“ô•a¡”f£•¤oþTpƒ
-ãÑÙ­¯ðªmyÌ“¶?pâ­ËVLdQzÚmüè§6i‘b¿±£mKKß­<A–óÔ1$šª">ABQ<Ü +3x÷ʼo¾’‘·Ô¨Í>O0]5i¦ÓÃDGY˜ÅF jÑMX|8µ9 :NªØh¯Âæé@8_6Ôu×É.+2ÈÙq4ù’®=šÅÊö1.Ž
-i%jÃ
-²ªÂ<‡ìBJQíbíÃíÇÛess„ÿ–·ŸîîGÔŸ†N†)%ÿ}ó™”i5pÌS¼Ù9‚×5ô m“Ü‘n[<è†ÌhŸ¬ TßÁÆEe¯ê‚ë,ÏêÓœ16 î¹Öâqåýß)¾ ‘Ûsëò(<Wǃw¡:?¹©& Ãó)öµŸp9·|Ì’†IHg°ÒËOÜöK xwÉ™ã…N£ìi­,Ué—ª<‰¸L%XR¢%¿¿Ês ]ŽÍÁß“ ‹AË"sÞø¥*Ĩ|¬\•Åí¯Ëô“:}‚WSÛOb÷éã9)¦Îr! }
-endobj
-1969 0 obj <<
-/Type /Page
-/Contents 1970 0 R
-/Resources 1968 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1933 0 R
->> endobj
-1971 0 obj <<
-/D [1969 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1972 0 obj <<
-/D [1969 0 R /XYZ 56.6929 470.8431 null]
->> endobj
-1973 0 obj <<
-/D [1969 0 R /XYZ 56.6929 355.3786 null]
->> endobj
-1974 0 obj <<
-/D [1969 0 R /XYZ 56.6929 281.517 null]
->> endobj
-674 0 obj <<
-/D [1969 0 R /XYZ 56.6929 235.0409 null]
->> endobj
-1975 0 obj <<
-/D [1969 0 R /XYZ 56.6929 198.7213 null]
->> endobj
-1976 0 obj <<
-/D [1969 0 R /XYZ 56.6929 159.8503 null]
->> endobj
-1977 0 obj <<
-/D [1969 0 R /XYZ 56.6929 83.0669 null]
->> endobj
-1968 0 obj <<
-/Font << /F37 779 0 R /F53 1002 0 R /F21 690 0 R /F55 1010 0 R /F23 714 0 R /F41 910 0 R /F39 873 0 R /F48 925 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1980 0 obj <<
-/Length 2900
-/Filter /FlateDecode
->>
-stream
-xÚ¥]oÜFîÝ¿b{¨Üf'ó­Qòä&nÏE“æ(Ð냲+ÛBµ’»ÒÚ5÷ßr´Úµ§8øA#Έäð›\«…„?µNHSØE^Xá¤r‹ÕæD.®aïûÅg–éÐrzêÛË“—ß™|QˆÂk¿¸¼šà
-B† —ëß²³Îß¿½øõt©Ì¾§K'eöîìý/g?ìÃi¡³³ïÏ?«.r‡
-qúûå/¿sf‚Þ…È­C®ñÏïß¾o~zÿ=9¿Ù^IIƒ¼þyòÛïr±†›ýp"…)‚[Ü˪(ôbsbΓ ÍÉÇ“'»ñÓ99„ :Ÿ‘‘V ¥Dáœ>’+„7ÚÄ»¼=ÿøæç‹—?½§‹[5¹¸\€œD,Þ¶ë•XuíÕS¹\èBQÝŸ.SÙpSáBfðÕ¿¥Ô×»m9Ô]K»iøÀU·e¬S”¶Â™3Zd`†¶–Âæ†Ï¼
-ÀX*ù$A õA˜¹(ã7V>Eàä f9Ô*¹tùsâñÒšc=Nb6€žw‰L,<i^7å°ºaa‚ŽDð*zjÝ^Ï(Ýõ¨‘§ÂˆÚÕ…G ®n•)Eþ‚JvL/d\A&OìÉaôä@©!åd ö¶Ô!ÙÑäÐ.¾b:¬~#ÑÃIŠ@,(}ÈSÅ-„lбyþ„kz……º=rM,=f$“[̈|Sz°î Àz°.XŸE¼q5€v´„$ÑV«ïè“h”2ÕØ
-èÔ-x.ÔMjbg𕳫a_”Ï)Ç*‘cðz..èÓƒÝg•û.2±~‘jïTu§yZ[Ók }çn]qá]rß0lÑÞ#( Û†±Áñb¹Fa'–ðLá D
-‚rÏ ®®ôgÝêG é$!÷¨æ¼Ð‘AOJM'1éT×éiù´pò¸uÚì°ÜÖÞPŒ£%i×[Ö‚bÃ
-Ï’ÔFù}àq†°Ç`¸%4©¹LPŠg¸jw›OÑ.8Õ›ý–tž] c‚Œç:&pqu87àéÇ\Ó«Œ^_"i:)Ž3¼ÖT•áM£UÝéÀaäˆ
-à¸úć8^!¾¶ª’_¢ÄS©$†5*&vß&;/£Ú©‘Ê¡oPV9ÅK ¢,ÿ¨hE‡ù²¤ð8¥
-+Ñ4¯ã„×q¶e¾Œf‚j ¯b‚@
-cÿôÔð
-÷«~.°Ou‘†{lV8|½Lþ¸'\ÙÀºîÓ\6Þ#”Ñ­»],!pý纬þ©Yá8ÆÇ–aÿ’GÃ;j|òì¾|è¹êr]µÕ–ßic4òÐÄ7®¯âÔm?¦ Äñ¡æR
-›²MCþ(¨6=ǃUu”¨Ï={÷áÇs>Œé6ሡ%þ€Bëq<‘~ºéWP‹íÅ7ùBT68úE7ÑÉXÐIxì ö…=ø¥aé¥Ìþ%“pÏw×\)* ç›nU6ئ½ž ¡ÓÁ3D™. ﯹգôßddÇ·Jdý”ê³LGÊyxž²ú2ʦ‡éûs¤µåá¹-
-endobj
-1979 0 obj <<
-/Type /Page
-/Contents 1980 0 R
-/Resources 1978 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1984 0 R
->> endobj
-1981 0 obj <<
-/D [1979 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1982 0 obj <<
-/D [1979 0 R /XYZ 85.0394 752.0756 null]
->> endobj
-1983 0 obj <<
-/D [1979 0 R /XYZ 85.0394 252.6303 null]
->> endobj
-1978 0 obj <<
-/Font << /F37 779 0 R /F53 1002 0 R /F21 690 0 R /F41 910 0 R /F23 714 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1987 0 obj <<
-/Length 1787
-/Filter /FlateDecode
->>
-stream
-xÚ¥XKsÛ6¾ëWhr)5 QâA€l§Åq%µœÚJ§“Ç&!› E:"UÅIûß»À‚%3µ3,–‹}~»ð£ãP³x¬bA€†ãt5
-ÆWpv2¢ŽÇo™ü>דÅè§g\cK&Ç‹eOVD‚(¢ãEöÖ{Bh@& "ðÎçOü£³ù³“ãùħ±P›¾zu<:ûsâ³0
-°†qÉ|!hÏ4€SÊåX…1‘œqëŒ$ËÖº®u=ñ%˜ùE•&ÅuU7¸½©Önòÿ‚Ë1æ}JI†l·0bÝa0ö#a·ê}‹ïÖÉê¦ÐÝö‹e”WÕ:o®W¬×«$õWYØÉï3×:]kÔ4ðÉg§Ë¿?«?‹âö’‰³™fùÉñç¸XÒ¢xqöcñùѰ ô!64ºn¾ÑùP˜0œóç³è•|òr¿Ùþ¹ó?Þ¼Üüþë¯Ðú§gß]ì}’H†!,"d’a•ö&¯¹Ö°à±—\Vk¤éO6D°~"A-)Jèn„¬Ë,¸‘1…q蘶yQ ÜË[¼*ÓËdS ©Þ¦v
- &@©õúo½vZ9®^Rò»
-„C¡0Ƽ¦rO{ £{Ú½3
-wÕòk
-}¥à»«¡µ€¨¢ªm ag ϬÚ\ÚHÀúã¦'‘NXD¤â(l¶¨ÖˆÄÐúÅ
-µ@=ßXÄ™E1—w‹XE$ܽ›×øæÕã6¿ÊCA”à÷ãƒRê
-endobj
-1986 0 obj <<
-/Type /Page
-/Contents 1987 0 R
-/Resources 1985 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1984 0 R
->> endobj
-1988 0 obj <<
-/D [1986 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-1989 0 obj <<
-/D [1986 0 R /XYZ 56.6929 343.1761 null]
->> endobj
-1990 0 obj <<
-/D [1986 0 R /XYZ 56.6929 255.6488 null]
->> endobj
-1991 0 obj <<
-/D [1986 0 R /XYZ 56.6929 192.0319 null]
->> endobj
-678 0 obj <<
-/D [1986 0 R /XYZ 56.6929 152.6743 null]
->> endobj
-1992 0 obj <<
-/D [1986 0 R /XYZ 56.6929 115.923 null]
->> endobj
-1993 0 obj <<
-/D [1986 0 R /XYZ 56.6929 83.7361 null]
->> endobj
-1985 0 obj <<
-/Font << /F37 779 0 R /F41 910 0 R /F23 714 0 R /F21 690 0 R /F48 925 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1996 0 obj <<
-/Length 3196
-/Filter /FlateDecode
->>
-stream
-xÚ¥ZKoãF¾ûWø(QO?Énìi’™v'³X ›ƒ,Ñ61’¨ˆ”ç×ï×O‘TSò`áÛÍRu±ê«'É®)þصV„
-#¯K#‰¢L]/7Wôú÷~ºbf‰æ}ªïï®Þý(ÊkCLÁ‹ë»‡/M¨ÖìúnõûìýçÏ?}¸ýÏÍœ+:ûžÜÌ¥³½ÿôÛûú½Ï7†ÏÞÿôñËÍœYJ1jé
-:ûõÓ‡æ?üòéÇŸ>~ºùãîç«wI¬¾èŒ
-+ÓŸW¿ÿA¯Wx‚Ÿ¯(F«ëüC 3†_o®¤DI!âÎúêËÕ¿ÃÞ]÷Óœ*”ÐDi^ftÁÙ5cÄ(ÅÊP†‚ §Œ/¯Ûf×ÖíøQ
-È#À´‚Ð’ëÜÑ ŠæJb5%TAåó> '–d9E*+Õ~»ZΗÍöá±ÚÞÌ ˜ç÷ù⸺·Â¾ûQ‰&ž½Ð8Û2øZ½¶õß•'œ'ÑR°@—x.3<…"ºPêÈò¡^˧´úša^(R*!Ì·‹Í70ß]”w×ì» ?.ˆ±ØñÛgøÍ…ü¸ä×ó#kœÅvÕl&tl•¥ÒcöíEq«Õ¾jÛ·k »Èrù´ošnUïsrÂCUaÆL™Ú*ÇKÂ{ìÁÐýæ‚q8³ÆB“Ò(Œ>|üòï·Ÿïnù”~täJ¯ç¼ Juêžz
-ovÁ)ÀÝ ¼Ûªó‡ßXdTUjb(c}$åÍ ¬ÝK>Ø{ YþÏM½
-2<…ÇÞVUزî9)㊨²Èô€è%£þYÄ]Κ6’²±Œ¨ˆ¼Œv‘Q7"…ºßiŠªb ÅÀyÝ5|ƒŠ‹dC(£šHf!†z0ýâÂç—“j, J"îê²8_¥ô©bñtZ¥$ª#®úG"_
-Ç9{d$ÊÙWJVÁøG~pÁçÐ5¸Ï2c¸¤.ÏlÁy/ õ“ƒ àˆcwOuë[ú¸³Iáv!’Á£TH“_%Ù5Ž€
-ƒ™fí®ZÖVÖ_íF¼ñòdkX»úþöÓ‡°oÞêua™ÿ·ƒ¨®ç˜Õ (>ð´ñÕ]ÀSËs…¢²àì‚é9‘,E¾‰Ä‚g¥Úô3@Ο91Gõ5á1á×ûî°#6p€(‡«K^§á
-m®ÖÃt1™ÙL‘„LáŠÊÙª²ÿmZ©rhu»‹Ãºóÿ,›ÍÆG5,‘°¶ÕÚßI»p²6ƒùàg±h¶Æ®×ÍK>Í †¢QuÑŠšh.—w‚d‡­=²
-:A:C/¦†:qI0ƒ$d)å%Ë "QT÷,gC°Ï:X¬›åbí—OMtȺXm}8ì]¼vÿœÄ';ê'Î5šS‹
-éEÿõ°Ýæõ†ZŸª–†m Òg>•—¨PEÁä¬Òzrïq\3ã7òh×òXáOGL*¨î ]yþ¡¦µG„³WÎu›Ý¼²{WÞ­ËT€á‡>­÷d-g:V¶’P]Œ\a²*àù`è$L‹¢ï¦Œj}áÑyŽED3BFõWÝv¾º¶Ã“ 3õ2ãv ©Ê¤×Ku$âør€/K+x„Ÿ[Ü>Øs}çPÐÙ¦ñÚõ›ÕzqߨÞÇÿ{Úú`¡ö¸ê<—Ø2­üûלIt¸fÐ;ô!j¦!ªË—VAêeþóPûÅÊÚ¤àxŽ¿›Ý:F
-æŸz\{к•en¯Ötöjj¯@(¢Ù*»7M×+¿…Ô³×æà Ú§æ°NÄ®ôÎèE4?¦’Ëí©2)C[à5°^Öll&Ζð¨
-UŽJxËÏ…p÷U8ÁÖðîN§xr[„UËßÒrROòIyê“òÛÑ¿η
-¸X‘dªºE½<"ž­nûTÓÕm¢r*c65T¹6Éà½)[_4f‹óh?+[¢Ê'ÆeØPº/©Ü²p—ÜG(»p¹Uó0º…„>ÈævÏes»¨ÃÆ}ݵvÖ‹Êñ_›ûÜf¯ÝKUJ¸:°a¡· áXüK Œ ´êb±cEs×ÁìŒëIkÛR@+À쬵ûTÓÖNTÎÚËœµáÞ¨dN Ck—„1y^´H”mhkN¨Å×@¶ßBníg«|Ä($N
-³“}¿N…Yêû{¹ÎUò¯±ñMÝ©Xô
-¤ã/ÓälèÿÚ6z—; Y¢¦ežM™žƒ®ÚØ>ÕÓG*§¦§“6V”ŽŒD™#m¬!Ò¾$ùy_‡ˆº nµþdçÕ~y@i¾hFˆ7Y;žK¸PùxH••³g>}sÎË7¦,ŠÂ; ,&MÃM–>}Ö4}ªiÓ$*gš¯o‰ÁñÍA6Ÿ•íƒO…ËÆàtƒlkÙ`£"´HX8ÑÜÊÛ±Gã+»‡åÈÁÖ%ħí0ŠÀÍÁ÷#E*½þò¼X»é–«f³¨·G È™|q5ŽÅ™¦Õbd¿M˜Ÿóèâ"l”@ÿL/xtŸê l"•ƒÍî"lâÛ¡f8%öùÎʉ2r‰Ñ@þH°aÖãy·Hí¸0½vÜÞq’ºÕ‹í5]•ŸñkŠŽâRß+!Lê“ÖèeªmÅUÝ^¾ AÆŠóà;¹M®ï”0šÚí7¾)¥Žs[ý çq&ßPÀ|Ó`Bb3ú–ŽDg ˆ’ö$Rh‘Ü`ð6p
-Ú”{=¾ qÑ¡Cr #bvT¾M§1väÈhV‰®¾,¨Ï[ø?ŒŒ°So‹ÅÊo{ÝÆ‚ÇÙÇY‚ø&Ãç«"”©nJØóPe_Kkt–ýÞZ`•ŸÃK–¾Ÿ¨·+7€ =ŽHF6Ä=gÃ0©1}´#Ô‡Q‚`÷!ÙÚgŸ eLpÂ
-þ;~Eµªí³ùx,à»×~ª¢hL]¾í5©ÉQƒð`듉p_ÄÜ P»)4þ÷ÊZÇog¬
-þïO4Ÿ¢Jû!’žè •DâPVpÆÅXôô1ç©ìÿÁr‹Ïendstream
-endobj
-1995 0 obj <<
-/Type /Page
-/Contents 1996 0 R
-/Resources 1994 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1984 0 R
->> endobj
-1997 0 obj <<
-/D [1995 0 R /XYZ 85.0394 794.5015 null]
->> endobj
-1998 0 obj <<
-/D [1995 0 R /XYZ 85.0394 748.9271 null]
->> endobj
-1999 0 obj <<
-/D [1995 0 R /XYZ 85.0394 674.5821 null]
->> endobj
-2000 0 obj <<
-/D [1995 0 R /XYZ 85.0394 573.362 null]
->> endobj
-1994 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F41 910 0 R /F53 1002 0 R /F23 714 0 R /F55 1010 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-2003 0 obj <<
-/Length 961
-/Filter /FlateDecode
->>
-stream
-xÚ¥VMoÛ8½ûWè(+–ß"NâdS$N6v€mª-;ÂÊ”×’äßw(’Žì2ÈaÀIÃyofÞŒD $IMu’kŽ&"YnG8ÙÀ³›ñ>Ypʆ^‹Ñ—k–'iIe²Xb)„•"Ébõ=½@£1„ÀéÓìê2»|˜]ßLgãŒhžótòø8]Ý~gT`pOŒÓûÉìyrçî=Ž5M'7Óùøçâëhº8ÒR'˜YNÿ¾ÿÄÉ
-2ø:ˆi%’W¸ÀˆhM“íˆ †g,Ü©GóÑ?Ç€ƒ§ýÑX)¸PHP.¡()Lãõ"('|rN€£~¯%±z/[¯ì`óür-ÄÀ“¤´
-ï2D
-æ±oùËgpBË ,ã}¶…9µOµ1¶Š›4ä÷—»»«ô`¼ªÔ
-ÞDÊË5â8€›b cðQ}µÝp¡Ÿ*‡`ˆ]¨K'2nøtÎæÓ©Ã™ÜÍ>6ýXÁ ƒdì1xÐ';ðÒá%‚¦.ngWî¨ö¤VÛÊTm³ÔøUòT®K§1³ô£yïÆ/Òx©•Ð3>¾~¼58¼{Oë2y^üýðôyAnMWîMéWâü­mùýwÙ˜¶ÙwÕaûÑ'
-endobj
-2002 0 obj <<
-/Type /Page
-/Contents 2003 0 R
-/Resources 2001 0 R
-/MediaBox [0 0 595.2756 841.8898]
-/Parent 1984 0 R
->> endobj
-2004 0 obj <<
-/D [2002 0 R /XYZ 56.6929 794.5015 null]
->> endobj
-2005 0 obj <<
-/D [2002 0 R /XYZ 56.6929 687.41 null]
->> endobj
-2006 0 obj <<
-/D [2002 0 R /XYZ 56.6929 561.6045 null]
->> endobj
-2007 0 obj <<
-/D [2002 0 R /XYZ 56.6929 501.5525 null]
->> endobj
-2001 0 obj <<
-/Font << /F37 779 0 R /F21 690 0 R /F55 1010 0 R /F23 714 0 R /F41 910 0 R /F48 925 0 R /F39 873 0 R >>
-/ProcSet [ /PDF /Text ]
->> endobj
-1172 0 obj
-[682 0 R /Fit]
-endobj
-2008 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]
->> endobj
-1570 0 obj <<
-/Length1 1628
-/Length2 8040
-/Length3 532
-/Length 8905
-/Filter /FlateDecode
->>
-stream
-xÚíte\Ôí¶6Ò ˆtÃÐÝÝÝÝ¡Ä0 00Ì ÝÝÝÝ’‚R"‚´t ÒÈ‹>ïÞûüž³?³?½¿w¾Ìÿ^×Z׺î7¶‡Œ5Ü
-¬‡¹rðpr‹ t´P(ÐWç…C­fL9g0ЇÉ]Á¢
-Äü{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
-~"ÅVöè=”Žòíí`õ§ï3t;k‡–Bf?õ[¼„Y®¤¾ša£„+gl’ft]ÎB‚²w3ë‹,£ªˆôkêyô’­úÅ>¡ï„móW¯µrÅý¼0Ï”dË#»§BЏÝUJàžuÕñÆIÍôaòÔã·×¸§ ™ žL¦€Ädô<­cË-8àÒ—£t‰Äº4ú£|©D„¡¹šŒ]¸ãÏßE¯¡>ÓR·9xyôöŽ[Ìï`º~ͲûDœ¨'ˆº5e[-0GMÓ=KÊÊJþ&â&’PøS¤8ëãin,õ 2PU«r`ZÅÄí¢v8Q—ÁèÍ ×ë¯oã»o[2ÝO2Ó¾Ðm/Ÿß×Y¿üìvV¹"_=5Ó›é¶è áaÖ™7þv|g “y×&"YæЖ(¾+ÐMoûÁ|°>›à¦± vZÎI ÏW´Ä%^‘›üˆ¯­Ú]Ö%½ZÆÁ_Ï@ÄRdçÒÄ9è©‚†õ‘kãC¾¥HzõOlnÕžÝÍà™>{óbÙ7U^|ä-)G?
-8òÞ¼x“mì¾%ÿjã=!•š[žž;[#ÆŠ™ éJ©/A%Ñv–µû`éióöíØœÇŒP~^z•çQ•7˜¿\扯â ÈÛ.|âùúÁèéá™
-¸È÷»Œq„z`²\F棖ûEœ!~õT¦¾\Ž'4/ýCîe– 7,î9tãÒ¾Â1 ¦’·IM^y/¢˜kIm;˜¨½}O«•oÐHâ•¡Ç6—]í7ôh`† J­TÂcweófœkÔ­—ÕRÐÓ(9%Ö¯c
-Ó·_Ü€¡èüêr_7ýGmÔ&œÐ‰lÞÆŽ
-Kê#TðÖ†§øñÞ ¿šûDE&ñžËœ^QH¶!’Þ»¸>àáÉà̹ç$ÚxþF`Š×Í4IŽ@N@ÒÖ>_9²J¾ÃEúOê
-uÿ'¢µ?s_¯Ð‡öÿŠ˜'u
-BêH—‚?ý
-$OíœàÅ€DÈ
-¶_O®ð -¡;…®u§uªºXÄ[AŒù××¼^L¹ê=_󱑵ħŠfJ—äÌ;7œ1¾,`_q”¾´9›Œx•±tþ”
->C{(©¼Ê°nwð,K ?EÚ7þBq&‚´”jɸˆ·?è¦ú-ŸCØüƒ%¥uXcýøââBïÅ ´;ÁµÜ3höŬ ¶÷Ét(‡„šœì :î´cØ¢>:ƒ‚¯úò‚#ÑǤ_VItSÏ$ëŽ`ø~"ÔܲÜr$ŒU–Y7÷“ø?¢ê¹iâ¯ÉqÅõãÏØISª5ñ4Â…èÑb“EÝêÑÑn›p³ú†-.ä‰ìošå•Hû~B»ÎÂî‚T§Z§Ï_)©OqÓzèß÷>ë˜Ê;­dpI¡rr1ÛA
-öÝPî2Pw]¶u¢èúä»(£ý/޾ªˆ§þßÜ¿~&æ[1¸Aé-KžÚEО5JÃ÷.føzßwi°h“bLñB³ß6ˆ
-ÃÐÙ²¶©HÈ  9^©;¢Ìœp»Ãm%{r7E•€ÏŒµÂE±…ʨ*o,„ó QÞúʭ䦀(ô$íªy{Çgk9©‘5Â1ª0Û˜F3ŒÛ!s0¸4XàŠú#r¥Æ2á\8nqå°Ãs}䮀„s–è5)q…i¹C9ad¼¿`u ^<‰2@´ÄR­×$âÆ³—xº>áÈïž¡wdª‡}Té†×ÎÂËõ€Èøt\1Ü~‚9 ÿ½8ia D9©ì"Ð!gÑßqÝ ùA“ׯøŠ
-»]‚ÄÙªAÓ8ﯙÎd@Iî?_ɽŽbÎJÊ8&1ß’bçy·ÌJü®J_ƒ|¡iïÂC®¡L;¡Æ–=x8"ÆÝù\šGd'—®®ðÖ/B¿ÝÞpRÆ'µsñX'MÂÁd;ŸäÕEûtGmý«†g¾ ¿¨öùWí},¾Ï†Ä›tÓk„fªõžÑ »›&oô/L¿ÇGìü²•âBZmÎOw݉Úñ¼>–¶ü^ÝvšÉŽHk6Œ´­¶DM0¦›}Öda'¨šßo·é˾xWp¼311ïçdϘ9óÅ­Ô§?¯jò>*§¨¦‰Ð:’-+X}7¿$ÏL\œö¦nD™ðì¡ÉX˜vWŠñ=mç¡|'M}„ç‹çÄ_’øÏ£÷rci%Åës܃ ¨ÄÏ,n±±ˆ" 5Ù½6ìÉ6úQèÒõmެöó–à+q®Æ¾ùÃ$ô|Òî]¾öÒñÕäË&æèñ²€Õ„KfVº”DfƒŒåZóbúä`#öZ·<Ò_Ç÷-¦ªÏôª
-_˜lg˜¨Î>«ŠTÂ70¡ðW~—ÛC!<ZüòþÅ#(·3¨bæ:ߨn¢Œè½Ù$ÞÄ‘Îf;®Ì*=ËnÙ†b…ƒ´ÂVE¼Á<öuBgˆÿׯxî×_ò­Ìz—XˆÖ`©Ö4siÝÏAí+<¾ŸãÁE.Q˜ÒQqúÖDõ”ÏÓ$`dlÚ/BŒñY<xŽ%Á„+{æÔ¢´®³N‡­”TøTõ”V3Tj+"}âžÂr}©Xž\L$ÓÇÈš÷ŽEh®Š-xù
->_ŽÎr¦x‰|„ŠúNx‡<7M–/&×gaÅj[²Ë±‹4—À¤ÀÖO–|¾1_JSw{ðÐıDÃP~ÜFY­Yy³]ˆ:¬aÔ_|žjÓM+ý­‚0@îhÅtÙl¿Êgšê…µAbDå·Ôw¿þ}ûYÕ×iîBÕ*jòýZö˦ÏN’FéT/Hn±úÁÖ“4ÑOEìØœz~Ÿ Þ88‡á ‹w|q£ªšîFªãÆÇ
-TT>/5—䬽%‰”dðqÚnCÃ%Î4ÃXDmeß:#ƒU¹Ø•l1~à 4±GL§%ÕëEЈ®ìÒ\;ãÛ8Å+§êJZdº×d¡K©¡ZÅIŽf3zV#W•c[Û¡*_-߈¯Þ­—¶5k ª€º—,ìd¿»Ìë÷S/úò¢×Ž Nâ)uóÒY~ ]ßjÑ×Ù˜fšuž²K,tÊ÷“\'gy¿÷5­<TÏ4CUMà£Ægÿ3Q£8Nð²Ã‰ËzN5\/MØr®]SÝé}pæ§VD@™:]¬ÔË7>1ÌÈéC•'ÛEÆŒ!…Ù7aVì:ASQ×µ{|ãÇj9YÈ4Ö|m Î·*_íw4ø!D1 ñX¿Ù¤X•³ç
-t‡Í=žÝbóÆÃwî6ß"£“˵?”JËOP2RÐ oQo+†â1)©w†¦ÜèådîI½ÈZ¿VÍ­(e÷åû È"QÔü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³êÙ}
-endobj
-1571 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 67
-/LastChar 85
-/Widths 2009 0 R
-/BaseFont /NQJKQU+URWPalladioL-Bold-Slant_167
-/FontDescriptor 1569 0 R
->> endobj
-1569 0 obj <<
-/Ascent 708
-/CapHeight 672
-/Descent -266
-/FontName /NQJKQU+URWPalladioL-Bold-Slant_167
-/ItalicAngle -9
-/StemV 123
-/XHeight 471
-/FontBBox [-152 -301 1000 935]
-/Flags 4
-/CharSet (/C/D/E/H/I/O/R/S/T/U)
-/FontFile 1570 0 R
->> endobj
-2009 0 obj
-[722 833 611 0 0 833 389 0 0 0 0 0 833 0 0 722 611 667 778 ]
-endobj
-1556 0 obj <<
-/Length1 1630
-/Length2 6133
-/Length3 532
-/Length 6982
-/Filter /FlateDecode
->>
-stream
-xÚíVuTÔí¶VA!¤†”ºQº¤»{€!f€J¤SJº !¤‘RBpé–NI%‰‹~÷;ßYß=ÝsþºëÎZ3ë÷îgïg?;~ïFZu-Ik¸%DCrpsr‰€t4õÔ--¬¡pe)¸£µ"ÒÂtñ¥]!H(&c„ˆ€ô Ö ˆˆ‡Ä-,, `Iý\¡¶vHó  û_–_. K¯?‘›HÔbºyp‡8 0ä Åÿ:P !í ¨#$­¦n ¨*b–WÕÉC`×›"ÔÝ,¡V e¨†€°€là® Ç? +8Ìú«4ç —$dB8C¬ 7aO+ˆó/ˆä qu‚"7Ï (dëjCÞô
-ý-à …Ùþ¥€ä
-±µpµv„ 747Ü¿ºóW ªÞÂÙÙÑëw4ü·×?4@‘ˆ£ '€›ç&§ò&·-
-âàæâú¦mµr€ýj?ÿfýwí7ƒú­¬(¥òLS‡í_ß®¿}Õo¶
-—™_T†pÖŠ\5yo;_®*±®õv9>nO†ìåQùг¼Ï'šgz'ȶ6-ÆOûªå½?¦¼€i(À¥»¶Ô¯¡iZtq8øŽ×{ÿ”ÅŸÞ=ߟ”áÄ™À×*åí«-„µ·ˆ«
-¶¿2%lžž<îêûØÓÝ~x÷ý*%[ö+FQwL|¦H—lʧ†:¥²åoUoÇå!±:±àáWòž/¯åÞb°Î4Ћ¥lb<Ô‰<1 ËÄOƒ®¼Ûòרfß©J±¹–†ìÂSj–ìcÓ÷%:YÙ(h}õß]ôsùƒD“Â{Yûñà.™u
-ñîÉØè®­ŠÌ!s]%Öu…h&¾EÓu`ÑÀšHô^9zˆUæó~nØ@L~¢È© µíŒxzò”³÷‡ÇGe{îOtÏÉ ‰ƒ>¿•ûÎî«pOÄJl.{¸j =þ:mŸ
-)£ žŒ³,†‡í™œ¾ŒËoo£L>p˜Ö DzAªÓ×Ñ#âÞF]uãŽ$ULeçÁKEúÅÚš‘ÀíöPT›ù[×Mîª
-˜]M/„ª¡Q°˜
-‰ÆpJðÉ@{žÞ~~ÜiЋ“”¼—.Dteà¿ûÞ-k¤þ¬µî*a¶o¬lêÞ÷}L˔Ϩä|¤}¦GU,°~Ù(6®¨Ñçº3š!íÿètoSè”ÁˆD>
-v×Vâ#– ´W>£’ pHOê@ÙPZ¬v–BT rדôɪ®éœ9Jl¢–x–4!©a9êì¸w_>µúÉÑrd7S½êê@¯RUÜfÙúŽÎòb
-hÿTÍÎV^‘3/®ïN~®þÓTëxìKÜÎÈë:ç Ü‹·[^œÂKËé:ñå#”½{‰•Á²]ĹóZ^"8Ð%âô#!gìLrªqÀãiµª‘w×øÒ)j#ÉЇx>ÎPoD;j¦K77ZþvÖNhÍWu†¸6×Qõ³ãû<K+ûSh~„t‘¢bZ]£µªòB^(i;‡\àöƒsc|P=•‚þ»×ÃÍ %¸2öfÈÖT‚p‰Ïj$å9ƒb=ÖK³Ïî‚*Yž¹îgÔ¨&Dï‹“U39ù¥ŠóîïŒFVQ²ÃeµÂ)³>¼Ùy¹|˜’‘Ƀ º>—Ólèqû*ÉЋšI Þ
- óó83S€“ÔdäÒ@¡©Ã¦Þ‡N·Š<ìMm(qG.:µcºq)øûëä÷h%µaŽ^ hè$ &BÞ™*¬í ²stÕ|V‰È;K!¯­¢Á7ÙÐÀdÎ!3aFnÕ;´zh:ÛKÎkoÐJвH´øYíb"S“{ÂÃ=1áwžÇÆ/ïu’Ô­Ãak<%)í¯3.ò<Ž«j‰d|†³û  ìÖ
-d4} d䣮6ó胦˜ Ö¢(Bŵê}®¿€ ´í¤páÈœM¢t¥ÁÝ;_‹LÅñøŠLòO‚ä$*`"–ÑÑD$ÏŸí²û{Ÿw§Ï-Ô ¾­HadÓ$¤„óžÕ¾™ÓM4‘$rGQ„+œyh2¬2bZ¦pÀ¾f ˆº—õ‹o„ÖŰäP‡éRÔ§Õ±uay+;=jÞiãßÅQSr’¶ÎĘLORˆ”Ç5 ïUÒ©&Õ?c‹Ô%VÆ“ê¿Ä¥N!.Wo}Ü(Þ¾EÓC˜zyRgjDIdš’º+æ2éÉëDQÅÄqö­Ž™5‰¨FÉmE¢@©Œ’-
-‡æëðsÉÆº“Jµ$Í€‚*vylµ™s$a`F éúÀ Õ (X×Ñ | |
-=<G¥]Ü<V,~Uaÿs2˜Ñ³ßÇi†¿ÎަmõçV|:Ës7v1YsX’áT{ÑC®oßÑꌤӪdŒÅ[8‚l˜vÒ²ZE¶*bWÐèg
-¥ºŸ0ÞÓLs=šA.ÉSŸ‘<Ýkîå);”ˆú“7g_á軽çiއñ•üè$+ùN7crȵq=œb'Rpû|@0k\l7jKý'x6ìQë×.4c®-böB*‹eÕgƒZø›’Ç„·@®!J¸ö_|m`{sÞ°¡žvÌÒìbûz+†9•FPŽrÔ|d4HâüT£¯Êß…ÎC·kŸb…&J3? ãõ‡MÊ&í(g ['’½M2yR ;ß‘ñÄú1N\xŸ¹*˜¿f?c»O`üÁÁë!TÇÖÔ« ÊHÇÜÊ <ƒ­æ'á¸A”{í}ˆ¡zÆ, Üg¦kXiažµ‹È”!"‘P"SYà“éÉy’jcÿ|wÕwt/¥iˆB¸y½¼°¤6_|kÞÄþÉX×K—t‡÷ñ«1½›Ž`†L„±ÕÆ=w©5Vjæq7'a=È€]f 5ˆôeûºØ†õ³eÍ'!¾xdíZô‘¼9¿â(°Uâ;ò<„aÉ¿g§IQ•jy{oqäû!nÉÍ_6¹MªòÜF[µ.
-`¹¿œ€JfL„/&kË¢E§ÝŠÞš'§Û$ý°ì–(qqZÓgZÉÖûáfõ/xa”U9ïQÜñox ö­6Ȭß6à *¼Å[Æc]gŠQn=0oÏò›T_‡y5,©ïQæâJF•UIL™cÙìÂg4¾ÙɃ«¢q¶†‰ªž¦o~ÓÏ{ Ê««:Ç¢¢´PÇ>¼[QNç mh a ¸˜¨¸;Œ3ܼ nq%‡ÓÅÅ;7£Ѹú†Öëí
-Ù{¼&¼+¢Bo`Ïs%2º6\ŒÐC8,kn!+86¹ÕV°g;n„É©]1A`ï|œÜÂ)ÈJX¾z/ òa_ÈÊÆC5âg!Äd*¿‡‰9_ Üép;Å—ƒD\`Úª=Ô¶wîIЧG¦'»¢v2¤[íø#MûŸD…÷N‘cœvH¾xèÞó@!Ç]&óîÀpÁ:·€“K{E#íÅ‘ïðô…[:ÎçòX÷?f…FyCÎnà|ª1ü€
-Oéž8L.Ï ­2PnÚëâ*6»RMˆ{j¼YGÓ­µØå<Ÿ¨_Ó?ÜêžSN G rQD¿-‹Èõ~vÃÀ²öȉ¬Ü8ý1ÁüÓn¥"íƒÇ¸Œ/ß%Ü7NKˆ”:½>GÑ0­ ûQµMo]”ôWóé
-Œ¼åǰüg<ž¢BÉžmaNYî)ËLêò³}!ÞŸˆ³–xõê?þ"r¯èYÒrÈ&*aÜÎí–Ü ТD–*£|µð`šPÅ¥Iñ¢?¤ê )7I”ZiÏï¤`W*¶mªª}_®S›(…\9b±ŒÏ‹µWOT›ºˆ$6 »”£Ý»ˆ%ZêÆ
-ˆ`ž70'Š%â‹ ß”°ž®ÒìÙw¯]ÎÉ¿šÀ§ÎˆÈº¼Û¥,û‚ êïÇm…)‘·HW» +¸ü"¿ µ¼ûª;¥Ö¹À{ÆŒÚÞEÍ>:i¤Ý0A]_„3—·¾ÙžE9¹Ú¦»–w@b …¬ö¸b ,oiËkk!_•/4>œT’D^ÞÛ~“„³äRÈA.×=~|ún6óÅ=Á³µ0ÍãÁÖ–\^-Už&(
-–ËÓ»\IFÙØS­˜õOW_ºhýÐj-®
-X{$¬½‰¼û£@†rlZ‰âéžËŠ1O(­$¶ˆmèö¡àé»÷ÝõäIŒ]Œ_-ô‹ 8ßû ò%zŸT¶n76Gت”·& øì‰Ç†‹5ÎÔ‰Šd¾<B‡›&ª½úø×ž¶ɇÆc˧ œ?µÆ(_¹à™q3áNZ¬/ˆ]c24íŒË —'{.ö%¥×î§Çz̓¯ÛKÃ{u`‡:s±¹ Á<º'—0— HMq±tåRnC@x«Ôs̈W6ß>uä3¾õˆ;)EO4,Ÿj&l‰#õ޾„˜¬Ù¶³
-¾höânF] Ÿx'´ÅfÊ`\ñè{Ý?¬¹¶=ê3‹ XTÑW©(¬§ _Ee¶){‘@ù‡„{:ƒ!¡X¾BK ”G½èßj²¾F!Ææ!ÆØœÍ*ªÞAO^ÕîÊ…¼
-3Îôä¬I'4tùÀþÝ-CœýöMÇ[9èHïr}Üo_¿¿¨æ}>ç_`—Ôy[8¶.χãZð-ôü’Òg]}ÖŽŽl¹'4ã!DI½º+ju¹õ8å™òT°CHÖ‘_e‘‰ÿð:û5r€ë3.ñ4v—W”Ò]ª[)ïó–äXÁ—â݈HÞ÷ó§qWru?̦hÌ‘ê¼7ôòÀ…U^ÎK8%į v›AŸ7°ë1ÌÇÛtOn4
-ºØËc‹í—R°£36‚FÅ
-ݹÎ%:¢‰»•¯·0Î&SwªR V‹­C%#ìN^©Û™KuÓšˆ<~f‚â¢Ï8”‹qyœ_U æ=¢¦#fœÞ*¨4í¶²(‚柘\oi›–•`ûljYÛWʈ¹ºœ2Ž(IwŒpyˆ ¥6Í]š†}„¯j¾Ÿ“&cðÓ½ö¢õníio=|_{ÅŠ{²¬>l¦Hðãä:XàÊ£ånMçxºýu+ÙVDɲéõýV“¥bððÁÁÈ·©e—¶Ê]œjwÆ«(öe"æ}Õ„§8$‰,
-ùHaÒDÚ]|¾"`N„¨L=s÷ ,¢Á’Ú•¦QÀ˜¯|[Ö ¦§†IP˜þîqÖ*oûƒÆÆnåÉf,ÅÛp™|Ä€(SÖ~ž²GøÝTfÞˆ‘†g“¡Á‡ÚõÉ&®v^ó3 X]î)˜C ãû&5ÀI©[hû5¼z¥pOŠÌå£Cïêt}æyjöi!–†o\38˜·œá¦ÑU“!4+£+»×øúÖ¢ÏÇP~nd*[Çw;r¤Ûqôß5=ò–WÛÜFa›®¢ÙíÏdî2§Î#ȧ$†üsƒBLe-)ÖTùf°ÁÔ1‰ÇÞ£W¦¹t%g\ÿæðÿÿ'¬!®H¸“…«à¿
-endobj
-1557 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 66
-/LastChar 78
-/Widths 2010 0 R
-/BaseFont /IBMKRU+URWPalladioL-BoldItal
-/FontDescriptor 1555 0 R
->> endobj
-1555 0 obj <<
-/Ascent 728
-/CapHeight 669
-/Descent -256
-/FontName /IBMKRU+URWPalladioL-BoldItal
-/ItalicAngle -9.9
-/StemV 114
-/XHeight 469
-/FontBBox [-170 -300 1073 935]
-/Flags 4
-/CharSet (/B/D/I/N)
-/FontFile 1556 0 R
->> endobj
-2010 0 obj
-[667 0 778 0 0 0 0 389 0 0 0 0 778 ]
-endobj
-1347 0 obj <<
-/Length1 771
-/Length2 1151
-/Length3 532
-/Length 1711
-/Filter /FlateDecode
->>
-stream
-xÚíRiTSבª¡¬2©¤j=,Œy5„„H b,F$æÞ[’{éå’q ’ª,‹Øè’QT”
-«Š@Pj‰UxœH«X>‹T­Š€S/XWWéÏö×[ïœ?gû;{ç;›æ!gˆ l,ÁP‚Áar„ X&“rØ€<³Ù-‡‚¡!
-Ž@àVê4€» °ùBÞ2!O¡`,Í€#)jxÓ'H| ÒÂ8¢T @¦ Ô°–¬¡Th€S"0a`‘FÖNÜHkátÏ€!&…â$À8A)¬ MRT…þÒ¥½MeÀx:)
-xMʤR$„¡€`…µ#»Á¤–BÖÔâF³Z¡(?éÔ_ò
--¢1üÎÀ´i:Æ ƒ`J߈“Á¢ÓNÍJ …QŠÐ œåLöò78’.Aô0J5P)4éð$£ÐT%¤“:XQA±"©Äû÷¯LF(”ˆ4¤Á€ý{2æü“&áˆij™l6‡$’ûí)qJ31ªÄ M\žPà¸Â@!‡ˆŒxÀÈ
-Áz
-!=…a=¬¤Xo`J¿-ï=µ­:G\ÙqÔžž>ß|xKÛ¹­'Í~Ì¡?—kxÑð¿:ouþ9æT<þ Rñz©§DY£œµµÛÙâèF/ß'Ÿñ@9”4íRikË{ÚÛïZ¤5x?øÑóéŒsöµ«îqøÔá‚éÕ7o¼|œ“º±½×êð%ä9XLI,=½jýß;…WÆï‡b•˜µêÒÜ„}O]_Y©-·»Ro9š¦R™Ýu³ÿ‹Ylº^Õ×NáìO]h-¬” gÎ÷¹]f6ïû{˜cšÃe¿Ììï¤ ú=ÌïvIó²‹Ãb¤Q#óŽ–»(«çiüC«¨¶p]˺fm
-®çºÝ8ò™§•K¹'Óî-û—l÷×–Ý b½ î"úa_Åß/6›ös“$Áñ=Ég"oz_ª©?_âZ“?=ÑÒ(‘T.jœ‰u÷Íõpï7ÛI”0 Ô;­ºô…÷Õg³\xãc Ž }t½ðü¡8ÊÒ0|ØgAŽýàæy©;™÷#—}±;^“lèð­9aù~Î’½PdcÍÞÔcÕáÕÛ´†G‚Y{Ž
-êrìʲÎ>5~§*Å A­WøÆ§Ké­´õ—kN…Ï+’™x\à™æGŽ3¸g>ZÏóKHyÕpxíÁ*ã®Ý\¾`ûzŠÐ¡¯»_@MZœózËHw¨ÎÁYÜØoEï5ßþ¾ôo>{ÐYçéûÕâ€fjíùÿŒ®XÃà:«"lMœwmß8 jªÐÖ¸Ñ ·KAŠ/«»Eæú­ô‰;jiJ3m“´C/OTG³rºWœôñ VVQùbé)ÍR›i·§>.vxŠo:p5Œ__¶
-¼U±n¤|ÜÿNç¸.×õòpAûO§—ÉT²×ñò=ÉsU™}ÇœÌÆÎ’yNeú`†×–Ó?ç~qÊÔ°Éf¾Z}c«nÛvÍõJX´£–³9F ç>;Ûžg÷nvÁJ*õÔ´¸vT¿¯6¬d ÷ÈŽ‹™Qïç[îxE»—ˆ‹_ÙÆE×¶Ù–&â
-]” u¦Ý*Š?ŒÖã%‘yÊÖ[I›WÉjëïrØÎ9¨Î*êœß4cþŽM?º=Z’!/ÿr]À9~^FôY ¯7pÖ·ž Õ””}b°P\u 宸;,ëYàwïAïØ‡Œ,zsÆ\ÿ|@ÝsÚ·¬H:t¹Ct³e7­¦SÓXU’¿[6»Úeý;¡N‡Ú. ¯:ùïj+jã}Ò:F]B¼xr©Û׆äBNH—éahóªL=ÜŒ…8®îipi dææŠJ‚:¯ïV'Õ·_+Íý ’×SÇ[+÷ÍâDå²Zgà v3î}p%îÓo’«øý£çÅ͉W»?Y³ƒÿšȢ'2ÄŠ.Þë†'™‡ò*©5}쿹(ÿ/ð?Q@©8ix*å7`ÕŒendstream
-endobj
-1348 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2011 0 R
-/FirstChar 60
-/LastChar 62
-/Widths 2012 0 R
-/BaseFont /UBXAIF+CMMI10
-/FontDescriptor 1346 0 R
->> endobj
-1346 0 obj <<
-/Ascent 694
-/CapHeight 683
-/Descent -194
-/FontName /UBXAIF+CMMI10
-/ItalicAngle -14.04
-/StemV 72
-/XHeight 431
-/FontBBox [-32 -250 1048 750]
-/Flags 4
-/CharSet (/less/greater)
-/FontFile 1347 0 R
->> endobj
-2012 0 obj
-[778 0 778 ]
-endobj
-2011 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 60/less 61/.notdef 62/greater 63/.notdef]
->> endobj
-1037 0 obj <<
-/Length1 1608
-/Length2 7939
-/Length3 532
-/Length 8789
-/Filter /FlateDecode
->>
-stream
-xÚívgPTݶ-HPPÉ™&çÐÉ™–œƒº–††î&K(HÎQÉH ’sÎ 9#$ˆ€øÐïžsn}ïüº÷üzõvÕ®ÚkιÆs޹VmVF-]^Yª„p@óùž4`ö–Î(]°ƒ¯ÜEXYå‘P0†pP
-G8ÚCзÿãºP(
-²BÂÑ€Û¬Z
-JñDÛ‚Ñ¿s£`·n
-ÏÛZ€X]ŽyŸôÞgû~D4û$/‹½¸. ä«zzSç>¹ãøsý×FO 9œ½9zEëÅÌÙšýh­A”{ßß<0i×0ÜópBm Ûä±€ÁÆÊ€¶Žyîõ]º¡!$ÞáwN_f—l_R–sG"o«„ŠH²Æ‡•Äe9;»l1_¿Ÿ³wôvwu6ã´®Óp§GⳊ»`²…ù:¥ÓH›èyFXæc:>ƶµês-Ì“W- L¶ð?ZÍzî–C«‘~þž*Wæsûw²>´¸ivz ¿™ý¨Ÿ¥Y»Jˆ³Nb¤]?µ|+íý¶ ôìÀwuÁC%7ˆú¬îh ðÿj™pâNß ]ªXWþ·µô» eàa¾v߾ˑš¨ÕªÉRüheRƒx”¥ë¢°Ÿ4{ÑvÌ »Ê±˜Ÿ
-±’4÷S-þ;N¥W÷9}ø…=¯RI\ý!H¤+†K­…ItÆà;–4Œ²ö˜ÕÒ'LËÔö­À7£ÅÑÃ<AûƒÁmÑ |<
- Ê)¤A->}D¥~ÀJ—’‹¹ú%Ç⟠§÷î¼W™¾·à­!J½˜
-ÉpOPA°g:³F[Q:ä;FXŽgÇ[<àTÿLfvô”ÄuÈ=Žó¸tÎbqõ9·Ü`ñhäp&q>×bKuµìZ,|(~øps'ŽBfñÏ4åä+
-ýÈßvÿÁ„:£E[)ÊgD(—Por‡X—ÖÚl‚ð’’Wã‰Aà•löŒQp9iz² ¼ò¿rµ>;üøb€äX‹+«ÃŒZò 3ëFŸyê ¥Ëá4…¢I‚z÷†{.êvàZåÚY·îÒ_v;XÓjØI Lhà`sB>ÝÃÜ* ]Ké©!ûÐJ-B÷~è@·´W˜¸P¿H
-q[ò5Ùª||©¯xç•™µü~zÈ[oœ2÷Z-´÷dZÔÉ}'
-‘©-^¶ŠF€ê=Ù×£T/fôc Ž–Ä²ØŠBøbÊõé +䣦|59>,(^~ ›ùÄ(˜½ÕZ'~œÝ:|ÌI× îCh= •³KèÓ\ÉKZFF À„ÐZŽî°pܼº|ƯŠÝÓæMá&ÏzWi—‹[¸R'muB`ãM2ÕÚ!:ml
-Myn·Uš¨ohR´pz!¶ò³eÊ'ÂðΆ¨çËÀž…#ëvg™Å {bA¡š£6oεGe@â‚`#ÿœÐå*²ü#zˆIà}‘
-› W62 ­ö²ö=¡¨ñíQ¼Vs…cÏy–³^ŽáDqÆ'y¸éÕR|ñ ÂØKuT–ÕŽôJTÉ—•*Yx'.ý/|$÷lƒM‰LZ ¹J=(cÎØ\ýÌš_–'vX;¯žYGhǹ}e°dléN²ØCŒªÊѽDñÑùz „N_j‡ðÖˆFfí¯=œA¯]Á§ªp{SL«2o{T>!+;j˜ù•[K˜}ëiÛ
-m«_M%q/Ú©ÚƒÈ5§÷W޹RœÐeè3ÚÉ-»§Ü\
-)ÏptH—`#£&B¶–ßW3’´^­Ó3Úä DøDڌ£ÔU+‰²+Bzã»@Îaøãµnþé÷Õg_!Ü6­pqtpü¼îo5^Þï[Тž¯0¯xõ:”~;
-ÊBÛ«µi´þ@5QÉÕ¸Z¢Ü¥?½óÈÙÇY!¾ù#®¡ˆ0÷ÿ\åÀm¿ÐøR牣ìÓ>KgU%sbòýŒS„«ûF¤vmŸmà0yN}yšù~'’ê¬,MÏã÷/ÎÊÊ«»¸Áí)MØ-æ¿TÂÍ0Añ­EÊ’9Ä=Öo²=òÖ?ïí¹þ™¦={ÏÀ´˜›æ
-0Jî
-' AJc]eT5eŽtÏž;^óººoã`ªiÄ^?—ÝÇÛFÑ/ŽÞRI””IÈJú²–ôfn4<6Í?Æ©Œt.² ×~oÑg²ÝøN1³‡þ
-£ã§ÜAÇX
-›û“vµ!NÚ _¬DÆ.E•ba¡ü»¥Ãú4G@472YÓBÆ[ñ3vÇIÍLçu0çi8Ó]Ù“*%³0ÿ]³‡-â
-Ä.ÄÊpWÿæG=Z“K`’x­GÞP×4ßK³£E¦ïc=±ê}.2åâ÷ uÙT>¬Én®¹äJElåß
-3îÏ
-¾’xT ߣ1/ÒÅ&Ž®{ÙYjý‹=‚Q‹¯~"åýÈôf•zg\duŒnYñÙ£Á3\¦¦0!ãÝô‰]•&-ªçJZ¶¶S™Ï+ÓFjÄ[7EóHIÜC8µÆly’M,uh½K‚V[/Ì:¯fIÂC¢+Öœ’’ /ƒèåòF–+˜oYSîîL-éëþ—ú=|}cÙn
-JPðG¢5ý¶|˜Ó/vŸ+ª <v ‹ètã\NÐÅMÈF½Á^å–Ž’×'p\¦šÇÉÃ}IU«Fƒ÷^|åða½Cù“÷;^Z¹,›ãKc¥;Ç£Á…Xaî šA…u
-Í©ˆü©ê´ÂO=?ëò½‚'¹mg ñ_½]ˆËÖ É&W6s>¨}B w ‘Ãqþ4×+usÄ'ñM‡ 蓃øõ³g±v1NÆä¨|±Ù„—qƒB‹øµMf!2Ö46þ뻯ñ1aF
-Z_–ñG
-‰¿¬ŒTÐ5ªú±H–?⩼ïW§€\ d?)¤Š´…6ðhÍ)’ú‘§95¸(zQÉb˜
-Qº£Î{þÔg_Ò}z æi»“UE…yúÿh~˜ÀöýG_@GDºo…¹7O19æ}»¢Ùà⃗æ+)‹ìº—;Sléêíwy<ÎH4&HM|ëH¸öŽƒcñ°WÊ,…¥84> NåYs`Éïu
-4…„°ÄøÚ·«5¹O
-ê3êŽbk]‡MhÌ;n÷ao'ßlû†´Ø,~h¿þbÚpÚlo«ùïY›ûÙnŸ"G…E/áXE÷X7¶ÍxÈD›š–ó/Ø'uÊ•ŒZ§þ’l½WŸ«Û®J3 =Šñ¾ >¤Mgà©n` ¿Á(9§ä÷¹FV¹‰®
-,¶Ä²éµEN†’ß/…îÈ·Ê@¿ ?s$5SòžoÁÓSìó{þ`³ >§óIO v"‡g%ÕçÕïq3Nu;ó¯÷ü(g0N*òªv°Vì
-:ÐÈÞºOVׇ¨?ùÕÓÚ"8Ìc2ÀÌhíµ÷‘î~#üÃD˜ Ù¥"•c@#PÁtW!k¦8b0·AŨ‡sÄDòÂOíN•M¬EÙâ[5ê´{1ÛEz©ðù
-‘_VÏ};*-)NfXª™…©tt;®ñÕ|îþ$…WJï×ôÐusW-ëÛ‡6¸o}Ê(·|ÈâËNáêïÏMö¾b`¯vXPU‘`‘ó º=)$CŠkÞ»7GÜg4£'ØÌÓôsÀ7 å¡Q¡{?ÊÂF€œK›•HÊ8`Œ³õyŸ_{èz´È  9ÎóqܸŸ§AÛÊ#ˆW÷+æYFê$s·dü‹7f#Ë ŒQåò½ãHsrœQµ~òªº«‚Ç• pÑ÷€ù㬽RxÊcç;ã><‘†Gc͉áK§_·±>“…Øä¼­Z?N_ûZ´¿Ô]ÍU ÑÙxáTæEþ¢6e°Z…cDñÙo…GfШž;a߯ŸDSU¿ýÆpRðz²D¼«—°téíEÃ!}®Ý*iqp3i¿BÛÃfRZ$'}$¡aœË#á½8¾Ñ>4°;G,·ÈdëV®A2ëÏœ¼"ý¨S¶zš]‚£ÉHd4”˜MÁ*M6œüx®¯ï %{®R¤ÓÞßjÏE9çѾD©êÝ,@¾ð!Ïi¾Á´¼!UŽnÕf­–Ícxƒn¥¦êK¢²µ|ŒŒrgÏE~຅ȾªŸÙîÕ2FÈ4éF#fSö^âzËó;§ ©4\G‰
-)Åáùx>6rÊ3~ñ6@a”ìHœb¾”ÿ‹ß»
-áøëÓáo\h¾{Jý°ƒ o3³x?ÿÚ£ÚÙvȦµ½ó³˜í]:÷‹§XÛoeN»Oµšª8‘×>´‹Èwç­ƒ†q¯~VÆ;¬±¹n,,«+‚Y- ¼³—àf†,njEßÂkjbDòª: “©Û˜Íî”S¦$wb©ŽX;Èù­¯ŽJÈäõ'%aÞCÇm, b±ämýùÂÏA¤l_~ÕÞ­ìèÌz²V[Ûܱ†ÐZv‹dÅ0~ø
-P&Ùu±/àrS)·&ý,£ßâþöê }<Ü{q“Ÿø´m%fÒtEGú[çØ×ŒDé’SÒ‹G¸‰øþwõm™ðž7ÎI×–D'lPÏv™¯mM6¾’j»+J;Ô8’&Š˜È.˧¶f{t
-á3ײî—î]dêï¼Ø.êçîvgžØý0I‡¼=“ßZ¼×üöÔ»g—7C6Ö `Ðlç_mYeHj-6;¸ÃµÙ3ÒBó-£¦$ÈàÅÑ{˜NõÜÙj ;N|s4¨%yÚ„}r<Ú»<íÙë2Î÷Ÿ:} ³¥_EdŽU¬‰“Û-y“á‡CFä)‚6?åG®¶O’W†#åÄ~¥·’mou²<OÃz¥–Ým^0? "i.#!ÚSÈ òýÜ?<<Ùay°>3­’XãŠä9ŠL›ÙàÃò/e3€DÍÉy´ïzÉAb5Lªj©»ü^ ¡ÿA.!屄6]ð{ùÍESÃA¡µ©*mßœ¨óçѳd©YrÝ /¢Mûx5ì,½Ý"¶ËFˆ z£=Ãéö[ë¨7XÚtÜzL9•°.n˜ É…)FŸÀ#tžßi®1zŸ™ZÚkÍzWžŽŠî3±Wì>ø
-ZžºŒíަ·?KK}HÂIÞ]Žá¦ÒhæE1bX¬‹w
-OEÚ˜.è¯jŸ–ÿÒéÞª·ë¾*º ÍДA”_¹øM‡:€ErïS(BÒÎq¦¨‰fþgÙ$=¯gU6_­ìT猔LVQ*
-\e#lˆe»VkÓLLR¨ôß3Óª:rÁX¿ê‘ä*½^€ïùT¥=Éö£ÊÖ¨›ßSÖ™öè¸+¾ÓüpÒÎQ•åo†Ðx(— å'â^:F=íÔþæMÓ¢¢eáÎþ6ù`-Z.ÌÑCÔ§É}@Ïâ„çW?or^Y"°“Ì?·’HÝGWj„­A5“üœKŸyT>bZ=’} j<Æ¢`¤}<Áú`•Ú–äE@BOp†kaL4ºl–1Ò“bù[¨$aÈï¡”ô+.|‰úª_ÝëÂì/Œâõ­ûŽ[QO[oX'5×ñØ{T¥ Õ‹Xí„—?ÿb_Ûd®|C$z&âõSÅ‹Ä@s’ÏØµX‰4³ {¿®ªþmˆm›ÒÎþ§Øžª€MÙP¢1=Åú°Ø•äJÔI¤&ù¹v•Ħ`D÷é âÊà2l€J )Ávy½þKMƒµaïü Û{Ì’Ùæ ´W""€µDG¯çohSÂV’Ù)àøP˜9µØ{LŸv•Ê}ÃÙH&ÒÁ4ñ
-®ˆ» ŸÑˆ:Sœ-0öc¶ª¿ÜÈ™©?YtÃÅW’t½ ¦ºè3WŽïiz ž¶uKÎÏf
-MÆW™ØdæVÚ„ÎG?T¯Ìdão7ù½=ŒRô.\5Úk”fGj,¤FÔDAãü×îðÍN›ÿøê}>„W0ôÎÂ4ź]|hu|éøªŠ$Ò<Åß7d.KÔ:Uoc_a°ØU?`àe>5É4ë‘÷u¦ëI_h÷¼Fh=­$Ñi~ý(¯Þ¼7u¨1¬ŸK¬½xIq1Í%&Ä®j(‚÷®Ð{+WÁ?†1²9¨‚!»][! Ýé¬3Ùz…c$âJ»åj’‰U¼–HËïLMÓ‘½2{ùé 0h4M¢OqX]ÐõÕk¯œ`!ÒøõÕÞÃö]̶kknQé„×–ÈkF‰c!¨Ïj;wSôˆ„ÛŸÓPÝAÞ"/’ÃþBÉ•' ·?LËã;™»ç 'TX<'a |Ãôú£‘åj@ÕÉOõâª'¹?®âÀ­5iÜ…‡œk˜gŒZ ‡¡î¯Å½Ìôd,E}ø¿-Í3v™2ðo’E÷¼ï‡?m€!™û?/~
-^
-ÆßŠÈ7­)÷QŒCyãd
-‰>ö~ÇQUÙçO}…¯Á†á4Oyc»žžÛ’a2™%«}!ð¿|þ?Àÿ
-endobj
-1038 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 36
-/LastChar 121
-/Widths 2013 0 R
-/BaseFont /RNPIWI+NimbusSanL-Bold
-/FontDescriptor 1036 0 R
->> endobj
-1036 0 obj <<
-/Ascent 722
-/CapHeight 722
-/Descent -217
-/FontName /RNPIWI+NimbusSanL-Bold
-/ItalicAngle 0
-/StemV 141
-/XHeight 532
-/FontBBox [-173 -307 1003 949]
-/Flags 4
-/CharSet (/dollar/hyphen/semicolon/C/D/E/F/G/I/L/N/O/R/T/U/Y/a/c/d/e/f/g/h/i/l/m/n/o/p/q/r/s/t/u/w/y)
-/FontFile 1037 0 R
->> endobj
-2013 0 obj
-[556 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 722 722 667 611 778 0 278 0 0 611 0 722 778 0 0 722 0 611 722 0 0 0 667 0 0 0 0 0 0 0 556 0 556 611 556 333 611 611 278 0 0 278 889 611 611 611 611 389 556 333 611 0 778 0 556 ]
-endobj
-1034 0 obj <<
-/Length1 1166
-/Length2 8309
-/Length3 544
-/Length 9124
-/Filter /FlateDecode
->>
-stream
-xÚízeTÛÖ-–
-Ìj +àsÛ@C£†Ùþ~ÄA¦0°DÂöŒkX»
-r¶Cž! s{¦îâèhY¨ .Îæ (ÐòyeÿY(îàèá ¶²†é4Õ´é™þaçååšyü…
-²spü£Ò3…4r~^´Å¹*–¦’`Øíé¬a0G>VVGKSÐsŒjÉÁXéŸ* ±w°ÿƒ
-øC3 °3Èü¹)Ö¿ëf qpƒxýGØ ±ø³% GVMØÉ$+ñ?ÉÏ!À¿bV ›ƒ—r‚ÜÍ­Yÿ(©ááúdÿ#l
-±ðörtpZšÚAAÞ`KÐóà5uaÎ. o¯ÿø÷€h6‡Í@VÏÛð/öç0ÈòsES˜3Ø¨ÏÆÂÆÆdûãÿÏ‘áó†Z8@ì<þ•®dj²j((KÉË2þ½÷f‰‰9<S2³¿ã2s¼ç~vÊ3#/7çßÿ©Å_:üU1ÿÏ:ÙþE) ±t
-ÝØ)[7q\ä딬Ÿâ}2Ç”¥Wº4BâÃ8êÁø¾d7z»{NÊ/IÈKsËQ•÷fèy eì|Tù^N ~“`³ IA“k¯¿¥•ÓC«?¸Æ-oÃ1™žéÃàö
-–ÀªOÌHt‹ßñ}n縳.i±¼«tÌå–ã4t\dêÍFÔÏZïÖEη2Úú`¿Lè-вFsŽ]Ä!JÞlø*@çìwÓ>ׇ&ª©æˆy²¥@¥]kU>=­rEÞ-çŠÇ™°V£¨ÙaQmL1!h²R%^×àj¸Öl;ÓÛì^R‹
-8ÆßÆûOvj(øÏñTÔ¤\¥+Ö#2\…¿n5;ÿH¯i}¤ß®£Ñå~º9$m`Ƶ'4É)ù6b›•½.†eC[•+ÚËG}*”µ>A¼­dÏGæjøf¬%€Ê4ìªÉ$›Š ÛwÃPoÄd‰÷ú´ÊÈÓƒ8~Gžõ‘÷<Yqðæ3z©ÞÆ 2[¢ÉIJIH>Èe¦_h‘Q¤Ç‹×g\<©‡3Ѿ¯òJ­’ûÁ«‘e‚gìº N¦bŽO+ÞÀ“îS­™c­Hœ4ÞCØKH÷²m:§dÔ’ÆC»t½€!…Âæ©.—IóÉ^!Øæ¾ÔD’ZÐZ¢˜ÝËMïQ•¦ùÜȇ®CÄTÄZÅ‚zŽz­‹Ä#EÄ7ÏLm}.éF?:ÃÓ¬v­Ä3*ŸH“¾˜sLfZžÓ$Vf‹B4®»%DÚ”6òÛì!Ó7ôRI¿S{ŽØ¸Õü ØKÒG;ë¢Od€V@Sp¾¿–_
-eÀ_±2äÀéŠê×Ü÷qóºÄÃfhÙzÇð#e6Pw=3vd[¼¶#mýç;±ýO߇P÷LèLI Š `ßy·bgh¶£ûô•À|ª¿2Õ 1äÔ@ßX ˆãàç¹ÒH_Li¹=YK/0¯§E ÒÀ(èù\²ÈÖ«:˜ðCÃkX[ÐBf µÝ÷l¼
-¥ô€áëÖKŒ× m5X€>ÚíÀ½ æØ™Ô„(QjiVJÒ˜˜¢`ßÛCÄ9UoðzÙ„íÖðWvªD+ž
-VËkþy…Šä]WzÃÈ”} ÑDE\Mó½}º Ÿ záuÙ Ë
-Ec'b£cƒâºb+"±¡ežê±3<}M ëMÖM6À–è¿ùùn¬¹˜¶´30ÿ= ùƨÔc¿¯¸§šŠQ½¤
-cª†O\—aðIoìì}¦êZzPoë
-Û¸Áü—%N㞺°Åøjâ6c¹×tÔ¶­æ§dÆ#ÒÎIî!QLé=+£oì·Ìl‰Hžñ EF˜‘gr8™!söw’RZ¥÷ªëEËpÍxé(R”Iã½E£"ŒÖ!$ÿŠ+3þà\aø-ñ^Ønàêdb{Qɰn«D75¡¤Ý`:4ä¾é-TËu—6"Ä;ü¶·M9—sïôñ«£#ÚO1èÒ{!Ìá8„‚_Ü2ähh.‚LjÚqÍŒè• hê1€RàZlƒ‰N?Lä&ÍÀ÷ÝÛ@Tý¾‘VÒb\0í¡ë0ÿª…É0N‚%»î•+1¶•Ì1ÁÙ7Lûêš_Ô>X–ÙG]td1KâƒÑŠQ¶SF$‰·U¥8:ï¾Ó5Ÿ½OÜÇ'vp¦3gGp|wã›À„J÷Wó¯c¶LLËFÊY7pŠäh·nK.q ¥'Œ/®Â9bއ±Ïw 9_2ÇÐfÊê¶VWdÞ·¸áË™w7‰œ"Óù}R4T˾jVø?âó~:Ãí1~uÊæ|*€Ó”ʱŒ«HÂ@pÎúNšú 7¹á8[³?p~¨y4Ñ5r€»ö£õ5C6Œæѵ,âM˜“ÕQÓ8®‚ùÐùU7 ¬Ûþ§>S+zâŸ[VÑUŠ<¥< s²Ê&:Nð )ÎIJÀÃTãÃX×ò
-ÓsñŸ¬5ŠN!úŠNÌJiJ¥…+kkŸÏÆròæ¢ß ÛŠ)Äxžcé\Œ>Ð~í.í¯râ<èªëf׌Óy¬VÑ‹ÌYÝn§ FÈK Rd"1f…U´†ÇŠŠ”> ¿¬öH‰Bç9Ÿâ‚â%¨„$‘ûò$,gÊóMV0êôÈ­ž·ñQÔ‡‡´
-åƒb3èu¯ÃízSHø”Ç!=ÐSV«ènÞèõÐ`åÍ’ª;qg?Ìj†o+ÌÊ€/F;=!`ž· ÀË!¢Ëþiú)*z‘ñÄïø.ëœØ½ 8Òà4AgÉ—õ:fÞv\JÞ
-L^e°ls›NäºÔ§ßýšR6úù¤Û°éµÁkkùéÓü½I°±U-«a¾rBïñØ;e9Ïx¡‹K€q("Ãßj¯mµW.~ØÛüÔÚuf«ù)ýûU=¼?R‹ï7éÙ5ĺºWéŽò¹ÊaÉ[Ð4Œ@Çrßg|óy¢X–%}ƒ _l3÷ó*CÈz:â0ÂÈ(PóÇŽZÝô†vÌ£1Í5KUFêçöóÉ„¨Bß¹DóV¿ý\öâ•GþÐò$uI“!š›*«±5í1ÀÌD(©u›P¹©üò®¤Ãóãõ€2^DõÚTnÀo—£AÜžÈ77lŽ×¿2+ó33£‚…VØsùÜÁ&ùK
-
- ×yLˆßº§(Pœ(4Ä3dBmÝkÇ–?v7‹]çì£ PܹïÏ›ËèÓ}
-ð(8ôðY&Ò”}„yäÖ5ð±KêÑ&Ek)Oá†x°ñîs=BˆFÆðïDœxѯÁÛìÍã“¶‹]Õ¼ô½Ó lIÃÏ6<<*°OÖehÞÁ»GÝ„1S¯¿–Z
-4; ÃkÊZTwïG¶¾htû»Ï4êªÖR¡Þ'­ DIn>˜Qâܤ¹*'_I¦äÆ6 ¦æ>»\<º¿UQ, ‘baà&#ç^ËmÛÝ[oâù$Ç©e$òÔqµ=¿=jY ÄPs˜³ûD<‰™*Jß–¡£fo,_mSBºØÉ¾ z ªS Q_øi¼ÔR@¯KFÀ®+µ™øìiåÁMwš”¶µ<ñiÒ^ìjg–Öëã~f쇬òÑK§kY¤Ó
-
-j¤¹‹4;X£O<eïc¯¿ðK’s…]䆎sÇï#ó ThäP•©îyÙú¼Ø ¤× ‰"i§ ¿wç}¨Þ‡ø Û¾yI¨A¤ÚáTŸÑ8{Z/|&jêãõ®Ý>]ãPò÷2× EQà{‚°rëáÞ8,~;;ÁWâŒÄ¯Fõ9ŠCá•
-j[ÕeÀUoóOõe¹#´M7îL°”XËzÛƒñ…Œ‚´Wvû¼‰¼†Æ«<¶eªhYÃ<ÀæþÆêè²o¦ B‹Ï¯¢:YAW󹄛é_³óöÛЛë7.ï.¹m{(Az>oɧÊé^˜ë@Zc—‰7*wÈê
-›»WVö]°dÙ®ã\öý™fÛµ‰t9¶¤V}îñìÝØì¾Vᱸ¨Ô3Z( -ógWÎà iÔ“g±Âî1µúnG¿Õi/ Ö®aª\z6wH5VkÃÂXŒYg týSH}vˆqé-ÂY/Dbø¼ýdyP8s
-$RÇÌvé…h'w$K´|†·í…§™;Y¸ñç?óg›+HGÓðF~pQD=YwW´äL;v£ˆ§&Ì3p}OG_½¼¯2y¼¢@Õï·URåo<õ4"¶ÐþÁ€àþ2½öÝCI;¥ €)ª¤ÿéì¼Íµ¾ZnùˆÛ„œß~‹øŒþ—¢@™ðÔ6!†%ÿKu9Èš¸ØA`ŸÊŒa¦ ±¾!¿¯yÙ´FmîLRÂöqu8.ó‹j5Žó®Ö?ÍžÉÎÅ¿ïÅ4‡ôc…g96·¼ oìŽ~¬ðBGÆY6-¹ª…M6õÐêY Z`–ÄR:´t‰¡¼JÆB ÂP™\µÔäœöF-<u¯Âû]ÍÞ¨6ÆÚÚ”u0ÜôæN;q3ŒN³Pq]Øw'çjªóMõÜA0”‰R‡Àâ=ùé.Ùèí'wÜÒÛD†äúŸu®ûÍ£\y6EGíŽC¾ô/èÆbIÝ72Š#ÜrnTözêñ k7Ób’Q|{wy™ÉsŠBd‰êqzðõåñ·D‹,j1^U‰pðá—‚[vžgVD#vR…ôz¤uí3íë œ¬ûvªÈ¤©³q.ÑA øƒ„£Â«|Ìon<oÌaJ‚P4„¶@“ bIðò)R!%|rÏOì6&Ö¡‡Í
-s–¬7ôäP"sÌœ9|p]\ÉlfÏ'ªv7K¶iÍÕ$¸Áî}S[ÜVK cب0D×”ê0Ø5ò«¤gitËZhg7ñí­¢•dÞÚÇ_ê¶~XD¦pô§Æ%=Ñ*F꟱–⯹ߟþžª+ ýê»\~d+Gϼ%OÙU2ª©³g(÷|˜KÞ8åº~ý=M¿¨U;µ
-ëAv4>ÂâÉb[&èëÛXåõ‡ R'䄉¥ü"Üñý"É)¥F{WqÜj³‡h!YNéðˆ~~ò"ÙÐ5Œ©»Xçà ‡‹-Ýxä%ñqÉ>ÿó1¹rP*#7
-¶²çìÞê’ñ¬Õ(àmÆÊÞš± ~µnH¤a0³•JT½6‹’¾eËŒL£õ•ÃSóM <zÉÞ7B“Ü¿‡Ì/ñd=£TªÂ÷!Ö«7#.lG‘e‚ª'6;?3n*Ìö{<^iÿyŸÇ5½ÆL ž›4Ûã6P_††
-Ëȯúô$ šü=Z¤ïs£öjïM ­È"±óBc!¤d³£©Ëb”ű‰„g²@›€³y‹u
-¢ï,Ý™Š£°ƒûüµ±ÒI‡c&”ü¼ün®'ñ°~ÅH¿ßýø ‡é+RúŸRû#Ì»’ŒŒ[È1Z‚«„äî<úüEþ„þ'¢DEPˆ¨½|”‘s¼j#U(»1é·–½,ÝÓ4Ešç×Ü WŸuÓ‚S{:D¦àæ }ª¯ÏB%Ö^‰$—Y –Œ8Ǹ %³šc&h˜!ç¹ÙG£ÀŽ–+([;3ˆý¡ŸA`´ž°ç£G°øªlV˜SÞRÿS”W~V'¦—,É*ZÊÿëH™­ >FþrRZ§³¹™ª$@!È¿Æf'%N¯Íqg'á4¤ÄÛeù+¡D‚A¿x0J1»ôÖ©Cøp:©¡Ý69‡Ñr;âš>ã|º‹Úˆ²;h“Ùé gÖÐŒíõÒ½Ó’iH)è¿iŸö&Iû RKÈÜ-‹Åx°VÅ Ec°ÖH·1ÁïX™hF¸íµnQtCç¬``*<L5f¾ž‹•3®h¥ÞÞÃI‡€Ú;¿ ñXú¡}JlZaÒÝO—˜‹s1ä¥gH—Mî\åœàdH
-_„á}<É!‹à¨'…K^y‚ë:­C†j½Åê%½2šI‚£Dϵé¼H
-Å2ÑÈùðîì”í êzTóM¥ŸýØc¶ªáq_Ø™
-endobj
-1035 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 2
-/LastChar 151
-/Widths 2014 0 R
-/BaseFont /TLOFKI+NimbusSanL-Regu
-/FontDescriptor 1033 0 R
->> endobj
-1033 0 obj <<
-/Ascent 712
-/CapHeight 712
-/Descent -213
-/FontName /TLOFKI+NimbusSanL-Regu
-/ItalicAngle 0
-/StemV 85
-/XHeight 523
-/FontBBox [-174 -285 1001 953]
-/Flags 4
-/CharSet (/fi/quoteright/parenleft/parenright/comma/hyphen/period/zero/one/two/three/five/eight/nine/semicolon/A/B/C/D/F/I/L/N/O/P/R/S/T/U/Y/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblright/endash/emdash)
-/FontFile 1034 0 R
->> endobj
-2014 0 obj
-[500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222 333 333 0 0 278 333 278 0 556 556 556 556 0 556 0 0 556 556 0 278 0 0 0 0 0 667 667 722 722 0 611 0 0 278 0 0 556 0 722 778 667 0 722 667 611 722 0 0 0 667 0 0 0 0 0 0 222 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 556 1000 ]
-endobj
-1009 0 obj <<
-/Length1 1624
-/Length2 8351
-/Length3 532
-/Length 9216
-/Filter /FlateDecode
->>
-stream
-xÚíweT›ë¶.R´¸;A‹»Cq-î H!P¼x‘Bq)-îîPZ(VÜÝݵ-íº{ï3ÖÝ¿ÎÙ¿î¸#ß;Ÿ9Ÿ©ï_˜è´t9el V E(ÎÉËÅ#Ð
-°…Â
-°»¹8½}?’¹ÀÀÂpwCìþ
-~‡9Jéá0ÚšÖNjì¨C«h">Ï—xA–DM ;IJ¶Úa¦1ò“ò¡%+#TÅQ*Ýçæ/ì2ë„…ëZʃËtõJÑÛÂÞsáQí4ÔÜ0ÑPÍú0¯mÓï>ב'ÆEO+€lŽÑŽ£R<"N~øjë$/:…ÈŸï9šÕÒ Úi¥U6-LXzI"ø`M‹ ·´¶W¨‡CÎV3“H~ý8!^䥗NW÷¶ x¯X€J|õFÎg/H&•À…é=³mþÛÖW­6Þrm_C‹a¨©³‹ùTá¦ôíuD}:}ƒ_¢ªÞ•ô¯Å’wši•«¿Ím9ÄXà'wݪÇk °ÚåÎæ¹ö}Ç>ð}}k›6˜Qú,E´¹âùbîœÖê©ÑX\®ÐÏÑn6RÚø`šùOÎ1j$§^•dŽ›xNæ­Wb«Ž¥nYO׃jM’D‚Ö–‡a­Û¹Çv•ýUOtñ]}Ť½°¶¥¶ãž‹c&jžü õ«{Aî.5ûÛd
-Ž{âA‚ݧL3bü J?ÙnÁ›C#ŒGV:ÂûSÅŸ†¸XJ½·5^9%4•Õó’‚Ò¨î_Zúäu¼AÁÜ݇€,23sËÛZÉzÎgIÞf­35TìQ›Ã_ ?Ôn¹)-ödÙ­¤!á-æÔ‡$J›½Àzö‚õ˜»‹Š)Nü‹:¸¶’{ý[}ð|ͯÍ*Úe™à€\‡v,­:j±ªÖÙH’R<[ݧ¹}I¡ÊíÐRò´hst4ý¯3¥{Þë— à e¶A¥ÆÈ)f!ÁîÎÈWn];FuéÅTK&|Õ‹æ¾\c…GîàèE9#½‘lý¤z‡X,¾t8íèëàvO¿šåj›@’ò»²·1Z1–ÈÈWc7Ü^q7÷õÛHm®#Í4š‹9.<qÆ–7]Ï>é"घ»Ž;ʆW=™PNïÞmMj§%·™Gô(àØ/õ]-÷'?E4œ¥ºŸê ЗBáNIV}ÄkËÏþÊÄi¡þy×°eD
-idguÊ ÛáÜ‚Ñ 9¤ëË‘'jM.~×ÿfêKÃÔŸ’ SêkÉ'ë,Fèø.JìíÜÎXѶ%Ænvâš’¤c}å¹H×­òså|Îêœ “SYÐЧŢIŸ1¾rl_—Á¨©*GНú"ÎùfÅx®[áqdÿk3@ÄëÛÀ Æþ´/úÎÕÇ·þßì/6ü-ZœG%Θ”ékL:õÔ¾²u9·2N&°ÌAéâ*ê&\D_cŸºâi$g¿Ð ÿ
-grØÝÙ)[¸³Ø´ÔÍR½§ƒÔî{•wåì>ktµZ±œs–¦ÝÙb</â;ÐÂ{«zÕ!H,Ÿ-ÇÞ°8+sH”>5ýÕ‚“ÈŸ $i‘åqHÝ[óÕýÒË.驎xÝdïUf¿K KÎZ§4ÕÛ&eO°Ò`+sDë ‰%ÝÞñ!zSµ‚Ðëâ̺r“–dø$.³nש–¶ê<±HƒD8ÆïÇSJüZâ =ÆôÒªµi3íü”‡ùµ^Ф9Ýö@»Àø†Ð­á÷˜ò.ø wœô/[¡ÄŒ\~Á‘¯>3=Ó”£½—©Àé¤YEp¢` ‰¡QÙ¨’ºa®zżžÊ*Þœzgç}¼;Ð#U’ýé
-#ÄÎÝSDº“l ¹ügTù®„B'æ|pÙž2SXÁÖ =‹ç~õÎK–DÛ+Ïk¢·­ÀICÇCÜ0SApðäcZ:³ísž÷½Z÷•âKíÀDÙl”osúòÖ'+˜EŒ;úØÏb ]RN;-¿Œº(·]({5ׄX’³øö÷ô~™Ÿ=ÇŒpy¾7rB>Ý#ÛÁr{Yƒ©3ßrƒlšê¼õ~±Y¬Ø)Õ`qyûT±ŸIJ\^Òª2¶5ù¶…ŒÂ¨ÆÙ½C+âa¹ÜmyüÊ€=YÙGzm’ÕŸ>ÖÃI)ª~•¢•¾·wZ䥗QyyŒRÂfff8û“‚
-Ãz¹Ÿ ËR@T©k¡õúš{þbl?Àí §<x0+NúÜá„ ^ä•Q½Èå‚›SHy­d³²šç¦æèÃþ¶ƒ@¡®2è©^ª\ñœq>Ž( ±®íKßéÏÈ(A??—µåæ>ÇB¯pˆœ`ø$éLæ&ê3sRý@û²J¶µ»ãi†Ð‚ï–Ð0º7ñ¤‡>–"OhIåà"5àÊtþ]ÛŸe»ÝÁ†UyåÞå¼ë\_¹j†œO" o‰¾é~iŒµ
-b âÔwyu«•¾Ö:°N¶ £Ñ(ðíî vú¬v¹f~)›³š+|ØÿÖÞÜ.ÙVÂ7îEŒæ¶Ü‘™î>ÏGôâ“!çžûTEqõM7<'€3È4³kÎ}$Án0þ¿4âf’‰Ã7nÙ8–ýµ[+–Ž˜vHÁ9cœÆò©R€u·ÔÏfɦŽoEZö›o´G»¥Î¬-e±ƒ^, ÃÂìÀÝ,} Úa:Ü]7Щ ztŽ¡)—ÏbŸ9qà·x2WÐ{ë•Ú'm£èw/ªÌ÷3z=çØ@ð¹ºæKvYùÝõådav£Û5ö#…C_«tþÙµTKÉ/ô#oÖÞ@øžè´Æz¹‘H4´DµÀzGÔ A~bDy›Ö‚×dÕR´¿ÍÀ(¥H‰ªØÏŽ¥Z öŸ’>»&,UïM6ꑼ+‚C)iÀvw®_.Fzõ³§r$b¸y<¿/}{X3_Ë®~ª¯m¤Z¨}?äÛtMðí® ôZks"ÄN,ˆ¡8ݪ–“§is«ú+|L]éþ,íC|O&qƇWÓ5ï=
-•µD¬&TÕÒ¥­Jäd[•㯽¹Ý¹f= Á¶ç zð /¾N¤.‰'Ÿèe×1Q f&úþ ™»´9D¹•”~V&qéEmÁVÌuedµßØS±’˜¬„ë©*r{~œBU‚ÓvзYOaM:Çþž“IÄ·fùH©GgöÊÊr¨|úíëÉQÒtÚèˆ1ªÓ"u=ë'/¨c,_B½˜i$8K¬ºßáFK\ [²'H9󛱃aóM j?Ÿ3Ÿgµ7:^
-õŠ+/‡)Bä$€¹‡Rh¸—þUɼ™9"j²ŽP¥C«ÃȬL‰Á «mËùüˆs5 F¸°´Z+Ç*
--Ëðš±ÅwWë+Š'Ñ5ḗå–33Ь|‚±85ó)PD~LÖ@Lx׆z1Â
-$¨éå,3£¨{Q¾Qê5¨§6µh¸‰Üüß <ü‡ŸP1[½;džFoU—%÷UÒÞ,²Éš5Vo1
-Í/.qù{„l7LØ
-¯b(æ¨@<¨é· ür±Êü%†þ0SËÉ W)}{¢ÕÜ„,§5š{ºì1Ul‡.ÈK0ð!–ÉÚd¥¢q\„˸nûËÀ€CÀ3œŒ$‡e=ÆmX¡ {?ñ–QJ~¥“!Þu×Mè8‚ΜƎ²G!Tõ„¡OïP5¨ƒå&z[4ûDeÄMpgÝRM³Éeçû’Ìeò)Œéw—wtæP伂Ø!Ô&ÝÃ+Aÿôn&;³‰_ÊŒ¿jß÷3–4Ó¼k7vQèÑ7eäqU½~¥Aä?D>…ÁC†_¿f&e,´ù<ªéae€ò@íÃléüD닜’æÇK’r!¥0» S¸ÚBtü‘¥ò7>:}}è¶µUÿ̶gG;«Xô¼ïp?Jy<Ú¡m»=á}2ö<ì Îì,ç;k=Ÿ˜ rZޤØFlù@IÜxþ§bÓ§ê<ïÓ»¤ü¢¢yx¥å!‘9óØ3D—î¡Js«ú¡ÎëmŸ˜º'AS[ă=7Ö»ÆE|§s"ÒeÁ 릅Ùò§•#ÚÖµ…©Œùn±Ù\KúSÓÌC¸›SrÜ‘âò¯ƒÜÑçD“RšÙaŠËUÊòzäYÉs'¨‡mx˜b¶ž<Ç!ÒµgÂE\™$ĽÞÊ!¨â+äC-ȃô_«žF͸V†¤ÈŸÆóÐÓÁM06éV0Âe‹80º¿£ xg;³à :3³4b"‚˜ø5ÅËQä›é¯ñLs‰ï­‘w±œÃx³ôEeßß ¡8-«á)‹¦¼¡óÖŒRDÚÔëctÀ—Ç›½ß.Þ]R ¶¨iðÂ=8§»5(e¶YnFÎÁÂA·é Îi·XyI
-‹u1+i\nxíÚX´Ñ\/ŸÈU?‹yunæm„„¼ðü•š95â"—tBiE½Þ»qVzÜ(•¡€˜—¸pCüCq^F=‚$@hoÚ‰º?¨¼o˜D5B||Ǥ?ïR<Õ6µßOuA«_Š?)°Ø+ê‹ÉaÄ%ÎD\ïÅ8mkÉè4¤Ò—•ýÄá):‘LtyøŽ‡8Eè¡t÷a¹]óWô†]GÒbN¾Æõ„0WÝ9n·_ „ öas‘™SvF™¡nÏieR! ¶Ð¾Xˆ¯:·¬][Ó¿K'Kmh‘fÊìàÁº<6nõ«Òá U¯b•ÊVµ‹=ÙJ:Lœ][E Ìu4Ž&Õð3Ö“*IÓfóZ¬‹0Ñ›ÙÅ7Ïö»eZ7Ù Ýz»w²d3j¶Ã}
-%9‰üÅ*rêTÈ€¶³qXõ¬ ßyä ˜ib€ÞW`ÆW‹do÷>²ãçóÐNgJueÑɲ0!¦'E0-\cØ^ödæÓ pÏ5wÉžüS£‚JJt‘Ù;*tw›)¥xd3†'‡š±Á®N…±ŽÊŽõ_c£õ­6XÞDê¤F— ®ˆ<'x1šÿ Ô³!xõ‰¿?¸ðpYÛûK¯KFé5 ¦M 3Q©²ÖëJ¯õ´åCm¤ê{œÜV1Ò¾
-…möÍ}ñí‹V—óiÅ'˜f{ü…O¬«k¶M,Ðy‡ƒÙpÓÖ Ü^©,{åcùÖg bºº#2Iµ"$_âݧîl€hXÏSÝá‘=°S,úç@PY“,Þ+xM‰z’k½
-=œ.†Ü}{нar nüB¬t„ë”}N<§˜¿:r¥Ëí±QÀ¿CÐ}<„ºŽ5»¶_fþ­—·Ìnn¼ý%H¹¬¢ö×p²­–!rqݹü§¶\49wßà…ÞlÇù‘ ™ÛNȳþm|ç”v^ËJc>ÖÆ!ö ã›D¤îb›õåEºÂijê´öëQöG?[¸Rªkñ¡Ž6´ˆ4?Û­¡sì‘јɬa¢z·Î™*yAd+F>S§9
-$¼IH !íƒ^e¾Ë¸wc5+5 .'­Õ;~VóX•çÏè½¹Â)Œ7v<7jk^Œ¬!Ëìnò²¶‚"Uøv\È‘jÂÂå0åÜ µf$”› g´­ƒé[AùØ¥ZŽƒ´XÒ2Á[~øŒ´ˆ/gï“tÕæ çz{ƒö(žµ,-hX¿&ãåJÉõÀô{.åñ×MŒÞMe¦9”´w•=K™»>`Á©8RJN=V,¡1XÄ—Öü
-ÙæÃ/ÚÝç†Ã…@9¬°YbÒ sì w·+ø•@±ø>ñ){„£ØÝ¯U¬^E›÷ª†´ë?¼d‰}½X!!Œ4¥r Ö³Œèã¿ÁþPûrÕ/±úÍ [Bg_/©xqñ²õ¹È9†„–b½9Ãû_¶òò¾º·Õ´â|?¨ª/I~!ºofÐWÉ8ºBoÏÍXaö‘0+º³ÃLM­A›ª¸rr[„–!—PäÖ&.²…ƒs}2GzÌ"ya½*‚Eà,f^Cn^ÙZœ‹± æz1’~­aŸå ÃþŒ-•œ—Å-¸¦’m- wê™O ‘âû§l‚þ56*Q$£µÇ6Ý,þô ™Ë ß'¸‰5â[®ØTz‹‰ÄñöZõ'¬ MÙál-¾Ôœ%HüÆN…-¦–Èë/g6¹ä`¿êŸÛò©óÄbÖ¾O_CÜ+3å·°R\`WU>õµ©ž{õ-QDO]h}Ø'sjìBU.&ueØ/¨bu‡AnÃO…7[²‹T+"èŸÓ¾[}M=NœBŠ}¹Èéj’"Emî‰æ<ã·55b`J@iÒ“øå“®ãr}WM‹ÏU!Ïï’-Ç#úz*?½åÃÏßhRJ¢Û—¢rXŠ\ý4D¤‰ë¶~v`—þ /õ«”WÕw°Õ‚I ¾ª@+a®ó(©±ãA5¡=y=£­ñxç>USåD»<çÆÍMUÔ›€ÙlE— û†wRŽ{ÞÉíkGo-îçDq±¯R®¾  …ù ¤í€‹p¼ ìoB:04B»Ëß *pº¤¯O*=¾oFäɰïCÀIüŠkú$ÛÆò wLv'
-OêX¡gŠÛm9#Êó2Ôq
-ÓRLvÏÍŒÆ/Ï7Xy!r8Ë!MÔ4ócK v&½›Ä4á”UO-EyÂTóTñèjvоïU«P¤[J ÎY‘&•Ç
-N57üçØw>
-íûkIÙǽùît&Öð+JV(3ÎÕì~££yxbŸZ¦ûn Äd»7FPütM÷ªÜú»;PÝ“Ñï#¹ƒe87»ì˜ íŒzÐ[Ýy.ž:Oôa±aØCk´¨G5b‹±xÏVE¢8G=–>\Ÿ˜9§x1×®Ÿ&¹”¹¶«bÀè}ò
-ãL5Å8!á—˜ÐÀÀ7fyÀ,Ô‡(ÝœA£öùŠ´ÍÈ;L=SÞëÑ~Ø„&åQ§ú4»Oˆ~¸J­
-aàùÚîjäßÜš¨SÞ‚{ÈTvø…ùî)x“›”Vˆc†šçùÁüÿÿOX;€08ÔsÄü/WÐBendstream
-endobj
-1010 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 35
-/LastChar 122
-/Widths 2015 0 R
-/BaseFont /MHAHXM+NimbusMonL-BoldObli
-/FontDescriptor 1008 0 R
->> endobj
-1008 0 obj <<
-/Ascent 624
-/CapHeight 552
-/Descent -126
-/FontName /MHAHXM+NimbusMonL-BoldObli
-/ItalicAngle -12
-/StemV 103
-/XHeight 439
-/FontBBox [-61 -278 840 871]
-/Flags 4
-/CharSet (/numbersign/hyphen/period/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/y/z)
-/FontFile 1009 0 R
->> endobj
-2015 0 obj
-[600 0 0 0 0 0 0 0 0 0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 600 ]
-endobj
-1001 0 obj <<
-/Length1 1630
-/Length2 10420
-/Length3 532
-/Length 11283
-/Filter /FlateDecode
->>
-stream
-xÚíteTœí’-îîNÜ%¸{pw·iÜÝÝÝ݃kp×
-äh-
-×u”ø¦ñWÉê!r6Y—fü…øÙGRŸ¾yKR‰vUå)0o+Xä
- ø`8ï&-Ô§|_wñ˜7¦æ 奿i®™ÀÂÆC6K’kФZqÿ©Üõ-„8ª±Ïë½=Iæ¾xV@f³6Å-ýwËÄÎûñÌq#Eûu$u±ë5Äel&Qül‰x„ù»ƒ#MeȦ’9ázÚð¤Æ¯ëÃÈ E¸½ëâíŸ+óˆ°×CˆØ³Üg¨´ä·[¾Ñ÷pÒ!ìSðŸò“Ø›9"ÐbòMÀ8Õëq]yZsY£4îV ¯—…d<¥siáøÞù%Þ«¯ÔˆÝ¤qg'ä·„ãKä´¾ÀGq!»:½mQ!!&ßa?F±1Ž»ÁÞ¥Y†eP.hNø­1!/­öã÷œ½ð&  ‚¸a©7hèÛûŒýóÇÙ‡\š¯+D®ÉÑÐ Zƒœ0üÓvÄùØEýÉO¼ö~&ÙRm³ŽÊø=q¶qÊ¥¥»5ôÌ”ëb_ ¸mÓa…©!RÇ<Ê)¯$KåT¾C’"ú3Lº wìóÏ #uCm…›®££¥b·B_iÊîð¼ ]7‰Œõ• ðeQ ,®€”]®ì­|va!Ø;ýF‰E=ÅÑ8³¬5)Å¢u, ûÕðì^È ›Âê‡V+ƉC~~UY›¿> %<{ïè—ÒQs…ñpbÈNÖi¿KÚëC/`_IL»/\x7´×´mÂdšØÒeÖίð¸‡^ìë!>ûÙ;æ ê¹MQU,¯ÕêÓÉKQBäg~—šö–S£,QØú¹¸_ìMjŽCçqTlÉJ6È£¾šø (Ü×}Yô*NY&X ìs'«Q·’RïÍnƒa°1³'ù¶¢;\ ´ý6§eã3Qº7¢RÜ
-ã>õû~
-[`Ï—Ì/ù®—o MyYU‹â¢/ÿ¼Ý›Âœ¢ÝˆÓ[³¶MlÆ
-ËšÕ˜±{[½¤-üyª!Ø¥ò6¯Ë,ÝÏ–r‡{ŠÒþŽ•ðRö¢i³ 4:»ŒNt8¬¼GrØ¿š&¦².ÌP˜ã®—ae‘©Ö’ГÖNTX/ïbmåV¡îé1âûœ9åì¾ú;‘ùÑ­[BvÞÄÏdär{,‹&z¨½tEÒ2]A fS0ò}úö4kwçXN!ZÔ¿£I5·›_m—Ákˆìˆ±—|šÓC„8Ìx^]·=´–(LHž I3(ed7iwã—â ‹ª%ú£%wÚS?{drS[nA½G›;õ>Òi´ý'mLG:dŒhfL{¤ÞzÚGÛH,UAw™Ö PÖê=µàŒ dn¶h˜¥‚Jï ¡ßÜè{ruIîÏžçS?èôQÚØŒjT3§Ïñ¤ ŽYΡ¯jã"»t¡EM>í'ÎÄ—·pýèþÉR ?©0 o‹Oï|Ï‚®š!\Õsø” ¶ìOߨùu
-/À/„¡œ‹œãWÃ5t/‡…û’ÀÈÍL´ÀhDÔËá磑À÷7
-Ö«LA‘G´D©(aÿ à;ÔAG´Õ JU;_^\‡uç.-©¤î,+»¼Z‘=•¿RæŸÐò…FIجóÔ~ÅÇ›º1“|÷dÈ…¾^¢§ =Ô**sç «n-Ø[”Ú¶Q¶ñ¦D•œ1ÃØu®KÁ¦¿µÜ†y€´Pä†c(âÏnh0(iX²w¬N¸×õ¡ÍI˜û„ùÒ¥Èæbd¶ùq0«s°ö؆¿-ÆN™¦}ümšŒ­ü‡+ÈŽšœ=zàë…qãWÈÅ+¯|jeÅ5ÎtÿwˆŠoµé¼’{„Ùdã å”=\bHv8†Nt{„¿_å<˜m«3²”K,Í"ëT)(ãú`ÙP¸&«Âo˜«·õ£C·’=ø V–ŽŽ‚ä±à Ë1>F,.6¬z&·!^ ý‚÷ž·9š/–_Ý‹ROnOs!ºð±
- ÍœçIËýMãèY=±Dˆ*
-Xÿ÷Ô­&?=b¬;”½î‚™ ¬«zGn£P6í±ÿû±Ù‘,œPýgµƒ6å Åù„ ˜:vn‹
-®õg JŒGâÖÜ3ûRÄë,’ Órw¨¾}óã”sᓱx&á=¥Ì\_ ÎÆˆß¾lz'¦vC>_ €1Ä8ïÁ'nX«ÄÿÔ_>E듸è3cióú‚"“š¿X.,\Œ:ÚÎä½s¿ ‹Šs©h‰74’žÅïM$úÚ”t¹A¬Å‰V%è¼Úï¯àFð¥ìÌšjIp0!{»¢”§îYý2™‡5¥C)›¬ÜgªïvPc,ØÖ1#H¼l€àT3%H°øófØúï{l;¸¼ûüÓ ¿@vt MrO;¨|¡–Ï즪ègY§Óùî îÆô[q£¿èÄ" …W²Èj7ð!¸ÇŸ nV¼ð’"ꘕ¤i$| ðæjlF
-ÃÚ¶lóE7÷³3™N/,*+¿PC.m.>ÊÖSyüŠô¥–ƒ®v«~@ P2ÝÒf­NMTP-OÏ<a-€…>oIBeqì†bHpæÔt‡“ŽÄqj µ¥u!Œ»MB“†#z«Vk™…ó³;¨b„èC5ãAÆyÝYïØ ü£D@ìpøÃò¾×{àOÅvcwQŠrøŽ €e·52åeú/ ZLé¹ÉË`~>\‚hX"'N¡Ã$wõ¶!•õ[5ièÑsh7â”›Ž›ã¥ä»l—Ý~ú,;>Â|¡bŒ»-挟 B—ík.D¿ÛµËïÅÓ€”ÖWQ”‘]H‰Õ÷gÆPіتïS+ØT ‹§y3ÕúÑ›:u–ù§™Ã ×&_¡TT}4ÞÝÛ˜­¤¢ÓM2²%Òì½#øE=
-;½N
-¸»v ½Ê…éÔÔqKoœâ\¶Ý€×Ÿ0 hïóÚR
-¨T5=š€áÅ
-•½*V^¾º1êrðŒ*
-®é/Š)T,¯}«2lÍ,ʽÆÎ[ÙŸMÕ° Ú~(¤ÞQò«Žã¶ÚœuÁ3° QÑ•×46™›œö¬}Ù6tF-„zôôÏ
-x0Æà K¾'¯g~y÷ý|ްž¡CCëLFRçÔûCx“U2x’ì¤Ú€òzô8i½‚“ÀÀºP &&åËk剺âi-`JÜ&â,¿Ý¦¯˜Á¦¯z‚+ݰG…˜Ö¬l†0ÏüÜÖ9oHƒT>vüŠ"nC1Ç=ˆ§XØ„?ýËzñŽ7½Ò!·51 ضMcÿekxnºÒº1Èv&ÿ%V¯Œ Q¶Ù¾¡cÑ4~€Úgo¡ =;?§‹c6vÖÂ5NCÞ0è+wµ ý¶NùLCª•û‰­r,Ïbj¿ÞÀ×Otm‹yã«÷Q±âm·/SVæK |“D|VïáEV<Q¡)…xú—7'Õ^'å´U6æAÂÉ¡ehSÃQúÙì6p5 =‚ÔKÅ´t,ý‰> ¯-¢A–×pE¸6¥]“ ¼á£Ê h3–©pD’&ä£Ä É +k«ût‹2üWŽÜª|nÈ<~'>m8MUš™Ö²Z†>?nÆšfcBeµvG5?ÛbêÀ:' ñ” "en<Ma f'2$ûÌ]R_­I¬‹ÃXż #—ˆd}lu>ërv×Mq(‘¦aíÅýv&…æäüá —<šµWˆ¼üe®vz{óü·ÄÜÓ òަG§IDÃ"b_Ö Í%ËŒ‚²¢êx‡Ê^‘$Û„ù…üÆy uÁéQ_p$@ÖU/Èãˆ(w¡id-êl¡å¾kT
-K§4xÈÔP¶—ÛÛ‰Õ[û‹ÕÇo›_¶¤uÃwü`@Àr4ýÃ¥Šùâu.Çc^ʈ~¢{ªŽËûb²OÁw}ñx×—`c™ãø?$?q;a—C¸GKÁCÐJ&Ÿò"t¸§'¥=€gh¥Þ¹ê ýs§H½Q”þ¯ÙN0ViT®I‚ÀRÜ#Š,šõ@¯»Ï„S; —nÑ´„(ÁPþ±Óí'ó±÷t—¢ç©¤ç‹ûø?0õK*`ÁÎöÄË’&8¡ßçöìd„ÌV  }¼·Õ0£¢²Ü}çŽ 3ѬÅ@‘Òµ13LëÃAÏNÓó.WN8™œ `c¥ý
-üm££O<+„ºlMË´p~Mý™[ñ©ø·hÊW·N–&9_ 9øÂåÖ ÒgÙ0ª¸Lt»ÈéX+sÿõ„&ûI*ofʸèÊ /ŒÀÐÀƒÔ[ü"¤}.¸ûæ¥c‘çäß>3D|åOVη}ðî
-(ª4rQ¹!Yzˆ‘Yù_‡u¼‡Ó´Q½Þˆ®¸ËÛÌ«
-|ø2C¸Yƒ~Y¤¬BþLŽË¬ðLÕûvè÷Í ³˜U@âçÖ¾”5Ù¹~ÜCåýŽœ—® ‘ë†<…¡ÚɡȄ¿ ;÷Un¹ù¼‡ ã à™9 ZTêS½D,f¥‘j@xqÒ–iEÐ+ž²J>`ýáìÃÕ´Eñϼœ#ÄñN%€õÐ7
-l^¹C8I‘èe«3ÅA¤Ã¯ðÿØòk¾Z¬nk¢ªh±¡FÃ]ðÙ›·²îtxrJ¼‰Ù¿bo
-d©‘¯l};¥ZòM«yŽÏ‚ÐÛe´Æ;Î÷kßíªêÂ×¢èCsú?êÂr؇VÚýV.K“.ÅÍ"ûUg§ ™áön~ vµ2Äv gè"àÃ\ôAm»)Zÿh”RøÉR¼.|y÷¹'"ˆ*&–ç>™#xr§cm¦Æö0žœn³‘=ǤslF&~k2E«jlþ¬ Ƈf„ÃLbJ&ÆRXc6¦KnÄÎäÖ¹˜O"êûðΕ¦#{äÚª|^3ŨÊ;è44Âr1f5)·g¼_ ì(1%Õ
-rÒŽ½wÂø’>;Slêô‰‘5s¼uÖ²Å#&ëA¬!­ø5çÈÔúÉÂbªªF%.ïîÐ{ãRU©ÉàëNyÐÒ6½/ÚÓNEg“É·Û¯êÏò¼hžNº–Ž¡]Șùj©<}crÑ¥d­!]ìÜÎò>þ ÞÄ ÷{€m6"ûªùø@P¡S†¸s}'V%ó.£zùˆí]¡I^(ÛùÌ6…–¯ƒÑ|4âsæþ>êYÈ-Ï:´¢Ù2åÁÅs(×±@¢ =}Åæ—U·n6 ÈBC¯>Ç!Âû@u=å<²—1i=íÉú=ƒ-¨òZ—ÅM ­Â4÷–@tõJæv‘q½ãû´yç¾vr«Ï„¾VnEø„}j*7Si‹{=‹Áï£!æXàý1±J ='»Ê`W¸îÌÒìì;ïD}Âv-wŒ$ØM0½(ðö¨ÍéM$ÀzCç§ 3ß3XôåB£
-°œâ‘1é#V~Ö¤›½hBñ åùjtw“bsYŸ´5 ¬˜ºÿ“,W²ýÖ»X,+'z7ÂàOe~a.!dÊ«+¼˜å¡ñÊVóÎçõîú…*>3 þ»m'¯¼ŽpFTYDº9HÁ†“lPËÁsà–Žý„Ä&ä’ÍåìƒÔ„¶“MÊBW{a
-œây[ƒËu¦YÚr!ƒô$l³Ø a£.†þÌGƒaW]èPj©"!w¦k?…Bm$¯œ:#ϯ˜R¡~+Oø0¹`5ÌP(ÅÍé=vÛ „ú"þÀ‘—Ñî1+…¸Ý¸&ߘ óÚ*-‰Š ”8ÕÐYNÒcŸ˜¾üJìsMQj[F¸‹kzéú¸ä(ŽÀK¹öëÎá½ gnä@@m35N-Í˨d²äí«hV]¨Áà^ƒì÷¾­Þ uŸ÷ÚÖ¦k‰-¾·UÉ[~¡‰è%?Ôé·SrJvı}Ñ™¾Ä=3¯rêÅÀØ›uYoaQ•L}F¡©›§ü¡à:Ežir¢,sÊÜ[<z˜¦öÚwR–o'«èC=Rp3s* £_Ë•Fª!Ñ ŒLïЋ˜¦)§í>¸©¿ÄG€ÇàðÿÀï>Â6SGÄT¤®I;@|&ÞHJstÊk=Lig¤5è‰,þm!7ÿîág=ò"Œ
-<uHîPe£C³PÍ2EíäÁ|ËM ó«QX³g9(bçŠvà‹÷µ/’TÂèó¹ÂûàEÔ’÷¼¡¿J£ºV]CG ;f¥/ÁàL­÷mˆª©’’ùê#°ð¯¸1¹C‚U=è3TnÌó´sS_vçahîÖ5ImŒ=_²ž‘•9–ãÆ›Öo!|>i÷.T+=a9?wô²ÅùÄ˺éN¡¼‡Q²¡\Ýq.¿³lߣ¯ÚÌMú‘á£óäPêç@lʼnT
-¨JUŠÆ•ý¿Ñu3·àp G„‡ùbÃéÏÝDŒ%çwì´¯ïª9áÌ ó5SsÕþ†ˆKë†Üœ¼e}Vô™¡)‹$?·,V§¨$Uã½cNùÕTD ½³#éˆF»œ±´Å(EB‰w%È {|(¬3-I™¢m8W‘r…XÍe«àÞVLL¥Q.*Gõt¹IÚ¯±™^_Ø“’ÚÖÈûR˜Sö «îÒžÿk./·9Ï•ÅyÊo •ÓwÉ×°ïJwYâ‘ϱî¸6eÉÑœEɈeósS}¯E±X8‚ÕË#¤y 㼟KuEüì£!o´öUöä”óÏéŽÃZX©¨,M|eÍóÉÝ)ƒ^»D¥?O­Ü]De×a$p*£<Ôu¸-‡•²·HÈÁÉ'. JØ QíH2³&šÞ–é{IênÊf›êòËŽêõ0]\³Ç¸,Y|egσÜÍ–Ø,’ä¥à¦¥\ÂO°ÌA%hP ŽmÀÙ3Y'Ä]ÄhÌýð±ÕÞì²›ODPxþõnº”å“]ç7CåÎm gªô÷ËÜÆu“óm‚ 5 :ª4kíusD󰈪KÀs¢'·»^Rå”XÄ ) >M“£<Áp©E^ˆž+vxE$¶ÆöÕ¸œ eMÁ$ ÷Š¡|¨•ùìü–îøÈp¹[䢧ªT«-ĺ ô{~Êfª~ý WÑ8æôQT“yi¬W%>ùàw—3+¶ë‡IÕæŒ}'Î '>š! ^ËÉ´¯ƒT%¼àn=0Z€ÞOi°nŠŒƒÔ'ó'~
-\´)(ä t‹hß÷çuÌîÈÕyêáTÅD_.àÞM`¦_}\_i¥ê#k?×ziÓÍà‰Á¼­zñ)90¥7€•ØIgx¶}/b
-(Ñ-ì@¹ÀËq²<Þl™xüú0·¨gOyP} Å¥\’`ÀxªÃư6‹9)ü<»^íéîä>ƒ@1è¥ôk5 ê¥5a*ìH¹4}YÕ #|ÿ§¦}ý68w…Ëj*6Ã㸟QmŽECÁ¬œ“§ÄƒOoül“³æoC’rR>s”Ù°ký“Xâ²Tþ--i»ê‘7`ù`/N…›'¶1 h <þS°=xÇ4î×ÚT¡ëÛÇÍs=@· 1~_¶ý)î;ÎnoŸ*CHÖÏÄÒú `^¨VY©êKŒ·€’ÃN±ÍÉÿ£†-$Û:5š›B§>™ÌwÍ?
-qÒ¸#q¹àÞMn¢¾ƒ†ÇU­ÛòA ö5 îQ¤±£-•²x^€’ÙtÉ¥óçw¸_Ü ý‡ýZ;Ô4ò#qó)ùtƒ/UåÐnp©á„Ͷ5ž‚B²W  ÎQÝNk›‹v<§sïU'¦J*"Ñx«xóoŽú ¡…ÁÇ••×ÕqƧÇã瑜^¬³“RöéEhæå)ôd6ºØ¦Nr ?â¿®¼Ä½`„ˆÇÐS#£‹c†MéáßÞÀ>RÝNf¹h}ù)æ_Èt€½
-endobj
-1002 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 34
-/LastChar 122
-/Widths 2016 0 R
-/BaseFont /HZQBUC+NimbusMonL-ReguObli
-/FontDescriptor 1000 0 R
->> endobj
-1000 0 obj <<
-/Ascent 625
-/CapHeight 557
-/Descent -147
-/FontName /HZQBUC+NimbusMonL-ReguObli
-/ItalicAngle -12
-/StemV 43
-/XHeight 426
-/FontBBox [-61 -237 774 811]
-/Flags 4
-/CharSet (/quotedbl/numbersign/parenleft/parenright/plus/hyphen/period/colon/B/C/D/F/N/O/R/T/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z)
-/FontFile 1001 0 R
->> endobj
-2016 0 obj
-[600 600 0 0 0 0 600 600 0 600 0 600 600 0 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 600 600 600 0 600 0 0 0 0 0 0 0 600 600 0 0 600 0 600 0 0 0 0 0 0 600 0 600 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ]
-endobj
-924 0 obj <<
-/Length1 1606
-/Length2 16571
-/Length3 532
-/Length 17463
-/Filter /FlateDecode
->>
-stream
-xÚ¬·c”fݲ%œ¶í|Ò¶mÛ¨D¥mÛ¶J«Ò¶mgVÚ¶ùÕ{Nwßçë_Ý÷Çc¯ˆX3fÄŒµÆÞdDŠ*tBÆv†&âv¶ÎtLôŒÜ
-`jç°þ÷`dgklñOiNô±„œ
-Ã oçü7%€òÿNeúÿ>‘ÿ$þoø¿EÞÿ7qÿS£ÿíÿ¿žçÿ„w±¶–7°ù;
-ìˆÒ0‘Ë…•£g`_Ò\¯?Î`bÇ^@£)yÑÝïŽO4‰¤ké3}¼u¤>÷üt 8ÓåÚá)׈˜œ¾ü`g˜ã§ÞÒ]h$aɉP¦` ®ÀëùÏìdõS{5Jk49þyC%¤ÛjWR$î¾ ®ªTzØ2T¶lôZoç¥ÓÐX"³3äŒy¼²@ïÍÛî rÜz¯’N 5·¡§à ±ÎØGå
-pÇ€úäLÖ˜‰¨ÝA°¼ñ`Kû­Æ{¥3¹4x“]Ûxš~tl(‚ó|ÊÉ2k$€ bï›a»ìýešQ² Åü›‚ú!0›~'¬lXäúøÁ‹vI2–û3ý²è½:,œIÇ/=Nneü„I1£@®1q½D896RÛò~Fb›†.V••^ò#æW;Ö§Ö0Gg˜rc4Œ¶$¢&V˜$,ŠèZFU¨Òè(ŠCæÀ9XÙˆ jà‘!*ç+êJ"Èhzå ðq½ïŒ5œ½ªÑ]ÑÎgªAÁZ^4ð¶[Põ"´©÷´f $,7Z¼ ¶ÿ¨üÏ}]n•Ÿ†/P’]UÛ<k5˜\{·h8‚–æ)Õj#ñá;+›üƒ!ú¼HףųúMÄv2—Û‰aÁùÃ솦¤nË(ö°Q7”œ
-äÅêUCQ‘øô­Ÿ0¬i}ÓOó_¹s#‰ÀÖzýÒBÝ`e¾°Ìˆ
-ÚzÖj2üŽE}¬³T{ÔÞ¿zÓŒçѳ© eÌØ}ç3µý:äë…yœ:^ó¼#Pâ Œ¡ŸûqõhDòŽÕö9Þµ®#êe)1í+dSÆõÓäõkP«uwÅ4ýuS¾¡Gf༥7¿å–¥QÒ̳ŒzŠÄ@~~ÝtÛ°ŸÈ‚ù#!Î4¶óÏU¤ IsŸT!rÉ·‡Èä¶l /käáPȼß;±ïÏã%!ªàÂÇbèL‰†ÿ 56‡ÈÐlF £|˜öR''¢åÛ†ÿQ;÷øw¸à~1йgVáÄû©¦j ’Neç}Œn®EG½S諲Ýo&àîâ7ôâdƒ«A:x”Kd, ±Ý¢ëñ)$ið¾^Î
-FrE»I\™ÊÁÈÃåþ’‹+ÑUÓ!­®Ú1C’NŽŒ”³+¶A_¾vÙmŸphìç“(˜G±ß×+…ü­æ~ªIéé™ÿf¨¦}•Îrm=:Ÿ¡ž}ÑL¬.¿ƒè–OÆœ›œê™ÓQ$¦¾/‘ÝtÑ¿®j¼ï7‘øë>+öµ=È å ó‘¹±)‹éó°ÇY{É&@ËnŠ”×î®h]gDAq(@Þ¯óçJÞiùyûd@¶NK`•¢å3]h•"6UÀ¬ü®&ü»ŸŠÝ\ûeÚªÎÙiÿp̨Πí]“n{uÀMẆ˜Ç7ßx{Òb?cˆ"Ôëªæ ‹ª;\üÍÊž¶ ®þ¹@É.ñy ñ(¹RÒ#ËMµ|ľଶ‹Æ—©ð¨_ G…zkLê±NêÒÒœv2X)«í0IA#{’á‡@·Qµ º/9I²ƒCz1F9M‰oéÜÆOváÅ;³ÄUÑ+›…ŒKñ©˜}ƒôä°ªFxò AÞSRÅe=ņêü‹‚YEŸ«4 ³<‡ÈÛʨš _WRr# {’8Ž^Ÿ7xôv\{R
-vˆTÞÓ½'¼˜©( BÍy^ðÎXr·˜my%]-<œï€Xñ‚¢ž¼ »ê¼XfÎÿ
-‹èKÿ8ÒNà—]+¶Ï¼{²Ñ°×÷ÎÔ 7fªx±yI;c:Oݳ­3±ésÒº ä9­ƒåˆÀÏëXW—é
-k„Í"O‡ ÃÛÐ ¨÷ioÒƒìÑSH{ê”<SsAæ{Æk7³^Øïô42:Xñ€ÝnáÓX¥*‹QS$Ï BLÛ¶BgeÙ)×1æ[é«éTk½²?Ú4›=õr×3õ8p¤õ°û̲µ«Š^¯êôPŒV;ªªeˆÚ<¼øó¬Èž*б2µ 1\C÷ëçøT'€hËÚpþÁ|äN©p¯éÐMŽ3?†ÿOBË1ÿ <<“éªÍÙÁB%œê×ÐÇm›®DÏ8U‹Ï£‚çúЦ1.A%«ö>\®Ë}RŠ"µl¶žvNl=œ™{>n)ÿ
-«Qͦ#ö£Q+X€=oýÝlEñƒÕ,5|¼¦Ö€Î7 ºŽÞ7úSÛ9…ŒþJÞ_ˆ
-§jæ ³_ks] Ñ=”
-‰»õùpØŒB2ùmU'ü—úÖƒœê¨SxS%š=-ÆŸ(Y ¹çÈ Íg¶UR\B0•õž%¡lû[ª=ªg¤“‘SuÿˆY'ƒK¯È|€=»oi6ê©ÄÄœó)]4õrôè¬J.åe»Õcø[´XXæUrŒÖÚ¥R<²wü†Mê¹CíX¥µitòzq@"›Pø ù8HYÚRƒ¶ü
-fÖ߯šˈjë@Geví93¦¥e¸iæ¾ ³?á—ôgÝÙÐörJü l‚Ö+þËócWd­–p:¢×zäPOÊçÍeÕr¯Êój
-rKðÛ©°ë¦å×®¡9.Ë„¡œ´ÅÁ0n×´c›*¿w‘¬þ܃i]Ä7EW½ã‡Ý–o¡\N¡% j8"q7"eò60®|ÎRƒÍ‰õÔúÁ¸Ö´Ç‡$«¸ÝpÔ´Çë¸çó
-@C¦k¿ 3t<ª"XŒ AZ£ëñOÿ’x~VÜŒA~
- ¸$ܹbU1²f0úG¯bÍ ²©,`AÂãë¤êÖ5,ÛÆ#€ª JåÝJãchó$#÷X¿frâߨ&½W®ÖT¤Óñ[ºß*Ò( ¢óª˜<)ëÖúŠnHÊ£[®
-tßä=
-=ŒŸ«¼¯ 9žw™²Ân&~Íùùù• Œûˆ2FŒR¹
-¡!úõÖ¯ˆát÷à«Ö¿øssÅX« 3µý‰Ð~Ì>Ò긑ô…úJxº‰w¬ Q%‘­CAÎ6DûвZÓ>n§ïwY¶~'27Åw ?–ïÜÓn¹q± xŽú™…më,y*,†|ýÌŽËð·ºíû&æ»»>ëqÅI!Ï¢Yœ:‚g!¢8ƒŸ—~âv/‹>eñgûã]2Ë©Aʱ[¢_Õ¡>54lfW±:—_ 9ÆÈQk³âÂå,îžž0»ä½öëT(Ó¿£NƒÁÃÚ Ý¹œ4± ?Q¸QÏÊÆÂâemê ƒ8ýÈÃ~ÙÊ;òŠ50s*G"Ótð‡\$î”'7(Àw¹©Â2´%ÊÍž=cXÞÇW“ðœ^Xç{áìíÈ9²ø²¢µå1íé^Q†[‡5d¹¤g|ÙåsEÒK`õˆtRÖ¡ÆDõ&‹å Ê¬¡«¾ID]G›Ò>Õ—äÒä·ô÷˜ŠÚŒ@ˆ7ê';¤DN_yBPÜ5Æ.£µ¸_=êC­`«c·ÿ´èkðo¶C~*½ƒ'츕~–àþ0_½Cyöû‘î¹1_0¿øað4+ðFM(ßwrˆ(Ž)D°êoÀžÌÈ@Ê úÚäÅÚ¬¦-®kóÂa=Œ£Læ7• cETͽң–ùwä@èG xǃeµ÷>7¸ç ƒ|38;PÛ
-Õi5í2hLmToaÑð¡­¾$jƒOÄÚË`T„ÛsÃ’ ¥Vçå§.ú#/|º¾E!ûKºÿ´ì{]÷½J
-6‰yK:’– ™…‹ÖêA I„A"ÐþãJ Ä;ŠÜ%Ð [÷+3S1½—ªÿ¦§g//ç¶ÿU¾rGý`Ì9ÃÑátÀÈ!€d$Û’,H\—¤VñäÉÿí!/õ{K0fŽ.œAåûfv&À=/–ü3²g_»v†G㈼cþ®*¡æ¬kYÍS¨éu~ßÞ¾=kÉÀO.V‹ŒálC|׊ðñƒŽS>wO |¿^‹xéTm‚ôÚbÆb!œ=Ȥ“sÊ=oº„»ØjSÖ³¨O¹ŽœBâèSåF#äô)µ©9¼ñ™áô ¢_®ƒ@L>ølf=¥ ^«¹´Ùð<¿!ЃÜôÇ]8¼j)ñÄ)!tÁÀ(Õ JËpgfÎg’þK´0›ý¹m:Ö‚úˆß?êCOU×%[¢^7Â(E”q˜¹®‚ Ñ9Ägáôe‡|d郘K2á­>F‡ê_ÏaÓ…^~@çÄé{GÜH¹P‘–¹„‰ßðà f¹¿¶ñg;Ô—yï
-lÓ§kë
-Õ^¥ÅPÕƒ¬šþÊE¨ò·×ò¯„s­Í¦ýÈíÒš(yYœ&iõ€"| ‚žâ
- 9“³@½ÏŠž"c¬u
-:¬”ø|?•$ mhuÚh¡°û´;„ºîr|w(:µÀ­0ö‚Q-’NÕ
-.á OS£—KV’Ž™9þ9L!h½ãÒ‰W– 4¢Žžè#³j4UÛ GGxߨ¢•CàÃó†R§ùõoß‹ ¤FØ Æ…éj7?]'TãÉ~„°êʲÙ~lžaĶùJä>ˆÊÚ4ŽÍ?1ÉhdzDæ‡9YÌoãÀžxÖwΑ|‘ËÓþL»Üñ@£¨Y5PJý×äÔì÷B³Ø™_¡}Ÿ# Q'P!¡>Ö^¯) ªª[«œ(샾‚«!WÏàü…¾pkÝ;•Ò¥’þ ȺÔÅôß|6íuf K/cûäNÏØÐêc£—a\¾æÚ¬
-wP2ØpˆT,»³'úYÿ ’ü²Å»t§¼S ¼ËH÷½WÞ¢|;BŸ¤lOb+NB66Hu{8à^Ô«2ZÐ3BÒ4©SÉç¡p¶ð¨C;OZ¡K7Øôœ`®d8³ÔÀ­ßªÊzÃ{;û+vïF?Ój¥dÚAë¼£&»Yþü}_ùTÑÝ/{z:®Ž]álL„+OR2K|p×)kÌc»`3žŸ%ôõÙ†€4Zu\F»ÿV|O%qÊn û¢üç¤H]x‹®}—ÍÍæVýdOæQ6ZjYwñ3ÍÉRÀ]]ð1îå¬Ç4 ?[€H2¢²2§^áIºnùàhñNÉoyÁY»ma³¶¦o4Õ*ÕÇlÝdͨzçŸx»é‘,¨ëN.7ˆÀót2µG?Ft™Áxƒ}WÖ•Þ%fëQPŽ7ž™š$Üo?p .±x” Xm{çÆ¬ð*úÊŸO|–¡‹àœt‹ b îz,« ß,v>ó%´1Љz̸Pqªâ½x*&«¡
-[µ­K\³ê§2xð0p9Þ›çç@Ê
-Ô‘x!‚qE«?´¾¬Ö!8É÷`tb?¹Ö`$0v=RYhS‘§eˆPÝ
-—A€]fÒɧ[ s› ×à$Ҕ懩ÕÉ9°»”ÔóCø£³¥¾,¦ÛëÖù-©+ß$Ôä‹l-W¡ý³GLHû.ë.©Ôyˆrݤ)?a𠲘„ó.T݈ØÐAUB¶o]7°tv£¾!¹ok/D¢Å“–)'¸sT^doRR!|û±Cû²M¡;Êjý€IBo;Ô¬Ú2¨[¸H'Bš¤E L} ÃVGïû^ÕºuÂæqÁCŸ ¥ärå›”)b„l¦`p'b
-wÑÄ%ÓŠ_èÀâ1r}!©8‡&5!ùGy]<űX^¼ÓG÷_tåÑý¤Ü_dzŠP¿;uòì¹TÇÞj$ÆÃŒL!­Y°™:B`ØzÚã€æ|¢¤ÿ8˜Îe:UGÈb÷U“¨F“QïÙfí2Ç}&ˆ&K\íµÉw‚Ö3M**ƒ[öWÀÄm,h©\ècÁ1’ДĸŒä‚A•Œƒ¼¦n5oÁ£8S”Ó„aŸ8`7ÑåGs|˜mY$YÿŒàÅ®a¹ˆ €+ %²­q6Xø³c°P£vYR\¶yVk“µPÌs‡¡dë®ÙlHÌzÓˆ¤?ÑxDû¨`Y?,·Ò4ðâÓ$pZ¡h©Y)>¾AéæÃsi¨A䘾™åP–¯±"¦¾st%wŸ- Îò^»¿v¿Ú‰¦oHÇ÷)¥>ä:gB%É$ê ñm‹³(Œ²›ƒÕéµhJ&iH Àxïú‰7'Bæ¸T)ûŽ sh¾±Va+†œ½šÄãjVŒ*®uŠÖKšp8y'”gQͽ:~tøÿ*WÞ´¡ûD£°IË[x¡ð Îa—±…õô›o´`ñgr\SÆÖBBÔ"Â
-¿ñ¹®C
-mDûD.eÅûHè~r“>Jè½%£à­$)§Í+*_©‘'=m ‘ÁHP]S+ŠùlŒD¹\×éz~ßüÉr©»fBÎ%kÇ¡•Ü:'öBµ
-;žÉ†µ´I1OÂ(u„ÙmY,µŠÁÀâŸÁ´óxÁ 4';G(sN£¤wj“Û}"³·=<ˆmr EörZö‹¡:A¤;']’­Ð]ü‰ÄJì4 ³>Q¦‚ogJ
-Õ>‰¦ç
-@†2uQ™$ï
-J=ÔŠØdJ&z…(Fh¥³W¯•ÜBÇËñ#?‰t"óxȽNŒ$ð,‰ë„hÀÎ{ɇÿ®Ìó6äoÚÑçMA¯AÕ*s³d²l U\å¸Bs÷bØEúÕrÖ.+D£Cñ³¡Zê ŒHRsy³‘ƒkVïbw-CªîaÊä«úcþ–ÐÛ_—QR˜/Ýûº&¶ZóÃ}}ØÆi×§ó¦½bsÑYñÞ^ª¼¼
- oÌʶOš(Üb¤Ôhª?ìèÄÆ®Í£³´å´’Þ·oÛ$ƒœˆñ×3{×Õ’œ±“ô ¼¾²1õ4~¥ÖÀ>ž]„e¨MU‹_!$ ,þ°ySGs3Q=o r
-ÀRîq/H³iG¾ñí33ò~²»¢»dÚ“•€P G…P>ÃïB¦`_+o»eï™ÌϤÇá×Þa)òóæM’häktÕõE ]ÁW É–Á\€¨1 çÌ’
-’ÍV˜ ˤ\·ËóçÈ„?/C“jŸ¯lìJnÈ´2ÚDW>ÑbáüñÁÇò‰“ã%K1
-Ýæ1rlwzŽôúÍÕ5a¾‘†ß4&&âL´JBºy{‘5ºßßfCïV=Š%‘™ItQмlZ,çŒRÖX=º8…_$‘¿çuóôb8
-]aÝ÷'ÁpœC15> ó—fV÷Ó§ê3ðޱq-\w
-#„WMÛ€,¦¦³4áYÌA³ì—|$OPx+6ìº)ä2˱¥`ú‡,ó¡Ò{œà}ƒ÷Ĺ.Þ•x l… Á@HÆIÍሢÄ”
-b@/>ø_ÇMC§LÎÕSø}Ââá"4,
-Xh¤àEá©„3>À‰˜>-~65—¢?gB…[¸üPvØÀÆ^_EÎÝ¡Cò@ºÔJ££Ð"›šdgÀ"è ®½Z€-?=aòjZñhh¸‡R<€þÂR~ÿfÖ–ר³kwϪÊeœŽoKÂ×’Æã¦úÌÞyíÃ5ìoa|cïÚ^Hª–§•ªý]3$¼øÃÜS*´m…NDY)=;â£8¹Eª8‚ä«RoF©Û;<Ÿt‘î%›Ö¡—\7ÛôÃëïlkŸîˆ.‚Ë#nz dªÎsÐõÔよٱ–L¨”'fï©Að6OuôQ£tšlªl•ÏK¬·Ôk†Ø‡[¤T×É|©
-:¹äˆ“æ’ ® ¸y_h)\Ò˜qbÖñö
-ac²°1Ö“ðÅŸ(ÿ&¿cZ`”€IØâ“—dø {…§•Æ]Ái¯õ Ó¹·Ç ¦Êw¼[šp‹l7V<ì‹þ㸗BJ­|XLZC”Ì•¦pUJm›p ÏÁ‡›Œ~5vu>eè½þkŒˆ85£fÑ[ÆN­‚mÙ>-_GæHR¯¡^~E0UêãE•+FÌ~´ ’
-Y+¨fË5•‘¨šÃ#² °—«´„Wâ^P ´Õ»å·Îź_à£ÙõFoɳÈÂ4?µf†äßFVÉês÷{¶Ýìvâ1fMäèj™×Þ€nj yNðp/ÃŽdÏ5’A½©¯mO/ ¸ºqŽÞ©ÙÒ»<~à ÖÈu¾br¸2dZHI½_€@²‹À¿Ô¢;¥ÎMÈ´3ó)Ë#Ç!ÛfÌêæº[Òe^Ó9Lnßf@Z7­ïAÛ‹MØÒ¥UßÉ\x¶áŸ}i~=T“5µFcňSسգÜmµ;yç}¦Å”9MŽœËºjê
-ûêJ5º !%ñ=ØÜyj´nŽ®ä'Ù¿Fhüé³}<s+H,u”E¯*<)%ºÜÌ4ã£+÷JÊŸ‡È~IKæT7Ü:È àW¼1äŽÇƒàuo‚™ÿ6
-nä@±^=–ßš¦“çB"\6½ÅïˆÄ'à6Ê}¥¸?+p ÈÓ©ù(Gj]§Úm"S†mc¢w‚—jï±"‹ä{‹¶»lÊbŸðŠ41ù`;p˜j—Ÿšµ_™2t‚ÎêÌyÁcû3~zÌõ—•ôñ8•()¹³ßûì#ë0S×ì1Ê9!0z†1ÂÔNîãtÙæç•ªéPI¢h<ûgèé§ñ4ÈûG‹ÿuü ÃJ²ÿÑ }œ2)ìJšñÖÉ×Ô¸ ‡…ç.úÜßm¡*´9ê
-ÁiÛÉÂ[RÁEûÞ"Y"mÜn˜ãs5;V©/ÞÈÍ,­çE<sÚ YÕø9×H½¿‡â­¡{¤j°nlª³[>³;SyIlDsD«÷ÖáZáËìW™¥}¹ÌØ$ŒÓ¹àåOfú‡Èl{}ëüEÀ-BIɰ†ù.»‘'‰Ò…{uÌÔ  .0s æ:§È¬þ ½ÿGdšÔÄÍç7°ë
-AÒ‚†EŽ,:tCˆ`Ý7É–)Bè|b¹¦4<×p׋.©ÉïŒ4ò\㬕ÎsRïñ-;äµ°ÖkŒX¨jÜÊ*β—~zaÁ E
-@΂P2!a7¹˜óæ'ñƒt/Jd¶Þ9™ÏÖŽxä·±&Ñ.
-”NáãìR3«»_C‹¬£ ;6aiv­,iÁKsó½Cµ›k`$zeqÌ£tobØôû F%‹®¦TïGµÄÕfHkÞ•èâ¶üšœ%«ÎS9£½ ûÔé9¦Ù<º’y{)„H5œÏН~=ŸoU!ê‡`5\H ÌCO3ðk£~@œÑ,÷?ˆÊÚÄÓÏJ´#—Û ËVN“ÛÊÀÔ÷€¨µË)7°ïê+¬jã6;+E‹pPe'ø¶Ê·“9–E UÇiîc˜çî0a¾Z®],Ëú÷°VaÖ„ ifÔ°—WtÒ=¾/hR3å%_RòU1œÄ°-â$ân«Ýô-*º4Ø7ÉÓ-”P¯Â7GÄ|’Ä¢r#)K'Q8ÚR”:èô†ë:L‘cf/dðçï“éð6w¸)B:²»CIFeK4÷“ã·¿ý'L—RÂâ;l!ñmt¿{€dwÄäÿtûF?ÕšèÍ?ì@®M* ÖO^,r­&@WöD¥©Rñtq…gdEÔ’®‘X졚•â PDµel÷zŽâ¶YýàZ|dïÉBÑÙÖá8•jš€¹±kwŠvÙU¢‘;týtm¯;O“,Â7ñ…ú~|Yf2­‹X«îBQøàÃ?5½ÛDÈ|NíãåE/Ÿ½ÒàËzøíÔVÅu¹øûZ©¥8 ý”âFKH¶.·sä†Éí”±ød} ‚2­tì„Wgði<µ§ùÃ)‚»¤&ë ðbLÚ> ˜ï425ˆ$³u'@ʲ¯>s}OXDO¼ƒMsœV$º}5È= ™ ³j½{_yb)ˆA(™SQc «¤FE´Õ´æ˜×ó…d‹èøYªôÀ̓ڼIg‡$ðà¢ö%v+W`ö4f‘”½Sgï‹KýàIþ´œv¿ó_Å?‰×)¨SN5’‡%<QnZÂ%õ kñ·\™Âм†ÍÇ…Í"?äWv©ÜšWTHŒWµmÂÛ0G8]Ö~9X £²´éÔ€85W§S8í^Ròbú…KÌbAn°¿Œ—”9ô\Õj(k™ãÒ.¬w‘¥é®YId›Æ mYs2>x§ª ù0˜(ð¦lН<ã¨ïü$QƒãJ­œÁÉþ£îÐí¾’uÿ=ÇHÏ™./˜
- ƒ‘7”eobipt¯Â‡Æ„èü×¢>°7ÐTÀ鋌3¢˜íL>¨;¤Õ¡Z{ëNÃ2Ifk΃X?ûÊŸ•ÇÚ»iСQž]T¿fªºaœDOXegò“UõË’Æ†éµ œ>w·˜qP ]ÆDŸ²eÐA·ÔÈ“ï;ðÚ§ò¦ /oß+íTDzSí Ç‚)H0RªÆæi›…oÍßMSüÕqI4![¤DÁ‰Ò ˯—©òì&¤ºSã^lœ&ѹ|,È@c(8›…#|p½Ÿˆu˜,dîð©¹Xv<Ù²2<¬E0qð¦8i¯F.…›€•÷2ÞÙ¬=í󆡵#·³ñdæÃS«)6`¶ƒ|QB¬Ï€å±×] LAºyOïQSu4˜½¿bN¦ŽŸ@ñxêòµv­+\†y•aµÖýœhFt€ýÉÓ Ú([a8™šU«áDªÆøS}Í€Xê½;+G|Ó¤‡ˆŒ•Œoó¶óEÖ¯õ¦Q}Ö· ùAäÿ6yXt§¼ÍŒM·;ŸŽBõ sž¯²ìð Z™ ¨"îÊGûo)p °²¿voé¹:EiØ-/ –´Q°ûL»á~äC%4·ÄÑÝ}O¿S€¢BYäð¨€Y°ÿ 4FÍ1w–l–‹æ{UkÊJT“\v ½oFö‹lÜ'Ó QB¾©!dé—ì 23ÿœ,Íó%§CE¨Úø ØGyž¿Ðv“!^Ç)a©-bRSuÓi?ñœ±
-^¸V…Ä Âj•a'Ð@Òãõ¦A’PØžŠõÝÀÑϨÆk’ƒÝ{[s— h£^1˜Á\¶åÍ‚ˆtAG`>UL=_‡Í;Fé™0\ï¬ 2kþ笨oÁ‚Ä2,+³}ª –Ê×µ~C
-ŒÌ¥íìGd‡®ðå¡)5¤ä3 W`ì™Ç=B>Ë<¶‡p9¢Á
-nÌLHµSgê`C Á­:¢1Mø%Ç©f§GØ\h¤ËSIoN)fKIá\7ìb‚“–\ãÖäâÈ!¿v¥œûl¸•lª Iæ&Í,æ5,ІAžpâáÇ~Õ#Ö$! ¯ýì@Y–àç….
-Ê©75”Wòq#ºÞ]q“§wëãó²Þ\³³oõ¸Öœg,ûaøÍm“*úe÷‰Ïjø6Åç,·ÿ¹¶ÿƒ”úw0+
-àXyÍ
-•ûµ'ëæS@é&TÙ{ä2ñŠ|È”öùà¬gž/\ÏCöÄIqøyðâÇ]í-ÔE—Ãû›«
-á·WJ˜áÀvŹ6º-þvܾ¼A,Z¸ÂÑ ðnîT, v¢™øcaÞÑ@*IAÛGLÞÙ„¬ýÁé<ç{s¦JAx… KKó‘ý™’Jžø“?µá19_lhØm"¡‰CÀ#¹µ™²-]ŠÎ*—êBùa=Öiú`\°‘šÌĽÄ2q¿ç ~¸`õ†\Ô©ndYˆƒQçûXC(ìˆ}ÈSðäùò¨ŸÉZ†À½ì¯Y˜<L÷5…¦x2°øãV÷Mõ4=é\‹¥Ô 9…X+Ï‚Ÿ§RPÖÛGËu…a¤P²²
-Åé]¢R;”­Ô›Ò²¬[~°›.Î Ì R›ËY:ÉnÃ
-šykDÿ@–S7í3&£¼ÔEüJõòAil©ì _wÍŠËÏ6²O`·37DÕä*EŸIÜÄA}%¶¿SÚi:ÕVXË[f ¦¨§Ç…ϵüıÕõ¡®ô §<´Æ–îö1Ô·ƒùØWºrõEŒCžÿÂ$7ýêU³¢‚På$Øølä7»ÒiBíWf ôöE#Óëóè‚(`ż8ÆÌc#/ªÉ¿‘“\ MnèñjuÚH½Òe=d×\ètn°Æðÿm×ß'ߥÜ:æ®wÝ¡åaë
-ñ„æ¬[ëÓsƒûf-eß}ôœLÑÆI «£'sŠêéÔº2uVanæþÈ#êbŸ°E;l\Å,“±î΂ÐÈÖ¹ê¬Ó.ι’=û_CS‚ÒWÿŒÖ5>ùYÛœ:mj>§„¿ciö4hµ°/D¡fšñiï/3ZÚvI—7?éö,9TéÔ\*Xß¿'È·µ÷Ñvé'±ÎÍÜaÔôM]‡'>ÐÙL;áèîõ³&†rÌJï¾V–Ø™iÜ®«Îs¨þaaMVN$ÃÓËsÖïÞ”ã‘kÖ×è/¼\äåŽ]+2ç+ž’ú, ‚MEç{¡Í6‹U×´ç11.ºÊÅü´aíâõ‡ÕWU :ÜÈÛøÿ:ÇŽ¯‚?W½³žù­íËÚv·Úe6åLO£Ÿ]*wØåœÚYzȦֺձ–å¶•vòÍ'¾÷ÞNJ°rëÍ:%ñ[xΕªà2¿îÞ­&ºwdì^qFÊ?8|“£óÁô@··ì!3uÝ'©½{{h!Ÿ|ÓÁ Ïÿ_¹”¥ËÅäöôOÌÝç¶*ú ÏG6sUç®7žÈöm—‰ßس&ñòiG¶¬;T‹®•<þ´Ù¬:{Gl²å×¢ï¬ìgïEßÊø²óß‹I³™O¼¿ûDΉåöJ“Þe95.ürfNâ·UÏtžÜ|EõgÅïðóý!¿C…4 ÜódùïÜÖÍûƒ=ÞûçßZ&éý*yJdÌÆ± •7_Ô 9U¶òx4ç‡RáÇÍ&{gžwJÈnÙ|‚y¶HÆ…¯%jñç…æ¼ì¾¼hyóLÓM»W/tšÉ•yg¿…žÝ«¶è†÷Ÿ}PëR¶ËMìµZ%R¸ã†þAÞZßì“oD–.µ½þse¾™Úð޾ ÝO|¿•hÆ­”±';léÇ9s'=:íÖ:×3xEB‚[&_r"Û±[ÑfØ–FlÑóÙ÷U /°•/ϧ{oÀ~›µ3bnéÞ½0]»4ÑTÁW²8·¥ÝL±?æt£ì•ËUOõKÞòß÷ÿ÷'AÅF÷Ï|ñ¶…ú>Àî…€kÔ€aa@rNjbQI~nbQ6
-endobj
-925 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 34
-/LastChar 125
-/Widths 2017 0 R
-/BaseFont /PTMDMM+NimbusMonL-Bold
-/FontDescriptor 923 0 R
->> endobj
-923 0 obj <<
-/Ascent 624
-/CapHeight 552
-/Descent -126
-/FontName /PTMDMM+NimbusMonL-Bold
-/ItalicAngle 0
-/StemV 101
-/XHeight 439
-/FontBBox [-43 -278 681 871]
-/Flags 4
-/CharSet (/quotedbl/numbersign/plus/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/semicolon/equal/at/A/B/D/E/F/G/H/K/M/N/O/R/S/T/W/Z/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright)
-/FontFile 924 0 R
->> endobj
-2017 0 obj
-[600 600 0 0 0 0 0 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 0 0 600 0 600 0 0 600 600 600 0 600 600 600 600 600 0 0 600 0 600 600 600 0 0 600 600 600 0 0 600 0 0 600 600 0 600 0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ]
-endobj
-909 0 obj <<
-/Length1 1612
-/Length2 18760
-/Length3 532
-/Length 19672
-/Filter /FlateDecode
->>
-stream
-xÚ¬·ctåßÖ&›£’Û¶mWœT²cÛ¶m§bÛ¶]±*¶­[ÿsºûíqnß/}ß{Œßšxæ3ç3×c“)ªÐ ÛþŠÛÚ8Ñ1Ñ3räÍ­:;ÊÙÚÈÒ)Mlpdd"@C's[QC' 7@h ˜™L\\\pd
-ŠšRò
-üªm{|ÓÂv¸* Þk‚é§¹?ÛÜ—Ní>ö¥©F{1­(zR€—ùøÞ$T}¨›ä4 z%ˆégQžW‹²ÛZìŒê»“JÊzÅïPß§;X`®ž¨üH\
-üÐIí|ŒRëc1:QA¾Õžž‘'?=R Ž õÜ@öíãÑäÄÂ’ñ¸@ ’GúÙçà h©Ux†SA¥7!àÝ´_}jt{êå‘‘â’FX˾*šæ¯Ù´Ë¾'A¦· ð&Ê9H¶îWþÀ¼žŸŽäJœæšËýZw&sÄâmŸ
-쿵$ œÉ„®'~
-j8+¼="HOló‰à|V”LôIŽÅ_y·1A‘T5dSoEy%|Dm3N†Á‡P¥{ú¼ÞÆÙˆ
-šÔ0ã#¢DËFwˆ(¤ ÙÓ§~¾f%ž©Y·˜"<Ø™Él¶‹Ç¹ÿúä2Ý©²HˆîKöÿ¢Õê’2|Cu˜Äï4‡Ùb
-dÇ$[ß4˜h3iï*#§†]Y·6_¡$l¥—\5Š´
-ÖƒGÒgÏt7êz \ÄØSÂèÑÝá Kz¬Å~»šF£¦s>y{­)ÕCóaÑýû²Ú7× Ý#ÓF¾o¯Q2v3äòÔן¼xÒ¾#x9s¬(ÃÇÊÒ÷öUX7Žqb‘ŠŒHö;QºÙö³ˆÊëí:²5p,sÍŠ˜VÚÜýXQý3j .jWô…¼¬[Ç2#oîä2’«²6¢£yé0O ÙÓËø8³)Kz¡l„ïzä^骟|‚gOH)àY îó¸¢e¾,Ùê›Ì,ðŒ‚þ²Êsźy&Ê⥄ñϤì*“@bKiyäúk@WÁ»¾/ÿë÷îÆ5 Ï##êáù@¹‡ŽRƒ;ÇË6ÈV|¶å9{<)¼ç QU+󨉬@"9ãå·¾9Ì-–†Æ¬»î³ØŽÈ³¼…„e†t Y.ž±áWËÔÀ;žš¹„PfÙWÐBNûŠX÷a|nÓd5ÕR©¡Ûo÷¿]fǧ_$¿å0[^ž‚IpƒVzrEÄsÜó^Á¤ÑÏJó„½Ë®Ïô—qŠž€3«Çþt¿ipôøÉ¼ïÆ/ÑøµÑ7d™§©M’°{<1†/ß{€"Ãg'”Dnnë«J0 VkÜ„},j6ä²6”ª ’nå'Ž`gâ[ö
-õ Ò””d³3þˆA*ú<ì;»ãçëȈÏÞr‘U¦Ξƒ ¸R64yEIÝ#ب[@“4ÂS»Ð¯«±÷è(pÖg/ä/ÄX»ÐÖ@­Å»b¾äcŠÅIî n¿¿„îçç3Ã"çU=^ó»\XºwV¯”¡ûB:Ï‘
-[—ÒØ$ ´zEø}:µ`s(éHô‚Å+X—³÷¶*5Â^ÁmøÆÊ$¶ïÉéGH
->êò:Û†ç-àñwN‰
-3“7º]Ç }"}xt¿-i7Ÿè¹½‚•
-üƉ¾ÏÑüІž@S&_#‰= ]Œ% ešPІ¼RŽ”oQÈJt{¸œñàº0ê8&ò½A"zXXª‰„^i$º@õÁh0škm}…“u­@îK/²OÊ\®zOóu#«"ùÈR.¯AÇ„ŠòÙôÐJ©4I°muþ`*?섨0­V2
-p‡÷/ó¢nD(0ÂD
-[Õ%:P+t¦*5Gil@ÐvmY‘ ‚œÁ‰~¦S JÖjn5£ë—ðys¬Ø0ÒÉð¹¼tOC»¯‰æ÷­™ÄiÐDX¯Ð
-Ù¿®;ªôŠD™r]9@èšÌˆ“ÖS|æ[Û, ('|f¤~}Ã!Ónëw¦©®n”Š\8ÖgK½Uz:'=*"Ô›%FWHO´­Ú³ÒèÒõÖDÐ_|ÌÎ\ê\Û
-qá‚ú a¾ýGŸºî“•e
-™âîÑ~)Ü“U‚™$¹ß“ñA=‡C“ü‘:³œW•Pv Æû§hbÖ¼ð»AàlmoÎUÁùË7…¹í \~3È
-ÂÏå±äÑs‰TNŸ +Ã<ˆ•9O¶¥fÈËDˆF§‹ÑÉöY廙l›¸·°6¿33ïáð\1ôb° a÷ Á{ó|³m«é*Ê›}½"é?Yš,µÔ¹‹ e§úPh‹ŽŸXEô¸º\©çÜ[ëgøV3C^à ±çSø¥$š ƒÛáÃ:“É»®’´ ð¾ˆïÅ^ƒÑÁ´‹¶ù´ë¬†)à!jáìKøGR~ŽCkCœùŒBΔí!$ÐdÕˆV`¨­\ ©n¿»Gó§æHðnê Úïvœ&ëÌŠ":—íÞÕ^"Æ;bÊz³N¾0UÅÕ–ûÖ1ÃÁ,Ծ㢫|7ßoV};º:Mý³éØc£ôÂà¤=™MhüCÔgaì‘7¨²Âˆ±b®5_¡·¸/ H:L« >r>Õ²"™y£6o„Aù±RQ ¼“_;N\¾L©µá%7¸àÀ‘¾g$µc [ž Ü80›=~Øü.¥T¿†ñ¥™^šW`/ž$8¢%S>ô”æý XÞ$'ñ.ά¡¥„2Éÿoƒã;At«!Äò‚´žÖ&\Åžã™dn£˜kjÓ¥³< -YRç˜oiæUìÚÆ‘ÌY Kî%?ê5TXrz¶ë[È/¨£=gU0‰Ü„€UShW´1ûºzcw™>ÔXê1§†S\»²3Š‘ÎBaʉ@,ŒëÂ?/ßu3u¤ð;…®MXÛ;Í0¾z“ƒE9–T¨ÕÖ[x,ÐÏsô1Æ÷Ìó–Q£×©VNcÌ…ËrÖs,¨ ³“eeµ‚l€N0j—;î
-??zÜ…¤Ÿ'PìE¶e6¹-Vƒú£ò>áÂPe†–½Í•Gèf5©{AuÔ¦JÑø^V¡ÌP
-:Ù‰4GÌCe*Z­:?ß"íÖŠS$`ë¾*~=QîFf†£¾d5 ?Užaú9v¢÷"“T!KÈ õð;[ùÛ
-ðþ¿$ vCÎÛš,Ù‡¦_¡ÌÐpvœY4Ô}ay=,”¸Ý
-׌’üïa,ZÆ¢O>c!Ö’&,î—AØ$l‹ˆ4`¿Ì™é„G ‘9h{±I K­àôáî·3ÂF£Ýйô±Peûw
- 8ø=ÇC¦ñÙ"ê®ÒL¨ì:0%»¸vÕ´HƒŒ?˜ø¾âù¢õ3™VF _?Òí)Û÷³qoTŒ²>ô£‚ùvî[±~á+Ó ñ¢øøhÂ…ª>çV©Ã{‰iÜÁɾ,ÓPhF°1J4‘÷Ò.’×l"ü<KÑ*ÊûY•eûÊ]XODÏ^,@+Ý4‘‚èbiœüÙÄÛù§ô¥‘mJ÷e g§÷H9×-7,z3’ '‘nKÜ‹)«ZÞu¯,Ú.«9¡²ûÚ3Ö¥$¯Ü šc
-9P “½¥Þ8€Fl‘…RÜ⎩r«'¶&ÍÖr+v¤Ì•³7_¾‡ßm/!ÚûÑ9òÌÀæAVÔ•I°ÃL"ö„O]á²Â!³™¦WD§w<·¿ `Ÿœõ[ï ¼¡°)!䛽'2Rj:PCøÄfűbü]–¬L¡ÅpÝ·mñª}pÜf†Ë ÑSYá‚ë^0Ñx‘Ê·€ýÍEÛÝöEô7N‚)ÕmÑŒªæÀ á7Š•U÷ↇK›—ß²9¯É,‡…ŒŸX¨<™¡ÌÅ…cÆ"ûgÚùÏ=j³é b«*"ìëLZaì{oFðÂ{¹†âMAÆ ßQƒ(°Á0ÖkøcÇǦŽtDþ<`N%ìy0ÉB´¨þ•PPˆ?Ĭ‰…šåxùVày»—.Jª“ÈÌë/vg`ž0zðõà~¬ |ôiÄlTªœXöA¥j–çW¸ӷôµœñø€l/^ôŠ^ÿ‘XÕH6«3d"Èî:¤úá_T`‚¨KÆ÷Xž³¬¦€­À›†ÚÐt¨bØ×82ºÙ‹°Y
-g–w¸Ò_ÍÑf4…,lÕF¯tçÜ äÊåšv…è0 ‚Z„•åIÝX®E˜w²b!ZhÙ”áÉTëkS¸¼SÉômз}P¼½ËiGýÖ´b Â/ÚãzNÓŸylQ]*+ ºÞ"†V!™s¾Ð›Íáüô¸Hм‘ôCÕ93Š+-q¤Õ01=*ã±ù¬uŸrÀeÂËÇ
-{ÃbFg#‚˜–lyù>.i¾™?#E¬4*872lºGÝ›ü”òóÕƒ¹óšAúa§¢+lµh ›¹cÿ[ÅU‚·_Q'ï–íMÇ7&U6æØ‹{tÍ3_ŸÔ_óerˆ$q¿E½â>$zr,¾.ÄBËëDÒ‰ú@û‡ÍDü”Ä­wPL+w1xàKDTjã_žKU÷‡Š¿÷ðN€úè±=©C; ]‹‰ØÑ\z©r¸úÕ~ÈK*¼Æf:²}䥳ý]°¤Bu›B<+2¦ø¥Ø×Iÿ§½²¿S©ôûü¨·zM­<ƒïˆn1•ùu›Ó÷^Vú#:.æ?¿yÙž®ïµá§ðƒ£|`q^ Iš©åâ:kÓãZFMd§Í‡ˆ¨><…÷Å4I)'16TØÍ†Nß°`‹ð` [€r óz‡ÅÜl8±§ ’¹Ll[@Æh_ëí; Hk¢ÉjLÁf'‘Ö%З&så@µTýb[Ojöß 0®šm-Z‡µ<"ÂVç­wSp#H¸Í°ÿ,3L\g*±Ý¾–Ýçpg¡’^uІªH%a€ÃuQlàÎZK‡B£vHÕqe·lAW`¬úÑ–îxüFÁޏ“Õ7º¼Î IhB($y{³ÓËòMSô~¥ã # Z|Ѻ6Æ×c>ÁB’Y”ï‚*¤ÓµEkèið„ûܲ²ê6ë#¥ÊxNÛµqqŠ®k%:ЂÃÏý0{Â4Û¤8¿ŸJØTá‡ð~UâjçµDg,Vå|ÌÙ)îmÛ ÁÎ n$;ùâßÎWûË)6{ô2÷Å1§ßÿ2_Q.4ÓZxWG)ûqŠ·óGŠõ{RÜh¯ºÎW¦ãrzÞõÈÐKËDä]Üw¹Qöº¯G…\å# n—ë{aæÆŸð»Â¯U"¨k;`aEw}øŽ¦¢´Äætf µŒu &ßéæsÜk¶Qk¥pxNšnL’v’Ô(|)²FðcˆÇY£0c…‚Ø0cX{Ò}hƒ¸eÐúƒKŸ:†ohÁhdYÔ}îw¼Vj¾]½¹cû¦wní†PžQY@V)[7ôU5:Ò³ûÑ
-¢ðBîBZYø ¡QÚ÷¥Ä:_}ÒbeÚ*r³9ò”¯Ô¿åÏ{ݘéËáªÝ]1÷WšeÂ…5âo#”‰Nb… ¨ô>¶ïÓAÎì·¼žíÉzàá]M¸Q»„)ˆ'°&má"²‡8øg+Gž‹-¯ðJÁÙ¶(!‚d%šò÷F¨é’‹Íü0ÓK^žŒð §.Úf9Õºi"‚Bœ‘תÂh<MÆOOìu h9ž&ZO{èìxö6"÷rWNÕ6Ù$Çøâ0™…´žUîÇ>‚0æ£Þ·/Dž¿V™¹6j©Û̇‡o—
-_0ß9ø™Ü®Á³@3&i ¯)BBD‚Òr8ª¯sÿ’¶þø¶6ù5EåÇÁ‡›3§ŸÒûišI©R«‹ª]S¯Ðeÿzý!KþãÑÑÛ7çÙ96@:áO´ˆE(Q`¡W¡ÐêgÉCIà¶ œ7·@ªÁ×N~ðOÎÏL ÔšîÑ„6t>æ€ñtFt&QòŒõk©ú¡Ì: ZBw˜0.•Ö
-X˜DöBà矉uƒRá±êëŒãù³"‹‡»½øS,VëUgÈÓÑ×Hë‡ Ö•Ø®ôh3ßõ½@gYa°«¯ÃK}\)ÚÖ„èoô}7dÔ{Â+ä’רþ‘ǟúiæpC8[bk%u‘I0: ]¯úíŽI*]¬NꌕԲî<'âÌ€Dq¥1öYßþù4ˆù;4Ù´Ô˜¥^ðžöE›:ãZ”¢‡ÖãßhSÁÒ"”‘æeGq ¿¸ú‚Ò®ˆ÷ñ"‰v=}ç¾ÌÅ%ű;>RÕw´ºÊuú)DãPèñåVÂ-{ i¢87£rC ~zIu(a=/åÓ`éÇ
-`JVæ€ÝM?Ë-*\šFì\q¬w÷4³Ç"Ây'LÜi æI²úвTxÝCxEåÇ7#Í=䬯šÐ]ÏÂ)9™šj^wpŸiuØ•°I/9c½šÙ;ˆ†YÂV%íÇ’:ðgEFÙÒ·O(–qS”•=ŽM.A¥ó¾5Æ·ôŸ·¸PF×/ *ÝXåï·Dê,oö°`ÐO„&ÄÓú1¢ç)ã”au§4‚x­¦"ô£šVKnþ?af¿½ðÒâº-©Þ(äM×4jý€‘âª[ Âx06Ä–3± ÊbV®gG¬$¨ˆX”£þÙ]0ML]B@! !k“ö'9iH„%7ØdÇýý³ê«VÂiH€ð‹Lêõº «§ÜTÉMÓ´1=1TäöÅ¢ÕæûH&LÏ5« "ŒúÞ¶jªÏa1¾5e‘ׯŠ9³dfƒC|—fS}½Á¢^3²Ry€!©ìcÊ^Ù±•CyÞ>æäŸGY›µöLˆ²Í+ðüw…¯‰‡›]E™†ÏIœº#½Á”“W¿ig/€¶0@hçnlÊäª5Áç®ýF6PI¥pKˆÈKUëqßoÁÎJôƒED=§É*óS½PlBø±a`
-^ñ2Ý9á4GÌMdHä:a,h&y að;!Ù$õÖaÖ8|Z2ÃdÞ‹J‰Óc—…6‘Ñ}Äu"åÈÄ7)õ)ÚÞ”L#mõ0n—Ü^žÇl¡~c[øïz¡AèÖЕ–êÍ™qùÐEm)PF½÷¢xŠÔ–ŒisØ€ç³D6 &œ<ÝÍYï’Úl¥ç¬œs·ÚCò£ypKWFsš£jƒ“ÃÉs ÈÚË~
-¸š4?æ·q|CÇÂ[9ËÞnÑŽ¯U…”kCWvܾOøHB ÔfGpÊñ¦Ú™uw"£Û¬‘M+<ÂREÍœËâ`Ôщ) SßêÓk3—ÌŒÊy‰m:ãs‚êf“Bܲþà ĨÙþ†¨4ÃJ´§ ¹=µ¬l%Ž»Wa*ÂÎK6#º=\{œ˜{áÒBz[òaey}1i%œ1ˆpÊeDNi±`à6^¥
-“V-Á …ê©>Zw>î^’:ðëÖ£,AÎó=a¼PP?N}“­8s3zxC4-áÙ'Ð@¢¯Äa0½ÌåŠ&vù& Ê«¹jÐ-OB;ó¹bîAl/­äÝÈ»÷ #o«²#yÁ?.¶Üè© ®Ï²
-sf"7íȘ'z½½Aܬù;˜-Ø„º5½ŸPoö’RnÃã—§cÄ­d>­Õ‚ëmOévXš}Ý…["äC»Îµš Ú·ñfº ?jÊ…Šs$!ϧmAb÷yg‘Õ3–ã¾ú©Ÿ™ì‰YÊIÚÓjû[«Òaî ë—e·Ù{/ûÀjÂé‰õÙÊZXÀüì˜à äa.ð–Ïæ\àß›¶üؼ¾~ ê¶Éþ¶ü5öZ š‘X’oJQ˜iOÎãÅ[=Z)é!³»&ç–ÃîIëBå\Ý;»"B7›§ c)Œ—†Þa%ó‡ŸTÚÅLn_´´i·‘c•udg/U†Å=7
-BÎA>ȨÅt»î„ÞñMt7¡Š:»ùœ=2>ï((Ÿ!{GÅo’8DiåGÍlœ ÊãVÍÒUŒÖº‘jÜ”Õíë
-ÞÐõ)δ¨ŠP=¥ŠúçÇ ºÚiÓNRŠÓ€„™m:ô¹¾@1??¡– ­”x!MÕT•ÛŸAsË•-&I˜·ö@ãݪƒêE!F_Õç5²î´ÛT² «ô±.è-ó°{m”´YÐßžëÈC&ÐöºoÕ¬ìêW5iø·Š ¹Ž–ðûï~dÏFœöN{uÍUg¿a`BFtCÙ¾VØ-¯Vâe*ï@ì @uòQµ ä8L°4§2Ir©¶Ð“†¤o§¿Ù §¥ëÁIÆtPÕ'ÆiÎâsëŽÉÇTЃF`Þ™0Úu­5hJ»½ Ù‡,KíÜкÔP¡f|éO7§Hf|dÑr^kç Žß¼¥'@>¢íð@‘…„—Ä”ÄÄJÄÞ¿Ý>3„Œµ¬èZˆ›Ù¡R^XÚ9ÈÍjÕy0”Nš¯s„gA‚îWˆ™[Uú £™2õÞzבl‡KØ6`ñ
-î†Å×°æËùß'™+¹O?àªH‡q@…
-…eȤ½øÛ ]Ûq};—¼¿ý%W[J¨÷¡¼–Þè aÁþ[Ò-@^ŸFðGH¿ ìÏÈܰ<·eÕ@wô¨‰Îy«(‘«xd;{”«‰U¸otÁªDÕL
-˜ªˆÍ|Îóp—aÜ^§9Lî÷‹¥¨`=1OþL
-^ú”ãh@RÄfíÁ•6—U
-×qóp&+yPå°1¦àÙÂ¥å Xˆ|¿ð$6Uç»’ÄŽ¸%¼ûm'v»!†æ^™íç Åä.°¥6q2Œ\õº«CÛ7E.ÄÔ—¨lwBÂæ8=÷_so09Fµtéf²ÅoÊRaáÜJýèb;†xŸ)ォG œþW¤ÈùQw¤ØØV„K˜7µºy$•o5MåÐà,=²æ_³4¥ñ3ž•÷°Ÿ
-áB«¦¨Û$EZk°`ë¥Y 5qÁ[œù¥ëÂF… :ÁƒN„´®jîܨ€›JV[‘
-ü™±8Ébº¢¾9àѲœ&Â&9 h°¼§!`Z„ù“½M$¨'Ì é·Ç ˆ‰b|ö]·[EÍ\çtHL”.=MSeî{F"ä(ËfIÜ
-ˆ4ƬÆx»ák&ªˆü• “KѡڪƎ5soõUKæU6Û‹m™³Ó<{WûFgsü2‘“+tëÑɇ¡ˆ§Ç—–Fë¹mù¨ö9¥ûŒí¬ ( Q«¿˜?©Fß§$‹OÌr?ãZJŠM¿{m9ùœÄ1+ɰ‡!¨Ú‚§¨næòY:ŸAÈ‹Wv¿ ˜iq“~ˆRŠ
-íqÃoØ8\"ÉÄø‰m~'8 £Éùª¤\"~Ķº…puX‚8R±·ù;¤‡,qÞ\;1´L AÈ›œ>lϴʘƒš¶ü¸\UÆækèK¬ôó(29÷ðJ3ôûõrï˜O²âåMçÑñBu”ï§‚!þ*²‰ñØx“–ãfðÔƒªáFb6ä([N£+þe÷#Ìó,+CðÇUÓ3Mcf‘ÐAñn0Ja¸Þ.H”#ÓJ>U³ÂåbFµîV?4™;>
-Û Ì_÷cvDMÄȺ„‘)˜3,fÅ·„@sž?X³¡˜ò\ªå$@Š$ÈW;ö=W!za(NGv È(èᇓÃY†CõdQ1”On?S9Ç>Oµ
-dõ›#.
-óÕu«ðaxÍ'¢T´Æ49¿}
-„¹ƒ°yeàêÙÔSYãæœjî×]…)Å’ÀY¡vSWòÀ­¢ÒGÕîUê£ ãþh4× ¯DTÚè¢Ë ¾ŠŒ}dœœ'.ßñ»c)sùÂ4E©”€cr'L’q!2XdêFÒ±!NMi€âñ¢ÂdÖ |H—^ÉuÞõ“ù¦?aÈísNfBèÈ(û;Ÿ>§[Q-„- ï$àKor§ËûI’;G¸],˜úJâAžXÚ€àvÞ9g•0žh}[ü £Å‹—T€%/WHþî×Dªÿ~Å!¬„ŒµWJQ;dZUüÁˆo 7êU ‰iT†dGà!y×"?αLÛuº·Ô~¡šŒ{U#[Ö÷g_SÚ®s·ßñs=„Ñý}Ž´þ^W@ƒ¨IÙ9¼£ýè@‡}Ó$0_>)’¤Èz®Ep,—ðóõè¦
-ÈïQš4Zl’€AÍMNÒ1B.NèL·YÏ¥£ÌÊ©“0d›±)š„¢«ëOØF'Í<I('Ó.DÁ=Œ”³‡pEd­ùØøõmQÜÛÓ
-~z#ë6 å˜Mmné©^«ŠÒކy§×ù{?¤¾ó ÃN[„!H-Èâ–‘Ôyúê³Ból«nsªYòU4Mö¤ ©0lÕÜ´~µÇê½æ`
-chô„, 3 ‹ ï‘“#•ÃùG ÖÑŠ9$5à »l|ëQλM}ž¥’>‚ÈÔ!¦}™n¿°B=…_½' qŠ=ò¼²D½JQ:|4ù "V&71¢‡»Ê´XGŽÌ˜Û6¸XÉLjðD^«Pìˆ,0ª°>«ÇŒzK „Uê• Á;ð# zJí™ÛG ÃLtåk ­' , 2ýòô™ÏªÍÑk|Õ[~>'}A–ž­h¦M$™O¤{É™™aý|Fo¾á¦›\basmç­‚‹ÝjM߃½€—RÚ·ޤ`W<Tº;ˆˆ³õì&> 5YC¶]Þœ}ËA… IñFÝi„—¤>4Å1 <ÏÜïQ»ÔäJ!¼@ïµ/g”Æ
-¹?¯²YÉLµOÿº“oc€ùÃ^vu?ÂYáQbâÔò%hñ£›Þ|ù:µ˜Âôʼn "¶®œ%v ¾õ
-U¨!š»N}œ Ñ“;æJ›ªÙCĵ?ûœôý+¼<¹è¾ŒÐp—³[»õþAN
-ç´hô@ª{âN'H_È9S(rÚ·kEü&ßÏ•tÛª.Ü,çx>A(wYœÐ%
- ±(ø'E5 Í0Á{'­WÈÐÐlûù 4·Oÿæþk¨ÕÏÙ€œ“æ¬)Tlý¼SM¢ÌºtÙö:ʇOI[|¹,™á
-¸} ³i¼<nU·ƒÊ'D†7Òz;%s}S°l<•’y°46Ê–TZ¹eÛ]DÕ\Y¹ñ}˜en|(xèn)<¸ËŒ¢G/Çê‚«þf$'„ƒ":èuë ìðx/’<€Â?‰CòSÁ064qcZŒz¸ÙÝü\! ;‰^ ¼·'PZÖ‰EvdŒ¢bòjGYþ=Ñh/«¹È´®ŸË $8éÈ'kê¼²à
-%gsðùB§*÷Ä•TÝþô¶VÔ½~Þgÿ°s-Ãê¾ù¤‡I3ôÀâʨbŠÅ4ZŨǾdzçÏ—à Áç‰÷ø×³ŠX]"ïe‰¥?ÂÛjš…<®ÛsÒfÔAgV+¢ÔŸ8ýdÚ¥_ÜÌl:ɶ™q
-L! … a¥,C-CŒ}M¾~šÞƒÔCzâë—ò '|;¦DÜ‹ Ž‹¼”ýû·NsŠŠô c‹Ð9T#qY%%ËGð 0Ù¥*÷f’
-.³ã׋ÏLH]DÒ.½Å¦œÈçûNcxï*ÿÍRŒõjHGmwr$Æ›~üzXÉõ½c7G9±fRpÂÔ›õñ`ç¾/ŽFöøÍ¡Sësöe‘Ä¡ûůjrv±K ±‚º‹—li¬@b Á̧òÓµ¬FÁ§”L¡s¾´_úm\9G›8+¥£XmK‰^γ³æ&„m©œtðÞì]ª_l„Š@O3º] q—ÃX;Ü3œåá›
-kƒãåxÄüÁ‡¹C ¥"QPf¦CY_vŠÓÑô|‚ŸŽîdœîÃ: eФÛw‘éûe« VÑê–†P-o‰ ã¶*‚½—€:GçMøŸ¥ÀOr¿/CîlMk[6qÉŠP·eÙ0ÿ¸•Ëzý?TRÈõó·—Ï(ªå8“j$27BjߺÌèÖ–õ¦òãȹÿäâÌ-:N ^TüÚO`bŒvï ×o(<>yýeþðHó‚Tƒƒ2¸¹ÁíåÞ(å2Çæ¬9½³g¦F³Ù å’Ë?q…ÃNßJšPZØcš¹ÔiΑ88›ï…wäD&oô\<朕çÞ‡.'cve‰kÎþšØuôI¡]Èš‡þý+‡¨§Ä ~¸db D:{‹ÛÖq •¢j+˜ZÖ+·?ÜT±æ­ºŸÀÜÀ!
-û:%é5¾¯åV¾çu™J°5Jòb´â"2jþä³àí=j¹ òüÅÍ·½OÖ±¼×Ñi¥Réqødoeל}½j(áIaRFT¼‡{°˜Të‰n°‹W÷'½y@,}H5»A¬8ÑLØÑ]ƒ5ævYÛÐD"ßïŽÊDʺ°z¡Ž »z}ð…ˆÇÄ_@ïO>s0<#gr¹ñ´»f!bºÛèÊ5ƒ¢Ã–x¦ÐJÚ./°A>x»! jm–²sÞ7vÁßC}AœíÁ÷}Žn4XìÅVÄés¡%›†¹¢{Pû< ´éÔ Ì7¹d±·ÝÖ.´?²s1‹t¯}¼;¯±Ý½’×Gû»{UÔ.!ó!T-ºž¸9Çݯ~_’*gûkèŽvª»¦$û¦ÝU‰ô¥5Sü¼
-¨ïÃÌ'l¿:¦ðè;{3¦Íäeµ—Ä;»¯McÕÒÚ-ÿXON´Â½²ùr0‘õC€ƒºÆ…L9ꉱSWËñÛÖþN2¼‹ÆvÃñ’ýÐ È*ö{ä•k^‡jogÊ"oØÊglÂóIüPÚ}tq(½Ÿ
-QCm6õ
-Ê’¸È˜”m€¿™»_–pÛD‹KÅ|iVWeeÀÀ«‰ „lÐÁôÿê4èT0Éëë]Ïd‹;PL¹£¥e!D*%)f­­Ð¾ì {ÄùíÐîòsÃÕ|0ŠLï-ûÈØÀªY‚èZ`ä<Üu´N!ìÆÂçaæ¨ÞôIJE OÕFÚØÙ‚™O¥ì鲟‹„œ*+aB5*êëˆYš0MŽŒ£>ÂãðSΚb¤³(=nìj‘·æÑ4W­ÁÂ-ÕÏ·­_ѱîíô‡Çº™·` î%âg›«ïW‘iІJmøª º¢Ô††ß‘$1½ÑØ“](snr…„L¹Rœ±¹UbµVfn3]ú‘ÛÀáˆÿ3È9ÆTÄk›“¯Bšž«µW¯ôoäˆ9u“lܲ‡vxvèô3Õ ÖÞlQ;, ÿ®w½ß,Öf9z ïï‹?ŽJ¬äl* +pË(ÑMÁ™ž eF×gº‡@‰<·5ð˜MêÍ jmòÏ °ñksŒ]VY:zÅPÆ]•a£¿u_d„‰ê`”]&6ú‚–2#³ëb…S–ä|_'UBÉ9ÇØÔ*+‹©´ËY[–µ²zŽ’w
-Áë±(`°1BøÍéÑ÷kL»;B„/ˆ,à  G70“›(Y:¥ö
-ùµi¸ŸÔ§îwX\Ÿy=rû„7"¬ˆiÝe6ÕÈý`Cõì¥oØ?g`ÍF朌‹ÀH‹†ò×ÓÕÏ‘`ñ» ‚ƒT~65Î.96,`³xõµôlë Ä\θ;&¦!kÇ×å ÆæÁJôV>ÓÛnQ3­‹c…8¤„½aGãÐ$îÉ(»çf†A*"CÛï}„:¾¹ Ìl{‹7nN^ÐÊ`„påƒå˘ÌV—Ûyþ2>÷{Ή =½"ž;ôl`¦GS=)ÅhhR:ê bÞ°ã}µ;íYÏHey~aN'¡¦o¦NQ»ð%`\ô?G°2™9×Á>ìSЬ7…¾»Ù6ò_qÛ§ÍȒΊŽ¤¦vغä.Ù#*Íõ¹²G-–à°Ã~3º½øÕNôdàÐH¬|ò€Ò>I6]ñs˜öüåÛ{ñ7cÌ a8d?‡ÉNV¦æWíûê^ÙŸ\W’é†;ˆwÒ`–v0zA…füA©‰õ§$=›Ò¥˜ÖÒGVöašMŒs*(±Ó8üì¹äô¶^d•àŒ1÷·»s®ÛCºDdq
-I¢BŸîÙ¿¿²ÊXãÞLbÁcÔÅã‡Î0¸±hÿŸvæû
-‡
-ïÔ2AÆìöâ©eîÛ›Ó¦;»ŠÞ¹‘°!¸„è`Ò]åU-YñÌëŸò¬ùM5ÁF³·&RGßw´+ùûè8šŒÁÈfïyFW OU£wÀº$¾¿@i¼ù9ºùr¹>ÒHÝÂö§õÆe¢Íw{˜¡Ù
-,ùÌçÖ6ºþ‘ß‘—§ìä*ƒšA>SxÏå’ò§Oœ•Ãøjäwcâ]o¸‡´×ç?e•é%Iôm ßÞl)·œ?Þ4‹™æI¿´—.¦Äì Ê×AÖŒqh}Ä_J¬Qêõu‘¦ZX´y7³xÄ,i’¸«^飯\µ1) Ík„ÝÅ TÅ>¹Þðô3¥Ÿ¦õ1!}KGf³[ZdɦÚ^Ýs>¶ì¨¹…ç›ý˜“]û·çÁ ~V\Yƒ°ÕæÆÐ¥–tQrÿ=<e¢w†|hó$¿åÜ£ëØÁSä<þxØI'è÷¤ïëÚ_tšd¯„§wòÒs_×àdI#ØÙÒ¿˜
-ogÓƒ1GC6E®Í]cdv®l}©µžÆÍE*û‚Xí øVr,À8è–>7%×5/ÔQz 6@^î$Æ
-Ìkª¸â§hDlU¼v7X}ñÂúZ%fòb+†Î5ƒ;TÅHÿ$IÀÒR.X/+ùeÌö2¸Õ4•õ…6È(z¡ØîõÉìg,Í¢ÛäZ}~û JmÕg(±èe{u›"&Œ›Å?c
-áò¼\¶¿ûë¦n
-Ý)¥ÀÓ,Ú €ž–ñ;Þ©x%ŽÇ*:Gï­Ì‘bàÞšÈÚ±ÓÀ'“(' ø·&ᦗ„Bfs^0©^T
-i¿5xÑ@>,Ïu> w?tiÓ¶0ûôIÏä#%(ù‰ö
-©«ˆ|LO†D¨Å÷¦gîÑå¼Þ8vÉC÷I~®O–ÙÍ>mŒáõÞ¢‰‘}‚
-^hâŒð·¹ œ£“hZ™Í/øÅ_à7œÀ+P¸¸&&êåî$+Nȶp®Ô ~I(–»c¹ÚŸYªÓÅg¶%ø¥p%ö>­’H¾iL¿\ÚõÐß(¦µâ_«8Cƒ—R{‹
-޵rð¦ëØíû‹0Ê{‡˜ÊQê¸2‰«Zœa‰ƒ†*7Äc¹äJî„I›ÏüìÒ]©æÁ 1=Š¡å©òñS€MX¡¥GMøªéþP¢‹:*½ÙOT9†ÜD¨*ÀzÞÃ*Úž“¬ÿ°Ë_hg
-‚œ«ê9ŸjˆŠ"J7Þ®(ðhT(ìâ ª¦¼ÜðÊ™§Ä‹V¬áÝq
-oò]ç }£¯9B‘7õ· öœH{È­’ëæi`T&éVÇãs"¹‡‡ªÃßÛçVMo¼iá÷׈â{C„^×;¿_g¿`,·÷þ2 Ún“ R ɫǶ]ÅjÍuib°ƒãÏV!QÏÆ>²¦aO<ö”ñOÁxƒªH²$áófe°§Åû›ê¥úКxÇÑiêÅà>ò$­–Ìy"-Ú-ŵ ôý‰¤Ëq ¸ŠÖˆÕ"™[Ø m¥cA¸¶¹"t8Q+PK¥ìó÷Ñ”¶ëÛãh_“ ®$+ƒº‡¼S¾ÎúÜþµ$áØ™éezv~7EhÅZÞ‚¥ÓªãHÝåûm®Ý‘(ãŸÄ"Þïòwnúê›»ÉÕ”^«¦
-endobj
-910 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 33
-/LastChar 125
-/Widths 2018 0 R
-/BaseFont /RPQJMY+NimbusMonL-Regu
-/FontDescriptor 908 0 R
->> endobj
-908 0 obj <<
-/Ascent 625
-/CapHeight 557
-/Descent -147
-/FontName /RPQJMY+NimbusMonL-Regu
-/ItalicAngle 0
-/StemV 41
-/XHeight 426
-/FontBBox [-12 -237 650 811]
-/Flags 4
-/CharSet (/exclam/quotedbl/numbersign/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright)
-/FontFile 909 0 R
->> endobj
-2018 0 obj
-[600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ]
-endobj
-872 0 obj <<
-/Length1 1620
-/Length2 20127
-/Length3 532
-/Length 21036
-/Filter /FlateDecode
->>
-stream
-xÚ¬ºct¤]·.Ûv*I§cul'ÛFÅNÅFǶmÛ¶ÍŽí¤cwý¼ï·÷>cŸóëœý£jÜk^s^×Zë5FQ’)ª0›Ú%ìí@ ,ŒÌ<
-ükì{ýÒÂv¹+ ?j06Íðün÷X>wø<”¦=ëñ¡êM^çùPÐô o}íä¤;
-dÒ/EN¿ÐˆòºY’ÝÒæ`V?Ú›RRÖ/ù€!žédu‚»y¦ñ§p-ðÇúòä€âk’Ú‹Ý…Ö†QWx~ñ5ñôù‰jh|td¸÷ºÿ.'ž’×
-ùk¤¿c¡ ¶Z…xUó«óö”ê&BÏØ>Ÿ¿ù‡PvE‘妷‚ïÕàO͘ƒá†Àl¬„ÔÈW"æþx²  ãŽïIx%Q¼Kâf†Îo¿møWcwúŸò‚‘ßÄÎ׊ü;L§Ö‘;æT° £6®ãGvíÌÓ.õ=n¾Õ.7èX¬JÌ[ÃZUýùbªÜÁ+_®›xF»-b¨À( ¥ã©ƒw¸ÜÄ$Ì Ó… (_,Ó ¡Ã4ŒS4r-Ù“©¾ˆ3‚2މŒŽ$¿ d­ô“„}¼Dä9%G¹<á¬;Ö6®£ÛA‘œ´Øpÿ (wßöìWŸ.S?62=ú0z‘ßãš@΀ƒëì˜ç3¹>9È%æÒðOÞ`zŒ—6"Aïܪ“³ÖSª Ò¼qRÉŒ!ÝMë–›Å/˜6 pöpò>ÙOBˆÁrêO<õlb­‚‡ˆà\jÑhŽ!··qè™•íº”…u=5±—ª——‡³ŸG¿:×KÎ{òɵÅéKœJC·ÒBµ¾/)qpgŸ”­µí‚ ¨•ŠgœuºœÚ]_ÕÞ´c¸Cûô¿Y‹ü n¿3Ç aÉ»ðSr
-o(:¨Ñ_‚å¤ñOFõØI)Q’l¤®‰Í;TÜ*kÀ2ñ´Ò(ÏË2+­Õ»ÐÝé¾›äAM¾×Q­?A"tto¯$ÏÊAœÇ;tÎB¾ã¢ü1jþUxq¨eÓÒäþtþcÉTI€3!š@X芆eÎ^í'a‚†:U+“òÀÅ$˜ ‹EÕùÆ
-a®;?o®åü+L7O7¹uv¤ÓuÞ̸¶çŽNóæî™Éñ¢ÊÏC°¶ŠæÐ‚Ú\„P¼®ˆ™ß¢’ 1âÊ¢Þ zO&É·c튩È—©7•Á¼G}Žúäñʬ!FŠd1‚_mÅ€th¬×Ÿ2°?X¶'9­1îî»(RŒæËÜF1”P (Ê·úí¼eô<syôA$”¨…³Z‡j?¡»½¤`y×Ê ›¤»€–ä…@3éŒ2äa MÊàT¬6¶†ÙÁÜßñÁ.ïs—f }ŠrõEKæË–4ÅJmþHž6î€ï^çÔtV-O4ë"²$ì2ƒë†`zê%ž¦,"þ¢ý_…Ù÷4Ô›øãö•÷ï¼f=hR àˆ¼®<|Ó$ddð£Ì…ÌËÖá‰ñq¸WœQÈGðdȾ×-&üäJ6fëÏurþq^KÐk\#º“4”ÿ8rÝäRlºQ
-Æ9vrQÚûaÞßïèóQÝiç·Äjí(^&+ MÌäkRÐ<7÷u¾!+o­¹-}iC¼HBb×*1'O. Íþ~6'j ïó˜ñ+gt5û¢PV4घ¿Ô ÚóÔR¨s(S¡šq¹"yV‡ôîHvhp„3ëÜHG¹çòšu¼ÉÅQ›8 Ô%âÛU†w>ðÛgã‘Ûˆ}­H}öE÷2OöÑgí
-‚7I•{œP¾©3½¥Œ/Ä[Ö[ªp«Cƒ’½f±cB8|* ×vÞ’(2M´:G‹çeƒÀü‘H7þ5'is=½ó{LXwÜëiì>Aº„ï=Ëo?F—Aµb©ÜħcL·¼ž…×›ÂY_‰g Ï¿¦©èe‘O5ÙÀܧâí/96]d±ÊPàH]~+B†<Ô•R–…€õ\ͯ©sðÑþrOŒ…[’½¸m+þ¶ø¶ý©>þ½ØRkn„´VÁÁE.ÉYSssF‘kÿ©Tââ.ŸŸ3hÈŽxÒµ¦ö–Ñ9õd¨HÎ6
-á]ô
-ØI:ý}Ÿð…îŒr \Òv-`÷’¶­»j³œ³·í}
-]rSÓ|¬U]Iƒsuoé$½9¢c÷U¹“äx°Ð¶¾Ø¤Û‹«bÜIÅQ¶?³…á6.S¼à‡n|ÑG{×BõwK¢ »™(‡§òq° 4Nqéåé»iÁ;í¶¹öU‘PÈœ¯æxÊ&ô•¤1S¶2ó¥w\·+zê›DJ´v¸$ÌLßòÈîk>^µ².L±¿²!ð4^¸“PÔ¿¦.¬äïŸ(¿'Ú¶£Pb¥i‘÷êzÝûDUoÀõQ
-0E†IÃZ^Šÿަւ0›2%“ýJ§^ˆVÄÉk"y
-4ÑÃ¥Ë2š=¥«UkW3G­{—ð̪K¦¾(ÞØ–WŽÓÓüý®9’ã‘<džâö—ŠäÓ^Rƒÿ°PŠÊ·Zl—›Tj­5¾9.¢"¥³f>89ùIÆvp3Ýé9çáCDq €¯¹/W4=¹¶dopso´‘‡À1¶¬´’møÚÉ6]ó|"쮘V»ÃJhO5‚°2Ó˱‡7Nß¼hC;
-®@ê#^>«\×Ȳp‹Ç*, A_ÓðtÅ âqÙb1?&}=Ä2ãÒ]óð€ÆžoÑG¡PL.]Bª¢E3ý7z®Æn¸c<®žepNwd¶\ñú"¯kÑ;ïX¨‹ЀBgN}®²ûàóÃÌòhkrŸÀ¶Gâ{°l:&j‘ñ™û ^òÕPkNÉ«±LÖñü«DÙj‹+Y9‚dÌœòÖ„Ê—6<€ôVcЧ‹Íš‘Ýþ³¥SÕsiÚÚ¤Ûò>vü[Âë
-Ð"$©p@zŸÖÐGƒ›‚·^_fñžtDPiÂñøËɘ.yÖÆÐó†·ÅDã^!¡¥ 1âóÜ,óšªiÖc.â4£÷LÛ}cN6\ÈÛÐC•Å?ÐÖÔØ5÷Ü tbgipO ‹¹shÛtƒt{ J'uYÌ„ÕÑ’Z6è¬wßù/NÐÈy0¬Ö‚;g‹ÖZ0….R;
-*Èí­´âT¸žfWÓ3Õ'7)ÔYß=á!`ƒSé‰7ˆv¤U¿È!~{£Ø1Çœj÷àºßŨžG ]¬ßg•,½[ W,{ukRÿÔj•Å‚èÒ<’…æp_íÖ©ÛRV·((þ22ߊvóÇÝl.ˆÏÜs/¬U¡¥&‚ko¾÷ñ@ÆÇÊ5V…jj¬a `N}ÕÆêŽáOú
-–ÙýÉvuöù‹ª¥'NP
-SèÇ´FÞ¦…ÛÏΚ13±©É'æztƒÞm~ ¹Hº&¶Ñ~ñÍhŸŠpu¢h^ Âc0xÆ(ë7\×[:‹¶q¢Íš-µj“’"z¾r§YJ÷-Ù6ÔïnnÔãõÍÌI·n ïS7ýö4¦¦ì¾•ôÈ@؈F9x&«s î|×`pu¡eF`{i~¶ÙƒË!$jmJt†œ/üaâ\èÎÅNià"û*±z˜Ãt3¬Gs€µ/Yn ~³1&¾âÆ0tYœVáqð(ê™w†—V†Ÿ÷ :·ÉóÇotxøí…*˜®ñ§õ‘á#Ms9½C¨9ðtIL³òXˆ×íŠçÝ€îWÞ«Ê.­’Âå݇Ӝ,7§©Ù7‚ÆQƒÄéèd`³Ú³“t÷¾k œM÷ûx}Pïïo\5Ö÷ôC§Ÿ®Z*ïÏkm Rã̽oÙ° ?1DêñeÄ'Ÿ Æ à6…©jb6LÒë¦Xšá|—?÷tKÒ:6™Ëühï;¬p€Gˆ*z µ-Ox—oÂܽš°¶çÈÝÔÆ Ñb„,I­£±½é¸NiÉõÇ{^èd–PL[‘îc±Ø™Q¯dZÃÙ&ËŽA¯î/Ú;!òùpÁBßÙsÝO‘ ΃3ײ³2¨%ÖuzøÄ[cé‘Ù§‰ÂïŠRfUÔgçúW ·­ºì;§Øø8ÍLЍék˜"­¢¬tµ2¹ešò K¬ Á¾9c $rMe©€€Ô˜6T¡Ð‘1­QçTè{O–ÅË]Ñ’f³ÕÓ9-©þR[0£Nk¾·ýµ„ ŽÏߨNïçÂ"?Gw~\“¬…XH”ã\lã¼Å_¡’”*GwQQBÁ9+§ªÁ¤Â¥à(-n›_Òx3“mì‚gU‘wµéíâߪv6ºÈ¯pÓ[óæ¢ I´2Ö6ß ‡×ÇëŸíIGûƒ—e<ªð1}xçªÀéž~ôá*@O€ô…¹É¶s—ê>‡Ú{#ØËz߈¹ç!žå<×Ó‹¦g=‘ÑGHö'²Ôe ȱóŽõµ“:…Ÿ‚ëR,q@õû´ùüqhŽN\VeÆdh„ɘB™Ám*QZ!cJeåMj…Ïòá#éå8;¡H‚
-¾zT…¢gôOÿ’‹Óo0-šÎ०²Š˜hÈ›9ÉÈ%m-ÜC7‚µ$©OãzAp9%mëƒf 7ìÄîâºÞNÍíOKB¯Wˆà/°´e¡ìÔáo~f›]{ˆðEŠ˜*ƒûN·G®²ÎÏ«Eô[‡ðQðu1ªÑÃ(X²ÁZû¨Âx5¤ 6™œ¹¯$ß's.1߬)Ç^r‘au5nUG‘áŸÕÔ÷TÁzÀ½¦¬ÜÌ léLd i\”aÐZj(ô ¬õ\œñ,ôS–W2ƒo³‡CÜ`e­æí㦃F$êuÆz{†ÂÎK!K#$
-bÉbðúuÙ9ðeÞWsS†ÚINñ­E$ŒcD3>ä:ÝÔ%žÐçIr<Û½;åµV}$1â°ð ô£õmõ“¶)L£BòùP-PîÀ™ÑD|=ÜF—dã;õ…R^j ºßsÒcþRÖ'šîϳH¥¹¼+jìF+ò˜ªB~ÈCgÙ5ûë €UÓ(6û˜Ý#̼vÀ£Äòq¥þ…äž“ZrtjŠoe|‚+ gÈb ÇXxÞÈÍGŸÆÜ/bøc§èüv+ø²òkbˆ BFÛ;l'a¡|E]éü×6téC¿×0q‚M™±I0êÇ`ÇsZ+£.ÌgŠÊ)ùcs³½-ãVé¨Ý³·††²¼&D̘ô”@¶Ý”ï³Oœ öø]¥ÿ]ƒÒ˜,±Î
-q œ
-Çp\=Nü¬4··
-d;uÌ’‘ÜsÛ„÷_]e pxßÁÀ: Ïhâî|k±·¾ö'nTdÇ2å2fu·0¼e}XÇc*IÃoô}xFe6;acÑÈîXúúË¥áær,–êœh¤/º9;`©®GÅ–° ,ÓH>%Oà"û|?éJ3iὓQ!Efb«èDCõñd±Mðhˆ–XµæÏ¸­6ô#ñ†l»È…±ûsLóæßgél;µñÌ#%
-‘¼GøCAÌÑð}¾€¶6Ç¢³V»þ\ƒ diKB´«ÙQïè.§~Þ‚´ÈÌ=ìäm’yS$ý-Ñ¥ªŽ¹P‚´)keÅÓnM¡Gã¶Ëu·5%¬_ØEçMŠKÒcƒ†Œ8 î5€Ã|5wìóµ Ô"öů£„²3ÇŸ³’œVÉ÷
- žóø.Ѩ\éd¥(š˜>¯–LãPÚ  Ôš3,¿Ô16še¬»Û²˜BG»OåÜÏænPƵW‚®eoÁP×½'”@çßÒ KLýº-/ÞJ[ýŒxw]öG8förˆVƒÉsvÄþh;Ìšé£HÛFÏæ8w&_a†¶j¡ã÷q´r©Ý}~9ÃQ‡³¹ÃñQËöš‚¸¸ÅÒRŸv7Ý/샃ð+B­gN2ãâjÒz ÂE‡`õfQ •8{ÆÁ9û»¨½qN5mc¯ gÀ<Åj½`ž@.vS;눂DÊknDÔš™˜±ºOZÖµÜÑ–HJ”ää&¶[óX=
-<ÊîòÈYŸ­ØìZ Ê£÷íé™ùÈTxÇSêhD¯Óe{Ð’ÖMÂÒé*’­D#ôTtهͼÔ<~WêšÏ¯ ,Äѵ—úHLÆücœcyµ¼‡ÅÒîÇ<Ï EÇvž¹tú“H;:±[æ¥@B³CoјI3åÕŽ+´s«©Æ?™À“0”VðÍíÉ ¾¹Ùì ʃ¼ãAœ'7¶ÆÁ&¢GL6öÝ¥
-Õ.¹YO¬êªœ©Û×™¥ o;å
-ˆçŒ¼™¬ï›»E|ÜÌÐðXuãý–üÂ˨µÎ¯ˆr ‰¯ûV™ÆZù
-ÙòsøeìÕÙÂ1Y¤tYv~
-³L7,òH
-É_AWš…*QÙk4‹†ÊSgïë}“æý ÝH>•b5?þ‘ÄœbÇ‘þ[½²%?QÃÔu­2NѼ5¯|F„=ktåÂnïìÈòæ‹ô'†<³Ç‡_Æn|Vœ “mpéU÷YX ­|NHô¥kÊ r O6ágÌf
-SS˜K"
-Ï~~C®x®'ñ0yÉ#ñÚºƒ.UŠq/öÑŸ˜*Îö¥ýµ4 Çï`àIm­Š´¦Ç”Ní.zßF6ù‰‘¡Dž³¢,t°Í(¸™8é±%iXK{Ëlò\‘Vñ}gx7wÏbðb¬½‰jÁ½`û'üNf ÌB Ì´Ð¯1fBÈŒ+%¹7¾CäKvÇÑŽŠ¨'¶,³jvZÛÚ•¢lD¤È½Å‚…U? /rªìuGш¤59+òúøF´'Éûu£÷ÁO^C.¶ºó×?D¡ú
-Ë!«O$!*_—‘} qufÖä­2¿ÐAQ”¤ÂâWH,‘Z8gm­ÈÞ¨gA‘¸¶vaõÈ”YÖ¹›‘k (
-á„%F<5Ÿ¼K»ç´Åö Û3Ó΄ÕÁŠÂ~çD7/âšÅ Œˆ¼êÇ™©E½ŽîûFí<gðSL2R\”˜um’|Ø¿I"-‘ÊQ:‡‘w˜°ƒ„~U—ÒÛãäÚ"(ùy—k1WÀqr±·}§MNÉðɆa0’~åBnJèÔ$¶\ áyq!~Y!Ê`Eõâïá$ìµòs¹íÒfØT\à\þL
-Pb”<pÂ*1oAjV±üVªñÖÃÚt”9oÕ H½”8OÝ#q‡æ€ÿ÷ ŒÚ‚€@·äV̶xxOždhìQ[Îÿ_¨£òDà1Ös?õ~-e^¹Š‡ºêëé¢>3vŽ,€
-Ôù´6Š8ä­ÔÔs‡ÎCý—ó<n!äö™…ãÖ…T«Ðùê“—J8R…’Ðæ(Qå|?Ç:¹6ê< ™úÈüÙ :ò‹G8çü;k»Z[·É}ñ b¦ND‰)Ÿ_ÚT jÄØ*à+5µÐ.‹j´aµ”n^@ì]•yE}±Ï» Ÿù¬w©…ò;ô'ÓÛéû#N䪦(…Yògvì™%c·ëµIˆÛÖ$J×E+¬ÂVbx*5uÃl}¦öKZ#Èóq%ñ­Ü72ŸÃ‹øiXu€á•©~Öá œÑð\?"«§Ó-ªˆ„ƵK ÑQˆÔÀMH@}ÎîkVÉP" ñZß4l§\Ê7w'œˆ£‹cÝj“Ô½?P…qƽ¯Ý ÑtךY{;¡8FÒ£N ªÛÝè&~GýI¤ò’Á-M¦Qìb pÚÀÒ”{»äüóMgyôجؒ/9…Áj(—¥x1ž}*Ú•ò£"jðr„-!…ÎÂÀ=ûð$eþš‰¢©c@“ Ÿi.÷Ñ6*älBK±cn
-‡fð¦ZUiÎã0$¿Ü|MïШC¼ìí29†ÀeðOµY(FŒÔ³ù-^¬–ŽŸ>Ó:2±èë5/•l†%†ÖhCÓ˜]¨w'hX6Í— ¹Sº†U¬Òú|“LAÒÁcçpÏ:i³ˆc¤ÖûúÆIX—m¥ù|(Ÿ:²zS¶ÃÁ˜¦ß–ãò߯îÖjb-­
-à §—Û"ÛX›?ÕSDâJªÌGú¬Ú‘o°Ùð¤®÷ÐȳžñÏKv×F$-ã`÷5
-a-‹PšêÊi^(5aò÷Þ8œÆÂ—†rmëÜ0Û™//UªŸÑbVPp©ûÉ`i.‰ –§Á’¤Þ¡áû ÇϺ»ijì‘"f[ºtköÁŠ”È|^g†Í„ZÏš¥2ÝDÜyÓ—À>ü¶6•thâàoì\Á
-z¤ûŠâuÐyçøé›1irÝžã‘é£äX’Eßa›×ˆÕÇ“;˜/¼’>ì[ö±™³FcFÒªgãö‚á‹©G
-oL1MFr-ÍŒ™a=áÖVVFÎwÎ¥Xߪâs¿Ü”<¤ Ómpö{g~ű
-Ϊ¶yY5Tl´«œ+Ã2Ê$WÄ0Ñ3˜K_Óm£âç¡^‚Ü<çëþ,õ˲ šDÐ)ôà”2Ÿå\[EªâW&Ç'ÒN³…Í(JJÚØ~;Î×ÚÍ+噞¼ULJ;Œ¤3ä%…Óô X¼©ê+ÎbTØ+E¸¸Ä ßpzeÅ^÷.Ê“ îìÚA–£Ì‘lH¸“iM«™Àþ(ÊnS1¢e…•,vû©œ+½Ôä0euT¯w}Ý.8
-^ ÝúãÝ9ÑF˜.ÛgÛ«q\Vßr_g|œx[D&w—=€wÑ6ÊÐE’tœ>-LEøbµ˜öbo…ç m»7oÕ–7æWÀG»JáoÔbÐ5z^oDB°w\<à /r¸Š\רrRjþBõâÿÂèù!&†Žh„Ž6‹$˜WóˆB-3ã½ä—K`­¼ò‡‰”zó°™ò‹N`zd åÇB™£+sÕýN<‹-8‡òŽ0;ë)Eµ&Ì.P¹$ݾM€ñ’@ݸ¦/Ã2HœQ…„IJEzïe‚q™ŸÑzÆ-tàQÍÔ¤rÆ‚}ô˜8kí±ÊäXë‚ël²iÀDâñJ”FR‡AÏŽ-H›2²ãXÒç+Ý"ÃðûÍ Óšÿ+;Wó¸_G±.OÒxè"ƒ%u°¯“¿>Wû^ï.7 åòƒ  ž0ôuS¼2 ©'w²áÁ™ãi¨šFNù6ýUv“-«>] xñÕ—*æ®çÅÔv‘?‡Ýâ–Ü©.M +0·dæ´ëžÿÇTcz¡JÍÜæŒ.5aö$¿¥Ê­°D ÜE…q3„f›ÊœÎ.lªdX±îÚûp}˜•7M“Èœ ÀÓªkQ4N5Åç­-…@²!G©¢6š VœiˆR7\ÐMj„dcäî€doû4~<”Òe6äm?Ð0I×€ŒÔK›ÛS£ò£Ê%Šv¥Õï^+„¬Æ³ÒÛø!&à1:¥Çã‚'„D=ìà«&€©IãY ¯€äÂWƺ¥„RÒŠHw²ˆsë.üÙ­gäè÷mïyoµ©ltxebmH÷fïêïo&Hì*âj]¦Î¾kÒrX›0 — ó=ø^‡,›.Âõ˜/Z—[’áXýõ~™?4ÒdÈÅ7€äñq ´¤ª^JÙ[K™†OøDÊW÷ãºò"îf/’’u.3éªZšœ˜­9µÀµ”…”Û±†m ùlË—‡Ï³'´4/Éu×µF±‹gGŽ‚Ç;`Žøç:í·úGj¹ÃÊH‡Íi¤Î@É÷²ÇÖiFèÅžoºÃ‹… õXWAúŒF˜g =çÇ$¥¶¸i\üh¸Ôè¢ë9ÃËñüw<d;BvŠÄŸ„Œï6È™*cf[š—ÇImAÌžëIdM8R«DVUê‚úx×aÊÁ]Ÿ±þ%ܵ>¹UÇüv"¢îjÕiÐS+4ã%⎩ñaoä{Zg=!$Î3åõ1'Éê\ªWä¼sÖ†Ílâ4,N9Ã4¼½þÄ‚;w ½'U‡z~”Š¡+É6ÉÎù¸©õ—õ€ðËÂT‡4çjôA¢ÞŒ Ó[‰ôïqWűd‰¶ÛŸ€¢Kªî1šÒÉ|Ö´øÐÉøKœ-`@XƲœ»Þj”§§¡øð©Öµ„ËÍñšüÀ¨ɯ¡žßÒ #ZVöÏeÁr²lã[cѽ·aײ‡xþѿnÊí"p¯½6Ö8wK
-†‚™!Y5ª¬h›Âø
-Ü`¹}ÊWÆÖý&_cWs£åÔlÓ¿›
-.«þvÐŽ–%u‰ ¯¤’¨]5H4Øe"›ƒhQ‰‰ôM“ªRM-D>í¡)rüˆ(Ëê­©è¥ÔYÇ9ÓQHŽÝ\(]
-Öð5,(x J)ÜÀÞÁg0ý{wýçêŒx”
-Ô&‘#àfîÉ×kBq‚ÂõÅ{à1æˆè#žw­KH×\’Ëœ!w[‰‹Ë)ƒ?q[ø,YçÔYÿª²‡¶Ë•:Žè“tG½­3èÔ* þmèÊžÜ`m
-(¯-üü2ÉòFM:ãM¨sv¶Ä÷Эv"¥}kædJî
-×cºŸËã+DoÇ–ãÉ­)ýe¯¶ôŒã¢—WÖ™eBdeìºf|íö˜-Œ‹Zw4Vçvž&Ê=®ýÂ¥H‡,d|Làâ3N‹'¹²,šK°#L„Ô]øm³)n-@Ü´¬N&…¬$ÿÈçÃíKðt|]Øl‡¢ËJ>h–
-’9„©²Í¦i=ÿ¨nuþò©­'x¾N»˜4Õ07<±–¹ûIíÓÏÕ=Î)iÇN{à$dQñãTË0¿§h¹kÝçµùÚÒ9äóÌèÍï ¢ËG¢ $éðf+vHÀÑ:ÓÝ&îûAoР`ž®³DGO?Ìd¨Î3ìŒ+Â̪Y¢ì'Y"-¨öíG3qŸZê…[|i<B‡{5mäši’ù%ù— DqërŒh¤c碫Z´BÁGE y"Ïž·Ü‰ü¼ tu¦…³´Ü¸Œ Hþ›Zó-%bˆ9S‚®;…þŠG‹ŽÄÇ0¢æÑP±TôÕ••¿|P(×ïVŽ38áôQülõâóüý÷}ΦPÔÃsM’È6¢±dRŒ<ÅBq´—áHW¡°XŽ0ÌQðê5e8ç tKÌÂÔ«UÑ\XîH£WƘŽ+úe@Ã\
-~º8Çùˆê¬ä{„W<:î9ëÏaùÉ
-–YæikQ9èúÞÍ…¬Ar¢$sCK¡¬+ÏHbw­ó¯n‘aÉ çÀ$.Š_ºœ0‡âÐ~jîI²Øˆ!<Ù3<í˜mÐ×µø}ãuÂgü>øb£HÇß·¿lè t#æh'¯¶ßk‘¿
-ÎòÑÁÌûøjTL,
-gRH`\Âê‡%Aþ‚¸ÿ•LTa†ø¤6T:ùQè^·.¸Ê´DYAž£µ$À<ô{ÃiçŠKl¿XæŠÔÄ%ã»<ºr£²‰ÉÇI§ßðÒ÷®ó¥©XX;|¨‰êbuÊ X‡jÂÕX£Ô†ØÒïI7Ù¡™ G;³*‡Òe÷ŽnInî‚(¿æ2ÞÅ¡æbE§4!0{šÕ?ÞñŠ”’nô0g™²ä}»O4,ä]Èhö3g"l˜\¡Ì±Óp•Í»6²Z“šÿêŠ/¦¶ƒûeÝ$³®"tÕ¤È:ôƒòõ ‰›îxÿœŒ¥?Àh[MND.ÇðL7|SɶtÑð„ö&øyDZÌû*Gmpr8\UÛ¬gTÀ­X
-h†“Ì]õ5ˆ%?»â'º˜M¾×ž/•[C2°‹ð}j…Ž.ˆ&•µ7ˆˆÁõÖ ÿ‰r¸‰*½Æ¡rsC¥‡Áà¼qãl§ž_€Ôv¿vwŒSX~K™Ê” Ç›¸´5"_¢»åzW‰8LB‡ôÚÄš+H*Ƃ߯@K„/ë·Á)¹²%Í%]Üå–=È«V,è ­{«RW‚:ik>•HŸSTÇÿÉ%6vô¾ö\áñ-R•@BêÔ“fÊø²øÕUrÇ–÷ëSv¾] õáåG:ƉÐì%*
-ÖäJ¶$÷A­B:{~PŒ­|ˆÊ ©¸/N˜¼wéàý‰ØaÊ9ÕÒ”®òM_u*u~0Ã׊éào‰èX0Êr‡ÖÁÙqh[ýl½®ØÑîáÃe7æMà€;æ,—"íFóTIû ¹ ²ÐŽ÷_â05#¸.cœY‰]j˜ª:Ç¿ùö:Qqæ!å½¾iÀÁÈéo‹¡¾{£6jÆÑõ({öû^Á èéWÝ{ƒHÈ%ŒéK!zþox   µ˜˜¦°ÖûˆÄll¡Y:Ðÿ3ìvz6G0†Ç&QÚ äŠ«‚n‚}uãaI#߃y>g—/¨`.n+/­Ð^ q›‰t*+ˆâõa+uF¼ý} ˜Ž¥ï>à£jŽÄ˜;â¤ÏLUáÀ˜ÍPÒ¬ü“žÖkm",Á(\~éGP»Oªt[‚ÜŽŽ6nxf³lTÆíØH'ºSÍõw<²qs)‘‘Ç~*Ún¥ ÑBëRËÏ++¥È›!®)™øÄ•™þîêñþœCåaIyÃγ<–äxßsG²)¬•¢×®8zÅJäó`ãn©ÌsÌ™æEHœX-zoè=O! å™B?Êóíwö»
-†»·=z/¢ÇCï¥ä‡`RðÏ!¤Ù·)žíú!Œ·zÍ áí;LZ|FÕGì%«¯ˆÅÖ¤H6}+8ã¹ðú¸°ÐÀÑ/Žë)díˆz°W‚úXƒX¶¾m«Ø½•„»ù5gR›žF¹{‚$³*ú)u\=(Ñ-‚"Ð…÷±,â¢|]ǹý?9¿YÐOØ[L‹&ãÀŸrS*AØf­ši
-t)ÌXN9¥D±z¤‰-D0Œ8­àª;ÁEÎ+p“ùhJ½:–Éîföâ}©PýSücd?àó <ÌÈ“|Šˆîç }®rw‚RÕ:Í$å·=„~mÉ]]˜RòöÖ„½®íX((—€¶Ä?Éž¸‹e»¿èœ¬ÛXÄ
-ܯ*˜Œù¢V}ÒD¦ÿôð£ÎÈ
-}ˆ2àq=G/¦8õ1ÝüÍ/]Z?ó{P>yêU•œµú}éÇ2&@žÊå6Þä¡þ;TÆ
-Ý‚Æo
-©õŠÊ§üyž+¾û™’i†2£]Þá­•\÷¤Mçó:µš•wbÕ‘…Ùˆ×hg¢Iµ#ŒºÛà@ïuJ*³É<¸S!ÙÖdNPÂD )­×cÅkø2æòò›b«ë
-JÎtŒ.a½AöB¿×n 8b¦”w»VŽn$øÍé)4Üú¤÷VçËÌŒµµèN‰R£ëÐŪ—Ãÿ×>Y¶5( QD‰!%ÝHîfà¨Ñ9º‘n i’"]Ò-Ý1ºKÝݵ÷þ‡÷Û}îùçÃyžã•”4|œ"ïñ`Ûý]_€ßÿ¼Ý²í\£$«:ê¯{¶F†Æ»lìÏ3¢?ÑL$G@Öóå×vmôãŠ#Žª×°tή4ËFIñê\é±¹†òã–ÊcLÏBÙðn¶²e™i¤ÿs;<¶ ¼ÿñÏ7JŸ¨ie/þ5÷“FàEZUuç!í¯îðœJMþ•³ŽôÓ }Ëß–~¸
-Âòé€z{JE‰FªM Û„u–æG0i ž³ÍÀ†^µYkúzþ'ôÍòH¬n“È([ÒKFR}ÿ^÷ôdk
-±5b$ßì}Cd%#vﱓ*š°ßÉ ‘ú°»­¥8hñÀÜ_Œ»Ð7¥U½2f
-b›oÒm÷ãÅY…½jãnQŒ˜fýÊm½­ªm&*þ8”Èç1|ñ˜a¬~– F‘«•¢ûÎòXQ;( _ÆSI0ü+p˜ý&á¸$BF
-ý1ì_v#ZâÍ,µgªìVØ
-*‹š@i‰úû¿ž8ëäCî3luRŽn£ÒsbX‰É ýÚNã0Lb£?yrK—Søƒ=ÕˆáÜá@Æ žÀlþ ¦Ã<˜'•AÅ87gñU˜
-Üx丛ЕXGŠyº'üá9vµ,Õ½OÓà¬KÏýØIC`­” ¿¸9Âò§é¸ˆ ßcZ”Âh.RÕŒI8¬_$òfIKmÌXró–€àÇêŸ%Ŭg”ÆÂüˆßY'ºVR, ¨B~ ÐÔAQäϲ¯u£s¢€Ý_˜Œ\@øt-ò©Ÿ’>ö‡Q÷FÉÎUŽ«l$Ô.ËW(¦8*³Ÿ{>B7@ -7쑘ôy™Ù7º!„³¶ QèÌL}*Ÿ$‚WVÉÉ®š±Èñ×´//2ZA$¼§¥ªb;>~T6EÕ<Õ¿¿Vj3ps[‡Ú[ë #.JìñåY¯ª0ûì©'™„±ŸµQÖ8}Q¥ÞÒš½.HÒý¤ñ‘õ$=¨â¯oñöaZ]‹#6ž/¿¦Ðô¹e¸ÞZ‹ÇM{ªh= Hp¿œ¦-Õôš£åežÂúz‚€ÛÆ«ì(Onû÷söQY²æ‰Ï&¡I(Ja]U›-fø´Û[ˆÿÞóݦ6vº%š.[Íá§KpyJÖˆàêh2nösjJ,©VŽ&EͯU¨•x9øW+0éOžÜX‰3„\
-‚¾¡ÉzŒ:s[­+ž:[´‚r 7À«_ó熈ÑFÂ2Õ:¨Ù˜-Aè
-œÆâO­Œ,Eß÷;XM«âU†æüìeçÎ&¾¸cë2“.D£T«h8&Ëe7nV"ÎCøpÁ¨Ö# }&_ot-ç2ÃæXL¦ºŠðï"’‚Áf&ѭ탔w¤éʼŽE9Ãê¶Y|t\dà=_©Ÿiµª¯9ÅÝU5½<}âoCʬe±É·mQJ_”–õx-ºDïä»3¦Ÿëï"‚_
-{8þFÑÇæ–éì é–sEcø ôc/ ¥Xne­£ß Ip’XÌ,X§x©oÞC§C7}yñ8㟑KÓ•F<Ø—¶cÚùc§>É÷"ÊåæÔYxVì#³í³9y«bTjýé‰NÜáù„…ªjŽ\«WÍX!Ì[Ê뺧b'ÞŒÆ)<$1ôÊÚ[,à§ ƒ@ŽWÃc3/—°WnY"¬Æ4áé[_Šüå–#xÎöf3I¹[V¦;ñ²è2f’a_ÏãX;q)ö&Öö4FØ…È÷Ÿ
-=X¤9ƒ:Ø•ñÒ
-†*Nñ(ßc“À“
-ÎQÓp/6è~
-ê™ã2ú»‚îY$óµÉ•­ßª2^IÑPYm3ïÜÚ×Juý¼=ÕùÌ~9Äÿ 2©”pmPkDÉ Ç¥)DcX¨Ù콘ûk*+ÇMCÆ{Ù´~­Íµ)²è5¿¯ÅL|yÿ1ª5u‡Êëñ÷Òc9„ÍrU ¶óBDøò3TyÈ嘙 SzH1ß+`Îð¶+§`½°W5Ó㎎²ÁÑÃiÁ™,÷ò}cýö3!§ïÒƒŒ‘Pu aÛ›”Ë tòÍ|T\ÅL,pÈBHðì9çÑô)8H-úäjj*ê=êOŽ
-Œ†<\a/r¼ˆvÈxµfíÉCvP€ÕóuóföÈy§Åm4ÍÛÆajùlW¤JÕ4pñûZ¢Aÿ6Ñ®–B][¢µš×´B©®¦Ö
-åUÔwUMõ»gÕ"&
-C•Á&ûA×"4ÂÌ]iÅ Î|,›ž(mÍ…pêÖ.‰ý³oRŽÕ] ¸kެ¢PÖ¡ZÛZŒŽT2Ê©‚pC¯–dô.Rn®f™7£žØærðk®–-!OõŽž1t¿9~‚󖉿·q¼mxYæó”9gK’}ÃÜÕè×å HéÏAf™\pCÊˬM‚._óBâÚjq À¶]qL÷‡ Âa¯¡n—ˆ›´¢('â¥&Cv­pñf–¿‡OFÙ2ö
-# ð:øF(‰¥YäsäLèÆùxÂJßÓ%ÌgæÂîˆñe:‡¯#0®ÿëÊ»3¯‡óíLM¤\“wŒgßRkHäŽÅ_KØwÓªÂìni–ŠØ± ¨wŠlNþj sßÑ8v<o¸ÞâÖ²ãU8^ë|Wš
-ÆúÁÿ%ž†ëÿ öÿÿsK¨«»³#ÔÕûÿ
-endobj
-873 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 2
-/LastChar 151
-/Widths 2019 0 R
-/BaseFont /VOZHRG+URWPalladioL-Ital
-/FontDescriptor 871 0 R
->> endobj
-871 0 obj <<
-/Ascent 722
-/CapHeight 693
-/Descent -261
-/FontName /VOZHRG+URWPalladioL-Ital
-/ItalicAngle -9.5
-/StemV 78
-/XHeight 482
-/FontBBox [-170 -305 1010 941]
-/Flags 4
-/CharSet (/fi/fl/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/emdash)
-/FontFile 872 0 R
->> endobj
-2019 0 obj
-[528 545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 0 0 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 0 0 0 0 0 0 722 611 667 778 611 556 722 778 333 0 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 0 0 0 0 0 0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 500 463 389 389 333 556 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 ]
-endobj
-778 0 obj <<
-/Length1 1630
-/Length2 15892
-/Length3 532
-/Length 16775
-/Filter /FlateDecode
->>
-stream
-xÚ¬¹cx¥]³-Ûv¯ØfǶm¯$+6:ìØ¶“Žm;éØè°culãëç}ÏÞû\ûœ_çÛ¿Ö=kTªY£æ¼îûZ”¤ÊjŒ"æ¦@I{WFV&^€†ª–²‰­­‰9ÈAžQÕÁÎð×̉@I)æ 4q9Ø‹›¸yZ@s€8Ð ÀÆ`ýúõ+%@ÌÁÑËdiå
- ùËAKOÏð_–\
-ø›UY\òßuºZ™¸þ“Ûô8Xüõ4w0sûgKÿÂþÒüE]M@ö.
-`abû·Wÿ²kØ›mAöÀ¿šþ«
-™**À)—PHW£B¢ªU³m·WÛÔOrí]VÉ• $«ùqyĤ"õÂzŒf<0ëûë£Îðf}/Ÿí¤>bêFè,VØUd‹ÕƒæÔJlNÍo’©+¬OXÏ1Ï-¼§c-NÂ1ipÝ›í\AÖ
-úêì`uvdé,RHžê$žkK‚>&Y ¤ºÛ”OØ&â„o™kâÆœm§Ù WëÙÉ
-¨œ/û«Ð[BÒó´`Ûtä¯äÍN¿GfáĈHªýmVéDÇÏ“Ÿ”Ä÷¦Y_kÉóÍ+èü1pÇÒ¨åÁ³ñÂjD•jÊ
-Ga1Ã8‘¯YÛ«Ÿãн>½l•ê!¾™Ç”œ±Rš¶?àW'‡Ù_NÄåƒÆY4!aÔ„ø‰¥–
-/ÓLòFºVÕa¥¹òÞ+sTe˜1‘G·G]<ÖlI¯7E³±+’Ò=‚,Cš«OÒØor.¹kÕ /ÁÓŒ’ÍU±Hi~|ŒÖwÚkµqš‡~ƒ¸Ö£7ö³"ÄÇYæ…ÅO k_ã1fo4,ëIoböm5¹‹²O½k‚uÒ¥2ƒÞ¡úd‹j¨7W})“Þ‹¤ÐϾÑdT¥wÇ„{•ü¦ÒfËç«Ø™#K˜€Nƒh çuÏÏ%¢>ÞØXñÿàÛñÝ%rá§_&ωbksà£uÂÑj£«ÓEŸ
-ö:çkØ¥»ãÆðòvÏ5ÅΰÂÜ0p!.ZÍ2§.•`Õé;ûòÒŸ¾´E 'ôòL‹~­'"Bδ •RÛ…ê뚀ÄÌË1ú€Þ‚`0ýzл»-õ®‰ÑÆöø$·«|Â9˜ ühˆô`´6GÞ£h‹º¢:"ÎÙ;¾M¯_­µJ%îo%ÒÌnck—ý'y¾‘ýαšm¡‹¦ƒ”õíÞ*{ iwQ[™¤kžç Ë tîF!cö8äÞŠNßãÇx´ ’Ü!Ä’¥¼Ö¢¦¥Š—Î~_ó©àH¶ýÛ±1%Š–±Ú¹ Ͼº¦á¢Õ>ÝMÐAŸdZ˜Ê51Ýb1ܤɬUð/
-‡Ø
- օݧ{ÌæßÖRáï›I“¬ïØÃ4†ºéd`ðe'¢ò›KþÈé•ëÀ0 xö¯´ØQ¤Î]åhÓJ;ZL½"7Ò–ñà|êTñÌãço2R°×%‚¬Xs­üòc–>`pȸÔ¢D…Üo½I[«4uÉG ‡äÇ]F?bo÷ ¦"1I[#– x%‡x‹¹žÆÉ¬²×Á>Эs*´Ïühd&Cîx3Ôà9‹œkMŒ™"SàÈÕÍŠL€''ƒ™C¦eòœÿ@ËÞÀ4:%½BÔ‡?Ö´OH6c{h¦5/çÕ
-5’QÄ„Qƒœqó™0=l­\αç
-¥×$á_~Т:ò›l
-Û…úMÚ„m>ô‹'Á†ž§MýO³qÎCÄ]´5CXá*\•MN£dtWî
-BJ!•l!~X‡’Õ É•aó’1Ë"/°E©ø!Jü÷™oó§KDMk§Èéw“F±§Ûˆ{¹g,˜6Q4²«lía¤WÈw©4q’7_úU0"¾B` Ï"ø?(±*ë2­³G€ ¡fÓêQXŽŠJ5úºîÚ ñ%èÐäíb¡Ê¡ÓYÉ_c¸p'vÿЮ/]·mÐøD‘ /³îwòŸÙ|&æ>¡®GSܰ ¯d9{¶£IóJŠK÷9fã¢éŠ ©þäÁõ@ñ¼9xŒi,P¾*=cùüà‰µNm6O—^ E› ªÖž©ÁôЮº
-M2tÉ»bqJCgª`AjI@vr]Ú@Ö *Ó ä½è¼‰_‰ä”/ú¼æ/
-¨á"R’´‰öÆ$ä ÚU W=ŽgY·'æýÕ ±M‘‚‡{}•ÜÿöA®ô5±ò½U<b´Iïqç·3Áì\³ù«çsÿ^«Qº×I?^s2XÉOzG÷6vïáæàæiðŠáãAûÍ6ü‘îav-œ2æ¯Krʃzs_4/“íBào[çç3r„¸)_&x†·¦3‘ÂÓeX’9iÏiëxêל-9ˆ‡sA\U Û=$˘¹¦G ÐñSÅ¿%ÂßR2õ«&öòôtÈZ¡EÇ£ÚùÌ.êòhnSm»Ä³=£Dý”Çõ6àÆœêk0¼îSF£4pºJÆßú „c¦…QØÉG‹Ìû,\…RXÒ<5µ[ŽwÂ×ó é ‰ªš Rš,¯þþ’\™mÄT0쪃ó‚×sõ`ÃO4â„W…¾lï‹Ãë"Z2µ0lÁ¬{¦'( zñ.9_ÄzÎãБ²þãbîÂÑëwS*ú[­FspÛúÛߤ_é~} ‹s\±š“fÿ{ô÷ÁÑ#ŽÊ‡/°² V LlQ9áŽ%Ã¥€T… h(£Œ"Îå
-Þ_#þÍ:ÑdŒ´r@SÓ^É2çQ›¨ô]´à8UY¦âq¿½Ÿžj_'åm~²˜O±ö òà –,®ùé‹‘c^·Úû…ç C)¾ Êt%E—fã$‘P9¼žˆã4yo(¢‘d9mšjW˜/¢qge>KмÎf6ÞÎ'2¦g¯,5ƒŽh­óçü¨6à«ÈÇ
-g!ò)#îLI•eÇO~,EbÛà ¢.ÈÁî=íõÙL(Bćơ=²a~¡Ž LÌjSȤk²5ž€ŸH½ºFŒ§WiWམXøwÖýï… \#A†%ñ³‘Ë2‘j Ç´½Û¡õ´„P2’åíC¶²‹’³o K,\QÛ²ÔŽ‹¼Ü3WÚ ‰SÁ™Û3èF#ëšlËñ°ÁºÌ¬§T{ô?êu5DZ—b!⺂Æn9Š#M‘y^Qi$ë\Êo#£ :“ÐÇÏq`{‹!ˆC%oÝË|°¢’N½`^¾VÄ:z´ßÂØÚ˜Å,Žž”\uyFÌOàø6ëÞÀ…?z†t+A×ÜéEî>VµÝ´çröt'ˇÅ<Ë9¶]ÄöýÞCðò—|fŒK¨ª£µ®ß( ­Â‹%SrÜ3ÀðYÙ%ŸT<RÎm*ˆæ“SÞÑ-ÏaŠC!)wȨÊ;ý&NÀêpêüôÈtöÅ;ÉÈ]¶ÇŒQÉŽ_@q²Óa–Û÷Ý n}ù‘Ûü¤ŸZù“íÓúY»hy5}îê]5P×*»a$G(®‹uý"»ÊÏc9‹z›”­
-Qm®­.
-_ Hf³ÚU;ì­^º~ÁÀÝ3µ5é øÚ¡ºø[\Ù¡&÷Ú;Mo9E*Ûí¬ E Õm¹lê·šÒqd‹¸þýà¡xZ¯ïvô£æQ¤䨟JêÅcFv£1Xc:bv´æQ43ÜËg¡ã6jÄK¸ú¡|R¹š“øÃ÷N7œô±°ÆDL³ ÒYTmN`ÄÔŠÓi
-öYˆ=~åÇk8¨ehúRZ^±V<£‘x–@#”"s•ýÇÚdÔIðP…®÷­•úz8*uÝKœdÕY…®Ùð.Ó©¬á.‚ºuÆTaˆVÇñŸC—nXЫç«j”«žŠçµS¹ Í[džN–üèÇæz ôÛ¶IµWV€A¶šéÝØNQõÆ6W
-ÿ·^]Ä“†[#"‡6]”ý¬…Xí=ïóñhé¼ÜmÄ%ýÖF¢WÛþª†Úû—tµdý
-á;¬/¨`>‘DÉF•X8)RŒ(êe+QBöìøYýú$øð™¨—wš4ÉAÑåFç[/Ìï(=Š|ú11ǹÌYfFã–s»Ø'ú[þµwù|¼ŽÇÛ,ë¢39i¯æ¼Žõšm!¸«uEÖê†î .>Pr˜áËóOªbeå£/Ï”£à?cÛ^0ô²³Ë«Lâ9}IÍv#VSgzºŽÙÑ‘ðîàê)˜¶©£p.´ÊI*ðwgÚË&)ƒâ²oUÌäšH€+ßÞÉ¥al‘BéiWŽÎG^ç˜ÀØl8„¬~ÇH/«æ5Àc/ý
-q,‘ô¡ÇúGåKco IÛ³ø©‚Ž Nv#j»£)Ÿ—“Ì·‘¶ý¤C±Œmm§
-ÄáÛì‡VJ@ÂyÜ4A“ß(9,”÷-mZË)é‹ò8ÕªÇ+“lvÕcÊž|:"Ú!ý XjñÕ,NÛO¤y|¯aëŸÚaƒ™z
-ùΦ*-Ír»b3‚Ë1<]#°Õ¤pX%'Lèw²ƒIýohZrI ®ìñõQ„è1šØ—×¾˜I×ì —UHð¢îq‡G[Y(|#8°ˆ ¾«ü Ì¡"@áBÔóѳ{¾¨'™†V æŒþžßˆ)Iª‡ýE«HÞË]~@wt<ª7çqÄEÔË̬´¥!yšj½7§ßÀÛ*«4øÑ?rê9ðgÅ£ŽÈKj…4HÍD}LÂà=™òâ1å7Ü4S¨r/êö,m@Í H΋pø^T*õg´ ²è‚V e™'&¯F€™ámyÛvîÃQŠ€X¿6~pl“È3ÍeôÆ`âå=õïÒ3(¬•éq7¥sšçWÐ)¿Ÿ•µ®K¬1¿!qÄI b^B,Ësb¬@¼ ‰ja¦•0?8ì@?N©¶ôÚo s¬y¡¸TF3ÎRer9IÎÊè7?°0x?Dtebv
-"q‚x”Ad€Äœˆ®wÒ4°ÈJÙ¼­Ì8ø¿Wöwm B\ëê ìáQïÞÌæºÙ2çŠ'=|J¸^Ö{~ %ÒffÞ2*„ÿ¹UU£î[œRnÖûÎ ç äà/︊»æÕµ±úøÖ[²@“¬½¡Í—5NCCOQ~Ù/N»ùÞq¾!ê ‚„ÙHÔÚä5Ôû3õíya÷UTE‡3BŒýóGN½Ü‡ÄlXþÔGõ“) Âå§aow;é5’-Vy3Å„§J%™èvsQ¾ó\¥Æ0wW˜jS4ÂÒlêWbØ9z%ò¶;,_*EéÃŒ¯ïw1wÙ=ò^D%IßïÿèÀ ‘´ÃΉ™ûÆk¸ß‰y(@ÞqH·DêÇÊQsfT+Û©Õ©s>ÁK@BªB¥¦¤¹já»AÙSg(c¯Ì^¹Ÿˆ<H|…vøuMgÌ[¸åßÎ e7wjrò2DüÛ6dlœ H.)=í:{˜;œ5vrUå(è
-«°;‡5Î9ø%ÏçL¿ôw_†hÝ¥‰’ 6°V…
-^”ØD>#û|ïzïÔ>Œ_ƈP‰ÌäFY„“ðÉQ[ÜȾo £zsT¸8ŽZv?=ªÅHAÓB[LÒÒâvl.èÆí“ÚGÆv‹7"E‰†O¥Ojn(`²¯—½Wb°¡vs÷;îù+®{¿ÈýÀX°«§º½[ŽÓì1˜'½Û6ˆUÊYø“÷dÌe`3ºæç³¼6àHÅ©ÜÁ­ ¾ØÅú(n°ƒù‹"uY»¦·[F’¼3  J
-ÓdŠ®ÂlÀZ(”ŸRO¹Œ»“69Û€Ìà†ûŽDQäìUJE5ý*rÍ@
-(§[$$Òè,ŠÕ%%yÔ »´Æ”V°ß{Ó(±3· Z„Ö= (0ÜHnƒ«%1œÍBz;¦ßŽÚsÌ9û=u›UÛþígàÑv±Ú9Ž{â’®0Ý
-ø%IÆãа¬"£H_|B
-DÈôZ¨K~¡ºy±'§«š—˜Â2ZSŸÄ*_Žs°¬¿áüy­•4á’DˆìG„V!3ÆÓä.¦ŸõÒÀ~Yx²ÚQ3æ0ËÉ*À‚äêJÛnïPýúúx ëW11u‚:Ow aA” ^†’ÃÆ„fÚÒRW—Ø(˜¾àBß|d9™eŸÇì x¹|nzç¥üí’]áÍOúåð;={É—êž/Ý„x_ ?à^ÊÃxVòWû‚¼%uÅ ºs+§iTO˜²ýôˆí^êÓqFÆï;ëá[1IÑÇ@ÑIÍEÃÎXq{tUå½ÊZ$ÊÈ/.·Ë3¨-Î ï_ßa?›@ñÅPlTÁLþŒ?iy1s•ÂyK°€[å>su ñ-UXr§m;¨:ª•Kó£*gò¤Åú‰᪠Y&–Ì1Z°ÏÚ¬½ÙQ‘~r"¬JÅÌ`\Š}‰rí&–¡[@²¦Ú»Eû($:¥ºøeÖÌÈ|½C¾Ö(ß~™„¡
-ö99'(ÜÛG(#?‚iÎä²q
-[(†ºÍ öt bÚ[·ö-
-HÉU
-’7ø“’ðüÅšŽ,<ëÀ¢ Ò½è ¥;KY±7¨n’7qÍþL3Œ8Œ@×SÿCŠtv‰jáY²Ž¶bb»¸iS
-ÕL;&ÜÚ社Q²;»UjNN{)òèÈù¥@Ã:è0>nOG"ýya,.ÉàÙ zi™TÄë:q!$*nK\Â)÷.¬’í8>‹ –Éîu¾J~&Õ†»M[oȳ©žJ´2Ëxy˜3Ÿ‰“ýÖ.¿”©tü.ó–5”Ï8Až «Z¦´´òÏn‘Kœ'‘[àõ•úV‡54›»Ü,eW~o§5X9mó‹jœkÑ$'<àYœ@ªùA-G-_ÚmVó ` «ú„£ù”Ó¹×”Šó“$È»²™©CÕr1¹"ÄÃ$AŠíŽ)й¦?¤Í0HÝÅŸàcËÉ&<j ©C@×Þ¶ÃtH.‰ŸkèA™ÎÿÎ!á
-u­WfH´‰6çÈPG
-.g4“Mâ'M¦ï(ŠMÑ|éÖˆð…õ²›ÓĘ#5Ç´=È•ò~u¦5Vê£R¯/®£­óHÄ®f§ŒŠN¿:¿lŒTmoú_ ˆ[O»1Â̤§ké&èIN†‹v@‹þH,€tŒt¦á>Õ'R¥•K.zgóJ˜ë(+Á5¯2ìkÚ Ý϶¨Â[ú3Änè^ þ^×ÌæQ¡T d`v+f<ñ'yжj~›q)ž\k,°ý”škQí—½`µ‰OÒ«cìÔ\,& šîJ
-íiW‡ fÈ“$#Ò±"÷qHÀŠJ\èWxZ'dô•ÿ
-'î»ìØ•Ë#>¼ºê£Z*¶ ?fôÑ1sm%$¥ž
-aþ2rž¯Y"`¿
-E¢Ì®_Q²HL‰@Zá~fNS^ÿœí^®<+9;ÚyÜúMtéÔtßæN9ïJAñÀئ{½ùMÌJXQ—DÎ+vûÔÕ†|bs”F-Ë•§EJ òó8}]ÕzÙeRéÀd.Ly’ö|ÿDl>Åõ]Ãh­W[®!ûÄT‡‡ÞuýÝ!"ƒgúˆ.’FHD•‘õÝÖÚšgì$Ð6MNâjpx#2ì,y]®“ê™ _ŽwrÀ% Oqp¶,Ô†´}–úy.Ì0ØÖ³pßãOS*³ã‡ïwâE †ó0m‘¨ü…YiEµ ‹X‚EiyÂ’“ F/ɪô¶­‚´J´ž—‡@%aHøèÕ?7ôÝލÂ'’J‡ˆ2LäÍÝDœŒŸh¸Ì¢±·,Žh¶è„CYö]Ñß´­úgmkôfÆ#ÔíÈä¡J¸Umßý¶ªæö1ãïÕâ•ƻņ-eQCÕsoŸ½Ø‰ Í™ªLlmwÓšÞ—Jš¶9¾!&5#é»~kÃÓ•±9wX§Mk‘ŠHg¥éÌÐ6ÓÂx̱Ùõr>%Cçñ#ñ“(ž¢Rm|™$×B\µÉ AvV7Áû¯…00À(ä1˵ÕÝÝK¦Ü¹Ù~éo»T9z˜~Yã{òÑ=Mq0ûJA «ø}/£1Äí«e—Ѧn/*ómF¿Äxù q¬äyJS*\€d­-†:¯Ø]yÜÔåTƒ‡¿øƒØE@ÍfvTü6íÁ2~lW=_xãSeþ<ùBÐÊÒm"¿‹g|£žŽ/>¡„ïn‡œ0'OK_5b«F¾ìؽ°`‚ýÔš´ú&¯Ï¸?`;ãõð æzâŠ×=k-"c ª)k¡@2×Ül SÕs'tÜ«f€p!Ó«‡¢¤H|ö‘¾×Á[ú 4ô‹ê9_¹ªÒSGUPâI%¸5–
-qQ)[‡ŸäW=Òлe~ÙŒB‘»ëó´#âý mω;y»Š%üŽ@D$zfªéA%OÕtØ9ø»«óu 6’RáÞŠxƒ„ï”
-2:RÒ]š¡¸\•´²DÊ™º´^-;nðÇY~þ0Ÿ1Í»PÒø¤0«¬}¦“?f0­úÙq†cŒ¶[ú¾;¶96Ø/
-P„ é*Ë~fûiöðÐÁ± y;§‹¸Ãà’ßÐpù<3A,
-HG€BÊ!´q<6õûœp—-HM¶Ýu'¯ýôhË)
-Ûs'&ÞHË¥Á§õŒñ¾QNç—‰Ÿ8[/»'ÚýtÐMs¾Z!Å7ÃFjA¡;Pì;ÎÓ<Ø:ô‹hX[ÇñxWÓ·MéxWÕòћӼaç~ݯJürÎÇû®³`ù²ÏÉF™m¨1£áú§U, Å€ÎÌ÷;:ÖÇ9½èyÄÂ1žìPUºÝS‹QRUib3íWëA(W×â“ÙÅ€µ†„äõ6ú¡Q{I–àÆ/І#¿I¨
-RW¥Ï
-Òd<—ñ*õ/^›žˆu“ ”Ö†´06f¾Dx>É3ÓÐ6 $cºŽ~{V
-´.ÎlTÖ±ð`­çÐÖátžë¾±ÉŸÜÖR)z’ºª^ Å}bû»Îd7
-Á~‡+Ò«‡´¬©Bcá#šUQˆµ»ž2ßÓ5:a]C>+×­ 7ø×B
-lwÏÍ ¤Á;e£“/~Å©ô6€bDPö€Àì5 ßhàdÓ'±1ãŽÔH®—äI¯Ãz£íFR… Rê¿§ù‰´Ôö~ZB‹µü|†šïs>vŽ(B¯)ˆä<µ¢+þ‰>wÓ*>‰v»P°ÈÒÕìn݇32B‰;¾}0ñ\d3í•©Þlýöu>Ø5¹¿ å'Všµ«7ŽìòÂn@ÐŒ_÷ u,c!Üy&iÏ6I¿ÓpǾ
-I3qn»#q.¢+j¨lx¥šÏw$àmE8L/ëÄŸ4
-i}ü8c©+V\‚ØH}Hȧ¿`$¾³O4Waˆ©þ«ùůµbâbõê¿Þ™þz[›aó¬^QÅç¿o¹59ô>Ÿ%{q‡óx§òêÕ/ ìŸ)¨1£7i-ɉ<ô–Îy×`áÌ~)/B,ÔŒÄ ’$¯üÈà‡Š} Ðqƒq\­¸Ôä9XÇÊ&Y Ä~ÛÙ?FÑ«âÖ7AhnzräÍç$"wÅ:XÞ#uq^ß>\xb1Ò»Ïtá6J•ßOõ;‹ŽÉ–a¨Ûß„f {âe# zP$ü®)И'´³ýyòÓûÕn&såÚd´‘ôòh0×Qš>™ÒsA”>2Ì„8¹º—£q}ªé·Lm¯‚Ódx¯N›GQðLÚþ‡Yô2V÷«½ 1±ÅµXè*ýõ ÷q¦69+ÛÞ¥Ÿá0ë8õ¯Ü§Xî´ÏÚæs>Þ¡v5js+¹¢ˆ´Qaïe÷
-á°âÐÑÄÕ—bJŽãû—"oRc¸°€~:ƃKÚX^ªðTp—£™#›2¾&úÑj±7ÊLåzm-5?ø± %;7Ü'GÈav&³}.uƒîãÑ-ÏAmixûÞ ¢²c
-MIª\ÂuTØjGI-gýÂÓ–GâydføæÅxÃÃ,oÛ.رÌ*_ùSÕúƒóØCkëÚ™­¨·>]ÙrÿÅ:K¥ÓS%œx
-æ¨5-lçÖwŠ?v¹Í“!‰P£C´é¹2üÇ6$í.ªM¬—¿òÔöž8ü¨=Cî<:6¤Ò*À8€Ëi¾‚’¬ˆ§eœxÁ7gSL¥]ü÷MÁl϶É_LÎ[¯>7‘~KÔC¿ bÖ¡ùMÙDSG„l,Ô±ÿ…ô4¨·ÕõvOój˜ývXÚ‹>N]'#èØÌ×!óþÇ7îð*xîG™õñÌþÀ!%aóЦ_èõ\{¸®qf__ÌjävU“j3ùêEo/ž4 16ìž-AXðIŸsþã¹ßZI‚–>ÛýNA¸­s´Kp‹²ê˜"ÏGx ™?þ³Kl\jß»¬“aÒۗ샜+€uÊtC—hÇîá•
-¿n$rÝ XðD˜t ÎõÓ…”2§—n„sÞmOÆ„ ˆ;²ÃßshuåU9ñÖ&;y-sõP~K*ªÅz4rnp´}ª÷œõ)RB—+«å—>¢cI£Ž¹w× éhz€Ì\mm £MúHþ×<×|Ìï­&‰ Ÿw³s£Üë+\?VË´<=yò‹ØH»M'²ñÑ67Cøoí+A5x5½·x¯'_Ë
-c!vÜ~óÓ4¶bIpµP]ãH^ŒúÀnkLßYßÙ„æÀ,•‰)tCœrÀ‘ Çi†Ï±m$hýÈn.ÿ¶»öO¿ªWÂ[–{OFChÓ'žWùÆ*6L‡1±’g^H]u Ââa3ð¸g@—TÕL_1@d7¾ùÁ“†µ‹Œ:…‘XF.ÿ§Òfb1\ÄñSÙ£Ö®TÁIS ÒŽã{9.´ v´ôPš_$ ƒºÃ™.T€Áj”¤RÚ.zàÂiXÎ^;-”ûkwå0HMKyÃûSc-‘tkâôk'a.*bí Û¶4ŠdÇ&ž*qÉŸX‡ÒÝÓä"c°4 *+9‚3£
-cáE¢Lg%ãŸïÁó§KíÚï©=ëg‡~Q)œu‘Še7@ô`­¥¡c˜„s2¬ìe/ï´Ã÷5ØI*·[ÔrHîD4;"«hntRÉ´c¬¥ŸýÝ„u å{ÿÁØ }hë …
-¯41¶{ºQµÚâl·Pãg;‹($@QQ~:ú4¥ /麞e„¼æª't“Ê>~œÍÆTÂ={š÷ÈcW ä­ë6Å͆ÇIjË‚¶{Al ¸¸ ²œís è¹”Lª £ÈàýÞùqœöÇ=*Y€þK
-endobj
-779 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 40
-/LastChar 90
-/Widths 2020 0 R
-/BaseFont /PSHMBI+URWPalladioL-Roma-Slant_167
-/FontDescriptor 777 0 R
->> endobj
-777 0 obj <<
-/Ascent 715
-/CapHeight 680
-/Descent -282
-/FontName /PSHMBI+URWPalladioL-Roma-Slant_167
-/ItalicAngle -9
-/StemV 84
-/XHeight 469
-/FontBBox [-166 -283 1021 943]
-/Flags 4
-/CharSet (/parenleft/parenright/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/X/Y/Z)
-/FontFile 778 0 R
->> endobj
-2020 0 obj
-[333 333 0 0 0 333 250 0 500 500 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 778 611 709 774 611 556 763 832 337 0 726 611 946 831 786 604 786 668 525 613 778 722 0 667 667 667 ]
-endobj
-716 0 obj <<
-/Length1 862
-/Length2 1251
-/Length3 532
-/Length 1861
-/Filter /FlateDecode
->>
-stream
-xÚíUkTgnõJÀ+Å€€¸
-æ2@ Š,šÊ© É„’ L P. (‚€`P¡r¨´RZ/ÀËÅÄŠ‚g¹iL@°rÕtÐc—þÜýµggþÌû<Ï÷~Ï<ïwÎgfâéCpb!Á° "@"HœÝ|ƒd
-å†pD€…óg‹";À‰£\&$
-D¢Âa€ü^½Tƒïk,%”+ÈD2Ä„Øûî+pÅf_˜‹+(T[
-‡ ¬¢1 À°`
-kóŒ÷<Žø¾açÜA|f,qÍéÃÏÊ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÷òÛ¯¤%?9Ð#ð¹ZÝ÷¢òY9rvÇØ–Ä1_u
-ã„üåà„Õ”pÜG›v©«Ì/ÕÐ<
-¾Ôèh3S¨éTqv½Š¡@rÛoÒý.èâ¥äp¢§ÒÎýÃôeüàï“ßo,%üc94¡ÜÚ—3?âfp²œó\éQïPSnlBìµ·Kî Ä9¢Òävåš§ø›ÖAþûPŒ#â³FŒ™xjèzTH¯8h'&òÕ×-”…¬î°‰°ÜV)¦r#ê§ž™àšÞ­;öL~¬}¹Ð{äÔŽŸÔK±ü»Ú¬ Ó57½É:ô¼ƒ®Ÿ÷IØßtgýÔ¯"òç««<¤}²Ë¸ š$?ðÿËPÙdÄú‚k·d×dD‚|BÞ«Ø–ª8öpRy½êƘ¸ñ¦ƒ¹”¤¼M9˜x&›P–ï{ñ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ÓüyAêßü}ó34gl6$!&¹ãÝ…Ûõ ×åí%±yøðæyüêÃÙ­^ƒ¶ãS94§‚æ# ¾âIHÌy“¿‰>ª X1úK_«¾ª¾þèéήß8WÓ¹vIêåÔÆíÝ„»r<3Nö}Iw=£Ñ?'ÓZ\Çêm°Aã‹{bs¼5z¥œÂµA½y•ìtÈÿáƒûƒÿ‰ØÕ ¡"„¡a¸àqþqendstream
-endobj
-717 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2021 0 R
-/FirstChar 13
-/LastChar 110
-/Widths 2022 0 R
-/BaseFont /GLQZKS+CMSY10
-/FontDescriptor 715 0 R
->> endobj
-715 0 obj <<
-/Ascent 750
-/CapHeight 683
-/Descent -194
-/FontName /GLQZKS+CMSY10
-/ItalicAngle -14.035
-/StemV 85
-/XHeight 431
-/FontBBox [-29 -960 1116 775]
-/Flags 4
-/CharSet (/circlecopyrt/bullet/braceleft/braceright/bar/backslash)
-/FontFile 716 0 R
->> endobj
-2022 0 obj
-[1000 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 0 0 278 0 0 0 500 ]
-endobj
-2021 0 obj <<
-/Type /Encoding
-/Differences [ 0 /.notdef 13/circlecopyrt 14/.notdef 15/bullet 16/.notdef 102/braceleft/braceright 104/.notdef 106/bar 107/.notdef 110/backslash 111/.notdef]
->> endobj
-713 0 obj <<
-/Length1 1616
-/Length2 25334
-/Length3 532
-/Length 26225
-/Filter /FlateDecode
->>
-stream
-xÚ¬ºc”¤]°%\]î²,Û¶mÛvuÙ¶mÛ¶m£ËU]¶í¯ß÷Î;ëÎüšo~äZωˆ³cGìsb­'3Iä•hŒí MDílhhé9*ŠjòÖÖÆvÒ4Šv6€¿f(!' ;[a'N€š‰1@ØÄÀÈ`ààà€"ÙÙ»;X˜™;ÈÿbPPQQÿ—埀¡ûzþît´0³þ}p1±¶³·1±uú ñ½QÉÄàdn0µ°6ÉÉkHÈŠÈÅdU
-üPˆŸìá|ŒRbQ»š€ê
-ÏÎIOžŸÈ†ÆGG†{oÁú°©rb’p¹€Â’FúýÊÁæÓT©©jUmÛëÕb3ô]ÿ””sÂ
-Îl~^õ­H¹²çŸÈôÿbاÑÙ®ïå²žÒæNHÙ ™C ½‰h1R^iC«ÙÂ{»AùÖˆqwÛÁxyÒWcÁ·ÿ¡y÷'‡—ÁOéTñ´šŸ­wôêuòÓsPMTUËçýNÀ(5±†ÅÄ ö¶‘ÛMüc,‚¨×]EI[™Y… ¸îˆ0^ ÆMÏm}™× Ë 3ž@óÉ ª0öGƺ°>KÛyE‡“åÜTh6þÁØŸøÐJ¢w¢§æ_[c ³öB8xÕ¾Vk”Ô‚—I¯¿ä„÷gÞk‰òŒ+(}‘²Å+åýdä„P9Œ,U•äD¡&w("Z·´U¾D£|yÛ)Õ‚þ0ŽÖ)¹` Á6l¬NÒµ½žŒÍ&²˜ W
-€gÍý¬ÌV” C†û3æèºnMp»-˜…Z‘˜æj¤¯gÜ\}–ʈ}—}ÍšP«¤{}ò#U/ÉXÑ…€¼ðk¬¾ëÜV­Ð<´eÁºµýt.<Á0œ7Íw©~‹A“1²Ù°¢%îßD?âÝjÑä¤[,È4ý©
-ÔI™Èüíç‘,ª!Û^ó&I|ú,~C¼ð O¯JëŽs/)'UgL—æªöÛ'ŒŸKnõætÉËÁ!;ÙÜ\õýâÚõþ#ˆ%æÈMµB”j!ˆªÎŒ o¢†PU&ø’¿ß¹PÃ$Þ;Ž‘»w©*t!Šꌄ|Õj”1íw-¡LÕÙ—›ö‚ߎ…>ßË>#ÈQƒ›a"¦´Ú×5ù“97Û
-Ïþu¿^ù5cÔÃ[î˜4mô–CÌb^Ûe m¦Ýìž88ç}gõi.Ó 6Û²¡{ÇÙº[·:±’‚~s¼r^®µ{×y"j¾À`UŠ2f5?+ún ¸ ¼â@œî׿…@“%5£shàš¶{++¬#ÂЙH¼GH–T l™!Ñ+PH­ÞPË9­«·Ä[ZYIçi\eyr*–¨Ö{Gnðx*yçK ’„èD2JG«L¸Vä±èG6<… †Žçð9‡X¹;‹X‡ã$]Hñ8ÇR™¿}t%بêŸZ¥
-´êÄÐÓ
-Þkvßèåà?`Hdò8Ÿáz„û%u•$õAºu™\<bxÂ0×í°–h¹ÚU\£ÑÈÖ{¥ß\«E²È²æx,3wר•Ù.$UÚr¸kÀrJ“»Ü$œ)»
-'Þõ¹TÒktÊ1 ÊYµœóý–,‚Å w†Åáù.Ûå•OسÐ-Ž^ö}ÃÊÔ§4¼°…ï¿•U;hŒIv@™È8Too?â.i¾NFNû²O *¿‹Ÿ9áäu7é8ã›
-|Vë›𢔸±W’\úyëªb™=)ÎþWà öûI¢¥Í|ûBŸx§/i¾Úæ3“"¬ì!óYº&4«?©eL:ˆ˜¨^lHëž|´XÁSº)7x}:Z=n¸Ö‚žäQÊü˜‚>›+Gr*|wݨWÔÐæ>zuÚÐÜHq…ȃŠ0?‰Ù“]¢¨=+ûfUˆb9TV¶54ç,Te5®Åj
-–€íÖ—ݯUÛˆ¢¿ß$»Zµg-SÃ]‚.(#º™‡`¿ Ât´Üæ 6¿mà¯ò™9M}§’ˆù'WÃÙð´£ÜNæÜ‚é§$# ÁIÀq¯¹
-ýl…;œë‚$#¥Rј'ûBYâSö JLj N·—“\ð“ë¨zå0y¥~Сª{úë#Òsa¢¸²ÆfÙà´ñéöªðc~ßâ} ]˜ V42lï
-T ›+=Ý"N¸F{VwÜ«Ýê'O¼o3Mk¹‘)& Y)‘-ÍÇaÊgþÆ®
-˜r ]w9jr‡šØ[O§ÎéåMÍÏÞ@Í?éÀ0ÕíµDJF„rFhS[ͺ.ÆŠz¤9dR’XL
-fÎ$Ë\nÞq94e#q0r±MnJïù» 1ç5Gö>
-ª *Aº\Õ@^¿>V1Ö†ÑîçhµäÀɱ~°ìj-ýflâÉL8D¼ÈV©§p¤‡Ekc4²îþÝc=´BªÔ"–¹² + „›šíwp ‹ÚjOI­{4°ؘ…‹VxáOR¡®TÈGA ì³+ ®À©„”À3ã×ËbÀõøÏ¬¸»eéj .5ß?.4?‚w1¤ÉÙ,ðà_–yC Qöê¶9›«¾_¼­pJ-G¥™Ñx¨^ð5xŽ“L¼<k -Ÿ>ðh¼D°A€'áO¶0„0²8t³˜¡hÀ~AÛ{ˆ&î)'`Gï^¦‰m ½\‹HBõoW"Þ<y]7}rÈ“!Vý, U4.Ð"‹¹ Üw9… ÆžîôÀjìS›•ó™…)å’æøUOí›|XÚr
-j«ˆ•Úý¶”À´.u-EaAB´=?`Š)/ æúÂÆ=šöÌé×K¼xX¯·ÎŸÙ5½È}áÍŠ•ÛìŸZñf6nŸÛ2£‚õ¥­¥gÕv/ð^€ ax e¦÷Êcé…|Q*íÎÅ>t.Äñ˜êò[Ê&G>¬šX>­|¶F‹ÿF9ÈG:
-}ˆÀu‰‡FëOðѾÒ`g!ë˶’Si™Ûs„×dŒìΈ”’G‹ŒÒ÷¤úPXŸ‘ÊX*òp¾š£µô†;pšX ¯»Õ䄾ÐÐÅ·.ÊÆ™³õK· ó§r±çÌg<¢åûœs§0œRÁãýËdò3‹Lqø%$ØDë=+¶X—¥ˆÚHï´m%¾”+pÔg­2œÐSíÛ&ÛÆ’ú
-ˆ!Ýkk»†“×ÉÇ.¾á®ì6Ëq_6…áNÝ«—6™T¶Sµ–F¦›–‰0;4Kÿ½26aþ2+Ai};bŸÀ‰ŒIu)I£YÅï“y¨)õ‹—­VïEeõ–œ+e"ÑèËF ÏèwéV¹Õ> ^;"ZÀÌ}¯å®I„
-ÚŒW?ð9ÉšjgÄO¤¨Ê£%Oy-¨Ê¾ÆÃt­ŠÉ2¶”êy (6eÅF~!²×9ÞÕ=¨NdÔ_Èí]Þ[‰+£øþþ>»`.‡`ÔŠk™½¼CæêU¬ùôÃÅN²3Ë
-Ú¬wî‘ê"¹¼|=’4v§Ù:¬)ÈÝ%¿Ÿë°yÔÅ)aÆÃ=Ax•qÊ8úçUûƒòM[iñÊŽBËE7ø·džŒ¿_SMé)7ç \=aY„2Ǹ,DôÝØÌ¿ðÿtöÒãž¿â K‚7Ö–ªëÏ«wV÷ž®a@¡ §¶¦Û£;4É™ÕÖYYøuzD×/e£*)£‘ò9fS$ 6úÀ÷ÒlE;ûrðã`Û¸ËCë*‰{•mÖƒºàÊ–Mx¥PJÇn7ß7Á±^m©Þ®;±ùM6ÂqN;Me.”·k–ü¸¿mF²jkÁÒ⥠êv„,Î8½Õ­Mþk´«Á5­ ÜªUô æ^NÁ&ºg3w‘²X4YeWn)•#~…¼qòõh¯jH¨Åö¤Tpû÷ؾö|]–öÎ…¸GxÖÀ´K<$L
-ÔUñ`•5Þ
-¶¾¨1&µwÉù|ì9UÛ39TQ÷䆹í| ¡Ã(=̨º; GLâ§6ÿãì¸Ì¡"¾Ž•w…B|(iïˆ'Å'º¬ú[7ô ¹r+£²*iÌÆä;¹E}—ûOþÊF\]¦l{YåAF=AD
-»÷I¦aôIãÔ'§»ÞÄû✨œùZzñ
-´afÓ´s!(ˆ)§é‡¸˜Š  Mí0Âß<_°7;3s]˜(ª¬Þ)JÁsTæû°€½F’§Ò“_íç#¹ÏïЉ¯"#(àÖ!È¢‹ù£áõDóòöÔfÆë"S§ÔtN'Þf~¥ê:#ϡڮ“×5¬'9/ŠŲ
-1«¬Ù]͊¼аŽÎžl_ø)J%r˜#sŽ-Àë÷­Ýà,Ó’µÿV¨ðyºoèLLe·rÝLû—‚ f{ûc†lî %Gä·Ú÷<{­ëk†¯¹­ey4X«Þ>¹×¢ìØÀª"¬‰åLóp å4I»{lî5<o„îÌû4%s‹_?Y sP[ϱ0Êh5è²ÀEÎÀ—B] X´sd«3*8w†çñOSDŸkâHÅkd/t$æÕû9ÃÝpš®²èwm·Ù`×E¦mSû™ªf.þÝ‘¤ÐjõmïòïË`m•œyò§oURl»î*8
-©~ó lP}EH¦à%ÄM¼·¾t›t‡¥âÐ{cöÞBÑP ,Ì6@–0®ª7ëSB¢sÐãiÃ]î“
-á¹×»­còh¹ÂY!Ä÷­Kο™x¤õbVÑÄŠéw‘q¢†BŸíú·\¦å!ÎïÖt–N´AGsƒaÃ6ö¥¬0%˜Y—½ãX*íUϼ.;ÆëÚBØåŸÕ$’a’ÉÅ/KáKv2zQü ÜIDîÔ”´Ö# ­w±Bl*sA™vœFûô¹êH¨ËWŠeÍ6«T¬GK¨´gÙ¯Æ#&¤'E¶ÞèÛƒbmAФMÞùpþÀx¼(³L½†^PÅ”‡¤•ã°Ò'_ÊsGÈxh4ÒçÝ06‰½`}‡­¹Gî‡)U¦5u†=¹‰€®qäXZ`”…*ƒ}^­Ý›ZÆËYÝ…Ô ÀüF0j ÉØ½oÑuo·àd¶lŠôæ¦|•À|ÒM ÒÐ$<tÒ;¹–®ö¿¾Þ~<€·j4uuþe»ñW¥”ñƒ£D9ovˆ<Õ¹çp¶Ö\g‡=–ã;`×_LtZ±É'òãó2MiBE‹À¿×jö
-rÂWf¯(¾ Ê.Tsûœ$rG~‡ÌR)G…-ú²O2cl?ÂBüX CÇäd"iXćÏà÷ÈÏ:ŽDN
-ä¶Ôñ{mƸM¯ýœîdßË
-‹¬)Ì Ÿž6Ö=jÖdÃ;í¡Ô¶„µ¼n:_>;y""¸ü,߸藵’ðȲd Ëd¨Q TÇëìÙÚÏÜ­•ïØ`.ø|Mõíº$õ´#É*šö7 ´¢Z•—Ã^SúëVa=žBžk#UõuƒKVQVQJÕÞL§Q¶Å¡ïºÜöÞÖøMØ¥b]k®Ûý7>ݳd«,B?.ÿ@uÏD®3uçæM ‰0).WòòÉÈhW' Vws˜‡×ˆ¢ƒ•\
-=;3؇ZÑíx§fÇu1{©‚qnˆé%Ñ)(Û+Ë*jóºpd±NãÎH¶›áóú E‹´Ø*ë_ªŒ®MuL¡Q°­èlq±ô¦‡³ý4ýCÂ4Š
-õgðeµ™ ýÙabÎbg›iÏRZkaPC+ˆrÖƒŒF&õ*4¥vè°½4ü`o²O¹Û•{6oŽ;ǧ5M²*ËË»mýæAd/œvH&TvןŠ•×èë§fè"W"Ô ˜_©§D´ß-ê{IU#\Ôw€18_1mGwÃI&Ùj™6j%µΑ4»o»R.*Z¼Ê…jº…i7“—n+2{'oœnó„É^*½mp`6id¢ýU•DoPþO z¯@@W7Q!˜ã¯º| —qu ËNƒò,ÖÆ8þÉòê’xÅ“œ-LÂæ“š¤Ö,Q‘ݾŠY]ò:ú©s¸÷8UsÞ ð„Œ)ü<²oD¹B2Â
-Q9ÁïÕ@[E£©ë|å»Þ¡–åq¡¢ pȫУá'¨h æl¥ËˆxKw,Š–Z=S÷z ë‹TgÔèŸ)¸ yXɶÚj"С~Ù·©y¾Wjǵ­
-)˜Y?þÄô‰H;§#ËaY‹zv,„krÇ)Æ-¼›è™«Ÿg\VÆAÜ®ô ×f-²”x éH9ØM±·‘úÕ¿)ÇDEðHÅ#Àë-WΈbe8Ôç˜y•ÛaÈÓ¶#„ŠB€s¨Ô[¿Ñ¬å=%*žÞ$ŠÞµmu|6$)!¨z°ŸøÇ¸ô†áîÊMÌ]Ê„hf⃕ðH!
-Z_!ÎØÏ™P°‚ž§TÙ s§ÌÛ ˆo{V®!(H”4o|ؤvIÒ†¹./ÔPÒùä³L6ŠH±ÞNÛ¯9s=N­ âkûrë¡¡ #Ž™.|eìÀ‡Ú½ìðâ+}(|ô’‹Ñ<w–ãÇûpÌ'ä çEFeÆZ
-O>´?ˆw]°÷¨Ãæ'²€n]*¼½ZX6ÏvJgv’‚¶Á =£;–ðO ½‘*-ŸâÝx>G( †Væ3ÀamÔ­{b|¥ %D~!Ù;'½Xï×>Å{2\ôsA¢›åÖOUiCYxm]¦ý,+“+ÎLïûôcK”¿´ãOn¶Ó†2pÖh¿EßµWê¼Ý†a#’Á°ImǨÐ5<,”ç'—ÇI$º¬ªêßbŒ>"1^ÓZ-âáÛÝ-ƺ%·£¹¤“—Í¥’IÙ ÕÛzbÑéš}¶~Ä©âLÄ6 ãaÕÁqðP2´6GðâPx,ro½sayjñ¥\Mó8Ë49öÑ~q|¾^þZ:@MSAÜÓÕ}$\æý¸ú†
-ÔSßõ}FÆúcþ„"Ã\|¯*)ÕI ÓÔ–,õ†˜¥I"
-n½ü.ñø*ì AÆtþØãR‰øæåUçÙ +KùMg”m{·Hn-dðƒ­
-'´ ‡úÃi©šTâ¦a4ÛÀór4C{$ÐI™}ø¢Ù>a‘Z(žxSomgìY/àOêÛ–·Go<Ü;œö£~NCbŸPT{ŸíþBÎÞ×pR½P¤ä¹ÃV‹»MÿpžíÜ*¨‚]”Yè=¡zéêÛCœ£LŸ3t7_>&IZoômG‘f~•¤Ôóþ{àMßq;:Š»Åu ¦€©ÓZOk˜ˆ<´XmümŸãT`»u6J+kަ‡+Ö3ê~ªdô›™Ò]þAO†ðq†Â…“”ÈH®è$#c*ÿ1^ïÉ’^‹ÍR¹aéc‚ç'JžÂF°úÝŽH18LVÙë`¨çòö«;nQRGí\vß]"zʰ¼~Ë *¬‰@ÔàÀ°··¹K
-ª`Ί‹šXN”ÀU?Ž¢®ºëÈ5ËXrB0n9½âà!§æ®»u*PSçoiyµÚÒLNöolU®/'²ºNl¾+
-z·ô̇oŠ%ž}Áwiô[ªÙ×¶K¸pWâ^­níåÛiíèf.\«™CÐ f¤: l©N}Vâk¿3 Ê[‹æ+>C²W97û&Î_lûnú6±pÎÈè?9+Ì^?…ö z×û±·ÝIÉ*ð¸ãEu…nÄsA´Ç×ñ^dŒ–kC2^FvBñ§ Ó¬Yƒ¸†|óIÔµ%y$¥Í•ȃ’¬¿BPÞƒúuÓ?fÒrJZÔø¯e¢ú
-WL©,ãõ®<ò ¼z8ØAÚBeåŽýAf!Òç.P£MX“mtŠž¼ßZ‰^`«-Þè|‘ ª<:´N†„¥,ûP£—ærÌö)ìÆFSuê‘Ù-Qà‘×®
-õó"KŒŸIF€¥%(³–_@k°„
-j-éù•_"R§‡7D.àúœµÁK`RŠcàÅRÓ¶µËê‘V¡€Â‚¾±Ð ‡‰ŸV':–ðê$íôÃDgènº¾Í·ìM‡k/‡&ŽNYúÞVÆ3‚tӾݭæ;["Û‰`Ëk•¬‡~bŒók-<ÓLÄHsH‡X®¡Ê%¨};É„ÞÌ“Äo·ç™HV²[]û:ûýã÷ön±Út‹©¯¼€ x-0å­ ¤ò3(×|–¤á#¸Úª$xœ£“µ[=~©øwBˆ¢ÞЦîx´-«’Â@iaéLß
-–qÇÙ¶â(ŽÇwû',»_eßùÈvôÕÝU]wùd}ðy0=˜$IyO›ÍÈ€œ=»U9e~5ÉŒœ¼uo{´Ñä¬nEhÕkPía˺OoÑQ2úˆ9Ôì&\`}ÕGÈÔ³ktð´bÖ¬5‰\5 °ÀÃbC“
-8×Ù¾]“’h·À¯6æâYn%«çŒò2Ã>¾õúŒP?$8uŽÁp
- ™ðˆfd;®"¤¹dA¾£B·KµAPùsF_óuª†. áŠD*Aü¨ÊiðÔ•Çð—3+¥]ª„kyÕ£dfÕp¥ß†ÜŒ&è tÝøgXՀТ ãŸ6MªE×ôR¦™–/œÅOtÞÖôÝýÙbE€(àºè±GÑ@…¸A¦½¹ûÆŽJÉìÁÚ ˜‘êæ§p„¼a¦ÎïbH—@$ÕflÕ?îTù×7íÛ|¯œ1¿T({i•ò¡Òj[T b>J°ÿ܃>Ž.èh‹æ
-v¡=å ze×¶)ö\à˜¯y€Š|É) Àµêú<`I@Nw¦éŠHræ­Ôóºƒuy.)ø·Û‰Ýê‚í\üèG®øÜè 8tÏ»ôanퟒJRo╨,ëE…cc!U!ž¤ºõN±“¤×[zçQ¤QC"5ä ã‚Ê|7ù9s0˜L½I½\ðî §¼õq·aø‹_®sÅ$Ö꩜Ė]dyé=t°P‚Ö¦—3YoÝçÒ2Ëp•ç]Lò2†ÎïOñfÊäNªQJUfî‰8¶÷$ý›°‰¯öOv¢8ÉæòLvViÊZã¬à¥Wf¥
-<”â׭Ҫܹçò3¼+çÓ2> $´‰G£éœ'¹’޼ˆÔ
-ªwQå\T1‡`ï–*!7Ñb¬§¤ƒÌ%©©Â+¨÷|¸M·äv×·vã„z²Žç§ñN4És÷ôq€ÔüY ÐW<o9tƦ7°6UL¡y¶s-ýsŒ,ÓÁDHHZiÝwà¾8›5‘ÊK×>8­-²¼
-!STlÕȇ=f¿lOtÀGF­FTØÌ]¾Žr»j€¨7mÞ±Ï[Üû)ѢÈõ|ÿ`yzŠöÒé±<‡‡a^!½Ì=UÆø×ÈÂúa¤Î†¯=Æ%L€®"¿ý%âwQ˜H_éwõ#"ÜH„-»Ö0PõºÞ¥@°lÛt´+Ã=¼~•¬Z>ñ~)E‚®8¿’…@ Å²!tiv6diü•â¨n© J@u˜$íoá}ÝÉ–i3Áñ§EÊ®äK„o«9 ‘9Px¶:lrÔpÊÕ²²`¸uÓ/µo­î’h±†™º¤Õá¤Üôƒa30 ?GÝf× k!{h¢Ræ×;ì]OËÄ(«‹ž<üÓÎÃijW$Ä,= B‘Å)HS†b@‚ÕIw´«–¨;¬Ùlͨn³]]CþÃzÃÅH4¯9¦d˜«çï¡~¬ˆÊ \ES ·Â>VjPÈ7³ßtë™LËYýUå€(ÉxpЋØÁß`›¿ÃTdߢ}éøO Éñ¬1°y°‰¼wx;l¦"–SH{ïÚË“°ØéÆÛ'µ‚ ‰œõO
-‘xÑ6@·î“ü <SË~m!¾áº™Àƒøu’°ag¥Þ¼ÃæÚ ñŠw­“ë•Î2z­B•CÜ.7 `˜Uy̨²Bzx’qê/›ä?º—d¾¨¢ ѧcŠA×<38æª"<ž ‚õÆ—½
-;i÷¤ð =¨?³F‰%dr,¯Ô=wxŽ$Ì„½‹eÐQ˜ } èax>,¢RÔ÷ÕüMoÖ+&Dù ={ùfs9 µ¨<|ó\¡Ð’0së·§!Æì¡K^j1®!çóã7ƒÂF!2ùš/ÞQ ýW…!dHc±g±Ä{«£Pa,†S™"GÂd¯Íçe䶬ÍöáÇþ°ËV¼Èˆ€CaDÜøçf:*ºXþÉÁŽ)2Å·áV׫ÂPHLVz륚í䫟96? Í2åÈÕZrÍ­Í »È»Tn¢"Öhd T3‡½:¬&™t0M ;Éà¡?„R„ùHÌ÷ŽlߪeÌ—cN^Žaî[¦|©"ÏP%]Éúí9F{ ,R˜,wÃy'kÊ?Ázï×J#ů§¼¶7èÑf[ØÖ¸Ü8m>é,Õ£ñgsöèîǼ–Ÿ >¢’mƒ»šz¶‡–œµýdïŽf[¹öEódd@â?õ–ûn±áH¬‘YÄ.·äÈ"R½¨³® ®c41V8;MmàZË¢ò·ÝHu0”`QMĦ‹Â‘.;¢¯|í/âcbÇóŽ—GÛR>BŒÛb}7krê«<Hú€·Ïg†Îq¯Kîý \—|XY¿k˜ôÆñÚ.ŠÖ§ rõy£çu‚dàlríÝ‚KWe >À¡꓃ BÓwè‰)YXP›Ålè•1«€KDà©)ÎýâÌ2~eœM=¤®%Õ3– Cu^yQ ä7ô£¿˜ e*²»ž¬js»¯ù‘1'¡Û~POœÓü T™æ·UFaØ­ŸsA?Áè¼³Þïê/Ã×›Ý/ˆ' xû:ï+#™>ãàiýƒžþˆ¶ âh1CJi•ÅĨ 0+íˆ ªä›Ò¼fÓjæ®3„":b^¿’ž¾>œ ÒGßzHűI ŠÍ2‚W<—ø­î±aj4Dµ“ 5«\6†3Ÿ‚ c½Fbá¯8çÒIzTp…!‡ˆ­W@Ö…•Le2ˆm¿MߨC8Žžç¾|à̤ÞBÂîÞÄx˜1=WUTw.ÒB²è¾Ôç+Sïj©zx¡Ê-iSŒÌ¥ŠvÔ¼+ù$zÁÏ™FK0&}–ã㪼¬Y‡~9M+Ã¥SÐ%Ì.äÛ¼­=éšâÒá™>uMÎWÐ_Jú±Å("3²8Bwú÷7Ôm´pJ°B4¥”Nƒk[‰urÙÍù¤†sH÷Ö°aÍúFŒÆ]bføÓy<;X†4Ò²RÖ:’êa“‘qXL¢e9G膥`ÓC®%…›ëTÕ“PnòDXup­<§Û­Èž¤ODZ‹ø5­¦/»#øí>¹Ý¨€º ~'–®y×âSï2ˆÊ²„´` l—Ú-|Us¡o(ШUó4¶ƒ¼&‘níüÅçcè¯7Lçdk~Üæî…MTx€iÊL1ĺŠœŽõ‰4Ábͯ†Á¬R=ÐFÿ‡ hC(íú6IÙÇ0”¬ aúÊBJiÞþv£¬zh7ùp¢wÉ×é–WŠ|WXva,qkOæê¸ü¢AÂLR¿i9ßv«!Uno¿¾Ó7…­EýØé2CGÊHß soo¹°®âîç´ÃÓ.·ü‰XÝ[ä
-sŽ[ò¯ÆºŽÏ ZªT˜Fu醭aw;ôfI´ª|fÜÚâñ‚ÑîB5ç:ô›C]Åt)´¨ [³')Öá(Ö²Xý” ©A8çŒFŠƒ9'™ûkóm Áh%žºË!]Çqf°pPŠpÛh T€[LœPv?çM4™£nÓMZw ×Ð]ÚUå)nÆ<DíÃÐ0ŸJç!pº­µB‡#_JÔ&bƒfç×M2ÇjH@§ùåAßÄt
-Ópd½Ô[`çCDîãY`=O¨ã<IÅÿò‹I‡ªF< óPZä„N|£Ñkÿh!Jž¾”Ú§x¼¬ÃÇ`3´üµj¥mÛ*õ·ÒÝ“$Á³a†£òÑ*ààw¥+}ü[=5êÔ;ºžiþÜÉzÇS^ dSuœÏóÿüÿ,.Ä2lsޏ@î³ñÀH²Ç¦¸c;däýHŽˆEpcæ2®ªÉ'ýœ²( HñíÀfº6¢~ãÍè’6yÏØlêÖ¿Œ·ð‘®ª_0°—j†BƒLgxN†N¼¸4tãr&ð$Òá“×⳦\׬#RdBÚsdz/¬Ôü(Lš]ÓÄ>º
-Á¸ç‡ÂúIo>¢ž Y†¬ƒ;¢+A²neçΚ[czýMµm/p5@?¶~t€pð’ºF°‹[Ç
- }W—ÔÖ¤í®dÏê3Æ­­Ò‡¿$ºÕVP› øÅVc%3¥@¡íä&žH˜.ÀýÁ6vÀáõ£…z…BqÛNÉš›2•TûD:½õ®àxü\Æ/(tùDѦ$C‹%Ð}B–ÌCÀèçQÅÞ §еHËÅL9Ú~[[f︙¼mZŒ=6% Ù]NÐu¤s0E‚ÿYð»\I'T‹p>̵†ƒ"H= ‘ª-ùQLO*I!P9RÖ° ´
-tE$ úoÜK‚†¥ocÙÙ E/¥ïµ
-žž3¬ªA9^éH_ˆÊ3ìšæØ¯Ùnà‹)áâm>À}ÐhàÄšŒ åø3ÓÝŸ•Tw²•ä!l}òrû´žMßÁž}µe¤Ä¨(ÔvÇ µþ«Š ÉpÝ8})Z¯ìfä8»8Iƒ~±žH.<³»k—Ã¥ÌdÕ¹<™Xð’hɤbÕs!÷Müÿ´/$¥nŒñIpƒR{Ä„'âcêRIÙ=\XÌDçl„ñÙ7<²´-œà SæÞ’ÇVûñâ¸bå#É^e‚ÏÙþ*Y¥µ
-÷5bóWŸüÕôt³C9D$š)I®«K$j tR(PPÀ"“‰ìXjÄrÍq=L7Dã`f*n^˜ÑééÍz˜`ÕîÊ_Òºn°u|ù5Öe3Œ?Ä‚! ×J„·LR8“*'²¸¢hŽ•ˆã€AŒe~ô"ž^'Ô®qiÙ&­´fˆÄãow^xvÁoóÏRvÎ?îè†÷ÖlùÑ2ú«4Nc|mOdòpÝ.#8£²#îK²nd¹!6Hßçw¿Mï;ž†‚ìÞ BUuו€‚CTl®´ÔZ¡ØlAi!Lëö.¨N«¬œÏÂðNÕ ÷?õaØÞ&.8ï †‹Gq2x4Sâ@ò~ê–œ%´Æ­j¤«¦³úN‚Ó˜N SˆWVµêYkǰ¬5²¥áŽ¥ôbûz\séeñ½kQZy¤h*Z–E(ÚRˆ3 Fè~˜;ã|$ªÓÃ[®ÍÖ-˜N]ˆÉáÙP<|Å:³èôFÎõSº6¾Ï,)£Tÿ¨²š
-ÑåêB:­ÃÖŠ Êx$To9@H¸%±.¨Ì~jô&+A 7—ê³Óê®ãO ºQœß ÝÓ¼UëªðKŒGf´Â8Jý?âá~«¦°,i´KRQFÈ:çZÔ²öhÚO>Oɽfx‡2ȪA™`dµjg ÞqÚþæb[{e=?_)ºüDÁêÊl[TÌ37Æ8)Ñn+àAíMõ­¨Š"z´CE'h˜¹BÅQqzïªö0|#aÄ—loàÊ—v’³XfŒ´xè@—zÁÄJ/Ÿa‰¹­2ŸÝ¥1%~¬uÂ…ÚÐ63íè4(ÖOHv´Éã‡6ø‚æ *ñ;yŸÄp+íKÈG?üþúI‹À7 \sNw%Ø’‰î;J¸To•Ö!NÉSenéN†£²p¬î“‹
-4­úWM‹~©¡CÏßÊÿU-Ÿ}ìŽY¾†¢á_±@Yh€íu›øbÔnW,ø”=ízt<îKfp¥]“ŸqæÅÞ-3Æn’aZ|ìŠï|=AW?~†ŠŠ¬‘-šë\ïb;üšsî¶j÷Žmùé4§xßîh&ô¥ü"{kƒ³é|‡l#g nl+Ï7#R±´Ö>õŒ™Y©âeë:@³Í¿xçc…/}RÖ¸g´µõIßârÎëýM•4yþ^Ú'ȇ·ø§–ýͬ&‘^×Á7È:6'ó'r2!LÇ1¤Abw>ñg²*¯Ž¾O‚Gk(9ïu
-%¶íV,ÜQòQÛÆtäf‡ÅuZý~J´A{3’ÀJ™‰&Ð0M\ý\¶XÀö1S¤³ô;5¯EaÏôJ0·/›Í4j³}
-eOLÌq3©¶Ô}ÅÂù„×
-³ÝMB®Oá÷£…ˆ¾b4Ûm5Ðo{\ˆciÿ™ÇWáÿ3Î%üg©çŽŒ¸Û¹J…QÒ‚Q ]¢À›ÿБ:™¾††4§VõÏ_$2}Y뤩ØÝððÙ ÿ¶cÚ¨"yog2ÃŽ‘} º8SJ)ì"Ko™†øžJ/ Æ´“+b<7H @,U¸)‹}ȼŒë§ü`J†g¹÷ûŠ¡tm
-…™¡é*®ïÏZžx;À-Ïåìƒ"ïÚ†ùòù·)*¤¥3ËÚ^ý=äÜúP~Ø.†ÜT Ë ‹ùæ(Õ¯ ^þkΛ±¢é ¤Tr̰íåZãÒm5Xî3·#xæÓÄ·¼+»b{ÿÃ0œ}-å1˜Ë¾•áQÎÁz‰Â¬ÊÞ¹tEpyIêY`à7¢K KÀ½1«Òâ
-+aëØ “)¯[L’ïµ' ò+Ÿ°Ÿl‘\ñ™ÛtôÍ<ÌÖëwÊ¢bð59Ð*ßCdŠã•Q¦T¹/®¬“¯}%%§º/»ï³t.fÌ fMÚ˜Õ]Õ4}/ ÃÆÑ¾9ÿ5$ÉýÓ\úP/eë1WÞ³…Óv`ÓHT»Š@NùÛèjÔø«Â2¬ËXì^â{ËÆmô«—Ä 3¥è)Ç UGø:ÿ‚|…o?W6Á~ÇÈ!]ØâgÆ®±ê3_áoxFP²¾Nµ¢CŸs|’u(ÙR«ãòâü)ÞNcZöÒ¼°nPF›‘úâP‰6úÓ(1êv¾o*ï›”|QÐù#$!4SzâS#Ž·uþI6Då%3פx{ˆé´¯KKÁçÌ®CÌ|HuæË‚Þ
-mèLj¿I¼Äyê4¢“xC‹´¾}í_dšÈb‡a¼Ð˜,ÇÁ”jÿ»¡|
-ôÏ™¶ôúû¿
-h?IOø¿{EÁk–X4~Ôåqp „DuNLi’ã¨L’¸œKŒ}ƒ—Öxåp·UÚ¡e=.L,¾uêÀ±Ó>Ø6¶Ëh ¾­I ©¥2ÈæýkæYל2oíˆ6KîØà|ž °
-4£|í 4öî #a`ã寱ÂcJN¿$DÁäÊ:ß÷”¶Sù¿š0'x\n)|”"<jÈàlZñL|ìó “ ¨EëhÈ`TdÈægòㄲ'{°›ö…`*ÌñN¦ÈKìí111—Q'ÁX¢‡^¡8fŽ$°}d+xÑW_Ìñ÷õ•  Rö>ü?ëáˆò$ƒ‚EÍ›z`…Ó.´ïîÞ9C˜Lö*¸`b@åMlå½/O‹EW9
-¦?Ä›Q‰ìó
-€u“¶o-ռζÈFE£ð.åƒÊŠë>{‰*¨òwµš°s÷ãÁ±A
-Ä¡gK°–jྤvÖ?”lMöV([®™4úÊáD3p½$V¶Å,t‰#”ò·k¼Í_y´©¡4A{;D9"š;ó;ée$X|9T7N®åüok½µÏÝ3äñ= àŠŸœó ,çPzìýªk,AUóÚd¢`VX¬@a!G»¸¬³^„žÍdSïÄâzy’_W}T kÓˆ}¯µj,BMðî´¥{¦XS~§aN·¶®žc“£Ô‘«8³s&ëÊ‹·Å &èñÜ”?äý«>ÀÞ×]Q´®óP™Øk`ßäÕÝf û®‹Y×Z«ruì=È3€1\&ÀHCNXùlu[80ëFÝŨïØìNÄ]©
-˜%0œÒAJ^ý´¼%¤w}/ ö‡î²òAæìQæãžûnúéùÎÕŽÙPÒòçÌÃzÈ/Z;ž)\x‘ÚìëÖÞ9”U.‰Ó_>ò_øá5Uûc-­@6 QEæ*D}X2a/GúGc1§OMc-Œ¾2å\¶ý„ÆP¶ó2¥‡`1”{݆àYšU!²TQŒywµÄB´¶BSÒhឤ2šA1±3_oyPüTIмû«õ[»TW”—¡6ŠÅ~u‘#·ëõpmðI„#³ZÕY$Øóyø2XõþÇ0†¸-{ñÍ·¾ªå¼2ñåÐèœ/ûY-T !ÓXÈ`lgÀðߋ٧¦ß
-_ÃýS‡µ )1ŒÊOesLQ²
-Ôqµwˆlød {ŽÞ‹t¢ Þâ+ïí[^.\1} )ÃÌÚtú¢à›%×ùRO|cÇŠˆ?ô€L]£µúem˜m…pRn7+o“Þ«¶›4s·Í –çë:yÊtôÒ² ê+ã\æ—‹HöɈD#|q™eѺTÀ?È6@å¦}Òú”¶¢§†ñ®ÐJÛ?ûÝ(
-!N™<‘cÞšó¬1¬
-Jµ¸Q
-¸* ÞNK
-Ä'Εo äNïçÊòHª,—üw*»ú.|¶0ÚIÐ ž4[Vƒç›-Gy2½ û{(b'óXèŽïÝÕˆYzåeø’ºkSoðÕzN
-…Ï\{¥?!݈¿Q 圲,é“Ó{Ü™Óó½%·‡ƒR™ØKY,áëÎú¤ÌLŠšàßÎÐc+t_5ñ‡^€ ¨aà¹3n<‰¨ t6.ôÌö›Šûƒì-w\£ÐZÆ.ž(¯íôúDÀëôèT!þYÑPêÒ•m‘Q•ôƒMƒhØ›‹Öš– Z¿,ÃCó
-ËÝ@Á¢gßqìöD€¶þ¸µÿO™ë&Ñsu€r“·Nޏ¬¸Ü/½à=Nº&F¼«F_ L-C§ˆ}yï=]Ií˵¦² †¤Ä,Õmza­®4@Aĺ@q‘s “†D(7–Øuç´qçGªw=cP Ïú#ÆÅ·¹ªËPl²Uø¾d¤GË^ôë/mН,¾RÁ
-¶Èãé©t²„4å¼н”n_0gþZXßåì…×bKÀ!È*Š¢Só±[¸ùq]²Q¨ù
-R㻯ÙQôÏŽ}Ô Z—7“Á ¬¤jžé ñ"FOiŠ>?ÎyÛ!änQT)Æd§ Õ©Jü[—p1}àn‹߯¶ñˆ#ªU{¹SV}¿W†yT¼"~,*0W‰™ý.ÜXxäݾw‚”ÕÏ#hïyª ?N8,¬Ÿ¢Ò‚÷†—ó]ÅŒPpFÅKÕ~G‹kýj Ý¿þKIÕ$õºÁÞº©‰uVé¡OýC±ÉåMìi ž2C´gyƒ?’ËvH4åËÌŠJ ÂCéØK!ÄÕãþIêf|ÐÝþs/ô³@Ä:÷8=]׆ËlÙím1qGoi{tÒ-3î.¡¡¡)òË“–š1®”9c¿X;È:Œ5ð4‘t# `bK)qA¢ ©˜æš ›c´­5ÁzZ1ŠÞÖª)\“²1ì×±u27Õ@}}·f RÙáÝoW9Ç\P¦0»EÆ}UB%×/y×—¶¤^â¡26ýù,bÍŽóPI2ƒM<¦éË:ª‚ »û­h¡1¢Yâl8.ì4„ãGóqj#ÊÑY
-bJÁœ>ZÔ¶X-wJÂp²u©âÆ0S§±sª3KÅæóì“#‹yžÇ­¶÷ âÙØn¼ú}åÔ\C"…}ñõkRO‘"ÆÉصCŸ°Ç&î—»ýl#˜LV¢n÷‘¡ÈÀ)5~ÁrioΟeÓH²ƒ'¨ŠÒc~1GÙÏVÛÔ&¶b®Æz†­(óÞçy]µu9Û³·ºSß<ñ‘¨¥ÔÆúµ•†Š·ý]n>+`½÷£¯´¢w¬lŤŸÊPh;w#7Ž®vUs Ë0 ÒÕ1©HÖW¦Bü0%Ï x4î/ƤúEGû ¤y+Ë(§ÛH·ïv²x¹1= ›uBCpƒÉŒ5¾ÂÇ™Ò{A•0žÑ5'†:]+³ lYô9²Ÿo Û;O%í§æe½;ió]…J.Å*¸½ÚWféë]𯍒IFD>’!(š 9$˜Õ{è{W»‰êå|rg,fi©†Yœž›V™êkS3ððŠ³Œê£s(h"ñÞJÚ¹‚ërG×ȃ®Ÿ¦Ô\ãûö! ]aX
-=ÄWDe1ˆ¦H”L9ʳ‹Šâ(ÉLU~f 3Š^ùž©DÃUBAB´m0Ap ÿØÁ÷4@-ð³ÅÌO­‰D^¯-;<BÖ6÷¨qs LâãÔ#½×ÄoQ ,Lñ¹½
-A™âõ2Ñ¶ŠŸÓ¶Äøí÷w6Ê+–IºÓœnµq×oúWïkN)ï‡mÖ8/1aÀÈ[­ø'! ´ŒÄPxÉ¢rB<–ðœØEÔ?Pr|7°™2­²3Dá ÄWUOš9¬hÓÄ5@)NI´°›s0ÇÖnŸ[fö½U¹fHɸ>›»|¾¸¬{ü*ÄØ*X‰À¤ø‹Ã’mdñ„]8Î̱r¯éúë$Ÿ5îyôÅ 1™ú&àv(WØáñªLŽe½pò‰õTàb{´ŠÄB!ð¸YRE!ɾdä\ÁÔ|
-Äôò} 0á·Ï<ðx­×³5(©²ÓÇXõ̼‰h8L©m¢Ͱ]ºÓŒx$“
-­u|Ðí8t^ˆš/€‹MÝp­_’<{*ñ>Jn ÐÅ—6¹s²R¯aÆ‹úr×€]9ä¯:²(`\‰áÉlA7¾ĦK”ž·†9z8nb64Ë¢jE¢$µ1V|·ZBËÐöX#Y»ͪföWßqYûlf/ö»­8Fj…›ë_X1¡ÁèínÕ (N1©þ¢CÑð´ýÆ9(AÄEêÞ–«ôáÃÉ€ÖÜÑf}_¢£J¾:¤ íéJ$<ÂBÿˆSUÅöìMø›Yr¤˜¾ÃÈ×`Qíå?›Ù±VƒÝŽˆ½¸ÂˆÚÖñhÃÙƒXÔ‡7Ó¶,Í!Á•FÿÁEè^F ¸¯xÀÁ¦ÿàB*·ÛvªR&¤N<•ê`¢µ+çN¼é¬
-g¤£Ê¾2f~mû„m}…i
-'óP4I×¥ŸÐ?`b¬FH. ÷R}ÿÀ#] «iÀAñ7FÌÐ5øùq6O‰ Ç/êúWbõÑFåq-¢´ð §]xžök%˜Ã–td˜¯‘ŒÎ¼r¿
-ä&oH[œ¯A•9f
-endobj
-714 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 2
-/LastChar 216
-/Widths 2023 0 R
-/BaseFont /XMFFKP+URWPalladioL-Roma
-/FontDescriptor 712 0 R
->> endobj
-712 0 obj <<
-/Ascent 715
-/CapHeight 680
-/Descent -282
-/FontName /XMFFKP+URWPalladioL-Roma
-/ItalicAngle 0
-/StemV 84
-/XHeight 469
-/FontBBox [-166 -283 1021 943]
-/Flags 4
-/CharSet (/fi/fl/exclam/numbersign/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/circumflex/quotedblright/endash/emdash/Oslash)
-/FontFile 713 0 R
->> endobj
-2023 0 obj
-[605 608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 500 500 840 0 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 0 606 0 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 0 333 0 0 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 500 0 500 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 ]
-endobj
-689 0 obj <<
-/Length1 1614
-/Length2 24766
-/Length3 532
-/Length 25647
-/Filter /FlateDecode
->>
-stream
-xÚ¬zSm]³eÙ¶]uʶmÛ¶mÛö)Û¶mÛæ)ó”«ëû¯:n÷S÷}Xkfæ92GÎ{G,RBy%c;CQ;[gZzNE5ykkc ;iA;kc‚3 )©£‰³…­°³ 'š‰1°‰##)½‡£…™¹3ùõYþ !0ôøÏÏN' 3[²ŸWk;{[çˆÿçJ&&Îæ&¦Ö&Brò²bäb²*b&¶&ŽÖò.†ÖFÒF&¶N&¦vŽÖÿ¶ 0²³5¶ø§4'Ú,''{#‹Ÿm&îF&öÿ¸¨ ìMm,œœ~Þ ,œÌ lzàlG`akdíbü»©Ý¿Ù;ÚýDØüø~Àä휜Œ-ì ~²Ê ‹þOgsçr;Yü¸ ìL"íŒ\þ)é_¾˜¯³…­³‰»ó?¹ MŒ-œì­ <~rÿ€Ù;Zü‹†‹“…­Ù1 &p413p4¶6qrúùÁþ§;ÿU'ÁÿV½½½µÇ¿vÛý+ê?9X8;™X›ÒB10þä4rþÉmfa E÷ϨHØšÚ0Ðÿ›ÝØÅþ?|®&Žÿjù?3CñCÂÀØÎÖÚƒÀØÄŠNÖÎù'%ùÿ›Ê´ÿs"ÿHü?"ðÿˆ¼ÿâþwþ·Cüÿ{žÿ;´¨‹µµ¬É¿6üÇC MðÏ%óØXX{üßÂÿ{¤šÉ¿qü¿¡H8ü4BÀÖìG zZú3Z8‰Z¸›Ë[8™˜Xÿté_v[cGk [“5ÿÕHzúÿæS6·0²²ý§í,ÿæ2±5þïÔúq:9)Mu IªÿóFýWœüòÎÊö?Ôþ½;ãÿ\üƒ"(hçNàEÃÀÂH@ÃDÏðsà~øp0±øü_2þ ˆá¿Ö2ÎŽîZ?eÿìü§øþk¥óß`DlìŒÿ™%g[ãŸñúOÃ?n#GÇUÿuâŠþõ¿ÝÄÄÝÄj}ÅΈ+Ø2ýw†szîÈ”°Ö@ðHˆ}i£rQ]¯_zøG¥þGmmÓ çW»ÇòûÏ#IÊã±>4ë_½©&×ù8>ÄýˆÛdlTÇtº¥°jÑ^7KÒ» š¬ôªÇûS
-Šº%`¸3LŽ7)ü‰] üQHžíá|ÒâP»š
-ÿ\%ý}þ54>:2Ü{Ú„M•IÊå
-KåïƒÍ§©R!RÕDzÝžeÌ}øØ"œ³\ʤ!g?5íµ Îk“T $f}QìŒ}}œ7Ãë–aI­zQ£Ø`{1®ËÊ›¡9sõ‰ór5úË<#¤=ø…ˆ´±36…è4Ó+òŽÇ¾a‘Ïp:‰é"“|:[5P6“Ó<M`IÍÍÍLÕ‘˜‡‰ŠŒDa_gÁ¡Ãœá½]é–§ 9ç8sêÓšÆô e¬bô:miØ*N±«z|+hytHOÛV77Ùa‰
-×Nä&ýâ3­çï²E@\æYzm¾~D9šru] ƒR¢á×0u+»Y}Îî+\·¤èƒ˜`Ixï|P>½«D¡;MMM¬:NNIˆ0þŒÞû+âÝzzÜðà\
-Š—€’»qt‰ÿß)âxô0EBå)¦d4Ôà,Y=2€Ä„ÖÈ=ðK86iÓ·½µS(ç óQôx;”ˆwMÒÝ\]°Ň„ŒŒÄޏ¼'Ž‚ŒHè¬|Ûd@I¹²‘E —çê‰xERµÆ[ºª–ØÞ÷6µt×Ûô”Uâ£ÀíÇÏcí—‡²áŠù¥t/ëE½N r…5õƒ‡À}[ÖvÞbO¿öxî3–^üX³~ݱÚtX”·úbÛ»Ze¦B}Dþ¡¥±{dyÉÞâþÝbæZR4ŠR`s§Ú1w p˜aºÃVÒ}ŽÔŠ'X7zÉ(S†Å£À¥AKÝÁÆçr&ìæ¤«û\šì‘F­ÆLu×c¶X‡YÈnT<)—l%WªzÈ
-Ì0Lo”2´“4c×±¢»ò“÷é·%¶œìÔr÷«rOxRæ@oÑ[#OóÐY„ý‹UՈʼn%?¼H»@yÖÞãLùbùÛq÷›c}DNCýŸoì sÑr?áƒÔÝÛóŠJx>æ?¤å‘]ò;ÔHbÓ‘¾tTï¨)Âm"È|Ó\¹¢óCÁ†e`ç'(Ël-zÝÇ.æf ì„©ƒ5 /Â/‘˜ÅÓSþÃEÞW;mdu‘ýêØ®=)À6li»ÙæüÖEÍX»Æn–ç]6
-Ȇ§yð»Ô™6üÏ2Röv•ŽQvvåôTÂ*¦(?ç)m¶5”OVÀ#8”¦Ú•4áîPñ"!Ýa¶é]\yc™··sãAZPU6gbß+:*(¥Þ'V­PÜ…¥Û)+#®¦.ráýô[yÞ]²ÅÕ¦<×µAÅÊ|…ø Ý&Û¦ÖŒß,`ÄÆ
-\w­wñ0‹²R§ËJ†H®oQSÓâ(b½,íµ‚9¹/#Ýýo ¹|Êq3d›p+¯º>2£~ìîšzµ´[=1#„ãW*Ža†Æ4õ
-|\4YÍùô\VŽAò¡iÙœÐV
-'Œ†Ý¥ýrˆøœ]E ‚ˆó(‚ƒ+c[€Éj‹®¦Qíä¼_Þâgˆí44U÷“É;2–×LC
-JOÉÒ4WÑœž:óû\™Ñ™ïÞ! ×yÖ\3Ûø=«/Τ€çÞ¸ ¯æŸ/8ˆÇîc+Š GI1(yBª5ŠÝ
-ˆÐ÷™êq¥@ûÏ|åRøíçÒ¨Zqé1#.²[Â^%â”(:^ŒD”ÚPØ•/ð
-ÐJºN$†¦ædœÆak¯n¡mk5¼{n
-©.׬nà'' 2‘î3ˆ2?g‚Ó<ûeZ‘™a÷­6™'zOÁt­:ñÕBzÚFÑ£AjÅ6©²}Ôq”‹ðü¬fŠ™ðaNõRäm€É€e‰aS—š=ø„PD‹ Å©?Κ-Év“Ü*.ºå„í_óÄpçÂ’EJ-Mn’†´#Îó¿?JýjÌàUàTƒ*
- dªÑ‹ï­M1–7°¤*’±¹+DÞÄZ·íøjâ?å
-”;çÙßëÀÓùÙ—8Ç!‚Kùz.Áøò¯Xñ€¯ÈHêKŠ\M(€Á½µBO8 çXE_æsÃYZ·èp6aaLÞ5f(wS;áKéªOÙÓzôx
-Õ§µ÷YÍÛž—™®Î燸-f: sôqó957ì>\Ç´¶ ¬C½}8$;DPì…eªì¢V¼'­ØíÄ<È“½Ü¾NO(߈]øé¦ÛÅr_[Þ*ʇ¡ÆËÆ<Òx ç˜î®l
-Ä’£×¬÷°zJmp¤0ZgôìuáÜí™ô!F…ªä Œb“Ð.ƒ ‰¢9wØhQÝ+âGùTjx­~wtñ».^jËð‘g&rÖ̹V§#KÚý®Œ¿çqÑHºö”Å~àlsLÓfH9áNjn£W4`oÑ£:»Øš^ÀÅK¥ŽÒúƒòL9ôlÊ0Û‰B˜ÚÔ#k|yË¢\Ÿ=*XˆÕ<d0 ¢‰úJkáÜ«mµuˆ„‘¯H`Ž6彋EÖùñïùBÅ«/hüî#Ô^†§ö¬i(]‘×Z]°&ÈC˜ìö¶ãíöù{Ùj+à€Ú‘ZQ[){¤iZ_Âì“à=Fº(s!:T KØ;XžZÆ#›DÂ,vÌ4ÐüQD~ô¡²ôå *×BêbŠµÊ´è˜:³pu þ§þ9rK28]±„»]Êö]– ÌiŽ rÆf§>Ä óRi× à¦H~&¸·—ϲSz…€ÕhßÝ0Ö/äH—Ì-Z‘m®Ûû <€úQ³Õ0zÒבß8r¨tIÏ'Õ`™@*ØÆ®@fÃ&€IѪ¥v%QÏ:®Á:.s&ŸëF­¤ƒQüʸúW ›_!Ò0sI"A4ªØ¼D×Ä÷¨C!n†Ñðú;+‘Öº{ýŠ÷ÊdÒ”üÝz/176߯Êê0l®«ßCヤb£s0 N­÷ä?‰ X! ¦œ´Î`ÿ¾‰$ý:о]‘µß«kw#+‡üåj$P®¶½¬6>žæØñ^70•öKú€ø$ˆ]ïï­óÝo¸@g\³°G
-9ÅùbW<-—Ô9âEjRœáÖÚîö©ÝRËâG^ì sJ¬¾bíÇAÂxÙýeØ­ÒæÊ>•¸jÀ ,WÐs
-ñÝ‹¼I2ˆô|ß{1¦[y#²š‹9ö_ÀSƒæŸ’™fyf+(ý
-K#Îø/÷2ž;¼£§Zç$Êò^Mú½0)íN(ïó‘µ<‘Š6lþ;9ÅуŸ)Ðæ¦óF}»ºÐ=À¸¶V Û˜Å/éGŽIÌYW¯µ=·ŒìŶÑ;˜vìbs¯+YÈý/âwåáNV­&Þ÷¥0óŸ7¯Â$6/ ÈÉa…Øï§°¢ z|£>†²ª
-«Mˆí&/·}Î I Ø%΄%0W¦É·¤¬´{âI\5d§1ÖÙA)£7½¡TDƒÖcÆãM~ÉÛ0l4ÚÔÕÝ„ùäˆ÷)—h7¿d~aùruÖ[l¡F÷è\)ãƒ|<kz?D \]ò7ï2¤ÎÐdåÛTª³ WdDmI!÷Ï€S‚'#Q~ On )vE6ün¡Öi¢ Ó€(IIŠ?´ëôWÞbÚ¼%­ÂbAP­`6D
-–fçÚïC%ÇÎbl·Å$ûÄÒéæÅÇDÙdÿ
-Ÿýpô¯°0TO@,{i`·Î¶ÍÆ¢ãÚâ×Kܬ ¾yOàï–<ÀQ–
-ðÕ Ž£èÈp¬­°"M¸p‘)š!(´Æ[É⯻¹ÑòsŸûùWÅʨBP¨h Ù'“¨¿ ÞÞÀOÔ«Ã¸Š½â{Ë eÊdëô¹Kx5QªÎ™6!â–­a˦½ë}2 ¨Ýˆð+0ö|3k³Ÿr™eÈ[A˜ýl\ÊŠ}óÃ\&Ñ[Ããóqt“´ú8ûy :µlõUñ®¥"„KЯ¬’Cpeªb•^¶¨¦oÀªs'ª¹þ¯cÙKñ]ùw+VuN|äáù s.…¸¦Ÿn ª4—&Ðøš{«î‹½±é
-uW–ÿðžZ—â9«ÞËÛråŠi~Û0¿<€G<æÃ€›3¦?›(íPÒá“~šGÁqFëÝŽíÆ½HšJ+3"Ê«F…@™'›ñ‡îIŸŒ‰õ‰ZêÀ7Y
-gìзt@Š™+[Ñ3²/*;œ÷Q¿.ønÐDâ]ñê “R£Þ?*ã]£_×êCék~Á3A¬
-$1üf¡
-‰¾É%|¾Uůx¯¸;%ÒŠƒ}5]åD„¢J›œ)h#?yºâþ-^ø*#G„ Ú”¢‘üÀÄi;IÑÉ2çŽÌ/~é)Ñu 죯ã3noዯ78]P³]nÃ|¾g
-6ψ6o‘PBšP'̧AFæêdf?P0dGC×´rW›çB¼¼6&³SÊr¥Ü •¬SS‰ÓòñÞõT9Žú¼K)Œ\û)°bç¶Õ†3´$ZÞ#&†×ææjsmÂCf‰àS4XäHF Z”ÔzϘ(Pt
-|ÿÖc2›#á¦$'j‡ß|c›xß3ÃlÞ“”3Bm€Ü9ºš?¨
-LÈJ„5(µ
-S|ØHˆGð—Ã=>ôԑʇÞw1®V®Áç€R=äŽK‚uW—e“ 4¤µZ^ öçý†Ï#ÃÎDžâØmwp#ŸT-Œä{Mô§SqêßÑZ!¯È¥û;Åcï¤ág´SƒqÑq/V1aŶõrR€ñùòdfN51©é‹å=túúöp›˜Ùøfqû— áoœ
-#‘%‘Ï+0{—¹Vx³½û³IÏßç@ ›AÖå]d˜± ÜšfÓ 3.ˆ•Lçû^«ªwkFOpªÍm“é éâKL§.ã¬f0æµ2x‘$âGÈÛ~Í…†ÙgpèÙzœlŸTêŸß'Ah7‹#m¢(´â'Z %åÝa&˜P[&W)íýyÝaHÄrÇxg+Ešê»ÎÑû ^äŽ(úÖß `–ºr¶jºù7Yþsß›ûPDS"äÊ"pqšQ¦Mê´šsËÚ‰ÉöR'  )Ú0çöÌzlšºð•`^•¼ßÖ ——úq2‹ãqÙ•ÚüŒmÄàðr²ÉEh
-¤á¾}˜D'N+nš~¯Ðß0’ƒo™¬WOÜs:¡ðwaz;A³cJ©ÚäA çÖûÈ<’+UȯÉCvL¥ºøPô‚Û²sùô* ze-£Šü;2 «ù«#_š¤£s¾þ vêÄ‹úñe‡Î‡CØ“¨Ï>¼»,æñ’peàùhôm2’ÏݰMÍ[®¼¬Ý’‹÷ €"_o UÅôh£ ÖB57„ý^æÛT'kiWCEÏr§ó•
-©ØWÚ¿\N[Ž”ÀöŒÍ&nâáµ9vdµÍ¢–£¡!Šã5iAÅ@ñ/*w.¸Ã(:³›Åå×Î6îu1Ü3î᪾ûõW¤®48ð“ã‹KÓ^¥3Tòte:ëù`Ë"‰‹º‚p­,»iAX/†HÛ˜?äµÞ)RR«Y?êxjÒ/½)‚P8ñ“—»C>Är–BŒ!†¬gÝ@¯kîÚ“èNü½?DÆF¹U<þ5”I.:´s¾Ÿj-p“Ã䊰"ŸªcÂ#Œ:B +?/P— wég&åoï²û×!æ9œa pñ|Š®¥Þ²K5lïøŠÑ9„CF †ºž/õ¬;¿G@!íxc|ȹD¤.׎n^H$ßÄÛÂÓq]Èõ+É{¸i™’
-“*ÅûÖ€H-eëpg,eƒ|ÍaJtžŒ/dŒú*Λ¢ 6ºK2;”‹x'.QŸ[å ÌñÚ:ŸÄTß $$¯µ“Í¥¤·4UA
-~:Š0NÇŽŸÂy¨r“Ñ$85¿Aš«`!¨WÄF'*nNÁbt*Ú*¼ëëÂæ;ŠEôû”ÕaÇòõT~ÔÖ“S4Ÿò3<5ר\ÛJ´Æß&æ–“O=P©[¨P$“Óµãñ€ èiªš_`Ž.Šó{h/"•"v¥¯CŸ)-FßE¶ÛA<Ýï KF‡é9 ‚'ýøa¢4*$'=ÝèO áequGf0[éÒ´ò¢ïÑÞ7™Ë©4€ÐóØxâ%%Ì:¼ã/º.@ªã#)NˆÈÌaÀSt–k ’»´jˆ5b;¦¿J;÷Ò±C°7·ä°ƒÂKŒwA¹5S‚é%8.nN`ºê9_Žû¡ôÓ;Sæüê\g|¢Häae#§û×çÛu¦;¯ºÖÈÊXšŠäo+7×m4”°‹ª0Ýë#4åâ8hù‚˜RË9«»åì{°S©ã£›ªˆ¿z rª“ÊûýΜ•VØÖi!z_)õ¸¨VS[i²sõq£Ë%®µe?åw«ìbØ-…97Á |Êš aü’Þ[
-4%Å5k£½02ƒÁw¿b¶8y<•«ápÁÒ*Á–Èp«¯,”&«‚rÃæG€Tëƒç¦£¤å¿”X{Š”ùH;_ÕZ ¼ë/i)ï1Èû£.5n仯ðå9 =)ÂéÌW%^}@|Ѧ{P`Áíea°,pS L§Ü”üÚ®Û7CÖÄbÀtÝzÏ3$rX§5Ø¢Pü–„˜jW~\\{ 7NìySE¼9 ]ºž½"„i5¿ÓúÅXôxBää\„“y”\á¼¼!‡k(MÂÖL]*/öðéžä§FJ{Y<Á&eš¯lõ‰Ïƒï…Ì‚+üŽŠ<Ù@9vOŽ’¤ä[RY·ZßUMZûp4–DagPcZ‚%V_©Þ\;=MåWÛ¾ÖG
-›¶ƒ¯ñ¦¯<¢—h¸E“;Ukê ñ
-J±&éù雈‹˜9›âÆæZue)äG $ LË#[|íÕϬ4ÈÝÕbO
-€£AÚ¤x8mw›þÖµÔ„±ßxèÍ#ºaýªU!˜ù´TßN.ÓÙÇ-É™Q‚«iy@ŒWc²8qá/øç ‹ïåqYw'`:ÓN·ˆ=
-*¥6©!bÆ¥$ž)ÈFå¨3Çx=H3/xR ÎWGzÊt¡Dc€Ê'ÒHD´öXM-®ÁöpáØîÐÌ’!#ŠÅø*ÒÕ Íè/<Ô¢8>§Ð†ó÷‰rŠeÀìåtѦ’ ¾Lñp m… U?ˆ+
-½ŽîÏ>¿ÇrøKKíùƒrÍAfjxy‘ ^W_ª^ø‘UŠäNGReÈ\®v/ÖVö†¶Rú׌hÉýy3˜Œßc¼b'óÑl«ð‘Ä›k,¢°§ƒ.ˆkx„Kªý( 9×^ÅÈ
-…d«…œ#£}þÂÀÑÜÂG( ÑhQ/Um+‹|“·^±OI$ѸÙ0ãÆVèþ )ÆJ3ÍLJ_ñ·ÿÑLÖ÷¥Ÿn­Þo”vÒJáØêqmìíçâ%Á­Ãcœ~ªzVÈ‘søqÕ g%ŽQÌ4³æ`£E–/T““?§púyÂå[uïлJ÷ödhºHÐÈÜlM
-Å s?Òr&Fd¿Ä6ë&>N´.Š ¦¾1:¹rP1ûØ——k¡f)ØdQmŸèÄI BÐä5Mþ¦1T¿`m[;­z!î_µ±=ñp)ä5^Išõ@ÑðÈ š¢žAò'tG<ÞÊÁæa¯šm-mn(Ø
-‰|¿"]ˆnŸ†GhS”C£ãžä.%^=‰Â žš| È%ÿÅ%Ÿ/†5¥ntnt I-¿ÊÍÈ.-ÚŠ
-˜4ƒ¿à†tæ-ws(›¢ü À.}!Ë•™ª^‘ 805D|~ØfÌWŸ½æ°›ã‰Å9ãqÀy[eN ù~TÒ€J…gD›¼à%HõŽN´W¤Vê Ü©&QXS²;^Æ#~o ÄSÙÄòQ¯¹Omº¿kÊ–»{.
-àé%.@”ØÀÄZPÑ}ú¥ÄÝØÇ<†,2xˆá+„P À:І¢€XH‚9É2¯!I‰¥“–mõ놀)ÓLvÒÀªÊŠ‘¤®­‰ŠI¾ž´ÀJ€-um~5SµÏ?¼‘ÞËxXkDZÎS§ꊿʥ'ÿâA“EÈz©Ltª=ø½¿ˆÀ¯’ëÊ›2{@?ï5ºûšõ¨N …&øºòȨŽ3HKãGš‹6hXle¡ïÿ–kMžÍMxßqhìàV…Ú¤ki1IƒË‹ë°ª¶ƒÊ9UFmwY¥YññW>èYM Ð7u
-Ç:êhפ­ߛ֙C9߇¬o“‚/¶z>‡”8Õ"¬pÔ"8f@xk©óí…f¸®söšË‚ý(†'ï »Úƒ½pLjt:1[ɘú‚ËHâûŠK¥Q¹ÞAH)†3W.‡å¬ÉüÖÀU7¹þ"ݨ²_mz$(®$åÔ^ÕìÊÆŸ‡EÄÆvPºÄ¤7/' ìl\du#vتç¾½ììÄ“QP‹qH{Ä$5ƒlíÛóyïd? 2$yá9MLºG%[!/J™Í2an¶ÁœÞOz~ØŠ9@5ꎥ;V7ÎF FsÕàd—ûãת?siÜ5$$éD_j(¯Ü‡ËOÒðBO¿šq€îôN»#.Æ/8ZëùkVŒè‚¹ép›ÆjÕGpéÎØzÇöÛI9´HÓ®"!ÕJˆá«OY¢Úîµ5¤=.J×ø2yØPK0úÍÙÃPI¼ ÌIñ$GÈ^˜ÆºÌ‚cý%úE˜òï„cijñ¼•9‹ž9Ñ’l{ˆ‰$ 0¢w¯¡&jjia>’4\¸ KDÃ{pÊŒ#?ÓA þ0›9 °ñ-D>"ª:c?ܺÚ~†‡^e55¸l
-:kb¾ÉLQÒcèâåSŠÛ€ …l±Ã{Y14¯ŸË#Y‘·IUHš6‰·'&:,q[ÞÀÑçºËÔg+ñA¼dÖ/LŒn”•ÿRÔ
-ˇ—ÕøêMCEýŒw·òÞPðÃ]ï-¼5L-§Ô²%\ðd*]®K¬qtmpMó¹{Â6Dm1Ð[2m¢ºûw*QÝd‹Q“÷\ÒBq¶˜™2<ôÜå `ve¹¿*9GiÐÍ
- .ÓÐ']ÒÀ^Od°â®D—üå„,?#ÞWÖ³bRªv×èSž¼˜Î§ÁØ$ôÊ`mñ 2D=ón“þ´ÁžD㔹=õk½IPïÅvƒJ<¨±ÏÞtݘÍZ´G U^W0äõ¬’”¤¡ÌšÙ=JéSQŠT#’åOµŸ>]žAß÷åʇȆ³Z!“Œ®Íïå>÷Ô‹fÜ.å¾Ó;ö§h gXUãÿ‚yXÛ%…6,˜Ä™T¸«úÊ*1²ö°Ò”"‚ï3Y¶m"ˆ†s¸µÌ· Rþ;ÕõµU§é±8fŠ•ì0A¾Ç¤‘oxZ¼ÒÀá¸+ÊNVkú÷#$ Ë£6\4Štó V·‘D^2'lRw‚ fÈ2Ñ[£Øß‡`Ÿk5Ñs kÜË·g¤Ãs© ÛÂÍÝÍŸ¬B?1 |k6*yf¡3ñÚP‘|Büu+ÁËNõ8XÄôÈä‘¡ù EUQÊFÿµð¥¸ËôiÔ2¼ð`Næ}ïT´?AËÒiÎâ ú[¼5¿«-ŠCLÓÇUY$ÐÀéëh¤®WNÉJB-þ¾ÜaìÚvvÚT¤‡dŽò[µ>Æ–ø|sÔrèCd `¦Ÿü^†ÕÁÊãDÃ*ã%­ã»òýÏŸ‚«ˆ›óñÚ àfX¡6øvçŽÒ]©Â—ñV¤M"BÝèù£=&w>8Kºä*¯+– ¡ oèKᣵ4æx( =¾$h%H
-£VâRÑ
-ï82Ö&)°"¶E;Ü´”ŤUYvƒÜìVZ9M*­µjQSJ­)‡Ÿï@LH§Ò5Èþ¥
-½~ÒoÍdW)(Ö€çÜÀæP»€Zø¦ÂP³¢½OU®æ’mèß´¨§raäÓw@„&7ìVÛÌyå\çøiÃH47+ù׉L
-µQu-W€»×4~Q.£ÎÐ)ÅÈLHQ-Û(èÖü¥> ø|kúÜ„X`Ž×¾®º] #.ëwx+«;.ñml3ÁѪ۰çµs
-:Ê(׸B®Ó'=êû’ýeÅ9,†`óÙ‡{ß%€ª ¢0<ý}õ¬YâÁ}‹
-ˆ¬BÙp:©Ñx”Mî§?ó}¢Ø×4¹„“ùïüGßßaWGÄð«à
-«1,u6AS£áx\|czíR¢€oÀbÐ.P³¦‹Ý=Öö+<µU ZäÍ&zÐÑÅReu–
-[5ÖðÆê_ka‘¢Þ÷£ø‘*q¥=¡R4Ð/@™jÂHµ0M’$Ùþz„
-˜É¦p8çˆC¡·š•òÏq0ÞSGD¼ÆSâT2J¹Ôi­¸É½°½äA iÎáDµ9)î“>oâÚàЂ,®DOͺ؀¢À¨&¯¬±ßŸ“ãùí„í½O Ä[¢:&ßQC—Ýåy˜1ŸÜ¨^Nò`ϯȌ)†¬!îÍÓ¤~»,˜7Õ$á/°Ûº¤zé5"™4¾bø–ˆÛM]üè»o~E®5p‰ñðJÌs¨{•moœäÜ%Ö¡A;›<Ñíô¦óñÜý¦¦@=®Ð@ZR¸ôGv Ö}¬ÇàƒO³þ›§—ÙA´|:÷©‡ž™Ï @pmðïÑçñ€R Àw<—a°Ý½7#øSBG8-(v> Û žq<]ùÞÚÖÁPdöÙò @JÞâõ•WÑ2|¥ —Ê„s’¨Ê‘i% Ìî3² °6“NP&0ž>>ÀI2åOø®¾Ój¬ŠÛ¯)ÒÀŠÜÚJ8¯Öß*fzU;.ÏZÜ$Úùd
-×D½í¤»a £ªâ*¶‰ÂÀÜÙš*û(Œõ¤qÁÃåä̰[¨.xÔŒHhý {§ú·–æýy澡:ÔuÓçg¦¨÷œ4k ÜÀ=ñïElD+Ž9Ó{û¤Î=£n„ÉÐE:xª»n½†í·ô
-é4NÈŠóv É.Õƒ_Þn$`¬ÓÖ)<ËEŠþê°õç@‘q6I„òÝäŽO¦ù¬R²Ôg-£d–‚îAúô>l¿ 3)VÐñ,ÿ²8Änd2€ø»Ì@צÍ*€]ÉãhsÀž”nä¦(ºÎõ§ÕŸW‘ÉÒî#ÐósD–&ôؤžm<[ã Xp.7ôâ(5%ö‘ì>B8‘'ÇÏÉÄ-ŽM%f+ùo0à8}¤{+Ãþ/®ò ¡‹pp… ‚óìô½ÙW¬ÒCF8fÎÞßòä6ŽÓ‘æBVÎÒP,-{DÞBЪðß“úé,¢îN`:¹ ¾ÔŒ/™t>¯‘¾ÀýÝ«9Ñ>á…‡]`5TæÑ’zûvyWX2FüºþbfO–f§>}al÷¨\ÔMê—´ìù¥ìâVPÇsp¥²oøâÇШ›x¨³N O_Ž»N=𣳧ND˜ÿ«ýzZ¯@(5Ic{Çv³cÛ¶mÛ¶m۶ƶm»Ñ™w8wóÍz€ÿ~eŸYçÞ*D+_—‚#ioÛçT¢{?Ø Ï|Xž!ÃS)Ëb×ß[ñ_ˆ
-ï%,3”1•äœJñÙwG¯üûñšøoeüªyDhéNÁÁϹݎÓRþ ~¯›GßB‚\ÌŽ™;؆r•R-ŸEGT±ùø°ãѶ÷Žz ‡¤/z”Þ‰…3 ¿µf!KÜt[¢áqQ‰(¤Õþˆg§þ¬EÒudV;~_€dr‡çI;17 a £ƒžq”„)b±¿²‡s(…0
-IfLt´&
-¸Õ‰]ª¼ÖÀ·ü´¨ˆúWÓž•N€ÓáÚ îËè ¥·I­Ñ—Øü:k b-F”ÛÈØyŒÔLúcÙY># S·ÿý¢žæãþx5
-ŽsU ? ë{x[òq=4£øŠÉTññbEK'òmç±v§9ˆçì‘È$“CXcþ©\“±>ÊG˜m@>¥¼lX1 ©ô¸dwO AþŠEÒÖ’±Sc¸I/cK+–5>¶V‘+"zg
-*»åMì•¡p_ÐV—+}¤ªÞTžY!æÄ¹(K§i"üÇ(*wOzŒF®¯’«X`Ž¡ÿ­Š¢É
-™*r[¶Â—n³î+ˆm•€Î êËÜun2qÄi"P6h£.ü·T”•OdÉ_ùüånµ~ ‡q#$i5’2ÍçšuÛOÖL[˱ÙE¶IkQñßå:¢_é²w«®º!É·Õ7ˬÞýóÌlÒλª> ^ØH•€ þfuĶgŽÍÆm4N}Ò
-žº²Üà9UwgÒBkÙãƒËÚž½Gr˜u)Ôë
-èòÔAé›ðöÖ_ß5Xuïwo%~’KG`4÷B9MXÄ—›Ý*¬â=cÉwú¦¶­r±¼§˜½ïÙ ÌèÀXmgsÌ{ná>³.ëÀS±¾ü¾ºÈÙ”¦ŠQ®Ÿ6È4ȤÍzÚ9Ú—¦Å÷K\ ìkCì«›!ê;àú¸èy¢Å
-
-"¿‘©ÜŒ˜%(–PL•„àà}çô—ìd¸A4HVs_™c‚Ò„µÜÅ‘nÜŠ¡Vz*-‰To­”â 7*úï #{y‚íl¤â:n\Æ>‡áos.ø¨ŠsýE×õ©É¡Ã<äm¶ E±¸@ˆx²îkrŸËÁ}G=1ôƒNl.&·´Mf‰2À4îۯ0ö€6Ñð G¥í¤B§R“Bt•¯º%õĪÜ~ç$`XÞ(ÿ¶ˆphíÒ[, ²·wÄ.„ˆØeæÒ$HÃù”±åá<€;]vÛàr Öù›–ÞpuU“J¯ÐœA£½<ÚÓ¤ïõV1r¿Â¥“e8Õè7Þ)h(²¼Eð¥GðЖ„ñ˜WÒMæ _Y£õ‡æÒËfcØŠ¡ÌõCÒ0—£Û²u—§§äùp3¦~ùÌ[yÔ5!Áy˜Ý Ð-¹9¨ÉŠ%Q-} /DšC¦—jn¦%>HLgùh:âî…¶Bldš½üuô݈°½‹IÖ#o½¿ùði9žìtå‰ò2Â¯Ì‰ê³æÖ®Ê2VÂ^­.îÔ
-ëÿ8±²
-òo·Ä‰è8²{ãqÍED§G×æë±ÆöåÜbùÜß°”\&Ü‘ù­òÏ2qsÈÆ°Ûy¾>bò´ÌOX(oÁYÓ‹Þ"4Ù†w7 «~Lé'ƒ]‰v }Oä8ÝMª)Ž–X’EÀ,3bQ*ÞWAš 0 N5<_8%)FľJVßr”[‰=Wÿ:¯&,o/ÑQƒ+"%N†êémü‡*VtŸ_-’Ȱ”´sPàkX‹'ÙÊ‘FâbMüzyixûŸGG1SÝ(&¦F›Å8'Ç
-mÁR!/¤ïmYz'Úò”¦ÀÀh'¨1I ÌѨõéI¹;b ’@\Öq×Ü[¤µ*ýôF£½™ÃØ»ÚRqõ¶›0ý×nD%ŒãßÉ€¦ ]:bĨvÿŽ“U®ïqî{Ĥ
-Èù#†ð÷†(£ÃÐw¾áR¼­ñ¿ø; h@À‘Ä8~©Lp©™¦¿RÒtª3ª5/0Ò¡S0±nÍ&9=Ó ÷-Áz;¢IrH©3©Òpdl²l[‹}B¿p“šÌN2ùòw Д˜…¥UhpO· 
-FÖ—bowÖç'<{†Ëe/>w¤ìºO Óyf4,%[n‹¦ó<ÑȲ’Dø¯7XQ`õì¹;ðkgýÑt{D¯VC|n$è_
-5±)Ä;À†íkPAs~6wD¦l¹Y²˜'À&>)Ž:•„ΊÙtAʘxñI…ũђ"Vï·´—Á}“Ôl—Üœ2Ê?«RÙª¦» Ñ2ø¡†LжÐ*¥ÕùÏ•Õz¢W¯íPO!Zñšâ:¡••3ìv{´3:9¨;8 ~†»Gcã–XÇ*ؾƔrõFÉ×<ͤŸ”WSs¤ù€ûñúóRXÙlN|PLò4ŠÒñ£l8¯´Àøî[ë†4 Àñɽ.zšcF­{ý†ÄT¢¸ˆŽ¾‘Ð[™()ä ‡¦f¾ÆF£ðÝ´Z"gº…´>Ôæ5âµlÏâ,¥÷y”¦Ä“1Êe]#¾{Gš!ÓK±¾„OÍ÷¢ü¤ïï!Œ^{ßðÉ‘F'U0BBo÷LÉ7„ob¨AÏqØ5ƒ£&ÜçîYd5K­ÜeíO%:Ó 6™zD-߹̫\šM0
-¯'l­Õ_‡2›.vèKâÔ€fïø¯âˆÚ\ŸÙÊ¡òËà.¶¸iAìU„‹Åss*’ñªÛ
-ó Ë.ºÞJy'k<¬¾T¨u®rï p¦±2Äéyš˜¾Á0^øÓí ›H v,¥wó!éùž1ÄVûr#Âp_JI´¿4ŽÎ¸6ú˘ì{2{ã• <[—)¾Íj°xÔo~y‘S¿mäó¼—¯ùh§NWp¡Q2¬ð‚‰>÷ËgCX ÀõVUé³½æ·ÝbM†Ðñù6 kh*†4¬† ·ÚTã’#­Ò<÷òwHÜ2ÈAœS¼WR¬v"«¡™Ô1í2•¢¨¡;ŽÞuE@L ±Âà‘Œ”ª^4þÕŒl«áÇü̺-€¾¨“\Z™Òçtä %p´§”î–©ÚËjKûr¦ä¦¥Æ¢[~ÕÇÆ
-eÁ½õiÐGÓ8¿ÙñCÊI´‚¥º]u¯˜Ôjù -JtáBÊk(WI)Í’ˆÇ ¨kFîÈJi…Õ FS„Éãâ…—¹l;£—¬(¯cgHÖ5§ýUj®¦›¤ÞNX*1a"˜…J[å?x¯5Mï@ 7‰íɳ't"Mrmc §Õnœ€rÍÖÔ<.ïo°öÝヲk¶åÎM¾×ÅŸ“p40¶Y¤ÉçŠÀ^s ëµ¬d>Rõ~YîZ_Ä둹v0§Gm‡‡N®3çï7G$*›½th•ëùý¹¡Òg)ˆ, &ƒM€¶ïÎ3«yÔ&o¹Ù›ïu–ž4«ô,öZÎOkÜ÷ªÔD%«†Déz¡v?ò‡/óÀ; Š'?§îºËcšý‹Üè
-µ(à\èaª
-E‰7jŨi¥oòƒŒ:½úþ·cêSJo*>»u+Æ#@Ä«áb\[k!s&D “‹Ãd`È<HØò†T¦EÚdò:±CíkE
-j!H·îà3ÁE.
- ø!{mž/ƒòZú+p%Œ«u–}Fcí¿ èýˆ/ì…Æµ1>§ÌM)ÔÐ O%Sýù8½î×Ç
-dˆür4îŠ$#œ™/à·Ñw $–+3¸]Ì„5¼T87Å]ý—‰Ø¥–…ZPŽü¢ X¥Ì[šÿ8™XpÉþCi€ó`KpmMƒ*­y¨À&ÕÇ*é\—l¹ïˆü° xr#L?)¨ù¹kvü¯â|V{þ–aÀB$ÇÉÎàj`ñh›Îëæîõ­QUdj5Ë$k>7¦|©™¬âÃöõÚ¾¤,ˆÇSÎbÎ=¯ 6¢ŽIÛž‚2üúð?÷ò)CÎ|æ¡î0)ukt ùþîo#‘Æ$÷s‡³Wgª~„ŸÙñôÀԥ;ºaâlèQÌãæƒhË›ƒÌð`
-Z®§Ñœ8Îeä¾ÏFþ±Ã,ô\5ˆI.èÑaM 4Ž´mÇÕ‹èqWM‘±•î·egcØøí «\[þT
-¿Á…æËU¨—xÙLDÞsäÓš
-Iö×~pºóE¦f}^!˜tQ°Ù’‹ƒEäì>‰ n|'ÆV²5D9_äå‹7â̬FJvõ˜2È­ÛŒ’ý;Û£K¿>Z&ú‰Àš¤þØÉ‰,-¯,Yت–=–ÏÞáÆX8?¸#…m èÓð¥žçßèðž–u¤<5åÑwÒ6¨´ÍÔ™­×#0±q“²Qý‰±ÀåÙëã=¥—;1Â&<
-| f Ég¬,=‘¥vp‘·xMŒé‰_b¬5
-µœóû¿ µ§öÈ4¿À#è¸?§ß7LíXʳŒ”ñkÌ€Zî»vSLR‡û 4 ƒ?&4 =cwÓ™7mÿ­8 ‡L¡ž~šËmé0Rƒù]N9ÄO:;e0vÈ(©6‘÷ôŒ÷ÃæÓ=ÔèÖ‡7œŠ?­)Í'á ž àÇ38ƬpYBà³Â|ƾC¬D?ÖD‡§-QÊ(6ò˜¤>Œö)€*#£˜òDUdùªé³ÓvU
-[`÷QìÿY¨OÖØJæÒ2‹„a¤.‡yMÙB.½T›.¡
-¥í’bWWž^¿§M?¼ªßªéë;ëš<™áh ±Kñŵž¢¨ÚÆóV1îcÖOÏ "ž³x4tÅ:l¼t@i×uÅ«»‡‹Á0“öë]RϺM'Ü>Á™?#ÉABlž=fÌì…ïé ÚiózõÔ¨¿!…+°2Ô’Ýzôµ¥Îb—B
-y‘üP'càÜ^M#R°·ñÃ4 {LJ B«œ»×ën¾HïŸMc–9|þ*S5ïV®ñKãÁ“üvÚJ¦‰‡’à°áR‹ÁPKw©ä;ÉͳðåH-ºOÖ²ÉâØÉ*Wü—¼éýšö•p…+èó®a7AÔºº;˜âR·~4ÿÕ|S®‘mƒ®W•~ ©Ãâ‡}DL×WF5J‰åéØ|¨i÷>#\2®˜
-šÒ30D”€`Ÿ†§¾ç4}&1xÒ¤Ö¥ ÎdP•Ý‹$ȾCO‡Ù’jÛvëö?`C&W'aÔCJ•I'sŠFðìM˼k©¡¨»°+X ŠcAÐÀ«á¥£ùr!<s%!ÈbˆÀNÑ* d3³Ê6†Ø0´+3ïÍNYÀ8îj•ÛP³7Þ¨VäÎc=$0€Ž9€òõ «£…WCÒ¸1å Ô²9L±ž±~óŸ –äWÚyüInÐäöÀ'¼I3 ú]`+ò7vÃÝ!’ÔËö—k«Zœ–(&4¨j„¸`é+àpôxÿÅë«SüWâ$åM7ƒ[IZÒýš®ê~‚VƒÍ:Ø\é«…Œ€Øy_à£öý
-.ÈëÃ6‹û¯™ÅSßc޾Q&É5 fd
-ön’“,6"”@K;\ÿŸÁüø¯
-endobj
-690 0 obj <<
-/Type /Font
-/Subtype /Type1
-/Encoding 2008 0 R
-/FirstChar 2
-/LastChar 151
-/Widths 2024 0 R
-/BaseFont /OKZXYJ+URWPalladioL-Bold
-/FontDescriptor 688 0 R
->> endobj
-688 0 obj <<
-/Ascent 708
-/CapHeight 672
-/Descent -266
-/FontName /OKZXYJ+URWPalladioL-Bold
-/ItalicAngle 0
-/StemV 123
-/XHeight 471
-/FontBBox [-152 -301 1000 935]
-/Flags 4
-/CharSet (/fi/fl/exclam/dollar/percent/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/question/at/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblright/emdash)
-/FontFile 689 0 R
->> endobj
-2024 0 obj
-[611 611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 0 500 889 0 278 333 333 444 606 250 333 250 296 500 500 500 500 500 500 500 500 500 500 250 250 0 0 0 444 747 778 667 722 833 611 556 833 833 389 0 778 611 1000 833 833 611 833 722 611 667 778 778 1000 667 667 667 333 0 333 0 0 0 500 611 444 611 500 389 556 611 333 333 611 333 889 611 556 611 611 389 444 333 611 556 833 500 556 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 1000 ]
-endobj
-691 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2025 0 R
-/Kids [682 0 R 709 0 R 719 0 R 774 0 R 838 0 R 900 0 R]
->> endobj
-926 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2025 0 R
-/Kids [914 0 R 928 0 R 942 0 R 953 0 R 960 0 R 972 0 R]
->> endobj
-984 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2025 0 R
-/Kids [977 0 R 986 0 R 997 0 R 1005 0 R 1012 0 R 1018 0 R]
->> endobj
-1041 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2025 0 R
-/Kids [1026 0 R 1048 0 R 1058 0 R 1063 0 R 1067 0 R 1074 0 R]
->> endobj
-1090 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2025 0 R
-/Kids [1082 0 R 1093 0 R 1100 0 R 1105 0 R 1114 0 R 1121 0 R]
->> endobj
-1133 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2025 0 R
-/Kids [1125 0 R 1136 0 R 1141 0 R 1149 0 R 1157 0 R 1166 0 R]
->> endobj
-1184 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2026 0 R
-/Kids [1174 0 R 1186 0 R 1192 0 R 1198 0 R 1204 0 R 1208 0 R]
->> endobj
-1222 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2026 0 R
-/Kids [1219 0 R 1224 0 R 1228 0 R 1233 0 R 1239 0 R 1243 0 R]
->> endobj
-1258 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2026 0 R
-/Kids [1250 0 R 1261 0 R 1265 0 R 1269 0 R 1279 0 R 1286 0 R]
->> endobj
-1295 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2026 0 R
-/Kids [1292 0 R 1297 0 R 1301 0 R 1305 0 R 1313 0 R 1320 0 R]
->> endobj
-1332 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2026 0 R
-/Kids [1328 0 R 1334 0 R 1341 0 R 1351 0 R 1359 0 R 1363 0 R]
->> endobj
-1373 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2026 0 R
-/Kids [1369 0 R 1375 0 R 1382 0 R 1389 0 R 1393 0 R 1397 0 R]
->> endobj
-1408 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2027 0 R
-/Kids [1405 0 R 1410 0 R 1423 0 R 1437 0 R 1459 0 R 1465 0 R]
->> endobj
-1480 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2027 0 R
-/Kids [1477 0 R 1482 0 R 1491 0 R 1503 0 R 1513 0 R 1521 0 R]
->> endobj
-1533 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2027 0 R
-/Kids [1528 0 R 1535 0 R 1542 0 R 1552 0 R 1560 0 R 1566 0 R]
->> endobj
-1580 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2027 0 R
-/Kids [1577 0 R 1582 0 R 1586 0 R 1597 0 R 1601 0 R 1608 0 R]
->> endobj
-1676 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2027 0 R
-/Kids [1618 0 R 1678 0 R 1734 0 R 1788 0 R 1822 0 R 1831 0 R]
->> endobj
-1841 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2027 0 R
-/Kids [1837 0 R 1843 0 R 1847 0 R 1852 0 R 1863 0 R 1868 0 R]
->> endobj
-1884 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2028 0 R
-/Kids [1880 0 R 1886 0 R 1897 0 R 1902 0 R 1907 0 R 1918 0 R]
->> endobj
-1933 0 obj <<
-/Type /Pages
-/Count 6
-/Parent 2028 0 R
-/Kids [1929 0 R 1935 0 R 1945 0 R 1951 0 R 1958 0 R 1969 0 R]
->> endobj
-1984 0 obj <<
-/Type /Pages
-/Count 4
-/Parent 2028 0 R
-/Kids [1979 0 R 1986 0 R 1995 0 R 2002 0 R]
->> endobj
-2025 0 obj <<
-/Type /Pages
-/Count 36
-/Parent 2029 0 R
-/Kids [691 0 R 926 0 R 984 0 R 1041 0 R 1090 0 R 1133 0 R]
->> endobj
-2026 0 obj <<
-/Type /Pages
-/Count 36
-/Parent 2029 0 R
-/Kids [1184 0 R 1222 0 R 1258 0 R 1295 0 R 1332 0 R 1373 0 R]
->> endobj
-2027 0 obj <<
-/Type /Pages
-/Count 36
-/Parent 2029 0 R
-/Kids [1408 0 R 1480 0 R 1533 0 R 1580 0 R 1676 0 R 1841 0 R]
->> endobj
-2028 0 obj <<
-/Type /Pages
-/Count 16
-/Parent 2029 0 R
-/Kids [1884 0 R 1933 0 R 1984 0 R]
->> endobj
-2029 0 obj <<
-/Type /Pages
-/Count 124
-/Kids [2025 0 R 2026 0 R 2027 0 R 2028 0 R]
->> endobj
-2030 0 obj <<
-/Type /Outlines
-/First 7 0 R
-/Last 639 0 R
-/Count 10
->> endobj
-679 0 obj <<
-/Title 680 0 R
-/A 677 0 R
-/Parent 639 0 R
-/Prev 675 0 R
->> endobj
-675 0 obj <<
-/Title 676 0 R
-/A 673 0 R
-/Parent 639 0 R
-/Prev 671 0 R
-/Next 679 0 R
->> endobj
-671 0 obj <<
-/Title 672 0 R
-/A 669 0 R
-/Parent 639 0 R
-/Prev 667 0 R
-/Next 675 0 R
->> endobj
-667 0 obj <<
-/Title 668 0 R
-/A 665 0 R
-/Parent 639 0 R
-/Prev 663 0 R
-/Next 671 0 R
->> endobj
-663 0 obj <<
-/Title 664 0 R
-/A 661 0 R
-/Parent 639 0 R
-/Prev 659 0 R
-/Next 667 0 R
->> endobj
-659 0 obj <<
-/Title 660 0 R
-/A 657 0 R
-/Parent 639 0 R
-/Prev 655 0 R
-/Next 663 0 R
->> endobj
-655 0 obj <<
-/Title 656 0 R
-/A 653 0 R
-/Parent 639 0 R
-/Prev 651 0 R
-/Next 659 0 R
->> endobj
-651 0 obj <<
-/Title 652 0 R
-/A 649 0 R
-/Parent 639 0 R
-/Prev 647 0 R
-/Next 655 0 R
->> endobj
-647 0 obj <<
-/Title 648 0 R
-/A 645 0 R
-/Parent 639 0 R
-/Prev 643 0 R
-/Next 651 0 R
->> endobj
-643 0 obj <<
-/Title 644 0 R
-/A 641 0 R
-/Parent 639 0 R
-/Next 647 0 R
->> endobj
-639 0 obj <<
-/Title 640 0 R
-/A 637 0 R
-/Parent 2030 0 R
-/Prev 603 0 R
-/First 643 0 R
-/Last 679 0 R
-/Count -10
->> endobj
-635 0 obj <<
-/Title 636 0 R
-/A 633 0 R
-/Parent 623 0 R
-/Prev 631 0 R
->> endobj
-631 0 obj <<
-/Title 632 0 R
-/A 629 0 R
-/Parent 623 0 R
-/Prev 627 0 R
-/Next 635 0 R
->> endobj
-627 0 obj <<
-/Title 628 0 R
-/A 625 0 R
-/Parent 623 0 R
-/Next 631 0 R
->> endobj
-623 0 obj <<
-/Title 624 0 R
-/A 621 0 R
-/Parent 603 0 R
-/Prev 615 0 R
-/First 627 0 R
-/Last 635 0 R
-/Count -3
->> endobj
-619 0 obj <<
-/Title 620 0 R
-/A 617 0 R
-/Parent 615 0 R
->> endobj
-615 0 obj <<
-/Title 616 0 R
-/A 613 0 R
-/Parent 603 0 R
-/Prev 607 0 R
-/Next 623 0 R
-/First 619 0 R
-/Last 619 0 R
-/Count -1
->> endobj
-611 0 obj <<
-/Title 612 0 R
-/A 609 0 R
-/Parent 607 0 R
->> endobj
-607 0 obj <<
-/Title 608 0 R
-/A 605 0 R
-/Parent 603 0 R
-/Next 615 0 R
-/First 611 0 R
-/Last 611 0 R
-/Count -1
->> endobj
-603 0 obj <<
-/Title 604 0 R
-/A 601 0 R
-/Parent 2030 0 R
-/Prev 583 0 R
-/Next 639 0 R
-/First 607 0 R
-/Last 623 0 R
-/Count -3
->> endobj
-599 0 obj <<
-/Title 600 0 R
-/A 597 0 R
-/Parent 583 0 R
-/Prev 595 0 R
->> endobj
-595 0 obj <<
-/Title 596 0 R
-/A 593 0 R
-/Parent 583 0 R
-/Prev 587 0 R
-/Next 599 0 R
->> endobj
-591 0 obj <<
-/Title 592 0 R
-/A 589 0 R
-/Parent 587 0 R
->> endobj
-587 0 obj <<
-/Title 588 0 R
-/A 585 0 R
-/Parent 583 0 R
-/Next 595 0 R
-/First 591 0 R
-/Last 591 0 R
-/Count -1
->> endobj
-583 0 obj <<
-/Title 584 0 R
-/A 581 0 R
-/Parent 2030 0 R
-/Prev 559 0 R
-/Next 603 0 R
-/First 587 0 R
-/Last 599 0 R
-/Count -3
->> endobj
-579 0 obj <<
-/Title 580 0 R
-/A 577 0 R
-/Parent 559 0 R
-/Prev 567 0 R
->> endobj
-575 0 obj <<
-/Title 576 0 R
-/A 573 0 R
-/Parent 567 0 R
-/Prev 571 0 R
->> endobj
-571 0 obj <<
-/Title 572 0 R
-/A 569 0 R
-/Parent 567 0 R
-/Next 575 0 R
->> endobj
-567 0 obj <<
-/Title 568 0 R
-/A 565 0 R
-/Parent 559 0 R
-/Prev 563 0 R
-/Next 579 0 R
-/First 571 0 R
-/Last 575 0 R
-/Count -2
->> endobj
-563 0 obj <<
-/Title 564 0 R
-/A 561 0 R
-/Parent 559 0 R
-/Next 567 0 R
->> endobj
-559 0 obj <<
-/Title 560 0 R
-/A 557 0 R
-/Parent 2030 0 R
-/Prev 243 0 R
-/Next 583 0 R
-/First 563 0 R
-/Last 579 0 R
-/Count -3
->> endobj
-555 0 obj <<
-/Title 556 0 R
-/A 553 0 R
-/Parent 539 0 R
-/Prev 551 0 R
->> endobj
-551 0 obj <<
-/Title 552 0 R
-/A 549 0 R
-/Parent 539 0 R
-/Prev 547 0 R
-/Next 555 0 R
->> endobj
-547 0 obj <<
-/Title 548 0 R
-/A 545 0 R
-/Parent 539 0 R
-/Prev 543 0 R
-/Next 551 0 R
->> endobj
-543 0 obj <<
-/Title 544 0 R
-/A 541 0 R
-/Parent 539 0 R
-/Next 547 0 R
->> endobj
-539 0 obj <<
-/Title 540 0 R
-/A 537 0 R
-/Parent 531 0 R
-/Prev 535 0 R
-/First 543 0 R
-/Last 555 0 R
-/Count -4
->> endobj
-535 0 obj <<
-/Title 536 0 R
-/A 533 0 R
-/Parent 531 0 R
-/Next 539 0 R
->> endobj
-531 0 obj <<
-/Title 532 0 R
-/A 529 0 R
-/Parent 243 0 R
-/Prev 479 0 R
-/First 535 0 R
-/Last 539 0 R
-/Count -2
->> endobj
-527 0 obj <<
-/Title 528 0 R
-/A 525 0 R
-/Parent 479 0 R
-/Prev 523 0 R
->> endobj
-523 0 obj <<
-/Title 524 0 R
-/A 521 0 R
-/Parent 479 0 R
-/Prev 507 0 R
-/Next 527 0 R
->> endobj
-519 0 obj <<
-/Title 520 0 R
-/A 517 0 R
-/Parent 507 0 R
-/Prev 515 0 R
->> endobj
-515 0 obj <<
-/Title 516 0 R
-/A 513 0 R
-/Parent 507 0 R
-/Prev 511 0 R
-/Next 519 0 R
->> endobj
-511 0 obj <<
-/Title 512 0 R
-/A 509 0 R
-/Parent 507 0 R
-/Next 515 0 R
->> endobj
-507 0 obj <<
-/Title 508 0 R
-/A 505 0 R
-/Parent 479 0 R
-/Prev 503 0 R
-/Next 523 0 R
-/First 511 0 R
-/Last 519 0 R
-/Count -3
->> endobj
-503 0 obj <<
-/Title 504 0 R
-/A 501 0 R
-/Parent 479 0 R
-/Prev 499 0 R
-/Next 507 0 R
->> endobj
-499 0 obj <<
-/Title 500 0 R
-/A 497 0 R
-/Parent 479 0 R
-/Prev 495 0 R
-/Next 503 0 R
->> endobj
-495 0 obj <<
-/Title 496 0 R
-/A 493 0 R
-/Parent 479 0 R
-/Prev 483 0 R
-/Next 499 0 R
->> endobj
-491 0 obj <<
-/Title 492 0 R
-/A 489 0 R
-/Parent 483 0 R
-/Prev 487 0 R
->> endobj
-487 0 obj <<
-/Title 488 0 R
-/A 485 0 R
-/Parent 483 0 R
-/Next 491 0 R
->> endobj
-483 0 obj <<
-/Title 484 0 R
-/A 481 0 R
-/Parent 479 0 R
-/Next 495 0 R
-/First 487 0 R
-/Last 491 0 R
-/Count -2
->> endobj
-479 0 obj <<
-/Title 480 0 R
-/A 477 0 R
-/Parent 243 0 R
-/Prev 275 0 R
-/Next 531 0 R
-/First 483 0 R
-/Last 527 0 R
-/Count -7
->> endobj
-475 0 obj <<
-/Title 476 0 R
-/A 473 0 R
-/Parent 459 0 R
-/Prev 471 0 R
->> endobj
-471 0 obj <<
-/Title 472 0 R
-/A 469 0 R
-/Parent 459 0 R
-/Prev 467 0 R
-/Next 475 0 R
->> endobj
-467 0 obj <<
-/Title 468 0 R
-/A 465 0 R
-/Parent 459 0 R
-/Prev 463 0 R
-/Next 471 0 R
->> endobj
-463 0 obj <<
-/Title 464 0 R
-/A 461 0 R
-/Parent 459 0 R
-/Next 467 0 R
->> endobj
-459 0 obj <<
-/Title 460 0 R
-/A 457 0 R
-/Parent 275 0 R
-/Prev 455 0 R
-/First 463 0 R
-/Last 475 0 R
-/Count -4
->> endobj
-455 0 obj <<
-/Title 456 0 R
-/A 453 0 R
-/Parent 275 0 R
-/Prev 451 0 R
-/Next 459 0 R
->> endobj
-451 0 obj <<
-/Title 452 0 R
-/A 449 0 R
-/Parent 275 0 R
-/Prev 447 0 R
-/Next 455 0 R
->> endobj
-447 0 obj <<
-/Title 448 0 R
-/A 445 0 R
-/Parent 275 0 R
-/Prev 443 0 R
-/Next 451 0 R
->> endobj
-443 0 obj <<
-/Title 444 0 R
-/A 441 0 R
-/Parent 275 0 R
-/Prev 439 0 R
-/Next 447 0 R
->> endobj
-439 0 obj <<
-/Title 440 0 R
-/A 437 0 R
-/Parent 275 0 R
-/Prev 435 0 R
-/Next 443 0 R
->> endobj
-435 0 obj <<
-/Title 436 0 R
-/A 433 0 R
-/Parent 275 0 R
-/Prev 431 0 R
-/Next 439 0 R
->> endobj
-431 0 obj <<
-/Title 432 0 R
-/A 429 0 R
-/Parent 275 0 R
-/Prev 427 0 R
-/Next 435 0 R
->> endobj
-427 0 obj <<
-/Title 428 0 R
-/A 425 0 R
-/Parent 275 0 R
-/Prev 423 0 R
-/Next 431 0 R
->> endobj
-423 0 obj <<
-/Title 424 0 R
-/A 421 0 R
-/Parent 275 0 R
-/Prev 347 0 R
-/Next 427 0 R
->> endobj
-419 0 obj <<
-/Title 420 0 R
-/A 417 0 R
-/Parent 347 0 R
-/Prev 415 0 R
->> endobj
-415 0 obj <<
-/Title 416 0 R
-/A 413 0 R
-/Parent 347 0 R
-/Prev 411 0 R
-/Next 419 0 R
->> endobj
-411 0 obj <<
-/Title 412 0 R
-/A 409 0 R
-/Parent 347 0 R
-/Prev 407 0 R
-/Next 415 0 R
->> endobj
-407 0 obj <<
-/Title 408 0 R
-/A 405 0 R
-/Parent 347 0 R
-/Prev 403 0 R
-/Next 411 0 R
->> endobj
-403 0 obj <<
-/Title 404 0 R
-/A 401 0 R
-/Parent 347 0 R
-/Prev 399 0 R
-/Next 407 0 R
->> endobj
-399 0 obj <<
-/Title 400 0 R
-/A 397 0 R
-/Parent 347 0 R
-/Prev 395 0 R
-/Next 403 0 R
->> endobj
-395 0 obj <<
-/Title 396 0 R
-/A 393 0 R
-/Parent 347 0 R
-/Prev 391 0 R
-/Next 399 0 R
->> endobj
-391 0 obj <<
-/Title 392 0 R
-/A 389 0 R
-/Parent 347 0 R
-/Prev 387 0 R
-/Next 395 0 R
->> endobj
-387 0 obj <<
-/Title 388 0 R
-/A 385 0 R
-/Parent 347 0 R
-/Prev 383 0 R
-/Next 391 0 R
->> endobj
-383 0 obj <<
-/Title 384 0 R
-/A 381 0 R
-/Parent 347 0 R
-/Prev 379 0 R
-/Next 387 0 R
->> endobj
-379 0 obj <<
-/Title 380 0 R
-/A 377 0 R
-/Parent 347 0 R
-/Prev 375 0 R
-/Next 383 0 R
->> endobj
-375 0 obj <<
-/Title 376 0 R
-/A 373 0 R
-/Parent 347 0 R
-/Prev 371 0 R
-/Next 379 0 R
->> endobj
-371 0 obj <<
-/Title 372 0 R
-/A 369 0 R
-/Parent 347 0 R
-/Prev 367 0 R
-/Next 375 0 R
->> endobj
-367 0 obj <<
-/Title 368 0 R
-/A 365 0 R
-/Parent 347 0 R
-/Prev 363 0 R
-/Next 371 0 R
->> endobj
-363 0 obj <<
-/Title 364 0 R
-/A 361 0 R
-/Parent 347 0 R
-/Prev 359 0 R
-/Next 367 0 R
->> endobj
-359 0 obj <<
-/Title 360 0 R
-/A 357 0 R
-/Parent 347 0 R
-/Prev 355 0 R
-/Next 363 0 R
->> endobj
-355 0 obj <<
-/Title 356 0 R
-/A 353 0 R
-/Parent 347 0 R
-/Prev 351 0 R
-/Next 359 0 R
->> endobj
-351 0 obj <<
-/Title 352 0 R
-/A 349 0 R
-/Parent 347 0 R
-/Next 355 0 R
->> endobj
-347 0 obj <<
-/Title 348 0 R
-/A 345 0 R
-/Parent 275 0 R
-/Prev 343 0 R
-/Next 423 0 R
-/First 351 0 R
-/Last 419 0 R
-/Count -18
->> endobj
-343 0 obj <<
-/Title 344 0 R
-/A 341 0 R
-/Parent 275 0 R
-/Prev 339 0 R
-/Next 347 0 R
->> endobj
-339 0 obj <<
-/Title 340 0 R
-/A 337 0 R
-/Parent 275 0 R
-/Prev 335 0 R
-/Next 343 0 R
->> endobj
-335 0 obj <<
-/Title 336 0 R
-/A 333 0 R
-/Parent 275 0 R
-/Prev 331 0 R
-/Next 339 0 R
->> endobj
-331 0 obj <<
-/Title 332 0 R
-/A 329 0 R
-/Parent 275 0 R
-/Prev 327 0 R
-/Next 335 0 R
->> endobj
-327 0 obj <<
-/Title 328 0 R
-/A 325 0 R
-/Parent 275 0 R
-/Prev 315 0 R
-/Next 331 0 R
->> endobj
-323 0 obj <<
-/Title 324 0 R
-/A 321 0 R
-/Parent 315 0 R
-/Prev 319 0 R
->> endobj
-319 0 obj <<
-/Title 320 0 R
-/A 317 0 R
-/Parent 315 0 R
-/Next 323 0 R
->> endobj
-315 0 obj <<
-/Title 316 0 R
-/A 313 0 R
-/Parent 275 0 R
-/Prev 311 0 R
-/Next 327 0 R
-/First 319 0 R
-/Last 323 0 R
-/Count -2
->> endobj
-311 0 obj <<
-/Title 312 0 R
-/A 309 0 R
-/Parent 275 0 R
-/Prev 307 0 R
-/Next 315 0 R
->> endobj
-307 0 obj <<
-/Title 308 0 R
-/A 305 0 R
-/Parent 275 0 R
-/Prev 303 0 R
-/Next 311 0 R
->> endobj
-303 0 obj <<
-/Title 304 0 R
-/A 301 0 R
-/Parent 275 0 R
-/Prev 299 0 R
-/Next 307 0 R
->> endobj
-299 0 obj <<
-/Title 300 0 R
-/A 297 0 R
-/Parent 275 0 R
-/Prev 295 0 R
-/Next 303 0 R
->> endobj
-295 0 obj <<
-/Title 296 0 R
-/A 293 0 R
-/Parent 275 0 R
-/Prev 291 0 R
-/Next 299 0 R
->> endobj
-291 0 obj <<
-/Title 292 0 R
-/A 289 0 R
-/Parent 275 0 R
-/Prev 287 0 R
-/Next 295 0 R
->> endobj
-287 0 obj <<
-/Title 288 0 R
-/A 285 0 R
-/Parent 275 0 R
-/Prev 283 0 R
-/Next 291 0 R
->> endobj
-283 0 obj <<
-/Title 284 0 R
-/A 281 0 R
-/Parent 275 0 R
-/Prev 279 0 R
-/Next 287 0 R
->> endobj
-279 0 obj <<
-/Title 280 0 R
-/A 277 0 R
-/Parent 275 0 R
-/Next 283 0 R
->> endobj
-275 0 obj <<
-/Title 276 0 R
-/A 273 0 R
-/Parent 243 0 R
-/Prev 247 0 R
-/Next 479 0 R
-/First 279 0 R
-/Last 459 0 R
-/Count -26
->> endobj
-271 0 obj <<
-/Title 272 0 R
-/A 269 0 R
-/Parent 263 0 R
-/Prev 267 0 R
->> endobj
-267 0 obj <<
-/Title 268 0 R
-/A 265 0 R
-/Parent 263 0 R
-/Next 271 0 R
->> endobj
-263 0 obj <<
-/Title 264 0 R
-/A 261 0 R
-/Parent 247 0 R
-/Prev 251 0 R
-/First 267 0 R
-/Last 271 0 R
-/Count -2
->> endobj
-259 0 obj <<
-/Title 260 0 R
-/A 257 0 R
-/Parent 251 0 R
-/Prev 255 0 R
->> endobj
-255 0 obj <<
-/Title 256 0 R
-/A 253 0 R
-/Parent 251 0 R
-/Next 259 0 R
->> endobj
-251 0 obj <<
-/Title 252 0 R
-/A 249 0 R
-/Parent 247 0 R
-/Next 263 0 R
-/First 255 0 R
-/Last 259 0 R
-/Count -2
->> endobj
-247 0 obj <<
-/Title 248 0 R
-/A 245 0 R
-/Parent 243 0 R
-/Next 275 0 R
-/First 251 0 R
-/Last 263 0 R
-/Count -2
->> endobj
-243 0 obj <<
-/Title 244 0 R
-/A 241 0 R
-/Parent 2030 0 R
-/Prev 231 0 R
-/Next 559 0 R
-/First 247 0 R
-/Last 531 0 R
-/Count -4
->> endobj
-239 0 obj <<
-/Title 240 0 R
-/A 237 0 R
-/Parent 231 0 R
-/Prev 235 0 R
->> endobj
-235 0 obj <<
-/Title 236 0 R
-/A 233 0 R
-/Parent 231 0 R
-/Next 239 0 R
->> endobj
-231 0 obj <<
-/Title 232 0 R
-/A 229 0 R
-/Parent 2030 0 R
-/Prev 131 0 R
-/Next 243 0 R
-/First 235 0 R
-/Last 239 0 R
-/Count -2
->> endobj
-227 0 obj <<
-/Title 228 0 R
-/A 225 0 R
-/Parent 219 0 R
-/Prev 223 0 R
->> endobj
-223 0 obj <<
-/Title 224 0 R
-/A 221 0 R
-/Parent 219 0 R
-/Next 227 0 R
->> endobj
-219 0 obj <<
-/Title 220 0 R
-/A 217 0 R
-/Parent 131 0 R
-/Prev 203 0 R
-/First 223 0 R
-/Last 227 0 R
-/Count -2
->> endobj
-215 0 obj <<
-/Title 216 0 R
-/A 213 0 R
-/Parent 203 0 R
-/Prev 211 0 R
->> endobj
-211 0 obj <<
-/Title 212 0 R
-/A 209 0 R
-/Parent 203 0 R
-/Prev 207 0 R
-/Next 215 0 R
->> endobj
-207 0 obj <<
-/Title 208 0 R
-/A 205 0 R
-/Parent 203 0 R
-/Next 211 0 R
->> endobj
-203 0 obj <<
-/Title 204 0 R
-/A 201 0 R
-/Parent 131 0 R
-/Prev 199 0 R
-/Next 219 0 R
-/First 207 0 R
-/Last 215 0 R
-/Count -3
->> endobj
-199 0 obj <<
-/Title 200 0 R
-/A 197 0 R
-/Parent 131 0 R
-/Prev 195 0 R
-/Next 203 0 R
->> endobj
-195 0 obj <<
-/Title 196 0 R
-/A 193 0 R
-/Parent 131 0 R
-/Prev 159 0 R
-/Next 199 0 R
->> endobj
-191 0 obj <<
-/Title 192 0 R
-/A 189 0 R
-/Parent 159 0 R
-/Prev 187 0 R
->> endobj
-187 0 obj <<
-/Title 188 0 R
-/A 185 0 R
-/Parent 159 0 R
-/Prev 183 0 R
-/Next 191 0 R
->> endobj
-183 0 obj <<
-/Title 184 0 R
-/A 181 0 R
-/Parent 159 0 R
-/Prev 179 0 R
-/Next 187 0 R
->> endobj
-179 0 obj <<
-/Title 180 0 R
-/A 177 0 R
-/Parent 159 0 R
-/Prev 175 0 R
-/Next 183 0 R
->> endobj
-175 0 obj <<
-/Title 176 0 R
-/A 173 0 R
-/Parent 159 0 R
-/Prev 163 0 R
-/Next 179 0 R
->> endobj
-171 0 obj <<
-/Title 172 0 R
-/A 169 0 R
-/Parent 163 0 R
-/Prev 167 0 R
->> endobj
-167 0 obj <<
-/Title 168 0 R
-/A 165 0 R
-/Parent 163 0 R
-/Next 171 0 R
->> endobj
-163 0 obj <<
-/Title 164 0 R
-/A 161 0 R
-/Parent 159 0 R
-/Next 175 0 R
-/First 167 0 R
-/Last 171 0 R
-/Count -2
->> endobj
-159 0 obj <<
-/Title 160 0 R
-/A 157 0 R
-/Parent 131 0 R
-/Prev 151 0 R
-/Next 195 0 R
-/First 163 0 R
-/Last 191 0 R
-/Count -6
->> endobj
-155 0 obj <<
-/Title 156 0 R
-/A 153 0 R
-/Parent 151 0 R
->> endobj
-151 0 obj <<
-/Title 152 0 R
-/A 149 0 R
-/Parent 131 0 R
-/Prev 147 0 R
-/Next 159 0 R
-/First 155 0 R
-/Last 155 0 R
-/Count -1
->> endobj
-147 0 obj <<
-/Title 148 0 R
-/A 145 0 R
-/Parent 131 0 R
-/Prev 139 0 R
-/Next 151 0 R
->> endobj
-143 0 obj <<
-/Title 144 0 R
-/A 141 0 R
-/Parent 139 0 R
->> endobj
-139 0 obj <<
-/Title 140 0 R
-/A 137 0 R
-/Parent 131 0 R
-/Prev 135 0 R
-/Next 147 0 R
-/First 143 0 R
-/Last 143 0 R
-/Count -1
->> endobj
-135 0 obj <<
-/Title 136 0 R
-/A 133 0 R
-/Parent 131 0 R
-/Next 139 0 R
->> endobj
-131 0 obj <<
-/Title 132 0 R
-/A 129 0 R
-/Parent 2030 0 R
-/Prev 91 0 R
-/Next 231 0 R
-/First 135 0 R
-/Last 219 0 R
-/Count -9
->> endobj
-127 0 obj <<
-/Title 128 0 R
-/A 125 0 R
-/Parent 111 0 R
-/Prev 115 0 R
->> endobj
-123 0 obj <<
-/Title 124 0 R
-/A 121 0 R
-/Parent 115 0 R
-/Prev 119 0 R
->> endobj
-119 0 obj <<
-/Title 120 0 R
-/A 117 0 R
-/Parent 115 0 R
-/Next 123 0 R
->> endobj
-115 0 obj <<
-/Title 116 0 R
-/A 113 0 R
-/Parent 111 0 R
-/Next 127 0 R
-/First 119 0 R
-/Last 123 0 R
-/Count -2
->> endobj
-111 0 obj <<
-/Title 112 0 R
-/A 109 0 R
-/Parent 91 0 R
-/Prev 107 0 R
-/First 115 0 R
-/Last 127 0 R
-/Count -2
->> endobj
-107 0 obj <<
-/Title 108 0 R
-/A 105 0 R
-/Parent 91 0 R
-/Prev 95 0 R
-/Next 111 0 R
->> endobj
-103 0 obj <<
-/Title 104 0 R
-/A 101 0 R
-/Parent 95 0 R
-/Prev 99 0 R
->> endobj
-99 0 obj <<
-/Title 100 0 R
-/A 97 0 R
-/Parent 95 0 R
-/Next 103 0 R
->> endobj
-95 0 obj <<
-/Title 96 0 R
-/A 93 0 R
-/Parent 91 0 R
-/Next 107 0 R
-/First 99 0 R
-/Last 103 0 R
-/Count -2
->> endobj
-91 0 obj <<
-/Title 92 0 R
-/A 89 0 R
-/Parent 2030 0 R
-/Prev 67 0 R
-/Next 131 0 R
-/First 95 0 R
-/Last 111 0 R
-/Count -3
->> endobj
-87 0 obj <<
-/Title 88 0 R
-/A 85 0 R
-/Parent 67 0 R
-/Prev 83 0 R
->> endobj
-83 0 obj <<
-/Title 84 0 R
-/A 81 0 R
-/Parent 67 0 R
-/Prev 79 0 R
-/Next 87 0 R
->> endobj
-79 0 obj <<
-/Title 80 0 R
-/A 77 0 R
-/Parent 67 0 R
-/Prev 75 0 R
-/Next 83 0 R
->> endobj
-75 0 obj <<
-/Title 76 0 R
-/A 73 0 R
-/Parent 67 0 R
-/Prev 71 0 R
-/Next 79 0 R
->> endobj
-71 0 obj <<
-/Title 72 0 R
-/A 69 0 R
-/Parent 67 0 R
-/Next 75 0 R
->> endobj
-67 0 obj <<
-/Title 68 0 R
-/A 65 0 R
-/Parent 2030 0 R
-/Prev 7 0 R
-/Next 91 0 R
-/First 71 0 R
-/Last 87 0 R
-/Count -5
->> endobj
-63 0 obj <<
-/Title 64 0 R
-/A 61 0 R
-/Parent 23 0 R
-/Prev 55 0 R
->> endobj
-59 0 obj <<
-/Title 60 0 R
-/A 57 0 R
-/Parent 55 0 R
->> endobj
-55 0 obj <<
-/Title 56 0 R
-/A 53 0 R
-/Parent 23 0 R
-/Prev 39 0 R
-/Next 63 0 R
-/First 59 0 R
-/Last 59 0 R
-/Count -1
->> endobj
-51 0 obj <<
-/Title 52 0 R
-/A 49 0 R
-/Parent 39 0 R
-/Prev 47 0 R
->> endobj
-47 0 obj <<
-/Title 48 0 R
-/A 45 0 R
-/Parent 39 0 R
-/Prev 43 0 R
-/Next 51 0 R
->> endobj
-43 0 obj <<
-/Title 44 0 R
-/A 41 0 R
-/Parent 39 0 R
-/Next 47 0 R
->> endobj
-39 0 obj <<
-/Title 40 0 R
-/A 37 0 R
-/Parent 23 0 R
-/Prev 35 0 R
-/Next 55 0 R
-/First 43 0 R
-/Last 51 0 R
-/Count -3
->> endobj
-35 0 obj <<
-/Title 36 0 R
-/A 33 0 R
-/Parent 23 0 R
-/Prev 31 0 R
-/Next 39 0 R
->> endobj
-31 0 obj <<
-/Title 32 0 R
-/A 29 0 R
-/Parent 23 0 R
-/Prev 27 0 R
-/Next 35 0 R
->> endobj
-27 0 obj <<
-/Title 28 0 R
-/A 25 0 R
-/Parent 23 0 R
-/Next 31 0 R
->> endobj
-23 0 obj <<
-/Title 24 0 R
-/A 21 0 R
-/Parent 7 0 R
-/Prev 19 0 R
-/First 27 0 R
-/Last 63 0 R
-/Count -6
->> endobj
-19 0 obj <<
-/Title 20 0 R
-/A 17 0 R
-/Parent 7 0 R
-/Prev 15 0 R
-/Next 23 0 R
->> endobj
-15 0 obj <<
-/Title 16 0 R
-/A 13 0 R
-/Parent 7 0 R
-/Prev 11 0 R
-/Next 19 0 R
->> endobj
-11 0 obj <<
-/Title 12 0 R
-/A 9 0 R
-/Parent 7 0 R
-/Next 15 0 R
->> endobj
-7 0 obj <<
-/Title 8 0 R
-/A 5 0 R
-/Parent 2030 0 R
-/Next 67 0 R
-/First 11 0 R
-/Last 23 0 R
-/Count -4
->> endobj
-2031 0 obj <<
-/Names [(Access_Control_Lists) 1564 0 R (Bv9ARM.ch01) 917 0 R (Bv9ARM.ch02) 963 0 R (Bv9ARM.ch03) 980 0 R (Bv9ARM.ch04) 1029 0 R (Bv9ARM.ch05) 1117 0 R (Bv9ARM.ch06) 1128 0 R (Bv9ARM.ch07) 1563 0 R (Bv9ARM.ch08) 1589 0 R (Bv9ARM.ch09) 1604 0 R (Bv9ARM.ch10) 1825 0 R (Configuration_File_Grammar) 1153 0 R (DNSSEC) 1096 0 R (Doc-Start) 687 0 R (Setting_TTLs) 1499 0 R (acache) 970 0 R (access_control) 1275 0 R (acl) 1161 0 R (address_match_lists) 1134 0 R (admin_tools) 1003 0 R (appendix.A) 602 0 R (appendix.B) 638 0 R (bibliography) 1612 0 R (boolean_options) 1045 0 R (builtin) 1354 0 R (chapter*.1) 722 0 R (chapter.1) 6 0 R (chapter.2) 66 0 R (chapter.3) 90 0 R (chapter.4) 130 0 R (chapter.5) 230 0 R (chapter.6) 242 0 R (chapter.7) 558 0 R (chapter.8) 582 0 R (cite.RFC1033) 1740 0 R (cite.RFC1034) 1624 0 R (cite.RFC1035) 1626 0 R (cite.RFC1101) 1722 0 R (cite.RFC1123) 1724 0 R (cite.RFC1183) 1684 0 R (cite.RFC1464) 1762 0 R (cite.RFC1535) 1669 0 R (cite.RFC1536) 1671 0 R (cite.RFC1537) 1742 0 R (cite.RFC1591) 1726 0 R (cite.RFC1706) 1686 0 R (cite.RFC1712) 1782 0 R (cite.RFC1713) 1764 0 R (cite.RFC1794) 1766 0 R (cite.RFC1876) 1688 0 R (cite.RFC1912) 1744 0 R (cite.RFC1982) 1673 0 R (cite.RFC1995) 1631 0 R (cite.RFC1996) 1633 0 R (cite.RFC2010) 1746 0 R (cite.RFC2052) 1690 0 R (cite.RFC2065) 1794 0 R (cite.RFC2136) 1635 0 R (cite.RFC2137) 1796 0 R (cite.RFC2163) 1692 0 R (cite.RFC2168) 1694 0 R (cite.RFC2181) 1637 0 R (cite.RFC2219) 1748 0 R (cite.RFC2230) 1696 0 R (cite.RFC2240) 1768 0 R (cite.RFC2308) 1639 0 R (cite.RFC2317) 1728 0 R (cite.RFC2345) 1770 0 R (cite.RFC2352) 1772 0 R (cite.RFC2535) 1798 0 R (cite.RFC2536) 1698 0 R (cite.RFC2537) 1700 0 R (cite.RFC2538) 1702 0 R (cite.RFC2539) 1704 0 R (cite.RFC2540) 1706 0 R (cite.RFC2671) 1641 0 R (cite.RFC2672) 1643 0 R (cite.RFC2673) 1784 0 R (cite.RFC2782) 1708 0 R (cite.RFC2825) 1752 0 R (cite.RFC2826) 1730 0 R (cite.RFC2845) 1645 0 R (cite.RFC2874) 1786 0 R (cite.RFC2915) 1710 0 R (cite.RFC2929) 1732 0 R (cite.RFC2930) 1647 0 R (cite.RFC2931) 1649 0 R (cite.RFC3007) 1651 0 R (cite.RFC3008) 1800 0 R (cite.RFC3071) 1774 0 R (cite.RFC3090) 1802 0 R (cite.RFC3110) 1712 0 R (cite.RFC3123) 1714 0 R (cite.RFC3225) 1657 0 R (cite.RFC3258) 1776 0 R (cite.RFC3445) 1804 0 R (cite.RFC3490) 1754 0 R (cite.RFC3491) 1756 0 R (cite.RFC3492) 1758 0 R (cite.RFC3596) 1716 0 R (cite.RFC3597) 1718 0 R (cite.RFC3645) 1653 0 R (cite.RFC3655) 1806 0 R (cite.RFC3658) 1808 0 R (cite.RFC3755) 1810 0 R (cite.RFC3757) 1812 0 R (cite.RFC3833) 1659 0 R (cite.RFC3845) 1814 0 R (cite.RFC3901) 1778 0 R (cite.RFC4033) 1661 0 R (cite.RFC4035) 1663 0 R (cite.RFC4044) 1665 0 R (cite.RFC4074) 1675 0 R (cite.RFC974) 1628 0 R (cite.id2503736) 1819 0 R (configuration_file_elements) 1129 0 R (controls_statement_definition_and_usage) 1016 0 R (diagnostic_tools) 951 0 R (dynamic_update) 1039 0 R (dynamic_update_policies) 1091 0 R (dynamic_update_security) 1284 0 R (empty) 1356 0 R (historical_dns_information) 1606 0 R (id2464966) 918 0 R (id2466572) 919 0 R (id2467531) 920 0 R (id2467541) 921 0 R (id2467713) 933 0 R (id2467734) 934 0 R (id2467768) 935 0 R (id2467852) 938 0 R (id2467945) 931 0 R (id2470250) 945 0 R (id2470274) 948 0 R (id2470372) 949 0 R (id2470393) 950 0 R (id2470423) 956 0 R (id2470526) 957 0 R (id2470553) 958 0 R (id2470587) 964 0 R (id2470614) 965 0 R (id2470627) 966 0 R (id2470721) 969 0 R (id2470731) 975 0 R (id2470763) 982 0 R (id2470779) 983 0 R (id2470802) 989 0 R (id2470819) 990 0 R (id2471156) 993 0 R (id2471161) 994 0 R (id2473080) 1021 0 R (id2473092) 1022 0 R (id2473485) 1054 0 R (id2473504) 1055 0 R (id2474007) 1071 0 R (id2474024) 1072 0 R (id2474062) 1077 0 R (id2474081) 1078 0 R (id2474091) 1079 0 R (id2474199) 1080 0 R (id2474325) 1085 0 R (id2474370) 1087 0 R (id2474384) 1088 0 R (id2474501) 1089 0 R (id2474569) 1097 0 R (id2474707) 1098 0 R (id2474786) 1103 0 R (id2474860) 1108 0 R (id2474990) 1110 0 R (id2475148) 1111 0 R (id2475181) 1118 0 R (id2475329) 1130 0 R (id2476190) 1139 0 R (id2476218) 1144 0 R (id2476412) 1145 0 R (id2476427) 1146 0 R (id2476457) 1152 0 R (id2476609) 1154 0 R (id2476983) 1160 0 R (id2477094) 1162 0 R (id2477309) 1164 0 R (id2477738) 1171 0 R (id2477755) 1177 0 R (id2477779) 1178 0 R (id2477802) 1179 0 R (id2477893) 1183 0 R (id2478019) 1189 0 R (id2478071) 1190 0 R (id2478833) 1201 0 R (id2479467) 1211 0 R (id2479677) 1212 0 R (id2479741) 1215 0 R (id2479785) 1216 0 R (id2479800) 1217 0 R (id2482021) 1246 0 R (id2483889) 1272 0 R (id2483947) 1274 0 R (id2484512) 1289 0 R (id2485562) 1308 0 R (id2485622) 1310 0 R (id2486010) 1316 0 R (id2486144) 1318 0 R (id2486578) 1337 0 R (id2488064) 1367 0 R (id2488816) 1380 0 R (id2488867) 1385 0 R (id2488949) 1387 0 R (id2490373) 1400 0 R (id2490380) 1401 0 R (id2490386) 1402 0 R (id2490868) 1413 0 R (id2490901) 1414 0 R (id2492394) 1462 0 R (id2492720) 1468 0 R (id2492738) 1469 0 R (id2492758) 1472 0 R (id2492926) 1474 0 R (id2494050) 1485 0 R (id2494178) 1487 0 R (id2494336) 1488 0 R (id2494630) 1494 0 R (id2494766) 1496 0 R (id2494789) 1497 0 R (id2495398) 1500 0 R (id2495523) 1506 0 R (id2495538) 1507 0 R (id2495650) 1509 0 R (id2495672) 1510 0 R (id2495733) 1511 0 R (id2495802) 1516 0 R (id2495838) 1517 0 R (id2495900) 1518 0 R (id2496443) 1524 0 R (id2496466) 1525 0 R (id2496792) 1532 0 R (id2496808) 1538 0 R (id2496813) 1539 0 R (id2498195) 1545 0 R (id2498201) 1546 0 R (id2498646) 1548 0 R (id2498651) 1549 0 R (id2499499) 1558 0 R (id2499755) 1573 0 R (id2499900) 1574 0 R (id2499960) 1575 0 R (id2500040) 1590 0 R (id2500045) 1591 0 R (id2500057) 1592 0 R (id2500211) 1593 0 R (id2500341) 1605 0 R (id2500444) 1611 0 R (id2500700) 1616 0 R (id2500702) 1622 0 R (id2500711) 1627 0 R (id2500734) 1623 0 R (id2500758) 1625 0 R (id2500794) 1636 0 R (id2500821) 1638 0 R (id2500846) 1630 0 R (id2500871) 1632 0 R (id2500894) 1634 0 R (id2500950) 1640 0 R (id2500977) 1642 0 R (id2501003) 1644 0 R (id2501065) 1646 0 R (id2501095) 1648 0 R (id2501125) 1650 0 R (id2501152) 1652 0 R (id2501226) 1655 0 R (id2501234) 1656 0 R (id2501260) 1658 0 R (id2501297) 1660 0 R (id2501362) 1664 0 R (id2501427) 1662 0 R (id2501492) 1667 0 R (id2501500) 1668 0 R (id2501526) 1670 0 R (id2501662) 1672 0 R (id2501698) 1674 0 R (id2501738) 1682 0 R (id2501744) 1683 0 R (id2501801) 1685 0 R (id2501838) 1693 0 R (id2501874) 1687 0 R (id2501928) 1689 0 R (id2501966) 1691 0 R (id2501992) 1695 0 R (id2502018) 1697 0 R (id2502113) 1699 0 R (id2502139) 1701 0 R (id2502179) 1703 0 R (id2502209) 1705 0 R (id2502238) 1707 0 R (id2502281) 1709 0 R (id2502314) 1711 0 R (id2502341) 1713 0 R (id2502364) 1715 0 R (id2502422) 1717 0 R (id2502446) 1720 0 R (id2502454) 1721 0 R (id2502480) 1723 0 R (id2502502) 1725 0 R (id2502525) 1727 0 R (id2502571) 1729 0 R (id2502595) 1731 0 R (id2502645) 1738 0 R (id2502652) 1739 0 R (id2502676) 1741 0 R (id2502702) 1743 0 R (id2502729) 1745 0 R (id2502765) 1747 0 R (id2502806) 1750 0 R (id2502811) 1751 0 R (id2502843) 1753 0 R (id2502889) 1755 0 R (id2502924) 1757 0 R (id2502951) 1760 0 R (id2502969) 1761 0 R (id2502992) 1763 0 R (id2503017) 1765 0 R (id2503043) 1767 0 R (id2503066) 1769 0 R (id2503112) 1771 0 R (id2503136) 1773 0 R (id2503162) 1775 0 R (id2503188) 1777 0 R (id2503225) 1780 0 R (id2503232) 1781 0 R (id2503289) 1783 0 R (id2503316) 1785 0 R (id2503352) 1792 0 R (id2503364) 1793 0 R (id2503403) 1795 0 R (id2503430) 1797 0 R (id2503460) 1799 0 R (id2503485) 1801 0 R (id2503512) 1803 0 R (id2503548) 1805 0 R (id2503585) 1807 0 R (id2503611) 1809 0 R (id2503638) 1811 0 R (id2503683) 1813 0 R (id2503724) 1816 0 R (id2503734) 1818 0 R (id2503736) 1820 0 R (incremental_zone_transfers) 1051 0 R (internet_drafts) 1815 0 R (ipv6addresses) 1112 0 R (journal) 1040 0 R (lwresd) 1119 0 R (man.dig) 1826 0 R (man.dnssec-keygen) 1874 0 R (man.dnssec-signzone) 1892 0 R (man.host) 1859 0 R (man.named) 1941 0 R (man.named-checkconf) 1912 0 R (man.named-checkzone) 1924 0 R (man.rndc) 1963 0 R (man.rndc-confgen) 1992 0 R (man.rndc.conf) 1975 0 R (notify) 1030 0 R (options) 1231 0 R (page.1) 686 0 R (page.10) 955 0 R (page.100) 1790 0 R (page.101) 1824 0 R (page.102) 1833 0 R (page.103) 1839 0 R (page.104) 1845 0 R (page.105) 1849 0 R (page.106) 1854 0 R (page.107) 1865 0 R (page.108) 1870 0 R (page.109) 1882 0 R (page.11) 962 0 R (page.110) 1888 0 R (page.111) 1899 0 R (page.112) 1904 0 R (page.113) 1909 0 R (page.114) 1920 0 R (page.115) 1931 0 R (page.116) 1937 0 R (page.117) 1947 0 R (page.118) 1953 0 R (page.119) 1960 0 R (page.12) 974 0 R (page.120) 1971 0 R (page.121) 1981 0 R (page.122) 1988 0 R (page.123) 1997 0 R (page.124) 2004 0 R (page.13) 979 0 R (page.14) 988 0 R (page.15) 999 0 R (page.16) 1007 0 R (page.17) 1014 0 R (page.18) 1020 0 R (page.19) 1028 0 R (page.2) 711 0 R (page.20) 1050 0 R (page.21) 1060 0 R (page.22) 1065 0 R (page.23) 1069 0 R (page.24) 1076 0 R (page.25) 1084 0 R (page.26) 1095 0 R (page.27) 1102 0 R (page.28) 1107 0 R (page.29) 1116 0 R (page.3) 721 0 R (page.30) 1123 0 R (page.31) 1127 0 R (page.32) 1138 0 R (page.33) 1143 0 R (page.34) 1151 0 R (page.35) 1159 0 R (page.36) 1168 0 R (page.37) 1176 0 R (page.38) 1188 0 R (page.39) 1194 0 R (page.4) 776 0 R (page.40) 1200 0 R (page.41) 1206 0 R (page.42) 1210 0 R (page.43) 1221 0 R (page.44) 1226 0 R (page.45) 1230 0 R (page.46) 1235 0 R (page.47) 1241 0 R (page.48) 1245 0 R (page.49) 1252 0 R (page.5) 840 0 R (page.50) 1263 0 R (page.51) 1267 0 R (page.52) 1271 0 R (page.53) 1281 0 R (page.54) 1288 0 R (page.55) 1294 0 R (page.56) 1299 0 R (page.57) 1303 0 R (page.58) 1307 0 R (page.59) 1315 0 R (page.6) 902 0 R (page.60) 1322 0 R (page.61) 1330 0 R (page.62) 1336 0 R (page.63) 1343 0 R (page.64) 1353 0 R (page.65) 1361 0 R (page.66) 1365 0 R (page.67) 1371 0 R (page.68) 1377 0 R (page.69) 1384 0 R (page.7) 916 0 R (page.70) 1391 0 R (page.71) 1395 0 R (page.72) 1399 0 R (page.73) 1407 0 R (page.74) 1412 0 R (page.75) 1425 0 R (page.76) 1439 0 R (page.77) 1461 0 R (page.78) 1467 0 R (page.79) 1479 0 R (page.8) 930 0 R (page.80) 1484 0 R (page.81) 1493 0 R (page.82) 1505 0 R (page.83) 1515 0 R (page.84) 1523 0 R (page.85) 1530 0 R (page.86) 1537 0 R (page.87) 1544 0 R (page.88) 1554 0 R (page.89) 1562 0 R (page.9) 944 0 R (page.90) 1568 0 R (page.91) 1579 0 R (page.92) 1584 0 R (page.93) 1588 0 R (page.94) 1599 0 R (page.95) 1603 0 R (page.96) 1610 0 R (page.97) 1620 0 R (page.98) 1680 0 R (page.99) 1736 0 R (proposed_standards) 1056 0 R (query_address) 1290 0 R (rfcs) 940 0 R (rndc) 1172 0 R (rrset_ordering) 995 0 R (sample_configuration) 981 0 R (section*.10) 1749 0 R (section*.11) 1759 0 R (section*.12) 1779 0 R (section*.13) 1791 0 R (section*.14) 1817 0 R (section*.15) 1827 0 R (section*.16) 1828 0 R (section*.17) 1829 0 R (section*.18) 1834 0 R (section*.19) 1835 0 R (section*.2) 1615 0 R (section*.20) 1840 0 R (section*.21) 1850 0 R (section*.22) 1855 0 R (section*.23) 1856 0 R (section*.24) 1857 0 R (section*.25) 1858 0 R (section*.26) 1860 0 R (section*.27) 1861 0 R (section*.28) 1866 0 R (section*.29) 1871 0 R (section*.3) 1621 0 R (section*.30) 1872 0 R (section*.31) 1873 0 R (section*.32) 1875 0 R (section*.33) 1876 0 R (section*.34) 1877 0 R (section*.35) 1878 0 R (section*.36) 1883 0 R (section*.37) 1889 0 R (section*.38) 1890 0 R (section*.39) 1891 0 R (section*.4) 1629 0 R (section*.40) 1893 0 R (section*.41) 1894 0 R (section*.42) 1895 0 R (section*.43) 1900 0 R (section*.44) 1905 0 R (section*.45) 1910 0 R (section*.46) 1911 0 R (section*.47) 1913 0 R (section*.48) 1914 0 R (section*.49) 1915 0 R (section*.5) 1654 0 R (section*.50) 1916 0 R (section*.51) 1921 0 R (section*.52) 1922 0 R (section*.53) 1923 0 R (section*.54) 1925 0 R (section*.55) 1926 0 R (section*.56) 1927 0 R (section*.57) 1932 0 R (section*.58) 1938 0 R (section*.59) 1939 0 R (section*.6) 1666 0 R (section*.60) 1940 0 R (section*.61) 1942 0 R (section*.62) 1943 0 R (section*.63) 1948 0 R (section*.64) 1949 0 R (section*.65) 1954 0 R (section*.66) 1955 0 R (section*.67) 1956 0 R (section*.68) 1961 0 R (section*.69) 1962 0 R (section*.7) 1681 0 R (section*.70) 1964 0 R (section*.71) 1965 0 R (section*.72) 1966 0 R (section*.73) 1967 0 R (section*.74) 1972 0 R (section*.75) 1973 0 R (section*.76) 1974 0 R (section*.77) 1976 0 R (section*.78) 1977 0 R (section*.79) 1982 0 R (section*.8) 1719 0 R (section*.80) 1983 0 R (section*.81) 1989 0 R (section*.82) 1990 0 R (section*.83) 1991 0 R (section*.84) 1993 0 R (section*.85) 1998 0 R (section*.86) 1999 0 R (section*.87) 2000 0 R (section*.88) 2005 0 R (section*.89) 2006 0 R (section*.9) 1737 0 R (section*.90) 2007 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.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) 234 0 R (section.5.2) 238 0 R (section.6.1) 246 0 R (section.6.2) 274 0 R (section.6.3) 478 0 R (section.6.4) 530 0 R (section.7.1) 562 0 R (section.7.2) 566 0 R (section.7.3) 578 0 R (section.8.1) 586 0 R (section.8.2) 594 0 R (section.8.3) 598 0 R (section.A.1) 606 0 R (section.A.2) 614 0 R (section.A.3) 622 0 R (section.B.1) 642 0 R (section.B.10) 678 0 R (section.B.2) 646 0 R (section.B.3) 650 0 R (section.B.4) 654 0 R (section.B.5) 658 0 R (section.B.6) 662 0 R (section.B.7) 666 0 R (section.B.8) 670 0 R (section.B.9) 674 0 R (server_statement_definition_and_usage) 1259 0 R (server_statement_grammar) 1372 0 R (statschannels) 1366 0 R (statsfile) 1237 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.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.2) 226 0 R (subsection.6.1.1) 250 0 R (subsection.6.1.2) 262 0 R (subsection.6.2.1) 278 0 R (subsection.6.2.10) 314 0 R (subsection.6.2.11) 326 0 R (subsection.6.2.12) 330 0 R (subsection.6.2.13) 334 0 R (subsection.6.2.14) 338 0 R (subsection.6.2.15) 342 0 R (subsection.6.2.16) 346 0 R (subsection.6.2.17) 422 0 R (subsection.6.2.18) 426 0 R (subsection.6.2.19) 430 0 R (subsection.6.2.2) 282 0 R (subsection.6.2.20) 434 0 R (subsection.6.2.21) 438 0 R (subsection.6.2.22) 442 0 R (subsection.6.2.23) 446 0 R (subsection.6.2.24) 450 0 R (subsection.6.2.25) 454 0 R (subsection.6.2.26) 458 0 R (subsection.6.2.3) 286 0 R (subsection.6.2.4) 290 0 R (subsection.6.2.5) 294 0 R (subsection.6.2.6) 298 0 R (subsection.6.2.7) 302 0 R (subsection.6.2.8) 306 0 R (subsection.6.2.9) 310 0 R (subsection.6.3.1) 482 0 R (subsection.6.3.2) 494 0 R (subsection.6.3.3) 498 0 R (subsection.6.3.4) 502 0 R (subsection.6.3.5) 506 0 R (subsection.6.3.6) 522 0 R (subsection.6.3.7) 526 0 R (subsection.6.4.1) 538 0 R (subsection.7.2.1) 570 0 R (subsection.7.2.2) 574 0 R (subsection.8.1.1) 590 0 R (subsection.A.1.1) 610 0 R (subsection.A.2.1) 618 0 R (subsection.A.3.1) 626 0 R (subsection.A.3.2) 630 0 R (subsection.A.3.3) 634 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.5.1.1) 166 0 R (subsubsection.4.5.1.2) 170 0 R (subsubsection.6.1.1.1) 254 0 R (subsubsection.6.1.1.2) 258 0 R (subsubsection.6.1.2.1) 266 0 R (subsubsection.6.1.2.2) 270 0 R (subsubsection.6.2.10.1) 318 0 R (subsubsection.6.2.10.2) 322 0 R (subsubsection.6.2.16.1) 350 0 R (subsubsection.6.2.16.10) 386 0 R (subsubsection.6.2.16.11) 390 0 R (subsubsection.6.2.16.12) 394 0 R (subsubsection.6.2.16.13) 398 0 R (subsubsection.6.2.16.14) 402 0 R (subsubsection.6.2.16.15) 406 0 R (subsubsection.6.2.16.16) 410 0 R (subsubsection.6.2.16.17) 414 0 R (subsubsection.6.2.16.18) 418 0 R (subsubsection.6.2.16.2) 354 0 R (subsubsection.6.2.16.3) 358 0 R (subsubsection.6.2.16.4) 362 0 R (subsubsection.6.2.16.5) 366 0 R (subsubsection.6.2.16.6) 370 0 R (subsubsection.6.2.16.7) 374 0 R (subsubsection.6.2.16.8) 378 0 R (subsubsection.6.2.16.9) 382 0 R (subsubsection.6.2.26.1) 462 0 R (subsubsection.6.2.26.2) 466 0 R (subsubsection.6.2.26.3) 470 0 R (subsubsection.6.2.26.4) 474 0 R (subsubsection.6.3.1.1) 486 0 R (subsubsection.6.3.1.2) 490 0 R (subsubsection.6.3.5.1) 510 0 R (subsubsection.6.3.5.2) 514 0 R (subsubsection.6.3.5.3) 518 0 R (subsubsection.6.4.0.1) 534 0 R (subsubsection.6.4.1.1) 542 0 R (subsubsection.6.4.1.2) 546 0 R (subsubsection.6.4.1.3) 550 0 R (subsubsection.6.4.1.4) 554 0 R (table.1.1) 922 0 R (table.1.2) 932 0 R (table.3.1) 991 0 R (table.3.2) 1023 0 R (table.6.1) 1131 0 R (table.6.10) 1475 0 R (table.6.11) 1486 0 R (table.6.12) 1489 0 R (table.6.13) 1495 0 R (table.6.14) 1498 0 R (table.6.15) 1501 0 R (table.6.16) 1508 0 R (table.6.17) 1519 0 R (table.6.18) 1526 0 R (table.6.19) 1540 0 R (table.6.2) 1155 0 R (table.6.20) 1547 0 R (table.6.21) 1550 0 R (table.6.3) 1163 0 R (table.6.4) 1202 0 R (table.6.5) 1247 0 R (table.6.6) 1338 0 R (table.6.7) 1403 0 R (table.6.8) 1463 0 R (table.6.9) 1473 0 R (the_category_phrase) 1196 0 R (the_sortlist_statement) 1324 0 R (topology) 1323 0 R (tsig) 1070 0 R (tuning) 1339 0 R (types_of_resource_records_and_when_to_use_them) 939 0 R (view_statement_grammar) 1357 0 R (zone_statement_grammar) 1277 0 R (zone_transfers) 1046 0 R (zonefile_format) 1349 0 R]
-/Limits [(Access_Control_Lists) (zonefile_format)]
->> endobj
-2032 0 obj <<
-/Kids [2031 0 R]
->> endobj
-2033 0 obj <<
-/Dests 2032 0 R
->> endobj
-2034 0 obj <<
-/Type /Catalog
-/Pages 2029 0 R
-/Outlines 2030 0 R
-/Names 2033 0 R
-/PageMode /UseOutlines
-/OpenAction 681 0 R
->> endobj
-2035 0 obj <<
-/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords()
-/CreationDate (D:20080630014227Z)
-/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4)
->> endobj
-xref
-0 2036
-0000000001 65535 f
-0000000002 00000 f
-0000000003 00000 f
-0000000004 00000 f
-0000000000 00000 f
-0000000009 00000 n
-0000069897 00000 n
-0000700237 00000 n
-0000000054 00000 n
-0000000086 00000 n
-0000070021 00000 n
-0000700165 00000 n
-0000000133 00000 n
-0000000173 00000 n
-0000070146 00000 n
-0000700079 00000 n
-0000000221 00000 n
-0000000273 00000 n
-0000070271 00000 n
-0000699993 00000 n
-0000000321 00000 n
-0000000377 00000 n
-0000074535 00000 n
-0000699883 00000 n
-0000000425 00000 n
-0000000478 00000 n
-0000074660 00000 n
-0000699809 00000 n
-0000000531 00000 n
-0000000572 00000 n
-0000074785 00000 n
-0000699722 00000 n
-0000000625 00000 n
-0000000674 00000 n
-0000074910 00000 n
-0000699635 00000 n
-0000000727 00000 n
-0000000757 00000 n
-0000079189 00000 n
-0000699511 00000 n
-0000000810 00000 n
-0000000861 00000 n
-0000079314 00000 n
-0000699437 00000 n
-0000000919 00000 n
-0000000964 00000 n
-0000079439 00000 n
-0000699350 00000 n
-0000001022 00000 n
-0000001062 00000 n
-0000079564 00000 n
-0000699276 00000 n
-0000001120 00000 n
-0000001162 00000 n
-0000082536 00000 n
-0000699152 00000 n
-0000001215 00000 n
-0000001260 00000 n
-0000082661 00000 n
-0000699091 00000 n
-0000001318 00000 n
-0000001355 00000 n
-0000082786 00000 n
-0000699017 00000 n
-0000001408 00000 n
-0000001463 00000 n
-0000085714 00000 n
-0000698892 00000 n
-0000001509 00000 n
-0000001556 00000 n
-0000085839 00000 n
-0000698818 00000 n
-0000001604 00000 n
-0000001648 00000 n
-0000085964 00000 n
-0000698731 00000 n
-0000001696 00000 n
-0000001735 00000 n
-0000086089 00000 n
-0000698644 00000 n
-0000001783 00000 n
-0000001825 00000 n
-0000086213 00000 n
-0000698557 00000 n
-0000001873 00000 n
-0000001936 00000 n
-0000087299 00000 n
-0000698483 00000 n
-0000001984 00000 n
-0000002034 00000 n
-0000089009 00000 n
-0000698355 00000 n
-0000002080 00000 n
-0000002126 00000 n
-0000089133 00000 n
-0000698242 00000 n
-0000002174 00000 n
-0000002218 00000 n
-0000089258 00000 n
-0000698166 00000 n
-0000002271 00000 n
-0000002323 00000 n
-0000089383 00000 n
-0000698089 00000 n
-0000002377 00000 n
-0000002436 00000 n
-0000091912 00000 n
-0000697998 00000 n
-0000002485 00000 n
-0000002523 00000 n
-0000092164 00000 n
-0000697881 00000 n
-0000002572 00000 n
-0000002618 00000 n
-0000092290 00000 n
-0000697763 00000 n
-0000002672 00000 n
-0000002739 00000 n
-0000095496 00000 n
-0000697684 00000 n
-0000002798 00000 n
-0000002842 00000 n
-0000095622 00000 n
-0000697605 00000 n
-0000002901 00000 n
-0000002949 00000 n
-0000105975 00000 n
-0000697526 00000 n
-0000003003 00000 n
-0000003036 00000 n
-0000110962 00000 n
-0000697394 00000 n
-0000003083 00000 n
-0000003126 00000 n
-0000111091 00000 n
-0000697315 00000 n
-0000003175 00000 n
-0000003205 00000 n
-0000111220 00000 n
-0000697183 00000 n
-0000003254 00000 n
-0000003292 00000 n
-0000111349 00000 n
-0000697118 00000 n
-0000003346 00000 n
-0000003388 00000 n
-0000115611 00000 n
-0000697025 00000 n
-0000003437 00000 n
-0000003496 00000 n
-0000115740 00000 n
-0000696893 00000 n
-0000003545 00000 n
-0000003578 00000 n
-0000115869 00000 n
-0000696828 00000 n
-0000003632 00000 n
-0000003681 00000 n
-0000123179 00000 n
-0000696696 00000 n
-0000003730 00000 n
-0000003758 00000 n
-0000123308 00000 n
-0000696578 00000 n
-0000003812 00000 n
-0000003881 00000 n
-0000123437 00000 n
-0000696499 00000 n
-0000003940 00000 n
-0000003988 00000 n
-0000126271 00000 n
-0000696420 00000 n
-0000004047 00000 n
-0000004092 00000 n
-0000126400 00000 n
-0000696327 00000 n
-0000004146 00000 n
-0000004214 00000 n
-0000126529 00000 n
-0000696234 00000 n
-0000004268 00000 n
-0000004338 00000 n
-0000126658 00000 n
-0000696141 00000 n
-0000004392 00000 n
-0000004455 00000 n
-0000130561 00000 n
-0000696048 00000 n
-0000004509 00000 n
-0000004564 00000 n
-0000130690 00000 n
-0000695969 00000 n
-0000004618 00000 n
-0000004650 00000 n
-0000130819 00000 n
-0000695876 00000 n
-0000004699 00000 n
-0000004727 00000 n
-0000130948 00000 n
-0000695783 00000 n
-0000004776 00000 n
-0000004808 00000 n
-0000134567 00000 n
-0000695651 00000 n
-0000004857 00000 n
-0000004887 00000 n
-0000134696 00000 n
-0000695572 00000 n
-0000004941 00000 n
-0000004982 00000 n
-0000134824 00000 n
-0000695479 00000 n
-0000005036 00000 n
-0000005078 00000 n
-0000138265 00000 n
-0000695400 00000 n
-0000005132 00000 n
-0000005177 00000 n
-0000141340 00000 n
-0000695282 00000 n
-0000005226 00000 n
-0000005272 00000 n
-0000141469 00000 n
-0000695203 00000 n
-0000005326 00000 n
-0000005386 00000 n
-0000141597 00000 n
-0000695124 00000 n
-0000005440 00000 n
-0000005509 00000 n
-0000144079 00000 n
-0000694991 00000 n
-0000005556 00000 n
-0000005609 00000 n
-0000144208 00000 n
-0000694912 00000 n
-0000005658 00000 n
-0000005714 00000 n
-0000144337 00000 n
-0000694833 00000 n
-0000005763 00000 n
-0000005812 00000 n
-0000148521 00000 n
-0000694700 00000 n
-0000005859 00000 n
-0000005911 00000 n
-0000148650 00000 n
-0000694582 00000 n
-0000005960 00000 n
-0000006011 00000 n
-0000153340 00000 n
-0000694464 00000 n
-0000006065 00000 n
-0000006110 00000 n
-0000153468 00000 n
-0000694385 00000 n
-0000006169 00000 n
-0000006203 00000 n
-0000157051 00000 n
-0000694306 00000 n
-0000006262 00000 n
-0000006310 00000 n
-0000157179 00000 n
-0000694188 00000 n
-0000006364 00000 n
-0000006404 00000 n
-0000157308 00000 n
-0000694109 00000 n
-0000006463 00000 n
-0000006497 00000 n
-0000161035 00000 n
-0000694030 00000 n
-0000006556 00000 n
-0000006604 00000 n
-0000161164 00000 n
-0000693897 00000 n
-0000006653 00000 n
-0000006703 00000 n
-0000164184 00000 n
-0000693818 00000 n
-0000006757 00000 n
-0000006804 00000 n
-0000164312 00000 n
-0000693725 00000 n
-0000006858 00000 n
-0000006918 00000 n
-0000164570 00000 n
-0000693632 00000 n
-0000006972 00000 n
-0000007024 00000 n
-0000169677 00000 n
-0000693539 00000 n
-0000007078 00000 n
-0000007143 00000 n
-0000169806 00000 n
-0000693446 00000 n
-0000007197 00000 n
-0000007248 00000 n
-0000173282 00000 n
-0000693353 00000 n
-0000007302 00000 n
-0000007366 00000 n
-0000173411 00000 n
-0000693260 00000 n
-0000007420 00000 n
-0000007467 00000 n
-0000173540 00000 n
-0000693167 00000 n
-0000007521 00000 n
-0000007581 00000 n
-0000173669 00000 n
-0000693074 00000 n
-0000007635 00000 n
-0000007686 00000 n
-0000177685 00000 n
-0000692942 00000 n
-0000007741 00000 n
-0000007806 00000 n
-0000177814 00000 n
-0000692863 00000 n
-0000007866 00000 n
-0000007913 00000 n
-0000184639 00000 n
-0000692784 00000 n
-0000007973 00000 n
-0000008021 00000 n
-0000191045 00000 n
-0000692691 00000 n
-0000008076 00000 n
-0000008126 00000 n
-0000191174 00000 n
-0000692598 00000 n
-0000008181 00000 n
-0000008244 00000 n
-0000191302 00000 n
-0000692505 00000 n
-0000008299 00000 n
-0000008351 00000 n
-0000191430 00000 n
-0000692412 00000 n
-0000008406 00000 n
-0000008471 00000 n
-0000191559 00000 n
-0000692319 00000 n
-0000008526 00000 n
-0000008578 00000 n
-0000197090 00000 n
-0000692186 00000 n
-0000008633 00000 n
-0000008698 00000 n
-0000205563 00000 n
-0000692107 00000 n
-0000008758 00000 n
-0000008802 00000 n
-0000226653 00000 n
-0000692014 00000 n
-0000008862 00000 n
-0000008901 00000 n
-0000226782 00000 n
-0000691921 00000 n
-0000008961 00000 n
-0000009008 00000 n
-0000226911 00000 n
-0000691828 00000 n
-0000009068 00000 n
-0000009111 00000 n
-0000234076 00000 n
-0000691735 00000 n
-0000009171 00000 n
-0000009210 00000 n
-0000234205 00000 n
-0000691642 00000 n
-0000009270 00000 n
-0000009312 00000 n
-0000241282 00000 n
-0000691549 00000 n
-0000009372 00000 n
-0000009415 00000 n
-0000249007 00000 n
-0000691456 00000 n
-0000009475 00000 n
-0000009518 00000 n
-0000249136 00000 n
-0000691363 00000 n
-0000009578 00000 n
-0000009639 00000 n
-0000253047 00000 n
-0000691270 00000 n
-0000009700 00000 n
-0000009752 00000 n
-0000253176 00000 n
-0000691177 00000 n
-0000009813 00000 n
-0000009866 00000 n
-0000256895 00000 n
-0000691084 00000 n
-0000009927 00000 n
-0000009965 00000 n
-0000257024 00000 n
-0000690991 00000 n
-0000010026 00000 n
-0000010078 00000 n
-0000260574 00000 n
-0000690898 00000 n
-0000010139 00000 n
-0000010183 00000 n
-0000263780 00000 n
-0000690805 00000 n
-0000010244 00000 n
-0000010280 00000 n
-0000272162 00000 n
-0000690712 00000 n
-0000010341 00000 n
-0000010404 00000 n
-0000272291 00000 n
-0000690619 00000 n
-0000010465 00000 n
-0000010515 00000 n
-0000278661 00000 n
-0000690540 00000 n
-0000010576 00000 n
-0000010632 00000 n
-0000278789 00000 n
-0000690447 00000 n
-0000010687 00000 n
-0000010751 00000 n
-0000278918 00000 n
-0000690354 00000 n
-0000010806 00000 n
-0000010883 00000 n
-0000282639 00000 n
-0000690261 00000 n
-0000010938 00000 n
-0000010989 00000 n
-0000282768 00000 n
-0000690168 00000 n
-0000011044 00000 n
-0000011108 00000 n
-0000287242 00000 n
-0000690075 00000 n
-0000011163 00000 n
-0000011220 00000 n
-0000291456 00000 n
-0000689982 00000 n
-0000011275 00000 n
-0000011345 00000 n
-0000291585 00000 n
-0000689889 00000 n
-0000011400 00000 n
-0000011449 00000 n
-0000291714 00000 n
-0000689796 00000 n
-0000011504 00000 n
-0000011566 00000 n
-0000293324 00000 n
-0000689703 00000 n
-0000011621 00000 n
-0000011670 00000 n
-0000296381 00000 n
-0000689585 00000 n
-0000011725 00000 n
-0000011787 00000 n
-0000296510 00000 n
-0000689506 00000 n
-0000011847 00000 n
-0000011886 00000 n
-0000305439 00000 n
-0000689413 00000 n
-0000011946 00000 n
-0000011980 00000 n
-0000305568 00000 n
-0000689320 00000 n
-0000012040 00000 n
-0000012081 00000 n
-0000316975 00000 n
-0000689241 00000 n
-0000012141 00000 n
-0000012193 00000 n
-0000324852 00000 n
-0000689109 00000 n
-0000012242 00000 n
-0000012275 00000 n
-0000324981 00000 n
-0000688991 00000 n
-0000012329 00000 n
-0000012401 00000 n
-0000325109 00000 n
-0000688912 00000 n
-0000012460 00000 n
-0000012504 00000 n
-0000332481 00000 n
-0000688833 00000 n
-0000012563 00000 n
-0000012616 00000 n
-0000336242 00000 n
-0000688740 00000 n
-0000012670 00000 n
-0000012720 00000 n
-0000336501 00000 n
-0000688647 00000 n
-0000012774 00000 n
-0000012812 00000 n
-0000339562 00000 n
-0000688554 00000 n
-0000012866 00000 n
-0000012915 00000 n
-0000339821 00000 n
-0000688422 00000 n
-0000012969 00000 n
-0000013021 00000 n
-0000339950 00000 n
-0000688343 00000 n
-0000013080 00000 n
-0000013132 00000 n
-0000340079 00000 n
-0000688250 00000 n
-0000013191 00000 n
-0000013244 00000 n
-0000342834 00000 n
-0000688171 00000 n
-0000013303 00000 n
-0000013352 00000 n
-0000342963 00000 n
-0000688078 00000 n
-0000013406 00000 n
-0000013486 00000 n
-0000347285 00000 n
-0000687999 00000 n
-0000013540 00000 n
-0000013589 00000 n
-0000347414 00000 n
-0000687881 00000 n
-0000013638 00000 n
-0000013678 00000 n
-0000351104 00000 n
-0000687802 00000 n
-0000013737 00000 n
-0000013784 00000 n
-0000351232 00000 n
-0000687684 00000 n
-0000013838 00000 n
-0000013883 00000 n
-0000354556 00000 n
-0000687605 00000 n
-0000013942 00000 n
-0000014001 00000 n
-0000357345 00000 n
-0000687512 00000 n
-0000014060 00000 n
-0000014124 00000 n
-0000357604 00000 n
-0000687419 00000 n
-0000014183 00000 n
-0000014239 00000 n
-0000359262 00000 n
-0000687340 00000 n
-0000014298 00000 n
-0000014360 00000 n
-0000361113 00000 n
-0000687207 00000 n
-0000014407 00000 n
-0000014459 00000 n
-0000361242 00000 n
-0000687128 00000 n
-0000014508 00000 n
-0000014552 00000 n
-0000365428 00000 n
-0000686996 00000 n
-0000014601 00000 n
-0000014642 00000 n
-0000365557 00000 n
-0000686917 00000 n
-0000014696 00000 n
-0000014744 00000 n
-0000365685 00000 n
-0000686838 00000 n
-0000014798 00000 n
-0000014849 00000 n
-0000365814 00000 n
-0000686759 00000 n
-0000014898 00000 n
-0000014945 00000 n
-0000370081 00000 n
-0000686626 00000 n
-0000014992 00000 n
-0000015029 00000 n
-0000370210 00000 n
-0000686508 00000 n
-0000015078 00000 n
-0000015117 00000 n
-0000370339 00000 n
-0000686443 00000 n
-0000015171 00000 n
-0000015249 00000 n
-0000370468 00000 n
-0000686350 00000 n
-0000015298 00000 n
-0000015365 00000 n
-0000370597 00000 n
-0000686271 00000 n
-0000015414 00000 n
-0000015459 00000 n
-0000374036 00000 n
-0000686138 00000 n
-0000015507 00000 n
-0000015539 00000 n
-0000374165 00000 n
-0000686020 00000 n
-0000015588 00000 n
-0000015627 00000 n
-0000374294 00000 n
-0000685955 00000 n
-0000015681 00000 n
-0000015742 00000 n
-0000378059 00000 n
-0000685823 00000 n
-0000015791 00000 n
-0000015848 00000 n
-0000378188 00000 n
-0000685758 00000 n
-0000015902 00000 n
-0000015951 00000 n
-0000378317 00000 n
-0000685640 00000 n
-0000016000 00000 n
-0000016062 00000 n
-0000378446 00000 n
-0000685561 00000 n
-0000016116 00000 n
-0000016171 00000 n
-0000402470 00000 n
-0000685468 00000 n
-0000016225 00000 n
-0000016266 00000 n
-0000402599 00000 n
-0000685389 00000 n
-0000016320 00000 n
-0000016372 00000 n
-0000405301 00000 n
-0000685269 00000 n
-0000016420 00000 n
-0000016454 00000 n
-0000405430 00000 n
-0000685190 00000 n
-0000016503 00000 n
-0000016530 00000 n
-0000423051 00000 n
-0000685097 00000 n
-0000016579 00000 n
-0000016607 00000 n
-0000430724 00000 n
-0000685004 00000 n
-0000016656 00000 n
-0000016693 00000 n
-0000437383 00000 n
-0000684911 00000 n
-0000016742 00000 n
-0000016781 00000 n
-0000446900 00000 n
-0000684818 00000 n
-0000016830 00000 n
-0000016869 00000 n
-0000449758 00000 n
-0000684725 00000 n
-0000016918 00000 n
-0000016957 00000 n
-0000456162 00000 n
-0000684632 00000 n
-0000017006 00000 n
-0000017035 00000 n
-0000465691 00000 n
-0000684539 00000 n
-0000017084 00000 n
-0000017112 00000 n
-0000468846 00000 n
-0000684446 00000 n
-0000017161 00000 n
-0000017194 00000 n
-0000474952 00000 n
-0000684367 00000 n
-0000017244 00000 n
-0000017281 00000 n
-0000017650 00000 n
-0000017772 00000 n
-0000025601 00000 n
-0000017334 00000 n
-0000025475 00000 n
-0000025538 00000 n
-0000680110 00000 n
-0000654167 00000 n
-0000679936 00000 n
-0000681135 00000 n
-0000020635 00000 n
-0000020852 00000 n
-0000020921 00000 n
-0000020990 00000 n
-0000021058 00000 n
-0000021126 00000 n
-0000021175 00000 n
-0000021222 00000 n
-0000021555 00000 n
-0000021577 00000 n
-0000021745 00000 n
-0000021910 00000 n
-0000022079 00000 n
-0000022258 00000 n
-0000022567 00000 n
-0000022727 00000 n
-0000026965 00000 n
-0000026780 00000 n
-0000025701 00000 n
-0000026902 00000 n
-0000652946 00000 n
-0000626425 00000 n
-0000652772 00000 n
-0000625740 00000 n
-0000623595 00000 n
-0000625576 00000 n
-0000038672 00000 n
-0000030021 00000 n
-0000027050 00000 n
-0000038546 00000 n
-0000038609 00000 n
-0000030555 00000 n
-0000030709 00000 n
-0000030866 00000 n
-0000031023 00000 n
-0000031179 00000 n
-0000031336 00000 n
-0000031498 00000 n
-0000031659 00000 n
-0000031820 00000 n
-0000031982 00000 n
-0000032149 00000 n
-0000032316 00000 n
-0000032481 00000 n
-0000032643 00000 n
-0000032809 00000 n
-0000032970 00000 n
-0000033125 00000 n
-0000033282 00000 n
-0000033438 00000 n
-0000033595 00000 n
-0000033752 00000 n
-0000033909 00000 n
-0000034063 00000 n
-0000034219 00000 n
-0000034381 00000 n
-0000034543 00000 n
-0000034699 00000 n
-0000034856 00000 n
-0000035018 00000 n
-0000035185 00000 n
-0000035351 00000 n
-0000035512 00000 n
-0000035667 00000 n
-0000035824 00000 n
-0000035981 00000 n
-0000036143 00000 n
-0000036300 00000 n
-0000036457 00000 n
-0000036619 00000 n
-0000036776 00000 n
-0000036938 00000 n
-0000037105 00000 n
-0000037271 00000 n
-0000037433 00000 n
-0000037595 00000 n
-0000037757 00000 n
-0000037919 00000 n
-0000038081 00000 n
-0000038236 00000 n
-0000038391 00000 n
-0000052047 00000 n
-0000042002 00000 n
-0000038757 00000 n
-0000051984 00000 n
-0000623044 00000 n
-0000605963 00000 n
-0000622860 00000 n
-0000042592 00000 n
-0000042755 00000 n
-0000042917 00000 n
-0000043080 00000 n
-0000043238 00000 n
-0000043401 00000 n
-0000043564 00000 n
-0000043719 00000 n
-0000043877 00000 n
-0000044035 00000 n
-0000044191 00000 n
-0000044349 00000 n
-0000044512 00000 n
-0000044680 00000 n
-0000044848 00000 n
-0000045011 00000 n
-0000045179 00000 n
-0000045347 00000 n
-0000045505 00000 n
-0000045668 00000 n
-0000045831 00000 n
-0000045993 00000 n
-0000046155 00000 n
-0000046318 00000 n
-0000046480 00000 n
-0000046642 00000 n
-0000046805 00000 n
-0000046968 00000 n
-0000047131 00000 n
-0000047300 00000 n
-0000047469 00000 n
-0000047633 00000 n
-0000047796 00000 n
-0000047960 00000 n
-0000048124 00000 n
-0000048287 00000 n
-0000048451 00000 n
-0000048620 00000 n
-0000048789 00000 n
-0000048958 00000 n
-0000049127 00000 n
-0000049296 00000 n
-0000049465 00000 n
-0000049634 00000 n
-0000049803 00000 n
-0000049972 00000 n
-0000050142 00000 n
-0000050312 00000 n
-0000050482 00000 n
-0000050651 00000 n
-0000050821 00000 n
-0000050991 00000 n
-0000051161 00000 n
-0000051330 00000 n
-0000051500 00000 n
-0000051661 00000 n
-0000051822 00000 n
-0000065178 00000 n
-0000055665 00000 n
-0000052145 00000 n
-0000065115 00000 n
-0000056239 00000 n
-0000056402 00000 n
-0000056565 00000 n
-0000056728 00000 n
-0000056891 00000 n
-0000057054 00000 n
-0000057217 00000 n
-0000057379 00000 n
-0000057546 00000 n
-0000057713 00000 n
-0000057881 00000 n
-0000058049 00000 n
-0000058206 00000 n
-0000058368 00000 n
-0000058533 00000 n
-0000058699 00000 n
-0000058861 00000 n
-0000059023 00000 n
-0000059185 00000 n
-0000059346 00000 n
-0000059512 00000 n
-0000059678 00000 n
-0000059845 00000 n
-0000060007 00000 n
-0000060169 00000 n
-0000060326 00000 n
-0000060493 00000 n
-0000060655 00000 n
-0000060822 00000 n
-0000060989 00000 n
-0000605074 00000 n
-0000583742 00000 n
-0000604900 00000 n
-0000061156 00000 n
-0000061323 00000 n
-0000061478 00000 n
-0000061635 00000 n
-0000061792 00000 n
-0000061954 00000 n
-0000062115 00000 n
-0000062271 00000 n
-0000062426 00000 n
-0000062583 00000 n
-0000062745 00000 n
-0000062902 00000 n
-0000063059 00000 n
-0000063215 00000 n
-0000063371 00000 n
-0000063532 00000 n
-0000063689 00000 n
-0000063851 00000 n
-0000064008 00000 n
-0000064170 00000 n
-0000064332 00000 n
-0000064494 00000 n
-0000064650 00000 n
-0000064805 00000 n
-0000064960 00000 n
-0000067337 00000 n
-0000065987 00000 n
-0000065289 00000 n
-0000067274 00000 n
-0000066177 00000 n
-0000066334 00000 n
-0000066491 00000 n
-0000066646 00000 n
-0000066803 00000 n
-0000582776 00000 n
-0000562809 00000 n
-0000582603 00000 n
-0000066959 00000 n
-0000067116 00000 n
-0000070522 00000 n
-0000069712 00000 n
-0000067435 00000 n
-0000069834 00000 n
-0000069958 00000 n
-0000070083 00000 n
-0000070208 00000 n
-0000070333 00000 n
-0000070396 00000 n
-0000070459 00000 n
-0000562030 00000 n
-0000544272 00000 n
-0000561857 00000 n
-0000681253 00000 n
-0000075034 00000 n
-0000073852 00000 n
-0000070646 00000 n
-0000074346 00000 n
-0000074409 00000 n
-0000074472 00000 n
-0000074597 00000 n
-0000074722 00000 n
-0000074847 00000 n
-0000074002 00000 n
-0000074195 00000 n
-0000074972 00000 n
-0000325045 00000 n
-0000378510 00000 n
-0000079689 00000 n
-0000078653 00000 n
-0000075158 00000 n
-0000079126 00000 n
-0000079251 00000 n
-0000078803 00000 n
-0000078965 00000 n
-0000079376 00000 n
-0000079501 00000 n
-0000079626 00000 n
-0000095559 00000 n
-0000082911 00000 n
-0000082351 00000 n
-0000079813 00000 n
-0000082473 00000 n
-0000082598 00000 n
-0000082723 00000 n
-0000082848 00000 n
-0000086338 00000 n
-0000085197 00000 n
-0000083022 00000 n
-0000085651 00000 n
-0000085776 00000 n
-0000085901 00000 n
-0000086026 00000 n
-0000086151 00000 n
-0000085347 00000 n
-0000085499 00000 n
-0000086275 00000 n
-0000278725 00000 n
-0000087424 00000 n
-0000087114 00000 n
-0000086423 00000 n
-0000087236 00000 n
-0000087361 00000 n
-0000089509 00000 n
-0000088824 00000 n
-0000087522 00000 n
-0000088946 00000 n
-0000089071 00000 n
-0000089195 00000 n
-0000089320 00000 n
-0000089446 00000 n
-0000681371 00000 n
-0000092415 00000 n
-0000091547 00000 n
-0000089607 00000 n
-0000091849 00000 n
-0000091975 00000 n
-0000092038 00000 n
-0000092101 00000 n
-0000091689 00000 n
-0000092227 00000 n
-0000092353 00000 n
-0000260638 00000 n
-0000095749 00000 n
-0000095311 00000 n
-0000092526 00000 n
-0000095433 00000 n
-0000543614 00000 n
-0000532029 00000 n
-0000543435 00000 n
-0000095685 00000 n
-0000099539 00000 n
-0000099349 00000 n
-0000095874 00000 n
-0000099474 00000 n
-0000531492 00000 n
-0000521975 00000 n
-0000531313 00000 n
-0000103933 00000 n
-0000103535 00000 n
-0000099705 00000 n
-0000103868 00000 n
-0000103681 00000 n
-0000169741 00000 n
-0000106234 00000 n
-0000105785 00000 n
-0000104072 00000 n
-0000105910 00000 n
-0000106039 00000 n
-0000106104 00000 n
-0000106169 00000 n
-0000108931 00000 n
-0000111478 00000 n
-0000108775 00000 n
-0000106359 00000 n
-0000110897 00000 n
-0000111026 00000 n
-0000111155 00000 n
-0000110574 00000 n
-0000110736 00000 n
-0000521105 00000 n
-0000511685 00000 n
-0000520931 00000 n
-0000511121 00000 n
-0000502035 00000 n
-0000510946 00000 n
-0000111284 00000 n
-0000111413 00000 n
-0000681492 00000 n
-0000110403 00000 n
-0000110461 00000 n
-0000110551 00000 n
-0000205627 00000 n
-0000241346 00000 n
-0000115998 00000 n
-0000115063 00000 n
-0000111634 00000 n
-0000115546 00000 n
-0000115675 00000 n
-0000115219 00000 n
-0000115384 00000 n
-0000115804 00000 n
-0000115933 00000 n
-0000382536 00000 n
-0000119612 00000 n
-0000119232 00000 n
-0000116150 00000 n
-0000119547 00000 n
-0000119379 00000 n
-0000120862 00000 n
-0000120671 00000 n
-0000119737 00000 n
-0000120797 00000 n
-0000123565 00000 n
-0000122988 00000 n
-0000120961 00000 n
-0000123114 00000 n
-0000123243 00000 n
-0000123372 00000 n
-0000123501 00000 n
-0000126787 00000 n
-0000126080 00000 n
-0000123703 00000 n
-0000126206 00000 n
-0000126335 00000 n
-0000126464 00000 n
-0000126593 00000 n
-0000126722 00000 n
-0000131076 00000 n
-0000130178 00000 n
-0000126912 00000 n
-0000130496 00000 n
-0000130625 00000 n
-0000130325 00000 n
-0000130754 00000 n
-0000130883 00000 n
-0000131011 00000 n
-0000681617 00000 n
-0000317039 00000 n
-0000134953 00000 n
-0000134376 00000 n
-0000131201 00000 n
-0000134502 00000 n
-0000134631 00000 n
-0000134759 00000 n
-0000134888 00000 n
-0000138394 00000 n
-0000138074 00000 n
-0000135091 00000 n
-0000138200 00000 n
-0000138329 00000 n
-0000141726 00000 n
-0000140967 00000 n
-0000138506 00000 n
-0000141275 00000 n
-0000141404 00000 n
-0000141114 00000 n
-0000141533 00000 n
-0000141661 00000 n
-0000378252 00000 n
-0000144466 00000 n
-0000143888 00000 n
-0000141894 00000 n
-0000144014 00000 n
-0000144143 00000 n
-0000144272 00000 n
-0000144401 00000 n
-0000144906 00000 n
-0000144715 00000 n
-0000144565 00000 n
-0000144841 00000 n
-0000148908 00000 n
-0000148142 00000 n
-0000144948 00000 n
-0000148456 00000 n
-0000148585 00000 n
-0000148713 00000 n
-0000148778 00000 n
-0000148843 00000 n
-0000148289 00000 n
-0000681742 00000 n
-0000153404 00000 n
-0000153596 00000 n
-0000153149 00000 n
-0000149007 00000 n
-0000153275 00000 n
-0000153531 00000 n
-0000157437 00000 n
-0000156860 00000 n
-0000153721 00000 n
-0000156986 00000 n
-0000157114 00000 n
-0000157243 00000 n
-0000157372 00000 n
-0000160044 00000 n
-0000161423 00000 n
-0000159918 00000 n
-0000157575 00000 n
-0000160970 00000 n
-0000161099 00000 n
-0000161228 00000 n
-0000161293 00000 n
-0000161358 00000 n
-0000164699 00000 n
-0000163993 00000 n
-0000161578 00000 n
-0000164119 00000 n
-0000164247 00000 n
-0000164376 00000 n
-0000164440 00000 n
-0000164505 00000 n
-0000164634 00000 n
-0000169934 00000 n
-0000169146 00000 n
-0000164811 00000 n
-0000169612 00000 n
-0000169302 00000 n
-0000169453 00000 n
-0000169870 00000 n
-0000480662 00000 n
-0000173798 00000 n
-0000172527 00000 n
-0000170072 00000 n
-0000173217 00000 n
-0000173346 00000 n
-0000173475 00000 n
-0000173604 00000 n
-0000172692 00000 n
-0000172844 00000 n
-0000173030 00000 n
-0000173733 00000 n
-0000681867 00000 n
-0000177943 00000 n
-0000177494 00000 n
-0000173924 00000 n
-0000177620 00000 n
-0000177749 00000 n
-0000177878 00000 n
-0000181864 00000 n
-0000181485 00000 n
-0000178068 00000 n
-0000181799 00000 n
-0000181632 00000 n
-0000184703 00000 n
-0000184897 00000 n
-0000184448 00000 n
-0000181976 00000 n
-0000184574 00000 n
-0000184768 00000 n
-0000184833 00000 n
-0000188365 00000 n
-0000188174 00000 n
-0000185009 00000 n
-0000188300 00000 n
-0000191687 00000 n
-0000190520 00000 n
-0000188477 00000 n
-0000190980 00000 n
-0000191109 00000 n
-0000191238 00000 n
-0000190676 00000 n
-0000190830 00000 n
-0000191366 00000 n
-0000191494 00000 n
-0000191622 00000 n
-0000193160 00000 n
-0000192969 00000 n
-0000191799 00000 n
-0000193095 00000 n
-0000681992 00000 n
-0000194678 00000 n
-0000194487 00000 n
-0000193259 00000 n
-0000194613 00000 n
-0000197219 00000 n
-0000196899 00000 n
-0000194777 00000 n
-0000197025 00000 n
-0000197154 00000 n
-0000201779 00000 n
-0000201411 00000 n
-0000197344 00000 n
-0000201714 00000 n
-0000201558 00000 n
-0000351167 00000 n
-0000205692 00000 n
-0000205372 00000 n
-0000201904 00000 n
-0000205498 00000 n
-0000209837 00000 n
-0000209341 00000 n
-0000205817 00000 n
-0000209642 00000 n
-0000209707 00000 n
-0000209772 00000 n
-0000209488 00000 n
-0000214889 00000 n
-0000213755 00000 n
-0000209962 00000 n
-0000214824 00000 n
-0000213938 00000 n
-0000214095 00000 n
-0000214280 00000 n
-0000214454 00000 n
-0000214639 00000 n
-0000682117 00000 n
-0000282832 00000 n
-0000219101 00000 n
-0000218910 00000 n
-0000215070 00000 n
-0000219036 00000 n
-0000222728 00000 n
-0000222537 00000 n
-0000219226 00000 n
-0000222663 00000 n
-0000227040 00000 n
-0000226095 00000 n
-0000222827 00000 n
-0000226588 00000 n
-0000226717 00000 n
-0000226251 00000 n
-0000226846 00000 n
-0000226975 00000 n
-0000226421 00000 n
-0000293388 00000 n
-0000230919 00000 n
-0000230357 00000 n
-0000227209 00000 n
-0000230854 00000 n
-0000230513 00000 n
-0000230683 00000 n
-0000365878 00000 n
-0000234334 00000 n
-0000233885 00000 n
-0000231088 00000 n
-0000234011 00000 n
-0000234140 00000 n
-0000234269 00000 n
-0000237453 00000 n
-0000237262 00000 n
-0000234446 00000 n
-0000237388 00000 n
-0000682242 00000 n
-0000241410 00000 n
-0000241091 00000 n
-0000237622 00000 n
-0000241217 00000 n
-0000244971 00000 n
-0000244780 00000 n
-0000241579 00000 n
-0000244906 00000 n
-0000249264 00000 n
-0000248451 00000 n
-0000245140 00000 n
-0000248942 00000 n
-0000249071 00000 n
-0000248607 00000 n
-0000249200 00000 n
-0000248768 00000 n
-0000253305 00000 n
-0000252680 00000 n
-0000249419 00000 n
-0000252982 00000 n
-0000253111 00000 n
-0000252827 00000 n
-0000253240 00000 n
-0000257153 00000 n
-0000256359 00000 n
-0000253417 00000 n
-0000256830 00000 n
-0000256959 00000 n
-0000257088 00000 n
-0000256515 00000 n
-0000256677 00000 n
-0000260701 00000 n
-0000260193 00000 n
-0000257322 00000 n
-0000260509 00000 n
-0000260340 00000 n
-0000682367 00000 n
-0000263909 00000 n
-0000263459 00000 n
-0000260827 00000 n
-0000263585 00000 n
-0000263650 00000 n
-0000263715 00000 n
-0000263844 00000 n
-0000268516 00000 n
-0000267972 00000 n
-0000264091 00000 n
-0000268451 00000 n
-0000268128 00000 n
-0000268289 00000 n
-0000501680 00000 n
-0000499683 00000 n
-0000501515 00000 n
-0000347349 00000 n
-0000272420 00000 n
-0000271783 00000 n
-0000268642 00000 n
-0000272097 00000 n
-0000272226 00000 n
-0000271930 00000 n
-0000272355 00000 n
-0000291649 00000 n
-0000275075 00000 n
-0000274884 00000 n
-0000272545 00000 n
-0000275010 00000 n
-0000279047 00000 n
-0000278470 00000 n
-0000275243 00000 n
-0000278596 00000 n
-0000278853 00000 n
-0000278982 00000 n
-0000282897 00000 n
-0000282448 00000 n
-0000279159 00000 n
-0000282574 00000 n
-0000282703 00000 n
-0000682492 00000 n
-0000287371 00000 n
-0000286711 00000 n
-0000283009 00000 n
-0000287177 00000 n
-0000286867 00000 n
-0000287018 00000 n
-0000287306 00000 n
-0000291843 00000 n
-0000291090 00000 n
-0000287483 00000 n
-0000291391 00000 n
-0000291520 00000 n
-0000291237 00000 n
-0000291778 00000 n
-0000293453 00000 n
-0000293133 00000 n
-0000291955 00000 n
-0000293259 00000 n
-0000294950 00000 n
-0000294759 00000 n
-0000293565 00000 n
-0000294885 00000 n
-0000296766 00000 n
-0000296190 00000 n
-0000295049 00000 n
-0000296316 00000 n
-0000296445 00000 n
-0000296574 00000 n
-0000296638 00000 n
-0000296702 00000 n
-0000300617 00000 n
-0000300426 00000 n
-0000296878 00000 n
-0000300552 00000 n
-0000682617 00000 n
-0000305697 00000 n
-0000304031 00000 n
-0000300729 00000 n
-0000305374 00000 n
-0000305503 00000 n
-0000305632 00000 n
-0000304232 00000 n
-0000304394 00000 n
-0000304556 00000 n
-0000304718 00000 n
-0000304880 00000 n
-0000305041 00000 n
-0000305212 00000 n
-0000310843 00000 n
-0000308932 00000 n
-0000305809 00000 n
-0000310778 00000 n
-0000309160 00000 n
-0000309322 00000 n
-0000309482 00000 n
-0000309643 00000 n
-0000309806 00000 n
-0000309969 00000 n
-0000310132 00000 n
-0000310295 00000 n
-0000310458 00000 n
-0000310618 00000 n
-0000317103 00000 n
-0000313735 00000 n
-0000310968 00000 n
-0000316910 00000 n
-0000314035 00000 n
-0000314197 00000 n
-0000314359 00000 n
-0000314522 00000 n
-0000314676 00000 n
-0000314839 00000 n
-0000314992 00000 n
-0000315154 00000 n
-0000315315 00000 n
-0000315477 00000 n
-0000315637 00000 n
-0000315799 00000 n
-0000315961 00000 n
-0000316123 00000 n
-0000316277 00000 n
-0000316438 00000 n
-0000316593 00000 n
-0000316756 00000 n
-0000321050 00000 n
-0000320729 00000 n
-0000317215 00000 n
-0000320855 00000 n
-0000320920 00000 n
-0000320985 00000 n
-0000325498 00000 n
-0000324300 00000 n
-0000321189 00000 n
-0000324787 00000 n
-0000324916 00000 n
-0000325173 00000 n
-0000324456 00000 n
-0000324626 00000 n
-0000325238 00000 n
-0000325303 00000 n
-0000325368 00000 n
-0000325433 00000 n
-0000328734 00000 n
-0000328543 00000 n
-0000325610 00000 n
-0000328669 00000 n
-0000682742 00000 n
-0000332740 00000 n
-0000332160 00000 n
-0000328833 00000 n
-0000332286 00000 n
-0000332351 00000 n
-0000332416 00000 n
-0000332545 00000 n
-0000332610 00000 n
-0000332675 00000 n
-0000336760 00000 n
-0000335921 00000 n
-0000332852 00000 n
-0000336047 00000 n
-0000336112 00000 n
-0000336177 00000 n
-0000336306 00000 n
-0000336371 00000 n
-0000336436 00000 n
-0000336565 00000 n
-0000336630 00000 n
-0000336695 00000 n
-0000340207 00000 n
-0000339371 00000 n
-0000336885 00000 n
-0000339497 00000 n
-0000339626 00000 n
-0000339691 00000 n
-0000339756 00000 n
-0000339885 00000 n
-0000340014 00000 n
-0000340143 00000 n
-0000343222 00000 n
-0000342643 00000 n
-0000340417 00000 n
-0000342769 00000 n
-0000342898 00000 n
-0000343027 00000 n
-0000343092 00000 n
-0000343157 00000 n
-0000347671 00000 n
-0000347094 00000 n
-0000343405 00000 n
-0000347220 00000 n
-0000347478 00000 n
-0000347543 00000 n
-0000347607 00000 n
-0000351361 00000 n
-0000350732 00000 n
-0000347796 00000 n
-0000351039 00000 n
-0000350879 00000 n
-0000351296 00000 n
-0000682867 00000 n
-0000354815 00000 n
-0000354365 00000 n
-0000351473 00000 n
-0000354491 00000 n
-0000354620 00000 n
-0000354685 00000 n
-0000354750 00000 n
-0000357862 00000 n
-0000357154 00000 n
-0000354927 00000 n
-0000357280 00000 n
-0000357409 00000 n
-0000357474 00000 n
-0000357539 00000 n
-0000357667 00000 n
-0000357732 00000 n
-0000357797 00000 n
-0000359391 00000 n
-0000359071 00000 n
-0000357974 00000 n
-0000359197 00000 n
-0000499402 00000 n
-0000492118 00000 n
-0000499222 00000 n
-0000359326 00000 n
-0000361370 00000 n
-0000360922 00000 n
-0000359517 00000 n
-0000361048 00000 n
-0000361177 00000 n
-0000361306 00000 n
-0000365943 00000 n
-0000365000 00000 n
-0000361482 00000 n
-0000365363 00000 n
-0000491797 00000 n
-0000482584 00000 n
-0000491611 00000 n
-0000365147 00000 n
-0000365492 00000 n
-0000365620 00000 n
-0000365749 00000 n
-0000366985 00000 n
-0000366794 00000 n
-0000366180 00000 n
-0000366920 00000 n
-0000682992 00000 n
-0000367412 00000 n
-0000367221 00000 n
-0000367071 00000 n
-0000367347 00000 n
-0000370725 00000 n
-0000369499 00000 n
-0000367454 00000 n
-0000370016 00000 n
-0000370145 00000 n
-0000370274 00000 n
-0000370403 00000 n
-0000370532 00000 n
-0000370661 00000 n
-0000369655 00000 n
-0000369827 00000 n
-0000371179 00000 n
-0000370988 00000 n
-0000370838 00000 n
-0000371114 00000 n
-0000374423 00000 n
-0000373845 00000 n
-0000371221 00000 n
-0000373971 00000 n
-0000374100 00000 n
-0000374229 00000 n
-0000374358 00000 n
-0000378702 00000 n
-0000377483 00000 n
-0000374509 00000 n
-0000377994 00000 n
-0000378123 00000 n
-0000378381 00000 n
-0000377639 00000 n
-0000377818 00000 n
-0000378574 00000 n
-0000378638 00000 n
-0000385588 00000 n
-0000381760 00000 n
-0000378855 00000 n
-0000381886 00000 n
-0000381951 00000 n
-0000382016 00000 n
-0000382081 00000 n
-0000382146 00000 n
-0000382211 00000 n
-0000382276 00000 n
-0000382341 00000 n
-0000382406 00000 n
-0000382471 00000 n
-0000382601 00000 n
-0000382666 00000 n
-0000382731 00000 n
-0000382796 00000 n
-0000382861 00000 n
-0000382926 00000 n
-0000382991 00000 n
-0000383056 00000 n
-0000383121 00000 n
-0000383186 00000 n
-0000383251 00000 n
-0000383316 00000 n
-0000383381 00000 n
-0000383446 00000 n
-0000383511 00000 n
-0000383576 00000 n
-0000383641 00000 n
-0000383706 00000 n
-0000383771 00000 n
-0000383836 00000 n
-0000383901 00000 n
-0000383966 00000 n
-0000384031 00000 n
-0000384096 00000 n
-0000384160 00000 n
-0000384225 00000 n
-0000384290 00000 n
-0000384355 00000 n
-0000384420 00000 n
-0000384485 00000 n
-0000384550 00000 n
-0000384615 00000 n
-0000384680 00000 n
-0000384745 00000 n
-0000384810 00000 n
-0000384875 00000 n
-0000384940 00000 n
-0000385005 00000 n
-0000385070 00000 n
-0000385135 00000 n
-0000385200 00000 n
-0000385265 00000 n
-0000385330 00000 n
-0000385395 00000 n
-0000385460 00000 n
-0000385524 00000 n
-0000683117 00000 n
-0000392234 00000 n
-0000388670 00000 n
-0000385700 00000 n
-0000388796 00000 n
-0000388861 00000 n
-0000388926 00000 n
-0000388991 00000 n
-0000389056 00000 n
-0000389121 00000 n
-0000389186 00000 n
-0000389251 00000 n
-0000389316 00000 n
-0000389381 00000 n
-0000389446 00000 n
-0000389511 00000 n
-0000389575 00000 n
-0000389640 00000 n
-0000389705 00000 n
-0000389770 00000 n
-0000389835 00000 n
-0000389900 00000 n
-0000389965 00000 n
-0000390030 00000 n
-0000390095 00000 n
-0000390160 00000 n
-0000390225 00000 n
-0000390290 00000 n
-0000390354 00000 n
-0000390419 00000 n
-0000390484 00000 n
-0000390549 00000 n
-0000390614 00000 n
-0000390679 00000 n
-0000390744 00000 n
-0000390809 00000 n
-0000390874 00000 n
-0000390939 00000 n
-0000391004 00000 n
-0000391069 00000 n
-0000391134 00000 n
-0000391199 00000 n
-0000391264 00000 n
-0000391329 00000 n
-0000391393 00000 n
-0000391457 00000 n
-0000391521 00000 n
-0000391586 00000 n
-0000391651 00000 n
-0000391716 00000 n
-0000391781 00000 n
-0000391846 00000 n
-0000391911 00000 n
-0000391976 00000 n
-0000392041 00000 n
-0000392106 00000 n
-0000392170 00000 n
-0000398410 00000 n
-0000394972 00000 n
-0000392346 00000 n
-0000395098 00000 n
-0000395163 00000 n
-0000395228 00000 n
-0000395293 00000 n
-0000395358 00000 n
-0000395423 00000 n
-0000395488 00000 n
-0000395553 00000 n
-0000395618 00000 n
-0000395683 00000 n
-0000395748 00000 n
-0000395813 00000 n
-0000395878 00000 n
-0000395943 00000 n
-0000396008 00000 n
-0000396073 00000 n
-0000396138 00000 n
-0000396203 00000 n
-0000396268 00000 n
-0000396333 00000 n
-0000396398 00000 n
-0000396463 00000 n
-0000396528 00000 n
-0000396593 00000 n
-0000396658 00000 n
-0000396723 00000 n
-0000396788 00000 n
-0000396853 00000 n
-0000396918 00000 n
-0000396983 00000 n
-0000397048 00000 n
-0000397113 00000 n
-0000397178 00000 n
-0000397243 00000 n
-0000397307 00000 n
-0000397372 00000 n
-0000397437 00000 n
-0000397502 00000 n
-0000397567 00000 n
-0000397632 00000 n
-0000397697 00000 n
-0000397762 00000 n
-0000397827 00000 n
-0000397892 00000 n
-0000397957 00000 n
-0000398022 00000 n
-0000398087 00000 n
-0000398152 00000 n
-0000398217 00000 n
-0000398282 00000 n
-0000398346 00000 n
-0000402988 00000 n
-0000400724 00000 n
-0000398522 00000 n
-0000400850 00000 n
-0000400915 00000 n
-0000400980 00000 n
-0000401045 00000 n
-0000401110 00000 n
-0000401175 00000 n
-0000401240 00000 n
-0000401305 00000 n
-0000401370 00000 n
-0000401435 00000 n
-0000401500 00000 n
-0000401565 00000 n
-0000401630 00000 n
-0000401695 00000 n
-0000401757 00000 n
-0000401821 00000 n
-0000401886 00000 n
-0000401950 00000 n
-0000402015 00000 n
-0000402080 00000 n
-0000402145 00000 n
-0000402210 00000 n
-0000402275 00000 n
-0000402340 00000 n
-0000402405 00000 n
-0000402534 00000 n
-0000402663 00000 n
-0000402728 00000 n
-0000402793 00000 n
-0000402858 00000 n
-0000402923 00000 n
-0000405754 00000 n
-0000405110 00000 n
-0000403113 00000 n
-0000405236 00000 n
-0000405365 00000 n
-0000405494 00000 n
-0000405559 00000 n
-0000405624 00000 n
-0000405689 00000 n
-0000410239 00000 n
-0000409918 00000 n
-0000405867 00000 n
-0000410044 00000 n
-0000410109 00000 n
-0000410174 00000 n
-0000413490 00000 n
-0000413234 00000 n
-0000410392 00000 n
-0000413360 00000 n
-0000413425 00000 n
-0000683242 00000 n
-0000416739 00000 n
-0000416548 00000 n
-0000413629 00000 n
-0000416674 00000 n
-0000420468 00000 n
-0000420212 00000 n
-0000416865 00000 n
-0000420338 00000 n
-0000420403 00000 n
-0000423308 00000 n
-0000422600 00000 n
-0000420607 00000 n
-0000422726 00000 n
-0000422791 00000 n
-0000422856 00000 n
-0000422921 00000 n
-0000422986 00000 n
-0000423115 00000 n
-0000423180 00000 n
-0000423244 00000 n
-0000427982 00000 n
-0000427726 00000 n
-0000423447 00000 n
-0000427852 00000 n
-0000427917 00000 n
-0000431112 00000 n
-0000430338 00000 n
-0000428108 00000 n
-0000430464 00000 n
-0000430529 00000 n
-0000430594 00000 n
-0000430659 00000 n
-0000430788 00000 n
-0000430853 00000 n
-0000430918 00000 n
-0000430983 00000 n
-0000431047 00000 n
-0000434559 00000 n
-0000434304 00000 n
-0000431265 00000 n
-0000434430 00000 n
-0000434495 00000 n
-0000683367 00000 n
-0000437707 00000 n
-0000436997 00000 n
-0000434698 00000 n
-0000437123 00000 n
-0000437188 00000 n
-0000437253 00000 n
-0000437318 00000 n
-0000437447 00000 n
-0000437512 00000 n
-0000437577 00000 n
-0000437642 00000 n
-0000441400 00000 n
-0000441144 00000 n
-0000437872 00000 n
-0000441270 00000 n
-0000441335 00000 n
-0000444839 00000 n
-0000444583 00000 n
-0000441526 00000 n
-0000444709 00000 n
-0000444774 00000 n
-0000447289 00000 n
-0000446581 00000 n
-0000444978 00000 n
-0000446707 00000 n
-0000446772 00000 n
-0000446837 00000 n
-0000446964 00000 n
-0000447029 00000 n
-0000447094 00000 n
-0000447159 00000 n
-0000447224 00000 n
-0000450082 00000 n
-0000449373 00000 n
-0000447442 00000 n
-0000449499 00000 n
-0000449564 00000 n
-0000449629 00000 n
-0000449693 00000 n
-0000449822 00000 n
-0000449887 00000 n
-0000449952 00000 n
-0000450017 00000 n
-0000453260 00000 n
-0000453004 00000 n
-0000450221 00000 n
-0000453130 00000 n
-0000453195 00000 n
-0000683492 00000 n
-0000456417 00000 n
-0000455777 00000 n
-0000453386 00000 n
-0000455903 00000 n
-0000455968 00000 n
-0000456033 00000 n
-0000456097 00000 n
-0000456226 00000 n
-0000456289 00000 n
-0000456353 00000 n
-0000459720 00000 n
-0000459399 00000 n
-0000456570 00000 n
-0000459525 00000 n
-0000459590 00000 n
-0000459655 00000 n
-0000462747 00000 n
-0000462363 00000 n
-0000459903 00000 n
-0000462489 00000 n
-0000462554 00000 n
-0000462619 00000 n
-0000462684 00000 n
-0000466079 00000 n
-0000465370 00000 n
-0000462971 00000 n
-0000465496 00000 n
-0000465561 00000 n
-0000465626 00000 n
-0000465755 00000 n
-0000465820 00000 n
-0000465884 00000 n
-0000465949 00000 n
-0000466014 00000 n
-0000469104 00000 n
-0000468461 00000 n
-0000466245 00000 n
-0000468587 00000 n
-0000468652 00000 n
-0000468717 00000 n
-0000468782 00000 n
-0000468910 00000 n
-0000468975 00000 n
-0000469040 00000 n
-0000472572 00000 n
-0000472251 00000 n
-0000469270 00000 n
-0000472377 00000 n
-0000472442 00000 n
-0000472507 00000 n
-0000683617 00000 n
-0000475144 00000 n
-0000474566 00000 n
-0000472698 00000 n
-0000474692 00000 n
-0000474757 00000 n
-0000474822 00000 n
-0000474887 00000 n
-0000475016 00000 n
-0000475080 00000 n
-0000478944 00000 n
-0000478559 00000 n
-0000475282 00000 n
-0000478685 00000 n
-0000478750 00000 n
-0000478815 00000 n
-0000478880 00000 n
-0000480510 00000 n
-0000480126 00000 n
-0000479084 00000 n
-0000480252 00000 n
-0000480317 00000 n
-0000480380 00000 n
-0000480445 00000 n
-0000480695 00000 n
-0000492039 00000 n
-0000499628 00000 n
-0000501927 00000 n
-0000501896 00000 n
-0000511420 00000 n
-0000521533 00000 n
-0000531778 00000 n
-0000543985 00000 n
-0000562476 00000 n
-0000583357 00000 n
-0000605501 00000 n
-0000623396 00000 n
-0000626227 00000 n
-0000625997 00000 n
-0000653534 00000 n
-0000680645 00000 n
-0000683724 00000 n
-0000683847 00000 n
-0000683973 00000 n
-0000684099 00000 n
-0000684198 00000 n
-0000684290 00000 n
-0000700347 00000 n
-0000718281 00000 n
-0000718322 00000 n
-0000718362 00000 n
-0000718496 00000 n
-trailer
-<<
-/Size 2036
-/Root 2034 0 R
-/Info 2035 0 R
-/ID [<D1914EAD9EF2898DAF968634948E3A4F> <D1914EAD9EF2898DAF968634948E3A4F>]
->>
-startxref
-718754
-%%EOF
diff --git a/doc/arm/man.dig.html b/doc/arm/man.dig.html
index d27cce12..af7f071e 100644
--- a/doc/arm/man.dig.html
+++ b/doc/arm/man.dig.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.dig.html,v 1.60.18.17 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.dig.html,v 1.60.18.19 2008/09/05 01:42:59 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -52,7 +52,7 @@
<div class="cmdsynopsis"><p><code class="command">dig</code> [global-queryopt...] [query...]</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2563916"></a><h2>DESCRIPTION</h2>
+<a name="id2563952"></a><h2>DESCRIPTION</h2>
<p><span><strong class="command">dig</strong></span>
(domain information groper) is a flexible tool
for interrogating DNS name servers. It performs DNS lookups and
@@ -98,7 +98,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2569671"></a><h2>SIMPLE USAGE</h2>
+<a name="id2569706"></a><h2>SIMPLE USAGE</h2>
<p>
A typical invocation of <span><strong class="command">dig</strong></span> looks like:
</p>
@@ -144,7 +144,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2569782"></a><h2>OPTIONS</h2>
+<a name="id2569817"></a><h2>OPTIONS</h2>
<p>
The <code class="option">-b</code> option sets the source IP address of the query
to <em class="parameter"><code>address</code></em>. This must be a valid
@@ -244,7 +244,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2628005"></a><h2>QUERY OPTIONS</h2>
+<a name="id2628040"></a><h2>QUERY OPTIONS</h2>
<p><span><strong class="command">dig</strong></span>
provides a number of query options which affect
the way in which lookups are made and the results displayed. Some of
@@ -567,7 +567,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2629005"></a><h2>MULTIPLE QUERIES</h2>
+<a name="id2629041"></a><h2>MULTIPLE QUERIES</h2>
<p>
The BIND 9 implementation of <span><strong class="command">dig </strong></span>
supports
@@ -613,7 +613,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2629159"></a><h2>IDN SUPPORT</h2>
+<a name="id2629126"></a><h2>IDN SUPPORT</h2>
<p>
If <span><strong class="command">dig</strong></span> has been built with IDN (internationalized
domain name) support, it can accept and display non-ASCII domain names.
@@ -627,14 +627,14 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2629188"></a><h2>FILES</h2>
+<a name="id2629155"></a><h2>FILES</h2>
<p><code class="filename">/etc/resolv.conf</code>
</p>
<p><code class="filename">${HOME}/.digrc</code>
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2629209"></a><h2>SEE ALSO</h2>
+<a name="id2629176"></a><h2>SEE ALSO</h2>
<p><span class="citerefentry"><span class="refentrytitle">host</span>(1)</span>,
<span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
<span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
@@ -642,7 +642,7 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2629246"></a><h2>BUGS</h2>
+<a name="id2629213"></a><h2>BUGS</h2>
<p>
There are probably too many query options.
</p>
diff --git a/doc/arm/man.dnssec-keygen.html b/doc/arm/man.dnssec-keygen.html
index 7018f355..b9f0ef8b 100644
--- a/doc/arm/man.dnssec-keygen.html
+++ b/doc/arm/man.dnssec-keygen.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.dnssec-keygen.html,v 1.60.18.18 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.dnssec-keygen.html,v 1.60.18.20 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
<div class="cmdsynopsis"><p><code class="command">dnssec-keygen</code> {-a <em class="replaceable"><code>algorithm</code></em>} {-b <em class="replaceable"><code>keysize</code></em>} {-n <em class="replaceable"><code>nametype</code></em>} [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-e</code>] [<code class="option">-f <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-g <em class="replaceable"><code>generator</code></em></code>] [<code class="option">-h</code>] [<code class="option">-k</code>] [<code class="option">-p <em class="replaceable"><code>protocol</code></em></code>] [<code class="option">-r <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-s <em class="replaceable"><code>strength</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] {name}</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2602090"></a><h2>DESCRIPTION</h2>
+<a name="id2602330"></a><h2>DESCRIPTION</h2>
<p><span><strong class="command">dnssec-keygen</strong></span>
generates keys for DNSSEC (Secure DNS), as defined in RFC 2535
and RFC 4034. It can also generate keys for use with
@@ -58,7 +58,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2602104"></a><h2>OPTIONS</h2>
+<a name="id2602344"></a><h2>OPTIONS</h2>
<div class="variablelist"><dl>
<dt><span class="term">-a <em class="replaceable"><code>algorithm</code></em></span></dt>
<dd>
@@ -166,7 +166,7 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2602448"></a><h2>GENERATED KEYS</h2>
+<a name="id2602688"></a><h2>GENERATED KEYS</h2>
<p>
When <span><strong class="command">dnssec-keygen</strong></span> completes
successfully,
@@ -212,7 +212,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2604398"></a><h2>EXAMPLE</h2>
+<a name="id2602795"></a><h2>EXAMPLE</h2>
<p>
To generate a 768-bit DSA key for the domain
<strong class="userinput"><code>example.com</code></strong>, the following command would be
@@ -233,7 +233,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2604455"></a><h2>SEE ALSO</h2>
+<a name="id2604490"></a><h2>SEE ALSO</h2>
<p><span class="citerefentry"><span class="refentrytitle">dnssec-signzone</span>(8)</span>,
<em class="citetitle">BIND 9 Administrator Reference Manual</em>,
<em class="citetitle">RFC 2535</em>,
@@ -242,7 +242,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2604486"></a><h2>AUTHOR</h2>
+<a name="id2604521"></a><h2>AUTHOR</h2>
<p><span class="corpauthor">Internet Systems Consortium</span>
</p>
</div>
diff --git a/doc/arm/man.dnssec-signzone.html b/doc/arm/man.dnssec-signzone.html
index be4a7a40..14650e5e 100644
--- a/doc/arm/man.dnssec-signzone.html
+++ b/doc/arm/man.dnssec-signzone.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.dnssec-signzone.html,v 1.58.18.19 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.dnssec-signzone.html,v 1.58.18.21 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
<div class="cmdsynopsis"><p><code class="command">dnssec-signzone</code> [<code class="option">-a</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-d <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-e <em class="replaceable"><code>end-time</code></em></code>] [<code class="option">-f <em class="replaceable"><code>output-file</code></em></code>] [<code class="option">-g</code>] [<code class="option">-h</code>] [<code class="option">-k <em class="replaceable"><code>key</code></em></code>] [<code class="option">-l <em class="replaceable"><code>domain</code></em></code>] [<code class="option">-i <em class="replaceable"><code>interval</code></em></code>] [<code class="option">-I <em class="replaceable"><code>input-format</code></em></code>] [<code class="option">-j <em class="replaceable"><code>jitter</code></em></code>] [<code class="option">-N <em class="replaceable"><code>soa-serial-format</code></em></code>] [<code class="option">-o <em class="replaceable"><code>origin</code></em></code>] [<code class="option">-O <em class="replaceable"><code>output-format</code></em></code>] [<code class="option">-p</code>] [<code class="option">-r <em class="replaceable"><code>randomdev</code></em></code>] [<code class="option">-s <em class="replaceable"><code>start-time</code></em></code>] [<code class="option">-t</code>] [<code class="option">-v <em class="replaceable"><code>level</code></em></code>] [<code class="option">-z</code>] {zonefile} [key...]</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2602810"></a><h2>DESCRIPTION</h2>
+<a name="id2603050"></a><h2>DESCRIPTION</h2>
<p><span><strong class="command">dnssec-signzone</strong></span>
signs a zone. It generates
NSEC and RRSIG records and produces a signed version of the
@@ -61,7 +61,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2602829"></a><h2>OPTIONS</h2>
+<a name="id2603069"></a><h2>OPTIONS</h2>
<div class="variablelist"><dl>
<dt><span class="term">-a</span></dt>
<dd><p>
@@ -259,7 +259,7 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2657856"></a><h2>EXAMPLE</h2>
+<a name="id2657891"></a><h2>EXAMPLE</h2>
<p>
The following command signs the <strong class="userinput"><code>example.com</code></strong>
zone with the DSA key generated by <span><strong class="command">dnssec-keygen</strong></span>
@@ -288,14 +288,14 @@ db.example.com.signed
%</pre>
</div>
<div class="refsect1" lang="en">
-<a name="id2657996"></a><h2>SEE ALSO</h2>
+<a name="id2658032"></a><h2>SEE ALSO</h2>
<p><span class="citerefentry"><span class="refentrytitle">dnssec-keygen</span>(8)</span>,
<em class="citetitle">BIND 9 Administrator Reference Manual</em>,
<em class="citetitle">RFC 2535</em>.
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2658021"></a><h2>AUTHOR</h2>
+<a name="id2658056"></a><h2>AUTHOR</h2>
<p><span class="corpauthor">Internet Systems Consortium</span>
</p>
</div>
diff --git a/doc/arm/man.host.html b/doc/arm/man.host.html
index 44293109..f1258b09 100644
--- a/doc/arm/man.host.html
+++ b/doc/arm/man.host.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.host.html,v 1.58.18.18 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.host.html,v 1.58.18.19 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
<div class="cmdsynopsis"><p><code class="command">host</code> [<code class="option">-aCdlnrsTwv</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-N <em class="replaceable"><code>ndots</code></em></code>] [<code class="option">-R <em class="replaceable"><code>number</code></em></code>] [<code class="option">-t <em class="replaceable"><code>type</code></em></code>] [<code class="option">-W <em class="replaceable"><code>wait</code></em></code>] [<code class="option">-m <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-4</code>] [<code class="option">-6</code>] {name} [server]</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2601059"></a><h2>DESCRIPTION</h2>
+<a name="id2601367"></a><h2>DESCRIPTION</h2>
<p><span><strong class="command">host</strong></span>
is a simple utility for performing DNS lookups.
It is normally used to convert names to IP addresses and vice versa.
@@ -202,7 +202,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2601709"></a><h2>IDN SUPPORT</h2>
+<a name="id2602018"></a><h2>IDN SUPPORT</h2>
<p>
If <span><strong class="command">host</strong></span> has been built with IDN (internationalized
domain name) support, it can accept and display non-ASCII domain names.
@@ -216,12 +216,12 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2601738"></a><h2>FILES</h2>
+<a name="id2602046"></a><h2>FILES</h2>
<p><code class="filename">/etc/resolv.conf</code>
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2601752"></a><h2>SEE ALSO</h2>
+<a name="id2602060"></a><h2>SEE ALSO</h2>
<p><span class="citerefentry"><span class="refentrytitle">dig</span>(1)</span>,
<span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>.
</p>
diff --git a/doc/arm/man.named-checkconf.html b/doc/arm/man.named-checkconf.html
index ec7b8c2e..1bd19e6e 100644
--- a/doc/arm/man.named-checkconf.html
+++ b/doc/arm/man.named-checkconf.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.named-checkconf.html,v 1.57.18.18 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.named-checkconf.html,v 1.57.18.20 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,14 +50,14 @@
<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">-z</code>]</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2603690"></a><h2>DESCRIPTION</h2>
+<a name="id2603725"></a><h2>DESCRIPTION</h2>
<p><span><strong class="command">named-checkconf</strong></span>
checks the syntax, but not the semantics, of a named
configuration file.
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2603704"></a><h2>OPTIONS</h2>
+<a name="id2603739"></a><h2>OPTIONS</h2>
<div class="variablelist"><dl>
<dt><span class="term">-h</span></dt>
<dd><p>
@@ -92,21 +92,21 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2603820"></a><h2>RETURN VALUES</h2>
+<a name="id2603856"></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="id2603834"></a><h2>SEE ALSO</h2>
+<a name="id2603869"></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="id2603864"></a><h2>AUTHOR</h2>
+<a name="id2603899"></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 4ecdac14..138ad640 100644
--- a/doc/arm/man.named-checkzone.html
+++ b/doc/arm/man.named-checkzone.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.named-checkzone.html,v 1.63.18.19 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.named-checkzone.html,v 1.63.18.21 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -51,7 +51,7 @@
<div class="cmdsynopsis"><p><code class="command">named-compilezone</code> [<code class="option">-d</code>] [<code class="option">-j</code>] [<code class="option">-q</code>] [<code class="option">-v</code>] [<code class="option">-c <em class="replaceable"><code>class</code></em></code>] [<code class="option">-C <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-f <em class="replaceable"><code>format</code></em></code>] [<code class="option">-F <em class="replaceable"><code>format</code></em></code>] [<code class="option">-i <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-k <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-m <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-n <em class="replaceable"><code>mode</code></em></code>] [<code class="option">-o <em class="replaceable"><code>filename</code></em></code>] [<code class="option">-s <em class="replaceable"><code>style</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-w <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-D</code>] [<code class="option">-W <em class="replaceable"><code>mode</code></em></code>] {zonename} {filename}</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2605765"></a><h2>DESCRIPTION</h2>
+<a name="id2605664"></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="id2605815"></a><h2>OPTIONS</h2>
+<a name="id2605714"></a><h2>OPTIONS</h2>
<div class="variablelist"><dl>
<dt><span class="term">-d</span></dt>
<dd><p>
@@ -257,14 +257,14 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2659869"></a><h2>RETURN VALUES</h2>
+<a name="id2658881"></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="id2659952"></a><h2>SEE ALSO</h2>
+<a name="id2658894"></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>,
@@ -272,7 +272,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2659985"></a><h2>AUTHOR</h2>
+<a name="id2658996"></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 68d47ff6..18f2ee2b 100644
--- a/doc/arm/man.named.html
+++ b/doc/arm/man.named.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.named.html,v 1.62.18.19 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.named.html,v 1.62.18.21 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -47,10 +47,10 @@
</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
-<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">-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">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>] [<code class="option">-v</code>] [<code class="option">-x <em class="replaceable"><code>cache-file</code></em></code>]</p></div>
+<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">-f</code>] [<code class="option">-g</code>] [<code class="option">-m <em class="replaceable"><code>flag</code></em></code>] [<code class="option">-n <em class="replaceable"><code>#cpus</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-s</code>] [<code class="option">-S <em class="replaceable"><code>#max-socks</code></em></code>] [<code class="option">-t <em class="replaceable"><code>directory</code></em></code>] [<code class="option">-u <em class="replaceable"><code>user</code></em></code>] [<code class="option">-v</code>] [<code class="option">-x <em class="replaceable"><code>cache-file</code></em></code>]</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2607070"></a><h2>DESCRIPTION</h2>
+<a name="id2607109"></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="id2607101"></a><h2>OPTIONS</h2>
+<a name="id2607140"></a><h2>OPTIONS</h2>
<div class="variablelist"><dl>
<dt><span class="term">-4</span></dt>
<dd><p>
@@ -144,6 +144,31 @@
</p>
</div>
</dd>
+<dt><span class="term">-S <em class="replaceable"><code>#max-socks</code></em></span></dt>
+<dd>
+<p>
+ Allow <span><strong class="command">named</strong></span> to use up to
+ <em class="replaceable"><code>#max-socks</code></em> sockets.
+ </p>
+<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Warning</h3>
+<p>
+ This option should be unnecessary for the vast majority
+ of users.
+ The use of this option could even be harmful because the
+ specified value may exceed the limitation of the
+ underlying system API.
+ It is therefore set only when the default configuration
+ causes exhaustion of file descriptors and the
+ operational environment is known to support the
+ specified number of sockets.
+ Note also that the actual maximum number is normally a little
+ fewer than the specified value because
+ <span><strong class="command">named</strong></span> reserves some file descriptors
+ for its internal use.
+ </p>
+</div>
+</dd>
<dt><span class="term">-t <em class="replaceable"><code>directory</code></em></span></dt>
<dd>
<p>Chroot
@@ -209,7 +234,7 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2607512"></a><h2>SIGNALS</h2>
+<a name="id2607590"></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
@@ -230,7 +255,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2607562"></a><h2>CONFIGURATION</h2>
+<a name="id2607640"></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
@@ -239,7 +264,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2608674"></a><h2>FILES</h2>
+<a name="id2608820"></a><h2>FILES</h2>
<div class="variablelist"><dl>
<dt><span class="term"><code class="filename">/etc/named.conf</code></span></dt>
<dd><p>
@@ -252,7 +277,7 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2608717"></a><h2>SEE ALSO</h2>
+<a name="id2608864"></a><h2>SEE ALSO</h2>
<p><em class="citetitle">RFC 1033</em>,
<em class="citetitle">RFC 1034</em>,
<em class="citetitle">RFC 1035</em>,
@@ -265,7 +290,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2609061"></a><h2>AUTHOR</h2>
+<a name="id2609139"></a><h2>AUTHOR</h2>
<p><span class="corpauthor">Internet Systems Consortium</span>
</p>
</div>
diff --git a/doc/arm/man.rndc-confgen.html b/doc/arm/man.rndc-confgen.html
index cb9fcc98..ce268098 100644
--- a/doc/arm/man.rndc-confgen.html
+++ b/doc/arm/man.rndc-confgen.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.rndc-confgen.html,v 1.65.10.19 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.rndc-confgen.html,v 1.65.10.21 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -48,7 +48,7 @@
<div class="cmdsynopsis"><p><code class="command">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="id2609371"></a><h2>DESCRIPTION</h2>
+<a name="id2609803"></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
@@ -64,7 +64,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2609437"></a><h2>OPTIONS</h2>
+<a name="id2609869"></a><h2>OPTIONS</h2>
<div class="variablelist"><dl>
<dt><span class="term">-a</span></dt>
<dd>
@@ -171,7 +171,7 @@
</dl></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2610233"></a><h2>EXAMPLES</h2>
+<a name="id2610392"></a><h2>EXAMPLES</h2>
<p>
To allow <span><strong class="command">rndc</strong></span> to be used with
no manual configuration, run
@@ -188,7 +188,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2610290"></a><h2>SEE ALSO</h2>
+<a name="id2612224"></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>,
@@ -196,7 +196,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2625347"></a><h2>AUTHOR</h2>
+<a name="id2612262"></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 1b663f88..378a23fd 100644
--- a/doc/arm/man.rndc.conf.html
+++ b/doc/arm/man.rndc.conf.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.rndc.conf.html,v 1.66.10.19 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.rndc.conf.html,v 1.66.10.21 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
<div class="cmdsynopsis"><p><code class="command">rndc.conf</code> </p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2608411"></a><h2>DESCRIPTION</h2>
+<a name="id2608297"></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="id2608583"></a><h2>EXAMPLE</h2>
+<a name="id2608469"></a><h2>EXAMPLE</h2>
<pre class="programlisting">
options {
default-server localhost;
@@ -209,7 +209,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2609182"></a><h2>NAME SERVER CONFIGURATION</h2>
+<a name="id2609614"></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="id2609208"></a><h2>SEE ALSO</h2>
+<a name="id2609640"></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="id2609246"></a><h2>AUTHOR</h2>
+<a name="id2609678"></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 4d086089..74c681c1 100644
--- a/doc/arm/man.rndc.html
+++ b/doc/arm/man.rndc.html
@@ -14,7 +14,7 @@
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
-<!-- $Id: man.rndc.html,v 1.64.10.19 2008/06/24 01:42:14 tbox Exp $ -->
+<!-- $Id: man.rndc.html,v 1.64.10.21 2008/09/05 01:42:58 tbox Exp $ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
@@ -50,7 +50,7 @@
<div class="cmdsynopsis"><p><code class="command">rndc</code> [<code class="option">-b <em class="replaceable"><code>source-address</code></em></code>] [<code class="option">-c <em class="replaceable"><code>config-file</code></em></code>] [<code class="option">-k <em class="replaceable"><code>key-file</code></em></code>] [<code class="option">-s <em class="replaceable"><code>server</code></em></code>] [<code class="option">-p <em class="replaceable"><code>port</code></em></code>] [<code class="option">-V</code>] [<code class="option">-y <em class="replaceable"><code>key_id</code></em></code>] {command}</p></div>
</div>
<div class="refsect1" lang="en">
-<a name="id2607699"></a><h2>DESCRIPTION</h2>
+<a name="id2607721"></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="id2607749"></a><h2>OPTIONS</h2>
+<a name="id2607771"></a><h2>OPTIONS</h2>
<div class="variablelist"><dl>
<dt><span class="term">-b <em class="replaceable"><code>source-address</code></em></span></dt>
<dd><p>
@@ -151,7 +151,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2608179"></a><h2>LIMITATIONS</h2>
+<a name="id2608065"></a><h2>LIMITATIONS</h2>
<p><span><strong class="command">rndc</strong></span>
does not yet support all the commands of
the BIND 8 <span><strong class="command">ndc</strong></span> utility.
@@ -165,7 +165,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2608210"></a><h2>SEE ALSO</h2>
+<a name="id2608096"></a><h2>SEE ALSO</h2>
<p><span class="citerefentry"><span class="refentrytitle">rndc.conf</span>(5)</span>,
<span class="citerefentry"><span class="refentrytitle">rndc-confgen</span>(8)</span>,
<span class="citerefentry"><span class="refentrytitle">named</span>(8)</span>,
@@ -175,7 +175,7 @@
</p>
</div>
<div class="refsect1" lang="en">
-<a name="id2608265"></a><h2>AUTHOR</h2>
+<a name="id2608219"></a><h2>AUTHOR</h2>
<p><span class="corpauthor">Internet Systems Consortium</span>
</p>
</div>
diff --git a/doc/misc/options b/doc/misc/options
index 138d9c9f..96bff0ed 100644
--- a/doc/misc/options
+++ b/doc/misc/options
@@ -166,6 +166,7 @@ options {
recursive-clients <integer>;
request-ixfr <boolean>;
request-nsid <boolean>;
+ reserved-sockets <integer>;
rfc2308-type1 <boolean>; // not yet implemented
root-delegation-only [ exclude { <quoted_string>; ... } ];
rrset-order { [ class <string> ] [ type <string> ] [ name
diff --git a/doc/rfc/index b/doc/rfc/index
index 8085a2ce..fea5f718 100644
--- a/doc/rfc/index
+++ b/doc/rfc/index
@@ -113,6 +113,7 @@
4470: Minimally Covering NSEC Records and DNSSEC On-line Signing
4634: US Secure Hash Algorithms (SHA and HMAC-SHA)
4641: DNSSEC Operational Practices
+4648: The Base16, Base32, and Base64 Data Encodings
4701: A DNS Resource Record (RR) for Encoding
Dynamic Host Configuration Protocol (DHCP) Information (DHCID RR)
-
+5155: DNS Security (DNSSEC) Hashed Authenticated Denial of Existence
diff --git a/doc/rfc/rfc4648.txt b/doc/rfc/rfc4648.txt
new file mode 100644
index 00000000..c7599b43
--- /dev/null
+++ b/doc/rfc/rfc4648.txt
@@ -0,0 +1,1011 @@
+
+
+
+
+
+
+Network Working Group S. Josefsson
+Request for Comments: 4648 SJD
+Obsoletes: 3548 October 2006
+Category: Standards Track
+
+
+ The Base16, Base32, and Base64 Data Encodings
+
+Status of This Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2006).
+
+Abstract
+
+ This document describes the commonly used base 64, base 32, and base
+ 16 encoding schemes. It also discusses the use of line-feeds in
+ encoded data, use of padding in encoded data, use of non-alphabet
+ characters in encoded data, use of different encoding alphabets, and
+ canonical encodings.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Josefsson Standards Track [Page 1]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+Table of Contents
+
+ 1. Introduction ....................................................3
+ 2. Conventions Used in This Document ...............................3
+ 3. Implementation Discrepancies ....................................3
+ 3.1. Line Feeds in Encoded Data .................................3
+ 3.2. Padding of Encoded Data ....................................4
+ 3.3. Interpretation of Non-Alphabet Characters in Encoded Data ..4
+ 3.4. Choosing the Alphabet ......................................4
+ 3.5. Canonical Encoding .........................................5
+ 4. Base 64 Encoding ................................................5
+ 5. Base 64 Encoding with URL and Filename Safe Alphabet ............7
+ 6. Base 32 Encoding ................................................8
+ 7. Base 32 Encoding with Extended Hex Alphabet ....................10
+ 8. Base 16 Encoding ...............................................10
+ 9. Illustrations and Examples .....................................11
+ 10. Test Vectors ..................................................12
+ 11. ISO C99 Implementation of Base64 ..............................14
+ 12. Security Considerations .......................................14
+ 13. Changes Since RFC 3548 ........................................15
+ 14. Acknowledgements ..............................................15
+ 15. Copying Conditions ............................................15
+ 16. References ....................................................16
+ 16.1. Normative References .....................................16
+ 16.2. Informative References ...................................16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Josefsson Standards Track [Page 2]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+1. Introduction
+
+ Base encoding of data is used in many situations to store or transfer
+ data in environments that, perhaps for legacy reasons, are restricted
+ to US-ASCII [1] data. Base encoding can also be used in new
+ applications that do not have legacy restrictions, simply because it
+ makes it possible to manipulate objects with text editors.
+
+ In the past, different applications have had different requirements
+ and thus sometimes implemented base encodings in slightly different
+ ways. Today, protocol specifications sometimes use base encodings in
+ general, and "base64" in particular, without a precise description or
+ reference. Multipurpose Internet Mail Extensions (MIME) [4] is often
+ used as a reference for base64 without considering the consequences
+ for line-wrapping or non-alphabet characters. The purpose of this
+ specification is to establish common alphabet and encoding
+ considerations. This will hopefully reduce ambiguity in other
+ documents, leading to better interoperability.
+
+2. Conventions Used in This Document
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in [2].
+
+3. Implementation Discrepancies
+
+ Here we discuss the discrepancies between base encoding
+ implementations in the past and, where appropriate, mandate a
+ specific recommended behavior for the future.
+
+3.1. Line Feeds in Encoded Data
+
+ MIME [4] is often used as a reference for base 64 encoding. However,
+ MIME does not define "base 64" per se, but rather a "base 64 Content-
+ Transfer-Encoding" for use within MIME. As such, MIME enforces a
+ limit on line length of base 64-encoded data to 76 characters. MIME
+ inherits the encoding from Privacy Enhanced Mail (PEM) [3], stating
+ that it is "virtually identical"; however, PEM uses a line length of
+ 64 characters. The MIME and PEM limits are both due to limits within
+ SMTP.
+
+ Implementations MUST NOT add line feeds to base-encoded data unless
+ the specification referring to this document explicitly directs base
+ encoders to add line feeds after a specific number of characters.
+
+
+
+
+
+
+Josefsson Standards Track [Page 3]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+3.2. Padding of Encoded Data
+
+ In some circumstances, the use of padding ("=") in base-encoded data
+ is not required or used. In the general case, when assumptions about
+ the size of transported data cannot be made, padding is required to
+ yield correct decoded data.
+
+ Implementations MUST include appropriate pad characters at the end of
+ encoded data unless the specification referring to this document
+ explicitly states otherwise.
+
+ The base64 and base32 alphabets use padding, as described below in
+ sections 4 and 6, but the base16 alphabet does not need it; see
+ section 8.
+
+3.3. Interpretation of Non-Alphabet Characters in Encoded Data
+
+ Base encodings use a specific, reduced alphabet to encode binary
+ data. Non-alphabet characters could exist within base-encoded data,
+ caused by data corruption or by design. Non-alphabet characters may
+ be exploited as a "covert channel", where non-protocol data can be
+ sent for nefarious purposes. Non-alphabet characters might also be
+ sent in order to exploit implementation errors leading to, e.g.,
+ buffer overflow attacks.
+
+ Implementations MUST reject the encoded data if it contains
+ characters outside the base alphabet when interpreting base-encoded
+ data, unless the specification referring to this document explicitly
+ states otherwise. Such specifications may instead state, as MIME
+ does, that characters outside the base encoding alphabet should
+ simply be ignored when interpreting data ("be liberal in what you
+ accept"). Note that this means that any adjacent carriage return/
+ line feed (CRLF) characters constitute "non-alphabet characters" and
+ are ignored. Furthermore, such specifications MAY ignore the pad
+ character, "=", treating it as non-alphabet data, if it is present
+ before the end of the encoded data. If more than the allowed number
+ of pad characters is found at the end of the string (e.g., a base 64
+ string terminated with "==="), the excess pad characters MAY also be
+ ignored.
+
+3.4. Choosing the Alphabet
+
+ Different applications have different requirements on the characters
+ in the alphabet. Here are a few requirements that determine which
+ alphabet should be used:
+
+
+
+
+
+
+Josefsson Standards Track [Page 4]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+ o Handled by humans. The characters "0" and "O" are easily
+ confused, as are "1", "l", and "I". In the base32 alphabet below,
+ where 0 (zero) and 1 (one) are not present, a decoder may
+ interpret 0 as O, and 1 as I or L depending on case. (However, by
+ default it should not; see previous section.)
+
+ o Encoded into structures that mandate other requirements. For base
+ 16 and base 32, this determines the use of upper- or lowercase
+ alphabets. For base 64, the non-alphanumeric characters (in
+ particular, "/") may be problematic in file names and URLs.
+
+ o Used as identifiers. Certain characters, notably "+" and "/" in
+ the base 64 alphabet, are treated as word-breaks by legacy text
+ search/index tools.
+
+ There is no universally accepted alphabet that fulfills all the
+ requirements. For an example of a highly specialized variant, see
+ IMAP [8]. In this document, we document and name some currently used
+ alphabets.
+
+3.5. Canonical Encoding
+
+ The padding step in base 64 and base 32 encoding can, if improperly
+ implemented, lead to non-significant alterations of the encoded data.
+ For example, if the input is only one octet for a base 64 encoding,
+ then all six bits of the first symbol are used, but only the first
+ two bits of the next symbol are used. These pad bits MUST be set to
+ zero by conforming encoders, which is described in the descriptions
+ on padding below. If this property do not hold, there is no
+ canonical representation of base-encoded data, and multiple base-
+ encoded strings can be decoded to the same binary data. If this
+ property (and others discussed in this document) holds, a canonical
+ encoding is guaranteed.
+
+ In some environments, the alteration is critical and therefore
+ decoders MAY chose to reject an encoding if the pad bits have not
+ been set to zero. The specification referring to this may mandate a
+ specific behaviour.
+
+4. Base 64 Encoding
+
+ The following description of base 64 is derived from [3], [4], [5],
+ and [6]. This encoding may be referred to as "base64".
+
+ The Base 64 encoding is designed to represent arbitrary sequences of
+ octets in a form that allows the use of both upper- and lowercase
+ letters but that need not be human readable.
+
+
+
+
+Josefsson Standards Track [Page 5]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+ A 65-character subset of US-ASCII is used, enabling 6 bits to be
+ represented per printable character. (The extra 65th character, "=",
+ is used to signify a special processing function.)
+
+ The encoding process represents 24-bit groups of input bits as output
+ strings of 4 encoded characters. Proceeding from left to right, a
+ 24-bit input group is formed by concatenating 3 8-bit input groups.
+ These 24 bits are then treated as 4 concatenated 6-bit groups, each
+ of which is translated into a single character in the base 64
+ alphabet.
+
+ Each 6-bit group is used as an index into an array of 64 printable
+ characters. The character referenced by the index is placed in the
+ output string.
+
+ Table 1: The Base 64 Alphabet
+
+ Value Encoding Value Encoding Value Encoding Value Encoding
+ 0 A 17 R 34 i 51 z
+ 1 B 18 S 35 j 52 0
+ 2 C 19 T 36 k 53 1
+ 3 D 20 U 37 l 54 2
+ 4 E 21 V 38 m 55 3
+ 5 F 22 W 39 n 56 4
+ 6 G 23 X 40 o 57 5
+ 7 H 24 Y 41 p 58 6
+ 8 I 25 Z 42 q 59 7
+ 9 J 26 a 43 r 60 8
+ 10 K 27 b 44 s 61 9
+ 11 L 28 c 45 t 62 +
+ 12 M 29 d 46 u 63 /
+ 13 N 30 e 47 v
+ 14 O 31 f 48 w (pad) =
+ 15 P 32 g 49 x
+ 16 Q 33 h 50 y
+
+ Special processing is performed if fewer than 24 bits are available
+ at the end of the data being encoded. A full encoding quantum is
+ always completed at the end of a quantity. When fewer than 24 input
+ bits are available in an input group, bits with value zero are added
+ (on the right) to form an integral number of 6-bit groups. Padding
+ at the end of the data is performed using the '=' character. Since
+ all base 64 input is an integral number of octets, only the following
+ cases can arise:
+
+ (1) The final quantum of encoding input is an integral multiple of 24
+ bits; here, the final unit of encoded output will be an integral
+ multiple of 4 characters with no "=" padding.
+
+
+
+Josefsson Standards Track [Page 6]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+ (2) The final quantum of encoding input is exactly 8 bits; here, the
+ final unit of encoded output will be two characters followed by
+ two "=" padding characters.
+
+ (3) The final quantum of encoding input is exactly 16 bits; here, the
+ final unit of encoded output will be three characters followed by
+ one "=" padding character.
+
+5. Base 64 Encoding with URL and Filename Safe Alphabet
+
+ The Base 64 encoding with an URL and filename safe alphabet has been
+ used in [12].
+
+ An alternative alphabet has been suggested that would use "~" as the
+ 63rd character. Since the "~" character has special meaning in some
+ file system environments, the encoding described in this section is
+ recommended instead. The remaining unreserved URI character is ".",
+ but some file system environments do not permit multiple "." in a
+ filename, thus making the "." character unattractive as well.
+
+ The pad character "=" is typically percent-encoded when used in an
+ URI [9], but if the data length is known implicitly, this can be
+ avoided by skipping the padding; see section 3.2.
+
+ This encoding may be referred to as "base64url". This encoding
+ should not be regarded as the same as the "base64" encoding and
+ should not be referred to as only "base64". Unless clarified
+ otherwise, "base64" refers to the base 64 in the previous section.
+
+ This encoding is technically identical to the previous one, except
+ for the 62:nd and 63:rd alphabet character, as indicated in Table 2.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Josefsson Standards Track [Page 7]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+ Table 2: The "URL and Filename safe" Base 64 Alphabet
+
+ Value Encoding Value Encoding Value Encoding Value Encoding
+ 0 A 17 R 34 i 51 z
+ 1 B 18 S 35 j 52 0
+ 2 C 19 T 36 k 53 1
+ 3 D 20 U 37 l 54 2
+ 4 E 21 V 38 m 55 3
+ 5 F 22 W 39 n 56 4
+ 6 G 23 X 40 o 57 5
+ 7 H 24 Y 41 p 58 6
+ 8 I 25 Z 42 q 59 7
+ 9 J 26 a 43 r 60 8
+ 10 K 27 b 44 s 61 9
+ 11 L 28 c 45 t 62 - (minus)
+ 12 M 29 d 46 u 63 _
+ 13 N 30 e 47 v (underline)
+ 14 O 31 f 48 w
+ 15 P 32 g 49 x
+ 16 Q 33 h 50 y (pad) =
+
+6. Base 32 Encoding
+
+ The following description of base 32 is derived from [11] (with
+ corrections). This encoding may be referred to as "base32".
+
+ The Base 32 encoding is designed to represent arbitrary sequences of
+ octets in a form that needs to be case insensitive but that need not
+ be human readable.
+
+ A 33-character subset of US-ASCII is used, enabling 5 bits to be
+ represented per printable character. (The extra 33rd character, "=",
+ is used to signify a special processing function.)
+
+ The encoding process represents 40-bit groups of input bits as output
+ strings of 8 encoded characters. Proceeding from left to right, a
+ 40-bit input group is formed by concatenating 5 8bit input groups.
+ These 40 bits are then treated as 8 concatenated 5-bit groups, each
+ of which is translated into a single character in the base 32
+ alphabet. When a bit stream is encoded via the base 32 encoding, the
+ bit stream must be presumed to be ordered with the most-significant-
+ bit first. That is, the first bit in the stream will be the high-
+ order bit in the first 8bit byte, the eighth bit will be the low-
+ order bit in the first 8bit byte, and so on.
+
+
+
+
+
+
+
+Josefsson Standards Track [Page 8]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+ Each 5-bit group is used as an index into an array of 32 printable
+ characters. The character referenced by the index is placed in the
+ output string. These characters, identified in Table 3, below, are
+ selected from US-ASCII digits and uppercase letters.
+
+ Table 3: The Base 32 Alphabet
+
+ Value Encoding Value Encoding Value Encoding Value Encoding
+ 0 A 9 J 18 S 27 3
+ 1 B 10 K 19 T 28 4
+ 2 C 11 L 20 U 29 5
+ 3 D 12 M 21 V 30 6
+ 4 E 13 N 22 W 31 7
+ 5 F 14 O 23 X
+ 6 G 15 P 24 Y (pad) =
+ 7 H 16 Q 25 Z
+ 8 I 17 R 26 2
+
+ Special processing is performed if fewer than 40 bits are available
+ at the end of the data being encoded. A full encoding quantum is
+ always completed at the end of a body. When fewer than 40 input bits
+ are available in an input group, bits with value zero are added (on
+ the right) to form an integral number of 5-bit groups. Padding at
+ the end of the data is performed using the "=" character. Since all
+ base 32 input is an integral number of octets, only the following
+ cases can arise:
+
+ (1) The final quantum of encoding input is an integral multiple of 40
+ bits; here, the final unit of encoded output will be an integral
+ multiple of 8 characters with no "=" padding.
+
+ (2) The final quantum of encoding input is exactly 8 bits; here, the
+ final unit of encoded output will be two characters followed by
+ six "=" padding characters.
+
+ (3) The final quantum of encoding input is exactly 16 bits; here, the
+ final unit of encoded output will be four characters followed by
+ four "=" padding characters.
+
+ (4) The final quantum of encoding input is exactly 24 bits; here, the
+ final unit of encoded output will be five characters followed by
+ three "=" padding characters.
+
+ (5) The final quantum of encoding input is exactly 32 bits; here, the
+ final unit of encoded output will be seven characters followed by
+ one "=" padding character.
+
+
+
+
+
+Josefsson Standards Track [Page 9]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+7. Base 32 Encoding with Extended Hex Alphabet
+
+ The following description of base 32 is derived from [7]. This
+ encoding may be referred to as "base32hex". This encoding should not
+ be regarded as the same as the "base32" encoding and should not be
+ referred to as only "base32". This encoding is used by, e.g.,
+ NextSECure3 (NSEC3) [10].
+
+ One property with this alphabet, which the base64 and base32
+ alphabets lack, is that encoded data maintains its sort order when
+ the encoded data is compared bit-wise.
+
+ This encoding is identical to the previous one, except for the
+ alphabet. The new alphabet is found in Table 4.
+
+ Table 4: The "Extended Hex" Base 32 Alphabet
+
+ Value Encoding Value Encoding Value Encoding Value Encoding
+ 0 0 9 9 18 I 27 R
+ 1 1 10 A 19 J 28 S
+ 2 2 11 B 20 K 29 T
+ 3 3 12 C 21 L 30 U
+ 4 4 13 D 22 M 31 V
+ 5 5 14 E 23 N
+ 6 6 15 F 24 O (pad) =
+ 7 7 16 G 25 P
+ 8 8 17 H 26 Q
+
+8. Base 16 Encoding
+
+ The following description is original but analogous to previous
+ descriptions. Essentially, Base 16 encoding is the standard case-
+ insensitive hex encoding and may be referred to as "base16" or "hex".
+
+ A 16-character subset of US-ASCII is used, enabling 4 bits to be
+ represented per printable character.
+
+ The encoding process represents 8-bit groups (octets) of input bits
+ as output strings of 2 encoded characters. Proceeding from left to
+ right, an 8-bit input is taken from the input data. These 8 bits are
+ then treated as 2 concatenated 4-bit groups, each of which is
+ translated into a single character in the base 16 alphabet.
+
+ Each 4-bit group is used as an index into an array of 16 printable
+ characters. The character referenced by the index is placed in the
+ output string.
+
+
+
+
+
+Josefsson Standards Track [Page 10]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+ Table 5: The Base 16 Alphabet
+
+ Value Encoding Value Encoding Value Encoding Value Encoding
+ 0 0 4 4 8 8 12 C
+ 1 1 5 5 9 9 13 D
+ 2 2 6 6 10 A 14 E
+ 3 3 7 7 11 B 15 F
+
+ Unlike base 32 and base 64, no special padding is necessary since a
+ full code word is always available.
+
+9. Illustrations and Examples
+
+ To translate between binary and a base encoding, the input is stored
+ in a structure, and the output is extracted. The case for base 64 is
+ displayed in the following figure, borrowed from [5].
+
+ +--first octet--+-second octet--+--third octet--+
+ |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|
+ +-----------+---+-------+-------+---+-----------+
+ |5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0|
+ +--1.index--+--2.index--+--3.index--+--4.index--+
+
+ The case for base 32 is shown in the following figure, borrowed from
+ [7]. Each successive character in a base-32 value represents 5
+ successive bits of the underlying octet sequence. Thus, each group
+ of 8 characters represents a sequence of 5 octets (40 bits).
+
+ 1 2 3
+ 01234567 89012345 67890123 45678901 23456789
+ +--------+--------+--------+--------+--------+
+ |< 1 >< 2| >< 3 ><|.4 >< 5.|>< 6 ><.|7 >< 8 >|
+ +--------+--------+--------+--------+--------+
+ <===> 8th character
+ <====> 7th character
+ <===> 6th character
+ <====> 5th character
+ <====> 4th character
+ <===> 3rd character
+ <====> 2nd character
+ <===> 1st character
+
+
+
+
+
+
+
+
+
+
+Josefsson Standards Track [Page 11]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+ The following example of Base64 data is from [5], with corrections.
+
+ Input data: 0x14fb9c03d97e
+ Hex: 1 4 f b 9 c | 0 3 d 9 7 e
+ 8-bit: 00010100 11111011 10011100 | 00000011 11011001 01111110
+ 6-bit: 000101 001111 101110 011100 | 000000 111101 100101 111110
+ Decimal: 5 15 46 28 0 61 37 62
+ Output: F P u c A 9 l +
+
+ Input data: 0x14fb9c03d9
+ Hex: 1 4 f b 9 c | 0 3 d 9
+ 8-bit: 00010100 11111011 10011100 | 00000011 11011001
+ pad with 00
+ 6-bit: 000101 001111 101110 011100 | 000000 111101 100100
+ Decimal: 5 15 46 28 0 61 36
+ pad with =
+ Output: F P u c A 9 k =
+
+ Input data: 0x14fb9c03
+ Hex: 1 4 f b 9 c | 0 3
+ 8-bit: 00010100 11111011 10011100 | 00000011
+ pad with 0000
+ 6-bit: 000101 001111 101110 011100 | 000000 110000
+ Decimal: 5 15 46 28 0 48
+ pad with = =
+ Output: F P u c A w = =
+
+10. Test Vectors
+
+ BASE64("") = ""
+
+ BASE64("f") = "Zg=="
+
+ BASE64("fo") = "Zm8="
+
+ BASE64("foo") = "Zm9v"
+
+ BASE64("foob") = "Zm9vYg=="
+
+ BASE64("fooba") = "Zm9vYmE="
+
+ BASE64("foobar") = "Zm9vYmFy"
+
+ BASE32("") = ""
+
+ BASE32("f") = "MY======"
+
+ BASE32("fo") = "MZXQ===="
+
+
+
+Josefsson Standards Track [Page 12]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+ BASE32("foo") = "MZXW6==="
+
+ BASE32("foob") = "MZXW6YQ="
+
+ BASE32("fooba") = "MZXW6YTB"
+
+ BASE32("foobar") = "MZXW6YTBOI======"
+
+ BASE32-HEX("") = ""
+
+ BASE32-HEX("f") = "CO======"
+
+ BASE32-HEX("fo") = "CPNG===="
+
+ BASE32-HEX("foo") = "CPNMU==="
+
+ BASE32-HEX("foob") = "CPNMUOG="
+
+ BASE32-HEX("fooba") = "CPNMUOJ1"
+
+ BASE32-HEX("foobar") = "CPNMUOJ1E8======"
+
+ BASE16("") = ""
+
+ BASE16("f") = "66"
+
+ BASE16("fo") = "666F"
+
+ BASE16("foo") = "666F6F"
+
+ BASE16("foob") = "666F6F62"
+
+ BASE16("fooba") = "666F6F6261"
+
+ BASE16("foobar") = "666F6F626172"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Josefsson Standards Track [Page 13]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+11. ISO C99 Implementation of Base64
+
+ An ISO C99 implementation of Base64 encoding and decoding that is
+ believed to follow all recommendations in this RFC is available from:
+
+ http://josefsson.org/base-encoding/
+
+ This code is not normative.
+
+ The code could not be included in this RFC for procedural reasons
+ (RFC 3978 section 5.4).
+
+12. Security Considerations
+
+ When base encoding and decoding is implemented, care should be taken
+ not to introduce vulnerabilities to buffer overflow attacks, or other
+ attacks on the implementation. A decoder should not break on invalid
+ input including, e.g., embedded NUL characters (ASCII 0).
+
+ If non-alphabet characters are ignored, instead of causing rejection
+ of the entire encoding (as recommended), a covert channel that can be
+ used to "leak" information is made possible. The ignored characters
+ could also be used for other nefarious purposes, such as to avoid a
+ string equality comparison or to trigger implementation bugs. The
+ implications of ignoring non-alphabet characters should be understood
+ in applications that do not follow the recommended practice.
+ Similarly, when the base 16 and base 32 alphabets are handled case
+ insensitively, alteration of case can be used to leak information or
+ make string equality comparisons fail.
+
+ When padding is used, there are some non-significant bits that
+ warrant security concerns, as they may be abused to leak information
+ or used to bypass string equality comparisons or to trigger
+ implementation problems.
+
+ Base encoding visually hides otherwise easily recognized information,
+ such as passwords, but does not provide any computational
+ confidentiality. This has been known to cause security incidents
+ when, e.g., a user reports details of a network protocol exchange
+ (perhaps to illustrate some other problem) and accidentally reveals
+ the password because she is unaware that the base encoding does not
+ protect the password.
+
+ Base encoding adds no entropy to the plaintext, but it does increase
+ the amount of plaintext available and provide a signature for
+ cryptanalysis in the form of a characteristic probability
+ distribution.
+
+
+
+
+Josefsson Standards Track [Page 14]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+13. Changes Since RFC 3548
+
+ Added the "base32 extended hex alphabet", needed to preserve sort
+ order of encoded data.
+
+ Referenced IMAP for the special Base64 encoding used there.
+
+ Fixed the example copied from RFC 2440.
+
+ Added security consideration about providing a signature for
+ cryptoanalysis.
+
+ Added test vectors.
+
+ Fixed typos.
+
+14. Acknowledgements
+
+ Several people offered comments and/or suggestions, including John E.
+ Hadstate, Tony Hansen, Gordon Mohr, John Myers, Chris Newman, and
+ Andrew Sieber. Text used in this document are based on earlier RFCs
+ describing specific uses of various base encodings. The author
+ acknowledges the RSA Laboratories for supporting the work that led to
+ this document.
+
+ This revised version is based in parts on comments and/or suggestions
+ made by Roy Arends, Eric Blake, Brian E Carpenter, Elwyn Davies, Bill
+ Fenner, Sam Hartman, Ted Hardie, Per Hygum, Jelte Jansen, Clement
+ Kent, Tero Kivinen, Paul Kwiatkowski, and Ben Laurie.
+
+15. Copying Conditions
+
+ Copyright (c) 2000-2006 Simon Josefsson
+
+ Regarding the abstract and sections 1, 3, 8, 10, 12, 13, and 14 of
+ this document, that were written by Simon Josefsson ("the author",
+ for the remainder of this section), the author makes no guarantees
+ and is not responsible for any damage resulting from its use. The
+ author grants irrevocable permission to anyone to use, modify, and
+ distribute it in any way that does not diminish the rights of anyone
+ else to use, modify, and distribute it, provided that redistributed
+ derivative works do not contain misleading author or version
+ information and do not falsely purport to be IETF RFC documents.
+ Derivative works need not be licensed under similar terms.
+
+
+
+
+
+
+
+Josefsson Standards Track [Page 15]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+16. References
+
+16.1. Normative References
+
+ [1] Cerf, V., "ASCII format for network interchange", RFC 20,
+ October 1969.
+
+ [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
+ Levels", BCP 14, RFC 2119, March 1997.
+
+16.2. Informative References
+
+ [3] Linn, J., "Privacy Enhancement for Internet Electronic Mail:
+ Part I: Message Encryption and Authentication Procedures", RFC
+ 1421, February 1993.
+
+ [4] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
+ Extensions (MIME) Part One: Format of Internet Message Bodies",
+ RFC 2045, November 1996.
+
+ [5] Callas, J., Donnerhacke, L., Finney, H., and R. Thayer,
+ "OpenPGP Message Format", RFC 2440, November 1998.
+
+ [6] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
+ "DNS Security Introduction and Requirements", RFC 4033, March
+ 2005.
+
+ [7] Klyne, G. and L. Masinter, "Identifying Composite Media
+ Features", RFC 2938, September 2000.
+
+ [8] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
+ 4rev1", RFC 3501, March 2003.
+
+ [9] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
+ Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986,
+ January 2005.
+
+ [10] Laurie, B., Sisson, G., Arends, R., and D. Blacka, "DNSSEC Hash
+ Authenticated Denial of Existence", Work in Progress, June
+ 2006.
+
+ [11] Myers, J., "SASL GSSAPI mechanisms", Work in Progress, May
+ 2000.
+
+ [12] Wilcox-O'Hearn, B., "Post to P2P-hackers mailing list",
+ http://zgp.org/pipermail/p2p-hackers/2001-September/
+ 000315.html, September 2001.
+
+
+
+
+Josefsson Standards Track [Page 16]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+Author's Address
+
+ Simon Josefsson
+ SJD
+ EMail: simon@josefsson.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Josefsson Standards Track [Page 17]
+
+RFC 4648 Base-N Encodings October 2006
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2006).
+
+ This document is subject to the rights, licenses and restrictions
+ contained in BCP 78, and except as set forth therein, the authors
+ retain all their rights.
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+ OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+ ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+ INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; nor does it represent that it has
+ made any independent effort to identify any such rights. Information
+ on the procedures with respect to rights in RFC documents can be
+ found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use of
+ such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository at
+ http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights that may cover technology that may be required to implement
+ this standard. Please address the information to the IETF at
+ ietf-ipr@ietf.org.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is provided by the IETF
+ Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Josefsson Standards Track [Page 18]
+
diff --git a/doc/rfc/rfc5155.txt b/doc/rfc/rfc5155.txt
new file mode 100644
index 00000000..d4b72976
--- /dev/null
+++ b/doc/rfc/rfc5155.txt
@@ -0,0 +1,2915 @@
+
+
+
+
+
+
+Network Working Group B. Laurie
+Request for Comments: 5155 G. Sisson
+Category: Standards Track R. Arends
+ Nominet
+ D. Blacka
+ VeriSign, Inc.
+ March 2008
+
+
+ DNS Security (DNSSEC) Hashed Authenticated Denial of Existence
+
+Status of This Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Abstract
+
+ The Domain Name System Security (DNSSEC) Extensions introduced the
+ NSEC resource record (RR) for authenticated denial of existence.
+ This document introduces an alternative resource record, NSEC3, which
+ similarly provides authenticated denial of existence. However, it
+ also provides measures against zone enumeration and permits gradual
+ expansion of delegation-centric zones.
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 1.1. Rationale . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 1.2. Requirements . . . . . . . . . . . . . . . . . . . . . . . 4
+ 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5
+ 2. Backwards Compatibility . . . . . . . . . . . . . . . . . . . 6
+ 3. The NSEC3 Resource Record . . . . . . . . . . . . . . . . . . 7
+ 3.1. RDATA Fields . . . . . . . . . . . . . . . . . . . . . . . 8
+ 3.1.1. Hash Algorithm . . . . . . . . . . . . . . . . . . . . 8
+ 3.1.2. Flags . . . . . . . . . . . . . . . . . . . . . . . . 8
+ 3.1.3. Iterations . . . . . . . . . . . . . . . . . . . . . . 8
+ 3.1.4. Salt Length . . . . . . . . . . . . . . . . . . . . . 8
+ 3.1.5. Salt . . . . . . . . . . . . . . . . . . . . . . . . . 8
+ 3.1.6. Hash Length . . . . . . . . . . . . . . . . . . . . . 9
+ 3.1.7. Next Hashed Owner Name . . . . . . . . . . . . . . . . 9
+ 3.1.8. Type Bit Maps . . . . . . . . . . . . . . . . . . . . 9
+ 3.2. NSEC3 RDATA Wire Format . . . . . . . . . . . . . . . . . 9
+ 3.2.1. Type Bit Maps Encoding . . . . . . . . . . . . . . . . 10
+ 3.3. Presentation Format . . . . . . . . . . . . . . . . . . . 11
+
+
+
+Laurie, et al. Standards Track [Page 1]
+
+RFC 5155 NSEC3 March 2008
+
+
+ 4. The NSEC3PARAM Resource Record . . . . . . . . . . . . . . . . 12
+ 4.1. RDATA Fields . . . . . . . . . . . . . . . . . . . . . . . 12
+ 4.1.1. Hash Algorithm . . . . . . . . . . . . . . . . . . . . 12
+ 4.1.2. Flag Fields . . . . . . . . . . . . . . . . . . . . . 12
+ 4.1.3. Iterations . . . . . . . . . . . . . . . . . . . . . . 13
+ 4.1.4. Salt Length . . . . . . . . . . . . . . . . . . . . . 13
+ 4.1.5. Salt . . . . . . . . . . . . . . . . . . . . . . . . . 13
+ 4.2. NSEC3PARAM RDATA Wire Format . . . . . . . . . . . . . . . 13
+ 4.3. Presentation Format . . . . . . . . . . . . . . . . . . . 14
+ 5. Calculation of the Hash . . . . . . . . . . . . . . . . . . . 14
+ 6. Opt-Out . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
+ 7. Authoritative Server Considerations . . . . . . . . . . . . . 16
+ 7.1. Zone Signing . . . . . . . . . . . . . . . . . . . . . . . 16
+ 7.2. Zone Serving . . . . . . . . . . . . . . . . . . . . . . . 17
+ 7.2.1. Closest Encloser Proof . . . . . . . . . . . . . . . . 18
+ 7.2.2. Name Error Responses . . . . . . . . . . . . . . . . . 19
+ 7.2.3. No Data Responses, QTYPE is not DS . . . . . . . . . . 19
+ 7.2.4. No Data Responses, QTYPE is DS . . . . . . . . . . . . 19
+ 7.2.5. Wildcard No Data Responses . . . . . . . . . . . . . . 19
+ 7.2.6. Wildcard Answer Responses . . . . . . . . . . . . . . 20
+ 7.2.7. Referrals to Unsigned Subzones . . . . . . . . . . . . 20
+ 7.2.8. Responding to Queries for NSEC3 Owner Names . . . . . 20
+ 7.2.9. Server Response to a Run-Time Collision . . . . . . . 21
+ 7.3. Secondary Servers . . . . . . . . . . . . . . . . . . . . 21
+ 7.4. Zones Using Unknown Hash Algorithms . . . . . . . . . . . 21
+ 7.5. Dynamic Update . . . . . . . . . . . . . . . . . . . . . . 21
+ 8. Validator Considerations . . . . . . . . . . . . . . . . . . . 23
+ 8.1. Responses with Unknown Hash Types . . . . . . . . . . . . 23
+ 8.2. Verifying NSEC3 RRs . . . . . . . . . . . . . . . . . . . 23
+ 8.3. Closest Encloser Proof . . . . . . . . . . . . . . . . . . 23
+ 8.4. Validating Name Error Responses . . . . . . . . . . . . . 24
+ 8.5. Validating No Data Responses, QTYPE is not DS . . . . . . 24
+ 8.6. Validating No Data Responses, QTYPE is DS . . . . . . . . 24
+ 8.7. Validating Wildcard No Data Responses . . . . . . . . . . 25
+ 8.8. Validating Wildcard Answer Responses . . . . . . . . . . . 25
+ 8.9. Validating Referrals to Unsigned Subzones . . . . . . . . 25
+ 9. Resolver Considerations . . . . . . . . . . . . . . . . . . . 26
+ 9.1. NSEC3 Resource Record Caching . . . . . . . . . . . . . . 26
+ 9.2. Use of the AD Bit . . . . . . . . . . . . . . . . . . . . 26
+ 10. Special Considerations . . . . . . . . . . . . . . . . . . . . 26
+ 10.1. Domain Name Length Restrictions . . . . . . . . . . . . . 26
+ 10.2. DNAME at the Zone Apex . . . . . . . . . . . . . . . . . . 27
+ 10.3. Iterations . . . . . . . . . . . . . . . . . . . . . . . . 27
+ 10.4. Transitioning a Signed Zone from NSEC to NSEC3 . . . . . . 28
+ 10.5. Transitioning a Signed Zone from NSEC3 to NSEC . . . . . . 28
+ 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29
+ 12. Security Considerations . . . . . . . . . . . . . . . . . . . 30
+ 12.1. Hashing Considerations . . . . . . . . . . . . . . . . . . 30
+
+
+
+Laurie, et al. Standards Track [Page 2]
+
+RFC 5155 NSEC3 March 2008
+
+
+ 12.1.1. Dictionary Attacks . . . . . . . . . . . . . . . . . . 30
+ 12.1.2. Collisions . . . . . . . . . . . . . . . . . . . . . . 31
+ 12.1.3. Transitioning to a New Hash Algorithm . . . . . . . . 31
+ 12.1.4. Using High Iteration Values . . . . . . . . . . . . . 31
+ 12.2. Opt-Out Considerations . . . . . . . . . . . . . . . . . . 32
+ 12.3. Other Considerations . . . . . . . . . . . . . . . . . . . 33
+ 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 33
+ 13.1. Normative References . . . . . . . . . . . . . . . . . . . 33
+ 13.2. Informative References . . . . . . . . . . . . . . . . . . 34
+ Appendix A. Example Zone . . . . . . . . . . . . . . . . . . . . 35
+ Appendix B. Example Responses . . . . . . . . . . . . . . . . . . 40
+ B.1. Name Error . . . . . . . . . . . . . . . . . . . . . . . . 40
+ B.2. No Data Error . . . . . . . . . . . . . . . . . . . . . . 42
+ B.2.1. No Data Error, Empty Non-Terminal . . . . . . . . . . 43
+ B.3. Referral to an Opt-Out Unsigned Zone . . . . . . . . . . . 44
+ B.4. Wildcard Expansion . . . . . . . . . . . . . . . . . . . . 45
+ B.5. Wildcard No Data Error . . . . . . . . . . . . . . . . . . 46
+ B.6. DS Child Zone No Data Error . . . . . . . . . . . . . . . 48
+ Appendix C. Special Considerations . . . . . . . . . . . . . . . 48
+ C.1. Salting . . . . . . . . . . . . . . . . . . . . . . . . . 49
+ C.2. Hash Collision . . . . . . . . . . . . . . . . . . . . . . 49
+ C.2.1. Avoiding Hash Collisions During Generation . . . . . . 50
+ C.2.2. Second Preimage Requirement Analysis . . . . . . . . . 50
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 3]
+
+RFC 5155 NSEC3 March 2008
+
+
+1. Introduction
+
+1.1. Rationale
+
+ The DNS Security Extensions included the NSEC RR to provide
+ authenticated denial of existence. Though the NSEC RR meets the
+ requirements for authenticated denial of existence, it introduces a
+ side-effect in that the contents of a zone can be enumerated. This
+ property introduces undesired policy issues.
+
+ The enumeration is enabled by the set of NSEC records that exists
+ inside a signed zone. An NSEC record lists two names that are
+ ordered canonically, in order to show that nothing exists between the
+ two names. The complete set of NSEC records lists all the names in a
+ zone. It is trivial to enumerate the content of a zone by querying
+ for names that do not exist.
+
+ An enumerated zone can be used, for example, as a source of probable
+ e-mail addresses for spam, or as a key for multiple WHOIS queries to
+ reveal registrant data that many registries may have legal
+ obligations to protect. Many registries therefore prohibit the
+ copying of their zone data; however, the use of NSEC RRs renders
+ these policies unenforceable.
+
+ A second problem is that the cost to cryptographically secure
+ delegations to unsigned zones is high, relative to the perceived
+ security benefit, in two cases: large, delegation-centric zones, and
+ zones where insecure delegations will be updated rapidly. In these
+ cases, the costs of maintaining the NSEC RR chain may be extremely
+ high and use of the "Opt-Out" convention may be more appropriate (for
+ these unsecured zones).
+
+ This document presents the NSEC3 Resource Record which can be used as
+ an alternative to NSEC to mitigate these issues.
+
+ Earlier work to address these issues include [DNSEXT-NO], [RFC4956],
+ and [DNSEXT-NSEC2v2].
+
+1.2. Requirements
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in [RFC2119].
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 4]
+
+RFC 5155 NSEC3 March 2008
+
+
+1.3. Terminology
+
+ The reader is assumed to be familiar with the basic DNS and DNSSEC
+ concepts described in [RFC1034], [RFC1035], [RFC4033], [RFC4034],
+ [RFC4035], and subsequent RFCs that update them: [RFC2136],
+ [RFC2181], and [RFC2308].
+
+ The following terminology is used throughout this document:
+
+ Zone enumeration: the practice of discovering the full content of a
+ zone via successive queries. Zone enumeration was non-trivial
+ prior to the introduction of DNSSEC.
+
+ Original owner name: the owner name corresponding to a hashed owner
+ name.
+
+ Hashed owner name: the owner name created after applying the hash
+ function to an owner name.
+
+ Hash order: the order in which hashed owner names are arranged
+ according to their numerical value, treating the leftmost (lowest
+ numbered) octet as the most significant octet. Note that this
+ order is the same as the canonical DNS name order specified in
+ [RFC4034], when the hashed owner names are in base32, encoded with
+ an Extended Hex Alphabet [RFC4648].
+
+ Empty non-terminal: a domain name that owns no resource records, but
+ has one or more subdomains that do.
+
+ Delegation: an NS RRSet with a name different from the current zone
+ apex (non-zone-apex), signifying a delegation to a child zone.
+
+ Secure delegation: a name containing a delegation (NS RRSet) and a
+ signed DS RRSet, signifying a delegation to a signed child zone.
+
+ Insecure delegation: a name containing a delegation (NS RRSet), but
+ lacking a DS RRSet, signifying a delegation to an unsigned child
+ zone.
+
+ Opt-Out NSEC3 resource record: an NSEC3 resource record that has the
+ Opt-Out flag set to 1.
+
+ Opt-Out zone: a zone with at least one Opt-Out NSEC3 RR.
+
+ Closest encloser: the longest existing ancestor of a name. See also
+ Section 3.3.1 of [RFC4592].
+
+
+
+
+
+Laurie, et al. Standards Track [Page 5]
+
+RFC 5155 NSEC3 March 2008
+
+
+ Closest provable encloser: the longest ancestor of a name that can
+ be proven to exist. Note that this is only different from the
+ closest encloser in an Opt-Out zone.
+
+ Next closer name: the name one label longer than the closest
+ provable encloser of a name.
+
+ Base32: the "Base 32 Encoding with Extended Hex Alphabet" as
+ specified in [RFC4648]. Note that trailing padding characters
+ ("=") are not used in the NSEC3 specification.
+
+ To cover: An NSEC3 RR is said to "cover" a name if the hash of the
+ name or "next closer" name falls between the owner name and the
+ next hashed owner name of the NSEC3. In other words, if it proves
+ the nonexistence of the name, either directly or by proving the
+ nonexistence of an ancestor of the name.
+
+ To match: An NSEC3 RR is said to "match" a name if the owner name of
+ the NSEC3 RR is the same as the hashed owner name of that name.
+
+2. Backwards Compatibility
+
+ This specification describes a protocol change that is not generally
+ backwards compatible with [RFC4033], [RFC4034], and [RFC4035]. In
+ particular, security-aware resolvers that are unaware of this
+ specification (NSEC3-unaware resolvers) may fail to validate the
+ responses introduced by this document.
+
+ In order to aid deployment, this specification uses a signaling
+ technique to prevent NSEC3-unaware resolvers from attempting to
+ validate responses from NSEC3-signed zones.
+
+ This specification allocates two new DNSKEY algorithm identifiers for
+ this purpose. Algorithm 6, DSA-NSEC3-SHA1 is an alias for algorithm
+ 3, DSA. Algorithm 7, RSASHA1-NSEC3-SHA1 is an alias for algorithm 5,
+ RSASHA1. These are not new algorithms, they are additional
+ identifiers for the existing algorithms.
+
+ Zones signed according to this specification MUST only use these
+ algorithm identifiers for their DNSKEY RRs. Because these new
+ identifiers will be unknown algorithms to existing, NSEC3-unaware
+ resolvers, those resolvers will then treat responses from the NSEC3
+ signed zone as insecure, as detailed in Section 5.2 of [RFC4035].
+
+ These algorithm identifiers are used with the NSEC3 hash algorithm
+ SHA1. Using other NSEC3 hash algorithms requires allocation of a new
+ alias (see Section 12.1.3).
+
+
+
+
+Laurie, et al. Standards Track [Page 6]
+
+RFC 5155 NSEC3 March 2008
+
+
+ Security aware resolvers that are aware of this specification MUST
+ recognize the new algorithm identifiers and treat them as equivalent
+ to the algorithms that they alias.
+
+ A methodology for transitioning from a DNSSEC signed zone to a zone
+ signed using NSEC3 is discussed in Section 10.4.
+
+3. The NSEC3 Resource Record
+
+ The NSEC3 Resource Record (RR) provides authenticated denial of
+ existence for DNS Resource Record Sets.
+
+ The NSEC3 RR lists RR types present at the original owner name of the
+ NSEC3 RR. It includes the next hashed owner name in the hash order
+ of the zone. The complete set of NSEC3 RRs in a zone indicates which
+ RRSets exist for the original owner name of the RR and form a chain
+ of hashed owner names in the zone. This information is used to
+ provide authenticated denial of existence for DNS data. To provide
+ protection against zone enumeration, the owner names used in the
+ NSEC3 RR are cryptographic hashes of the original owner name
+ prepended as a single label to the name of the zone. The NSEC3 RR
+ indicates which hash function is used to construct the hash, which
+ salt is used, and how many iterations of the hash function are
+ performed over the original owner name. The hashing technique is
+ described fully in Section 5.
+
+ Hashed owner names of unsigned delegations may be excluded from the
+ chain. An NSEC3 RR whose span covers the hash of an owner name or
+ "next closer" name of an unsigned delegation is referred to as an
+ Opt-Out NSEC3 RR and is indicated by the presence of a flag.
+
+ The owner name for the NSEC3 RR is the base32 encoding of the hashed
+ owner name prepended as a single label to the name of the zone.
+
+ The type value for the NSEC3 RR is 50.
+
+ The NSEC3 RR RDATA format is class independent and is described
+ below.
+
+ The class MUST be the same as the class of the original owner name.
+
+ The NSEC3 RR SHOULD have the same TTL value as the SOA minimum TTL
+ field. This is in the spirit of negative caching [RFC2308].
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 7]
+
+RFC 5155 NSEC3 March 2008
+
+
+3.1. RDATA Fields
+
+3.1.1. Hash Algorithm
+
+ The Hash Algorithm field identifies the cryptographic hash algorithm
+ used to construct the hash-value.
+
+ The values for this field are defined in the NSEC3 hash algorithm
+ registry defined in Section 11.
+
+3.1.2. Flags
+
+ The Flags field contains 8 one-bit flags that can be used to indicate
+ different processing. All undefined flags must be zero. The only
+ flag defined by this specification is the Opt-Out flag.
+
+3.1.2.1. Opt-Out Flag
+
+ If the Opt-Out flag is set, the NSEC3 record covers zero or more
+ unsigned delegations.
+
+ If the Opt-Out flag is clear, the NSEC3 record covers zero unsigned
+ delegations.
+
+ The Opt-Out Flag indicates whether this NSEC3 RR may cover unsigned
+ delegations. It is the least significant bit in the Flags field.
+ See Section 6 for details about the use of this flag.
+
+3.1.3. Iterations
+
+ The Iterations field defines the number of additional times the hash
+ function has been performed. More iterations result in greater
+ resiliency of the hash value against dictionary attacks, but at a
+ higher computational cost for both the server and resolver. See
+ Section 5 for details of the use of this field, and Section 10.3 for
+ limitations on the value.
+
+3.1.4. Salt Length
+
+ The Salt Length field defines the length of the Salt field in octets,
+ ranging in value from 0 to 255.
+
+3.1.5. Salt
+
+ The Salt field is appended to the original owner name before hashing
+ in order to defend against pre-calculated dictionary attacks. See
+ Section 5 for details on how the salt is used.
+
+
+
+
+Laurie, et al. Standards Track [Page 8]
+
+RFC 5155 NSEC3 March 2008
+
+
+3.1.6. Hash Length
+
+ The Hash Length field defines the length of the Next Hashed Owner
+ Name field, ranging in value from 1 to 255 octets.
+
+3.1.7. Next Hashed Owner Name
+
+ The Next Hashed Owner Name field contains the next hashed owner name
+ in hash order. This value is in binary format. Given the ordered
+ set of all hashed owner names, the Next Hashed Owner Name field
+ contains the hash of an owner name that immediately follows the owner
+ name of the given NSEC3 RR. The value of the Next Hashed Owner Name
+ field in the last NSEC3 RR in the zone is the same as the hashed
+ owner name of the first NSEC3 RR in the zone in hash order. Note
+ that, unlike the owner name of the NSEC3 RR, the value of this field
+ does not contain the appended zone name.
+
+3.1.8. Type Bit Maps
+
+ The Type Bit Maps field identifies the RRSet types that exist at the
+ original owner name of the NSEC3 RR.
+
+3.2. NSEC3 RDATA Wire Format
+
+ The RDATA of the NSEC3 RR is as shown below:
+
+ 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Hash Alg. | Flags | Iterations |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Salt Length | Salt /
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Hash Length | Next Hashed Owner Name /
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ / Type Bit Maps /
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Hash Algorithm is a single octet.
+
+ Flags field is a single octet, the Opt-Out flag is the least
+ significant bit, as shown below:
+
+ 0 1 2 3 4 5 6 7
+ +-+-+-+-+-+-+-+-+
+ | |O|
+ +-+-+-+-+-+-+-+-+
+
+
+
+
+Laurie, et al. Standards Track [Page 9]
+
+RFC 5155 NSEC3 March 2008
+
+
+ Iterations is represented as a 16-bit unsigned integer, with the most
+ significant bit first.
+
+ Salt Length is represented as an unsigned octet. Salt Length
+ represents the length of the Salt field in octets. If the value is
+ zero, the following Salt field is omitted.
+
+ Salt, if present, is encoded as a sequence of binary octets. The
+ length of this field is determined by the preceding Salt Length
+ field.
+
+ Hash Length is represented as an unsigned octet. Hash Length
+ represents the length of the Next Hashed Owner Name field in octets.
+
+ The next hashed owner name is not base32 encoded, unlike the owner
+ name of the NSEC3 RR. It is the unmodified binary hash value. It
+ does not include the name of the containing zone. The length of this
+ field is determined by the preceding Hash Length field.
+
+3.2.1. Type Bit Maps Encoding
+
+ The encoding of the Type Bit Maps field is the same as that used by
+ the NSEC RR, described in [RFC4034]. It is explained and clarified
+ here for clarity.
+
+ The RR type space is split into 256 window blocks, each representing
+ the low-order 8 bits of the 16-bit RR type space. Each block that
+ has at least one active RR type is encoded using a single octet
+ window number (from 0 to 255), a single octet bitmap length (from 1
+ to 32) indicating the number of octets used for the bitmap of the
+ window block, and up to 32 octets (256 bits) of bitmap.
+
+ Blocks are present in the NSEC3 RR RDATA in increasing numerical
+ order.
+
+ Type Bit Maps Field = ( Window Block # | Bitmap Length | Bitmap )+
+
+ where "|" denotes concatenation.
+
+ Each bitmap encodes the low-order 8 bits of RR types within the
+ window block, in network bit order. The first bit is bit 0. For
+ window block 0, bit 1 corresponds to RR type 1 (A), bit 2 corresponds
+ to RR type 2 (NS), and so forth. For window block 1, bit 1
+ corresponds to RR type 257, bit 2 to RR type 258. If a bit is set to
+ 1, it indicates that an RRSet of that type is present for the
+ original owner name of the NSEC3 RR. If a bit is set to 0, it
+ indicates that no RRSet of that type is present for the original
+ owner name of the NSEC3 RR.
+
+
+
+Laurie, et al. Standards Track [Page 10]
+
+RFC 5155 NSEC3 March 2008
+
+
+ Since bit 0 in window block 0 refers to the non-existing RR type 0,
+ it MUST be set to 0. After verification, the validator MUST ignore
+ the value of bit 0 in window block 0.
+
+ Bits representing Meta-TYPEs or QTYPEs as specified in Section 3.1 of
+ [RFC2929] or within the range reserved for assignment only to QTYPEs
+ and Meta-TYPEs MUST be set to 0, since they do not appear in zone
+ data. If encountered, they must be ignored upon reading.
+
+ Blocks with no types present MUST NOT be included. Trailing zero
+ octets in the bitmap MUST be omitted. The length of the bitmap of
+ each block is determined by the type code with the largest numerical
+ value, within that block, among the set of RR types present at the
+ original owner name of the NSEC3 RR. Trailing octets not specified
+ MUST be interpreted as zero octets.
+
+3.3. Presentation Format
+
+ The presentation format of the RDATA portion is as follows:
+
+ o The Hash Algorithm field is represented as an unsigned decimal
+ integer. The value has a maximum of 255.
+
+ o The Flags field is represented as an unsigned decimal integer.
+ The value has a maximum of 255.
+
+ o The Iterations field is represented as an unsigned decimal
+ integer. The value is between 0 and 65535, inclusive.
+
+ o The Salt Length field is not represented.
+
+ o The Salt field is represented as a sequence of case-insensitive
+ hexadecimal digits. Whitespace is not allowed within the
+ sequence. The Salt field is represented as "-" (without the
+ quotes) when the Salt Length field has a value of 0.
+
+ o The Hash Length field is not represented.
+
+ o The Next Hashed Owner Name field is represented as an unpadded
+ sequence of case-insensitive base32 digits, without whitespace.
+
+ o The Type Bit Maps field is represented as a sequence of RR type
+ mnemonics. When the mnemonic is not known, the TYPE
+ representation as described in Section 5 of [RFC3597] MUST be
+ used.
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 11]
+
+RFC 5155 NSEC3 March 2008
+
+
+4. The NSEC3PARAM Resource Record
+
+ The NSEC3PARAM RR contains the NSEC3 parameters (hash algorithm,
+ flags, iterations, and salt) needed by authoritative servers to
+ calculate hashed owner names. The presence of an NSEC3PARAM RR at a
+ zone apex indicates that the specified parameters may be used by
+ authoritative servers to choose an appropriate set of NSEC3 RRs for
+ negative responses. The NSEC3PARAM RR is not used by validators or
+ resolvers.
+
+ If an NSEC3PARAM RR is present at the apex of a zone with a Flags
+ field value of zero, then there MUST be an NSEC3 RR using the same
+ hash algorithm, iterations, and salt parameters present at every
+ hashed owner name in the zone. That is, the zone MUST contain a
+ complete set of NSEC3 RRs with the same hash algorithm, iterations,
+ and salt parameters.
+
+ The owner name for the NSEC3PARAM RR is the name of the zone apex.
+
+ The type value for the NSEC3PARAM RR is 51.
+
+ The NSEC3PARAM RR RDATA format is class independent and is described
+ below.
+
+ The class MUST be the same as the NSEC3 RRs to which this RR refers.
+
+4.1. RDATA Fields
+
+ The RDATA for this RR mirrors the first four fields in the NSEC3 RR.
+
+4.1.1. Hash Algorithm
+
+ The Hash Algorithm field identifies the cryptographic hash algorithm
+ used to construct the hash-value.
+
+ The acceptable values are the same as the corresponding field in the
+ NSEC3 RR.
+
+4.1.2. Flag Fields
+
+ The Opt-Out flag is not used and is set to zero.
+
+ All other flags are reserved for future use, and must be zero.
+
+ NSEC3PARAM RRs with a Flags field value other than zero MUST be
+ ignored.
+
+
+
+
+
+Laurie, et al. Standards Track [Page 12]
+
+RFC 5155 NSEC3 March 2008
+
+
+4.1.3. Iterations
+
+ The Iterations field defines the number of additional times the hash
+ is performed.
+
+ Its acceptable values are the same as the corresponding field in the
+ NSEC3 RR.
+
+4.1.4. Salt Length
+
+ The Salt Length field defines the length of the salt in octets,
+ ranging in value from 0 to 255.
+
+4.1.5. Salt
+
+ The Salt field is appended to the original owner name before hashing.
+
+4.2. NSEC3PARAM RDATA Wire Format
+
+ The RDATA of the NSEC3PARAM RR is as shown below:
+
+ 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Hash Alg. | Flags | Iterations |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Salt Length | Salt /
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Hash Algorithm is a single octet.
+
+ Flags field is a single octet.
+
+ Iterations is represented as a 16-bit unsigned integer, with the most
+ significant bit first.
+
+ Salt Length is represented as an unsigned octet. Salt Length
+ represents the length of the following Salt field in octets. If the
+ value is zero, the Salt field is omitted.
+
+ Salt, if present, is encoded as a sequence of binary octets. The
+ length of this field is determined by the preceding Salt Length
+ field.
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 13]
+
+RFC 5155 NSEC3 March 2008
+
+
+4.3. Presentation Format
+
+ The presentation format of the RDATA portion is as follows:
+
+ o The Hash Algorithm field is represented as an unsigned decimal
+ integer. The value has a maximum of 255.
+
+ o The Flags field is represented as an unsigned decimal integer.
+ The value has a maximum value of 255.
+
+ o The Iterations field is represented as an unsigned decimal
+ integer. The value is between 0 and 65535, inclusive.
+
+ o The Salt Length field is not represented.
+
+ o The Salt field is represented as a sequence of case-insensitive
+ hexadecimal digits. Whitespace is not allowed within the
+ sequence. This field is represented as "-" (without the quotes)
+ when the Salt Length field is zero.
+
+5. Calculation of the Hash
+
+ The hash calculation uses three of the NSEC3 RDATA fields: Hash
+ Algorithm, Salt, and Iterations.
+
+ Define H(x) to be the hash of x using the Hash Algorithm selected by
+ the NSEC3 RR, k to be the number of Iterations, and || to indicate
+ concatenation. Then define:
+
+ IH(salt, x, 0) = H(x || salt), and
+
+ IH(salt, x, k) = H(IH(salt, x, k-1) || salt), if k > 0
+
+ Then the calculated hash of an owner name is
+
+ IH(salt, owner name, iterations),
+
+ where the owner name is in the canonical form, defined as:
+
+ The wire format of the owner name where:
+
+ 1. The owner name is fully expanded (no DNS name compression) and
+ fully qualified;
+
+ 2. All uppercase US-ASCII letters are replaced by the corresponding
+ lowercase US-ASCII letters;
+
+
+
+
+
+Laurie, et al. Standards Track [Page 14]
+
+RFC 5155 NSEC3 March 2008
+
+
+ 3. If the owner name is a wildcard name, the owner name is in its
+ original unexpanded form, including the "*" label (no wildcard
+ substitution);
+
+ This form is as defined in Section 6.2 of [RFC4034].
+
+ The method to calculate the Hash is based on [RFC2898].
+
+6. Opt-Out
+
+ In this specification, as in [RFC4033], [RFC4034] and [RFC4035], NS
+ RRSets at delegation points are not signed and may be accompanied by
+ a DS RRSet. With the Opt-Out bit clear, the security status of the
+ child zone is determined by the presence or absence of this DS RRSet,
+ cryptographically proven by the signed NSEC3 RR at the hashed owner
+ name of the delegation. Setting the Opt-Out flag modifies this by
+ allowing insecure delegations to exist within the signed zone without
+ a corresponding NSEC3 RR at the hashed owner name of the delegation.
+
+ An Opt-Out NSEC3 RR is said to cover a delegation if the hash of the
+ owner name or "next closer" name of the delegation is between the
+ owner name of the NSEC3 RR and the next hashed owner name.
+
+ An Opt-Out NSEC3 RR does not assert the existence or non-existence of
+ the insecure delegations that it may cover. This allows for the
+ addition or removal of these delegations without recalculating or re-
+ signing RRs in the NSEC3 RR chain. However, Opt-Out NSEC3 RRs do
+ assert the (non)existence of other, authoritative RRSets.
+
+ An Opt-Out NSEC3 RR MAY have the same original owner name as an
+ insecure delegation. In this case, the delegation is proven insecure
+ by the lack of a DS bit in the type map and the signed NSEC3 RR does
+ assert the existence of the delegation.
+
+ Zones using Opt-Out MAY contain a mixture of Opt-Out NSEC3 RRs and
+ non-Opt-Out NSEC3 RRs. If an NSEC3 RR is not Opt-Out, there MUST NOT
+ be any hashed owner names of insecure delegations (nor any other RRs)
+ between it and the name indicated by the next hashed owner name in
+ the NSEC3 RDATA. If it is Opt-Out, it MUST only cover hashed owner
+ names or hashed "next closer" names of insecure delegations.
+
+ The effects of the Opt-Out flag on signing, serving, and validating
+ responses are covered in following sections.
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 15]
+
+RFC 5155 NSEC3 March 2008
+
+
+7. Authoritative Server Considerations
+
+7.1. Zone Signing
+
+ Zones using NSEC3 must satisfy the following properties:
+
+ o Each owner name within the zone that owns authoritative RRSets
+ MUST have a corresponding NSEC3 RR. Owner names that correspond
+ to unsigned delegations MAY have a corresponding NSEC3 RR.
+ However, if there is not a corresponding NSEC3 RR, there MUST be
+ an Opt-Out NSEC3 RR that covers the "next closer" name to the
+ delegation. Other non-authoritative RRs are not represented by
+ NSEC3 RRs.
+
+ o Each empty non-terminal MUST have a corresponding NSEC3 RR, unless
+ the empty non-terminal is only derived from an insecure delegation
+ covered by an Opt-Out NSEC3 RR.
+
+ o The TTL value for any NSEC3 RR SHOULD be the same as the minimum
+ TTL value field in the zone SOA RR.
+
+ o The Type Bit Maps field of every NSEC3 RR in a signed zone MUST
+ indicate the presence of all types present at the original owner
+ name, except for the types solely contributed by an NSEC3 RR
+ itself. Note that this means that the NSEC3 type itself will
+ never be present in the Type Bit Maps.
+
+ The following steps describe a method of proper construction of NSEC3
+ RRs. This is not the only such possible method.
+
+ 1. Select the hash algorithm and the values for salt and iterations.
+
+ 2. For each unique original owner name in the zone add an NSEC3 RR.
+
+ * If Opt-Out is being used, owner names of unsigned delegations
+ MAY be excluded.
+
+ * The owner name of the NSEC3 RR is the hash of the original
+ owner name, prepended as a single label to the zone name.
+
+ * The Next Hashed Owner Name field is left blank for the moment.
+
+ * If Opt-Out is being used, set the Opt-Out bit to one.
+
+ * For collision detection purposes, optionally keep track of the
+ original owner name with the NSEC3 RR.
+
+
+
+
+
+Laurie, et al. Standards Track [Page 16]
+
+RFC 5155 NSEC3 March 2008
+
+
+ * Additionally, for collision detection purposes, optionally
+ create an additional NSEC3 RR corresponding to the original
+ owner name with the asterisk label prepended (i.e., as if a
+ wildcard existed as a child of this owner name) and keep track
+ of this original owner name. Mark this NSEC3 RR as temporary.
+
+ 3. For each RRSet at the original owner name, set the corresponding
+ bit in the Type Bit Maps field.
+
+ 4. If the difference in number of labels between the apex and the
+ original owner name is greater than 1, additional NSEC3 RRs need
+ to be added for every empty non-terminal between the apex and the
+ original owner name. This process may generate NSEC3 RRs with
+ duplicate hashed owner names. Optionally, for collision
+ detection, track the original owner names of these NSEC3 RRs and
+ create temporary NSEC3 RRs for wildcard collisions in a similar
+ fashion to step 1.
+
+ 5. Sort the set of NSEC3 RRs into hash order.
+
+ 6. Combine NSEC3 RRs with identical hashed owner names by replacing
+ them with a single NSEC3 RR with the Type Bit Maps field
+ consisting of the union of the types represented by the set of
+ NSEC3 RRs. If the original owner name was tracked, then
+ collisions may be detected when combining, as all of the matching
+ NSEC3 RRs should have the same original owner name. Discard any
+ possible temporary NSEC3 RRs.
+
+ 7. In each NSEC3 RR, insert the next hashed owner name by using the
+ value of the next NSEC3 RR in hash order. The next hashed owner
+ name of the last NSEC3 RR in the zone contains the value of the
+ hashed owner name of the first NSEC3 RR in the hash order.
+
+ 8. Finally, add an NSEC3PARAM RR with the same Hash Algorithm,
+ Iterations, and Salt fields to the zone apex.
+
+ If a hash collision is detected, then a new salt has to be chosen,
+ and the signing process restarted.
+
+7.2. Zone Serving
+
+ This specification modifies DNSSEC-enabled DNS responses generated by
+ authoritative servers. In particular, it replaces the use of NSEC
+ RRs in such responses with NSEC3 RRs.
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 17]
+
+RFC 5155 NSEC3 March 2008
+
+
+ In the following response cases, the NSEC RRs dictated by DNSSEC
+ [RFC4035] are replaced with NSEC3 RRs that prove the same facts.
+ Responses that would not contain NSEC RRs are unchanged by this
+ specification.
+
+ When returning responses containing multiple NSEC3 RRs, all of the
+ NSEC3 RRs MUST use the same hash algorithm, iteration, and salt
+ values. The Flags field value MUST be either zero or one.
+
+7.2.1. Closest Encloser Proof
+
+ For many NSEC3 responses a proof of the closest encloser is required.
+ This is a proof that some ancestor of the QNAME is the closest
+ encloser of QNAME.
+
+ This proof consists of (up to) two different NSEC3 RRs:
+
+ o An NSEC3 RR that matches the closest (provable) encloser.
+
+ o An NSEC3 RR that covers the "next closer" name to the closest
+ encloser.
+
+ The first NSEC3 RR essentially proposes a possible closest encloser,
+ and proves that the particular encloser does, in fact, exist. The
+ second NSEC3 RR proves that the possible closest encloser is the
+ closest, and proves that the QNAME (and any ancestors between QNAME
+ and the closest encloser) does not exist.
+
+ These NSEC3 RRs are collectively referred to as the "closest encloser
+ proof" in the subsequent descriptions.
+
+ For example, the closest encloser proof for the nonexistent
+ "alpha.beta.gamma.example." owner name might prove that
+ "gamma.example." is the closest encloser. This response would
+ contain the NSEC3 RR that matches "gamma.example.", and would also
+ contain the NSEC3 RR that covers "beta.gamma.example." (which is the
+ "next closer" name).
+
+ It is possible, when using Opt-Out (Section 6), to not be able to
+ prove the actual closest encloser because it is, or is part of an
+ insecure delegation covered by an Opt-Out span. In this case,
+ instead of proving the actual closest encloser, the closest provable
+ encloser is used. That is, the closest enclosing authoritative name
+ is used instead. In this case, the set of NSEC3 RRs used for this
+ proof is referred to as the "closest provable encloser proof".
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 18]
+
+RFC 5155 NSEC3 March 2008
+
+
+7.2.2. Name Error Responses
+
+ To prove the nonexistence of QNAME, a closest encloser proof and an
+ NSEC3 RR covering the (nonexistent) wildcard RR at the closest
+ encloser MUST be included in the response. This collection of (up
+ to) three NSEC3 RRs proves both that QNAME does not exist and that a
+ wildcard that could have matched QNAME also does not exist.
+
+ For example, if "gamma.example." is the closest provable encloser to
+ QNAME, then an NSEC3 RR covering "*.gamma.example." is included in
+ the authority section of the response.
+
+7.2.3. No Data Responses, QTYPE is not DS
+
+ The server MUST include the NSEC3 RR that matches QNAME. This NSEC3
+ RR MUST NOT have the bits corresponding to either the QTYPE or CNAME
+ set in its Type Bit Maps field.
+
+7.2.4. No Data Responses, QTYPE is DS
+
+ If there is an NSEC3 RR that matches QNAME, the server MUST return it
+ in the response. The bits corresponding with DS and CNAME MUST NOT
+ be set in the Type Bit Maps field of this NSEC3 RR.
+
+ If no NSEC3 RR matches QNAME, the server MUST return a closest
+ provable encloser proof for QNAME. The NSEC3 RR that covers the
+ "next closer" name MUST have the Opt-Out bit set (note that this is
+ true by definition -- if the Opt-Out bit is not set, something has
+ gone wrong).
+
+ If a server is authoritative for both sides of a zone cut at QNAME,
+ the server MUST return the proof from the parent side of the zone
+ cut.
+
+7.2.5. Wildcard No Data Responses
+
+ If there is a wildcard match for QNAME, but QTYPE is not present at
+ that name, the response MUST include a closest encloser proof for
+ QNAME and MUST include the NSEC3 RR that matches the wildcard. This
+ combination proves both that QNAME itself does not exist and that a
+ wildcard that matches QNAME does exist. Note that the closest
+ encloser to QNAME MUST be the immediate ancestor of the wildcard RR
+ (if this is not the case, then something has gone wrong).
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 19]
+
+RFC 5155 NSEC3 March 2008
+
+
+7.2.6. Wildcard Answer Responses
+
+ If there is a wildcard match for QNAME and QTYPE, then, in addition
+ to the expanded wildcard RRSet returned in the answer section of the
+ response, proof that the wildcard match was valid must be returned.
+
+ This proof is accomplished by proving that both QNAME does not exist
+ and that the closest encloser of the QNAME and the immediate ancestor
+ of the wildcard are the same (i.e., the correct wildcard matched).
+
+ To this end, the NSEC3 RR that covers the "next closer" name of the
+ immediate ancestor of the wildcard MUST be returned. It is not
+ necessary to return an NSEC3 RR that matches the closest encloser, as
+ the existence of this closest encloser is proven by the presence of
+ the expanded wildcard in the response.
+
+7.2.7. Referrals to Unsigned Subzones
+
+ If there is an NSEC3 RR that matches the delegation name, then that
+ NSEC3 RR MUST be included in the response. The DS bit in the type
+ bit maps of the NSEC3 RR MUST NOT be set.
+
+ If the zone is Opt-Out, then there may not be an NSEC3 RR
+ corresponding to the delegation. In this case, the closest provable
+ encloser proof MUST be included in the response. The included NSEC3
+ RR that covers the "next closer" name for the delegation MUST have
+ the Opt-Out flag set to one. (Note that this will be the case unless
+ something has gone wrong).
+
+7.2.8. Responding to Queries for NSEC3 Owner Names
+
+ The owner names of NSEC3 RRs are not represented in the NSEC3 RR
+ chain like other owner names. As a result, each NSEC3 owner name is
+ covered by another NSEC3 RR, effectively negating the existence of
+ the NSEC3 RR. This is a paradox, since the existence of an NSEC3 RR
+ can be proven by its RRSIG RRSet.
+
+ If the following conditions are all true:
+
+ o the QNAME equals the owner name of an existing NSEC3 RR, and
+
+ o no RR types exist at the QNAME, nor at any descendant of QNAME,
+
+ then the response MUST be constructed as a Name Error response
+ (Section 7.2.2). Or, in other words, the authoritative name server
+ will act as if the owner name of the NSEC3 RR did not exist.
+
+
+
+
+
+Laurie, et al. Standards Track [Page 20]
+
+RFC 5155 NSEC3 March 2008
+
+
+ Note that NSEC3 RRs are returned as a result of an AXFR or IXFR
+ query.
+
+7.2.9. Server Response to a Run-Time Collision
+
+ If the hash of a non-existing QNAME collides with the owner name of
+ an existing NSEC3 RR, then the server will be unable to return a
+ response that proves that QNAME does not exist. In this case, the
+ server MUST return a response with an RCODE of 2 (server failure).
+
+ Note that with the hash algorithm specified in this document, SHA-1,
+ such collisions are highly unlikely.
+
+7.3. Secondary Servers
+
+ Secondary servers (and perhaps other entities) need to reliably
+ determine which NSEC3 parameters (i.e., hash, salt, and iterations)
+ are present at every hashed owner name, in order to be able to choose
+ an appropriate set of NSEC3 RRs for negative responses. This is
+ indicated by an NSEC3PARAM RR present at the zone apex.
+
+ If there are multiple NSEC3PARAM RRs present, there are multiple
+ valid NSEC3 chains present. The server must choose one of them, but
+ may use any criteria to do so.
+
+7.4. Zones Using Unknown Hash Algorithms
+
+ Zones that are signed according to this specification, but are using
+ an unrecognized NSEC3 hash algorithm value, cannot be effectively
+ served. Such zones SHOULD be rejected when loading. Servers SHOULD
+ respond with RCODE=2 (server failure) responses when handling queries
+ that would fall under such zones.
+
+7.5. Dynamic Update
+
+ A zone signed using NSEC3 may accept dynamic updates [RFC2136].
+ However, NSEC3 introduces some special considerations for dynamic
+ updates.
+
+ Adding and removing names in a zone MUST account for the creation or
+ removal of empty non-terminals.
+
+ o When removing a name with a corresponding NSEC3 RR, any NSEC3 RRs
+ corresponding to empty non-terminals created by that name MUST be
+ removed. Note that more than one name may be asserting the
+ existence of a particular empty non-terminal.
+
+
+
+
+
+Laurie, et al. Standards Track [Page 21]
+
+RFC 5155 NSEC3 March 2008
+
+
+ o When adding a name that requires adding an NSEC3 RR, NSEC3 RRs
+ MUST also be added for any empty non-terminals that are created.
+ That is, if there is not an existing NSEC3 RR matching an empty
+ non-terminal, it must be created and added.
+
+ The presence of Opt-Out in a zone means that some additions or
+ delegations of names will not require changes to the NSEC3 RRs in a
+ zone.
+
+ o When removing a delegation RRSet, if that delegation does not have
+ a matching NSEC3 RR, then it was opted out. In this case, nothing
+ further needs to be done.
+
+ o When adding a delegation RRSet, if the "next closer" name of the
+ delegation is covered by an existing Opt-Out NSEC3 RR, then the
+ delegation MAY be added without modifying the NSEC3 RRs in the
+ zone.
+
+ The presence of Opt-Out in a zone means that when adding or removing
+ NSEC3 RRs, the value of the Opt-Out flag that should be set in new or
+ modified NSEC3 RRs is ambiguous. Servers SHOULD follow this set of
+ basic rules to resolve the ambiguity.
+
+ The central concept to these rules is that the state of the Opt-Out
+ flag of the covering NSEC3 RR is preserved.
+
+ o When removing an NSEC3 RR, the value of the Opt-Out flag for the
+ previous NSEC3 RR (the one whose next hashed owner name is
+ modified) should not be changed.
+
+ o When adding an NSEC3 RR, the value of the Opt-Out flag is set to
+ the value of the Opt-Out flag of the NSEC3 RR that previously
+ covered the owner name of the NSEC3 RR. That is, the now previous
+ NSEC3 RR.
+
+ If the zone in question is consistent with its use of the Opt-Out
+ flag (that is, all NSEC3 RRs in the zone have the same value for the
+ flag) then these rules will retain that consistency. If the zone is
+ not consistent in the use of the flag (i.e., a partially Opt-Out
+ zone), then these rules will not retain the same pattern of use of
+ the Opt-Out flag.
+
+ For zones that partially use the Opt-Out flag, if there is a logical
+ pattern for that use, the pattern could be maintained by using a
+ local policy on the server.
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 22]
+
+RFC 5155 NSEC3 March 2008
+
+
+8. Validator Considerations
+
+8.1. Responses with Unknown Hash Types
+
+ A validator MUST ignore NSEC3 RRs with unknown hash types. The
+ practical result of this is that responses containing only such NSEC3
+ RRs will generally be considered bogus.
+
+8.2. Verifying NSEC3 RRs
+
+ A validator MUST ignore NSEC3 RRs with a Flag fields value other than
+ zero or one.
+
+ A validator MAY treat a response as bogus if the response contains
+ NSEC3 RRs that contain different values for hash algorithm,
+ iterations, or salt from each other for that zone.
+
+8.3. Closest Encloser Proof
+
+ In order to verify a closest encloser proof, the validator MUST find
+ the longest name, X, such that
+
+ o X is an ancestor of QNAME that is matched by an NSEC3 RR present
+ in the response. This is a candidate for the closest encloser,
+ and
+
+ o The name one label longer than X (but still an ancestor of -- or
+ equal to -- QNAME) is covered by an NSEC3 RR present in the
+ response.
+
+ One possible algorithm for verifying this proof is as follows:
+
+ 1. Set SNAME=QNAME. Clear the flag.
+
+ 2. Check whether SNAME exists:
+
+ * If there is no NSEC3 RR in the response that matches SNAME
+ (i.e., an NSEC3 RR whose owner name is the same as the hash of
+ SNAME, prepended as a single label to the zone name), clear
+ the flag.
+
+ * If there is an NSEC3 RR in the response that covers SNAME, set
+ the flag.
+
+ * If there is a matching NSEC3 RR in the response and the flag
+ was set, then the proof is complete, and SNAME is the closest
+ encloser.
+
+
+
+
+Laurie, et al. Standards Track [Page 23]
+
+RFC 5155 NSEC3 March 2008
+
+
+ * If there is a matching NSEC3 RR in the response, but the flag
+ is not set, then the response is bogus.
+
+ 3. Truncate SNAME by one label from the left, go to step 2.
+
+ Once the closest encloser has been discovered, the validator MUST
+ check that the NSEC3 RR that has the closest encloser as the original
+ owner name is from the proper zone. The DNAME type bit must not be
+ set and the NS type bit may only be set if the SOA type bit is set.
+ If this is not the case, it would be an indication that an attacker
+ is using them to falsely deny the existence of RRs for which the
+ server is not authoritative.
+
+ In the following descriptions, the phrase "a closest (provable)
+ encloser proof for X" means that the algorithm above (or an
+ equivalent algorithm) proves that X does not exist by proving that an
+ ancestor of X is its closest encloser.
+
+8.4. Validating Name Error Responses
+
+ A validator MUST verify that there is a closest encloser proof for
+ QNAME present in the response and that there is an NSEC3 RR that
+ covers the wildcard at the closest encloser (i.e., the name formed by
+ prepending the asterisk label to the closest encloser).
+
+8.5. Validating No Data Responses, QTYPE is not DS
+
+ The validator MUST verify that an NSEC3 RR that matches QNAME is
+ present and that both the QTYPE and the CNAME type are not set in its
+ Type Bit Maps field.
+
+ Note that this test also covers the case where the NSEC3 RR exists
+ because it corresponds to an empty non-terminal, in which case the
+ NSEC3 RR will have an empty Type Bit Maps field.
+
+8.6. Validating No Data Responses, QTYPE is DS
+
+ If there is an NSEC3 RR that matches QNAME present in the response,
+ then that NSEC3 RR MUST NOT have the bits corresponding to DS and
+ CNAME set in its Type Bit Maps field.
+
+ If there is no such NSEC3 RR, then the validator MUST verify that a
+ closest provable encloser proof for QNAME is present in the response,
+ and that the NSEC3 RR that covers the "next closer" name has the Opt-
+ Out bit set.
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 24]
+
+RFC 5155 NSEC3 March 2008
+
+
+8.7. Validating Wildcard No Data Responses
+
+ The validator MUST verify a closest encloser proof for QNAME and MUST
+ find an NSEC3 RR present in the response that matches the wildcard
+ name generated by prepending the asterisk label to the closest
+ encloser. Furthermore, the bits corresponding to both QTYPE and
+ CNAME MUST NOT be set in the wildcard matching NSEC3 RR.
+
+8.8. Validating Wildcard Answer Responses
+
+ The verified wildcard answer RRSet in the response provides the
+ validator with a (candidate) closest encloser for QNAME. This
+ closest encloser is the immediate ancestor to the generating
+ wildcard.
+
+ Validators MUST verify that there is an NSEC3 RR that covers the
+ "next closer" name to QNAME present in the response. This proves
+ that QNAME itself did not exist and that the correct wildcard was
+ used to generate the response.
+
+8.9. Validating Referrals to Unsigned Subzones
+
+ The delegation name in a referral is the owner name of the NS RRSet
+ present in the authority section of the referral response.
+
+ If there is an NSEC3 RR present in the response that matches the
+ delegation name, then the validator MUST ensure that the NS bit is
+ set and that the DS bit is not set in the Type Bit Maps field of the
+ NSEC3 RR. The validator MUST also ensure that the NSEC3 RR is from
+ the correct (i.e., parent) zone. This is done by ensuring that the
+ SOA bit is not set in the Type Bit Maps field of this NSEC3 RR.
+
+ Note that the presence of an NS bit implies the absence of a DNAME
+ bit, so there is no need to check for the DNAME bit in the Type Bit
+ Maps field of the NSEC3 RR.
+
+ If there is no NSEC3 RR present that matches the delegation name,
+ then the validator MUST verify a closest provable encloser proof for
+ the delegation name. The validator MUST verify that the Opt-Out bit
+ is set in the NSEC3 RR that covers the "next closer" name to the
+ delegation name.
+
+
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 25]
+
+RFC 5155 NSEC3 March 2008
+
+
+9. Resolver Considerations
+
+9.1. NSEC3 Resource Record Caching
+
+ Caching resolvers MUST be able to retrieve the appropriate NSEC3 RRs
+ when returning responses that contain them. In DNSSEC [RFC4035], in
+ many cases it is possible to find the correct NSEC RR to return in a
+ response by name (e.g., when returning a referral, the NSEC RR will
+ always have the same owner name as the delegation). With this
+ specification, that will not be true, nor will a cache be able to
+ calculate the name(s) of the appropriate NSEC3 RR(s).
+ Implementations may need to use new methods for caching and
+ retrieving NSEC3 RRs.
+
+9.2. Use of the AD Bit
+
+ The AD bit, as defined by [RFC4035], MUST NOT be set when returning a
+ response containing a closest (provable) encloser proof in which the
+ NSEC3 RR that covers the "next closer" name has the Opt-Out bit set.
+
+ This rule is based on what this closest encloser proof actually
+ proves: names that would be covered by the Opt-Out NSEC3 RR may or
+ may not exist as insecure delegations. As such, not all the data in
+ responses containing such closest encloser proofs will have been
+ cryptographically verified, so the AD bit cannot be set.
+
+10. Special Considerations
+
+10.1. Domain Name Length Restrictions
+
+ Zones signed using this specification have additional domain name
+ length restrictions imposed upon them. In particular, zones with
+ names that, when converted into hashed owner names exceed the 255
+ octet length limit imposed by [RFC1035], cannot use this
+ specification.
+
+ The actual maximum length of a domain name in a particular zone
+ depends on both the length of the zone name (versus the whole domain
+ name) and the particular hash function used.
+
+ As an example, SHA-1 produces a hash of 160 bits. The base-32
+ encoding of 160 bits results in 32 characters. The 32 characters are
+ prepended to the name of the zone as a single label, which includes a
+ length field of a single octet. The maximum length of the zone name,
+ when using SHA-1, is 222 octets (255 - 33).
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 26]
+
+RFC 5155 NSEC3 March 2008
+
+
+10.2. DNAME at the Zone Apex
+
+ The DNAME specification in Section 3 of [RFC2672] has a 'no-
+ descendants' limitation. If a DNAME RR is present at node N, there
+ MUST be no data at any descendant of N.
+
+ If N is the apex of the zone, there will be NSEC3 and RRSIG types
+ present at descendants of N. This specification updates the DNAME
+ specification to allow NSEC3 and RRSIG types at descendants of the
+ apex regardless of the existence of DNAME at the apex.
+
+10.3. Iterations
+
+ Setting the number of iterations used allows the zone owner to choose
+ the cost of computing a hash, and therefore the cost of generating a
+ dictionary. Note that this is distinct from the effect of salt,
+ which prevents the use of a single precomputed dictionary for all
+ time.
+
+ Obviously the number of iterations also affects the zone owner's cost
+ of signing and serving the zone as well as the validator's cost of
+ verifying responses from the zone. We therefore impose an upper
+ limit on the number of iterations. We base this on the number of
+ iterations that approximates the cost of verifying an RRSet.
+
+ The limits, therefore, are based on the size of the smallest zone
+ signing key, rounded up to the nearest table value (or rounded down
+ if the key is larger than the largest table value).
+
+ A zone owner MUST NOT use a value higher than shown in the table
+ below for iterations for the given key size. A resolver MAY treat a
+ response with a higher value as insecure, after the validator has
+ verified that the signature over the NSEC3 RR is correct.
+
+ +----------+------------+
+ | Key Size | Iterations |
+ +----------+------------+
+ | 1024 | 150 |
+ | 2048 | 500 |
+ | 4096 | 2,500 |
+ +----------+------------+
+
+ This table is based on an approximation of the ratio between the cost
+ of an SHA-1 calculation and the cost of an RSA verification for keys
+ of size 1024 bits (150 to 1), 2048 bits (500 to 1), and 4096 bits
+ (2500 to 1).
+
+
+
+
+
+Laurie, et al. Standards Track [Page 27]
+
+RFC 5155 NSEC3 March 2008
+
+
+ The ratio between SHA-1 calculation and DSA verification is higher
+ (1500 to 1 for keys of size 1024). A higher iteration count degrades
+ performance, while DSA verification is already more expensive than
+ RSA for the same key size. Therefore the values in the table MUST be
+ used independent of the key algorithm.
+
+10.4. Transitioning a Signed Zone from NSEC to NSEC3
+
+ When transitioning an already signed and trusted zone to this
+ specification, care must be taken to prevent client validation
+ failures during the process.
+
+ The basic procedure is as follows:
+
+ 1. Transition all DNSKEYs to DNSKEYs using the algorithm aliases
+ described in Section 2. The actual method for safely and
+ securely changing the DNSKEY RRSet of the zone is outside the
+ scope of this specification. However, the end result MUST be
+ that all DS RRs in the parent use the specified algorithm
+ aliases.
+
+ After this transition is complete, all NSEC3-unaware clients will
+ treat the zone as insecure. At this point, the authoritative
+ server still returns negative and wildcard responses that contain
+ NSEC RRs.
+
+ 2. Add signed NSEC3 RRs to the zone, either incrementally or all at
+ once. If adding incrementally, then the last RRSet added MUST be
+ the NSEC3PARAM RRSet.
+
+ 3. Upon the addition of the NSEC3PARAM RRSet, the server switches to
+ serving negative and wildcard responses with NSEC3 RRs according
+ to this specification.
+
+ 4. Remove the NSEC RRs either incrementally or all at once.
+
+10.5. Transitioning a Signed Zone from NSEC3 to NSEC
+
+ To safely transition back to a DNSSEC [RFC4035] signed zone, simply
+ reverse the procedure above:
+
+ 1. Add NSEC RRs incrementally or all at once.
+
+ 2. Remove the NSEC3PARAM RRSet. This will signal the server to use
+ the NSEC RRs for negative and wildcard responses.
+
+ 3. Remove the NSEC3 RRs either incrementally or all at once.
+
+
+
+
+Laurie, et al. Standards Track [Page 28]
+
+RFC 5155 NSEC3 March 2008
+
+
+ 4. Transition all of the DNSKEYs to DNSSEC algorithm identifiers.
+ After this transition is complete, all NSEC3-unaware clients will
+ treat the zone as secure.
+
+11. IANA Considerations
+
+ Although the NSEC3 and NSEC3PARAM RR formats include a hash algorithm
+ parameter, this document does not define a particular mechanism for
+ safely transitioning from one NSEC3 hash algorithm to another. When
+ specifying a new hash algorithm for use with NSEC3, a transition
+ mechanism MUST also be defined.
+
+ This document updates the IANA registry "DOMAIN NAME SYSTEM
+ PARAMETERS" (http://www.iana.org/assignments/dns-parameters) in sub-
+ registry "TYPES", by defining two new types. Section 3 defines the
+ NSEC3 RR type 50. Section 4 defines the NSEC3PARAM RR type 51.
+
+ This document updates the IANA registry "DNS SECURITY ALGORITHM
+ NUMBERS -- per [RFC4035]"
+ (http://www.iana.org/assignments/dns-sec-alg-numbers). Section 2
+ defines the aliases DSA-NSEC3-SHA1 (6) and RSASHA1-NSEC3-SHA1 (7) for
+ respectively existing registrations DSA and RSASHA1 in combination
+ with NSEC3 hash algorithm SHA1.
+
+ Since these algorithm numbers are aliases for existing DNSKEY
+ algorithm numbers, the flags that exist for the original algorithm
+ are valid for the alias algorithm.
+
+ This document creates a new IANA registry for NSEC3 flags. This
+ registry is named "DNSSEC NSEC3 Flags". The initial contents of this
+ registry are:
+
+ 0 1 2 3 4 5 6 7
+ +---+---+---+---+---+---+---+---+
+ | | | | | | | |Opt|
+ | | | | | | | |Out|
+ +---+---+---+---+---+---+---+---+
+
+ bit 7 is the Opt-Out flag.
+
+ bits 0 - 6 are available for assignment.
+
+ Assignment of additional NSEC3 Flags in this registry requires IETF
+ Standards Action [RFC2434].
+
+ This document creates a new IANA registry for NSEC3PARAM flags. This
+ registry is named "DNSSEC NSEC3PARAM Flags". The initial contents of
+ this registry are:
+
+
+
+Laurie, et al. Standards Track [Page 29]
+
+RFC 5155 NSEC3 March 2008
+
+
+ 0 1 2 3 4 5 6 7
+ +---+---+---+---+---+---+---+---+
+ | | | | | | | | 0 |
+ +---+---+---+---+---+---+---+---+
+
+ bit 7 is reserved and must be 0.
+
+ bits 0 - 6 are available for assignment.
+
+ Assignment of additional NSEC3PARAM Flags in this registry requires
+ IETF Standards Action [RFC2434].
+
+ Finally, this document creates a new IANA registry for NSEC3 hash
+ algorithms. This registry is named "DNSSEC NSEC3 Hash Algorithms".
+ The initial contents of this registry are:
+
+ 0 is Reserved.
+
+ 1 is SHA-1.
+
+ 2-255 Available for assignment.
+
+ Assignment of additional NSEC3 hash algorithms in this registry
+ requires IETF Standards Action [RFC2434].
+
+12. Security Considerations
+
+12.1. Hashing Considerations
+
+12.1.1. Dictionary Attacks
+
+ The NSEC3 RRs are still susceptible to dictionary attacks (i.e., the
+ attacker retrieves all the NSEC3 RRs, then calculates the hashes of
+ all likely domain names, comparing against the hashes found in the
+ NSEC3 RRs, and thus enumerating the zone). These are substantially
+ more expensive than enumerating the original NSEC RRs would have
+ been, and in any case, such an attack could also be used directly
+ against the name server itself by performing queries for all likely
+ names, though this would obviously be more detectable. The expense
+ of this off-line attack can be chosen by setting the number of
+ iterations in the NSEC3 RR.
+
+ Zones are also susceptible to a pre-calculated dictionary attack --
+ that is, a list of hashes for all likely names is computed once, then
+ NSEC3 RR is scanned periodically and compared against the precomputed
+ hashes. This attack is prevented by changing the salt on a regular
+ basis.
+
+
+
+
+Laurie, et al. Standards Track [Page 30]
+
+RFC 5155 NSEC3 March 2008
+
+
+ The salt SHOULD be at least 64 bits long and unpredictable, so that
+ an attacker cannot anticipate the value of the salt and compute the
+ next set of dictionaries before the zone is published.
+
+12.1.2. Collisions
+
+ Hash collisions between QNAME and the owner name of an NSEC3 RR may
+ occur. When they do, it will be impossible to prove the non-
+ existence of the colliding QNAME. However, with SHA-1, this is
+ highly unlikely (on the order of 1 in 2^160). Note that DNSSEC
+ already relies on the presumption that a cryptographic hash function
+ is second pre-image resistant, since these hash functions are used
+ for generating and validating signatures and DS RRs.
+
+12.1.3. Transitioning to a New Hash Algorithm
+
+ Although the NSEC3 and NSEC3PARAM RR formats include a hash algorithm
+ parameter, this document does not define a particular mechanism for
+ safely transitioning from one NSEC3 hash algorithm to another. When
+ specifying a new hash algorithm for use with NSEC3, a transition
+ mechanism MUST also be defined. It is possible that the only
+ practical and palatable transition mechanisms may require an
+ intermediate transition to an insecure state, or to a state that uses
+ NSEC records instead of NSEC3.
+
+12.1.4. Using High Iteration Values
+
+ Since validators should treat responses containing NSEC3 RRs with
+ high iteration values as insecure, presence of just one signed NSEC3
+ RR with a high iteration value in a zone provides attackers with a
+ possible downgrade attack.
+
+ The attack is simply to remove any existing NSEC3 RRs from a
+ response, and replace or add a single (or multiple) NSEC3 RR that
+ uses a high iterations value to the response. Validators will then
+ be forced to treat the response as insecure. This attack would be
+ effective only when all of following conditions are met:
+
+ o There is at least one signed NSEC3 RR that uses a high iterations
+ value present in the zone.
+
+ o The attacker has access to one or more of these NSEC3 RRs. This
+ is trivially true when the NSEC3 RRs with high iteration values
+ are being returned in typical responses, but may also be true if
+ the attacker can access the zone via AXFR or IXFR queries, or any
+ other methodology.
+
+
+
+
+
+Laurie, et al. Standards Track [Page 31]
+
+RFC 5155 NSEC3 March 2008
+
+
+ Using a high number of iterations also introduces an additional
+ denial-of-service opportunity against servers, since servers must
+ calculate several hashes per negative or wildcard response.
+
+12.2. Opt-Out Considerations
+
+ The Opt-Out Flag (O) allows for unsigned names, in the form of
+ delegations to unsigned zones, to exist within an otherwise signed
+ zone. All unsigned names are, by definition, insecure, and their
+ validity or existence cannot be cryptographically proven.
+
+ In general:
+
+ o Resource records with unsigned names (whether existing or not)
+ suffer from the same vulnerabilities as RRs in an unsigned zone.
+ These vulnerabilities are described in more detail in [RFC3833]
+ (note in particular Section 2.3, "Name Chaining" and Section 2.6,
+ "Authenticated Denial of Domain Names").
+
+ o Resource records with signed names have the same security whether
+ or not Opt-Out is used.
+
+ Note that with or without Opt-Out, an insecure delegation may be
+ undetectably altered by an attacker. Because of this, the primary
+ difference in security when using Opt-Out is the loss of the ability
+ to prove the existence or nonexistence of an insecure delegation
+ within the span of an Opt-Out NSEC3 RR.
+
+ In particular, this means that a malicious entity may be able to
+ insert or delete RRs with unsigned names. These RRs are normally NS
+ RRs, but this also includes signed wildcard expansions (while the
+ wildcard RR itself is signed, its expanded name is an unsigned name).
+
+ Note that being able to add a delegation is functionally equivalent
+ to being able to add any RR type: an attacker merely has to forge a
+ delegation to name server under his/her control and place whatever
+ RRs needed at the subzone apex.
+
+ While in particular cases, this issue may not present a significant
+ security problem, in general it should not be lightly dismissed.
+ Therefore, it is strongly RECOMMENDED that Opt-Out be used sparingly.
+ In particular, zone signing tools SHOULD NOT default to using Opt-
+ Out, and MAY choose to not support Opt-Out at all.
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 32]
+
+RFC 5155 NSEC3 March 2008
+
+
+12.3. Other Considerations
+
+ Walking the NSEC3 RRs will reveal the total number of RRs in the zone
+ (plus empty non-terminals), and also what types there are. This
+ could be mitigated by adding dummy entries, but certainly an upper
+ limit can always be found.
+
+13. References
+
+13.1. Normative References
+
+ [RFC1034] Mockapetris, P., "Domain names - concepts and
+ facilities", STD 13, RFC 1034, November 1987.
+
+ [RFC1035] Mockapetris, P., "Domain names - implementation and
+ specification", STD 13, RFC 1035, November 1987.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [RFC2136] Vixie, P., Thomson, S., Rekhter, Y., and J. Bound,
+ "Dynamic Updates in the Domain Name System (DNS
+ UPDATE)", RFC 2136, April 1997.
+
+ [RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS
+ Specification", RFC 2181, July 1997.
+
+ [RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS
+ NCACHE)", RFC 2308, March 1998.
+
+ [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for
+ Writing an IANA Considerations Section in RFCs",
+ BCP 26, RFC 2434, October 1998.
+
+ [RFC2929] Eastlake, D., Brunner-Williams, E., and B. Manning,
+ "Domain Name System (DNS) IANA Considerations",
+ BCP 42, RFC 2929, September 2000.
+
+ [RFC3597] Gustafsson, A., "Handling of Unknown DNS Resource
+ Record (RR) Types", RFC 3597, September 2003.
+
+ [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D.,
+ and S. Rose, "DNS Security Introduction and
+ Requirements", RFC 4033, March 2005.
+
+ [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D.,
+ and S. Rose, "Resource Records for the DNS Security
+ Extensions", RFC 4034, March 2005.
+
+
+
+Laurie, et al. Standards Track [Page 33]
+
+RFC 5155 NSEC3 March 2008
+
+
+ [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D.,
+ and S. Rose, "Protocol Modifications for the DNS
+ Security Extensions", RFC 4035, March 2005.
+
+ [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
+ Encodings", RFC 4648, October 2006.
+
+13.2. Informative References
+
+ [DNSEXT-NO] Josefsson, S., "Authenticating Denial of Existence
+ in DNS with Minimum Disclosure", Work in Progress,
+ July 2000.
+
+ [DNSEXT-NSEC2v2] Laurie, B., "DNSSEC NSEC2 Owner and RDATA Format",
+ Work in Progress, December 2004.
+
+ [RFC2672] Crawford, M., "Non-Terminal DNS Name Redirection",
+ RFC 2672, August 1999.
+
+ [RFC2898] Kaliski, B., "PKCS #5: Password-Based Cryptography
+ Specification Version 2.0", RFC 2898,
+ September 2000.
+
+ [RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the
+ Domain Name System (DNS)", RFC 3833, August 2004.
+
+ [RFC4592] Lewis, E., "The Role of Wildcards in the Domain
+ Name System", RFC 4592, July 2006.
+
+ [RFC4956] Arends, R., Kosters, M., and D. Blacka, "DNS
+ Security (DNSSEC) Opt-In", RFC 4956, July 2007.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 34]
+
+RFC 5155 NSEC3 March 2008
+
+
+Appendix A. Example Zone
+
+ This is a zone showing its NSEC3 RRs. They can also be used as test
+ vectors for the hash algorithm.
+
+ The overall TTL and class are specified in the SOA RR, and are
+ subsequently omitted for clarity.
+
+ The zone is preceded by a list that contains the hashes of the
+ original ownernames.
+
+ ; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom
+ ; H(a.example) = 35mthgpgcu1qg68fab165klnsnk3dpvl
+ ; H(ai.example) = gjeqe526plbf1g8mklp59enfd789njgi
+ ; H(ns1.example) = 2t7b4g4vsa5smi47k61mv5bv1a22bojr
+ ; H(ns2.example) = q04jkcevqvmu85r014c7dkba38o0ji5r
+ ; H(w.example) = k8udemvp1j2f7eg6jebps17vp3n8i58h
+ ; H(*.w.example) = r53bq7cc2uvmubfu5ocmm6pers9tk9en
+ ; H(x.w.example) = b4um86eghhds6nea196smvmlo4ors995
+ ; H(y.w.example) = ji6neoaepv8b5o6k4ev33abha8ht9fgc
+ ; H(x.y.w.example) = 2vptu5timamqttgl4luu9kg21e0aor3s
+ ; H(xx.example) = t644ebqk9bibcna874givr6joj62mlhv
+ ; H(2t7b4g4vsa5smi47k61mv5bv1a22bojr.example)
+ ; = kohar7mbb8dc2ce8a9qvl8hon4k53uhi
+ example. 3600 IN SOA ns1.example. bugs.x.w.example. 1 3600 300 (
+ 3600000 3600 )
+ RRSIG SOA 7 1 3600 20150420235959 20051021000000 (
+ 40430 example.
+ Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i
+ q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd
+ VI2LmKusbZsT0Q== )
+ NS ns1.example.
+ NS ns2.example.
+ RRSIG NS 7 1 3600 20150420235959 20051021000000 (
+ 40430 example.
+ PVOgtMK1HHeSTau+HwDWC8Ts+6C8qtqd4pQJ
+ qOtdEVgg+MA+ai4fWDEhu3qHJyLcQ9tbD2vv
+ CnMXjtz6SyObxA== )
+ MX 1 xx.example.
+ RRSIG MX 7 1 3600 20150420235959 20051021000000 (
+ 40430 example.
+ GgQ1A9xs47k42VPvpL/a1BWUz/6XsnHkjotw
+ 9So8MQtZtl2wJBsnOQsaoHrRCrRbyriEl/GZ
+ n9Mto/Kx+wBo+w== )
+ DNSKEY 256 3 7 AwEAAaetidLzsKWUt4swWR8yu0wPHPiUi8LU (
+ sAD0QPWU+wzt89epO6tHzkMBVDkC7qphQO2h
+ TY4hHn9npWFRw5BYubE= )
+
+
+
+
+Laurie, et al. Standards Track [Page 35]
+
+RFC 5155 NSEC3 March 2008
+
+
+ DNSKEY 257 3 7 AwEAAcUlFV1vhmqx6NSOUOq2R/dsR7Xm3upJ (
+ j7IommWSpJABVfW8Q0rOvXdM6kzt+TAu92L9
+ AbsUdblMFin8CVF3n4s= )
+ RRSIG DNSKEY 7 1 3600 20150420235959 (
+ 20051021000000 12708 example.
+ AuU4juU9RaxescSmStrQks3Gh9FblGBlVU31
+ uzMZ/U/FpsUb8aC6QZS+sTsJXnLnz7flGOsm
+ MGQZf3bH+QsCtg== )
+ NSEC3PARAM 1 0 12 aabbccdd
+ RRSIG NSEC3PARAM 7 1 3600 20150420235959 (
+ 20051021000000 40430 example.
+ C1Gl8tPZNtnjlrYWDeeUV/sGLCyy/IHie2re
+ rN05XSA3Pq0U3+4VvGWYWdUMfflOdxqnXHwJ
+ TLQsjlkynhG6Cg== )
+ 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (
+ 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS
+ SOA NSEC3PARAM RRSIG )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL
+ IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762
+ BOCXJZMnpuwhpA== )
+ 2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. A 192.0.2.127
+ RRSIG A 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ h6c++bzhRuWWt2bykN6mjaTNBcXNq5UuL5Ed
+ K+iDP4eY8I0kSiKaCjg3tC1SQkeloMeub2GW
+ k8p6xHMPZumXlw== )
+ NSEC3 1 1 12 aabbccdd (
+ 2vptu5timamqttgl4luu9kg21e0aor3s A RRSIG )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ OmBvJ1Vgg1hCKMXHFiNeIYHK9XVW0iLDLwJN
+ 4TFoNxZuP03gAXEI634YwOc4YBNITrj413iq
+ NI6mRk/r1dOSUw== )
+ 2vptu5timamqttgl4luu9kg21e0aor3s.example. NSEC3 1 1 12 aabbccdd (
+ 35mthgpgcu1qg68fab165klnsnk3dpvl MX RRSIG )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ KL1V2oFYghNV0Hm7Tf2vpJjM6l+0g1JCcVYG
+ VfI0lKrhPmTsOA96cLEACgo1x8I7kApJX+ob
+ TuktZ+sdsZPY1w== )
+ 35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd (
+ b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG )
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 36]
+
+RFC 5155 NSEC3 March 2008
+
+
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ
+ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ
+ XtAIR3chwgW+SA== )
+ a.example. NS ns1.a.example.
+ NS ns2.a.example.
+ DS 58470 5 1 (
+ 3079F1593EBAD6DC121E202A8B766A6A4837206C )
+ RRSIG DS 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ XacFcQVHLVzdoc45EJhN616zQ4mEXtE8FzUh
+ M2KWjfy1VfRKD9r1MeVGwwoukOKgJxBPFsWo
+ o722vZ4UZ2dIdA== )
+ ns1.a.example. A 192.0.2.5
+ ns2.a.example. A 192.0.2.6
+ ai.example. A 192.0.2.9
+ RRSIG A 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ hVe+wKYMlObTRPhX0NL67GxeZfdxqr/QeR6F
+ tfdAj5+FgYxyzPEjIzvKWy00hWIl6wD3Vws+
+ rznEn8sQ64UdqA== )
+ HINFO "KLH-10" "ITS"
+ RRSIG HINFO 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ Yi42uOq43eyO6qXHNvwwfFnIustWgV5urFcx
+ enkLvs6pKRh00VBjODmf3Z4nMO7IOl6nHSQ1
+ v0wLHpEZG7Xj2w== )
+ AAAA 2001:db8:0:0:0:0:f00:baa9
+ RRSIG AAAA 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ LcdxKaCB5bGZwPDg+3JJ4O02zoMBrjxqlf6W
+ uaHQZZfTUpb9Nf2nxFGe2XRPfR5tpJT6GdRG
+ cHueLuXkMjBArQ== )
+ b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd (
+ gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh
+ 5u4m/CUiwtblEVOaAKKZd7S959OeiX43aLX3
+ pOv0TSTyiTxIZg== )
+ c.example. NS ns1.c.example.
+ NS ns2.c.example.
+ ns1.c.example. A 192.0.2.7
+ ns2.c.example. A 192.0.2.8
+ gjeqe526plbf1g8mklp59enfd789njgi.example. NSEC3 1 1 12 aabbccdd (
+ ji6neoaepv8b5o6k4ev33abha8ht9fgc HINFO A AAAA
+ RRSIG )
+
+
+
+Laurie, et al. Standards Track [Page 37]
+
+RFC 5155 NSEC3 March 2008
+
+
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ IVnezTJ9iqblFF97vPSmfXZ5Zozngx3KX3by
+ LTZC4QBH2dFWhf6scrGFZB980AfCxoD9qbbK
+ Dy+rdGIeRSVNyw== )
+ ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. NSEC3 1 1 12 aabbccdd (
+ k8udemvp1j2f7eg6jebps17vp3n8i58h )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ gPkFp1s2QDQ6wQzcg1uSebZ61W33rUBDcTj7
+ 2F3kQ490fEdp7k1BUIfbcZtPbX3YCpE+sIt0
+ MpzVSKfTwx4uYA== )
+ k8udemvp1j2f7eg6jebps17vp3n8i58h.example. NSEC3 1 1 12 aabbccdd (
+ kohar7mbb8dc2ce8a9qvl8hon4k53uhi )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ FtXGbvF0+wf8iWkyo73enAuVx03klN+pILBK
+ S6qCcftVtfH4yVzsEZquJ27NHR7ruxJWDNMt
+ Otx7w9WfcIg62A== )
+ kohar7mbb8dc2ce8a9qvl8hon4k53uhi.example. NSEC3 1 1 12 aabbccdd (
+ q04jkcevqvmu85r014c7dkba38o0ji5r A RRSIG )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ VrDXs2uVW21N08SyQIz88zml+y4ZCInTwgDr
+ 6zz43yAg+LFERjOrj3Ojct51ac7Dp4eZbf9F
+ QJazmASFKGxGXg== )
+ ns1.example. A 192.0.2.1
+ RRSIG A 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ bu6kx73n6XEunoVGuRfAgY7EF/AJqHy7hj0j
+ kiqJjB0dOrx3wuz9SaBeGfqWIdn/uta3SavN
+ 4FRvZR9SCFHF5Q== )
+ ns2.example. A 192.0.2.2
+ RRSIG A 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ ktQ3TqE0CfRfki0Rb/Ip5BM0VnxelbuejCC4
+ zpLbFKA/7eD7UNAwxMgxJPtbdST+syjYSJaj
+ 4IHfeX6n8vfoGA== )
+ q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd (
+ r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3
+ ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN
+ NlkxWcLsIlMmUg== )
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 38]
+
+RFC 5155 NSEC3 March 2008
+
+
+ r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. NSEC3 1 1 12 aabbccdd (
+ t644ebqk9bibcna874givr6joj62mlhv MX RRSIG )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ aupviViruXs4bDg9rCbezzBMf9h1ZlDvbW/C
+ ZFKulIGXXLj8B/fsDJarXVDA9bnUoRhEbKp+
+ HF1FWKW7RIJdtQ== )
+ t644ebqk9bibcna874givr6joj62mlhv.example. NSEC3 1 1 12 aabbccdd (
+ 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom HINFO A AAAA
+ RRSIG )
+ RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ RAjGECB8P7O+F4Pa4Dx3tC0M+Z3KmlLKImca
+ fb9XWwx+NWUNz7NBEDBQHivIyKPVDkChcePI
+ X1xPl1ATNa+8Dw== )
+ *.w.example. MX 1 ai.example.
+ RRSIG MX 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ CikebjQwGQPwijVcxgcZcSJKtfynugtlBiKb
+ 9FcBTrmOoyQ4InoWVudhCWsh/URX3lc4WRUM
+ ivEBP6+4KS3ldA== )
+ x.w.example. MX 1 xx.example.
+ RRSIG MX 7 3 3600 20150420235959 20051021000000 (
+ 40430 example.
+ IrK3tq/tHFIBF0scHiE/1IwMAvckS/55hAVv
+ QyxTFbkAdDloP3NbZzu+yoSsr3b3OX6qbBpY
+ 7WCtwwekLKRAwQ== )
+ x.y.w.example. MX 1 xx.example.
+ RRSIG MX 7 4 3600 20150420235959 20051021000000 (
+ 40430 example.
+ MqSt5HqJIN8+SLlzTOImrh5h9Xa6gDvAW/Gn
+ nbdPc6Z7nXvCpLPJj/5lCwx3VuzVOjkbvXze
+ 8/8Ccl2Zn2hbug== )
+ xx.example. A 192.0.2.10
+ RRSIG A 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ T35hBWEZ017VC5u2c4OriKyVn/pu+fVK4AlX
+ YOxJ6iQylfV2HQIKjv6b7DzINB3aF/wjJqgX
+ pQvhq+Ac6+ZiFg== )
+ HINFO "KLH-10" "TOPS-20"
+ RRSIG HINFO 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ KimG+rDd+7VA1zRsu0ITNAQUTRlpnsmqWrih
+ FRnU+bRa93v2e5oFNFYCs3Rqgv62K93N7AhW
+ 6Jfqj/8NzWjvKg== )
+ AAAA 2001:db8:0:0:0:0:f00:baaa
+
+
+
+
+
+Laurie, et al. Standards Track [Page 39]
+
+RFC 5155 NSEC3 March 2008
+
+
+ RRSIG AAAA 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ IXBcXORITNwd8h3gNwyxtYFvAupS/CYWufVe
+ uBUX0O25ivBCULjZjpDxFSxfohb/KA7YRdxE
+ NzYfMItpILl/Xw== )
+
+Appendix B. Example Responses
+
+ The examples in this section show response messages using the signed
+ zone example in Appendix A.
+
+B.1. Name Error
+
+ An authoritative name error. The NSEC3 RRs prove that the name does
+ not exist and that there is no wildcard RR that should have been
+ expanded.
+
+;; Header: QR AA DO RCODE=3
+;;
+;; Question
+a.c.x.w.example. IN A
+
+;; Answer
+;; (empty)
+
+;; Authority
+
+example. SOA ns1.example. bugs.x.w.example. 1 3600 300 (
+ 3600000 3600 )
+example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 (
+ 40430 example.
+ Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i
+ q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd
+ VI2LmKusbZsT0Q== )
+
+;; NSEC3 RR that covers the "next closer" name (c.x.w.example)
+;; H(c.x.w.example) = 0va5bpr2ou0vk0lbqeeljri88laipsfh
+
+0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (
+ 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS
+ SOA NSEC3PARAM RRSIG )
+0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL
+ IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762
+ BOCXJZMnpuwhpA== )
+
+
+
+
+
+Laurie, et al. Standards Track [Page 40]
+
+RFC 5155 NSEC3 March 2008
+
+
+;; NSEC3 RR that matches the closest encloser (x.w.example)
+;; H(x.w.example) = b4um86eghhds6nea196smvmlo4ors995
+
+b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd (
+ gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG )
+b4um86eghhds6nea196smvmlo4ors995.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh
+ 5u4m/CUiwtblEVOaAKKZd7S959OeiX43aLX3
+ pOv0TSTyiTxIZg== )
+
+;; NSEC3 RR that covers wildcard at the closest encloser (*.x.w.example)
+;; H(*.x.w.example) = 92pqneegtaue7pjatc3l3qnk738c6v5m
+
+35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd (
+ b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG )
+35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ
+ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ
+ XtAIR3chwgW+SA== )
+
+;; Additional
+;; (empty)
+
+ The query returned three NSEC3 RRs that prove that the requested data
+ does not exist and that no wildcard expansion applies. The negative
+ response is authenticated by verifying the NSEC3 RRs. The
+ corresponding RRSIGs indicate that the NSEC3 RRs are signed by an
+ "example" DNSKEY of algorithm 7 and with key tag 40430. The resolver
+ needs the corresponding DNSKEY RR in order to authenticate this
+ answer.
+
+ One of the owner names of the NSEC3 RRs matches the closest encloser.
+ One of the NSEC3 RRs prove that there exists no longer name. One of
+ the NSEC3 RRs prove that there exists no wildcard RRSets that should
+ have been expanded. The closest encloser can be found by applying
+ the algorithm in Section 8.3.
+
+ In the above example, the name 'x.w.example' hashes to
+ 'b4um86eghhds6nea196smvmlo4ors995'. This indicates that this might
+ be the closest encloser. To prove that 'c.x.w.example' and
+ '*.x.w.example' do not exist, these names are hashed to,
+ respectively, '0va5bpr2ou0vk0lbqeeljri88laipsfh' and
+ '92pqneegtaue7pjatc3l3qnk738c6v5m'. The first and last NSEC3 RRs
+ prove that these hashed owner names do not exist.
+
+
+
+
+
+Laurie, et al. Standards Track [Page 41]
+
+RFC 5155 NSEC3 March 2008
+
+
+B.2. No Data Error
+
+ A "no data" response. The NSEC3 RR proves that the name exists and
+ that the requested RR type does not.
+
+;; Header: QR AA DO RCODE=0
+;;
+;; Question
+ns1.example. IN MX
+
+;; Answer
+;; (empty)
+
+;; Authority
+example. SOA ns1.example. bugs.x.w.example. 1 3600 300 (
+ 3600000 3600 )
+example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 (
+ 40430 example.
+ Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i
+ q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd
+ VI2LmKusbZsT0Q== )
+
+;; NSEC3 RR matches the QNAME and shows that the MX type bit is not set.
+
+2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. NSEC3 1 1 12 aabbccdd (
+ 2vptu5timamqttgl4luu9kg21e0aor3s A RRSIG )
+2t7b4g4vsa5smi47k61mv5bv1a22bojr.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ OmBvJ1Vgg1hCKMXHFiNeIYHK9XVW0iLDLwJN
+ 4TFoNxZuP03gAXEI634YwOc4YBNITrj413iq
+ NI6mRk/r1dOSUw== )
+;; Additional
+;; (empty)
+
+ The query returned an NSEC3 RR that proves that the requested name
+ exists ("ns1.example." hashes to "2t7b4g4vsa5smi47k61mv5bv1a22bojr"),
+ but the requested RR type does not exist (type MX is absent in the
+ type code list of the NSEC3 RR), and was not a CNAME (type CNAME is
+ also absent in the type code list of the NSEC3 RR).
+
+
+
+
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 42]
+
+RFC 5155 NSEC3 March 2008
+
+
+B.2.1. No Data Error, Empty Non-Terminal
+
+ A "no data" response because of an empty non-terminal. The NSEC3 RR
+ proves that the name exists and that the requested RR type does not.
+
+ ;; Header: QR AA DO RCODE=0
+ ;;
+ ;; Question
+ y.w.example. IN A
+
+ ;; Answer
+ ;; (empty)
+
+ ;; Authority
+ example. SOA ns1.example. bugs.x.w.example. 1 3600 300 (
+ 3600000 3600 )
+ example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 (
+ 40430 example.
+ Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i
+ q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd
+ VI2LmKusbZsT0Q== )
+
+ ;; NSEC3 RR matches the QNAME and shows that the A type bit is not set.
+
+ ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. NSEC3 1 1 12 aabbccdd (
+ k8udemvp1j2f7eg6jebps17vp3n8i58h )
+ ji6neoaepv8b5o6k4ev33abha8ht9fgc.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ gPkFp1s2QDQ6wQzcg1uSebZ61W33rUBDcTj7
+ 2F3kQ490fEdp7k1BUIfbcZtPbX3YCpE+sIt0
+ MpzVSKfTwx4uYA== )
+
+ ;; Additional
+ ;; (empty)
+
+ The query returned an NSEC3 RR that proves that the requested name
+ exists ("y.w.example." hashes to "ji6neoaepv8b5o6k4ev33abha8ht9fgc"),
+ but the requested RR type does not exist (Type A is absent in the
+ Type Bit Maps field of the NSEC3 RR). Note that, unlike an empty
+ non-terminal proof using NSECs, this is identical to a No Data Error.
+ This example is solely mentioned to be complete.
+
+
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 43]
+
+RFC 5155 NSEC3 March 2008
+
+
+B.3. Referral to an Opt-Out Unsigned Zone
+
+ The NSEC3 RRs prove that nothing for this delegation was signed.
+ There is no proof that the unsigned delegation exists.
+
+ ;; Header: QR DO RCODE=0
+ ;;
+ ;; Question
+ mc.c.example. IN MX
+
+ ;; Answer
+ ;; (empty)
+
+ ;; Authority
+ c.example. NS ns1.c.example.
+ NS ns2.c.example.
+
+ ;; NSEC3 RR that covers the "next closer" name (c.example)
+ ;; H(c.example) = 4g6p9u5gvfshp30pqecj98b3maqbn1ck
+
+ 35mthgpgcu1qg68fab165klnsnk3dpvl.example. NSEC3 1 1 12 aabbccdd (
+ b4um86eghhds6nea196smvmlo4ors995 NS DS RRSIG )
+ 35mthgpgcu1qg68fab165klnsnk3dpvl.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ g6jPUUpduAJKRljUsN8gB4UagAX0NxY9shwQ
+ Aynzo8EUWH+z6hEIBlUTPGj15eZll6VhQqgZ
+ XtAIR3chwgW+SA== )
+
+ ;; NSEC3 RR that matches the closest encloser (example)
+ ;; H(example) = 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom
+
+ 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (
+ 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS
+ SOA NSEC3PARAM RRSIG )
+ 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL
+ IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762
+ BOCXJZMnpuwhpA== )
+
+ ;; Additional
+ ns1.c.example. A 192.0.2.7
+ ns2.c.example. A 192.0.2.8
+
+ The query returned a referral to the unsigned "c.example." zone. The
+ response contains the closest provable encloser of "c.example" to be
+ "example", since the hash of "c.example"
+
+
+
+
+Laurie, et al. Standards Track [Page 44]
+
+RFC 5155 NSEC3 March 2008
+
+
+ ("4g6p9u5gvfshp30pqecj98b3maqbn1ck") is covered by the first NSEC3 RR
+ and its Opt-Out bit is set.
+
+B.4. Wildcard Expansion
+
+ A query that was answered with a response containing a wildcard
+ expansion. The label count in the RRSIG RRSet in the answer section
+ indicates that a wildcard RRSet was expanded to produce this
+ response, and the NSEC3 RR proves that no "next closer" name exists
+ in the zone.
+
+ ;; Header: QR AA DO RCODE=0
+ ;;
+ ;; Question
+ a.z.w.example. IN MX
+
+ ;; Answer
+ a.z.w.example. MX 1 ai.example.
+ a.z.w.example. RRSIG MX 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ CikebjQwGQPwijVcxgcZcSJKtfynugtlBiKb
+ 9FcBTrmOoyQ4InoWVudhCWsh/URX3lc4WRUM
+ ivEBP6+4KS3ldA== )
+
+ ;; Authority
+ example. NS ns1.example.
+ example. NS ns2.example.
+ example. RRSIG NS 7 1 3600 20150420235959 20051021000000 (
+ 40430 example.
+ PVOgtMK1HHeSTau+HwDWC8Ts+6C8qtqd4pQJ
+ qOtdEVgg+MA+ai4fWDEhu3qHJyLcQ9tbD2vv
+ CnMXjtz6SyObxA== )
+
+ ;; NSEC3 RR that covers the "next closer" name (z.w.example)
+ ;; H(z.w.example) = qlu7gtfaeh0ek0c05ksfhdpbcgglbe03
+
+ q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd (
+ r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG )
+ q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3
+ ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN
+ NlkxWcLsIlMmUg== )
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 45]
+
+RFC 5155 NSEC3 March 2008
+
+
+ ;; Additional
+ ai.example. A 192.0.2.9
+ ai.example. RRSIG A 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ hVe+wKYMlObTRPhX0NL67GxeZfdxqr/QeR6F
+ tfdAj5+FgYxyzPEjIzvKWy00hWIl6wD3Vws+
+ rznEn8sQ64UdqA== )
+ ai.example. AAAA 2001:db8:0:0:0:0:f00:baa9
+ ai.example. RRSIG AAAA 7 2 3600 20150420235959 20051021000000 (
+ 40430 example.
+ LcdxKaCB5bGZwPDg+3JJ4O02zoMBrjxqlf6W
+ uaHQZZfTUpb9Nf2nxFGe2XRPfR5tpJT6GdRG
+ cHueLuXkMjBArQ== )
+
+ The query returned an answer that was produced as a result of a
+ wildcard expansion. The answer section contains a wildcard RRSet
+ expanded as it would be in a traditional DNS response. The RRSIG
+ Labels field value of 2 indicates that the answer is the result of a
+ wildcard expansion, as the "a.z.w.example" name contains 4 labels.
+ This also shows that "w.example" exists, so there is no need for an
+ NSEC3 RR that matches the closest encloser.
+
+ The NSEC3 RR proves that no closer match could have been used to
+ answer this query.
+
+B.5. Wildcard No Data Error
+
+ A "no data" response for a name covered by a wildcard. The NSEC3 RRs
+ prove that the matching wildcard name does not have any RRs of the
+ requested type and that no closer match exists in the zone.
+
+ ;; Header: QR AA DO RCODE=0
+ ;;
+ ;; Question
+ a.z.w.example. IN AAAA
+
+ ;; Answer
+ ;; (empty)
+
+ ;; Authority
+ example. SOA ns1.example. bugs.x.w.example. 1 3600 300 (
+ 3600000 3600 )
+ example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 (
+ 40430 example.
+ Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i
+ q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd
+ VI2LmKusbZsT0Q== )
+
+
+
+
+Laurie, et al. Standards Track [Page 46]
+
+RFC 5155 NSEC3 March 2008
+
+
+ ;; NSEC3 RR that matches the closest encloser (w.example)
+ ;; H(w.example) = k8udemvp1j2f7eg6jebps17vp3n8i58h
+
+ k8udemvp1j2f7eg6jebps17vp3n8i58h.example. NSEC3 1 1 12 aabbccdd (
+ kohar7mbb8dc2ce8a9qvl8hon4k53uhi )
+ k8udemvp1j2f7eg6jebps17vp3n8i58h.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ FtXGbvF0+wf8iWkyo73enAuVx03klN+pILBK
+ S6qCcftVtfH4yVzsEZquJ27NHR7ruxJWDNMt
+ Otx7w9WfcIg62A== )
+
+ ;; NSEC3 RR that covers the "next closer" name (z.w.example)
+ ;; H(z.w.example) = qlu7gtfaeh0ek0c05ksfhdpbcgglbe03
+
+ q04jkcevqvmu85r014c7dkba38o0ji5r.example. NSEC3 1 1 12 aabbccdd (
+ r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG )
+ q04jkcevqvmu85r014c7dkba38o0ji5r.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ hV5I89b+4FHJDATp09g4bbN0R1F845CaXpL3
+ ZxlMKimoPAyqletMlEWwLfFia7sdpSzn+ZlN
+ NlkxWcLsIlMmUg== )
+
+ ;; NSEC3 RR that matches a wildcard at the closest encloser.
+ ;; H(*.w.example) = r53bq7cc2uvmubfu5ocmm6pers9tk9en
+
+ r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. NSEC3 1 1 12 aabbccdd (
+ t644ebqk9bibcna874givr6joj62mlhv MX RRSIG )
+ r53bq7cc2uvmubfu5ocmm6pers9tk9en.example. RRSIG NSEC3 7 2 3600 (
+ 20150420235959 20051021000000 40430 example.
+ aupviViruXs4bDg9rCbezzBMf9h1ZlDvbW/C
+ ZFKulIGXXLj8B/fsDJarXVDA9bnUoRhEbKp+
+ HF1FWKW7RIJdtQ== )
+
+ ;; Additional
+ ;; (empty)
+
+ The query returned the NSEC3 RRs that prove that the requested data
+ does not exist and no wildcard RR applies.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 47]
+
+RFC 5155 NSEC3 March 2008
+
+
+B.6. DS Child Zone No Data Error
+
+ A "no data" response for a QTYPE=DS query that was mistakenly sent to
+ a name server for the child zone.
+
+;; Header: QR AA DO RCODE=0
+;;
+;; Question
+example. IN DS
+
+;; Answer
+;; (empty)
+
+;; Authority
+example. SOA ns1.example. bugs.x.w.example. 1 3600 300 (
+ 3600000 3600 )
+example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 (
+ 40430 example.
+ Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i
+ q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd
+ VI2LmKusbZsT0Q== )
+
+;; NSEC3 RR matches the QNAME and shows that the DS type bit is not set.
+
+0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd (
+ 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS
+ SOA NSEC3PARAM RRSIG )
+0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600
+ 20150420235959 20051021000000 40430 example.
+ OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL
+ IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762
+ BOCXJZMnpuwhpA== )
+
+;; Additional
+;; (empty)
+
+ The query returned an NSEC3 RR showing that the requested was
+ answered by the server authoritative for the zone "example". The
+ NSEC3 RR indicates the presence of an SOA RR, showing that this NSEC3
+ RR is from the apex of the child, not from the zone cut of the
+ parent. Queries for the "example" DS RRSet should be sent to the
+ parent servers (which are in this case the root servers).
+
+Appendix C. Special Considerations
+
+ The following paragraphs clarify specific behavior and explain
+ special considerations for implementations.
+
+
+
+
+Laurie, et al. Standards Track [Page 48]
+
+RFC 5155 NSEC3 March 2008
+
+
+C.1. Salting
+
+ Augmenting original owner names with salt before hashing increases
+ the cost of a dictionary of pre-generated hash-values. For every bit
+ of salt, the cost of a precomputed dictionary doubles (because there
+ must be an entry for each word combined with each possible salt
+ value). The NSEC3 RR can use a maximum of 2040 bits (255 octets) of
+ salt, multiplying the cost by 2^2040. This means that an attacker
+ must, in practice, recompute the dictionary each time the salt is
+ changed.
+
+ Including a salt, regardless of size, does not affect the cost of
+ constructing NSEC3 RRs. It does increase the size of the NSEC3 RR.
+
+ There MUST be at least one complete set of NSEC3 RRs for the zone
+ using the same salt value.
+
+ The salt SHOULD be changed periodically to prevent pre-computation
+ using a single salt. It is RECOMMENDED that the salt be changed for
+ every re-signing.
+
+ Note that this could cause a resolver to see RRs with different salt
+ values for the same zone. This is harmless, since each RR stands
+ alone (that is, it denies the set of owner names whose hashes, using
+ the salt in the NSEC3 RR, fall between the two hashes in the NSEC3
+ RR) -- it is only the server that needs a complete set of NSEC3 RRs
+ with the same salt in order to be able to answer every possible
+ query.
+
+ There is no prohibition with having NSEC3 RRs with different salts
+ within the same zone. However, in order for authoritative servers to
+ be able to consistently find covering NSEC3 RRs, the authoritative
+ server MUST choose a single set of parameters (algorithm, salt, and
+ iterations) to use when selecting NSEC3 RRs.
+
+C.2. Hash Collision
+
+ Hash collisions occur when different messages have the same hash
+ value. The expected number of domain names needed to give a 1 in 2
+ chance of a single collision is about 2^(n/2) for a hash of length n
+ bits (i.e., 2^80 for SHA-1). Though this probability is extremely
+ low, the following paragraphs deal with avoiding collisions and
+ assessing possible damage in the event of an attack using hash
+ collisions.
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 49]
+
+RFC 5155 NSEC3 March 2008
+
+
+C.2.1. Avoiding Hash Collisions During Generation
+
+ During generation of NSEC3 RRs, hash values are supposedly unique.
+ In the (academic) case of a collision occurring, an alternative salt
+ MUST be chosen and all hash values MUST be regenerated.
+
+C.2.2. Second Preimage Requirement Analysis
+
+ A cryptographic hash function has a second-preimage resistance
+ property. The second-preimage resistance property means that it is
+ computationally infeasible to find another message with the same hash
+ value as a given message, i.e., given preimage X, to find a second
+ preimage X' != X such that hash(X) = hash(X'). The work factor for
+ finding a second preimage is of the order of 2^160 for SHA-1. To
+ mount an attack using an existing NSEC3 RR, an adversary needs to
+ find a second preimage.
+
+ Assuming an adversary is capable of mounting such an extreme attack,
+ the actual damage is that a response message can be generated that
+ claims that a certain QNAME (i.e., the second pre-image) does exist,
+ while in reality QNAME does not exist (a false positive), which will
+ either cause a security-aware resolver to re-query for the non-
+ existent name, or to fail the initial query. Note that the adversary
+ can't mount this attack on an existing name, but only on a name that
+ the adversary can't choose and that does not yet exist.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 50]
+
+RFC 5155 NSEC3 March 2008
+
+
+Authors' Addresses
+
+ Ben Laurie
+ Nominet
+ 17 Perryn Road
+ London W3 7LR
+ England
+
+ Phone: +44 20 8735 0686
+ EMail: ben@links.org
+
+
+ Geoffrey Sisson
+ Nominet
+ Minerva House
+ Edmund Halley Road
+ Oxford Science Park
+ Oxford OX4 4DQ
+ UNITED KINGDOM
+
+ Phone: +44 1865 332211
+ EMail: geoff-s@panix.com
+
+
+ Roy Arends
+ Nominet
+ Minerva House
+ Edmund Halley Road
+ Oxford Science Park
+ Oxford OX4 4DQ
+ UNITED KINGDOM
+
+ Phone: +44 1865 332211
+ EMail: roy@nominet.org.uk
+
+
+ David Blacka
+ VeriSign, Inc.
+ 21355 Ridgetop Circle
+ Dulles, VA 20166
+ US
+
+ Phone: +1 703 948 3200
+ EMail: davidb@verisign.com
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 51]
+
+RFC 5155 NSEC3 March 2008
+
+
+Full Copyright Statement
+
+ Copyright (C) The IETF Trust (2008).
+
+ This document is subject to the rights, licenses and restrictions
+ contained in BCP 78, and except as set forth therein, the authors
+ retain all their rights.
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+ OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
+ THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
+ THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; nor does it represent that it has
+ made any independent effort to identify any such rights. Information
+ on the procedures with respect to rights in RFC documents can be
+ found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use of
+ such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository at
+ http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights that may cover technology that may be required to implement
+ this standard. Please address the information to the IETF at
+ ietf-ipr@ietf.org.
+
+
+
+
+
+
+
+
+
+
+
+
+Laurie, et al. Standards Track [Page 52]
+
diff --git a/lib/bind/api b/lib/bind/api
index a2d21190..2c99dc46 100644
--- a/lib/bind/api
+++ b/lib/bind/api
@@ -1,3 +1,3 @@
LIBINTERFACE = 5
-LIBREVISION = 0
+LIBREVISION = 1
LIBAGE = 1
diff --git a/lib/bind/configure b/lib/bind/configure
index 0938c1a4..9b816e07 100755
--- a/lib/bind/configure
+++ b/lib/bind/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.in Revision: 1.128.128.7 .
+# From configure.in Revision: 1.128.128.9 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61.
#
@@ -32755,7 +32755,7 @@ case "$host" in
*-solaris2.9)
hack_shutup_in6addr_init_macros=yes
;;
- *-solaris2.10)
+ *-solaris2.1[0-9])
hack_shutup_in6addr_init_macros=yes
;;
esac
diff --git a/lib/bind/configure.in b/lib/bind/configure.in
index f809a48e..5ea54c91 100644
--- a/lib/bind/configure.in
+++ b/lib/bind/configure.in
@@ -13,7 +13,7 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-AC_REVISION($Revision: 1.128.128.7 $)
+AC_REVISION($Revision: 1.128.128.9 $)
AC_INIT(resolv/herror.c)
AC_PREREQ(2.13)
@@ -2778,7 +2778,7 @@ case "$host" in
*-solaris2.9)
hack_shutup_in6addr_init_macros=yes
;;
- *-solaris2.10)
+ *-solaris2.1[[0-9]])
hack_shutup_in6addr_init_macros=yes
;;
esac
diff --git a/lib/bind/inet/inet_net_pton.c b/lib/bind/inet/inet_net_pton.c
index 154ff652..b0ee27a4 100644
--- a/lib/bind/inet/inet_net_pton.c
+++ b/lib/bind/inet/inet_net_pton.c
@@ -16,7 +16,7 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static const char rcsid[] = "$Id: inet_net_pton.c,v 1.8 2005/04/27 04:56:20 sra Exp $";
+static const char rcsid[] = "$Id: inet_net_pton.c,v 1.8.672.1 2008/08/26 04:42:38 marka Exp $";
#endif
#include "port_before.h"
@@ -133,11 +133,11 @@ inet_net_pton_ipv4(const char *src, u_char *dst, size_t size) {
INSIST(n >= 0 && n <= 9);
bits *= 10;
bits += n;
+ if (bits > 32)
+ goto enoent;
} while ((ch = *src++) != '\0' && isascii(ch) && isdigit(ch));
if (ch != '\0')
goto enoent;
- if (bits > 32)
- goto emsgsize;
}
/* Firey death and destruction unless we prefetched EOS. */
diff --git a/lib/bind9/api b/lib/bind9/api
index f606e999..12b10f97 100644
--- a/lib/bind9/api
+++ b/lib/bind9/api
@@ -1,3 +1,3 @@
LIBINTERFACE = 40
-LIBREVISION = 3
+LIBREVISION = 4
LIBAGE = 0
diff --git a/lib/bind9/check.c b/lib/bind9/check.c
index d06afbda..62218ff0 100644
--- a/lib/bind9/check.c
+++ b/lib/bind9/check.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: check.c,v 1.86.10.4 2008/04/23 21:43:57 each Exp $ */
+/* $Id: check.c,v 1.86.10.5 2008/09/12 06:03:22 each Exp $ */
/*! \file */
@@ -476,10 +476,7 @@ check_recursionacls(cfg_aclconfctx_t *actx, const cfg_obj_t *voptions,
if (acl == NULL)
continue;
- if (recursion == ISC_FALSE &&
- (acl->length != 1 ||
- acl->elements[0].type != dns_aclelementtype_any ||
- acl->elements[0].negative != ISC_TRUE)) {
+ if (recursion == ISC_FALSE && !dns_acl_isnone(acl)) {
cfg_obj_log(aclobj, logctx, ISC_LOG_WARNING,
"both \"recursion no;\" and "
"\"%s\" active%s%s",
diff --git a/lib/dns/acl.c b/lib/dns/acl.c
index bb54a8a3..ed04853f 100644
--- a/lib/dns/acl.c
+++ b/lib/dns/acl.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: acl.c,v 1.37.2.7 2008/04/29 01:04:14 each Exp $ */
+/* $Id: acl.c,v 1.37.2.9 2008/09/12 04:55:04 each Exp $ */
/*! \file */
@@ -144,10 +144,11 @@ dns_acl_isanyornone(dns_acl_t *acl, isc_boolean_t pos)
acl->iptable->radix->head->prefix == NULL)
return (ISC_FALSE);
- if (acl->length != 0 && acl->node_count != 1)
+ if (acl->length != 0 || acl->node_count != 1)
return (ISC_FALSE);
if (acl->iptable->radix->head->prefix->bitlen == 0 &&
+ acl->iptable->radix->head->data[0] != NULL &&
*(isc_boolean_t *) (acl->iptable->radix->head->data[0]) == pos)
return (ISC_TRUE);
@@ -234,8 +235,10 @@ dns_acl_match(const isc_netaddr_t *reqaddr,
dns_aclelement_t *e = &acl->elements[i];
/* Already found a better match? */
- if (match_num != -1 && match_num < e->node_num)
+ if (match_num != -1 && match_num < e->node_num) {
+ isc_refcount_destroy(&pfx.refcount);
return (ISC_R_SUCCESS);
+ }
if (dns_aclelement_match(reqaddr, reqsigner,
e, env, matchelt)) {
@@ -245,10 +248,12 @@ dns_acl_match(const isc_netaddr_t *reqaddr,
else
*match = e->node_num;
}
+ isc_refcount_destroy(&pfx.refcount);
return (ISC_R_SUCCESS);
}
}
+ isc_refcount_destroy(&pfx.refcount);
return (ISC_R_SUCCESS);
}
diff --git a/lib/dns/api b/lib/dns/api
index e6e5cfb1..3ce9d2e5 100644
--- a/lib/dns/api
+++ b/lib/dns/api
@@ -1,3 +1,3 @@
-LIBINTERFACE = 44
+LIBINTERFACE = 45
LIBREVISION = 0
-LIBAGE = 1
+LIBAGE = 0
diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c
index 7d531177..7328e0a0 100644
--- a/lib/dns/dispatch.c
+++ b/lib/dns/dispatch.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dispatch.c,v 1.137.128.8 2008/07/03 00:14:13 each Exp $ */
+/* $Id: dispatch.c,v 1.137.128.18 2008/09/04 00:23:59 jinmei Exp $ */
/*! \file */
@@ -49,6 +49,9 @@
typedef ISC_LIST(dns_dispentry_t) dns_displist_t;
+typedef struct dispsocket dispsocket_t;
+typedef ISC_LIST(dispsocket_t) dispsocketlist_t;
+
/* ARC4 Random generator state */
typedef struct arc4ctx {
isc_uint8_t i;
@@ -65,7 +68,7 @@ typedef struct dns_qid {
unsigned int qid_increment; /*%< id increment on collision */
isc_mutex_t lock;
dns_displist_t *qid_table; /*%< the table itself */
- dns_displist_t *addr_table; /*%< address/port table */
+ dispsocketlist_t *sock_table; /*%< socket table */
} dns_qid_t;
struct dns_dispatchmgr {
@@ -127,15 +130,12 @@ struct dns_dispatchmgr {
#define IS_PRIVATE(d) (((d)->attributes & DNS_DISPATCHATTR_PRIVATE) != 0)
-typedef struct dispsocket dispsocket_t;
-
struct dns_dispentry {
unsigned int magic;
dns_dispatch_t *disp;
dns_messageid_t id;
in_port_t port;
unsigned int bucket;
- unsigned int abucket;
isc_sockaddr_t host;
isc_task_t *task;
isc_taskaction_t action;
@@ -144,7 +144,6 @@ struct dns_dispentry {
dispsocket_t *dispsocket;
ISC_LIST(dns_dispatchevent_t) items;
ISC_LINK(dns_dispentry_t) link;
- ISC_LINK(dns_dispentry_t) alink;
};
/*%
@@ -172,9 +171,13 @@ struct dispsocket {
unsigned int magic;
isc_socket_t *socket;
dns_dispatch_t *disp;
+ isc_sockaddr_t host;
+ in_port_t localport;
dns_dispentry_t *resp;
isc_task_t *task;
ISC_LINK(dispsocket_t) link;
+ unsigned int bucket;
+ ISC_LINK(dispsocket_t) blink;
};
#define INVALID_BUCKET (0xffffdead)
@@ -261,9 +264,8 @@ struct dns_dispatch {
/*
* Statics.
*/
-static dns_dispentry_t *bucket_search(dns_qid_t *, dns_displist_t *,
- isc_sockaddr_t *, dns_messageid_t,
- in_port_t, unsigned int, isc_boolean_t);
+static dns_dispentry_t *entry_search(dns_qid_t *, isc_sockaddr_t *,
+ dns_messageid_t, in_port_t, unsigned int);
static isc_boolean_t destroy_disp_ok(dns_dispatch_t *);
static void destroy_disp(isc_task_t *task, isc_event_t *event);
static void destroy_dispsocket(dns_dispatch_t *, dispsocket_t **);
@@ -288,8 +290,7 @@ static isc_result_t get_udpsocket(dns_dispatchmgr_t *mgr,
dns_dispatch_t *disp,
isc_socketmgr_t *sockmgr,
isc_sockaddr_t *localaddr,
- isc_socket_t **sockp,
- unsigned int maxtry);
+ isc_socket_t **sockp);
static isc_result_t dispatch_createudp(dns_dispatchmgr_t *mgr,
isc_socketmgr_t *sockmgr,
isc_taskmgr_t *taskmgr,
@@ -304,7 +305,7 @@ static isc_result_t qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
isc_boolean_t needaddrtable);
static void qid_destroy(isc_mem_t *mctx, dns_qid_t **qidp);
static isc_result_t open_socket(isc_socketmgr_t *mgr, isc_sockaddr_t *local,
- isc_socket_t **sockp);
+ unsigned int options, isc_socket_t **sockp);
static isc_boolean_t portavailable(dns_dispatchmgr_t *mgr, isc_socket_t *sock,
isc_sockaddr_t *sockaddrp);
@@ -678,14 +679,37 @@ destroy_disp(isc_task_t *task, isc_event_t *event) {
}
/*%
+ * Find a dispsocket for socket address 'dest', and port number 'port'.
+ * Return NULL if no such entry exists.
+ */
+static dispsocket_t *
+socket_search(dns_qid_t *qid, isc_sockaddr_t *dest, in_port_t port,
+ unsigned int bucket)
+{
+ dispsocket_t *dispsock;
+
+ REQUIRE(bucket < qid->qid_nbuckets);
+
+ dispsock = ISC_LIST_HEAD(qid->sock_table[bucket]);
+
+ while (dispsock != NULL) {
+ if (isc_sockaddr_equal(dest, &dispsock->host) &&
+ dispsock->localport == port)
+ return (dispsock);
+ dispsock = ISC_LIST_NEXT(dispsock, blink);
+ }
+
+ return (NULL);
+}
+
+/*%
* Make a new socket for a single dispatch with a random port number.
* The caller must hold the disp->lock and qid->lock.
*/
static isc_result_t
get_dispsocket(dns_dispatch_t *disp, isc_sockaddr_t *dest,
isc_socketmgr_t *sockmgr, dns_qid_t *qid,
- dispsocket_t **dispsockp, unsigned int *abucketp,
- in_port_t *portp)
+ dispsocket_t **dispsockp, in_port_t *portp)
{
int i;
isc_uint32_t r;
@@ -694,7 +718,7 @@ get_dispsocket(dns_dispatch_t *disp, isc_sockaddr_t *dest,
isc_result_t result = ISC_R_FAILURE;
in_port_t port;
isc_sockaddr_t localaddr;
- unsigned int abucket = 0;
+ unsigned int bucket = 0;
dispsocket_t *dispsock;
unsigned int nports;
in_port_t *ports;
@@ -727,6 +751,7 @@ get_dispsocket(dns_dispatch_t *disp, isc_sockaddr_t *dest,
dispsock->task = NULL;
isc_task_attach(disp->task[r % disp->ntasks], &dispsock->task);
ISC_LINK_INIT(dispsock, link);
+ ISC_LINK_INIT(dispsock, blink);
dispsock->magic = DISPSOCK_MAGIC;
}
@@ -741,21 +766,22 @@ get_dispsocket(dns_dispatch_t *disp, isc_sockaddr_t *dest,
nports)];
isc_sockaddr_setport(&localaddr, port);
- abucket = dns_hash(qid, dest, 0, port);
- if (bucket_search(qid, qid->addr_table, dest, 0, port, abucket,
- ISC_TRUE) != NULL) {
+ bucket = dns_hash(qid, dest, 0, port);
+ if (socket_search(qid, dest, port, bucket) != NULL)
continue;
- }
- result = open_socket(sockmgr, &localaddr, &sock);
+ result = open_socket(sockmgr, &localaddr, 0, &sock);
if (result == ISC_R_SUCCESS || result != ISC_R_ADDRINUSE)
break;
}
if (result == ISC_R_SUCCESS) {
dispsock->socket = sock;
+ dispsock->host = *dest;
+ dispsock->localport = port;
+ dispsock->bucket = bucket;
+ ISC_LIST_APPEND(qid->sock_table[bucket], dispsock, blink);
*dispsockp = dispsock;
- *abucketp = abucket;
*portp = port;
} else {
/*
@@ -777,6 +803,7 @@ get_dispsocket(dns_dispatch_t *disp, isc_sockaddr_t *dest,
static void
destroy_dispsocket(dns_dispatch_t *disp, dispsocket_t **dispsockp) {
dispsocket_t *dispsock;
+ dns_qid_t *qid;
/*
* The dispatch must be locked.
@@ -790,6 +817,13 @@ destroy_dispsocket(dns_dispatch_t *disp, dispsocket_t **dispsockp) {
dispsock->magic = 0;
if (dispsock->socket != NULL)
isc_socket_detach(&dispsock->socket);
+ if (ISC_LINK_LINKED(dispsock, blink)) {
+ qid = DNS_QID(disp);
+ LOCK(&qid->lock);
+ ISC_LIST_UNLINK(qid->sock_table[dispsock->bucket], dispsock,
+ blink);
+ UNLOCK(&qid->lock);
+ }
if (dispsock->task != NULL)
isc_task_detach(&dispsock->task);
isc_mempool_put(disp->mgr->spool, dispsock);
@@ -804,6 +838,7 @@ destroy_dispsocket(dns_dispatch_t *disp, dispsocket_t **dispsockp) {
static void
deactivate_dispsocket(dns_dispatch_t *disp, dispsocket_t *dispsock) {
isc_result_t result;
+ dns_qid_t *qid;
/*
* The dispatch must be locked.
@@ -818,6 +853,13 @@ deactivate_dispsocket(dns_dispatch_t *disp, dispsocket_t *dispsock) {
destroy_dispsocket(disp, &dispsock);
else {
result = isc_socket_close(dispsock->socket);
+
+ qid = DNS_QID(disp);
+ LOCK(&qid->lock);
+ ISC_LIST_UNLINK(qid->sock_table[dispsock->bucket], dispsock,
+ blink);
+ UNLOCK(&qid->lock);
+
if (result == ISC_R_SUCCESS)
ISC_LIST_APPEND(disp->inactivesockets, dispsock, link);
else {
@@ -834,23 +876,21 @@ deactivate_dispsocket(dns_dispatch_t *disp, dispsocket_t *dispsock) {
/*
* Find an entry for query ID 'id', socket address 'dest', and port number
- * 'port' in 'table'.
+ * 'port'.
* Return NULL if no such entry exists.
*/
static dns_dispentry_t *
-bucket_search(dns_qid_t *qid, dns_displist_t *table, isc_sockaddr_t *dest,
- dns_messageid_t id, in_port_t port, unsigned int bucket,
- isc_boolean_t ignoreid)
+entry_search(dns_qid_t *qid, isc_sockaddr_t *dest, dns_messageid_t id,
+ in_port_t port, unsigned int bucket)
{
dns_dispentry_t *res;
REQUIRE(bucket < qid->qid_nbuckets);
- res = ISC_LIST_HEAD(table[bucket]);
+ res = ISC_LIST_HEAD(qid->qid_table[bucket]);
while (res != NULL) {
- if ((ignoreid || res->id == id) &&
- isc_sockaddr_equal(dest, &res->host) &&
+ if (res->id == id && isc_sockaddr_equal(dest, &res->host) &&
res->port == port) {
return (res);
}
@@ -1026,18 +1066,25 @@ udp_recv(isc_event_t *ev_in, dns_dispatch_t *disp, dispsocket_t *dispsock) {
return;
}
- if (dispsock != NULL &&
- (disp->attributes & DNS_DISPATCHATTR_EXCLUSIVE) != 0) {
- resp = dispsock->resp;
- id = resp->id;
- if (ev->result != ISC_R_SUCCESS) {
- /*
- * This is most likely a network error on a connected
- * socket. It makes no sense to check the address or
- * parse the packet, but it will help to return the
- * error to the caller.
- */
- goto sendresponse;
+ if ((disp->attributes & DNS_DISPATCHATTR_EXCLUSIVE) != 0) {
+ if (dispsock != NULL) {
+ resp = dispsock->resp;
+ id = resp->id;
+ if (ev->result != ISC_R_SUCCESS) {
+ /*
+ * This is most likely a network error on a
+ * connected socket. It makes no sense to
+ * check the address or parse the packet, but it
+ * will help to return the error to the caller.
+ */
+ goto sendresponse;
+ }
+ } else {
+ free_buffer(disp, ev->region.base, ev->region.length);
+
+ UNLOCK(&disp->lock);
+ isc_event_free(&ev_in);
+ return;
}
} else if (ev->result != ISC_R_SUCCESS) {
free_buffer(disp, ev->region.base, ev->region.length);
@@ -1109,8 +1156,8 @@ udp_recv(isc_event_t *ev_in, dns_dispatch_t *disp, dispsocket_t *dispsock) {
bucket = dns_hash(qid, &ev->address, id, disp->localport);
LOCK(&qid->lock);
qidlocked = ISC_TRUE;
- resp = bucket_search(qid, qid->qid_table, &ev->address, id,
- disp->localport, bucket, ISC_FALSE);
+ resp = entry_search(qid, &ev->address, id, disp->localport,
+ bucket);
dispatch_log(disp, LVL(90),
"search for response in bucket %d: %s",
bucket, (resp == NULL ? "not found" : "found"));
@@ -1367,8 +1414,7 @@ tcp_recv(isc_task_t *task, isc_event_t *ev_in) {
*/
bucket = dns_hash(qid, &tcpmsg->address, id, disp->localport);
LOCK(&qid->lock);
- resp = bucket_search(qid, qid->qid_table, &tcpmsg->address, id,
- disp->localport, bucket, ISC_FALSE);
+ resp = entry_search(qid, &tcpmsg->address, id, disp->localport, bucket);
dispatch_log(disp, LVL(90),
"search for response in bucket %d: %s",
bucket, (resp == NULL ? "not found" : "found"));
@@ -1580,7 +1626,7 @@ destroy_mgr(dns_dispatchmgr_t **mgrp) {
static isc_result_t
open_socket(isc_socketmgr_t *mgr, isc_sockaddr_t *local,
- isc_socket_t **sockp)
+ unsigned int options, isc_socket_t **sockp)
{
isc_socket_t *sock;
isc_result_t result;
@@ -1601,7 +1647,7 @@ open_socket(isc_socketmgr_t *mgr, isc_sockaddr_t *local,
#ifndef ISC_ALLOW_MAPPED
isc_socket_ipv6only(sock, ISC_TRUE);
#endif
- result = isc_socket_bind(sock, local);
+ result = isc_socket_bind(sock, local, options);
if (result != ISC_R_SUCCESS) {
if (*sockp == NULL)
isc_socket_detach(&sock);
@@ -2120,7 +2166,7 @@ dispatch_find(dns_dispatchmgr_t *mgr, isc_sockaddr_t *local,
static isc_result_t
qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
unsigned int increment, dns_qid_t **qidp,
- isc_boolean_t needaddrtable)
+ isc_boolean_t needsocktable)
{
dns_qid_t *qid;
unsigned int i;
@@ -2142,11 +2188,11 @@ qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
return (ISC_R_NOMEMORY);
}
- qid->addr_table = NULL;
- if (needaddrtable) {
- qid->addr_table = isc_mem_get(mgr->mctx,
- buckets * sizeof(dns_displist_t));
- if (qid->addr_table == NULL) {
+ qid->sock_table = NULL;
+ if (needsocktable) {
+ qid->sock_table = isc_mem_get(mgr->mctx, buckets *
+ sizeof(dispsocketlist_t));
+ if (qid->sock_table == NULL) {
isc_mem_put(mgr->mctx, qid, sizeof(*qid));
isc_mem_put(mgr->mctx, qid->qid_table,
buckets * sizeof(dns_displist_t));
@@ -2156,9 +2202,9 @@ qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
result = isc_mutex_init(&qid->lock);
if (result != ISC_R_SUCCESS) {
- if (qid->addr_table != NULL) {
- isc_mem_put(mgr->mctx, qid->addr_table,
- buckets * sizeof(dns_displist_t));
+ if (qid->sock_table != NULL) {
+ isc_mem_put(mgr->mctx, qid->sock_table,
+ buckets * sizeof(dispsocketlist_t));
}
isc_mem_put(mgr->mctx, qid->qid_table,
buckets * sizeof(dns_displist_t));
@@ -2168,8 +2214,8 @@ qid_allocate(dns_dispatchmgr_t *mgr, unsigned int buckets,
for (i = 0; i < buckets; i++) {
ISC_LIST_INIT(qid->qid_table[i]);
- if (qid->addr_table != NULL)
- ISC_LIST_INIT(qid->addr_table[i]);
+ if (qid->sock_table != NULL)
+ ISC_LIST_INIT(qid->sock_table[i]);
}
qid->qid_nbuckets = buckets;
@@ -2192,9 +2238,9 @@ qid_destroy(isc_mem_t *mctx, dns_qid_t **qidp) {
qid->magic = 0;
isc_mem_put(mctx, qid->qid_table,
qid->qid_nbuckets * sizeof(dns_displist_t));
- if (qid->addr_table != NULL) {
- isc_mem_put(mctx, qid->addr_table,
- qid->qid_nbuckets * sizeof(dns_displist_t));
+ if (qid->sock_table != NULL) {
+ isc_mem_put(mctx, qid->sock_table,
+ qid->qid_nbuckets * sizeof(dispsocketlist_t));
}
DESTROYLOCK(&qid->lock);
isc_mem_put(mctx, qid, sizeof(*qid));
@@ -2489,7 +2535,7 @@ dns_dispatch_getudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
static isc_result_t
get_udpsocket(dns_dispatchmgr_t *mgr, dns_dispatch_t *disp,
isc_socketmgr_t *sockmgr, isc_sockaddr_t *localaddr,
- isc_socket_t **sockp, unsigned int maxtry)
+ isc_socket_t **sockp)
{
unsigned int i, j;
isc_socket_t *held[DNS_DISPATCH_HELD];
@@ -2528,7 +2574,8 @@ get_udpsocket(dns_dispatchmgr_t *mgr, dns_dispatch_t *disp,
DISP_ARC4CTX(disp),
nports)];
isc_sockaddr_setport(&localaddr_bound, prt);
- result = open_socket(sockmgr, &localaddr_bound, &sock);
+ result = open_socket(sockmgr, &localaddr_bound,
+ 0, &sock);
if (result == ISC_R_SUCCESS ||
result != ISC_R_ADDRINUSE) {
disp->localport = prt;
@@ -2546,8 +2593,8 @@ get_udpsocket(dns_dispatchmgr_t *mgr, dns_dispatch_t *disp,
memset(held, 0, sizeof(held));
i = 0;
- for (j = 0; j < maxtry; j++) {
- result = open_socket(sockmgr, localaddr, &sock);
+ for (j = 0; j < 0xffffU; j++) {
+ result = open_socket(sockmgr, localaddr, 0, &sock);
if (result != ISC_R_SUCCESS)
goto end;
else if (!anyport)
@@ -2561,7 +2608,7 @@ get_udpsocket(dns_dispatchmgr_t *mgr, dns_dispatch_t *disp,
if (i == DNS_DISPATCH_HELD)
i = 0;
}
- if (j == maxtry) {
+ if (j == 0xffffU) {
mgr_log(mgr, ISC_LOG_ERROR,
"avoid-v%s-udp-ports: unable to allocate "
"an available port",
@@ -2602,10 +2649,26 @@ dispatch_createudp(dns_dispatchmgr_t *mgr, isc_socketmgr_t *sockmgr,
return (result);
if ((attributes & DNS_DISPATCHATTR_EXCLUSIVE) == 0) {
- result = get_udpsocket(mgr, disp, sockmgr, localaddr, &sock,
- 0xffffU);
+ result = get_udpsocket(mgr, disp, sockmgr, localaddr, &sock);
if (result != ISC_R_SUCCESS)
goto deallocate_dispatch;
+ } else {
+ isc_sockaddr_t sa_any;
+
+ /*
+ * For dispatches using exclusive sockets with a specific
+ * source address, we only check if the specified address is
+ * available on the system. Query sockets will be created later
+ * on demand.
+ */
+ isc_sockaddr_anyofpf(&sa_any, isc_sockaddr_pf(localaddr));
+ if (!isc_sockaddr_eqaddr(&sa_any, localaddr)) {
+ result = open_socket(sockmgr, localaddr, 0, &sock);
+ if (sock != NULL)
+ isc_socket_detach(&sock);
+ if (result != ISC_R_SUCCESS)
+ goto deallocate_dispatch;
+ }
}
disp->socktype = isc_sockettype_udp;
disp->socket = sock;
@@ -2731,7 +2794,6 @@ dns_dispatch_addresponse2(dns_dispatch_t *disp, isc_sockaddr_t *dest,
{
dns_dispentry_t *res;
unsigned int bucket;
- unsigned int abucket;
in_port_t localport = 0;
dns_messageid_t id;
int i;
@@ -2805,14 +2867,13 @@ dns_dispatch_addresponse2(dns_dispatch_t *disp, isc_sockaddr_t *dest,
* Get a separate UDP socket with a random port number.
*/
result = get_dispsocket(disp, dest, sockmgr, qid, &dispsocket,
- &abucket, &localport);
+ &localport);
if (result != ISC_R_SUCCESS) {
UNLOCK(&qid->lock);
UNLOCK(&disp->lock);
return (result);
}
} else {
- abucket = 0; /* meaningless, but set explicitly */
localport = disp->localport;
}
@@ -2823,8 +2884,7 @@ dns_dispatch_addresponse2(dns_dispatch_t *disp, isc_sockaddr_t *dest,
bucket = dns_hash(qid, dest, id, localport);
ok = ISC_FALSE;
for (i = 0; i < 64; i++) {
- if (bucket_search(qid, qid->qid_table, dest, id, localport,
- bucket, ISC_FALSE) == NULL) {
+ if (entry_search(qid, dest, id, localport, bucket) == NULL) {
ok = ISC_TRUE;
break;
}
@@ -2856,7 +2916,6 @@ dns_dispatch_addresponse2(dns_dispatch_t *disp, isc_sockaddr_t *dest,
res->id = id;
res->port = localport;
res->bucket = bucket;
- res->abucket = abucket;
res->host = *dest;
res->action = action;
res->arg = arg;
@@ -2866,11 +2925,8 @@ dns_dispatch_addresponse2(dns_dispatch_t *disp, isc_sockaddr_t *dest,
res->item_out = ISC_FALSE;
ISC_LIST_INIT(res->items);
ISC_LINK_INIT(res, link);
- ISC_LINK_INIT(res, alink);
res->magic = RESPONSE_MAGIC;
ISC_LIST_APPEND(qid->qid_table[bucket], res, link);
- if (dispsocket != NULL)
- ISC_LIST_APPEND(qid->addr_table[abucket], res, alink);
UNLOCK(&qid->lock);
request_log(disp, res, LVL(90),
@@ -2882,10 +2938,6 @@ dns_dispatch_addresponse2(dns_dispatch_t *disp, isc_sockaddr_t *dest,
if (result != ISC_R_SUCCESS) {
LOCK(&qid->lock);
ISC_LIST_UNLINK(qid->qid_table[bucket], res, link);
- if (ISC_LINK_LINKED(res, alink)) {
- ISC_LIST_UNLINK(qid->addr_table[abucket], res,
- alink);
- }
UNLOCK(&qid->lock);
if (dispsocket != NULL)
@@ -3000,8 +3052,6 @@ dns_dispatch_removeresponse(dns_dispentry_t **resp,
LOCK(&qid->lock);
ISC_LIST_UNLINK(qid->qid_table[bucket], res, link);
- if (ISC_LINK_LINKED(res, alink))
- ISC_LIST_UNLINK(qid->addr_table[res->abucket], res, alink);
UNLOCK(&qid->lock);
if (ev == NULL && res->item_out) {
@@ -3077,7 +3127,7 @@ do_cancel(dns_dispatch_t *disp) {
*/
LOCK(&qid->lock);
for (resp = linear_first(qid);
- resp != NULL && !resp->item_out;
+ resp != NULL && resp->item_out;
/* Empty. */)
resp = linear_next(qid, resp);
diff --git a/lib/dns/gssapi_link.c b/lib/dns/gssapi_link.c
index ab3e553d..6b4a90ab 100644
--- a/lib/dns/gssapi_link.c
+++ b/lib/dns/gssapi_link.c
@@ -16,7 +16,7 @@
*/
/*
- * $Id: gssapi_link.c,v 1.7.128.4 2008/06/13 00:17:09 jinmei Exp $
+ * $Id: gssapi_link.c,v 1.7.128.5 2008/07/23 10:33:26 marka Exp $
*/
#include <config.h>
@@ -291,7 +291,7 @@ static dst_func_t gssapi_functions = {
NULL, /*%< fromdns */
NULL, /*%< tofile */
NULL, /*%< parse */
- NULL, /*%< cleanup */
+ NULL /*%< cleanup */
};
isc_result_t
diff --git a/lib/dns/iptable.c b/lib/dns/iptable.c
index c9fe1ca2..11d3d8ed 100644
--- a/lib/dns/iptable.c
+++ b/lib/dns/iptable.c
@@ -14,7 +14,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: iptable.c,v 1.5.46.3 2008/01/21 21:02:24 each Exp $ */
+/* $Id: iptable.c,v 1.5.46.5 2008/09/10 21:54:08 each Exp $ */
#include <isc/mem.h>
#include <isc/radix.h>
@@ -62,7 +62,7 @@ dns_iptable_addprefix(dns_iptable_t *tab, isc_netaddr_t *addr,
{
isc_result_t result;
isc_prefix_t pfx;
- isc_radix_node_t *node;
+ isc_radix_node_t *node = NULL;
int family;
INSIST(DNS_IPTABLE_VALID(tab));
@@ -75,8 +75,10 @@ dns_iptable_addprefix(dns_iptable_t *tab, isc_netaddr_t *addr,
result = isc_radix_insert(tab->radix, &node, NULL, &pfx);
- if (result != ISC_R_SUCCESS)
+ if (result != ISC_R_SUCCESS) {
+ isc_refcount_destroy(&pfx.refcount);
return(result);
+ }
/* If the node already contains data, don't overwrite it */
if (node->data[ISC_IS6(family)] == NULL) {
@@ -86,6 +88,7 @@ dns_iptable_addprefix(dns_iptable_t *tab, isc_netaddr_t *addr,
node->data[ISC_IS6(family)] = &dns_iptable_neg;
}
+ isc_refcount_destroy(&pfx.refcount);
return (ISC_R_SUCCESS);
}
@@ -100,6 +103,7 @@ dns_iptable_merge(dns_iptable_t *tab, dns_iptable_t *source, isc_boolean_t pos)
int max_node = 0;
RADIX_WALK (source->radix->head, node) {
+ new_node = NULL;
result = isc_radix_insert (tab->radix, &new_node, node, NULL);
if (result != ISC_R_SUCCESS)
@@ -117,14 +121,10 @@ dns_iptable_merge(dns_iptable_t *tab, dns_iptable_t *source, isc_boolean_t pos)
if (node->data[0] &&
*(isc_boolean_t *) node->data[0] == ISC_TRUE)
new_node->data[0] = &dns_iptable_neg;
- else
- new_node->data[0] = node->data[0];
if (node->data[1] &&
*(isc_boolean_t *) node->data[1] == ISC_TRUE)
new_node->data[1] = &dns_iptable_neg;
- else
- new_node->data[1] = node->data[0];
}
if (node->node_num[0] > max_node)
diff --git a/lib/dns/masterdump.c b/lib/dns/masterdump.c
index 0c48eee7..a40c49a4 100644
--- a/lib/dns/masterdump.c
+++ b/lib/dns/masterdump.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: masterdump.c,v 1.89.128.2 2008/04/09 22:53:06 tbox Exp $ */
+/* $Id: masterdump.c,v 1.89.128.3 2008/08/13 02:20:58 jinmei Exp $ */
/*! \file */
@@ -1412,12 +1412,11 @@ dumptostreaminc(dns_dumpctx_t *dctx) {
"dumptostreaminc(%p) new nodes -> %d\n",
dctx, dctx->nodes);
}
- result = dns_dbiterator_pause(dctx->dbiter);
- RUNTIME_CHECK(result == ISC_R_SUCCESS);
result = DNS_R_CONTINUE;
} else if (result == ISC_R_NOMORE)
result = ISC_R_SUCCESS;
fail:
+ RUNTIME_CHECK(dns_dbiterator_pause(dctx->dbiter) == ISC_R_SUCCESS);
isc_mem_put(dctx->mctx, buffer.base, buffer.length);
return (result);
}
diff --git a/lib/dns/message.c b/lib/dns/message.c
index 29958cce..822a0eb2 100644
--- a/lib/dns/message.c
+++ b/lib/dns/message.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: message.c,v 1.237.110.5 2008/04/03 10:50:01 marka Exp $ */
+/* $Id: message.c,v 1.237.110.6 2008/07/28 08:42:50 marka Exp $ */
/*! \file */
@@ -622,6 +622,9 @@ msgreset(dns_message_t *msg, isc_boolean_t everything) {
msg->tsigkey = NULL;
}
+ if (msg->tsigctx != NULL)
+ dst_context_destroy(&msg->tsigctx);
+
if (msg->query.base != NULL) {
if (msg->free_query != 0)
isc_mem_put(msg->mctx, msg->query.base,
diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c
index 9b7809a8..e5b42361 100644
--- a/lib/dns/rbtdb.c
+++ b/lib/dns/rbtdb.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: rbtdb.c,v 1.248.12.9 2008/06/04 01:12:20 jinmei Exp $ */
+/* $Id: rbtdb.c,v 1.248.12.10 2008/08/13 02:29:53 jinmei Exp $ */
/*! \file */
@@ -1412,6 +1412,49 @@ new_reference(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node) {
}
/*
+ * This function is assumed to be called when a node is newly referenced
+ * and can be in the deadnode list. In that case the node must be retrieved
+ * from the list because the it is going to be used. In addition, if the caller
+ * happens to hold a write lock on the tree, it's a good chance to purge dead
+ * nodes.
+ * Note: while a new reference is gained in multiple places, there are only very
+ * few cases where the node can be in the deadnode list (only empty nodes can
+ * have been added to the list).
+ */
+static inline void
+reactivate_node(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node,
+ isc_rwlocktype_t treelocktype)
+{
+ isc_boolean_t need_relock = ISC_FALSE;
+
+ NODE_STRONGLOCK(&rbtdb->node_locks[node->locknum].lock);
+ new_reference(rbtdb, node);
+
+ NODE_WEAKLOCK(&rbtdb->node_locks[node->locknum].lock,
+ isc_rwlocktype_read);
+ if (ISC_LINK_LINKED(node, deadlink))
+ need_relock = ISC_TRUE;
+ else if (!ISC_LIST_EMPTY(rbtdb->deadnodes[node->locknum]) &&
+ treelocktype == isc_rwlocktype_write)
+ need_relock = ISC_TRUE;
+ NODE_WEAKUNLOCK(&rbtdb->node_locks[node->locknum].lock,
+ isc_rwlocktype_read);
+ if (need_relock) {
+ NODE_WEAKLOCK(&rbtdb->node_locks[node->locknum].lock,
+ isc_rwlocktype_write);
+ if (ISC_LINK_LINKED(node, deadlink))
+ ISC_LIST_UNLINK(rbtdb->deadnodes[node->locknum],
+ node, deadlink);
+ if (treelocktype == isc_rwlocktype_write)
+ cleanup_dead_nodes(rbtdb, node->locknum);
+ NODE_WEAKUNLOCK(&rbtdb->node_locks[node->locknum].lock,
+ isc_rwlocktype_write);
+ }
+
+ NODE_STRONGUNLOCK(&rbtdb->node_locks[node->locknum].lock);
+}
+
+/*
* Caller must be holding the node lock; either the "strong", read or write
* lock. Note that the lock must be held even when node references are
* atomically modified; in that case the decrement operation itself does not
@@ -1533,6 +1576,7 @@ decrement_reference(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node,
sizeof(printname)));
}
+ INSIST(!ISC_LINK_LINKED(node, deadlink));
result = dns_rbt_deletenode(rbtdb->tree, node, ISC_FALSE);
if (result != ISC_R_SUCCESS)
isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE,
@@ -1935,7 +1979,6 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
dns_name_t nodename;
isc_result_t result;
isc_rwlocktype_t locktype = isc_rwlocktype_read;
- isc_boolean_t need_relock;
REQUIRE(VALID_RBTDB(rbtdb));
@@ -1980,40 +2023,7 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
return (result);
}
}
- NODE_STRONGLOCK(&rbtdb->node_locks[node->locknum].lock);
- new_reference(rbtdb, node);
-
- /*
- * If the node just found is in the deadnode list, we need to retrieve
- * it from the list because we are going to use the node. There are
- * other cases where a node is newly referenced, but this should be
- * the only case where it can be in the deadnode list. Also, if we
- * happen to hold a write lock on the tree, it's a good chance to purge
- * dead nodes.
- */
- need_relock = ISC_FALSE;
- NODE_WEAKLOCK(&rbtdb->node_locks[node->locknum].lock,
- isc_rwlocktype_read);
- if (ISC_LINK_LINKED(node, deadlink))
- need_relock = ISC_TRUE;
- else if (!ISC_LIST_EMPTY(rbtdb->deadnodes[node->locknum]) &&
- locktype == isc_rwlocktype_write)
- need_relock = ISC_TRUE;
- NODE_WEAKUNLOCK(&rbtdb->node_locks[node->locknum].lock,
- isc_rwlocktype_read);
- if (need_relock) {
- NODE_WEAKLOCK(&rbtdb->node_locks[node->locknum].lock,
- isc_rwlocktype_write);
- if (ISC_LINK_LINKED(node, deadlink))
- ISC_LIST_UNLINK(rbtdb->deadnodes[node->locknum],
- node, deadlink);
- if (locktype == isc_rwlocktype_write)
- cleanup_dead_nodes(rbtdb, node->locknum);
- NODE_WEAKUNLOCK(&rbtdb->node_locks[node->locknum].lock,
- isc_rwlocktype_write);
- }
-
- NODE_STRONGUNLOCK(&rbtdb->node_locks[node->locknum].lock);
+ reactivate_node(rbtdb, node, locktype);
RWUNLOCK(&rbtdb->tree_lock, locktype);
*nodep = (dns_dbnode_t *)node;
@@ -3401,6 +3411,7 @@ cache_zonecut_callback(dns_rbtnode_t *node, dns_name_t *name, void *arg) {
* search->zonecut_rdataset will still be valid later.
*/
new_reference(search->rbtdb, node);
+ INSIST(!ISC_LINK_LINKED(node, deadlink));
search->zonecut = node;
search->zonecut_rdataset = dname_header;
search->zonecut_sigrdataset = sigdname_header;
@@ -3945,6 +3956,7 @@ cache_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
if (nsheader != NULL) {
if (nodep != NULL) {
new_reference(search.rbtdb, node);
+ INSIST(!ISC_LINK_LINKED(node, deadlink));
*nodep = node;
}
bind_rdataset(search.rbtdb, node, nsheader, search.now,
@@ -3974,6 +3986,7 @@ cache_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
if (nodep != NULL) {
new_reference(search.rbtdb, node);
+ INSIST(!ISC_LINK_LINKED(node, deadlink));
*nodep = node;
}
@@ -4187,6 +4200,7 @@ cache_findzonecut(dns_db_t *db, dns_name_t *name, unsigned int options,
if (nodep != NULL) {
new_reference(search.rbtdb, node);
+ INSIST(!ISC_LINK_LINKED(node, deadlink));
*nodep = node;
}
@@ -6546,9 +6560,7 @@ reference_iter_node(rbtdb_dbiterator_t *rbtdbiter) {
return;
INSIST(rbtdbiter->tree_locked != isc_rwlocktype_none);
- NODE_STRONGLOCK(&rbtdb->node_locks[node->locknum].lock);
- new_reference(rbtdb, node);
- NODE_STRONGUNLOCK(&rbtdb->node_locks[node->locknum].lock);
+ reactivate_node(rbtdb, node, rbtdbiter->tree_locked);
}
static inline void
diff --git a/lib/dns/rdata/generic/nsec_47.c b/lib/dns/rdata/generic/nsec_47.c
index 8f022fb7..87c2f33f 100644
--- a/lib/dns/rdata/generic/nsec_47.c
+++ b/lib/dns/rdata/generic/nsec_47.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,11 +15,11 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: nsec_47.c,v 1.9 2007/06/19 23:47:17 tbox Exp $ */
+/* $Id: nsec_47.c,v 1.9.128.2 2008/07/15 23:46:46 tbox Exp $ */
/* reviewed: Wed Mar 15 18:21:15 PST 2000 by brister */
-/* draft-ietf-dnsext-nsec-rdata-01.txt */
+/* RFC 3845 */
#ifndef RDATA_GENERIC_NSEC_47_C
#define RDATA_GENERIC_NSEC_47_C
@@ -255,7 +255,7 @@ fromstruct_nsec(ARGS_FROMSTRUCT) {
window = nsec->typebits[i];
len = nsec->typebits[i+1];
i += 2;
- INSIST(first || window > lastwindow);
+ INSIST(first || window > lastwindow);
INSIST(len > 0 && len <= 32);
INSIST(i + len <= nsec->len);
INSIST(nsec->typebits[i + len - 1] != 0);
diff --git a/lib/dns/rdata/generic/nsec_47.h b/lib/dns/rdata/generic/nsec_47.h
index 4f9b90e1..935fdc9f 100644
--- a/lib/dns/rdata/generic/nsec_47.h
+++ b/lib/dns/rdata/generic/nsec_47.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -18,10 +18,10 @@
#ifndef GENERIC_NSEC_47_H
#define GENERIC_NSEC_47_H 1
-/* $Id: nsec_47.h,v 1.8 2007/06/19 23:47:17 tbox Exp $ */
+/* $Id: nsec_47.h,v 1.8.128.2 2008/07/15 23:46:46 tbox Exp $ */
/*!
- * \brief Per draft-ietf-dnsext-nsec-rdata-01.txt */
+ * \brief Per RFC 3845 */
typedef struct dns_rdata_nsec {
dns_rdatacommon_t common;
diff --git a/lib/dns/request.c b/lib/dns/request.c
index e1709a6a..74dfc469 100644
--- a/lib/dns/request.c
+++ b/lib/dns/request.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: request.c,v 1.79.128.2 2008/06/24 23:46:26 tbox Exp $ */
+/* $Id: request.c,v 1.79.128.3 2008/07/22 03:46:43 marka Exp $ */
/*! \file */
@@ -528,11 +528,11 @@ create_tcp_dispatch(dns_requestmgr_t *requestmgr, isc_sockaddr_t *srcaddr,
if (srcaddr == NULL) {
isc_sockaddr_anyofpf(&bind_any,
isc_sockaddr_pf(destaddr));
- result = isc_socket_bind(socket, &bind_any);
+ result = isc_socket_bind(socket, &bind_any, 0);
} else {
src = *srcaddr;
isc_sockaddr_setport(&src, 0);
- result = isc_socket_bind(socket, &src);
+ result = isc_socket_bind(socket, &src, 0);
}
if (result != ISC_R_SUCCESS)
goto cleanup;
diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c
index acc908fe..a636d6c7 100644
--- a/lib/dns/resolver.c
+++ b/lib/dns/resolver.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: resolver.c,v 1.355.12.19 2008/06/24 00:09:11 jinmei Exp $ */
+/* $Id: resolver.c,v 1.355.12.25 2008/09/04 04:28:31 marka Exp $ */
/*! \file */
@@ -233,6 +233,12 @@ struct fetchctx {
* Number of queries that reference this context.
*/
unsigned int nqueries;
+
+ /*%
+ * The reason to print when logging a successful
+ * response to a query.
+ */
+ const char * reason;
};
#define FCTX_MAGIC ISC_MAGIC('F', '!', '!', '!')
@@ -877,6 +883,22 @@ fctx_sendevents(fetchctx_t *fctx, isc_result_t result) {
}
}
+static inline void
+log_edns(fetchctx_t *fctx) {
+ char domainbuf[DNS_NAME_FORMATSIZE];
+
+ if (fctx->reason == NULL)
+ return;
+
+ dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf));
+ isc_log_write(dns_lctx, DNS_LOGCATEGORY_EDNS_DISABLED,
+ DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO,
+ "too many timeouts resolving '%s' (in '%s'?): %s",
+ fctx->info, domainbuf, fctx->reason);
+
+ fctx->reason = NULL;
+}
+
static void
fctx_done(fetchctx_t *fctx, isc_result_t result) {
dns_resolver_t *res;
@@ -886,10 +908,16 @@ fctx_done(fetchctx_t *fctx, isc_result_t result) {
res = fctx->res;
- if (result == ISC_R_SUCCESS)
+ if (result == ISC_R_SUCCESS) {
+ /*%
+ * Log any deferred EDNS timeout messages.
+ */
+ log_edns(fctx);
no_response = ISC_TRUE;
- else
+ } else
no_response = ISC_FALSE;
+
+ fctx->reason = NULL;
fctx_stopeverything(fctx, no_response);
LOCK(&res->buckets[fctx->bucketnum].lock);
@@ -1078,9 +1106,9 @@ fctx_setretryinterval(fetchctx_t *fctx, unsigned int rtt) {
* list, and then we do exponential back-off.
*/
if (fctx->restarts < 3)
- us = 500000;
+ us = 800000;
else
- us = (500000 << (fctx->restarts - 2));
+ us = (800000 << (fctx->restarts - 2));
/*
* Double the round-trip time.
@@ -1201,7 +1229,7 @@ fctx_query(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo,
goto cleanup_query;
#ifndef BROKEN_TCP_BIND_BEFORE_CONNECT
- result = isc_socket_bind(query->tcpsocket, &addr);
+ result = isc_socket_bind(query->tcpsocket, &addr, 0);
if (result != ISC_R_SUCCESS)
goto cleanup_socket;
#endif
@@ -1379,17 +1407,6 @@ add_triededns512(fetchctx_t *fctx, isc_sockaddr_t *address) {
ISC_LIST_INITANDAPPEND(fctx->edns512, sa, link);
}
-static inline void
-log_edns(fetchctx_t *fctx) {
- char domainbuf[DNS_NAME_FORMATSIZE];
-
- dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf));
- isc_log_write(dns_lctx, DNS_LOGCATEGORY_EDNS_DISABLED,
- DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO,
- "too many timeouts resolving '%s' (in '%s'?): "
- "disabling EDNS", fctx->info, domainbuf);
-}
-
static isc_result_t
resquery_send(resquery_t *query) {
fetchctx_t *fctx;
@@ -1530,12 +1547,15 @@ resquery_send(resquery_t *query) {
!useedns)
{
query->options |= DNS_FETCHOPT_NOEDNS0;
- dns_adb_changeflags(fctx->adb,
- query->addrinfo,
+ dns_adb_changeflags(fctx->adb, query->addrinfo,
DNS_FETCHOPT_NOEDNS0,
DNS_FETCHOPT_NOEDNS0);
}
+ /* Sync NOEDNS0 flag in addrinfo->flags and options now */
+ if ((query->addrinfo->flags & DNS_FETCHOPT_NOEDNS0) != 0)
+ query->options |= DNS_FETCHOPT_NOEDNS0;
+
/*
* Use EDNS0, unless the caller doesn't want it, or we know that
* the remote server doesn't like it.
@@ -1545,12 +1565,13 @@ resquery_send(resquery_t *query) {
fctx->timeouts >= (MAX_EDNS0_TIMEOUTS * 2)) &&
(query->options & DNS_FETCHOPT_NOEDNS0) == 0) {
query->options |= DNS_FETCHOPT_NOEDNS0;
- log_edns(fctx);
+ fctx->reason = "disabling EDNS";
} else if ((triededns(fctx, &query->addrinfo->sockaddr) ||
fctx->timeouts >= MAX_EDNS0_TIMEOUTS) &&
(query->options & DNS_FETCHOPT_NOEDNS0) == 0) {
query->options |= DNS_FETCHOPT_EDNS512;
- FCTXTRACE("too many timeouts, setting EDNS size to 512");
+ fctx->reason = "reducing the advertised EDNS UDP packet "
+ "size to 512 octets";
}
if ((query->options & DNS_FETCHOPT_NOEDNS0) == 0) {
@@ -2795,6 +2816,7 @@ fctx_timeout(isc_task_t *task, isc_event_t *event) {
FCTXTRACE("timeout");
if (event->ev_type == ISC_TIMEREVENT_LIFE) {
+ fctx->reason = NULL;
fctx_done(fctx, ISC_R_TIMEDOUT);
} else {
isc_result_t result;
@@ -2805,7 +2827,7 @@ fctx_timeout(isc_task_t *task, isc_event_t *event) {
* them keep going. Since we normally use separate sockets for
* different queries, we adopt the former approach to reduce
* the number of open sockets: cancel the oldest query if it
- * expired before the query had started (this is usually the
+ * expired after the query had started (this is usually the
* case but is not always so, depending on the task schedule
* timing).
*/
@@ -3130,6 +3152,7 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
fctx->attributes = 0;
fctx->spilled = ISC_FALSE;
fctx->nqueries = 0;
+ fctx->reason = NULL;
dns_name_init(&fctx->nsname, NULL);
fctx->nsfetch = NULL;
diff --git a/lib/dns/validator.c b/lib/dns/validator.c
index 7fea6a37..8019a939 100644
--- a/lib/dns/validator.c
+++ b/lib/dns/validator.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: validator.c,v 1.155.52.5 2008/02/19 17:09:08 each Exp $ */
+/* $Id: validator.c,v 1.155.52.6 2008/08/21 04:56:39 marka Exp $ */
#include <config.h>
@@ -939,6 +939,7 @@ view_find(dns_validator_t *val, dns_name_t *name, dns_rdatatype_t type) {
} else if (result != ISC_R_SUCCESS &&
result != DNS_R_NCACHENXDOMAIN &&
result != DNS_R_NCACHENXRRSET &&
+ result != DNS_R_EMPTYNAME &&
result != DNS_R_NXRRSET &&
result != ISC_R_NOTFOUND) {
goto notfound;
@@ -1196,6 +1197,7 @@ get_key(dns_validator_t *val, dns_rdata_rrsig_t *siginfo) {
return (DNS_R_WAIT);
} else if (result == DNS_R_NCACHENXDOMAIN ||
result == DNS_R_NCACHENXRRSET ||
+ result == DNS_R_EMPTYNAME ||
result == DNS_R_NXDOMAIN ||
result == DNS_R_NXRRSET)
{
@@ -1803,8 +1805,9 @@ validatezonekey(dns_validator_t *val) {
if (result != ISC_R_SUCCESS)
return (result);
return (DNS_R_WAIT);
- } else if (result == DNS_R_NCACHENXDOMAIN ||
+ } else if (result == DNS_R_NCACHENXDOMAIN ||
result == DNS_R_NCACHENXRRSET ||
+ result == DNS_R_EMPTYNAME ||
result == DNS_R_NXDOMAIN ||
result == DNS_R_NXRRSET)
{
@@ -2462,6 +2465,7 @@ finddlvsep(dns_validator_t *val, isc_boolean_t resume) {
}
if (result != DNS_R_NXRRSET &&
result != DNS_R_NXDOMAIN &&
+ result != DNS_R_EMPTYNAME &&
result != DNS_R_NCACHENXRRSET &&
result != DNS_R_NCACHENXDOMAIN)
return (result);
diff --git a/lib/dns/xfrin.c b/lib/dns/xfrin.c
index 35ab8edd..3190cee6 100644
--- a/lib/dns/xfrin.c
+++ b/lib/dns/xfrin.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: xfrin.c,v 1.157 2007/12/02 23:55:01 marka Exp $ */
+/* $Id: xfrin.c,v 1.157.12.5 2008/07/28 23:46:54 tbox Exp $ */
/*! \file */
@@ -253,7 +253,7 @@ static isc_result_t
axfr_init(dns_xfrin_ctx_t *xfr) {
isc_result_t result;
- xfr->is_ixfr = ISC_FALSE;
+ xfr->is_ixfr = ISC_FALSE;
if (xfr->db != NULL)
dns_db_detach(&xfr->db);
@@ -873,7 +873,8 @@ xfrin_start(dns_xfrin_ctx_t *xfr) {
&xfr->socket));
isc_socket_setname(xfr->socket, "xfrin", NULL);
#ifndef BROKEN_TCP_BIND_BEFORE_CONNECT
- CHECK(isc_socket_bind(xfr->socket, &xfr->sourceaddr));
+ CHECK(isc_socket_bind(xfr->socket, &xfr->sourceaddr,
+ ISC_SOCKET_REUSEADDRESS));
#endif
CHECK(isc_socket_connect(xfr->socket, &xfr->masteraddr, xfr->task,
xfrin_connect_done, xfr));
@@ -902,8 +903,8 @@ render(dns_message_t *msg, isc_mem_t *mctx, isc_buffer_t *buf) {
CHECK(dns_message_renderend(msg));
result = ISC_R_SUCCESS;
failure:
- if (cleanup_cctx)
- dns_compress_invalidate(&cctx);
+ if (cleanup_cctx)
+ dns_compress_invalidate(&cctx);
return (result);
}
@@ -1074,6 +1075,8 @@ xfrin_send_request(dns_xfrin_ctx_t *xfr) {
xfr->nbytes = 0;
isc_time_now(&xfr->start);
msg->id = xfr->id;
+ if (xfr->tsigctx != NULL)
+ dst_context_destroy(&xfr->tsigctx);
CHECK(render(msg, xfr->mctx, &xfr->qbuffer));
@@ -1209,7 +1212,10 @@ xfrin_recv_done(isc_task_t *task, isc_event_t *ev) {
CHECK(dns_message_settsigkey(msg, xfr->tsigkey));
CHECK(dns_message_setquerytsig(msg, xfr->lasttsig));
+
msg->tsigctx = xfr->tsigctx;
+ xfr->tsigctx = NULL;
+
if (xfr->nmsg > 0)
msg->tcp_continuation = 1;
@@ -1327,9 +1333,11 @@ xfrin_recv_done(isc_task_t *task, isc_event_t *ev) {
xfr->nbytes += tcpmsg->buffer.used;
/*
- * Copy the context back.
+ * Take the context back.
*/
+ INSIST(xfr->tsigctx == NULL);
xfr->tsigctx = msg->tsigctx;
+ msg->tsigctx = NULL;
dns_message_destroy(&msg);
@@ -1409,7 +1417,7 @@ maybe_free(dns_xfrin_ctx_t *xfr) {
if (msecs == 0)
msecs = 1;
persec = (xfr->nbytes * 1000) / msecs;
- xfrin_log(xfr, ISC_LOG_INFO,
+ xfrin_log(xfr, ISC_LOG_INFO,
"Transfer completed: %d messages, %d records, "
"%" ISC_PRINT_QUADFORMAT "u bytes, "
"%u.%03u secs (%u bytes/sec)",
@@ -1443,6 +1451,9 @@ maybe_free(dns_xfrin_ctx_t *xfr) {
if (xfr->tcpmsg_valid)
dns_tcpmsg_invalidate(&xfr->tcpmsg);
+ if (xfr->tsigctx != NULL)
+ dst_context_destroy(&xfr->tsigctx);
+
if ((xfr->name.attributes & DNS_NAMEATTR_DYNAMIC) != 0)
dns_name_free(&xfr->name, xfr->mctx);
diff --git a/lib/isc/api b/lib/isc/api
index f19d6343..3ce9d2e5 100644
--- a/lib/isc/api
+++ b/lib/isc/api
@@ -1,3 +1,3 @@
-LIBINTERFACE = 43
+LIBINTERFACE = 45
LIBREVISION = 0
LIBAGE = 0
diff --git a/lib/isc/httpd.c b/lib/isc/httpd.c
index 4bb7b29d..9cccb1e4 100644
--- a/lib/isc/httpd.c
+++ b/lib/isc/httpd.c
@@ -14,10 +14,12 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: httpd.c,v 1.12.12.2 2008/01/17 23:46:37 tbox Exp $ */
+/* $Id: httpd.c,v 1.12.12.3 2008/08/08 05:10:34 marka Exp $ */
/*! \file */
+#include <config.h>
+
#include <isc/buffer.h>
#include <isc/httpd.h>
#include <isc/mem.h>
diff --git a/lib/isc/include/isc/httpd.h b/lib/isc/include/isc/httpd.h
index 9ec63569..ac088bac 100644
--- a/lib/isc/include/isc/httpd.h
+++ b/lib/isc/include/isc/httpd.h
@@ -14,7 +14,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: httpd.h,v 1.6.128.2 2008/01/17 23:46:37 tbox Exp $ */
+/* $Id: httpd.h,v 1.6.128.3 2008/08/08 05:10:34 marka Exp $ */
#ifndef ISC_HTTPD_H
#define ISC_HTTPD_H 1
@@ -47,7 +47,7 @@ isc_httpdmgr_shutdown(isc_httpdmgr_t **httpdp);
isc_result_t
isc_httpdmgr_addurl(isc_httpdmgr_t *httpdmgr, const char *url,
- isc_httpdaction_t func, void *arg);
+ isc_httpdaction_t *func, void *arg);
isc_result_t
isc_httpd_response(isc_httpd_t *httpd);
diff --git a/lib/isc/include/isc/msgs.h b/lib/isc/include/isc/msgs.h
index 88b93a52..b6f10a2a 100644
--- a/lib/isc/include/isc/msgs.h
+++ b/lib/isc/include/isc/msgs.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: msgs.h,v 1.15 2007/06/19 23:47:18 tbox Exp $ */
+/* $Id: msgs.h,v 1.15.128.2 2008/08/08 06:28:28 tbox Exp $ */
#ifndef ISC_MSGS_H
#define ISC_MSGS_H 1
@@ -57,7 +57,7 @@
/*@{*/
/*!
- * Message numbers
+ * Message numbers
* are only required to be unique per message set,
* but are unique throughout the entire catalog to not be as confusing when
* debugging.
@@ -153,7 +153,10 @@
#define ISC_MSG_ACCEPTRETURNED 1418 /*%< accept() returned %d/%s */
#define ISC_MSG_TOOMANYFDS 1419 /*%< %s: too many open file descriptors */
#define ISC_MSG_ZEROPORT 1420 /*%< dropping source port zero packet */
-#define ISC_MSG_FILTER 1420 /*%< setsockopt(SO_ACCEPTFILTER): %s */
+#define ISC_MSG_FILTER 1421 /*%< setsockopt(SO_ACCEPTFILTER): %s */
+
+#define ISC_MSG_TOOMANYHANDLES 1422 /*%< %s: too many open WSA event handles: %s */
+
#define ISC_MSG_AWAKE 1502 /*%< "awake" */
#define ISC_MSG_WORKING 1503 /*%< "working" */
diff --git a/lib/isc/include/isc/resource.h b/lib/isc/include/isc/resource.h
index 7a615655..61dcafff 100644
--- a/lib/isc/include/isc/resource.h
+++ b/lib/isc/include/isc/resource.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000, 2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: resource.h,v 1.11 2007/06/19 23:47:18 tbox Exp $ */
+/* $Id: resource.h,v 1.11.128.2 2008/08/01 23:46:30 tbox Exp $ */
#ifndef ISC_RESOURCE_H
#define ISC_RESOURCE_H 1
@@ -81,6 +81,16 @@ isc_resource_getlimit(isc_resource_t resource, isc_resourcevalue_t *value);
*\li #ISC_R_NOTIMPLEMENTED 'resource' is not a type known by the OS.
*/
+isc_result_t
+isc_resource_getcurlimit(isc_resource_t resource, isc_resourcevalue_t *value);
+/*%<
+ * Same as isc_resource_getlimit(), but returns the current (soft) limit.
+ *
+ * Returns:
+ *\li #ISC_R_SUCCESS Success.
+ *\li #ISC_R_NOTIMPLEMENTED 'resource' is not a type known by the OS.
+ */
+
ISC_LANG_ENDDECLS
#endif /* ISC_RESOURCE_H */
diff --git a/lib/isc/include/isc/socket.h b/lib/isc/include/isc/socket.h
index 4cc0a56c..40af3409 100644
--- a/lib/isc/include/isc/socket.h
+++ b/lib/isc/include/isc/socket.h
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: socket.h,v 1.72.128.5 2008/07/03 00:14:13 each Exp $ */
+/* $Id: socket.h,v 1.72.128.12 2008/09/04 07:58:07 marka Exp $ */
#ifndef ISC_SOCKET_H
#define ISC_SOCKET_H 1
@@ -78,6 +78,12 @@ ISC_LANG_BEGINDECLS
*/
#define ISC_SOCKET_MAXSCATTERGATHER 8
+/*%
+ * In isc_socket_bind() set socket option SO_REUSEADDR prior to calling
+ * bind() if a non zero port is specified (AF_INET and AF_INET6).
+ */
+#define ISC_SOCKET_REUSEADDRESS 0x01U
+
/***
*** Types
***/
@@ -239,6 +245,9 @@ isc_socket_create(isc_socketmgr_t *manager,
/*%<
* Create a new 'type' socket managed by 'manager'.
*
+ * For isc_sockettype_fdwatch sockets you should use isc_socket_fdwatchcreate()
+ * rather than isc_socket_create().
+ *
* Note:
*
*\li 'pf' is the desired protocol family, e.g. PF_INET or PF_INET6.
@@ -249,6 +258,8 @@ isc_socket_create(isc_socketmgr_t *manager,
*
*\li 'socketp' is a valid pointer, and *socketp == NULL
*
+ *\li 'type' is not isc_sockettype_fdwatch
+ *
* Ensures:
*
* '*socketp' is attached to the newly created socket
@@ -372,12 +383,17 @@ isc_socket_open(isc_socket_t *sock);
* one. This optimization may not be available for some systems, in which
* case this function will return ISC_R_NOTIMPLEMENTED and must not be used.
*
+ * isc_socket_open() should not be called on sockets created by
+ * isc_socket_fdwatchcreate().
+ *
* Requires:
*
* \li there must be no other reference to this socket.
*
* \li 'socket' is a valid and previously closed by isc_socket_close()
*
+ * \li 'sock->type' is not isc_sockettype_fdwatch
+ *
* Returns:
* Same as isc_socket_create().
* \li ISC_R_NOTIMPLEMENTED
@@ -393,6 +409,9 @@ isc_socket_close(isc_socket_t *sock);
* systems, in which case this function will return ISC_R_NOTIMPLEMENTED and
* must not be used.
*
+ * isc_socket_close() should not be called on sockets created by
+ * isc_socket_fdwatchcreate().
+ *
* Requires:
*
* \li The socket must have a valid descriptor.
@@ -401,12 +420,15 @@ isc_socket_close(isc_socket_t *sock);
*
* \li There must be no pending I/O requests.
*
+ * \li 'sock->type' is not isc_sockettype_fdwatch
+ *
* Returns:
* \li #ISC_R_NOTIMPLEMENTED
*/
isc_result_t
-isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *addressp);
+isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *addressp,
+ unsigned int options);
/*%<
* Bind 'socket' to '*addressp'.
*
@@ -731,8 +753,15 @@ isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region,
isc_result_t
isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp);
+
+isc_result_t
+isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
+ unsigned int maxsocks);
/*%<
- * Create a socket manager.
+ * Create a socket manager. If "maxsocks" is non-zero, it specifies the
+ * maximum number of sockets that the created manager should handle.
+ * isc_socketmgr_create() is equivalent of isc_socketmgr_create2() with
+ * "maxsocks" being zero.
*
* Notes:
*
@@ -753,6 +782,23 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp);
*\li #ISC_R_SUCCESS
*\li #ISC_R_NOMEMORY
*\li #ISC_R_UNEXPECTED
+ *\li #ISC_R_NOTIMPLEMENTED
+ */
+
+isc_result_t
+isc_socketmgr_getmaxsockets(isc_socketmgr_t *manager, unsigned int *nsockp);
+/*%<
+ * Returns in "*nsockp" the maximum number of sockets this manager may open.
+ *
+ * Requires:
+ *
+ *\li '*manager' is a valid isc_socketmgr_t.
+ *\li 'nsockp' is not NULL.
+ *
+ * Returns:
+ *
+ *\li #ISC_R_SUCCESS
+ *\li #ISC_R_NOTIMPLEMENTED
*/
void
@@ -858,6 +904,12 @@ void *isc_socket_gettag(isc_socket_t *socket);
* Get the tag associated with a socket, if any.
*/
+void
+isc__socketmgr_setreserved(isc_socketmgr_t *mgr, isc_uint32_t);
+/*%<
+ * Temporary. For use by named only.
+ */
+
#ifdef HAVE_LIBXML2
void
diff --git a/lib/isc/radix.c b/lib/isc/radix.c
index 9826833c..115b6fcd 100644
--- a/lib/isc/radix.c
+++ b/lib/isc/radix.c
@@ -14,7 +14,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: radix.c,v 1.9.6.5 2008/05/21 23:26:11 each Exp $ */
+/* $Id: radix.c,v 1.9.6.8 2008/09/14 04:58:05 marka Exp $ */
/*
* This source was adapted from MRT's RCS Ids:
@@ -96,13 +96,15 @@ _ref_prefix(isc_mem_t *mctx, isc_prefix_t **target, isc_prefix_t *prefix) {
(prefix->family == AF_INET6 && prefix->bitlen <= 128));
REQUIRE(target != NULL);
- /* If this prefix is a static allocation, copy it into new memory */
+ /*
+ * If this prefix is a static allocation, copy it into new memory.
+ * (Note, the refcount still has to be destroyed by the calling
+ * routine.)
+ */
if (isc_refcount_current(&prefix->refcount) == 0) {
isc_result_t ret;
ret = _new_prefix(mctx, target, prefix->family,
&prefix->add, prefix->bitlen);
- if (ret == ISC_R_SUCCESS)
- isc_refcount_destroy(&prefix->refcount);
return ret;
}
@@ -414,22 +416,49 @@ isc_radix_insert(isc_radix_tree_t *radix, isc_radix_node_t **target,
if (differ_bit == bitlen && node->bit == bitlen) {
if (node->prefix != NULL) {
/* Set node_num only if it hasn't been set before */
- if (node->node_num[ISC_IS6(family)] == -1)
- node->node_num[ISC_IS6(family)] =
- ++radix->num_added_node;
+ if (source != NULL) {
+ /* Merging node */
+ if (node->node_num[0] == -1 &&
+ source->node_num[0] != -1) {
+ node->node_num[0] =
+ radix->num_added_node +
+ source->node_num[0];
+ node->data[0] = source->data[0];
+ }
+ if (node->node_num[1] == -1 &&
+ source->node_num[0] != -1) {
+ node->node_num[1] =
+ radix->num_added_node +
+ source->node_num[1];
+ node->data[1] = source->data[1];
+ }
+ } else {
+ if (node->node_num[ISC_IS6(family)] == -1)
+ node->node_num[ISC_IS6(family)] =
+ ++radix->num_added_node;
+ }
*target = node;
return (ISC_R_SUCCESS);
+ } else {
+ result =
+ _ref_prefix(radix->mctx, &node->prefix, prefix);
+ if (result != ISC_R_SUCCESS)
+ return (result);
}
- result = _ref_prefix(radix->mctx, &node->prefix, prefix);
- if (result != ISC_R_SUCCESS)
- return (result);
INSIST(node->data[0] == NULL && node->node_num[0] == -1 &&
node->data[1] == NULL && node->node_num[1] == -1);
if (source != NULL) {
/* Merging node */
- node->node_num[ISC_IS6(family)] =
- radix->num_added_node +
- source->node_num[ISC_IS6(family)];
+ if (source->node_num[0] != -1) {
+ node->node_num[0] = radix->num_added_node +
+ source->node_num[0];
+ node->data[0] = source->data[0];
+ }
+ if (source->node_num[1] != -1) {
+ node->node_num[1] = radix->num_added_node +
+ source->node_num[1];
+ node->data[1] = source->data[1];
+ }
} else {
node->node_num[ISC_IS6(family)] =
++radix->num_added_node;
diff --git a/lib/isc/timer.c b/lib/isc/timer.c
index 390a755e..19888e02 100644
--- a/lib/isc/timer.c
+++ b/lib/isc/timer.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: timer.c,v 1.81.32.2 2008/06/24 23:46:26 tbox Exp $ */
+/* $Id: timer.c,v 1.81.32.3 2008/08/22 05:58:45 marka Exp $ */
/*! \file */
@@ -660,7 +660,7 @@ dispatch(isc_timermgr_t *manager, isc_time_t *now) {
if (event != NULL) {
event->due = timer->due;
isc_task_send(timer->task,
- (isc_event_t **)&event);
+ ISC_EVENT_PTR(&event));
} else
UNEXPECTED_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat,
diff --git a/lib/isc/unix/resource.c b/lib/isc/unix/resource.c
index a644fda7..270eb4bb 100644
--- a/lib/isc/unix/resource.c
+++ b/lib/isc/unix/resource.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: resource.c,v 1.14.128.3 2008/01/26 23:46:50 tbox Exp $ */
+/* $Id: resource.c,v 1.14.128.7 2008/08/05 07:13:06 marka Exp $ */
#include <config.h>
@@ -28,6 +28,14 @@
#include <isc/result.h>
#include <isc/util.h>
+#ifdef __linux__
+#include <linux/fs.h> /* To get the large NR_OPEN. */
+#endif
+
+#if defined(__hpux) && defined(HAVE_SYS_DYNTUNE_H)
+#include <sys/dyntune.h>
+#endif
+
#include "errno2result.h"
static isc_result_t
@@ -151,7 +159,36 @@ isc_resource_setlimit(isc_resource_t resource, isc_resourcevalue_t value) {
if (unixresult == 0)
return (ISC_R_SUCCESS);
}
+#elif defined(NR_OPEN) && defined(__linux__)
+ /*
+ * Some Linux kernels don't accept RLIM_INFINIT; the maximum
+ * possible value is the NR_OPEN defined in linux/fs.h.
+ */
+ if (resource == isc_resource_openfiles && rlim_value == RLIM_INFINITY) {
+ rl.rlim_cur = rl.rlim_max = NR_OPEN;
+ unixresult = setrlimit(unixresource, &rl);
+ if (unixresult == 0)
+ return (ISC_R_SUCCESS);
+ }
+#elif defined(__hpux) && defined(HAVE_SYS_DYNTUNE_H)
+ if (resource == isc_resource_openfiles && rlim_value == RLIM_INFINITY) {
+ uint64_t maxfiles;
+ if (gettune("maxfiles_lim", &maxfiles) == 0) {
+ rl.rlim_cur = rl.rlim_max = maxfiles;
+ unixresult = setrlimit(unixresource, &rl);
+ if (unixresult == 0)
+ return (ISC_R_SUCCESS);
+ }
+ }
#endif
+ if (resource == isc_resource_openfiles && rlim_value == RLIM_INFINITY) {
+ if (getrlimit(unixresource, &rl) == 0) {
+ rl.rlim_cur = rl.rlim_max;
+ unixresult = setrlimit(unixresource, &rl);
+ if (unixresult == 0)
+ return (ISC_R_SUCCESS);
+ }
+ }
return (isc__errno2result(errno));
}
@@ -171,3 +208,20 @@ isc_resource_getlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
return (result);
}
+
+isc_result_t
+isc_resource_getcurlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
+ int unixresult;
+ int unixresource;
+ struct rlimit rl;
+ isc_result_t result;
+
+ result = resource2rlim(resource, &unixresource);
+ if (result == ISC_R_SUCCESS) {
+ unixresult = getrlimit(unixresource, &rl);
+ INSIST(unixresult == 0);
+ *value = rl.rlim_cur;
+ }
+
+ return (result);
+}
diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c
index f4cba28b..c73eb5c2 100644
--- a/lib/isc/unix/socket.c
+++ b/lib/isc/unix/socket.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: socket.c,v 1.275.10.10 2008/07/03 00:14:13 each Exp $ */
+/* $Id: socket.c,v 1.275.10.26 2008/09/04 07:58:07 marka Exp $ */
/*! \file */
@@ -103,8 +103,8 @@ struct isc_socketwait {
};
#elif defined (USE_SELECT)
struct isc_socketwait {
- fd_set readset;
- fd_set writeset;
+ fd_set *readset;
+ fd_set *writeset;
int nfds;
int maxfd;
};
@@ -113,14 +113,40 @@ struct isc_socketwait {
/*%
* Maximum number of allowable open sockets. This is also the maximum
- * allowable socket file descriptor. This definition is meaningless with
- * USE_SELECT due to the API limitation of select(2).
+ * allowable socket file descriptor.
+ *
+ * Care should be taken before modifying this value for select():
+ * The API standard doesn't ensure select() accept more than (the system default
+ * of) FD_SETSIZE descriptors, and the default size should in fact be fine in
+ * the vast majority of cases. This constant should therefore be increased only
+ * when absolutely necessary and possible, i.e., the server is exhausting all
+ * available file descriptors (up to FD_SETSIZE) and the select() function
+ * and FD_xxx macros support larger values than FD_SETSIZE (which may not
+ * always by true, but we keep using some of them to ensure as much
+ * portability as possible). Note also that overall server performance
+ * may be rather worsened with a larger value of this constant due to
+ * inherent scalability problems of select().
+ *
+ * As a special note, this value shouldn't have to be touched if
+ * this is a build for an authoritative only DNS server.
*/
-#if defined(USE_KQUEUE) || defined(USE_EPOLL) || defined(USE_DEVPOLL)
#ifndef ISC_SOCKET_MAXSOCKETS
+#if defined(USE_KQUEUE) || defined(USE_EPOLL) || defined(USE_DEVPOLL)
#define ISC_SOCKET_MAXSOCKETS 4096
-#endif
-#endif /* USE_KQUEUE || USE_EPOLL || USE_DEVPOLL */
+#elif defined(USE_SELECT)
+#define ISC_SOCKET_MAXSOCKETS FD_SETSIZE
+#endif /* USE_KQUEUE... */
+#endif /* ISC_SOCKET_MAXSOCKETS */
+
+#ifdef USE_SELECT
+/*%
+ * Mac OS X needs a special definition to support larger values in select().
+ * We always define this because a larger value can be specified run-time.
+ */
+#ifdef __APPLE__
+#define _DARWIN_UNLIMITED_SELECT
+#endif /* __APPLE__ */
+#endif /* USE_SELECT */
/*%
* Size of per-FD lock buckets.
@@ -299,6 +325,9 @@ struct isc_socketmgr {
int nevents;
struct pollfd *events;
#endif /* USE_DEVPOLL */
+#ifdef USE_SELECT
+ int fd_bufsize;
+#endif /* USE_SELECT */
unsigned int maxsocks;
#ifdef ISC_PLATFORM_USETHREADS
int pipe_fds[2];
@@ -314,10 +343,13 @@ struct isc_socketmgr {
/* Locked by manager lock. */
ISC_LIST(isc_socket_t) socklist;
#ifdef USE_SELECT
- fd_set read_fds;
- fd_set write_fds;
+ fd_set *read_fds;
+ fd_set *read_fds_copy;
+ fd_set *write_fds;
+ fd_set *write_fds_copy;
int maxfd;
#endif /* USE_SELECT */
+ int reserved; /* unlocked */
#ifdef ISC_PLATFORM_USETHREADS
isc_thread_t watcher;
isc_condition_t shutdown_ok;
@@ -333,7 +365,6 @@ static isc_socketmgr_t *socketmgr = NULL;
#define CLOSED 0 /* this one must be zero */
#define MANAGED 1
#define CLOSE_PENDING 2
-#define MANAGER_CLOSE_PENDING 3
/*
* send() and recv() iovec counts
@@ -491,9 +522,9 @@ watch_fd(isc_socketmgr_t *manager, int fd, int msg) {
#elif defined(USE_SELECT)
LOCK(&manager->lock);
if (msg == SELECT_POKE_READ)
- FD_SET(fd, &manager->read_fds);
+ FD_SET(fd, manager->read_fds);
if (msg == SELECT_POKE_WRITE)
- FD_SET(fd, &manager->write_fds);
+ FD_SET(fd, manager->write_fds);
UNLOCK(&manager->lock);
return (result);
@@ -577,9 +608,9 @@ unwatch_fd(isc_socketmgr_t *manager, int fd, int msg) {
#elif defined(USE_SELECT)
LOCK(&manager->lock);
if (msg == SELECT_POKE_READ)
- FD_CLR(fd, &manager->read_fds);
+ FD_CLR(fd, manager->read_fds);
else if (msg == SELECT_POKE_WRITE)
- FD_CLR(fd, &manager->write_fds);
+ FD_CLR(fd, manager->write_fds);
UNLOCK(&manager->lock);
return (result);
@@ -589,7 +620,6 @@ unwatch_fd(isc_socketmgr_t *manager, int fd, int msg) {
static void
wakeup_socket(isc_socketmgr_t *manager, int fd, int msg) {
isc_result_t result;
- isc_boolean_t needclose;
int lockid = FDLOCK_ID(fd);
/*
@@ -600,11 +630,18 @@ wakeup_socket(isc_socketmgr_t *manager, int fd, int msg) {
INSIST(fd >= 0 && fd < (int)manager->maxsocks);
- LOCK(&manager->fdlock[lockid]);
- if (manager->fdstate[fd] == CLOSE_PENDING
- || manager->fdstate[fd] == MANAGER_CLOSE_PENDING) {
- needclose = ISC_TF(manager->fdstate[fd] == CLOSE_PENDING);
+ if (msg == SELECT_POKE_CLOSE) {
+ /* No one should be updating fdstate, so no need to lock it */
+ INSIST(manager->fdstate[fd] == CLOSE_PENDING);
manager->fdstate[fd] = CLOSED;
+ (void)unwatch_fd(manager, fd, SELECT_POKE_READ);
+ (void)unwatch_fd(manager, fd, SELECT_POKE_WRITE);
+ (void)close(fd);
+ return;
+ }
+
+ LOCK(&manager->fdlock[lockid]);
+ if (manager->fdstate[fd] == CLOSE_PENDING) {
UNLOCK(&manager->fdlock[lockid]);
/*
@@ -617,8 +654,6 @@ wakeup_socket(isc_socketmgr_t *manager, int fd, int msg) {
*/
(void)unwatch_fd(manager, fd, SELECT_POKE_READ);
(void)unwatch_fd(manager, fd, SELECT_POKE_WRITE);
- if (needclose)
- (void)close(fd);
return;
}
if (manager->fdstate[fd] != MANAGED) {
@@ -1297,6 +1332,14 @@ doio_recv(isc_socket_t *sock, isc_socketevent_t *dev) {
/* HPUX 11.11 can return EADDRNOTAVAIL. */
SOFT_OR_HARD(EADDRNOTAVAIL, ISC_R_ADDRNOTAVAIL);
ALWAYS_HARD(ENOBUFS, ISC_R_NORESOURCES);
+ /*
+ * HPUX returns EPROTO and EINVAL on receiving some ICMP/ICMPv6
+ * errors.
+ */
+#ifdef EPROTO
+ SOFT_OR_HARD(EPROTO, ISC_R_HOSTUNREACH);
+#endif
+ SOFT_OR_HARD(EINVAL, ISC_R_HOSTUNREACH);
#undef SOFT_OR_HARD
#undef ALWAYS_HARD
@@ -1512,11 +1555,24 @@ closesocket(isc_socketmgr_t *manager, isc_sockettype_t type, int fd) {
LOCK(&manager->fdlock[lockid]);
manager->fds[fd] = NULL;
if (type == isc_sockettype_fdwatch)
- manager->fdstate[fd] = MANAGER_CLOSE_PENDING;
+ manager->fdstate[fd] = CLOSED;
else
manager->fdstate[fd] = CLOSE_PENDING;
UNLOCK(&manager->fdlock[lockid]);
- select_poke(manager, fd, SELECT_POKE_CLOSE);
+ if (type == isc_sockettype_fdwatch) {
+ /*
+ * The caller may close the socket once this function returns,
+ * and `fd' may be reassigned for a new socket. So we do
+ * unwatch_fd() here, rather than defer it via select_poke().
+ * Note: this may complicate data protection among threads and
+ * may reduce performance due to additional locks. One way to
+ * solve this would be to dup() the watched descriptor, but we
+ * take a simpler approach at this moment.
+ */
+ (void)unwatch_fd(manager, fd, SELECT_POKE_READ);
+ (void)unwatch_fd(manager, fd, SELECT_POKE_WRITE);
+ } else
+ select_poke(manager, fd, SELECT_POKE_CLOSE);
/*
* update manager->maxfd here (XXX: this should be implemented more
@@ -1790,7 +1846,10 @@ opensocket(isc_socketmgr_t *manager, isc_socket_t *sock) {
sock->fd = socket(sock->pf, SOCK_STREAM, 0);
break;
case isc_sockettype_fdwatch:
- INSIST(sock->type != isc_sockettype_fdwatch);
+ /*
+ * We should not be called for isc_sockettype_fdwatch sockets.
+ */
+ INSIST(0);
break;
}
if (sock->fd == -1 && errno == EINTR && tries++ < 42)
@@ -1798,9 +1857,18 @@ opensocket(isc_socketmgr_t *manager, isc_socket_t *sock) {
#ifdef F_DUPFD
/*
- * Leave a space for stdio to work in.
+ * Leave a space for stdio and TCP to work in.
*/
- if (sock->fd >= 0 && sock->fd < 20) {
+ if (manager->reserved != 0 && sock->type == isc_sockettype_udp &&
+ sock->fd >= 0 && sock->fd < manager->reserved) {
+ int new, tmp;
+ new = fcntl(sock->fd, F_DUPFD, manager->reserved);
+ tmp = errno;
+ (void)close(sock->fd);
+ errno = tmp;
+ sock->fd = new;
+ err = "isc_socket_create: fcntl/reserved";
+ } else if (sock->fd >= 0 && sock->fd < 20) {
int new, tmp;
new = fcntl(sock->fd, F_DUPFD, 20);
tmp = errno;
@@ -1817,7 +1885,8 @@ opensocket(isc_socketmgr_t *manager, isc_socket_t *sock) {
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_TOOMANYFDS,
- "%s: too many open file descriptors", "socket");
+ "socket: file descriptor exceeds limit (%d/%u)",
+ sock->fd, manager->maxsocks);
return (ISC_R_NORESOURCES);
}
@@ -2004,6 +2073,7 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
REQUIRE(VALID_MANAGER(manager));
REQUIRE(socketp != NULL && *socketp == NULL);
+ REQUIRE(type != isc_sockettype_fdwatch);
result = allocate_socket(manager, type, &sock);
if (result != ISC_R_SUCCESS)
@@ -2059,6 +2129,7 @@ isc_socket_open(isc_socket_t *sock) {
LOCK(&sock->lock);
REQUIRE(sock->references == 1);
+ REQUIRE(sock->type != isc_sockettype_fdwatch);
UNLOCK(&sock->lock);
/*
* We don't need to retain the lock hereafter, since no one else has
@@ -2203,6 +2274,7 @@ isc_socket_close(isc_socket_t *sock) {
LOCK(&sock->lock);
REQUIRE(sock->references == 1);
+ REQUIRE(sock->type != isc_sockettype_fdwatch);
UNLOCK(&sock->lock);
/*
* We don't need to retain the lock hereafter, since no one else has
@@ -2247,15 +2319,7 @@ dispatch_recv(isc_socket_t *sock) {
isc_socketevent_t *ev;
isc_task_t *sender;
-#if 0
- /*
- * XXXJT: this assertion seems to strong, but leave it here for
- * reference.
- */
INSIST(!sock->pending_recv);
-#endif
- if (sock->pending_recv != 0)
- return;
if (sock->type != isc_sockettype_fdwatch) {
ev = ISC_LIST_HEAD(sock->recv_list);
@@ -2503,7 +2567,7 @@ internal_accept(isc_task_t *me, isc_event_t *ev) {
(void)close(fd);
errno = tmp;
fd = new;
- err = "fcntl";
+ err = "accept/fcntl";
}
#endif
@@ -2511,8 +2575,17 @@ internal_accept(isc_task_t *me, isc_event_t *ev) {
if (SOFT_ERROR(errno))
goto soft_error;
switch (errno) {
- case ENOBUFS:
case ENFILE:
+ case EMFILE:
+ isc_log_iwrite(isc_lctx, ISC_LOGCATEGORY_GENERAL,
+ ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
+ isc_msgcat, ISC_MSGSET_SOCKET,
+ ISC_MSG_TOOMANYFDS,
+ "%s: too many open file descriptors",
+ err);
+ goto soft_error;
+
+ case ENOBUFS:
case ENOMEM:
case ECONNRESET:
case ECONNABORTED:
@@ -2567,8 +2640,9 @@ internal_accept(isc_task_t *me, isc_event_t *ev) {
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_TOOMANYFDS,
- "%s: too many open file descriptors",
- "accept");
+ "accept: "
+ "file descriptor exceeds limit (%d/%u)",
+ fd, manager->maxsocks);
(void)close(fd);
goto soft_error;
}
@@ -2863,23 +2937,17 @@ process_fd(isc_socketmgr_t *manager, int fd, isc_boolean_t readable,
{
isc_socket_t *sock;
isc_boolean_t unlock_sock;
- isc_boolean_t needclose;
int lockid = FDLOCK_ID(fd);
/*
- * If we need to close the socket, do it now.
+ * If the socket is going to be closed, don't do more I/O.
*/
LOCK(&manager->fdlock[lockid]);
- if (manager->fdstate[fd] == CLOSE_PENDING
- || manager->fdstate[fd] == MANAGER_CLOSE_PENDING) {
- needclose = ISC_TF(manager->fdstate[fd] == CLOSE_PENDING);
- manager->fdstate[fd] = CLOSED;
+ if (manager->fdstate[fd] == CLOSE_PENDING) {
UNLOCK(&manager->fdlock[lockid]);
(void)unwatch_fd(manager, fd, SELECT_POKE_READ);
(void)unwatch_fd(manager, fd, SELECT_POKE_WRITE);
- if (needclose)
- (void)close(fd);
return;
}
@@ -2929,6 +2997,9 @@ process_fds(isc_socketmgr_t *manager, struct kevent *events, int nevents) {
int i;
isc_boolean_t readable, writable;
isc_boolean_t done = ISC_FALSE;
+#ifdef ISC_PLATFORM_USETHREADS
+ isc_boolean_t have_ctlevent = ISC_FALSE;
+#endif
if (nevents == manager->nevents) {
/*
@@ -2946,7 +3017,7 @@ process_fds(isc_socketmgr_t *manager, struct kevent *events, int nevents) {
REQUIRE(events[i].ident < manager->maxsocks);
#ifdef ISC_PLATFORM_USETHREADS
if (events[i].ident == (uintptr_t)manager->pipe_fds[0]) {
- done = process_ctlfd(manager);
+ have_ctlevent = ISC_TRUE;
continue;
}
#endif
@@ -2955,6 +3026,11 @@ process_fds(isc_socketmgr_t *manager, struct kevent *events, int nevents) {
process_fd(manager, events[i].ident, readable, writable);
}
+#ifdef ISC_PLATFORM_USETHREADS
+ if (have_ctlevent)
+ done = process_ctlfd(manager);
+#endif
+
return (done);
}
#elif defined(USE_EPOLL)
@@ -2962,6 +3038,9 @@ static isc_boolean_t
process_fds(isc_socketmgr_t *manager, struct epoll_event *events, int nevents) {
int i;
isc_boolean_t done = ISC_FALSE;
+#ifdef ISC_PLATFORM_USETHREADS
+ isc_boolean_t have_ctlevent = ISC_FALSE;
+#endif
if (nevents == manager->nevents) {
manager_log(manager, ISC_LOGCATEGORY_GENERAL,
@@ -2974,7 +3053,7 @@ process_fds(isc_socketmgr_t *manager, struct epoll_event *events, int nevents) {
REQUIRE(events[i].data.fd < (int)manager->maxsocks);
#ifdef ISC_PLATFORM_USETHREADS
if (events[i].data.fd == manager->pipe_fds[0]) {
- done = process_ctlfd(manager);
+ have_ctlevent = ISC_TRUE;
continue;
}
#endif
@@ -2994,6 +3073,11 @@ process_fds(isc_socketmgr_t *manager, struct epoll_event *events, int nevents) {
(events[i].events & EPOLLOUT) != 0);
}
+#ifdef ISC_PLATFORM_USETHREADS
+ if (have_ctlevent)
+ done = process_ctlfd(manager);
+#endif
+
return (done);
}
#elif defined(USE_DEVPOLL)
@@ -3001,6 +3085,9 @@ static isc_boolean_t
process_fds(isc_socketmgr_t *manager, struct pollfd *events, int nevents) {
int i;
isc_boolean_t done = ISC_FALSE;
+#ifdef ISC_PLATFORM_USETHREADS
+ isc_boolean_t have_ctlevent = ISC_FALSE;
+#endif
if (nevents == manager->nevents) {
manager_log(manager, ISC_LOGCATEGORY_GENERAL,
@@ -3013,7 +3100,7 @@ process_fds(isc_socketmgr_t *manager, struct pollfd *events, int nevents) {
REQUIRE(events[i].fd < (int)manager->maxsocks);
#ifdef ISC_PLATFORM_USETHREADS
if (events[i].fd == manager->pipe_fds[0]) {
- done = process_ctlfd(manager);
+ have_ctlevent = ISC_TRUE;
continue;
}
#endif
@@ -3022,6 +3109,11 @@ process_fds(isc_socketmgr_t *manager, struct pollfd *events, int nevents) {
(events[i].events & POLLOUT) != 0);
}
+#ifdef ISC_PLATFORM_USETHREADS
+ if (have_ctlevent)
+ done = process_ctlfd(manager);
+#endif
+
return (done);
}
#elif defined(USE_SELECT)
@@ -3062,7 +3154,7 @@ process_ctlfd(isc_socketmgr_t *manager) {
* Nothing to read?
*/
if (msg == SELECT_POKE_NOTHING)
- return (ISC_FALSE);
+ break;
/*
* Handle shutdown message. We really should
@@ -3107,8 +3199,6 @@ watcher(void *uap) {
struct dvpoll dvp;
#elif defined (USE_SELECT)
const char *fnname = "select()";
- fd_set readfds;
- fd_set writefds;
int maxfd;
#endif
char strbuf[ISC_STRERRORSIZE];
@@ -3133,12 +3223,15 @@ watcher(void *uap) {
cc = ioctl(manager->devpoll_fd, DP_POLL, &dvp);
#elif defined(USE_SELECT)
LOCK(&manager->lock);
- readfds = manager->read_fds;
- writefds = manager->write_fds;
+ memcpy(manager->read_fds_copy, manager->read_fds,
+ manager->fd_bufsize);
+ memcpy(manager->write_fds_copy, manager->write_fds,
+ manager->fd_bufsize);
maxfd = manager->maxfd + 1;
UNLOCK(&manager->lock);
- cc = select(maxfd, &readfds, &writefds, NULL, NULL);
+ cc = select(maxfd, manager->read_fds_copy,
+ manager->write_fds_copy, NULL, NULL);
#endif /* USE_KQUEUE */
if (cc < 0 && !SOFT_ERROR(errno)) {
@@ -3155,13 +3248,14 @@ watcher(void *uap) {
#if defined(USE_KQUEUE) || defined (USE_EPOLL) || defined (USE_DEVPOLL)
done = process_fds(manager, manager->events, cc);
#elif defined(USE_SELECT)
+ process_fds(manager, maxfd, manager->read_fds_copy,
+ manager->write_fds_copy);
+
/*
* Process reads on internal, control fd.
*/
- if (FD_ISSET(ctlfd, &readfds))
+ if (FD_ISSET(ctlfd, manager->read_fds_copy))
done = process_ctlfd(manager);
-
- process_fds(manager, maxfd, &readfds, &writefds);
#endif
}
@@ -3173,6 +3267,14 @@ watcher(void *uap) {
}
#endif /* ISC_PLATFORM_USETHREADS */
+void
+isc__socketmgr_setreserved(isc_socketmgr_t *manager, isc_uint32_t reserved) {
+
+ REQUIRE(VALID_MANAGER(manager));
+
+ manager->reserved = reserved;
+}
+
/*
* Create a new socket manager.
*/
@@ -3180,6 +3282,9 @@ watcher(void *uap) {
static isc_result_t
setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
isc_result_t result;
+#if defined(USE_KQUEUE) || defined(USE_EPOLL) || defined(USE_DEVPOLL)
+ char strbuf[ISC_STRERRORSIZE];
+#endif
#ifdef USE_KQUEUE
manager->nevents = ISC_SOCKET_MAXEVENTS;
@@ -3190,6 +3295,12 @@ setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
manager->kqueue_fd = kqueue();
if (manager->kqueue_fd == -1) {
result = isc__errno2result(errno);
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "kqueue %s: %s",
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
+ ISC_MSG_FAILED, "failed"),
+ strbuf);
isc_mem_put(mctx, manager->events,
sizeof(struct kevent) * manager->nevents);
return (result);
@@ -3213,6 +3324,12 @@ setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
manager->epoll_fd = epoll_create(manager->nevents);
if (manager->epoll_fd == -1) {
result = isc__errno2result(errno);
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "epoll_create %s: %s",
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
+ ISC_MSG_FAILED, "failed"),
+ strbuf);
isc_mem_put(mctx, manager->events,
sizeof(struct epoll_event) * manager->nevents);
return (result);
@@ -3251,6 +3368,12 @@ setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
manager->devpoll_fd = open("/dev/poll", O_RDWR);
if (manager->devpoll_fd == -1) {
result = isc__errno2result(errno);
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "open(/dev/poll) %s: %s",
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
+ ISC_MSG_FAILED, "failed"),
+ strbuf);
isc_mem_put(mctx, manager->events,
sizeof(struct pollfd) * manager->nevents);
isc_mem_put(mctx, manager->fdpollinfo,
@@ -3269,11 +3392,52 @@ setup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
}
#endif /* ISC_PLATFORM_USETHREADS */
#elif defined(USE_SELECT)
- UNUSED(mctx);
UNUSED(result);
- FD_ZERO(&manager->read_fds);
- FD_ZERO(&manager->write_fds);
+#if ISC_SOCKET_MAXSOCKETS > FD_SETSIZE
+ /*
+ * Note: this code should also cover the case of MAXSOCKETS <=
+ * FD_SETSIZE, but we separate the cases to avoid possible portability
+ * issues regarding howmany() and the actual representation of fd_set.
+ */
+ manager->fd_bufsize = howmany(manager->maxsocks, NFDBITS) *
+ sizeof(fd_mask);
+#else
+ manager->fd_bufsize = sizeof(fd_set);
+#endif
+
+ manager->read_fds = NULL;
+ manager->read_fds_copy = NULL;
+ manager->write_fds = NULL;
+ manager->write_fds_copy = NULL;
+
+ manager->read_fds = isc_mem_get(mctx, manager->fd_bufsize);
+ if (manager->read_fds != NULL)
+ manager->read_fds_copy = isc_mem_get(mctx, manager->fd_bufsize);
+ if (manager->read_fds_copy != NULL)
+ manager->write_fds = isc_mem_get(mctx, manager->fd_bufsize);
+ if (manager->write_fds != NULL) {
+ manager->write_fds_copy = isc_mem_get(mctx,
+ manager->fd_bufsize);
+ }
+ if (manager->write_fds_copy == NULL) {
+ if (manager->write_fds != NULL) {
+ isc_mem_put(mctx, manager->write_fds,
+ manager->fd_bufsize);
+ }
+ if (manager->read_fds_copy != NULL) {
+ isc_mem_put(mctx, manager->read_fds_copy,
+ manager->fd_bufsize);
+ }
+ if (manager->read_fds != NULL) {
+ isc_mem_put(mctx, manager->read_fds,
+ manager->fd_bufsize);
+ }
+ return (ISC_R_NOMEMORY);
+ }
+ memset(manager->read_fds, 0, manager->fd_bufsize);
+ memset(manager->write_fds, 0, manager->fd_bufsize);
+
#ifdef ISC_PLATFORM_USETHREADS
(void)watch_fd(manager, manager->pipe_fds[0], SELECT_POKE_READ);
manager->maxfd = manager->pipe_fds[0];
@@ -3314,13 +3478,26 @@ cleanup_watcher(isc_mem_t *mctx, isc_socketmgr_t *manager) {
isc_mem_put(mctx, manager->fdpollinfo,
sizeof(pollinfo_t) * manager->maxsocks);
#elif defined(USE_SELECT)
- UNUSED(mctx);
- UNUSED(manager);
+ if (manager->read_fds != NULL)
+ isc_mem_put(mctx, manager->read_fds, manager->fd_bufsize);
+ if (manager->read_fds_copy != NULL)
+ isc_mem_put(mctx, manager->read_fds_copy, manager->fd_bufsize);
+ if (manager->write_fds != NULL)
+ isc_mem_put(mctx, manager->write_fds, manager->fd_bufsize);
+ if (manager->write_fds_copy != NULL)
+ isc_mem_put(mctx, manager->write_fds_copy, manager->fd_bufsize);
#endif /* USE_KQUEUE */
}
isc_result_t
isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
+ return (isc_socketmgr_create2(mctx, managerp, 0));
+}
+
+isc_result_t
+isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
+ unsigned int maxsocks)
+{
int i;
isc_socketmgr_t *manager;
#ifdef ISC_PLATFORM_USETHREADS
@@ -3332,25 +3509,27 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
#ifndef ISC_PLATFORM_USETHREADS
if (socketmgr != NULL) {
+ /* Don't allow maxsocks to be updated */
+ if (maxsocks > 0 && socketmgr->maxsocks != maxsocks)
+ return (ISC_R_EXISTS);
+
socketmgr->refs++;
*managerp = socketmgr;
return (ISC_R_SUCCESS);
}
#endif /* ISC_PLATFORM_USETHREADS */
+ if (maxsocks == 0)
+ maxsocks = ISC_SOCKET_MAXSOCKETS;
+
manager = isc_mem_get(mctx, sizeof(*manager));
if (manager == NULL)
return (ISC_R_NOMEMORY);
/* zero-clear so that necessary cleanup on failure will be easy */
memset(manager, 0, sizeof(*manager));
-
-#if defined(USE_KQUEUE) || defined(USE_EPOLL) || defined(USE_DEVPOLL)
- manager->maxsocks = ISC_SOCKET_MAXSOCKETS;
-#elif defined (USE_SELECT)
- manager->maxsocks = FD_SETSIZE;
-#endif
-
+ manager->maxsocks = maxsocks;
+ manager->reserved = 0;
manager->fds = isc_mem_get(mctx,
manager->maxsocks * sizeof(isc_socket_t *));
if (manager->fds == NULL) {
@@ -3427,7 +3606,6 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
if (result != ISC_R_SUCCESS)
goto cleanup;
memset(manager->fdstate, 0, manager->maxsocks * sizeof(int));
-
#ifdef ISC_PLATFORM_USETHREADS
/*
* Start up the select/poll thread.
@@ -3489,6 +3667,16 @@ free_manager:
return (result);
}
+isc_result_t
+isc_socketmgr_getmaxsockets(isc_socketmgr_t *manager, unsigned int *nsockp) {
+ REQUIRE(VALID_MANAGER(manager));
+ REQUIRE(nsockp != NULL);
+
+ *nsockp = manager->maxsocks;
+
+ return (ISC_R_SUCCESS);
+}
+
void
isc_socketmgr_destroy(isc_socketmgr_t **managerp) {
isc_socketmgr_t *manager;
@@ -3636,7 +3824,7 @@ socket_recv(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
* Enqueue the request. If the socket was previously not being
* watched, poke the watcher to start paying attention to it.
*/
- if (ISC_LIST_EMPTY(sock->recv_list))
+ if (ISC_LIST_EMPTY(sock->recv_list) && !sock->pending_recv)
select_poke(sock->manager, sock->fd, SELECT_POKE_READ);
ISC_LIST_ENQUEUE(sock->recv_list, dev, ev_link);
@@ -3833,7 +4021,8 @@ socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
* not being watched, poke the watcher to start
* paying attention to it.
*/
- if (ISC_LIST_EMPTY(sock->send_list))
+ if (ISC_LIST_EMPTY(sock->send_list) &&
+ !sock->pending_send)
select_poke(sock->manager, sock->fd,
SELECT_POKE_WRITE);
ISC_LIST_ENQUEUE(sock->send_list, dev, ev_link);
@@ -4152,7 +4341,8 @@ isc_socket_permunix(isc_sockaddr_t *sockaddr, isc_uint32_t perm,
}
isc_result_t
-isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr) {
+isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr,
+ unsigned int options) {
char strbuf[ISC_STRERRORSIZE];
int on = 1;
@@ -4171,7 +4361,8 @@ isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr) {
if (sock->pf == AF_UNIX)
goto bind_socket;
#endif
- if (isc_sockaddr_getport(sockaddr) != (in_port_t)0 &&
+ if ((options & ISC_SOCKET_REUSEADDRESS) != 0 &&
+ isc_sockaddr_getport(sockaddr) != (in_port_t)0 &&
setsockopt(sock->fd, SOL_SOCKET, SO_REUSEADDR, (void *)&on,
sizeof(on)) < 0) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
@@ -4862,12 +5053,17 @@ isc__socketmgr_waitevents(struct timeval *tvp, isc_socketwait_t **swaitp) {
swait_private.nevents = ioctl(socketmgr->devpoll_fd, DP_POLL, &dvp);
n = swait_private.nevents;
#elif defined(USE_SELECT)
- swait_private.readset = socketmgr->read_fds;
- swait_private.writeset = socketmgr->write_fds;
+ memcpy(socketmgr->read_fds_copy, socketmgr->read_fds,
+ socketmgr->fd_bufsize);
+ memcpy(socketmgr->write_fds_copy, socketmgr->write_fds,
+ socketmgr->fd_bufsize);
+
+ swait_private.readset = socketmgr->read_fds_copy;
+ swait_private.writeset = socketmgr->write_fds_copy;
swait_private.maxfd = socketmgr->maxfd + 1;
- n = select(swait_private.maxfd, &swait_private.readset,
- &swait_private.writeset, NULL, tvp);
+ n = select(swait_private.maxfd, swait_private.readset,
+ swait_private.writeset, NULL, tvp);
#endif
*swaitp = &swait_private;
@@ -4885,7 +5081,7 @@ isc__socketmgr_dispatch(isc_socketwait_t *swait) {
(void)process_fds(socketmgr, socketmgr->events, swait->nevents);
return (ISC_R_SUCCESS);
#elif defined(USE_SELECT)
- process_fds(socketmgr, swait->maxfd, &swait->readset, &swait->writeset);
+ process_fds(socketmgr, swait->maxfd, swait->readset, swait->writeset);
return (ISC_R_SUCCESS);
#endif
}
diff --git a/lib/isc/win32/errno2result.c b/lib/isc/win32/errno2result.c
index b5e4dd83..a9dfd407 100644
--- a/lib/isc/win32/errno2result.c
+++ b/lib/isc/win32/errno2result.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2005, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000-2002 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: errno2result.c,v 1.14 2007/06/19 23:47:19 tbox Exp $ */
+/* $Id: errno2result.c,v 1.14.128.5 2008/09/11 23:46:38 tbox Exp $ */
#include <config.h>
@@ -61,22 +61,41 @@ isc__errno2resultx(int posixerrno, const char *file, int line) {
case EMFILE:
case WSAEMFILE:
return (ISC_R_TOOMANYOPENFILES);
- case ERROR_OPERATION_ABORTED:
- return (ISC_R_CONNECTIONRESET);
- case ERROR_PORT_UNREACHABLE:
- return (ISC_R_HOSTUNREACH);
+ case ERROR_CANCELLED:
+ return (ISC_R_CANCELED);
+ case ERROR_CONNECTION_REFUSED:
+ case WSAECONNREFUSED:
+ return (ISC_R_CONNREFUSED);
+ case WSAENOTCONN:
+ case ERROR_CONNECTION_INVALID:
+ return (ISC_R_NOTCONNECTED);
case ERROR_HOST_UNREACHABLE:
+ case WSAEHOSTUNREACH:
return (ISC_R_HOSTUNREACH);
case ERROR_NETWORK_UNREACHABLE:
+ case WSAENETUNREACH:
return (ISC_R_NETUNREACH);
+ case ERROR_NO_NETWORK:
+ return (ISC_R_NETUNREACH);
+ case ERROR_PORT_UNREACHABLE:
+ return (ISC_R_HOSTUNREACH);
+ case ERROR_SEM_TIMEOUT:
+ return (ISC_R_TIMEDOUT);
+ case WSAECONNRESET:
+ case WSAENETRESET:
+ case WSAECONNABORTED:
+ case WSAEDISCON:
+ case ERROR_OPERATION_ABORTED:
+ case ERROR_CONNECTION_ABORTED:
+ case ERROR_REQUEST_ABORTED:
+ return (ISC_R_CONNECTIONRESET);
case WSAEADDRNOTAVAIL:
return (ISC_R_ADDRNOTAVAIL);
- case WSAEHOSTUNREACH:
- return (ISC_R_HOSTUNREACH);
+ case ERROR_NETNAME_DELETED:
+ case WSAENETDOWN:
+ return (ISC_R_NETUNREACH);
case WSAEHOSTDOWN:
return (ISC_R_HOSTUNREACH);
- case WSAENETUNREACH:
- return (ISC_R_NETUNREACH);
case WSAENOBUFS:
return (ISC_R_NORESOURCES);
default:
diff --git a/lib/isc/win32/include/isc/mutex.h b/lib/isc/win32/include/isc/mutex.h
index 3a3c819c..f17b7dfe 100644
--- a/lib/isc/win32/include/isc/mutex.h
+++ b/lib/isc/win32/include/isc/mutex.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1998-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: mutex.h,v 1.19 2007/06/19 23:47:20 tbox Exp $ */
+/* $Id: mutex.h,v 1.19.128.2 2008/09/11 23:46:38 tbox Exp $ */
#ifndef ISC_MUTEX_H
#define ISC_MUTEX_H 1
@@ -27,10 +27,14 @@
typedef CRITICAL_SECTION isc_mutex_t;
-/* This definition is here since WINBASE.H omits it for some reason */
-
+/*
+ * This definition is here since somve versions of WINBASE.H
+ * omits it for some reason.
+ */
+#if (_WIN32_WINNT < 0x0400)
WINBASEAPI BOOL WINAPI
TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
+#endif /* _WIN32_WINNT < 0x0400 */
#define isc_mutex_init(mp) \
(InitializeCriticalSection((mp)), ISC_R_SUCCESS)
@@ -46,6 +50,6 @@ TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
/*
* This is a placeholder for now since we are not keeping any mutex stats
*/
-#define isc_mutex_stats(fp)
+#define isc_mutex_stats(fp) do {} while (0)
#endif /* ISC_MUTEX_H */
diff --git a/lib/isc/win32/libisc.def b/lib/isc/win32/libisc.def
index adeb6367..1a2617b4 100644
--- a/lib/isc/win32/libisc.def
+++ b/lib/isc/win32/libisc.def
@@ -34,6 +34,7 @@ isc__mem_putanddetach
isc__mem_strdup
isc__mempool_get
isc__mempool_put
+isc__socketmgr_setreserved
isc__strerror
isc_app_block
isc_app_finish
@@ -346,6 +347,7 @@ isc_ratelimiter_setpertic
isc_ratelimiter_shutdown
isc_refcount_init
isc_region_compare
+isc_resource_getcurlimit
isc_resource_getlimit
isc_resource_setlimit
isc_result_register
@@ -429,7 +431,9 @@ isc_socket_sendtov
isc_socket_sendv
isc_socket_setname
isc_socketmgr_create
+isc_socketmgr_create2
isc_socketmgr_destroy
+isc_socketmgr_getmaxsockets
isc_stdio_close
isc_stdio_flush
isc_stdio_open
diff --git a/lib/isc/win32/libisc.dsp b/lib/isc/win32/libisc.dsp
index 437320a4..39af0df7 100644
--- a/lib/isc/win32/libisc.dsp
+++ b/lib/isc/win32/libisc.dsp
@@ -1,7 +1,7 @@
# Microsoft Developer Studio Project File - Name="libisc" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
-
+
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
CFG=libisc - Win32 Debug
diff --git a/lib/isc/win32/net.c b/lib/isc/win32/net.c
index deb0512e..b6c0267f 100644
--- a/lib/isc/win32/net.c
+++ b/lib/isc/win32/net.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: net.c,v 1.14.128.3 2008/07/01 02:09:10 each Exp $ */
+/* $Id: net.c,v 1.14.128.4 2008/08/08 05:10:34 marka Exp $ */
#include <config.h>
@@ -242,7 +242,8 @@ try_ipv6pktinfo(void) {
optname = IPV6_PKTINFO;
#endif
on = 1;
- if (setsockopt(s, IPPROTO_IPV6, optname, &on, sizeof(on)) < 0) {
+ if (setsockopt(s, IPPROTO_IPV6, optname, (const char *) &on,
+ sizeof(on)) < 0) {
ipv6pktinfo_result = ISC_R_NOTFOUND;
goto close;
}
diff --git a/lib/isc/win32/resource.c b/lib/isc/win32/resource.c
index 328b711c..e00a5a60 100644
--- a/lib/isc/win32/resource.c
+++ b/lib/isc/win32/resource.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2007, 2008 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000, 2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: resource.c,v 1.8 2007/06/19 23:47:19 tbox Exp $ */
+/* $Id: resource.c,v 1.8.128.2 2008/08/01 23:46:30 tbox Exp $ */
#include <config.h>
@@ -65,3 +65,8 @@ isc_resource_getlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
*value = WIN32_MAX_OPEN_FILES;
return (ISC_R_SUCCESS);
}
+
+isc_result_t
+isc_resource_getcurlimit(isc_resource_t resource, isc_resourcevalue_t *value) {
+ return (isc_resource_getlimit(resource, value));
+}
diff --git a/lib/isc/win32/socket.c b/lib/isc/win32/socket.c
index 113acd2b..07f032f4 100644
--- a/lib/isc/win32/socket.c
+++ b/lib/isc/win32/socket.c
@@ -15,37 +15,19 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: socket.c,v 1.52.94.5 2008/07/03 00:14:13 each Exp $ */
+/* $Id: socket.c,v 1.52.94.24 2008/09/16 01:47:27 explorer Exp $ */
-/* This code has been rewritten to take advantage of Windows Sockets
- * I/O Completion Ports and Events. I/O Completion Ports is ONLY
- * available on Windows NT, Windows 2000 and Windows XP series of
- * the Windows Operating Systems. In CANNOT run on Windows 95, Windows 98
- * or the follow-ons to those Systems.
+/* This code uses functions which are only available on Server 2003 and
+ * higher, and Windows XP and higher.
*
* This code is by nature multithreaded and takes advantage of various
* features to pass on information through the completion port for
- * when I/O is completed. All sends and receives are completed through
- * the completion port. Due to an implementation bug in Windows 2000,
- * Service Pack 2 must installed on the system for this code to run correctly.
- * For details on this problem see Knowledge base article Q263823.
- * The code checks for this. The number of Completion Port Worker threads
- * used is the total number of CPU's + 1. This increases the likelihood that
- * a Worker Thread is available for processing a completed request.
+ * when I/O is completed. All sends, receives, accepts, and connects are
+ * completed through the completion port.
*
- * All accepts and connects are accomplished through the WSAEventSelect()
- * function and the event_wait loop. Events are added to and deleted from
- * each event_wait thread via a common event_update stack owned by the socket
- * manager. If the event_wait thread runs out of array space in the events
- * array it will look for another event_wait thread to add the event. If it
- * fails to find another one it will create a new thread to handle the
- * outstanding event.
- *
- * A future enhancement is to use AcceptEx to take avantage of Overlapped
- * I/O which allows for enhanced performance of TCP connections.
- * This will also reduce the number of events that are waited on by the
- * event_wait threads to just the connect sockets and reduce the number
- * additional threads required.
+ * The number of Completion Port Worker threads used is the total number
+ * of CPU's + 1. This increases the likelihood that a Worker Thread is
+ * available for processing a completed request.
*
* XXXPDM 5 August, 2002
*/
@@ -90,9 +72,31 @@
#include <isc/util.h>
#include <isc/win32os.h>
+#include <mswsock.h>
+
#include "errno2result.h"
/*
+ * How in the world can Microsoft exist with APIs like this?
+ * We can't actually call this directly, because it turns out
+ * no library exports this function. Instead, we need to
+ * issue a runtime call to get the address.
+ */
+LPFN_CONNECTEX ISCConnectEx;
+LPFN_ACCEPTEX ISCAcceptEx;
+LPFN_GETACCEPTEXSOCKADDRS ISCGetAcceptExSockaddrs;
+
+/*
+ * Run expensive internal consistancy checks.
+ */
+#ifdef ISC_SOCKET_CONSISTENCY_CHECKS
+#define CONSISTENT(sock) consistent(sock)
+#else
+#define CONSISTENT(sock) do {} while (0)
+#endif
+static void consistent(isc_socket_t *sock);
+
+/*
* Define this macro to control the behavior of connection
* resets on UDP sockets. See Microsoft KnowledgeBase Article Q263823
* for details.
@@ -129,10 +133,11 @@
#define PENDING_ERROR(e) ((e) == WSA_IO_PENDING || (e) == 0)
#define DOIO_SUCCESS 0 /* i/o ok, event sent */
-#define DOIO_SOFT 1 /* i/o ok, soft error, no event sent */
-#define DOIO_HARD 2 /* i/o error, event sent */
-#define DOIO_EOF 3 /* EOF, no event sent */
+#define DOIO_SOFT 1 /* i/o ok, soft error, no event sent */
+#define DOIO_HARD 2 /* i/o error, event sent */
+#define DOIO_EOF 3 /* EOF, no event sent */
#define DOIO_PENDING 4 /* status when i/o is in process */
+#define DOIO_NEEDMORE 5 /* IO was processed, but we need more due to minimum */
#define DLVL(x) ISC_LOGCATEGORY_GENERAL, ISC_LOGMODULE_SOCKET, ISC_LOG_DEBUG(x)
@@ -157,6 +162,19 @@
typedef isc_event_t intev_t;
+/*
+ * Socket State
+ */
+enum {
+ SOCK_INITIALIZED, /* Socket Initialized */
+ SOCK_OPEN, /* Socket opened but nothing yet to do */
+ SOCK_DATA, /* Socket sending or receiving data */
+ SOCK_LISTEN, /* TCP Socket listening for connects */
+ SOCK_ACCEPT, /* TCP socket is waiting to accept */
+ SOCK_CONNECT, /* TCP Socket connecting */
+ SOCK_CLOSED, /* Socket has been closed */
+};
+
#define SOCKET_MAGIC ISC_MAGIC('I', 'O', 'i', 'o')
#define VALID_SOCKET(t) ISC_MAGIC_VALID(t, SOCKET_MAGIC)
@@ -181,21 +199,18 @@ typedef isc_event_t intev_t;
* Message header for recvmsg and sendmsg calls.
* Used value-result for recvmsg, value only for sendmsg.
*/
-
-
struct msghdr {
- void *msg_name; /* optional address */
- u_int msg_namelen; /* size of address */
+ SOCKADDR_STORAGE to_addr; /* UDP send/recv address */
+ int to_addr_len; /* length of the address */
WSABUF *msg_iov; /* scatter/gather array */
u_int msg_iovlen; /* # elements in msg_iov */
void *msg_control; /* ancillary data, see below */
u_int msg_controllen; /* ancillary data buffer len */
- int msg_flags; /* flags on received message */
int msg_totallen; /* total length of this message */
} msghdr;
-/*%
- * The size to raise the recieve buffer to.
+/*
+ * The size to raise the receive buffer to.
*/
#define RCVBUFSIZE (32*1024)
@@ -211,47 +226,64 @@ struct isc_socket {
isc_socketmgr_t *manager;
isc_mutex_t lock;
isc_sockettype_t type;
- OVERLAPPED overlapped;
+
/* Pointers to scatter/gather buffers */
WSABUF iov[ISC_SOCKET_MAXSCATTERGATHER];
- WSAEVENT hEvent; /* Event Handle */
- long wait_type; /* Events to wait on */
- WSAEVENT hAlert; /* Alert Event Handle */
- DWORD evthread_id; /* Event Thread Id for socket */
/* Locked by socket lock. */
ISC_LINK(isc_socket_t) link;
- unsigned int references;
- SOCKET fd;
- int pf;
+ unsigned int references; /* EXTERNAL references */
+ SOCKET fd; /* file handle */
+ int pf; /* protocol family */
char name[16];
void * tag;
+ /*
+ * Each recv() call uses this buffer. It is a per-socket receive
+ * buffer that allows us to decouple the system recv() from the
+ * recv_list done events. This means the items on the recv_list
+ * can be removed without having to cancel pending system recv()
+ * calls. It also allows us to read-ahead in some cases.
+ */
+ struct {
+ SOCKADDR_STORAGE from_addr; // UDP send/recv address
+ int from_addr_len; // length of the address
+ char *base; // the base of the buffer
+ char *consume_position; // where to start copying data from next
+ unsigned int len; // the actual size of this buffer
+ unsigned int remaining; // the number of bytes remaining
+ } recvbuf;
+
ISC_LIST(isc_socketevent_t) send_list;
ISC_LIST(isc_socketevent_t) recv_list;
ISC_LIST(isc_socket_newconnev_t) accept_list;
isc_socket_connev_t *connect_ev;
- /*
- * Internal events. Posted when a descriptor is readable or
- * writable. These are statically allocated and never freed.
- * They will be set to non-purgable before use.
- */
- intev_t readable_ev;
- intev_t writable_ev;
-
isc_sockaddr_t address; /* remote address */
- unsigned int pending_close : 1,
- pending_accept : 1,
- iocp : 1, /* I/O Completion Port */
- listener : 1, /* listener socket */
+ unsigned int listener : 1, /* listener socket */
connected : 1,
- connecting : 1, /* connect pending */
- bound : 1, /* bound to local addr */
- pending_free: 1;
- unsigned int pending_recv;
- unsigned int pending_send;
+ pending_connect : 1, /* connect pending */
+ bound : 1; /* bound to local addr */
+ unsigned int pending_iocp; /* Should equal the counters below. Debug. */
+ unsigned int pending_recv; /* Number of outstanding recv() calls. */
+ unsigned int pending_send; /* Number of outstanding send() calls. */
+ unsigned int pending_accept; /* Number of outstanding accept() calls. */
+ unsigned int state; /* Socket state. Debugging and consistency checking. */
+ int state_lineno; /* line which last touched state */
+};
+
+#define _set_state(sock, _state) do { (sock)->state = (_state); (sock)->state_lineno = __LINE__; } while (0)
+
+/*
+ * Buffer structure
+ */
+typedef struct buflist buflist_t;
+
+struct buflist {
+ void *buf;
+ unsigned int buflen;
+ ISC_LINK(buflist_t) link;
};
/*
@@ -259,12 +291,16 @@ struct isc_socket {
*/
static HANDLE hHeapHandle = NULL;
-static int iocp_total = 0;
typedef struct IoCompletionInfo {
- OVERLAPPED overlapped;
- isc_socketevent_t *dev;
- int request_type;
- struct msghdr messagehdr;
+ OVERLAPPED overlapped;
+ isc_socketevent_t *dev; /* send()/recv() done event */
+ isc_socket_connev_t *cdev; /* connect() done event */
+ isc_socket_newconnev_t *adev; /* accept() done event */
+ void *acceptbuffer;
+ DWORD received_bytes;
+ int request_type;
+ struct msghdr messagehdr;
+ ISC_LIST(buflist_t) bufferlist; /*%< list of buffers */
} IoCompletionInfo;
/*
@@ -274,52 +310,6 @@ typedef struct IoCompletionInfo {
*/
#define MAX_IOCPTHREADS 20
-/*
- * event_change structure to handle adds and deletes from the list of
- * events in the Wait
- */
-typedef struct event_change event_change_t;
-
-struct event_change {
- isc_socket_t *sock;
- WSAEVENT hEvent;
- DWORD evthread_id;
- SOCKET fd;
- unsigned int action;
- ISC_LINK(event_change_t) link;
-};
-
-/*
- * Note: We are using an array here since *WaitForMultiple* wants an array
- * WARNING: This value may not be greater than 64 since the
- * WSAWaitForMultipleEvents function is limited to 64 events.
- */
-
-#define MAX_EVENTS 64
-
-/*
- * List of events being waited on and their associated sockets
- */
-typedef struct sock_event_list {
- int max_event;
- int total_events;
- isc_socket_t *aSockList[MAX_EVENTS];
- WSAEVENT aEventList[MAX_EVENTS];
-} sock_event_list;
-
-/*
- * Thread Event structure for managing the threads handling events
- */
-typedef struct events_thread events_thread_t;
-
-struct events_thread {
- isc_thread_t thread_handle; /* Thread's handle */
- DWORD thread_id; /* Thread's id */
- sock_event_list sockev_list;
- isc_socketmgr_t *manager;
- ISC_LINK(events_thread_t) link;
-};
-
#define SOCKET_MANAGER_MAGIC ISC_MAGIC('I', 'O', 'm', 'g')
#define VALID_MANAGER(m) ISC_MAGIC_VALID(m, SOCKET_MANAGER_MAGIC)
@@ -329,17 +319,27 @@ struct isc_socketmgr {
isc_mem_t *mctx;
isc_mutex_t lock;
/* Locked by manager lock. */
- ISC_LIST(event_change_t) event_updates;
ISC_LIST(isc_socket_t) socklist;
- int event_written;
- WSAEVENT prime_alert;
isc_boolean_t bShutdown;
- ISC_LIST(events_thread_t) ev_threads;
isc_condition_t shutdown_ok;
HANDLE hIoCompletionPort;
int maxIOCPThreads;
HANDLE hIOCPThreads[MAX_IOCPTHREADS];
DWORD dwIOCPThreadIds[MAX_IOCPTHREADS];
+
+ /*
+ * Debugging.
+ * Modified by InterlockedIncrement() and InterlockedDecrement()
+ */
+ LONG totalSockets;
+ LONG iocp_total;
+};
+
+enum {
+ SOCKET_RECV,
+ SOCKET_SEND,
+ SOCKET_ACCEPT,
+ SOCKET_CONNECT
};
/*
@@ -348,21 +348,20 @@ struct isc_socketmgr {
#define MAXSCATTERGATHER_SEND (ISC_SOCKET_MAXSCATTERGATHER)
#define MAXSCATTERGATHER_RECV (ISC_SOCKET_MAXSCATTERGATHER)
-static isc_threadresult_t WINAPI event_wait(void *uap);
static isc_threadresult_t WINAPI SocketIoThread(LPVOID ThreadContext);
-static void free_socket(isc_socket_t **);
+static void maybe_free_socket(isc_socket_t **, int);
+static void free_socket(isc_socket_t **, int);
+static isc_boolean_t senddone_is_active(isc_socket_t *sock, isc_socketevent_t *dev);
+static isc_boolean_t acceptdone_is_active(isc_socket_t *sock, isc_socket_newconnev_t *dev);
+static isc_boolean_t connectdone_is_active(isc_socket_t *sock, isc_socket_connev_t *dev);
+static void send_recvdone_event(isc_socket_t *sock, isc_socketevent_t **dev);
+static void send_senddone_event(isc_socket_t *sock, isc_socketevent_t **dev);
+static void send_acceptdone_event(isc_socket_t *sock, isc_socket_newconnev_t **adev);
+static void send_connectdone_event(isc_socket_t *sock, isc_socket_connev_t **cdev);
+static void send_recvdone_abort(isc_socket_t *sock, isc_result_t result);
+static void queue_receive_event(isc_socket_t *sock, isc_task_t *task, isc_socketevent_t *dev);
+static void queue_receive_request(isc_socket_t *sock);
-enum {
- SOCKET_RECV,
- SOCKET_SEND,
-};
-
-enum {
- EVENT_ADD,
- EVENT_DELETE
-};
-
-#if defined(ISC_SOCKET_DEBUG)
/*
* This is used to dump the contents of the sock structure
* You should make sure that the sock is locked before
@@ -373,26 +372,27 @@ void
sock_dump(isc_socket_t *sock) {
isc_socketevent_t *ldev;
isc_socket_newconnev_t *ndev;
+
+#if 0
isc_sockaddr_t addr;
char socktext[256];
-
isc_socket_getpeername(sock, &addr);
isc_sockaddr_format(&addr, socktext, sizeof(socktext));
printf("Remote Socket: %s\n", socktext);
isc_socket_getsockname(sock, &addr);
isc_sockaddr_format(&addr, socktext, sizeof(socktext));
printf("This Socket: %s\n", socktext);
+#endif
printf("\n\t\tSock Dump\n");
printf("\t\tfd: %u\n", sock->fd);
printf("\t\treferences: %d\n", sock->references);
printf("\t\tpending_accept: %d\n", sock->pending_accept);
- printf("\t\tpending_close: %d\n", sock->pending_close);
- printf("\t\tconnecting: %d\n", sock->connecting);
+ printf("\t\tconnecting: %d\n", sock->pending_connect);
printf("\t\tconnected: %d\n", sock->connected);
printf("\t\tbound: %d\n", sock->bound);
- printf("\t\tiocp: %d\n", sock->iocp);
+ printf("\t\tpending_iocp: %d\n", sock->pending_iocp);
printf("\t\tsocket type: %d\n", sock->type);
printf("\n\t\tSock Recv List\n");
@@ -401,12 +401,14 @@ sock_dump(isc_socket_t *sock) {
printf("\t\tdev: %p\n", ldev);
ldev = ISC_LIST_NEXT(ldev, ev_link);
}
+
printf("\n\t\tSock Send List\n");
ldev = ISC_LIST_HEAD(sock->send_list);
while (ldev != NULL) {
printf("\t\tdev: %p\n", ldev);
ldev = ISC_LIST_NEXT(ldev, ev_link);
}
+
printf("\n\t\tSock Accept List\n");
ndev = ISC_LIST_HEAD(sock->accept_list);
while (ndev != NULL) {
@@ -414,7 +416,12 @@ sock_dump(isc_socket_t *sock) {
ndev = ISC_LIST_NEXT(ndev, ev_link);
}
}
-#endif
+
+static void
+socket_log(int lineno, isc_socket_t *sock, isc_sockaddr_t *address,
+ isc_logcategory_t *category, isc_logmodule_t *module, int level,
+ isc_msgcat_t *msgcat, int msgset, int message,
+ const char *fmt, ...) ISC_FORMAT_PRINTF(9, 10);
/* This function will add an entry to the I/O completion port
* that will signal the I/O thread to exit (gracefully)
@@ -458,7 +465,7 @@ iocompletionport_createthreads(int total_threads, isc_socketmgr_t *manager) {
manager->hIOCPThreads[i] = CreateThread(NULL, 0, SocketIoThread,
manager, 0,
&manager->dwIOCPThreadIds[i]);
- if(manager->hIOCPThreads[i] == NULL) {
+ if (manager->hIOCPThreads[i] == NULL) {
errval = GetLastError();
isc__strerror(errval, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
@@ -466,6 +473,7 @@ iocompletionport_createthreads(int total_threads, isc_socketmgr_t *manager) {
ISC_MSG_FAILED,
"Can't create IOCP thread: %s"),
strbuf);
+ exit(1);
}
}
}
@@ -483,14 +491,25 @@ iocompletionport_init(isc_socketmgr_t *manager) {
* Create a private heap to handle the socket overlapped structure
* The miniumum number of structures is 10, there is no maximum
*/
- hHeapHandle = HeapCreate(0, 10*sizeof(IoCompletionInfo), 0);
- manager->maxIOCPThreads = min(isc_os_ncpus() + 1,
- MAX_IOCPTHREADS);
+ hHeapHandle = HeapCreate(0, 10 * sizeof(IoCompletionInfo), 0);
+ if (hHeapHandle == NULL) {
+ errval = GetLastError();
+ isc__strerror(errval, strbuf, sizeof(strbuf));
+ FATAL_ERROR(__FILE__, __LINE__,
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
+ ISC_MSG_FAILED,
+ "HeapCreate() failed during "
+ "initialization: %s"),
+ strbuf);
+ exit(1);
+ }
+
+ manager->maxIOCPThreads = min(isc_os_ncpus() + 1, MAX_IOCPTHREADS);
/* Now Create the Completion Port */
manager->hIoCompletionPort = CreateIoCompletionPort(
- INVALID_HANDLE_VALUE, NULL,
- 0, manager->maxIOCPThreads);
+ INVALID_HANDLE_VALUE, NULL,
+ 0, manager->maxIOCPThreads);
if (manager->hIoCompletionPort == NULL) {
errval = GetLastError();
isc__strerror(errval, strbuf, sizeof(strbuf));
@@ -509,384 +528,46 @@ iocompletionport_init(isc_socketmgr_t *manager) {
iocompletionport_createthreads(manager->maxIOCPThreads, manager);
}
-
-void
-iocompletionport_exit(isc_socketmgr_t *manager) {
-
- REQUIRE(VALID_MANAGER(manager));
- if (manager->hIoCompletionPort != NULL) {
- /* Get each of the service threads to exit
- */
- signal_iocompletionport_exit(manager);
- }
-}
-
/*
- * Add sockets in here and pass the sock data in as part of the
- * information needed.
+ * Associate a socket with an IO Completion Port. This allows us to queue events for it
+ * and have our worker pool of threads process them.
*/
void
iocompletionport_update(isc_socket_t *sock) {
HANDLE hiocp;
+ char strbuf[ISC_STRERRORSIZE];
- REQUIRE(sock != NULL);
- if(sock->iocp == 0) {
- sock->iocp = 1;
- hiocp = CreateIoCompletionPort((HANDLE) sock->fd,
- sock->manager->hIoCompletionPort, (DWORD) sock,
- sock->manager->maxIOCPThreads);
- InterlockedIncrement(&iocp_total);
-
- }
-}
-
-void
-socket_event_minit(sock_event_list *evlist) {
- BOOL bReset;
- int i;
-
- REQUIRE(evlist != NULL);
- /* Initialize the Event List */
- evlist->max_event = 0;
- evlist->total_events = 0;
- for (i = 0; i < MAX_EVENTS; i++) {
- evlist->aSockList[i] = NULL;
- evlist->aEventList[i] = (WSAEVENT) 0;
- }
-
- evlist->aEventList[0] = WSACreateEvent();
- (evlist->max_event)++;
- bReset = WSAResetEvent(evlist->aEventList[0]);
-}
-/*
- * Event Thread Initialization
- */
-isc_result_t
-event_thread_create(events_thread_t **evthreadp, isc_socketmgr_t *manager) {
- events_thread_t *evthread;
-
- REQUIRE(VALID_MANAGER(manager));
- REQUIRE(evthreadp != NULL && *evthreadp == NULL);
-
- evthread = isc_mem_get(manager->mctx, sizeof(*evthread));
- socket_event_minit(&evthread->sockev_list);
- ISC_LINK_INIT(evthread, link);
- evthread->manager = manager;
+ REQUIRE(VALID_SOCKET(sock));
- ISC_LIST_APPEND(manager->ev_threads, evthread, link);
+ hiocp = CreateIoCompletionPort((HANDLE)sock->fd,
+ sock->manager->hIoCompletionPort, (ULONG_PTR)sock, 0);
- /*
- * Start up the event wait thread.
- */
- if (isc_thread_create(event_wait, evthread, &evthread->thread_handle) !=
- ISC_R_SUCCESS) {
- isc_mem_put(manager->mctx, evthread, sizeof(*evthread));
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "isc_thread_create() %s",
- isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED, "failed"));
- return (ISC_R_UNEXPECTED);
- }
- *evthreadp = evthread;
- return (ISC_R_SUCCESS);
-}
-/*
- * Locate a thread with space for additional events or create one if
- * necessary. The manager is locked at this point so the information
- * cannot be changed by another thread while we are searching.
- */
-void
-locate_available_thread(isc_socketmgr_t *manager) {
- events_thread_t *evthread;
- DWORD threadid = GetCurrentThreadId();
+ if (hiocp == NULL) {
+ DWORD errval = GetLastError();
+ isc__strerror(errval, strbuf, sizeof(strbuf));
+ isc_log_iwrite(isc_lctx,
+ ISC_LOGCATEGORY_GENERAL,
+ ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
+ isc_msgcat, ISC_MSGSET_SOCKET,
+ ISC_MSG_TOOMANYHANDLES,
+ "iocompletionport_update: failed to open"
+ " io completion port: %s",
+ strbuf);
- evthread = ISC_LIST_HEAD(manager->ev_threads);
- while (evthread != NULL) {
- /*
- * We need to find a thread with space to add an event
- * If we find it, alert it to process the event change
- * list
+ /* XXXMLG temporary hack to make failures detected.
+ * This function should return errors to the caller, not
+ * exit here.
*/
- if(threadid != evthread->thread_id &&
- evthread->sockev_list.max_event < MAX_EVENTS) {
- WSASetEvent(evthread->sockev_list.aEventList[0]);
- return;
- }
- evthread = ISC_LIST_NEXT(evthread, link);
- }
- /*
- * We need to create a new thread as other threads are full.
- * If we succeed in creating the thread, alert it to
- * process the event change list since it will have space.
- * If we are unable to create one, the event will stay on the
- * list and the next event_wait thread will try again to add
- * the event. It will call here again if it has no space.
- */
- if (event_thread_create(&evthread, manager) == ISC_R_SUCCESS) {
- WSASetEvent(evthread->sockev_list.aEventList[0]);
- }
-
-}
-
-isc_boolean_t
-socket_eventlist_add(event_change_t *evchange, sock_event_list *evlist,
- isc_socketmgr_t *manager) {
- int max_event;
- isc_socket_t *sock;
- REQUIRE(evchange != NULL);
-
- sock = evchange->sock;
- REQUIRE(sock != NULL);
- REQUIRE(sock->hEvent != NULL);
- REQUIRE(evlist != NULL);
-
- max_event = evlist->max_event;
- if(max_event >= MAX_EVENTS) {
- locate_available_thread(manager);
- return (ISC_FALSE);
- }
-
- evlist->aSockList[max_event] = sock;
- evlist->aEventList[max_event] = sock->hEvent;
- evlist->max_event++;
- evlist->total_events++;
- sock->hAlert = evlist->aEventList[0];
- sock->evthread_id = GetCurrentThreadId();
- return (ISC_TRUE);
-}
-
-/*
- * Note that the eventLock is locked before calling this function.
- */
-isc_boolean_t
-socket_eventlist_delete(event_change_t *evchange, sock_event_list *evlist,
- isc_socketmgr_t *manager)
-{
- int i;
- WSAEVENT hEvent;
- int iEvent = -1;
- isc_boolean_t dofree = ISC_FALSE;
-
- REQUIRE(evchange != NULL);
- /* Make sure this is the right thread from which to delete the event */
- if (evchange->evthread_id != GetCurrentThreadId())
- return (ISC_FALSE);
-
- REQUIRE(evlist != NULL);
- REQUIRE(evchange->hEvent != NULL);
- hEvent = evchange->hEvent;
-
- /* Find the Event */
- for (i = 1; i < evlist->max_event; i++) {
- if (evlist->aEventList[i] == hEvent) {
- iEvent = i;
- break;
- }
- }
-
- /* Actual event start at 1 */
- if (iEvent < 1)
- return (ISC_FALSE);
-
- for(i = iEvent; i < (evlist->max_event - 1); i++) {
- evlist->aEventList[i] = evlist->aEventList[i + 1];
- evlist->aSockList[i] = evlist->aSockList[i + 1];
- }
-
- evlist->aEventList[evlist->max_event - 1] = 0;
- evlist->aSockList[evlist->max_event - 1] = NULL;
-
- /* Cleanup */
- WSACloseEvent(hEvent);
-
- LOCK(&evchange->sock->lock);
- if (evchange->sock->pending_close) {
- evchange->sock->pending_close = 0;
- closesocket(evchange->fd);
- }
- if (evchange->sock->pending_recv == 0 &&
- evchange->sock->pending_send == 0 &&
- evchange->sock->pending_free) {
- evchange->sock->pending_free = 0;
- ISC_LIST_UNLINK(manager->socklist, evchange->sock, link);
- dofree = ISC_TRUE;
- }
- UNLOCK(&evchange->sock->lock);
- if (dofree)
- free_socket(&evchange->sock);
-
- if (ISC_LIST_EMPTY(manager->socklist))
- SIGNAL(&manager->shutdown_ok);
-
- evlist->max_event--;
- evlist->total_events--;
-
- return (ISC_TRUE);
-}
-
-/*
- * Get the event changes off of the list and apply the
- * requested changes. The manager lock is taken out at
- * the start of this function to prevent other event_wait
- * threads processing the same information at the same
- * time. The queue may not be empty on exit since other
- * threads may be involved in processing the queue.
- *
- * The deletes are done first in order that there be space
- * available for the events being added in the same thread
- * in case the event list is almost full. This reduces the
- * probability of having to create another thread which would
- * increase overhead costs.
- */
-isc_result_t
-process_eventlist(sock_event_list *evlist, isc_socketmgr_t *manager) {
- event_change_t *evchange;
- event_change_t *next;
- isc_boolean_t del;
-
- REQUIRE(evlist != NULL);
-
- LOCK(&manager->lock);
-
- /*
- * First the deletes.
- */
- evchange = ISC_LIST_HEAD(manager->event_updates);
- while (evchange != NULL) {
- next = ISC_LIST_NEXT(evchange, link);
- del = ISC_FALSE;
- if (evchange->action == EVENT_DELETE) {
- del = socket_eventlist_delete(evchange, evlist,
- manager);
-
- /*
- * Delete only if this thread's socket list was
- * updated.
- */
- if (del) {
- ISC_LIST_DEQUEUE(manager->event_updates,
- evchange, link);
- HeapFree(hHeapHandle, 0, evchange);
- manager->event_written--;
- }
- }
- evchange = next;
- }
-
- /*
- * Now the adds.
- */
- evchange = ISC_LIST_HEAD(manager->event_updates);
- while (evchange != NULL) {
- next = ISC_LIST_NEXT(evchange, link);
- del = ISC_FALSE;
- if (evchange->action == EVENT_ADD) {
- del = socket_eventlist_add(evchange, evlist, manager);
-
- /*
- * Delete only if this thread's socket list was
- * updated.
- */
- if (del) {
- ISC_LIST_DEQUEUE(manager->event_updates,
- evchange, link);
- HeapFree(hHeapHandle, 0, evchange);
- manager->event_written--;
- }
- }
- evchange = next;
- }
- UNLOCK(&manager->lock);
- return (ISC_R_SUCCESS);
-}
-
-/*
- * Add the event list changes to the queue and notify the
- * event loop
- */
-static void
-notify_eventlist(isc_socket_t *sock, isc_socketmgr_t *manager,
- unsigned int action)
-{
-
- event_change_t *evchange;
-
- REQUIRE(VALID_MANAGER(manager));
- REQUIRE(sock != NULL);
-
- evchange = HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY,
- sizeof(event_change_t));
- evchange->sock = sock;
- evchange->action = action;
- evchange->hEvent = sock->hEvent;
- evchange->fd = sock->fd;
- evchange->evthread_id = sock->evthread_id;
-
- LOCK(&manager->lock);
- ISC_LIST_APPEND(manager->event_updates, evchange, link);
- sock->manager->event_written++;
- UNLOCK(&manager->lock);
-
- /* Alert the Wait List */
- if (sock->hAlert != NULL)
- WSASetEvent(sock->hAlert);
- else
- WSASetEvent(manager->prime_alert);
-}
-
-/*
- * Note that the socket is already locked before calling this function
- */
-isc_result_t
-socket_event_add(isc_socket_t *sock, long type) {
- int stat;
- WSAEVENT hEvent;
- char strbuf[ISC_STRERRORSIZE];
- const char *msg;
-
- REQUIRE(sock != NULL);
-
- hEvent = WSACreateEvent();
- if (hEvent == WSA_INVALID_EVENT) {
- stat = WSAGetLastError();
- isc__strerror(stat, strbuf, sizeof(strbuf));
- msg = isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED, "failed"),
- UNEXPECTED_ERROR(__FILE__, __LINE__, "WSACreateEvent: %s: %s",
- msg, strbuf);
- return (ISC_R_UNEXPECTED);
- }
- if (WSAEventSelect(sock->fd, hEvent, type) != 0) {
- stat = WSAGetLastError();
- isc__strerror(stat, strbuf, sizeof(strbuf));
- msg = isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED, "failed");
- UNEXPECTED_ERROR(__FILE__, __LINE__, "WSAEventSelect: %s: %s",
- msg, strbuf);
- return (ISC_R_UNEXPECTED);
+ FATAL_ERROR(__FILE__, __LINE__,
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET,
+ ISC_MSG_FAILED,
+ "CreateIoCompletionPort() failed "
+ "during initialization: %s"),
+ strbuf);
+ exit(1);
}
- sock->hEvent = hEvent;
- sock->wait_type = type;
- notify_eventlist(sock, sock->manager, EVENT_ADD);
- return (ISC_R_SUCCESS);
-}
-
-/*
- * Note that the socket is not locked before calling this function
- */
-void
-socket_event_delete(isc_socket_t *sock) {
-
- REQUIRE(sock != NULL);
- REQUIRE(sock->hEvent != NULL);
-
- sock->wait_type = 0;
- sock->pending_close = 1;
- notify_eventlist(sock, sock->manager, EVENT_DELETE);
- sock->hEvent = NULL;
- sock->hAlert = NULL;
- sock->evthread_id = 0;
+ InterlockedIncrement(&sock->manager->iocp_total);
}
/*
@@ -895,21 +576,18 @@ socket_event_delete(isc_socket_t *sock) {
* with an event, otherwise the WSAWaitForMultipleEvents
* may fail due to the fact that the the Wait should not
* be running while closing an event or a socket.
+ * The socket is locked before calling this function
*/
void
socket_close(isc_socket_t *sock) {
REQUIRE(sock != NULL);
- sock->pending_close = 0;
- if (sock->hEvent != NULL)
- socket_event_delete(sock);
- else
+ if (sock->fd != INVALID_SOCKET) {
closesocket(sock->fd);
-
- if (sock->iocp) {
- sock->iocp = 0;
- InterlockedDecrement(&iocp_total);
+ sock->fd = INVALID_SOCKET;
+ _set_state(sock, SOCK_CLOSED);
+ InterlockedDecrement(&sock->manager->totalSockets);
}
}
@@ -921,9 +599,14 @@ initialise(void) {
WORD wVersionRequested;
WSADATA wsaData;
int err;
+ SOCKET sock;
+ GUID GUIDConnectEx = WSAID_CONNECTEX;
+ GUID GUIDAcceptEx = WSAID_ACCEPTEX;
+ GUID GUIDGetAcceptExSockaddrs = WSAID_GETACCEPTEXSOCKADDRS;
+ DWORD dwBytes;
- /* Need Winsock 2.0 or better */
- wVersionRequested = MAKEWORD(2, 0);
+ /* Need Winsock 2.2 or better */
+ wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0) {
@@ -933,8 +616,37 @@ initialise(void) {
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
ISC_MSG_FAILED, "failed"),
strbuf);
- } else
- initialised = ISC_TRUE;
+ exit(1);
+ }
+ /*
+ * The following APIs do not exist as functions in a library, but we must
+ * ask winsock for them. They are "extensions" -- but why they cannot be
+ * actual functions is beyond me. So, ask winsock for the pointers to the
+ * functions we need.
+ */
+ sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+ INSIST(sock != INVALID_SOCKET);
+ err = WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER,
+ &GUIDConnectEx, sizeof(GUIDConnectEx),
+ &ISCConnectEx, sizeof(ISCConnectEx),
+ &dwBytes, NULL, NULL);
+ INSIST(err == 0);
+
+ err = WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER,
+ &GUIDAcceptEx, sizeof(GUIDAcceptEx),
+ &ISCAcceptEx, sizeof(ISCAcceptEx),
+ &dwBytes, NULL, NULL);
+ INSIST(err == 0);
+
+ err = WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER,
+ &GUIDGetAcceptExSockaddrs, sizeof(GUIDGetAcceptExSockaddrs),
+ &ISCGetAcceptExSockaddrs, sizeof(ISCGetAcceptExSockaddrs),
+ &dwBytes, NULL, NULL);
+ INSIST(err == 0);
+
+ closesocket(sock);
+
+ initialised = ISC_TRUE;
}
/*
@@ -958,87 +670,122 @@ internal_sendmsg(isc_socket_t *sock, IoCompletionInfo *lpo,
int total_sent;
*Error = 0;
- Result = WSASendTo((SOCKET) sock->fd, messagehdr->msg_iov,
+ Result = WSASendTo(sock->fd, messagehdr->msg_iov,
messagehdr->msg_iovlen, &BytesSent,
- Flags, messagehdr->msg_name,
- messagehdr->msg_namelen, (LPOVERLAPPED) lpo,
+ Flags, (SOCKADDR *)&messagehdr->to_addr,
+ messagehdr->to_addr_len, (LPWSAOVERLAPPED)lpo,
NULL);
- total_sent = (int) BytesSent;
+ total_sent = (int)BytesSent;
/* Check for errors.*/
if (Result == SOCKET_ERROR) {
-
*Error = WSAGetLastError();
switch (*Error) {
- case WSA_IO_INCOMPLETE :
- case WSA_WAIT_IO_COMPLETION :
- case WSA_IO_PENDING :
+ case WSA_IO_INCOMPLETE:
+ case WSA_WAIT_IO_COMPLETION:
+ case WSA_IO_PENDING:
+ case NO_ERROR: /* Strange, but okay */
+ sock->pending_iocp++;
sock->pending_send++;
- case NO_ERROR :
break;
- default :
+ default:
return (-1);
break;
}
- } else
+ } else {
+ sock->pending_iocp++;
sock->pending_send++;
+ }
+
if (lpo != NULL)
return (0);
else
return (total_sent);
}
-int
-internal_recvmsg(isc_socket_t *sock, IoCompletionInfo *lpo,
- struct msghdr *messagehdr, int flags, int *Error)
-{
+static void
+queue_receive_request(isc_socket_t *sock) {
DWORD Flags = 0;
DWORD NumBytes = 0;
int total_bytes = 0;
int Result;
+ int Error;
+ WSABUF iov[1];
+ IoCompletionInfo *lpo;
+ isc_result_t isc_result;
- *Error = 0;
- Result = WSARecvFrom((SOCKET) sock->fd,
- messagehdr->msg_iov,
- messagehdr->msg_iovlen,
- &NumBytes,
- &Flags,
- messagehdr->msg_name,
- (int *)&(messagehdr->msg_namelen),
- (LPOVERLAPPED) lpo,
- NULL);
-
- total_bytes = (int) NumBytes;
+ /*
+ * If we already have a receive pending, do nothing.
+ */
+ if (sock->pending_recv > 0)
+ return;
+
+ /*
+ * If no one is waiting, do nothing.
+ */
+ if (ISC_LIST_EMPTY(sock->recv_list))
+ return;
+
+ INSIST(sock->recvbuf.remaining == 0);
+ INSIST(sock->fd != INVALID_SOCKET);
+
+ iov[0].len = sock->recvbuf.len;
+ iov[0].buf = sock->recvbuf.base;
+
+ lpo = (IoCompletionInfo *)HeapAlloc(hHeapHandle,
+ HEAP_ZERO_MEMORY,
+ sizeof(IoCompletionInfo));
+ RUNTIME_CHECK(lpo != NULL);
+ lpo->request_type = SOCKET_RECV;
+
+ sock->recvbuf.from_addr_len = sizeof(sock->recvbuf.from_addr);
+
+ Error = 0;
+ Result = WSARecvFrom((SOCKET)sock->fd, iov, 1,
+ &NumBytes, &Flags,
+ (SOCKADDR *)&sock->recvbuf.from_addr,
+ &sock->recvbuf.from_addr_len,
+ (LPWSAOVERLAPPED)lpo, NULL);
/* Check for errors. */
if (Result == SOCKET_ERROR) {
+ Error = WSAGetLastError();
- *Error = WSAGetLastError();
-
- switch (*Error) {
- case WSA_IO_INCOMPLETE:
- case WSA_WAIT_IO_COMPLETION:
+ switch (Error) {
case WSA_IO_PENDING:
+ sock->pending_iocp++;
sock->pending_recv++;
- case NO_ERROR:
break;
- default :
- return (-1);
+ default:
+ isc_result = isc__errno2result(Error);
+ if (isc_result == ISC_R_UNEXPECTED)
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "WSARecvFrom: Windows error code: %d, isc result %d",
+ Error, isc_result);
+ send_recvdone_abort(sock, isc_result);
break;
}
- } else
+ } else {
+ /*
+ * The recv() finished immediately, but we will still get
+ * a completion event. Rather than duplicate code, let
+ * that thread handle sending the data along its way.
+ */
+ sock->pending_iocp++;
sock->pending_recv++;
+ }
- /* Return the flags received in header */
- messagehdr->msg_flags = Flags;
- if (lpo != NULL)
- return (-1);
- else
- return (total_bytes);
+ socket_log(__LINE__, sock, NULL, IOEVENT,
+ isc_msgcat, ISC_MSGSET_SOCKET,
+ ISC_MSG_DOIORECV,
+ "queue_io_request: fd %d result %d error %d",
+ sock->fd, Result, Error);
+
+ CONSISTENT(sock);
}
static void
@@ -1060,13 +807,7 @@ manager_log(isc_socketmgr_t *sockmgr, isc_logcategory_t *category,
}
static void
-socket_log(isc_socket_t *sock, isc_sockaddr_t *address,
- isc_logcategory_t *category, isc_logmodule_t *module, int level,
- isc_msgcat_t *msgcat, int msgset, int message,
- const char *fmt, ...) ISC_FORMAT_PRINTF(9, 10);
-
-static void
-socket_log(isc_socket_t *sock, isc_sockaddr_t *address,
+socket_log(int lineno, isc_socket_t *sock, isc_sockaddr_t *address,
isc_logcategory_t *category, isc_logmodule_t *module, int level,
isc_msgcat_t *msgcat, int msgset, int message,
const char *fmt, ...)
@@ -1075,7 +816,8 @@ socket_log(isc_socket_t *sock, isc_sockaddr_t *address,
char peerbuf[256];
va_list ap;
- if (! isc_log_wouldlog(isc_lctx, level))
+
+ if (!isc_log_wouldlog(isc_lctx, level))
return;
va_start(ap, fmt);
@@ -1085,13 +827,15 @@ socket_log(isc_socket_t *sock, isc_sockaddr_t *address,
if (address == NULL) {
isc_log_iwrite(isc_lctx, category, module, level,
msgcat, msgset, message,
- "socket %p: %s", sock, msgbuf);
+ "socket %p line %d: %s", sock, lineno, msgbuf);
} else {
isc_sockaddr_format(address, peerbuf, sizeof(peerbuf));
isc_log_iwrite(isc_lctx, category, module, level,
msgcat, msgset, message,
- "socket %p %s: %s", sock, peerbuf, msgbuf);
+ "socket %p line %d peer %s: %s", sock, lineno,
+ peerbuf, msgbuf);
}
+
}
/*
@@ -1134,7 +878,7 @@ connection_reset_fix(SOCKET fd) {
BOOL bNewBehavior = FALSE;
DWORD status;
- if(isc_win32os_majorversion() < 5)
+ if (isc_win32os_majorversion() < 5)
return (ISC_R_SUCCESS); /* NT 4.0 has no problem */
/* disable bad behavior using IOCTL: SIO_UDP_CONNRESET */
@@ -1163,23 +907,20 @@ connection_reset_fix(SOCKET fd) {
*/
static void
build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev,
- struct msghdr *msg, char *cmsg, WSABUF *iov)
+ struct msghdr *msg, char *cmsg, WSABUF *iov,
+ IoCompletionInfo *lpo)
{
unsigned int iovcount;
isc_buffer_t *buffer;
+ buflist_t *cpbuffer;
isc_region_t used;
size_t write_count;
size_t skip_count;
memset(msg, 0, sizeof(*msg));
- if (sock->type == isc_sockettype_udp) {
- msg->msg_name = (void *)&dev->address.type.sa;
- msg->msg_namelen = dev->address.length;
- } else {
- msg->msg_name = NULL;
- msg->msg_namelen = 0;
- }
+ memcpy(&msg->to_addr, &dev->address.type, dev->address.length);
+ msg->to_addr_len = dev->address.length;
buffer = ISC_LIST_HEAD(dev->bufferlist);
write_count = 0;
@@ -1190,7 +931,20 @@ build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev,
*/
if (buffer == NULL) {
write_count = dev->region.length - dev->n;
- iov[0].buf = (void *)(dev->region.base + dev->n);
+ cpbuffer = HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, sizeof(buflist_t));
+ RUNTIME_CHECK(cpbuffer != NULL);
+ cpbuffer->buf = HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, write_count);
+ RUNTIME_CHECK(cpbuffer->buf != NULL);
+
+ socket_log(__LINE__, sock, NULL, TRACE,
+ isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
+ "alloc_buffer %p %d %p %d", cpbuffer, sizeof(buflist_t),
+ cpbuffer->buf, write_count);
+
+ memcpy(cpbuffer->buf,(dev->region.base + dev->n), write_count);
+ cpbuffer->buflen = write_count;
+ ISC_LIST_ENQUEUE(lpo->bufferlist, cpbuffer, link);
+ iov[0].buf = cpbuffer->buf;
iov[0].len = write_count;
iovcount = 1;
@@ -1216,10 +970,22 @@ build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev,
isc_buffer_usedregion(buffer, &used);
if (used.length > 0) {
- iov[iovcount].buf = (void *)(used.base
- + skip_count);
+ int uselen = used.length - skip_count;
+ cpbuffer = HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, sizeof(buflist_t));
+ RUNTIME_CHECK(cpbuffer != NULL);
+ cpbuffer->buf = HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, uselen);
+ RUNTIME_CHECK(cpbuffer->buf != NULL);
+
+ socket_log(__LINE__, sock, NULL, TRACE,
+ isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
+ "alloc_buffer %p %d %p %d", cpbuffer, sizeof(buflist_t),
+ cpbuffer->buf, write_count);
+
+ memcpy(cpbuffer->buf,(used.base + skip_count), uselen);
+ cpbuffer->buflen = uselen;
+ iov[iovcount].buf = cpbuffer->buf;
iov[iovcount].len = used.length - skip_count;
- write_count += (used.length - skip_count);
+ write_count += uselen;
skip_count = 0;
iovcount++;
}
@@ -1234,86 +1000,6 @@ build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev,
msg->msg_totallen = write_count;
}
-/*
- * Construct an iov array and attach it to the msghdr passed in. This is
- * the RECV constructor, which will use the available region of the buffer
- * (if using a buffer list) or will use the internal region (if a single
- * buffer I/O is requested).
- *
- * Nothing can be NULL, and the done event must list at least one buffer
- * on the buffer linked list for this function to be meaningful.
- */
-static void
-build_msghdr_recv(isc_socket_t *sock, isc_socketevent_t *dev,
- struct msghdr *msg, char *cmsg, WSABUF *iov)
-{
- unsigned int iovcount;
- isc_buffer_t *buffer;
- isc_region_t available;
- size_t read_count;
-
- memset(msg, 0, sizeof(struct msghdr));
-
- if (sock->type == isc_sockettype_udp) {
- memset(&dev->address, 0, sizeof(dev->address));
- msg->msg_name = (void *)&dev->address.type.sa;
- msg->msg_namelen = sizeof(dev->address.type);
- } else { /* TCP */
- msg->msg_name = NULL;
- msg->msg_namelen = 0;
- dev->address = sock->address;
- }
-
- buffer = ISC_LIST_HEAD(dev->bufferlist);
- read_count = 0;
-
- /*
- * Single buffer I/O? Skip what we've done so far in this region.
- */
- if (buffer == NULL) {
- read_count = dev->region.length - dev->n;
- iov[0].buf = (void *)(dev->region.base + dev->n);
- iov[0].len = read_count;
- iovcount = 1;
- } else {
- /*
- * Multibuffer I/O.
- * Skip empty buffers.
- */
- while (buffer != NULL) {
- REQUIRE(ISC_BUFFER_VALID(buffer));
- if (isc_buffer_availablelength(buffer) != 0)
- break;
- buffer = ISC_LIST_NEXT(buffer, link);
- }
-
- iovcount = 0;
- while (buffer != NULL) {
- INSIST(iovcount < MAXSCATTERGATHER_RECV);
-
- isc_buffer_availableregion(buffer, &available);
-
- if (available.length > 0) {
- iov[iovcount].buf = (void *)(available.base);
- iov[iovcount].len = available.length;
- read_count += available.length;
- iovcount++;
- }
- buffer = ISC_LIST_NEXT(buffer, link);
- }
- }
-
- /*
- * If needed, set up to receive that one extra byte. Note that
- * we know there is at least one iov left, since we stole it
- * at the top of this function.
- */
-
- msg->msg_iov = iov;
- msg->msg_iovlen = iovcount;
- msg->msg_totallen = read_count;
-}
-
static void
set_dev_address(isc_sockaddr_t *address, isc_socket_t *sock,
isc_socketevent_t *dev)
@@ -1351,7 +1037,7 @@ allocate_socketevent(isc_socket_t *sock, isc_eventtype_t eventtype,
if (ev == NULL)
return (NULL);
- ev->result = ISC_R_UNEXPECTED;
+ ev->result = ISC_R_IOERROR; // XXXMLG temporary change to detect failure to set
ISC_LINK_INIT(ev, ev_link);
ISC_LIST_INIT(ev->bufferlist);
ev->region.base = NULL;
@@ -1379,189 +1065,213 @@ dump_msg(struct msghdr *msg, isc_socket_t *sock) {
}
#endif
-static int
-completeio_recv(isc_socket_t *sock, isc_socketevent_t *dev,
- struct msghdr *messagehdr, int cc, int recv_errno)
-{
- size_t actual_count;
- isc_buffer_t *buffer;
-
-#define SOFT_OR_HARD(_system, _isc) \
- if (recv_errno == _system) { \
- if (sock->connected) { \
- dev->result = _isc; \
- return (DOIO_HARD); \
- } \
- return (DOIO_SOFT); \
+/*
+ * map the error code
+ */
+int
+map_socket_error(isc_socket_t *sock, int windows_errno, int *isc_errno,
+ char *errorstring, size_t bufsize) {
+
+ int doreturn;
+ switch (windows_errno) {
+ case WSAECONNREFUSED:
+ *isc_errno = ISC_R_CONNREFUSED;
+ if (sock->connected)
+ doreturn = DOIO_HARD;
+ else
+ doreturn = DOIO_SOFT;
+ break;
+ case WSAENETUNREACH:
+ case ERROR_NETWORK_UNREACHABLE:
+ *isc_errno = ISC_R_NETUNREACH;
+ if (sock->connected)
+ doreturn = DOIO_HARD;
+ else
+ doreturn = DOIO_SOFT;
+ break;
+ case ERROR_PORT_UNREACHABLE:
+ case ERROR_HOST_UNREACHABLE:
+ case WSAEHOSTUNREACH:
+ *isc_errno = ISC_R_HOSTUNREACH;
+ if (sock->connected)
+ doreturn = DOIO_HARD;
+ else
+ doreturn = DOIO_SOFT;
+ break;
+ case WSAENETDOWN:
+ *isc_errno = ISC_R_NETDOWN;
+ if (sock->connected)
+ doreturn = DOIO_HARD;
+ else
+ doreturn = DOIO_SOFT;
+ break;
+ case WSAEHOSTDOWN:
+ *isc_errno = ISC_R_HOSTDOWN;
+ if (sock->connected)
+ doreturn = DOIO_HARD;
+ else
+ doreturn = DOIO_SOFT;
+ break;
+ case WSAEACCES:
+ *isc_errno = ISC_R_NOPERM;
+ if (sock->connected)
+ doreturn = DOIO_HARD;
+ else
+ doreturn = DOIO_SOFT;
+ break;
+ case WSAECONNRESET:
+ case WSAENETRESET:
+ case WSAECONNABORTED:
+ case WSAEDISCON:
+ *isc_errno = ISC_R_CONNECTIONRESET;
+ if (sock->connected)
+ doreturn = DOIO_HARD;
+ else
+ doreturn = DOIO_SOFT;
+ break;
+ case WSAENOTCONN:
+ *isc_errno = ISC_R_NOTCONNECTED;
+ if (sock->connected)
+ doreturn = DOIO_HARD;
+ else
+ doreturn = DOIO_SOFT;
+ break;
+ case ERROR_OPERATION_ABORTED:
+ case ERROR_CONNECTION_ABORTED:
+ case ERROR_REQUEST_ABORTED:
+ *isc_errno = ISC_R_CONNECTIONRESET;
+ doreturn = DOIO_HARD;
+ break;
+ case WSAENOBUFS:
+ *isc_errno = ISC_R_NORESOURCES;
+ doreturn = DOIO_HARD;
+ break;
+ case WSAEAFNOSUPPORT:
+ *isc_errno = ISC_R_FAMILYNOSUPPORT;
+ doreturn = DOIO_HARD;
+ break;
+ case WSAEADDRNOTAVAIL:
+ *isc_errno = ISC_R_ADDRNOTAVAIL;
+ doreturn = DOIO_HARD;
+ break;
+ case WSAEDESTADDRREQ:
+ *isc_errno = ISC_R_BADADDRESSFORM;
+ doreturn = DOIO_HARD;
+ break;
+ case ERROR_NETNAME_DELETED:
+ *isc_errno = ISC_R_NETDOWN;
+ doreturn = DOIO_HARD;
+ break;
+ default:
+ *isc_errno = ISC_R_IOERROR;
+ doreturn = DOIO_HARD;
+ break;
}
-
-#define ALWAYS_HARD(_system, _isc) \
- if (recv_errno == _system) { \
- dev->result = _isc; \
- return (DOIO_HARD); \
+ if (doreturn == DOIO_HARD) {
+ isc__strerror(windows_errno, errorstring, bufsize);
}
+ return (doreturn);
+}
- if (recv_errno != 0) {
-
- if (SOFT_ERROR(recv_errno))
- return (DOIO_SOFT);
-
- SOFT_OR_HARD(WSAECONNREFUSED, ISC_R_CONNREFUSED);
- SOFT_OR_HARD(WSAENETUNREACH, ISC_R_NETUNREACH);
- SOFT_OR_HARD(WSAEHOSTUNREACH, ISC_R_HOSTUNREACH);
- SOFT_OR_HARD(WSAECONNRESET, ISC_R_CONNECTIONRESET);
- SOFT_OR_HARD(WSAENETRESET, ISC_R_CONNECTIONRESET);
- SOFT_OR_HARD(WSAECONNABORTED, ISC_R_CONNECTIONRESET);
- SOFT_OR_HARD(WSAEDISCON, ISC_R_CONNECTIONRESET);
- SOFT_OR_HARD(WSAENETDOWN, ISC_R_NETDOWN);
- ALWAYS_HARD(ERROR_OPERATION_ABORTED, ISC_R_CONNECTIONRESET);
- ALWAYS_HARD(ERROR_NETNAME_DELETED, ISC_R_CONNECTIONRESET);
- ALWAYS_HARD(ERROR_PORT_UNREACHABLE, ISC_R_HOSTUNREACH);
- ALWAYS_HARD(ERROR_HOST_UNREACHABLE, ISC_R_HOSTUNREACH);
- ALWAYS_HARD(ERROR_NETWORK_UNREACHABLE, ISC_R_NETUNREACH);
- ALWAYS_HARD(ERROR_NETNAME_DELETED, ISC_R_NETUNREACH);
- ALWAYS_HARD(WSAENOBUFS, ISC_R_NORESOURCES);
-
-#undef SOFT_OR_HARD
-#undef ALWAYS_HARD
-
- dev->result = isc__errno2result(recv_errno);
- return (DOIO_HARD);
- }
+static void
+fill_recv(isc_socket_t *sock, isc_socketevent_t *dev) {
+ isc_region_t r;
+ int copylen;
+ isc_buffer_t *buffer;
- /*
- * On TCP, zero length reads indicate EOF, while on
- * UDP, zero length reads are perfectly valid, although
- * strange.
- */
- if ((sock->type == isc_sockettype_tcp) && (cc == 0))
- return (DOIO_EOF);
+ INSIST(dev->n < dev->minimum);
+ INSIST(sock->recvbuf.remaining > 0);
+ INSIST(sock->pending_recv == 0);
if (sock->type == isc_sockettype_udp) {
- dev->address.length = messagehdr->msg_namelen;
+ dev->address.length = sock->recvbuf.from_addr_len;
+ memcpy(&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(sock, &dev->address, IOEVENT,
+ socket_log(__LINE__, sock, &dev->address, IOEVENT,
isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_ZEROPORT,
"dropping source port zero packet");
}
- return (DOIO_SOFT);
+ sock->recvbuf.remaining = 0;
+ return;
}
+ } else if (sock->type == isc_sockettype_tcp) {
+ dev->address = sock->address;
}
- socket_log(sock, &dev->address, IOEVENT,
- isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_PKTRECV,
- "packet received correctly");
-
- /*
- * Overflow bit detection. If we received MORE bytes than we should,
- * this indicates an overflow situation. Set the flag in the
- * dev entry and adjust how much we read by one.
- */
-#ifdef ISC_NET_RECVOVERFLOW
- if ((sock->type == isc_sockettype_udp) && ((size_t)cc > read_count)) {
- dev->attributes |= ISC_SOCKEVENTATTR_TRUNC;
- cc--;
- }
-#endif
-
/*
- * update the buffers (if any) and the i/o count
+ * Run through the list of buffers we were given, and find the
+ * first one with space. Once it is found, loop through, filling
+ * the buffers as much as possible.
*/
- dev->n += cc;
- actual_count = cc;
buffer = ISC_LIST_HEAD(dev->bufferlist);
- while (buffer != NULL && actual_count > 0) {
- REQUIRE(ISC_BUFFER_VALID(buffer));
- if (isc_buffer_availablelength(buffer) <= actual_count) {
- actual_count -= isc_buffer_availablelength(buffer);
- isc_buffer_add(buffer,
- isc_buffer_availablelength(buffer));
- } else {
- isc_buffer_add(buffer, actual_count);
- actual_count = 0;
- break;
- }
- buffer = ISC_LIST_NEXT(buffer, link);
- if (buffer == NULL) {
- INSIST(actual_count == 0);
+ if (buffer != NULL) { // Multi-buffer receive
+ while (buffer != NULL && sock->recvbuf.remaining > 0) {
+ 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);
+ sock->recvbuf.consume_position += copylen;
+ sock->recvbuf.remaining -= copylen;
+ isc_buffer_add(buffer, copylen);
+ dev->n += copylen;
+ }
+ buffer = ISC_LIST_NEXT(buffer, link);
}
+ } 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);
+ sock->recvbuf.consume_position += copylen;
+ sock->recvbuf.remaining -= copylen;
+ dev->n += copylen;
}
/*
- * If we read less than we expected, update counters,
- * and let the upper layer handle it.
+ * UDP receives are all-consuming. That is, if we have 4k worth of
+ * data in our receive buffer, and the caller only gave us
+ * 1k of space, we will toss the remaining 3k of data. TCP
+ * will keep the extra data around and use it for later requests.
*/
- if ((cc != messagehdr->msg_totallen) && (dev->n < dev->minimum))
- return (DOIO_SOFT);
-
- /*
- * Full reads are posted, or partials if partials are ok.
- */
- dev->result = ISC_R_SUCCESS;
- return (DOIO_SUCCESS);
+ if (sock->type == isc_sockettype_udp)
+ sock->recvbuf.remaining = 0;
}
-static int
-startio_recv(isc_socket_t *sock, isc_socketevent_t *dev, int *nbytes,
- int *recv_errno)
+/*
+ * Copy out as much data from the internal buffer to done events.
+ * As each done event is filled, send it along its way.
+ */
+static void
+completeio_recv(isc_socket_t *sock)
{
- char *cmsg = NULL;
- char strbuf[ISC_STRERRORSIZE];
- IoCompletionInfo *lpo;
- int status;
- struct msghdr *msghdr;
-
- lpo = (IoCompletionInfo *) HeapAlloc(hHeapHandle,
- HEAP_ZERO_MEMORY,
- sizeof(IoCompletionInfo));
- lpo->request_type = SOCKET_RECV;
- lpo->dev = dev;
- msghdr = &lpo->messagehdr;
- memset(msghdr, 0, sizeof(struct msghdr));
-
- build_msghdr_recv(sock, dev, msghdr, cmsg, sock->iov);
+ isc_socketevent_t *dev;
-#if defined(ISC_SOCKET_DEBUG)
- dump_msg(msghdr, sock);
-#endif
+ /*
+ * If we are in the process of filling our buffer, we cannot
+ * touch it yet, so don't.
+ */
+ if (sock->pending_recv > 0)
+ return;
- *nbytes = internal_recvmsg(sock, lpo, msghdr, 0, recv_errno);
+ while (sock->recvbuf.remaining > 0 && !ISC_LIST_EMPTY(sock->recv_list)) {
+ dev = ISC_LIST_HEAD(sock->recv_list);
- if (*nbytes < 0) {
/*
- * I/O has been initiated
- * return will be via the completion port
+ * See if we have sufficient data in our receive buffer
+ * to handle this. If we do, copy out the data.
*/
- if (PENDING_ERROR(*recv_errno)) {
- status = DOIO_PENDING;
- goto done;
- }
- if (SOFT_ERROR(*recv_errno)) {
- status = DOIO_SOFT;
- goto done;
- }
+ fill_recv(sock, dev);
/*
- * If we got this far something is wrong
+ * Did we satisfy it?
*/
- if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) {
- isc__strerror(*recv_errno, strbuf, sizeof(strbuf));
- socket_log(sock, NULL, IOEVENT,
- isc_msgcat, ISC_MSGSET_SOCKET,
- ISC_MSG_DOIORECV,
- "startio_recv: recvmsg(%d) %d bytes, "
- "err %d/%s",
- sock->fd, *nbytes, *recv_errno, strbuf);
+ if (dev->n >= dev->minimum) {
+ dev->result = ISC_R_SUCCESS;
+ send_recvdone_event(sock, &dev);
}
- status = DOIO_HARD;
- goto done;
}
- dev->result = ISC_R_SUCCESS;
- status = DOIO_SOFT;
-done:
- return (status);
}
/*
@@ -1584,50 +1294,12 @@ completeio_send(isc_socket_t *sock, isc_socketevent_t *dev,
char addrbuf[ISC_SOCKADDR_FORMATSIZE];
char strbuf[ISC_STRERRORSIZE];
- if(send_errno != 0) {
-
-
+ if (send_errno != 0) {
if (SOFT_ERROR(send_errno))
return (DOIO_SOFT);
-#define SOFT_OR_HARD(_system, _isc) \
- if (send_errno == _system) { \
- if (sock->connected) { \
- dev->result = _isc; \
- return (DOIO_HARD); \
- } \
- return (DOIO_SOFT); \
- }
-#define ALWAYS_HARD(_system, _isc) \
- if (send_errno == _system) { \
- dev->result = _isc; \
- return (DOIO_HARD); \
- }
-
- SOFT_OR_HARD(WSAEACCES, ISC_R_NOPERM);
- SOFT_OR_HARD(WSAEAFNOSUPPORT, ISC_R_ADDRNOTAVAIL);
- SOFT_OR_HARD(WSAECONNREFUSED, ISC_R_CONNREFUSED);
- SOFT_OR_HARD(WSAENOTCONN, ISC_R_CONNREFUSED);
- SOFT_OR_HARD(WSAECONNRESET, ISC_R_CONNECTIONRESET);
- SOFT_OR_HARD(WSAECONNABORTED, ISC_R_CONNECTIONRESET);
- SOFT_OR_HARD(WSAENETRESET, ISC_R_CONNECTIONRESET);
- SOFT_OR_HARD(WSAEDISCON, ISC_R_CONNECTIONRESET);
- SOFT_OR_HARD(WSAENETDOWN, ISC_R_NETDOWN);
- ALWAYS_HARD(ERROR_OPERATION_ABORTED, ISC_R_CONNECTIONRESET);
- ALWAYS_HARD(ERROR_NETNAME_DELETED, ISC_R_CONNECTIONRESET);
- ALWAYS_HARD(ERROR_PORT_UNREACHABLE, ISC_R_HOSTUNREACH);
- ALWAYS_HARD(ERROR_HOST_UNREACHABLE, ISC_R_HOSTUNREACH);
- ALWAYS_HARD(ERROR_NETWORK_UNREACHABLE, ISC_R_NETUNREACH);
- ALWAYS_HARD(WSAEADDRNOTAVAIL, ISC_R_ADDRNOTAVAIL);
- ALWAYS_HARD(WSAEHOSTUNREACH, ISC_R_HOSTUNREACH);
- ALWAYS_HARD(WSAEHOSTDOWN, ISC_R_HOSTUNREACH);
- ALWAYS_HARD(WSAENETUNREACH, ISC_R_NETUNREACH);
- ALWAYS_HARD(WSAENOBUFS, ISC_R_NORESOURCES);
- ALWAYS_HARD(EPERM, ISC_R_HOSTUNREACH);
- ALWAYS_HARD(EPIPE, ISC_R_NOTCONNECTED);
-
-#undef SOFT_OR_HARD
-#undef ALWAYS_HARD
+ return (map_socket_error(sock, send_errno, &dev->result,
+ strbuf, sizeof(strbuf)));
/*
* The other error types depend on whether or not the
@@ -1671,19 +1343,20 @@ startio_send(isc_socket_t *sock, isc_socketevent_t *dev, int *nbytes,
int status;
struct msghdr *msghdr;
- lpo = (IoCompletionInfo *) HeapAlloc(hHeapHandle,
- HEAP_ZERO_MEMORY,
- sizeof(IoCompletionInfo));
+ lpo = (IoCompletionInfo *)HeapAlloc(hHeapHandle,
+ HEAP_ZERO_MEMORY,
+ sizeof(IoCompletionInfo));
+ RUNTIME_CHECK(lpo != NULL);
lpo->request_type = SOCKET_SEND;
lpo->dev = dev;
msghdr = &lpo->messagehdr;
memset(msghdr, 0, sizeof(struct msghdr));
+ ISC_LIST_INIT(lpo->bufferlist);
- build_msghdr_send(sock, dev, msghdr, cmsg, sock->iov);
+ build_msghdr_send(sock, dev, msghdr, cmsg, sock->iov, lpo);
*nbytes = internal_sendmsg(sock, lpo, msghdr, 0, send_errno);
-
if (*nbytes < 0) {
/*
* I/O has been initiated
@@ -1704,7 +1377,7 @@ startio_send(isc_socket_t *sock, isc_socketevent_t *dev, int *nbytes,
*/
if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) {
isc__strerror(*send_errno, strbuf, sizeof(strbuf));
- socket_log(sock, NULL, IOEVENT,
+ socket_log(__LINE__, sock, NULL, IOEVENT,
isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_INTERNALSEND,
"startio_send: internal_sendmsg(%d) %d "
@@ -1716,56 +1389,10 @@ startio_send(isc_socket_t *sock, isc_socketevent_t *dev, int *nbytes,
dev->result = ISC_R_SUCCESS;
status = DOIO_SOFT;
done:
+ _set_state(sock, SOCK_DATA);
return (status);
}
-/*
- * Kill.
- *
- * Caller must ensure that the socket is not locked and no external
- * references exist.
- */
-static void
-destroy_socket(isc_socket_t **sockp) {
- isc_socket_t *sock = *sockp;
- isc_socketmgr_t *manager = sock->manager;
- isc_boolean_t dofree = ISC_TRUE;
-
- REQUIRE(sock != NULL);
-
- socket_log(sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET,
- ISC_MSG_DESTROYING, "destroying socket %d", sock->fd);
-
- LOCK(&manager->lock);
-
- LOCK(&sock->lock);
-
- INSIST(ISC_LIST_EMPTY(sock->accept_list));
- INSIST(ISC_LIST_EMPTY(sock->recv_list));
- INSIST(ISC_LIST_EMPTY(sock->send_list));
- INSIST(sock->connect_ev == NULL);
-
- socket_close(sock);
- if (sock->pending_recv != 0 || sock->pending_send != 0 ||
- sock->pending_close != 0) {
- dofree = ISC_FALSE;
- sock->pending_free = 1;
- } else
- ISC_LIST_UNLINK(manager->socklist, sock, link);
- UNLOCK(&sock->lock);
-
- if (ISC_LIST_EMPTY(manager->socklist))
- SIGNAL(&manager->shutdown_ok);
-
- /*
- * XXX should reset manager->maxfd here
- */
- UNLOCK(&manager->lock);
-
- if (dofree)
- free_socket(sockp);
-}
-
static isc_result_t
allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type,
isc_socket_t **socketp) {
@@ -1777,8 +1404,6 @@ allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type,
if (sock == NULL)
return (ISC_R_NOMEMORY);
- result = ISC_R_UNEXPECTED;
-
sock->magic = 0;
sock->references = 0;
@@ -1796,19 +1421,24 @@ allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type,
ISC_LIST_INIT(sock->accept_list);
sock->connect_ev = NULL;
sock->pending_accept = 0;
- sock->pending_close = 0;
sock->pending_recv = 0;
sock->pending_send = 0;
- sock->pending_free = 0;
- sock->iocp = 0;
+ sock->pending_iocp = 0;
sock->listener = 0;
sock->connected = 0;
- sock->connecting = 0;
+ sock->pending_connect = 0;
sock->bound = 0;
- sock->hEvent = NULL;
- sock->hAlert = NULL;
- sock->evthread_id = 0;
- sock->wait_type = 0;
+ memset(sock->name, 0, sizeof(sock->name)); // zero the name field
+ _set_state(sock, SOCK_INITIALIZED);
+
+ sock->recvbuf.len = 65536;
+ sock->recvbuf.consume_position = sock->recvbuf.base;
+ sock->recvbuf.remaining = 0;
+ sock->recvbuf.base = isc_mem_get(manager->mctx, sock->recvbuf.len); // max buffer size
+ if (sock->recvbuf.base == NULL) {
+ sock->magic = 0;
+ goto error;
+ }
/*
* initialize the lock
@@ -1816,18 +1446,13 @@ allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type,
result = isc_mutex_init(&sock->lock);
if (result != ISC_R_SUCCESS) {
sock->magic = 0;
+ isc_mem_put(manager->mctx, sock->recvbuf.base, sock->recvbuf.len);
+ sock->recvbuf.base = NULL;
goto error;
}
- /*
- * Initialize readable and writable events
- */
- ISC_EVENT_INIT(&sock->readable_ev, sizeof(intev_t),
- ISC_EVENTATTR_NOPURGE, NULL, ISC_SOCKEVENT_INTR,
- NULL, sock, sock, NULL, NULL);
- ISC_EVENT_INIT(&sock->writable_ev, sizeof(intev_t),
- ISC_EVENTATTR_NOPURGE, NULL, ISC_SOCKEVENT_INTW,
- NULL, sock, sock, NULL, NULL);
+ socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
+ "allocated");
sock->magic = SOCKET_MAGIC;
*socketp = sock;
@@ -1841,32 +1466,122 @@ allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type,
}
/*
- * This event requires that the various lists be empty, that the reference
- * count be 1, and that the magic number is valid. The other socket bits,
- * like the lock, must be initialized as well. The fd associated must be
- * marked as closed, by setting it to INVALID_SOCKET on close, or this
- * routine will also close the socket.
+ * Verify that the socket state is consistent.
*/
static void
-free_socket(isc_socket_t **socketp) {
+consistent(isc_socket_t *sock) {
+
+ isc_socketevent_t *dev;
+ isc_socket_newconnev_t *nev;
+ unsigned int count;
+ char *crash_reason;
+ isc_boolean_t crash = ISC_FALSE;
+
+ REQUIRE(sock->pending_iocp == sock->pending_recv + sock->pending_send
+ + sock->pending_accept + sock->pending_connect);
+
+ dev = ISC_LIST_HEAD(sock->send_list);
+ count = 0;
+ while (dev != NULL) {
+ count++;
+ dev = ISC_LIST_NEXT(dev, ev_link);
+ }
+ if (count > sock->pending_send) {
+ crash = ISC_TRUE;
+ crash_reason = "send_list > sock->pending_send";
+ }
+
+ nev = ISC_LIST_HEAD(sock->accept_list);
+ count = 0;
+ while (nev != NULL) {
+ count++;
+ nev = ISC_LIST_NEXT(nev, ev_link);
+ }
+ if (count > sock->pending_accept) {
+ crash = ISC_TRUE;
+ crash_reason = "send_list > sock->pending_send";
+ }
+
+ if (crash) {
+ socket_log(__LINE__, sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET,
+ ISC_MSG_DESTROYING, "SOCKET INCONSISTENT: %s",
+ crash_reason);
+ sock_dump(sock);
+ INSIST(crash == ISC_FALSE);
+ }
+}
+
+/*
+ * Maybe free the socket.
+ *
+ * This function will veriy tht the socket is no longer in use in any way,
+ * either internally or externally. This is the only place where this
+ * check is to be made; if some bit of code believes that IT is done with
+ * the socket (e.g., some reference counter reaches zero), it should call
+ * this function.
+ *
+ * When calling this function, the socket must be locked, and the manager
+ * must be unlocked.
+ *
+ * When this function returns, *socketp will be NULL. No tricks to try
+ * to hold on to this pointer are allowed.
+ */
+static void
+maybe_free_socket(isc_socket_t **socketp, int lineno) {
isc_socket_t *sock = *socketp;
+ *socketp = NULL;
- INSIST(sock->references == 0);
INSIST(VALID_SOCKET(sock));
- INSIST(!sock->connecting);
- INSIST(!sock->pending_accept);
- INSIST(ISC_LIST_EMPTY(sock->recv_list));
- INSIST(ISC_LIST_EMPTY(sock->send_list));
- INSIST(ISC_LIST_EMPTY(sock->accept_list));
- INSIST(!ISC_LINK_LINKED(sock, link));
+ CONSISTENT(sock);
+
+ if (sock->pending_iocp > 0
+ || sock->pending_recv > 0
+ || sock->pending_send > 0
+ || sock->pending_accept > 0
+ || sock->references > 0
+ || sock->pending_connect == 1
+ || !ISC_LIST_EMPTY(sock->recv_list)
+ || !ISC_LIST_EMPTY(sock->send_list)
+ || !ISC_LIST_EMPTY(sock->accept_list)
+ || sock->fd != INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return;
+ }
+ UNLOCK(&sock->lock);
- sock->magic = 0;
+ free_socket(&sock, lineno);
+}
+void
+free_socket(isc_socket_t **sockp, int lineno) {
+ isc_socketmgr_t *manager;
+ isc_socket_t *sock = *sockp;
+ *sockp = NULL;
+
+ manager = sock->manager;
+
+ /*
+ * Seems we can free the socket after all.
+ */
+ manager = sock->manager;
+ socket_log(__LINE__, sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET,
+ ISC_MSG_DESTROYING, "freeing socket line %d fd %d lock %p semaphore %p",
+ lineno, sock->fd, &sock->lock, sock->lock.LockSemaphore);
+
+ sock->magic = 0;
DESTROYLOCK(&sock->lock);
- isc_mem_put(sock->manager->mctx, sock, sizeof(*sock));
+ if (sock->recvbuf.base != NULL)
+ isc_mem_put(manager->mctx, sock->recvbuf.base, sock->recvbuf.len);
- *socketp = NULL;
+ LOCK(&manager->lock);
+ if (ISC_LINK_LINKED(sock, link))
+ ISC_LIST_UNLINK(manager->socklist, sock, link);
+ isc_mem_put(manager->mctx, sock, sizeof(*sock));
+
+ if (ISC_LIST_EMPTY(manager->socklist))
+ SIGNAL(&manager->shutdown_ok);
+ UNLOCK(&manager->lock);
}
/*
@@ -1892,6 +1607,7 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
REQUIRE(VALID_MANAGER(manager));
REQUIRE(socketp != NULL && *socketp == NULL);
+ REQUIRE(type != isc_sockettype_fdwatch);
result = allocate_socket(manager, type, &sock);
if (result != ISC_R_SUCCESS)
@@ -1904,8 +1620,14 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
if (sock->fd != INVALID_SOCKET) {
result = connection_reset_fix(sock->fd);
if (result != ISC_R_SUCCESS) {
+ socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
+ "closed %d %d %d con_reset_fix_failed",
+ sock->pending_recv, sock->pending_send,
+ sock->references);
closesocket(sock->fd);
- free_socket(&sock);
+ _set_state(sock, SOCK_CLOSED);
+ sock->fd = INVALID_SOCKET;
+ free_socket(&sock, __LINE__);
return (result);
}
}
@@ -1917,7 +1639,7 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
if (sock->fd == INVALID_SOCKET) {
socket_errno = WSAGetLastError();
- free_socket(&sock);
+ free_socket(&sock, __LINE__);
switch (socket_errno) {
case WSAEMFILE:
@@ -1944,8 +1666,13 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
result = make_nonblock(sock->fd);
if (result != ISC_R_SUCCESS) {
+ socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
+ "closed %d %d %d make_nonblock_failed",
+ sock->pending_recv, sock->pending_send,
+ sock->references);
closesocket(sock->fd);
- free_socket(&sock);
+ sock->fd = INVALID_SOCKET;
+ free_socket(&sock, __LINE__);
return (result);
}
@@ -2011,21 +1738,23 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
}
#endif /* defined(USE_CMSG) || defined(SO_RCVBUF) */
+ _set_state(sock, SOCK_OPEN);
sock->references = 1;
*socketp = sock;
- LOCK(&manager->lock);
+ iocompletionport_update(sock);
/*
* Note we don't have to lock the socket like we normally would because
* there are no external references to it yet.
*/
-
+ LOCK(&manager->lock);
ISC_LIST_APPEND(manager->socklist, sock, link);
+ InterlockedIncrement(&manager->totalSockets);
UNLOCK(&manager->lock);
- socket_log(sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET,
- ISC_MSG_CREATED, "created %u", sock->fd);
+ socket_log(__LINE__, sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET,
+ ISC_MSG_CREATED, "created %u type %u", sock->fd, type);
return (ISC_R_SUCCESS);
}
@@ -2033,6 +1762,7 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type,
isc_result_t
isc_socket_open(isc_socket_t *sock) {
REQUIRE(VALID_SOCKET(sock));
+ REQUIRE(sock->type != isc_sockettype_fdwatch);
return (ISC_R_NOTIMPLEMENTED);
}
@@ -2046,6 +1776,7 @@ isc_socket_attach(isc_socket_t *sock, isc_socket_t **socketp) {
REQUIRE(socketp != NULL && *socketp == NULL);
LOCK(&sock->lock);
+ CONSISTENT(sock);
sock->references++;
UNLOCK(&sock->lock);
@@ -2064,16 +1795,25 @@ isc_socket_detach(isc_socket_t **socketp) {
REQUIRE(socketp != NULL);
sock = *socketp;
REQUIRE(VALID_SOCKET(sock));
+ REQUIRE(sock->type != isc_sockettype_fdwatch);
LOCK(&sock->lock);
+ CONSISTENT(sock);
REQUIRE(sock->references > 0);
sock->references--;
- if (sock->references == 0)
- kill_socket = ISC_TRUE;
- UNLOCK(&sock->lock);
- if (kill_socket)
- destroy_socket(&sock);
+ socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
+ "detach_socket %d %d %d",
+ sock->pending_recv, sock->pending_send,
+ sock->references);
+
+ if (sock->references == 0 && sock->fd != INVALID_SOCKET) {
+ closesocket(sock->fd);
+ sock->fd = INVALID_SOCKET;
+ _set_state(sock, SOCK_CLOSED);
+ }
+
+ maybe_free_socket(&sock, __LINE__);
*socketp = NULL;
}
@@ -2081,6 +1821,7 @@ isc_socket_detach(isc_socket_t **socketp) {
isc_result_t
isc_socket_close(isc_socket_t *sock) {
REQUIRE(VALID_SOCKET(sock));
+ REQUIRE(sock->type != isc_sockettype_fdwatch);
return (ISC_R_NOTIMPLEMENTED);
}
@@ -2091,7 +1832,7 @@ isc_socket_close(isc_socket_t *sock) {
* destined for.
*
* If the event to be sent is on a list, remove it before sending. If
- * asked to, send and detach from the socket as well.
+ * asked to, send and detach from the task as well.
*
* Caller must have the socket locked if the event is attached to the socket.
*/
@@ -2100,24 +1841,22 @@ send_recvdone_event(isc_socket_t *sock, isc_socketevent_t **dev) {
isc_task_t *task;
task = (*dev)->ev_sender;
-
(*dev)->ev_sender = sock;
- if (ISC_LINK_LINKED(*dev, ev_link)) {
+ if (ISC_LINK_LINKED(*dev, ev_link))
ISC_LIST_DEQUEUE(sock->recv_list, *dev, ev_link);
- }
if (((*dev)->attributes & ISC_SOCKEVENTATTR_ATTACHED)
== ISC_SOCKEVENTATTR_ATTACHED)
isc_task_sendanddetach(&task, (isc_event_t **)dev);
else
isc_task_send(task, (isc_event_t **)dev);
+
+ CONSISTENT(sock);
}
/*
* See comments for send_recvdone_event() above.
- *
- * Caller must have the socket locked if the event is attached to the socket.
*/
static void
send_senddone_event(isc_socket_t *sock, isc_socketevent_t **dev) {
@@ -2128,276 +1867,190 @@ send_senddone_event(isc_socket_t *sock, isc_socketevent_t **dev) {
task = (*dev)->ev_sender;
(*dev)->ev_sender = sock;
- if (ISC_LINK_LINKED(*dev, ev_link)) {
+ if (ISC_LINK_LINKED(*dev, ev_link))
ISC_LIST_DEQUEUE(sock->send_list, *dev, ev_link);
- }
if (((*dev)->attributes & ISC_SOCKEVENTATTR_ATTACHED)
== ISC_SOCKEVENTATTR_ATTACHED)
isc_task_sendanddetach(&task, (isc_event_t **)dev);
else
isc_task_send(task, (isc_event_t **)dev);
+
+ CONSISTENT(sock);
+}
+
+/*
+ * See comments for send_recvdone_event() above.
+ */
+static void
+send_acceptdone_event(isc_socket_t *sock, isc_socket_newconnev_t **adev) {
+ isc_task_t *task;
+
+ INSIST(adev != NULL && *adev != NULL);
+
+ task = (*adev)->ev_sender;
+ (*adev)->ev_sender = sock;
+
+ if (ISC_LINK_LINKED(*adev, ev_link))
+ ISC_LIST_DEQUEUE(sock->accept_list, *adev, ev_link);
+
+ isc_task_sendanddetach(&task, (isc_event_t **)adev);
+
+ CONSISTENT(sock);
+}
+
+/*
+ * See comments for send_recvdone_event() above.
+ */
+static void
+send_connectdone_event(isc_socket_t *sock, isc_socket_connev_t **cdev) {
+ isc_task_t *task;
+
+ INSIST(cdev != NULL && *cdev != NULL);
+
+ task = (*cdev)->ev_sender;
+ (*cdev)->ev_sender = sock;
+
+ sock->connect_ev = NULL;
+
+ isc_task_sendanddetach(&task, (isc_event_t **)cdev);
+
+ CONSISTENT(sock);
}
/*
- * Call accept() on a socket, to get the new file descriptor. The listen
- * socket is used as a prototype to create a new isc_socket_t. The new
- * socket has one outstanding reference. The task receiving the event
- * will be detached from just after the event is delivered.
- *
* On entry to this function, the event delivered is the internal
* readable event, and the first item on the accept_list should be
* the done event we want to send. If the list is empty, this is a no-op,
- * so just unlock and return.
+ * so just close the new connection, unlock, and return.
+ *
+ * Note the the socket is locked before entering here
*/
static void
-internal_accept(isc_socket_t *sock, int accept_errno) {
- isc_socketmgr_t *manager;
- isc_socket_newconnev_t *dev;
- isc_task_t *task;
- ISC_SOCKADDR_LEN_T addrlen;
- SOCKET fd;
+internal_accept(isc_socket_t *sock, IoCompletionInfo *lpo, int accept_errno) {
+ isc_socket_newconnev_t *adev;
isc_result_t result = ISC_R_SUCCESS;
- char strbuf[ISC_STRERRORSIZE];
+ isc_socket_t *nsock;
+ struct sockaddr *localaddr;
+ int localaddr_len = sizeof(*localaddr);
+ struct sockaddr *remoteaddr;
+ int remoteaddr_len = sizeof(*remoteaddr);
INSIST(VALID_SOCKET(sock));
-
LOCK(&sock->lock);
- socket_log(sock, NULL, TRACE,
- isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
- "internal_accept called, locked socket");
+ CONSISTENT(sock);
- manager = sock->manager;
- INSIST(VALID_MANAGER(manager));
+ socket_log(__LINE__, sock, NULL, TRACE,
+ isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
+ "internal_accept called");
INSIST(sock->listener);
- INSIST(sock->hEvent != NULL);
- INSIST(sock->pending_accept == 1);
- sock->pending_accept = 0;
- /*
- * Check any possible error status from the event notification here.
- * Note that we don't take any action since it was only
- * Windows that was notifying about a network event, not the
- * application.
- * PDMXXX: Should we care about any of the possible event errors
- * signalled? The only possible valid errors are:
- * WSAENETDOWN, WSAECONNRESET, & WSAECONNABORTED
- */
- if (accept_errno != 0) {
- switch (accept_errno) {
- case WSAENETDOWN:
- case WSAECONNRESET:
- case WSAECONNABORTED:
- break; /* Expected errors */
- default:
- isc__strerror(accept_errno, strbuf, sizeof(strbuf));
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "internal_accept: from event wait: %s",
- strbuf);
- break;
- }
- UNLOCK(&sock->lock);
- return;
- }
+ INSIST(sock->pending_iocp > 0);
+ sock->pending_iocp--;
+ INSIST(sock->pending_accept > 0);
+ sock->pending_accept--;
- /*
- * Get the first item off the accept list.
- * If it is empty, unlock the socket and return.
- */
- dev = ISC_LIST_HEAD(sock->accept_list);
- if (dev == NULL) {
- isc_sockaddr_t from;
- /*
- * This should only happen if WSAEventSelect() fails
- * below or in isc_socket_cancel().
- */
- addrlen = sizeof(from.type);
- fd = accept(sock->fd, &from.type.sa, &addrlen);
- if (fd != INVALID_SOCKET) {
- char addrbuf[ISC_SOCKADDR_FORMATSIZE];
- isc_sockaddr_format(&from, addrbuf, sizeof(addrbuf));
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "sock->accept_list empty: "
- "dropping TCP request from %s",
- addrbuf);
- (void)closesocket(fd);
- }
- UNLOCK(&sock->lock);
- return;
- }
+ adev = lpo->adev;
/*
- * Try to accept the new connection. If the accept fails with
- * WSAEINTR, the event wait will be notified again since
- * the event will be reset on return to caller.
+ * If the event is no longer in the list we can just return.
*/
- addrlen = sizeof(dev->newsocket->address.type);
- memset(&dev->newsocket->address.type.sa, 0, addrlen);
- fd = accept(sock->fd, &dev->newsocket->address.type.sa,
- (void *)&addrlen);
- if (fd == INVALID_SOCKET) {
- accept_errno = WSAGetLastError();
- if (SOFT_ERROR(accept_errno) || accept_errno == WSAECONNRESET) {
- goto soft_error;
- } else {
- isc__strerror(accept_errno, strbuf, sizeof(strbuf));
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "internal_accept: accept() %s: %s",
- isc_msgcat_get(isc_msgcat,
- ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED,
- "failed"),
- strbuf);
- fd = INVALID_SOCKET;
- result = ISC_R_UNEXPECTED;
- }
- } else {
- if (addrlen == 0) {
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "internal_accept(): "
- "accept() failed to return "
- "remote address");
-
- (void)closesocket(fd);
- goto soft_error;
- } else if (dev->newsocket->address.type.sa.sa_family !=
- sock->pf)
- {
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "internal_accept(): "
- "accept() returned peer address "
- "family %u (expected %u)",
- dev->newsocket->address.
- type.sa.sa_family,
- sock->pf);
- (void)closesocket(fd);
- goto soft_error;
- }
- }
+ if (!acceptdone_is_active(sock, adev))
+ goto done;
- if (fd != INVALID_SOCKET) {
- dev->newsocket->address.length = addrlen;
- dev->newsocket->pf = sock->pf;
- }
+ nsock = adev->newsocket;
/*
* Pull off the done event.
*/
- ISC_LIST_UNLINK(sock->accept_list, dev, ev_link);
+ ISC_LIST_UNLINK(sock->accept_list, adev, ev_link);
/*
- * Stop listing for connects.
+ * Extract the addresses from the socket, copy them into the structure,
+ * and return the new socket.
*/
- if (ISC_LIST_EMPTY(sock->accept_list) &&
- WSAEventSelect(sock->fd, sock->hEvent, FD_CLOSE) != 0) {
- int stat;
- const char *msg;
- stat = WSAGetLastError();
- isc__strerror(stat, strbuf, sizeof(strbuf));
- msg = isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED, "failed");
- UNEXPECTED_ERROR(__FILE__, __LINE__, "WSAEventSelect: %s: %s",
- msg, strbuf);
- }
+ ISCGetAcceptExSockaddrs(lpo->acceptbuffer, 0,
+ sizeof(SOCKADDR_STORAGE) + 16, sizeof(SOCKADDR_STORAGE) + 16,
+ (LPSOCKADDR *)&localaddr, &localaddr_len,
+ (LPSOCKADDR *)&remoteaddr, &remoteaddr_len);
+ memcpy(&adev->address.type, remoteaddr, remoteaddr_len);
+ adev->address.length = remoteaddr_len;
+ nsock->address = adev->address;
+ nsock->pf = adev->address.type.sa.sa_family;
- UNLOCK(&sock->lock);
+ socket_log(__LINE__, nsock, &nsock->address, TRACE,
+ isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
+ "internal_accept parent %p", sock);
- if (fd != INVALID_SOCKET) {
- isc_result_t tresult;
- tresult = make_nonblock(fd);
- if (tresult != ISC_R_SUCCESS) {
- closesocket(fd);
- fd = INVALID_SOCKET;
- result = tresult;
- }
- }
+ result = make_nonblock(adev->newsocket->fd);
+ INSIST(result == ISC_R_SUCCESS);
+
+ INSIST(setsockopt(nsock->fd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
+ (char *)&sock->fd, sizeof(sock->fd)) == 0);
/*
- * INVALID_SOCKET means the new socket didn't happen.
+ * Hook it up into the manager.
*/
- if (fd != INVALID_SOCKET) {
- LOCK(&manager->lock);
- ISC_LIST_APPEND(manager->socklist, dev->newsocket, link);
-
- dev->newsocket->fd = fd;
- dev->newsocket->bound = 1;
- dev->newsocket->connected = 1;
-
- /*
- * The accept socket inherits the listen socket's
- * selected events. Remove this socket from all events
- * as it is handled by IOCP. (Joe Quanaim, lucent.com)
- */
- if (WSAEventSelect(dev->newsocket->fd, 0, 0) != 0) {
- /* this is an unlikely but non-fatal error */
- int stat;
- const char *msg;
- stat = WSAGetLastError();
- isc__strerror(stat, strbuf, sizeof(strbuf));
- msg = isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED, "failed");
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "WSAEventSelect: %s: %s", msg, strbuf);
- }
+ nsock->bound = 1;
+ nsock->connected = 1;
+ _set_state(nsock, SOCK_OPEN);
- /*
- * Save away the remote address
- */
- dev->address = dev->newsocket->address;
+ LOCK(&nsock->manager->lock);
+ ISC_LIST_APPEND(nsock->manager->socklist, nsock, link);
+ InterlockedIncrement(&nsock->manager->totalSockets);
+ UNLOCK(&nsock->manager->lock);
- socket_log(sock, &dev->newsocket->address, CREATION,
- isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTEDCXN,
- "accepted connection, new socket %p",
- dev->newsocket);
+ socket_log(__LINE__, sock, &nsock->address, CREATION,
+ isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTEDCXN,
+ "accepted_connection new_socket %p fd %d",
+ nsock, nsock->fd);
- UNLOCK(&manager->lock);
- } else {
- dev->newsocket->references--;
- free_socket(&dev->newsocket);
- }
+ adev->result = result;
+ send_acceptdone_event(sock, &adev);
- /*
- * Fill in the done event details and send it off.
- */
- dev->result = result;
- task = dev->ev_sender;
- dev->ev_sender = sock;
-
- isc_task_sendanddetach(&task, (isc_event_t **)&dev);
- return;
-
- soft_error:
+done:
+ CONSISTENT(sock);
UNLOCK(&sock->lock);
- return;
+
+ HeapFree(hHeapHandle, 0, lpo->acceptbuffer);
+ lpo->acceptbuffer = NULL;
}
/*
* Called when a socket with a pending connect() finishes.
+ * Note that the socket is locked before entering.
*/
static void
-internal_connect(isc_socket_t *sock, int connect_errno) {
- isc_socket_connev_t *dev;
- isc_task_t *task;
+internal_connect(isc_socket_t *sock, IoCompletionInfo *lpo, int connect_errno) {
+ isc_socket_connev_t *cdev;
char strbuf[ISC_STRERRORSIZE];
INSIST(VALID_SOCKET(sock));
LOCK(&sock->lock);
+ INSIST(sock->pending_iocp > 0);
+ sock->pending_iocp--;
+ INSIST(sock->pending_connect == 1);
+ sock->pending_connect = 0;
+
/*
* Has this event been canceled?
*/
- dev = sock->connect_ev;
- if (dev == NULL) {
- INSIST(!sock->connecting);
+ cdev = lpo->cdev;
+ if (!connectdone_is_active(sock, cdev)) {
+ sock->pending_connect = 0;
+ if (sock->fd != INVALID_SOCKET) {
+ closesocket(sock->fd);
+ sock->fd = INVALID_SOCKET;
+ _set_state(sock, SOCK_CLOSED);
+ }
+ CONSISTENT(sock);
UNLOCK(&sock->lock);
return;
}
- INSIST(sock->connecting);
- sock->connecting = 0;
-
/*
* Check possible Windows network event error status here.
*/
@@ -2407,9 +2060,9 @@ internal_connect(isc_socket_t *sock, int connect_errno) {
* fd and pretend nothing strange happened.
*/
if (SOFT_ERROR(connect_errno) ||
- connect_errno == WSAEINPROGRESS)
- {
- sock->connecting = 1;
+ connect_errno == WSAEINPROGRESS) {
+ sock->pending_connect = 1;
+ CONSISTENT(sock);
UNLOCK(&sock->lock);
return;
}
@@ -2418,7 +2071,7 @@ internal_connect(isc_socket_t *sock, int connect_errno) {
* Translate other errors into ISC_R_* flavors.
*/
switch (connect_errno) {
-#define ERROR_MATCH(a, b) case a: dev->result = b; break;
+#define ERROR_MATCH(a, b) case a: cdev->result = b; break;
ERROR_MATCH(WSAEACCES, ISC_R_NOPERM);
ERROR_MATCH(WSAEADDRNOTAVAIL, ISC_R_ADDRNOTAVAIL);
ERROR_MATCH(WSAEAFNOSUPPORT, ISC_R_ADDRNOTAVAIL);
@@ -2433,87 +2086,104 @@ internal_connect(isc_socket_t *sock, int connect_errno) {
ERROR_MATCH(WSAETIMEDOUT, ISC_R_TIMEDOUT);
#undef ERROR_MATCH
default:
- dev->result = ISC_R_UNEXPECTED;
+ cdev->result = ISC_R_UNEXPECTED;
isc__strerror(connect_errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"internal_connect: connect() %s",
strbuf);
}
} else {
- dev->result = ISC_R_SUCCESS;
+ INSIST(setsockopt(sock->fd, SOL_SOCKET, SO_UPDATE_CONNECT_CONTEXT, NULL, 0) == 0);
+ cdev->result = ISC_R_SUCCESS;
sock->connected = 1;
- sock->bound = 1;
+ socket_log(__LINE__, sock, &sock->address, IOEVENT,
+ isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTEDCXN,
+ "internal_connect: success");
}
- sock->connect_ev = NULL;
+ send_connectdone_event(sock, &cdev);
UNLOCK(&sock->lock);
+}
- task = dev->ev_sender;
- dev->ev_sender = sock;
- isc_task_sendanddetach(&task, (isc_event_t **)&dev);
+/*
+ * Loop through the socket, returning ISC_R_EOF for each done event pending.
+ */
+static void
+send_recvdone_abort(isc_socket_t *sock, isc_result_t result) {
+ isc_socketevent_t *dev;
+
+ while (!ISC_LIST_EMPTY(sock->recv_list)) {
+ dev = ISC_LIST_HEAD(sock->recv_list);
+ dev->result = result;
+ send_recvdone_event(sock, &dev);
+ }
}
+/*
+ * Take the data we received in our private buffer, and if any recv() calls on
+ * our list are satisfied, send the corresponding done event.
+ *
+ * If we need more data (there are still items on the recv_list after we consume all
+ * our data) then arrange for another system recv() call to fill our buffers.
+ */
static void
-internal_recv(isc_socket_t *sock, isc_socketevent_t *dev,
- struct msghdr *messagehdr, int nbytes, int recv_errno)
+internal_recv(isc_socket_t *sock, int nbytes)
{
- isc_socketevent_t *ldev;
- int io_state;
- int cc;
-
INSIST(VALID_SOCKET(sock));
LOCK(&sock->lock);
- socket_log(sock, NULL, IOEVENT,
+ CONSISTENT(sock);
+
+ socket_log(__LINE__, sock, NULL, IOEVENT,
isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_INTERNALRECV,
- "internal_recv: task got socket event %p", dev);
+ "internal_recv: %d bytes received", nbytes);
+ /*
+ * If we got here, the I/O operation succeeded. However, we might still have removed this
+ * event from our notification list (or never placed it on it due to immediate completion.)
+ * Handle the reference counting here, and handle the cancellation event just after.
+ */
+ INSIST(sock->pending_iocp > 0);
+ sock->pending_iocp--;
INSIST(sock->pending_recv > 0);
sock->pending_recv--;
- /* If the event is no longer in the list we can just return */
- ldev = ISC_LIST_HEAD(sock->recv_list);
- while (ldev != NULL && ldev != dev) {
- ldev = ISC_LIST_NEXT(ldev, ev_link);
- }
- if (ldev == NULL)
- goto done;
/*
- * Try to do as much I/O as possible on this socket. There are no
- * limits here, currently.
+ * The only way we could have gotten here is that our I/O has successfully completed.
+ * Update our pointers, and move on. The only odd case here is that we might not
+ * have received enough data on a TCP stream to satisfy the minimum requirements. If
+ * this is the case, we will re-issue the recv() call for what we need.
+ *
+ * We do check for a recv() of 0 bytes on a TCP stream. This means the remote end
+ * has closed.
*/
- switch (completeio_recv(sock, dev, messagehdr, nbytes, recv_errno)) {
- case DOIO_SOFT:
- cc = 0;
- recv_errno = 0;
- io_state = startio_recv(sock, dev, &cc, &recv_errno);
- goto done;
+ if (nbytes == 0 && sock->type == isc_sockettype_tcp) {
+ send_recvdone_abort(sock, ISC_R_EOF);
+ maybe_free_socket(&sock, __LINE__);
+ return;
+ }
+ sock->recvbuf.remaining = nbytes;
+ sock->recvbuf.consume_position = sock->recvbuf.base;
+ completeio_recv(sock);
- case DOIO_EOF:
- /*
- * read of 0 means the remote end was closed.
- * Run through the event queue and dispatch all
- * the events with an EOF result code.
- */
- dev->result = ISC_R_EOF;
- send_recvdone_event(sock, &dev);
- goto done;
+ /*
+ * If there are more receivers waiting for data, queue another receive
+ * here.
+ */
+ queue_receive_request(sock);
- case DOIO_SUCCESS:
- case DOIO_HARD:
- send_recvdone_event(sock, &dev);
- break;
- }
- done:
- UNLOCK(&sock->lock);
+ /*
+ * Unlock and/or destroy if we are the last thing this socket has left to do.
+ */
+ maybe_free_socket(&sock, __LINE__);
}
static void
internal_send(isc_socket_t *sock, isc_socketevent_t *dev,
- struct msghdr *messagehdr, int nbytes, int send_errno)
+ struct msghdr *messagehdr, int nbytes, int send_errno, IoCompletionInfo *lpo)
{
- isc_socketevent_t *ldev;
+ buflist_t *buffer;
/*
* Find out what socket this is and lock it.
@@ -2521,23 +2191,36 @@ internal_send(isc_socket_t *sock, isc_socketevent_t *dev,
INSIST(VALID_SOCKET(sock));
LOCK(&sock->lock);
- socket_log(sock, NULL, IOEVENT,
+ CONSISTENT(sock);
+
+ socket_log(__LINE__, sock, NULL, IOEVENT,
isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_INTERNALSEND,
"internal_send: task got socket event %p", dev);
+ buffer = ISC_LIST_HEAD(lpo->bufferlist);
+ while (buffer != NULL) {
+ ISC_LIST_DEQUEUE(lpo->bufferlist, buffer, link);
+
+ socket_log(__LINE__, sock, NULL, TRACE,
+ isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTLOCK,
+ "free_buffer %p %p", buffer, buffer->buf);
+
+ HeapFree(hHeapHandle, 0, buffer->buf);
+ HeapFree(hHeapHandle, 0, buffer);
+ buffer = ISC_LIST_HEAD(lpo->bufferlist);
+ }
+
+ INSIST(sock->pending_iocp > 0);
+ sock->pending_iocp--;
INSIST(sock->pending_send > 0);
sock->pending_send--;
/* If the event is no longer in the list we can just return */
- ldev = ISC_LIST_HEAD(sock->send_list);
- while (ldev != NULL && ldev != dev) {
- ldev = ISC_LIST_NEXT(ldev, ev_link);
- }
- if (ldev == NULL)
+ if (!senddone_is_active(sock, dev))
goto done;
+
/*
- * Try to do as much I/O as possible on this socket. There are no
- * limits here, currently.
+ * Set the error code and send things on its way.
*/
switch (completeio_send(sock, dev, messagehdr, nbytes, send_errno)) {
case DOIO_SOFT:
@@ -2548,9 +2231,43 @@ internal_send(isc_socket_t *sock, isc_socketevent_t *dev,
break;
}
-
done:
- UNLOCK(&sock->lock);
+ maybe_free_socket(&sock, __LINE__);
+}
+
+/*
+ * These return if the done event passed in is on the list (or for connect, is
+ * the one we're waiting for. Using these ensures we will not double-send an
+ * event.
+ */
+static isc_boolean_t
+senddone_is_active(isc_socket_t *sock, isc_socketevent_t *dev)
+{
+ isc_socketevent_t *ldev;
+
+ ldev = ISC_LIST_HEAD(sock->send_list);
+ while (ldev != NULL && ldev != dev)
+ ldev = ISC_LIST_NEXT(ldev, ev_link);
+
+ return (ldev == NULL ? ISC_FALSE : ISC_TRUE);
+}
+
+static isc_boolean_t
+acceptdone_is_active(isc_socket_t *sock, isc_socket_newconnev_t *dev)
+{
+ isc_socket_newconnev_t *ldev;
+
+ ldev = ISC_LIST_HEAD(sock->accept_list);
+ while (ldev != NULL && ldev != dev)
+ ldev = ISC_LIST_NEXT(ldev, ev_link);
+
+ return (ldev == NULL ? ISC_FALSE : ISC_TRUE);
+}
+
+static isc_boolean_t
+connectdone_is_active(isc_socket_t *sock, isc_socket_connev_t *dev)
+{
+ return (sock->connect_ev == dev ? ISC_TRUE : ISC_FALSE);
}
/*
@@ -2566,7 +2283,6 @@ SocketIoThread(LPVOID ThreadContext) {
IoCompletionInfo *lpo = NULL;
isc_socket_t *sock = NULL;
int request;
- isc_socketevent_t *dev = NULL;
struct msghdr *messagehdr = NULL;
int errval;
char strbuf[ISC_STRERRORSIZE];
@@ -2574,13 +2290,13 @@ SocketIoThread(LPVOID ThreadContext) {
REQUIRE(VALID_MANAGER(manager));
- /* Set the thread priority high enough so I/O will
- * preempt normal recv packet processing, but not
- * higher than the timer sync thread.
+ /*
+ * Set the thread priority high enough so I/O will
+ * preempt normal recv packet processing, but not
+ * higher than the timer sync thread.
*/
if (!SetThreadPriority(GetCurrentThread(),
- THREAD_PRIORITY_ABOVE_NORMAL))
- {
+ THREAD_PRIORITY_ABOVE_NORMAL)) {
errval = GetLastError();
isc__strerror(errval, strbuf, sizeof(strbuf));
FATAL_ERROR(__FILE__, __LINE__,
@@ -2595,70 +2311,109 @@ SocketIoThread(LPVOID ThreadContext) {
*/
while (TRUE) {
bSuccess = GetQueuedCompletionStatus(manager->hIoCompletionPort,
- &nbytes, (LPDWORD) &sock,
- (LPOVERLAPPED *)&lpo,
+ &nbytes, (LPDWORD)&sock,
+ (LPWSAOVERLAPPED *)&lpo,
INFINITE);
- if (lpo == NULL) {
- /*
- * Received request to exit
- */
+ if (lpo == NULL) /* Received request to exit */
break;
- }
+
+ REQUIRE(VALID_SOCKET(sock));
+
+ request = lpo->request_type;
+
errstatus = 0;
if (!bSuccess) {
- isc_boolean_t dofree = ISC_FALSE;
- REQUIRE(VALID_SOCKET(sock));
+ isc_result_t isc_result;
+
/*
- * Was this the socket closed under us?
+ * Did the I/O operation complete?
*/
- errstatus = GetLastError();
- if (nbytes == 0 && errstatus == WSA_OPERATION_ABORTED) {
- LOCK(&sock->lock);
- switch (lpo->request_type) {
- case SOCKET_RECV:
- INSIST(sock->pending_recv > 0);
- sock->pending_recv--;
- break;
- case SOCKET_SEND:
- INSIST(sock->pending_send > 0);
- sock->pending_send--;
- break;
+ errstatus = WSAGetLastError();
+ isc_result = isc__errno2resultx(errstatus, __FILE__, __LINE__);
+
+ LOCK(&sock->lock);
+ CONSISTENT(sock);
+ switch (request) {
+ case SOCKET_RECV:
+ INSIST(sock->pending_iocp > 0);
+ sock->pending_iocp--;
+ INSIST(sock->pending_recv > 0);
+ sock->pending_recv--;
+ send_recvdone_abort(sock, isc_result);
+ if (isc_result == ISC_R_UNEXPECTED) {
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "SOCKET_RECV: Windows error code: %d, returning ISC error %d",
+ errstatus, isc_result);
}
- if (sock->pending_recv == 0 &&
- sock->pending_send == 0 &&
- sock->pending_close == 0 &&
- sock->pending_free) {
- sock->pending_free = 0;
- dofree = ISC_TRUE;
+ break;
+
+ case SOCKET_SEND:
+ INSIST(sock->pending_iocp > 0);
+ sock->pending_iocp--;
+ INSIST(sock->pending_send > 0);
+ sock->pending_send--;
+ if (senddone_is_active(sock, lpo->dev)) {
+ lpo->dev->result = isc_result;
+ socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
+ "cancelled_send");
+ send_senddone_event(sock, &lpo->dev);
}
- UNLOCK(&sock->lock);
- if (dofree) {
- LOCK(&manager->lock);
- ISC_LIST_UNLINK(manager->socklist,
- sock, link);
- free_socket(&sock);
- if (ISC_LIST_EMPTY(manager->socklist))
- SIGNAL(&manager->shutdown_ok);
- UNLOCK(&manager->lock);
+ break;
+
+ case SOCKET_ACCEPT:
+ INSIST(sock->pending_iocp > 0);
+ sock->pending_iocp--;
+ INSIST(sock->pending_accept > 0);
+ sock->pending_accept--;
+ if (acceptdone_is_active(sock, lpo->adev)) {
+ closesocket(lpo->adev->newsocket->fd);
+ lpo->adev->newsocket->fd = INVALID_SOCKET;
+ lpo->adev->newsocket->references--;
+ free_socket(&lpo->adev->newsocket, __LINE__);
+ lpo->adev->result = isc_result;
+ socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
+ "cancelled_accept");
+ send_acceptdone_event(sock, &lpo->adev);
+ }
+ break;
+
+ case SOCKET_CONNECT:
+ INSIST(sock->pending_iocp > 0);
+ sock->pending_iocp--;
+ INSIST(sock->pending_connect == 1);
+ sock->pending_connect = 0;
+ if (connectdone_is_active(sock, lpo->cdev)) {
+ lpo->cdev->result = isc_result;
+ socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
+ "cancelled_connect");
+ send_connectdone_event(sock, &lpo->cdev);
}
- if (lpo != NULL)
- HeapFree(hHeapHandle, 0, lpo);
- continue;
+ break;
}
+ maybe_free_socket(&sock, __LINE__);
+
+ if (lpo != NULL)
+ HeapFree(hHeapHandle, 0, lpo);
+ continue;
}
- request = lpo->request_type;
- dev = lpo->dev;
messagehdr = &lpo->messagehdr;
switch (request) {
case SOCKET_RECV:
- internal_recv(sock, dev, messagehdr, nbytes, errstatus);
+ internal_recv(sock, nbytes);
break;
case SOCKET_SEND:
- internal_send(sock, dev, messagehdr, nbytes, errstatus);
+ internal_send(sock, lpo->dev, messagehdr, nbytes, errstatus, lpo);
+ break;
+ case SOCKET_ACCEPT:
+ internal_accept(sock, lpo, errstatus);
+ break;
+ case SOCKET_CONNECT:
+ internal_connect(sock, lpo, errstatus);
break;
}
+
if (lpo != NULL)
HeapFree(hHeapHandle, 0, lpo);
}
@@ -2673,150 +2428,25 @@ SocketIoThread(LPVOID ThreadContext) {
}
/*
- * This is the thread that will loop forever, waiting for an event to
- * happen.
- *
- * When the wait returns something to do, find the signaled event
- * and issue the request for the given socket
- */
-static isc_threadresult_t WINAPI
-event_wait(void *uap) {
- events_thread_t *evthread = uap;
- isc_socketmgr_t *manager = evthread->manager;
- int cc;
- int event_errno;
- char strbuf[ISC_STRERRORSIZE];
- isc_socket_t *wsock;
- int iEvent;
- int max_event;
- sock_event_list *evlist;
- WSANETWORKEVENTS NetworkEvents;
- int err;
-
- REQUIRE(evthread != NULL);
- REQUIRE(VALID_MANAGER(manager));
-
- /* We need to know the Id of the thread */
- evthread->thread_id = GetCurrentThreadId();
-
- evlist = &(evthread->sockev_list);
-
- /* See if there's anything waiting to add to the event list */
- if (manager->event_written > 0)
- process_eventlist(evlist, manager);
-
- while (!manager->bShutdown) {
- do {
-
- max_event = evlist->max_event;
- event_errno = 0;
-
- WSAResetEvent(evlist->aEventList[0]);
- cc = WSAWaitForMultipleEvents(max_event,
- evlist->aEventList, FALSE, WSA_INFINITE,
- FALSE);
- if (cc == WSA_WAIT_FAILED) {
- event_errno = WSAGetLastError();
- if (!SOFT_ERROR(event_errno)) {
- isc__strerror(event_errno, strbuf,
- sizeof(strbuf));
- FATAL_ERROR(__FILE__, __LINE__,
- "WSAWaitForMultipleEvents() %s: %s",
- isc_msgcat_get(isc_msgcat,
- ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED,
- "failed"),
- strbuf);
- }
- }
-
- } while (cc < 0 && !manager->bShutdown
- && manager->event_written == 0);
-
- if (manager->bShutdown)
- break;
-
- iEvent = cc - WSA_WAIT_EVENT_0;
-
- /*
- * Add or delete events as requested
- */
- if (manager->event_written > 0)
- process_eventlist(evlist, manager);
- /*
- * Stopped to add and delete events on the list
- */
- if (iEvent == 0)
- continue;
-
- wsock = evlist->aSockList[iEvent];
- if (wsock == NULL)
- continue;
-
- if (WSAEnumNetworkEvents(wsock->fd, wsock->hEvent,
- &NetworkEvents) == SOCKET_ERROR) {
- err = WSAGetLastError();
- isc__strerror(err, strbuf, sizeof(strbuf));
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "event_wait: WSAEnumNetworkEvents() %s",
- strbuf);
- /* XXXMPA */
- }
-
- if(NetworkEvents.lNetworkEvents == 0 ) {
- continue;
- }
-
- /*
- * Check for FD_CLOSE events first. This takes precedence over
- * other possible events as it needs to be handled instead of
- * any other event if it happens on the socket.
- * The error code found, if any, is fed into the internal_*()
- * routines.
- */
- if(NetworkEvents.lNetworkEvents & FD_CLOSE) {
- event_errno = NetworkEvents.iErrorCode[FD_CLOSE_BIT];
- } else if (NetworkEvents.lNetworkEvents & FD_ACCEPT) {
- event_errno = NetworkEvents.iErrorCode[FD_ACCEPT_BIT];
- } else if (NetworkEvents.lNetworkEvents & FD_CONNECT) {
- event_errno = NetworkEvents.iErrorCode[FD_CONNECT_BIT];
- } else {
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "event_wait: WSAEnumNetworkEvents() "
- "unexpected event bit set: %0x",
- NetworkEvents.lNetworkEvents);
- }
-
- if (wsock->references > 0 && wsock->pending_close == 0) {
- if (wsock->listener == 1 &&
- wsock->pending_accept == 0) {
- wsock->pending_accept = 1;
- internal_accept(wsock, event_errno);
- }
- else {
- internal_connect(wsock, event_errno);
- }
- }
- }
-
- manager_log(manager, TRACE,
- isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
- ISC_MSG_EXITING, "event_wait exiting"));
-
- return ((isc_threadresult_t)0);
-}
-
-/*
* Create a new socket manager.
*/
isc_result_t
isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
+ return (isc_socketmgr_create2(mctx, managerp, 0));
+}
+
+isc_result_t
+isc_socketmgr_create2(isc_mem_t *mctx, isc_socketmgr_t **managerp,
+ unsigned int maxsocks)
+{
isc_socketmgr_t *manager;
- events_thread_t *evthread = NULL;
isc_result_t result;
REQUIRE(managerp != NULL && *managerp == NULL);
+ if (maxsocks != 0)
+ return (ISC_R_NOTIMPLEMENTED);
+
manager = isc_mem_get(mctx, sizeof(*manager));
if (manager == NULL)
return (ISC_R_NOMEMORY);
@@ -2845,40 +2475,28 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) {
iocompletionport_init(manager); /* Create the Completion Ports */
- /*
- * Event Wait Thread Initialization
- */
- ISC_LIST_INIT(manager->ev_threads);
-
- /*
- * Start up the initial event wait thread.
- */
- result = event_thread_create(&evthread, manager);
- if (result != ISC_R_SUCCESS) {
- isc_condition_destroy(&manager->shutdown_ok);
- DESTROYLOCK(&manager->lock);
- isc_mem_put(mctx, manager, sizeof(*manager));
- return (result);
- }
-
- manager->prime_alert = evthread->sockev_list.aEventList[0];
- manager->event_written = 0;
manager->bShutdown = ISC_FALSE;
-
- /* Initialize the event update list */
- ISC_LIST_INIT(manager->event_updates);
+ manager->totalSockets = 0;
+ manager->iocp_total = 0;
*managerp = manager;
return (ISC_R_SUCCESS);
}
+isc_result_t
+isc_socketmgr_getmaxsockets(isc_socketmgr_t *manager, unsigned int *nsockp) {
+ REQUIRE(VALID_MANAGER(manager));
+ REQUIRE(nsockp != NULL);
+
+ return (ISC_R_NOTIMPLEMENTED);
+}
+
void
isc_socketmgr_destroy(isc_socketmgr_t **managerp) {
isc_socketmgr_t *manager;
int i;
isc_mem_t *mctx;
- events_thread_t *evthread;
/*
* Destroy a socket manager.
@@ -2913,29 +2531,9 @@ isc_socketmgr_destroy(isc_socketmgr_t **managerp) {
/*
* Wait for threads to exit.
*/
-
- /*
- * Shut down the event wait threads
- */
- evthread = ISC_LIST_HEAD(manager->ev_threads);
- while (evthread != NULL) {
- WSASetEvent(evthread->sockev_list.aEventList[0]);
- if (isc_thread_join(evthread->thread_handle, NULL) != ISC_R_SUCCESS)
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "isc_thread_join() for event_wait %s",
- isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED, "failed"));
- ISC_LIST_DEQUEUE(manager->ev_threads, evthread, link);
- isc_mem_put(manager->mctx, evthread, sizeof(*evthread));
- evthread = ISC_LIST_HEAD(manager->ev_threads);
- }
-
- /*
- * Now the I/O Completion Port Worker Threads
- */
for (i = 0; i < manager->maxIOCPThreads; i++) {
- if (isc_thread_join((isc_thread_t) manager->hIOCPThreads[i], NULL)
- != ISC_R_SUCCESS)
+ if (isc_thread_join((isc_thread_t) manager->hIOCPThreads[i],
+ NULL) != ISC_R_SUCCESS)
UNEXPECTED_ERROR(__FILE__, __LINE__,
"isc_thread_join() for Completion Port %s",
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
@@ -2959,11 +2557,36 @@ isc_socketmgr_destroy(isc_socketmgr_t **managerp) {
*managerp = NULL;
}
+static void
+queue_receive_event(isc_socket_t *sock, isc_task_t *task, isc_socketevent_t *dev)
+{
+ isc_task_t *ntask = NULL;
+
+ isc_task_attach(task, &ntask);
+ dev->attributes |= ISC_SOCKEVENTATTR_ATTACHED;
+
+ /*
+ * Enqueue the request.
+ */
+ INSIST(!ISC_LINK_LINKED(dev, ev_link));
+ ISC_LIST_ENQUEUE(sock->recv_list, dev, ev_link);
+
+ socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
+ "queue_receive_event: event %p -> task %p",
+ dev, ntask);
+}
+
+/*
+ * Check the pending receive queue, and if we have data pending, give it to this
+ * caller. If we have none, queue an I/O request. If this caller is not the first
+ * on the list, then we will just queue this event and return.
+ *
+ * Caller must have the socket locked.
+ */
static isc_result_t
socket_recv(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
unsigned int flags)
{
- int io_state;
int cc = 0;
isc_task_t *ntask = NULL;
isc_result_t result = ISC_R_SUCCESS;
@@ -2971,46 +2594,26 @@ socket_recv(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
dev->ev_sender = task;
- LOCK(&sock->lock);
- iocompletionport_update(sock);
- io_state = startio_recv(sock, dev, &cc, &recv_errno);
-
- switch (io_state) {
- case DOIO_PENDING: /* I/O Started. Nothing to be done */
- case DOIO_SOFT:
- /*
- * We couldn't read all or part of the request right now, so
- * queue it.
- *
- * Attach to socket and to task
- */
- isc_task_attach(task, &ntask);
- dev->attributes |= ISC_SOCKEVENTATTR_ATTACHED;
-
- /*
- * Enqueue the request.
- */
- ISC_LIST_ENQUEUE(sock->recv_list, dev, ev_link);
-
- socket_log(sock, NULL, EVENT, NULL, 0, 0,
- "socket_recv: event %p -> task %p",
- dev, ntask);
+ if (sock->fd == INVALID_SOCKET)
+ return (ISC_R_EOF);
- if ((flags & ISC_SOCKFLAG_IMMEDIATE) != 0)
- result = ISC_R_INPROGRESS;
- break;
+ /*
+ * Queue our event on the list of things to do. Call our function to
+ * attempt to fill buffers as much as possible, and return done events.
+ * We are going to lie about our handling of the ISC_SOCKFLAG_IMMEDIATE
+ * here and tell our caller that we could not satisfy it immediately.
+ */
+ queue_receive_event(sock, task, dev);
+ if ((flags & ISC_SOCKFLAG_IMMEDIATE) != 0)
+ result = ISC_R_INPROGRESS;
- case DOIO_EOF:
- dev->result = ISC_R_EOF;
- /* fallthrough */
+ completeio_recv(sock);
- case DOIO_HARD:
- case DOIO_SUCCESS:
- if ((flags & ISC_SOCKFLAG_IMMEDIATE) == 0)
- send_recvdone_event(sock, &dev);
- break;
- }
- UNLOCK(&sock->lock);
+ /*
+ * If there are more receivers waiting for data, queue another receive
+ * here. If the
+ */
+ queue_receive_request(sock);
return (result);
}
@@ -3024,8 +2627,20 @@ isc_socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,
isc_socketmgr_t *manager;
unsigned int iocount;
isc_buffer_t *buffer;
+ isc_result_t ret;
REQUIRE(VALID_SOCKET(sock));
+ LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * Make sure that the socket is not closed. XXXMLG change error here?
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
+
REQUIRE(buflist != NULL);
REQUIRE(!ISC_LIST_EMPTY(*buflist));
REQUIRE(task != NULL);
@@ -3041,6 +2656,7 @@ isc_socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,
dev = allocate_socketevent(sock, ISC_SOCKEVENT_RECVDONE, action, arg);
if (dev == NULL) {
+ UNLOCK(&sock->lock);
return (ISC_R_NOMEMORY);
}
@@ -3066,7 +2682,10 @@ isc_socket_recvv(isc_socket_t *sock, isc_bufferlist_t *buflist,
buffer = ISC_LIST_HEAD(*buflist);
}
- return (socket_recv(sock, dev, task, 0));
+ ret = socket_recv(sock, dev, task, 0);
+
+ UNLOCK(&sock->lock);
+ return (ret);
}
isc_result_t
@@ -3075,8 +2694,19 @@ isc_socket_recv(isc_socket_t *sock, isc_region_t *region, unsigned int minimum,
{
isc_socketevent_t *dev;
isc_socketmgr_t *manager;
+ isc_result_t ret;
REQUIRE(VALID_SOCKET(sock));
+ LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
REQUIRE(action != NULL);
manager = sock->manager;
@@ -3085,10 +2715,14 @@ isc_socket_recv(isc_socket_t *sock, isc_region_t *region, unsigned int minimum,
INSIST(sock->bound);
dev = allocate_socketevent(sock, ISC_SOCKEVENT_RECVDONE, action, arg);
- if (dev == NULL)
+ if (dev == NULL) {
+ UNLOCK(&sock->lock);
return (ISC_R_NOMEMORY);
+ }
- return (isc_socket_recv2(sock, region, minimum, task, dev, 0));
+ ret = isc_socket_recv2(sock, region, minimum, task, dev, 0);
+ UNLOCK(&sock->lock);
+ return (ret);
}
isc_result_t
@@ -3096,8 +2730,22 @@ isc_socket_recv2(isc_socket_t *sock, isc_region_t *region,
unsigned int minimum, isc_task_t *task,
isc_socketevent_t *event, unsigned int flags)
{
- event->ev_sender = sock;
+ isc_result_t ret;
+
+ REQUIRE(VALID_SOCKET(sock));
+ LOCK(&sock->lock);
+ CONSISTENT(sock);
+
event->result = ISC_R_UNEXPECTED;
+ event->ev_sender = sock;
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
+
ISC_LIST_INIT(event->bufferlist);
event->region = *region;
event->n = 0;
@@ -3116,9 +2764,14 @@ isc_socket_recv2(isc_socket_t *sock, isc_region_t *region,
event->minimum = minimum;
}
- return (socket_recv(sock, event, task, flags));
+ ret = socket_recv(sock, event, task, flags);
+ UNLOCK(&sock->lock);
+ return (ret);
}
+/*
+ * Caller must have the socket locked.
+ */
static isc_result_t
socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
@@ -3127,7 +2780,6 @@ socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
int io_state;
int send_errno = 0;
int cc = 0;
- isc_boolean_t have_lock = ISC_FALSE;
isc_task_t *ntask = NULL;
isc_result_t result = ISC_R_SUCCESS;
@@ -3135,7 +2787,7 @@ socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
set_dev_address(address, sock, dev);
if (pktinfo != NULL) {
- socket_log(sock, NULL, TRACE, isc_msgcat, ISC_MSGSET_SOCKET,
+ socket_log(__LINE__, sock, NULL, TRACE, isc_msgcat, ISC_MSGSET_SOCKET,
ISC_MSG_PKTINFOPROVIDED,
"pktinfo structure provided, ifindex %u (set to 0)",
pktinfo->ipi6_ifindex);
@@ -3149,11 +2801,7 @@ socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
dev->pktinfo.ipi6_ifindex = 0;
}
- LOCK(&sock->lock);
- have_lock = ISC_TRUE;
- iocompletionport_update(sock);
io_state = startio_send(sock, dev, &cc, &send_errno);
-
switch (io_state) {
case DOIO_PENDING: /* I/O started. Nothing more to do */
case DOIO_SOFT:
@@ -3164,17 +2812,14 @@ socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
if ((flags & ISC_SOCKFLAG_NORETRY) == 0) {
isc_task_attach(task, &ntask);
dev->attributes |= ISC_SOCKEVENTATTR_ATTACHED;
- if (!have_lock) {
- LOCK(&sock->lock);
- have_lock = ISC_TRUE;
- }
/*
* Enqueue the request.
*/
+ INSIST(!ISC_LINK_LINKED(dev, ev_link));
ISC_LIST_ENQUEUE(sock->send_list, dev, ev_link);
- socket_log(sock, NULL, EVENT, NULL, 0, 0,
+ socket_log(__LINE__, sock, NULL, EVENT, NULL, 0, 0,
"socket_send: event %p -> task %p",
dev, ntask);
@@ -3187,9 +2832,6 @@ socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task,
break;
}
- if (have_lock)
- UNLOCK(&sock->lock);
-
return (result);
}
@@ -3211,8 +2853,21 @@ isc_socket_sendto(isc_socket_t *sock, isc_region_t *region,
{
isc_socketevent_t *dev;
isc_socketmgr_t *manager;
+ isc_result_t ret;
REQUIRE(VALID_SOCKET(sock));
+ REQUIRE(sock->type != isc_sockettype_fdwatch);
+
+ LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
REQUIRE(region != NULL);
REQUIRE(task != NULL);
REQUIRE(action != NULL);
@@ -3224,11 +2879,14 @@ isc_socket_sendto(isc_socket_t *sock, isc_region_t *region,
dev = allocate_socketevent(sock, ISC_SOCKEVENT_SENDDONE, action, arg);
if (dev == NULL) {
+ UNLOCK(&sock->lock);
return (ISC_R_NOMEMORY);
}
dev->region = *region;
- return (socket_send(sock, dev, task, address, pktinfo, 0));
+ ret = socket_send(sock, dev, task, address, pktinfo, 0);
+ UNLOCK(&sock->lock);
+ return (ret);
}
isc_result_t
@@ -3248,8 +2906,20 @@ isc_socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
isc_socketmgr_t *manager;
unsigned int iocount;
isc_buffer_t *buffer;
+ isc_result_t ret;
REQUIRE(VALID_SOCKET(sock));
+
+ LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
REQUIRE(buflist != NULL);
REQUIRE(!ISC_LIST_EMPTY(*buflist));
REQUIRE(task != NULL);
@@ -3263,6 +2933,7 @@ isc_socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
dev = allocate_socketevent(sock, ISC_SOCKEVENT_SENDDONE, action, arg);
if (dev == NULL) {
+ UNLOCK(&sock->lock);
return (ISC_R_NOMEMORY);
}
@@ -3276,7 +2947,9 @@ isc_socket_sendtov(isc_socket_t *sock, isc_bufferlist_t *buflist,
buffer = ISC_LIST_HEAD(*buflist);
}
- return (socket_send(sock, dev, task, address, pktinfo, 0));
+ ret = socket_send(sock, dev, task, address, pktinfo, 0);
+ UNLOCK(&sock->lock);
+ return (ret);
}
isc_result_t
@@ -3285,27 +2958,53 @@ isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region,
isc_sockaddr_t *address, struct in6_pktinfo *pktinfo,
isc_socketevent_t *event, unsigned int flags)
{
+ isc_result_t ret;
+
+ REQUIRE(VALID_SOCKET(sock));
+ LOCK(&sock->lock);
+ CONSISTENT(sock);
+
REQUIRE((flags & ~(ISC_SOCKFLAG_IMMEDIATE|ISC_SOCKFLAG_NORETRY)) == 0);
if ((flags & ISC_SOCKFLAG_NORETRY) != 0)
REQUIRE(sock->type == isc_sockettype_udp);
event->ev_sender = sock;
event->result = ISC_R_UNEXPECTED;
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
ISC_LIST_INIT(event->bufferlist);
event->region = *region;
event->n = 0;
event->offset = 0;
event->attributes = 0;
- return (socket_send(sock, event, task, address, pktinfo, flags));
+ ret = socket_send(sock, event, task, address, pktinfo, flags);
+ UNLOCK(&sock->lock);
+ return (ret);
}
isc_result_t
-isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr) {
+isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr,
+ unsigned int options) {
int bind_errno;
char strbuf[ISC_STRERRORSIZE];
int on = 1;
+ REQUIRE(VALID_SOCKET(sock));
LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
INSIST(!sock->bound);
@@ -3316,7 +3015,8 @@ isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr) {
/*
* Only set SO_REUSEADDR when we want a specific port.
*/
- if (isc_sockaddr_getport(sockaddr) != (in_port_t)0 &&
+ if ((options & ISC_SOCKET_REUSEADDRESS) != 0 &&
+ isc_sockaddr_getport(sockaddr) != (in_port_t)0 &&
setsockopt(sock->fd, SOL_SOCKET, SO_REUSEADDR, (void *)&on,
sizeof(on)) < 0) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
@@ -3345,7 +3045,7 @@ isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr) {
}
}
- socket_log(sock, sockaddr, TRACE,
+ socket_log(__LINE__, sock, sockaddr, TRACE,
isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_BOUND, "bound");
sock->bound = 1;
@@ -3375,11 +3075,19 @@ isc_socket_filter(isc_socket_t *sock, const char *filter) {
isc_result_t
isc_socket_listen(isc_socket_t *sock, unsigned int backlog) {
char strbuf[ISC_STRERRORSIZE];
- isc_result_t retstat;
REQUIRE(VALID_SOCKET(sock));
LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
REQUIRE(!sock->listener);
REQUIRE(sock->bound);
@@ -3397,20 +3105,10 @@ isc_socket_listen(isc_socket_t *sock, unsigned int backlog) {
return (ISC_R_UNEXPECTED);
}
+ socket_log(__LINE__, sock, NULL, TRACE,
+ isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_BOUND, "listening");
sock->listener = 1;
-
- /* Add the socket to the list of events to accept */
- retstat = socket_event_add(sock, FD_CLOSE);
- if (retstat != ISC_R_SUCCESS) {
- UNLOCK(&sock->lock);
- if (retstat != ISC_R_NOSPACE) {
- isc__strerror(WSAGetLastError(), strbuf,
- sizeof(strbuf));
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "isc_socket_listen: socket_event_add: %s", strbuf);
- }
- return (retstat);
- }
+ _set_state(sock, SOCK_LISTEN);
UNLOCK(&sock->lock);
return (ISC_R_SUCCESS);
@@ -3423,17 +3121,28 @@ isc_result_t
isc_socket_accept(isc_socket_t *sock,
isc_task_t *task, isc_taskaction_t action, const void *arg)
{
- isc_socket_newconnev_t *dev;
+ isc_socket_newconnev_t *adev;
isc_socketmgr_t *manager;
isc_task_t *ntask = NULL;
isc_socket_t *nsock;
isc_result_t result;
+ IoCompletionInfo *lpo;
REQUIRE(VALID_SOCKET(sock));
+
manager = sock->manager;
REQUIRE(VALID_MANAGER(manager));
LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
REQUIRE(sock->listener);
@@ -3442,55 +3151,78 @@ isc_socket_accept(isc_socket_t *sock,
* this event to. Just before the actual event is delivered the
* actual ev_sender will be touched up to be the socket.
*/
- dev = (isc_socket_newconnev_t *)
+ adev = (isc_socket_newconnev_t *)
isc_event_allocate(manager->mctx, task, ISC_SOCKEVENT_NEWCONN,
- action, arg, sizeof(*dev));
- if (dev == NULL) {
+ action, arg, sizeof(*adev));
+ if (adev == NULL) {
UNLOCK(&sock->lock);
return (ISC_R_NOMEMORY);
}
- ISC_LINK_INIT(dev, ev_link);
+ ISC_LINK_INIT(adev, ev_link);
result = allocate_socket(manager, sock->type, &nsock);
if (result != ISC_R_SUCCESS) {
- isc_event_free((isc_event_t **)&dev);
+ isc_event_free((isc_event_t **)&adev);
UNLOCK(&sock->lock);
return (result);
}
/*
+ * AcceptEx() requires we pass in a socket.
+ */
+ nsock->fd = socket(sock->pf, SOCK_STREAM, IPPROTO_TCP);
+ if (nsock->fd == INVALID_SOCKET) {
+ free_socket(&nsock, __LINE__);
+ isc_event_free((isc_event_t **)&adev);
+ UNLOCK(&sock->lock);
+ return (ISC_R_FAILURE); // XXXMLG need real error message
+ }
+
+ /*
* Attach to socket and to task.
*/
isc_task_attach(task, &ntask);
nsock->references++;
- dev->ev_sender = ntask;
- dev->newsocket = nsock;
+ adev->ev_sender = ntask;
+ adev->newsocket = nsock;
+ _set_state(nsock, SOCK_ACCEPT);
/*
- * Wait for connects.
+ * Queue io completion for an accept().
*/
- if (ISC_LIST_EMPTY(sock->accept_list) &&
- WSAEventSelect(sock->fd, sock->hEvent, FD_ACCEPT | FD_CLOSE) != 0) {
- char strbuf[ISC_STRERRORSIZE];
- int stat;
- const char *msg;
- stat = WSAGetLastError();
- isc__strerror(stat, strbuf, sizeof(strbuf));
- msg = isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED, "failed");
- UNEXPECTED_ERROR(__FILE__, __LINE__, "WSAEventSelect: %s: %s",
- msg, strbuf);
- isc_task_detach(&ntask);
- isc_socket_detach(&nsock);
- isc_event_free((isc_event_t **)&dev);
- UNLOCK(&sock->lock);
- return (ISC_R_UNEXPECTED);
- }
+ lpo = (IoCompletionInfo *)HeapAlloc(hHeapHandle,
+ HEAP_ZERO_MEMORY,
+ sizeof(IoCompletionInfo));
+ RUNTIME_CHECK(lpo != NULL);
+ lpo->acceptbuffer = (void *)HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY,
+ (sizeof(SOCKADDR_STORAGE) + 16) * 2);
+ RUNTIME_CHECK(lpo->acceptbuffer != NULL);
+
+ lpo->adev = adev;
+ lpo->request_type = SOCKET_ACCEPT;
+
+ ISCAcceptEx(sock->fd,
+ nsock->fd, /* Accepted Socket */
+ lpo->acceptbuffer, /* Buffer for initial Recv */
+ 0, /* Length of Buffer */
+ sizeof(SOCKADDR_STORAGE) + 16, /* Local address length + 16 */
+ sizeof(SOCKADDR_STORAGE) + 16, /* Remote address lengh + 16 */
+ (LPDWORD)&lpo->received_bytes, /* Bytes Recved */
+ (LPOVERLAPPED)lpo /* Overlapped structure */
+ );
+ iocompletionport_update(nsock);
+
+ socket_log(__LINE__, sock, NULL, TRACE,
+ isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_BOUND,
+ "accepting for nsock %p fd %d", nsock, nsock->fd);
+
/*
* Enqueue the event
*/
- ISC_LIST_ENQUEUE(sock->accept_list, dev, ev_link);
+ ISC_LIST_ENQUEUE(sock->accept_list, adev, ev_link);
+ sock->pending_accept++;
+ sock->pending_iocp++;
UNLOCK(&sock->lock);
return (ISC_R_SUCCESS);
@@ -3500,13 +3232,12 @@ isc_result_t
isc_socket_connect(isc_socket_t *sock, isc_sockaddr_t *addr,
isc_task_t *task, isc_taskaction_t action, const void *arg)
{
- isc_socket_connev_t *dev;
+ char strbuf[ISC_STRERRORSIZE];
+ isc_socket_connev_t *cdev;
isc_task_t *ntask = NULL;
isc_socketmgr_t *manager;
- int cc;
- int retstat;
- int errval;
- char strbuf[ISC_STRERRORSIZE];
+ IoCompletionInfo *lpo;
+ int bind_errno;
REQUIRE(VALID_SOCKET(sock));
REQUIRE(addr != NULL);
@@ -3521,104 +3252,94 @@ isc_socket_connect(isc_socket_t *sock, isc_sockaddr_t *addr,
return (ISC_R_MULTICAST);
LOCK(&sock->lock);
+ CONSISTENT(sock);
- REQUIRE(!sock->connecting);
-
- dev = (isc_socket_connev_t *)isc_event_allocate(manager->mctx, sock,
- ISC_SOCKEVENT_CONNECT,
- action, arg,
- sizeof(*dev));
- if (dev == NULL) {
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
UNLOCK(&sock->lock);
- return (ISC_R_NOMEMORY);
+ return (ISC_R_CONNREFUSED);
}
- ISC_LINK_INIT(dev, ev_link);
/*
- * Try to do the connect right away, as there can be only one
- * outstanding, and it might happen to complete.
+ * Windows sockets won't connect unless the socket is bound.
*/
- sock->address = *addr;
- cc = connect(sock->fd, &addr->type.sa, addr->length);
- if (cc < 0) {
- errval = WSAGetLastError();
- if (SOFT_ERROR(errval) || errval == WSAEINPROGRESS)
- goto queue;
+ if (!sock->bound) {
+ isc_sockaddr_t any;
- switch (errval) {
-#define ERROR_MATCH(a, b) case a: dev->result = b; goto err_exit;
- ERROR_MATCH(WSAEACCES, ISC_R_NOPERM);
- ERROR_MATCH(WSAEADDRNOTAVAIL, ISC_R_ADDRNOTAVAIL);
- ERROR_MATCH(WSAEAFNOSUPPORT, ISC_R_ADDRNOTAVAIL);
- ERROR_MATCH(WSAECONNREFUSED, ISC_R_CONNREFUSED);
- ERROR_MATCH(WSAEHOSTUNREACH, ISC_R_HOSTUNREACH);
- ERROR_MATCH(WSAEHOSTDOWN, ISC_R_HOSTUNREACH);
- ERROR_MATCH(WSAENETUNREACH, ISC_R_NETUNREACH);
- ERROR_MATCH(WSAENOBUFS, ISC_R_NORESOURCES);
- ERROR_MATCH(EPERM, ISC_R_HOSTUNREACH);
- ERROR_MATCH(EPIPE, ISC_R_NOTCONNECTED);
-#undef ERROR_MATCH
+ isc_sockaddr_anyofpf(&any, isc_sockaddr_pf(addr));
+ if (bind(sock->fd, &any.type.sa, any.length) < 0) {
+ bind_errno = WSAGetLastError();
+ UNLOCK(&sock->lock);
+ switch (bind_errno) {
+ case WSAEACCES:
+ return (ISC_R_NOPERM);
+ case WSAEADDRNOTAVAIL:
+ return (ISC_R_ADDRNOTAVAIL);
+ case WSAEADDRINUSE:
+ return (ISC_R_ADDRINUSE);
+ case WSAEINVAL:
+ return (ISC_R_BOUND);
+ default:
+ isc__strerror(bind_errno, strbuf,
+ sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "bind: %s", strbuf);
+ return (ISC_R_UNEXPECTED);
+ }
}
-
- sock->connected = 0;
-
- isc__strerror(errval, strbuf, sizeof(strbuf));
- UNEXPECTED_ERROR(__FILE__, __LINE__, "%d/%s", errval, strbuf);
-
- UNLOCK(&sock->lock);
- isc_event_free((isc_event_t **)&dev);
- return (ISC_R_UNEXPECTED);
-
- err_exit:
- sock->connected = 0;
- isc_task_send(task, (isc_event_t **)&dev);
-
- UNLOCK(&sock->lock);
- return (ISC_R_SUCCESS);
+ sock->bound = 1;
}
- /*
- * If connect completed, fire off the done event.
- */
- if (cc == 0) {
- sock->connected = 1;
- sock->bound = 1;
- dev->result = ISC_R_SUCCESS;
- isc_task_send(task, (isc_event_t **)&dev);
+ REQUIRE(!sock->pending_connect);
+ cdev = (isc_socket_connev_t *)isc_event_allocate(manager->mctx, sock,
+ ISC_SOCKEVENT_CONNECT,
+ action, arg,
+ sizeof(*cdev));
+ if (cdev == NULL) {
UNLOCK(&sock->lock);
- return (ISC_R_SUCCESS);
+ return (ISC_R_NOMEMORY);
}
+ ISC_LINK_INIT(cdev, ev_link);
- queue:
+ if (sock->type == isc_sockettype_tcp) {
+ /*
+ * Queue io completion for an accept().
+ */
+ lpo = (IoCompletionInfo *)HeapAlloc(hHeapHandle,
+ HEAP_ZERO_MEMORY,
+ sizeof(IoCompletionInfo));
+ lpo->cdev = cdev;
+ lpo->request_type = SOCKET_CONNECT;
- /*
- * Attach to task.
- */
- isc_task_attach(task, &ntask);
+ sock->address = *addr;
+ ISCConnectEx(sock->fd, &addr->type.sa, addr->length,
+ NULL, 0, NULL, (LPOVERLAPPED)lpo);
- sock->connecting = 1;
+ /*
+ * Attach to task.
+ */
+ isc_task_attach(task, &ntask);
+ cdev->ev_sender = ntask;
- dev->ev_sender = ntask;
+ sock->pending_connect = 1;
+ _set_state(sock, SOCK_CONNECT);
- /*
- * Enqueue the request.
- */
- sock->connect_ev = dev;
- /* Add the socket to the list of events to connect */
- retstat = socket_event_add(sock, FD_CONNECT | FD_CLOSE);
- if (retstat != ISC_R_SUCCESS) {
- UNLOCK(&sock->lock);
- if (retstat != ISC_R_NOSPACE) {
- isc__strerror(WSAGetLastError(), strbuf,
- sizeof(strbuf));
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "isc_socket_connect: socket_event_add: %s", strbuf);
- }
- return (retstat);
+ /*
+ * Enqueue the request.
+ */
+ sock->connect_ev = cdev;
+ sock->pending_iocp++;
+ } else {
+ WSAConnect(sock->fd, &addr->type.sa, addr->length, NULL, NULL, NULL, NULL);
+ cdev->result = ISC_R_SUCCESS;
+ isc_task_send(task, (isc_event_t **)&cdev);
}
-
+ CONSISTENT(sock);
UNLOCK(&sock->lock);
+
return (ISC_R_SUCCESS);
}
@@ -3630,6 +3351,15 @@ isc_socket_getpeername(isc_socket_t *sock, isc_sockaddr_t *addressp) {
REQUIRE(addressp != NULL);
LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
if (sock->connected) {
*addressp = sock->address;
@@ -3653,6 +3383,15 @@ isc_socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) {
REQUIRE(addressp != NULL);
LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
if (!sock->bound) {
result = ISC_R_NOTBOUND;
@@ -3694,6 +3433,15 @@ isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
return;
LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return;
+ }
/*
* All of these do the same thing, more or less.
@@ -3705,14 +3453,13 @@ isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
* its done event with status of "ISC_R_CANCELED".
* o Reset any state needed.
*/
- if (((how & ISC_SOCKCANCEL_RECV) == ISC_SOCKCANCEL_RECV)
- && !ISC_LIST_EMPTY(sock->recv_list)) {
+
+ if ((how & ISC_SOCKCANCEL_RECV) == ISC_SOCKCANCEL_RECV) {
isc_socketevent_t *dev;
isc_socketevent_t *next;
isc_task_t *current_task;
dev = ISC_LIST_HEAD(sock->recv_list);
-
while (dev != NULL) {
current_task = dev->ev_sender;
next = ISC_LIST_NEXT(dev, ev_link);
@@ -3723,9 +3470,9 @@ isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
dev = next;
}
}
+ how &= ~ISC_SOCKCANCEL_RECV;
- if (((how & ISC_SOCKCANCEL_SEND) == ISC_SOCKCANCEL_SEND)
- && !ISC_LIST_EMPTY(sock->send_list)) {
+ if ((how & ISC_SOCKCANCEL_SEND) == ISC_SOCKCANCEL_SEND) {
isc_socketevent_t *dev;
isc_socketevent_t *next;
isc_task_t *current_task;
@@ -3742,6 +3489,7 @@ isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
dev = next;
}
}
+ how &= ~ISC_SOCKCANCEL_SEND;
if (((how & ISC_SOCKCANCEL_ACCEPT) == ISC_SOCKCANCEL_ACCEPT)
&& !ISC_LIST_EMPTY(sock->accept_list)) {
@@ -3750,40 +3498,25 @@ isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
isc_task_t *current_task;
dev = ISC_LIST_HEAD(sock->accept_list);
-
while (dev != NULL) {
current_task = dev->ev_sender;
next = ISC_LIST_NEXT(dev, ev_link);
if ((task == NULL) || (task == current_task)) {
- ISC_LIST_UNLINK(sock->accept_list, dev,
- ev_link);
-
dev->newsocket->references--;
- free_socket(&dev->newsocket);
+ closesocket(dev->newsocket->fd);
+ dev->newsocket->fd = INVALID_SOCKET;
+ free_socket(&dev->newsocket, __LINE__);
dev->result = ISC_R_CANCELED;
- dev->ev_sender = sock;
- isc_task_sendanddetach(&current_task,
- (isc_event_t **)&dev);
+ send_acceptdone_event(sock, &dev);
}
dev = next;
}
- if (sock->hEvent != NULL &&
- WSAEventSelect(sock->fd, sock->hEvent, FD_CLOSE) != 0) {
- char strbuf[ISC_STRERRORSIZE];
- int stat;
- const char *msg;
- stat = WSAGetLastError();
- isc__strerror(stat, strbuf, sizeof(strbuf));
- msg = isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
- ISC_MSG_FAILED, "failed");
- UNEXPECTED_ERROR(__FILE__, __LINE__,
- "WSAEventSelect: %s: %s", msg, strbuf);
- }
}
+ how &= ~ISC_SOCKCANCEL_ACCEPT;
/*
* Connecting is not a list.
@@ -3793,37 +3526,64 @@ isc_socket_cancel(isc_socket_t *sock, isc_task_t *task, unsigned int how) {
isc_socket_connev_t *dev;
isc_task_t *current_task;
- INSIST(sock->connecting);
- sock->connecting = 0;
+ INSIST(sock->pending_connect);
dev = sock->connect_ev;
current_task = dev->ev_sender;
if ((task == NULL) || (task == current_task)) {
- sock->connect_ev = NULL;
+ closesocket(sock->fd);
+ sock->fd = INVALID_SOCKET;
+ _set_state(sock, SOCK_CLOSED);
+ sock->connect_ev = NULL;
dev->result = ISC_R_CANCELED;
- dev->ev_sender = sock;
- isc_task_sendanddetach(&current_task,
- (isc_event_t **)&dev);
+ send_connectdone_event(sock, &dev);
}
}
+ how &= ~ISC_SOCKCANCEL_CONNECT;
- UNLOCK(&sock->lock);
+ maybe_free_socket(&sock, __LINE__);
}
isc_sockettype_t
isc_socket_gettype(isc_socket_t *sock) {
+ isc_sockettype_t type;
+
REQUIRE(VALID_SOCKET(sock));
- return (sock->type);
+ LOCK(&sock->lock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_R_CONNREFUSED);
+ }
+
+ type = sock->type;
+ UNLOCK(&sock->lock);
+ return (type);
}
isc_boolean_t
isc_socket_isbound(isc_socket_t *sock) {
isc_boolean_t val;
+ REQUIRE(VALID_SOCKET(sock));
+
LOCK(&sock->lock);
+ CONSISTENT(sock);
+
+ /*
+ * make sure that the socket's not closed
+ */
+ if (sock->fd == INVALID_SOCKET) {
+ UNLOCK(&sock->lock);
+ return (ISC_FALSE);
+ }
+
val = ((sock->bound) ? ISC_TRUE : ISC_FALSE);
UNLOCK(&sock->lock);
@@ -3836,7 +3596,6 @@ isc_socket_ipv6only(isc_socket_t *sock, isc_boolean_t yes) {
int onoff = yes ? 1 : 0;
#else
UNUSED(yes);
- UNUSED(sock);
#endif
REQUIRE(VALID_SOCKET(sock));
@@ -3891,3 +3650,9 @@ void *
isc_socket_gettag(isc_socket_t *socket) {
return (socket->tag);
}
+
+void
+isc__socketmgr_setreserved(isc_socketmgr_t *manager, isc_uint32_t reserved) {
+ UNUSED(manager);
+ UNUSED(reserved);
+}
diff --git a/lib/isc/win32/time.c b/lib/isc/win32/time.c
index d2ef982b..de29aaa1 100644
--- a/lib/isc/win32/time.c
+++ b/lib/isc/win32/time.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004, 2006, 2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2006-2008 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
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: time.c,v 1.43 2007/06/19 23:47:19 tbox Exp $ */
+/* $Id: time.c,v 1.43.128.2 2008/08/29 23:46:52 tbox Exp $ */
#include <config.h>
@@ -64,8 +64,11 @@ isc_interval_set(isc_interval_t *i, unsigned int seconds,
REQUIRE(i != NULL);
REQUIRE(nanoseconds < NS_PER_S);
+ /*
+ * This rounds nanoseconds up not down.
+ */
i->interval = (LONGLONG)seconds * INTERVALS_PER_S
- + nanoseconds / NS_INTERVAL;
+ + (nanoseconds + NS_INTERVAL - 1) / NS_INTERVAL;
}
isc_boolean_t
@@ -232,9 +235,9 @@ isc_time_formattimestamp(const isc_time_t *t, char *buf, unsigned int len) {
SYSTEMTIME st;
char DateBuf[50];
char TimeBuf[50];
-
+
static const char badtime[] = "99-Bad-9999 99:99:99.999";
-
+
REQUIRE(len > 0);
if (FileTimeToLocalFileTime(&t->absolute, &localft) &&
FileTimeToSystemTime(&localft, &st)) {
@@ -242,10 +245,10 @@ isc_time_formattimestamp(const isc_time_t *t, char *buf, unsigned int len) {
DateBuf, 50);
GetTimeFormat(LOCALE_USER_DEFAULT, TIME_NOTIMEMARKER|
TIME_FORCE24HOURFORMAT, &st, NULL, TimeBuf, 50);
-
+
snprintf(buf, len, "%s %s.%03u", DateBuf, TimeBuf,
st.wMilliseconds);
-
+
} else
snprintf(buf, len, badtime);
}
@@ -255,7 +258,7 @@ isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len) {
SYSTEMTIME st;
char DateBuf[50];
char TimeBuf[50];
-
+
REQUIRE(len > 0);
if (FileTimeToSystemTime(&t->absolute, &st)) {
GetDateFormat(LOCALE_USER_DEFAULT, 0, &st, "ddd',', dd-MMM-yyyy",
@@ -263,7 +266,7 @@ isc_time_formathttptimestamp(const isc_time_t *t, char *buf, unsigned int len) {
GetTimeFormat(LOCALE_USER_DEFAULT,
TIME_NOTIMEMARKER | TIME_FORCE24HOURFORMAT,
&st, "hh':'mm':'ss", TimeBuf, 50);
-
+
snprintf(buf, len, "%s %s GMT", DateBuf, TimeBuf);
} else {
buf[0] = 0;
diff --git a/lib/isccfg/aclconf.c b/lib/isccfg/aclconf.c
index 4dc4632c..b9598a2c 100644
--- a/lib/isccfg/aclconf.c
+++ b/lib/isccfg/aclconf.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: aclconf.c,v 1.17.2.2 2008/05/29 23:46:34 tbox Exp $ */
+/* $Id: aclconf.c,v 1.17.2.4 2008/09/01 05:40:22 marka Exp $ */
#include <config.h>
@@ -175,7 +175,6 @@ cfg_acl_fromconfig(const cfg_obj_t *caml,
const cfg_listelt_t *elt;
dns_iptable_t *iptab;
int new_nest_level = 0;
- int nelem;
if (nest_level != 0)
new_nest_level = nest_level - 1;
@@ -207,8 +206,6 @@ cfg_acl_fromconfig(const cfg_obj_t *caml,
return (result);
}
- nelem = cfg_list_length(caml, ISC_FALSE);
-
de = dacl->elements;
for (elt = cfg_list_first(caml);
elt != NULL;
@@ -290,6 +287,7 @@ nested_acl:
} else {
dns_acl_merge(dacl, inneracl,
ISC_TF(!neg));
+ de += inneracl->length; /* elements added */
dns_acl_detach(&inneracl);
continue;
}
@@ -353,16 +351,6 @@ nested_acl:
if (result != ISC_R_SUCCESS)
goto cleanup;
- /*
- * There was only one element and it was
- * a nested named ACL; attach it to the
- * target and let's go home.
- */
- if (nelem == 1) {
- dns_acl_attach(inneracl, target);
- goto cleanup;
- }
-
goto nested_acl;
}
} else {
diff --git a/lib/isccfg/api b/lib/isccfg/api
index 12b10f97..ee64ec00 100644
--- a/lib/isccfg/api
+++ b/lib/isccfg/api
@@ -1,3 +1,3 @@
LIBINTERFACE = 40
-LIBREVISION = 4
+LIBREVISION = 5
LIBAGE = 0
diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c
index a7994b3f..e0643225 100644
--- a/lib/isccfg/namedconf.c
+++ b/lib/isccfg/namedconf.c
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: namedconf.c,v 1.78.46.9 2008/06/24 23:46:27 tbox Exp $ */
+/* $Id: namedconf.c,v 1.78.46.10 2008/09/04 07:58:07 marka Exp $ */
/*! \file */
@@ -691,6 +691,7 @@ options_clauses[] = {
{ "recursing-file", &cfg_type_qstring, 0 },
{ "random-device", &cfg_type_qstring, 0 },
{ "recursive-clients", &cfg_type_uint32, 0 },
+ { "reserved-sockets", &cfg_type_uint32, 0 },
{ "serial-queries", &cfg_type_uint32, CFG_CLAUSEFLAG_OBSOLETE },
{ "serial-query-rate", &cfg_type_uint32, 0 },
{ "server-id", &cfg_type_serverid, 0 },
diff --git a/version b/version
index 8859cdbb..99f2d576 100644
--- a/version
+++ b/version
@@ -1,4 +1,4 @@
-# $Id: version,v 1.39.18.6 2008/06/30 22:44:59 each Exp $
+# $Id: version,v 1.39.18.7 2008/09/11 23:22:06 each Exp $
#
# This file must follow /bin/sh rules. It is imported directly via
# configure.
@@ -7,4 +7,4 @@ MAJORVER=9
MINORVER=5
PATCHVER=1
RELEASETYPE=b
-RELEASEVER=1
+RELEASEVER=2